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)]
998pub struct BufferInfo {
999 pub msg_total_buffers: Option<u16>,
1001 pub msg_free_buffers: Option<u16>,
1003 pub msg_max_used_buffers: Option<u16>,
1005 pub msg_6lo_send_queue: Option<MessageQueueInfo>,
1007 pub msg_6lo_reassembly_queue: Option<MessageQueueInfo>,
1009 pub msg_ip6_queue: Option<MessageQueueInfo>,
1011 pub msg_mpl_queue: Option<MessageQueueInfo>,
1013 pub msg_mle_queue: Option<MessageQueueInfo>,
1015 pub msg_coap_queue: Option<MessageQueueInfo>,
1017 pub msg_coap_secure_queue: Option<MessageQueueInfo>,
1019 pub msg_application_coap_queue: Option<MessageQueueInfo>,
1021 #[doc(hidden)]
1022 pub __source_breaking: fidl::marker::SourceBreaking,
1023}
1024
1025impl fidl::Persistable for BufferInfo {}
1026
1027#[derive(Clone, Debug, Default, PartialEq)]
1028pub struct ChannelInfo {
1029 pub index: Option<u16>,
1032 pub id: Option<String>,
1048 pub max_transmit_power_dbm: Option<i8>,
1051 pub spectrum_center_frequency_hz: Option<u64>,
1074 pub spectrum_bandwidth_hz: Option<u64>,
1081 pub masked_by_regulatory_domain: Option<bool>,
1085 #[doc(hidden)]
1086 pub __source_breaking: fidl::marker::SourceBreaking,
1087}
1088
1089impl fidl::Persistable for ChannelInfo {}
1090
1091#[derive(Clone, Debug, Default, PartialEq)]
1095pub struct CommissioningDataset {
1096 pub locator: Option<u16>,
1100 pub session_id: Option<u16>,
1104 pub steering_data: Option<Vec<u8>>,
1108 pub joiner_udp_port: Option<u16>,
1112 pub is_locator_set: Option<bool>,
1116 pub is_session_id_set: Option<bool>,
1120 pub is_steering_data_set: Option<bool>,
1124 pub is_joiner_udp_port_set: Option<bool>,
1128 pub has_extra_tlv: Option<bool>,
1132 #[doc(hidden)]
1133 pub __source_breaking: fidl::marker::SourceBreaking,
1134}
1135
1136impl fidl::Persistable for CommissioningDataset {}
1137
1138#[derive(Clone, Debug, Default, PartialEq)]
1140pub struct CslInfo {
1141 pub csl_accuracy: Option<u8>,
1143 pub csl_uncertainty: Option<u8>,
1145 #[doc(hidden)]
1146 pub __source_breaking: fidl::marker::SourceBreaking,
1147}
1148
1149impl fidl::Persistable for CslInfo {}
1150
1151#[derive(Clone, Debug, Default, PartialEq)]
1153pub struct Dhcp6PdInfo {
1154 pub dhcp6pd_state: Option<Dhcp6PdState>,
1158 pub pd_processed_ra_info: Option<PdProcessedRaInfo>,
1162 pub hashed_pd_prefix: Option<Vec<u8>>,
1166 #[doc(hidden)]
1167 pub __source_breaking: fidl::marker::SourceBreaking,
1168}
1169
1170impl fidl::Persistable for Dhcp6PdInfo {}
1171
1172#[derive(Clone, Debug, Default, PartialEq)]
1174pub struct DnsTxtEntry {
1175 pub key: Option<String>,
1182 pub value: Option<Vec<u8>>,
1189 #[doc(hidden)]
1190 pub __source_breaking: fidl::marker::SourceBreaking,
1191}
1192
1193impl fidl::Persistable for DnsTxtEntry {}
1194
1195#[derive(Clone, Debug, Default, PartialEq)]
1197pub struct DnssdCounters {
1198 pub success_response: Option<u32>,
1202 pub server_failure_response: Option<u32>,
1206 pub format_error_response: Option<u32>,
1210 pub name_error_response: Option<u32>,
1214 pub not_implemented_response: Option<u32>,
1218 pub other_response: Option<u32>,
1222 pub resolved_by_srp: Option<u32>,
1226 pub upstream_dns_counters: Option<UpstreamDnsCounters>,
1230 #[doc(hidden)]
1231 pub __source_breaking: fidl::marker::SourceBreaking,
1232}
1233
1234impl fidl::Persistable for DnssdCounters {}
1235
1236#[derive(Clone, Debug, Default, PartialEq)]
1238pub struct EidCacheEntry {
1239 pub target: Option<fidl_fuchsia_net_common::Ipv6Address>,
1243 pub rloc16: Option<u16>,
1247 pub state: Option<CacheEntryState>,
1251 pub can_evict: Option<bool>,
1255 pub ramp_down: Option<bool>,
1259 pub valid_last_trans: Option<bool>,
1263 pub last_trans_time: Option<i64>,
1267 pub mesh_local_eid: Option<fidl_fuchsia_net_common::Ipv6Address>,
1271 pub timeout: Option<i64>,
1275 pub retry_delay: Option<i64>,
1279 #[doc(hidden)]
1280 pub __source_breaking: fidl::marker::SourceBreaking,
1281}
1282
1283impl fidl::Persistable for EidCacheEntry {}
1284
1285#[derive(Clone, Debug, Default, PartialEq)]
1289pub struct ExternalRoute {
1290 pub subnet: Option<fidl_fuchsia_net_common::Ipv6AddressWithPrefix>,
1292 pub route_preference: Option<RoutePreference>,
1299 pub stable: Option<bool>,
1308 #[doc(hidden)]
1309 pub __source_breaking: fidl::marker::SourceBreaking,
1310}
1311
1312impl fidl::Persistable for ExternalRoute {}
1313
1314#[derive(Clone, Debug, Default, PartialEq)]
1318pub struct ExternalRouteConfig {
1319 pub prefix: Option<String>,
1323 pub rloc16: Option<u16>,
1327 pub preference: Option<i8>,
1331 pub nat64: Option<bool>,
1335 pub stable: Option<bool>,
1339 pub next_hop_is_this_device: Option<bool>,
1343 pub adv_pio: Option<bool>,
1347 #[doc(hidden)]
1348 pub __source_breaking: fidl::marker::SourceBreaking,
1349}
1350
1351impl fidl::Persistable for ExternalRouteConfig {}
1352
1353#[derive(Clone, Debug, Default, PartialEq)]
1358pub struct JoinerCommissioningParams {
1359 pub pskd: Option<String>,
1361 pub provisioning_url: Option<String>,
1363 pub vendor_name: Option<String>,
1365 pub vendor_model: Option<String>,
1367 pub vendor_sw_version: Option<String>,
1369 pub vendor_data_string: Option<String>,
1371 #[doc(hidden)]
1372 pub __source_breaking: fidl::marker::SourceBreaking,
1373}
1374
1375impl fidl::Persistable for JoinerCommissioningParams {}
1376
1377#[derive(Clone, Debug, Default, PartialEq)]
1379pub struct LeaderData {
1380 pub partition_id: Option<u32>,
1384 pub weight: Option<u8>,
1388 pub network_data_version: Option<u8>,
1392 pub stable_network_data_version: Option<u8>,
1396 pub router_id: Option<u8>,
1400 #[doc(hidden)]
1401 pub __source_breaking: fidl::marker::SourceBreaking,
1402}
1403
1404impl fidl::Persistable for LeaderData {}
1405
1406#[derive(Clone, Debug, Default, PartialEq)]
1408pub struct LinkMetricsEntry {
1409 pub link_margin: Option<u8>,
1411 pub rssi: Option<i8>,
1413 pub extended_address: Option<Vec<u8>>,
1415 #[doc(hidden)]
1416 pub __source_breaking: fidl::marker::SourceBreaking,
1417}
1418
1419impl fidl::Persistable for LinkMetricsEntry {}
1420
1421#[derive(Clone, Debug, Default, PartialEq)]
1425pub struct LowpanContextInfo {
1426 pub context_id: Option<u8>,
1430 pub compress_flag: Option<bool>,
1434 pub stable: Option<bool>,
1438 pub prefix: Option<String>,
1442 #[doc(hidden)]
1443 pub __source_breaking: fidl::marker::SourceBreaking,
1444}
1445
1446impl fidl::Persistable for LowpanContextInfo {}
1447
1448#[derive(Clone, Debug, Default, PartialEq)]
1450pub struct MessageQueueInfo {
1451 pub num_messages: Option<u16>,
1453 pub num_buffers: Option<u16>,
1455 pub total_bytes: Option<u32>,
1457 #[doc(hidden)]
1458 pub __source_breaking: fidl::marker::SourceBreaking,
1459}
1460
1461impl fidl::Persistable for MessageQueueInfo {}
1462
1463#[derive(Clone, Debug, Default, PartialEq)]
1465pub struct MultiRadioNeighborInfo {
1466 pub extended_address: Option<Vec<u8>>,
1470 pub thread_rloc: Option<u16>,
1474 pub radio_link_info: Option<Vec<RadioLinkInfo>>,
1480 #[doc(hidden)]
1481 pub __source_breaking: fidl::marker::SourceBreaking,
1482}
1483
1484impl fidl::Persistable for MultiRadioNeighborInfo {}
1485
1486#[derive(Clone, Debug, Default, PartialEq)]
1487pub struct Nat64ErrorCounters {
1488 pub unknown: Option<Nat64PacketCounters>,
1490 pub illegal_packet: Option<Nat64PacketCounters>,
1492 pub unsupported_protocol: Option<Nat64PacketCounters>,
1494 pub no_mapping: Option<Nat64PacketCounters>,
1496 #[doc(hidden)]
1497 pub __source_breaking: fidl::marker::SourceBreaking,
1498}
1499
1500impl fidl::Persistable for Nat64ErrorCounters {}
1501
1502#[derive(Clone, Debug, Default, PartialEq)]
1503pub struct Nat64Info {
1504 pub nat64_state: Option<BorderRoutingNat64State>,
1506 pub nat64_mappings: Option<Vec<Nat64Mapping>>,
1508 pub nat64_error_counters: Option<Nat64ErrorCounters>,
1510 pub nat64_protocol_counters: Option<Nat64ProtocolCounters>,
1512 #[doc(hidden)]
1513 pub __source_breaking: fidl::marker::SourceBreaking,
1514}
1515
1516impl fidl::Persistable for Nat64Info {}
1517
1518#[derive(Clone, Debug, Default, PartialEq)]
1520pub struct Nat64Mapping {
1521 pub mapping_id: Option<u64>,
1523 pub ip4_addr: Option<Vec<u8>>,
1525 pub ip6_addr: Option<Vec<u8>>,
1527 pub remaining_time_ms: Option<u32>,
1529 pub counters: Option<Nat64ProtocolCounters>,
1531 #[doc(hidden)]
1532 pub __source_breaking: fidl::marker::SourceBreaking,
1533}
1534
1535impl fidl::Persistable for Nat64Mapping {}
1536
1537#[derive(Clone, Debug, Default, PartialEq)]
1538pub struct Nat64PacketCounters {
1539 pub ipv4_to_ipv6_packets: Option<u64>,
1541 pub ipv6_to_ipv4_packets: Option<u64>,
1543 #[doc(hidden)]
1544 pub __source_breaking: fidl::marker::SourceBreaking,
1545}
1546
1547impl fidl::Persistable for Nat64PacketCounters {}
1548
1549#[derive(Clone, Debug, Default, PartialEq)]
1550pub struct Nat64ProtocolCounters {
1551 pub tcp: Option<Nat64TrafficCounters>,
1553 pub udp: Option<Nat64TrafficCounters>,
1555 pub icmp: Option<Nat64TrafficCounters>,
1557 pub total: Option<Nat64TrafficCounters>,
1559 #[doc(hidden)]
1560 pub __source_breaking: fidl::marker::SourceBreaking,
1561}
1562
1563impl fidl::Persistable for Nat64ProtocolCounters {}
1564
1565#[derive(Clone, Debug, Default, PartialEq)]
1566pub struct Nat64TrafficCounters {
1567 pub ipv4_to_ipv6_packets: Option<u64>,
1569 pub ipv4_to_ipv6_bytes: Option<u64>,
1571 pub ipv6_to_ipv4_packets: Option<u64>,
1573 pub ipv6_to_ipv4_bytes: Option<u64>,
1575 #[doc(hidden)]
1576 pub __source_breaking: fidl::marker::SourceBreaking,
1577}
1578
1579impl fidl::Persistable for Nat64TrafficCounters {}
1580
1581#[derive(Clone, Debug, Default, PartialEq)]
1585pub struct NetifAddress {
1586 pub address: Option<fidl_fuchsia_net_common::Ipv6Address>,
1590 pub prefix_length: Option<u8>,
1594 pub origin: Option<AddressOrigin>,
1598 pub preferred: Option<bool>,
1602 pub valid: Option<bool>,
1606 #[doc(hidden)]
1607 pub __source_breaking: fidl::marker::SourceBreaking,
1608}
1609
1610impl fidl::Persistable for NetifAddress {}
1611
1612#[derive(Clone, Debug, Default, PartialEq)]
1614pub struct NetworkData {
1615 pub on_mesh_prefixes: Option<Vec<BorderRouterConfig>>,
1619 pub external_routes: Option<Vec<ExternalRouteConfig>>,
1623 pub services: Option<Vec<ServiceConfig>>,
1627 pub contexts: Option<Vec<LowpanContextInfo>>,
1631 pub commissioning_dataset: Option<CommissioningDataset>,
1635 #[doc(hidden)]
1636 pub __source_breaking: fidl::marker::SourceBreaking,
1637}
1638
1639impl fidl::Persistable for NetworkData {}
1640
1641#[derive(Clone, Debug, Default, PartialEq)]
1643pub struct NetworkScanParameters {
1644 pub channels: Option<Vec<u16>>,
1648 pub tx_power_dbm: Option<i8>,
1659 #[doc(hidden)]
1660 pub __source_breaking: fidl::marker::SourceBreaking,
1661}
1662
1663impl fidl::Persistable for NetworkScanParameters {}
1664
1665#[derive(Clone, Debug, Default, PartialEq)]
1669pub struct OnMeshPrefix {
1670 pub subnet: Option<fidl_fuchsia_net_common::Ipv6AddressWithPrefix>,
1672 pub default_route_preference: Option<RoutePreference>,
1680 pub stable: Option<bool>,
1689 pub slaac_preferred: Option<bool>,
1698 pub slaac_valid: Option<bool>,
1707 #[doc(hidden)]
1708 pub __source_breaking: fidl::marker::SourceBreaking,
1709}
1710
1711impl fidl::Persistable for OnMeshPrefix {}
1712
1713#[derive(Clone, Debug, Default, PartialEq)]
1715pub struct OperationalDataset {
1716 pub active_timestamp: Option<i64>,
1720 pub pending_timestamp: Option<i64>,
1724 pub network_key: Option<Vec<u8>>,
1728 pub network_name: Option<Vec<u8>>,
1732 pub extended_pan_id: Option<Vec<u8>>,
1736 pub mesh_local_prefix: Option<Vec<u8>>,
1740 pub delay: Option<u32>,
1744 pub pan_id: Option<u16>,
1748 pub channel: Option<u16>,
1752 pub wakeup_channel: Option<u16>,
1756 pub pskc: Option<Vec<u8>>,
1760 pub security_policy: Option<SecurityPolicy>,
1764 pub channel_mask: Option<u32>,
1768 #[doc(hidden)]
1769 pub __source_breaking: fidl::marker::SourceBreaking,
1770}
1771
1772impl fidl::Persistable for OperationalDataset {}
1773
1774#[derive(Clone, Debug, Default, PartialEq)]
1776pub struct PdProcessedRaInfo {
1777 pub num_platform_ra_received: Option<u32>,
1781 pub num_platform_pio_processed: Option<u32>,
1785 pub last_platform_ra_msec: Option<u32>,
1789 #[doc(hidden)]
1790 pub __source_breaking: fidl::marker::SourceBreaking,
1791}
1792
1793impl fidl::Persistable for PdProcessedRaInfo {}
1794
1795#[derive(Clone, Debug, Default, PartialEq)]
1797pub struct RadioLinkInfo {
1798 pub link_type: Option<String>,
1804 pub preference: Option<u8>,
1808 #[doc(hidden)]
1809 pub __source_breaking: fidl::marker::SourceBreaking,
1810}
1811
1812impl fidl::Persistable for RadioLinkInfo {}
1813
1814#[derive(Clone, Debug, Default, PartialEq)]
1816pub struct RouterInfo {
1817 pub extended_address: Option<Vec<u8>>,
1821 pub thread_rloc: Option<u16>,
1825 pub router_id: Option<u8>,
1829 pub next_hop: Option<u8>,
1833 pub path_cost: Option<u8>,
1837 pub link_quality_in: Option<u8>,
1841 pub link_quality_out: Option<u8>,
1845 pub age: Option<i64>,
1849 pub link_established: Option<bool>,
1853 #[doc(hidden)]
1854 pub __source_breaking: fidl::marker::SourceBreaking,
1855}
1856
1857impl fidl::Persistable for RouterInfo {}
1858
1859#[derive(Clone, Debug, Default, PartialEq)]
1861pub struct SecurityPolicy {
1862 pub rotation_time: Option<u16>,
1866 pub obtain_network_key_enabled: Option<bool>,
1870 pub native_commissioning_enabled: Option<bool>,
1874 pub routers_enabled: Option<bool>,
1878 pub external_commissioning_enabled: Option<bool>,
1882 pub autonomous_enrollment_enabled: Option<bool>,
1886 pub network_key_provisioning_enabled: Option<bool>,
1890 pub toble_link_enabled: Option<bool>,
1894 pub nonccm_routers_enabled: Option<bool>,
1898 pub version_threshold_for_routing: Option<u8>,
1902 #[doc(hidden)]
1903 pub __source_breaking: fidl::marker::SourceBreaking,
1904}
1905
1906impl fidl::Persistable for SecurityPolicy {}
1907
1908#[derive(Clone, Debug, Default, PartialEq)]
1912pub struct ServerConfig {
1913 pub stable: Option<bool>,
1917 pub server_data_length: Option<u8>,
1921 pub server_data: Option<Vec<u8>>,
1925 pub rloc16: Option<u16>,
1929 #[doc(hidden)]
1930 pub __source_breaking: fidl::marker::SourceBreaking,
1931}
1932
1933impl fidl::Persistable for ServerConfig {}
1934
1935#[derive(Clone, Debug, Default, PartialEq)]
1939pub struct ServiceConfig {
1940 pub service_id: Option<u8>,
1944 pub enterprise_number: Option<u32>,
1948 pub service_data_length: Option<u8>,
1952 pub service_data: Option<Vec<u8>>,
1956 pub server_config: Option<ServerConfig>,
1960 #[doc(hidden)]
1961 pub __source_breaking: fidl::marker::SourceBreaking,
1962}
1963
1964impl fidl::Persistable for ServiceConfig {}
1965
1966#[derive(Clone, Debug, Default, PartialEq)]
1968pub struct SrpServerHost {
1969 pub name: Option<String>,
1973 pub deleted: Option<bool>,
1977 pub addresses: Option<Vec<fidl_fuchsia_net_common::Ipv6Address>>,
1981 #[doc(hidden)]
1982 pub __source_breaking: fidl::marker::SourceBreaking,
1983}
1984
1985impl fidl::Persistable for SrpServerHost {}
1986
1987#[derive(Clone, Debug, Default, PartialEq)]
1989pub struct SrpServerInfo {
1990 pub state: Option<SrpServerState>,
1994 pub port: Option<u16>,
1998 pub address_mode: Option<SrpServerAddressMode>,
2002 pub response_counters: Option<SrpServerResponseCounters>,
2006 pub hosts_registration: Option<SrpServerRegistration>,
2010 pub services_registration: Option<SrpServerRegistration>,
2014 pub hosts: Option<Vec<SrpServerHost>>,
2018 pub services: Option<Vec<SrpServerService>>,
2022 #[doc(hidden)]
2023 pub __source_breaking: fidl::marker::SourceBreaking,
2024}
2025
2026impl fidl::Persistable for SrpServerInfo {}
2027
2028#[derive(Clone, Debug, Default, PartialEq)]
2030pub struct SrpServerRegistration {
2031 pub fresh_count: Option<u32>,
2035 pub deleted_count: Option<u32>,
2039 pub lease_time_total: Option<i64>,
2043 pub key_lease_time_total: Option<i64>,
2047 pub remaining_lease_time_total: Option<i64>,
2051 pub remaining_key_lease_time_total: Option<i64>,
2055 #[doc(hidden)]
2056 pub __source_breaking: fidl::marker::SourceBreaking,
2057}
2058
2059impl fidl::Persistable for SrpServerRegistration {}
2060
2061#[derive(Clone, Debug, Default, PartialEq)]
2062pub struct SrpServerResponseCounters {
2063 pub success_response: Option<u32>,
2067 pub server_failure_response: Option<u32>,
2071 pub format_error_response: Option<u32>,
2075 pub name_exists_response: Option<u32>,
2079 pub refused_response: Option<u32>,
2083 pub other_response: Option<u32>,
2087 #[doc(hidden)]
2088 pub __source_breaking: fidl::marker::SourceBreaking,
2089}
2090
2091impl fidl::Persistable for SrpServerResponseCounters {}
2092
2093#[derive(Clone, Debug, Default, PartialEq)]
2095pub struct SrpServerService {
2096 pub instance_name: Option<String>,
2100 pub deleted: Option<bool>,
2104 pub subtypes: Option<Vec<String>>,
2113 pub port: Option<u16>,
2117 pub priority: Option<u16>,
2121 pub weight: Option<u16>,
2125 pub ttl: Option<i64>,
2129 pub lease: Option<i64>,
2133 pub key_lease: Option<i64>,
2137 pub txt_data: Option<Vec<DnsTxtEntry>>,
2141 pub host: Option<SrpServerHost>,
2145 #[doc(hidden)]
2146 pub __source_breaking: fidl::marker::SourceBreaking,
2147}
2148
2149impl fidl::Persistable for SrpServerService {}
2150
2151#[derive(Clone, Debug, Default, PartialEq)]
2158pub struct Telemetry {
2159 pub rssi: Option<i8>,
2161 pub tx_power: Option<i8>,
2163 pub channel_index: Option<u16>,
2165 pub partition_id: Option<u32>,
2167 pub stack_version: Option<String>,
2169 pub rcp_version: Option<String>,
2171 pub thread_link_mode: Option<u8>,
2177 pub thread_router_id: Option<u8>,
2181 pub thread_rloc: Option<u16>,
2185 pub thread_network_data_version: Option<u8>,
2189 pub thread_stable_network_data_version: Option<u8>,
2193 pub thread_network_data: Option<Vec<u8>>,
2198 pub thread_stable_network_data: Option<Vec<u8>>,
2203 pub thread_border_routing_counters: Option<BorderRoutingCounters>,
2207 pub srp_server_info: Option<SrpServerInfo>,
2211 pub dnssd_counters: Option<DnssdCounters>,
2215 pub leader_data: Option<LeaderData>,
2219 pub uptime: Option<i64>,
2223 pub nat64_info: Option<Nat64Info>,
2227 pub trel_counters: Option<TrelCounters>,
2231 pub trel_peers_info: Option<TrelPeersInfo>,
2235 pub upstream_dns_info: Option<UpstreamDnsInfo>,
2239 pub dhcp6pd_info: Option<Dhcp6PdInfo>,
2243 pub link_metrics_entries: Option<Vec<LinkMetricsEntry>>,
2247 pub border_agent_counters: Option<fidl_fuchsia_lowpan_device_common::BorderAgentCounters>,
2251 pub multi_ail_detected: Option<bool>,
2255 pub extended_pan_id: Option<u64>,
2260 pub border_routing_peers: Option<Vec<BorderRoutingPeer>>,
2264 pub border_routing_routers: Option<Vec<BorderRoutingRouter>>,
2268 pub active_dataset: Option<OperationalDataset>,
2272 pub multiradio_neighbor_info: Option<Vec<MultiRadioNeighborInfo>>,
2276 pub router_info: Option<Vec<RouterInfo>>,
2280 pub network_data: Option<NetworkData>,
2284 pub history_report: Option<ThreadHistoryReport>,
2288 pub ipaddrs: Option<Vec<NetifAddress>>,
2292 pub ipmaddrs: Option<Vec<fidl_fuchsia_net_common::Ipv6Address>>,
2296 pub border_routing_prefixes: Option<Vec<BorderRoutingPrefixTable>>,
2301 pub border_routing_rdnsses: Option<Vec<BorderRoutingRdnss>>,
2306 pub netstat: Option<Vec<UdpSocket>>,
2310 pub eid_cache_entries: Option<Vec<EidCacheEntry>>,
2314 pub cca_threshold: Option<i8>,
2318 pub csl_info: Option<CslInfo>,
2322 pub buffer_info: Option<BufferInfo>,
2326 pub mle_counters: Option<fidl_fuchsia_lowpan_device_common::MleCounters>,
2330 #[doc(hidden)]
2331 pub __source_breaking: fidl::marker::SourceBreaking,
2332}
2333
2334impl fidl::Persistable for Telemetry {}
2335
2336#[derive(Clone, Debug, Default, PartialEq)]
2338pub struct ThreadHistoryReport {
2339 pub net_info_history: Option<Vec<ThreadNetworkInfoEntry>>,
2343 pub neighbor_info_history: Option<Vec<ThreadNeighborInfoEntry>>,
2347 pub router_info_history: Option<Vec<ThreadRouterInfoEntry>>,
2351 pub prefix_info_history: Option<Vec<ThreadNetDataPrefixInfoEntry>>,
2355 pub route_info_history: Option<Vec<ThreadNetDataRouteInfoEntry>>,
2359 #[doc(hidden)]
2360 pub __source_breaking: fidl::marker::SourceBreaking,
2361}
2362
2363impl fidl::Persistable for ThreadHistoryReport {}
2364
2365#[derive(Clone, Debug, Default, PartialEq)]
2369pub struct ThreadLinkMode {
2370 pub rx_on_when_idle: Option<bool>,
2374 pub device_type: Option<bool>,
2378 pub network_data: Option<bool>,
2382 #[doc(hidden)]
2383 pub __source_breaking: fidl::marker::SourceBreaking,
2384}
2385
2386impl fidl::Persistable for ThreadLinkMode {}
2387
2388#[derive(Clone, Debug, Default, PartialEq)]
2390pub struct ThreadNeighborInfoEntry {
2391 pub age: Option<i64>,
2395 pub is_child: Option<bool>,
2399 pub event: Option<HistoryTrackerNeighborEvent>,
2407 pub extended_address: Option<Vec<u8>>,
2411 pub rloc16: Option<u16>,
2415 pub mode: Option<ThreadLinkMode>,
2419 pub avg_rssi: Option<i32>,
2424 #[doc(hidden)]
2425 pub __source_breaking: fidl::marker::SourceBreaking,
2426}
2427
2428impl fidl::Persistable for ThreadNeighborInfoEntry {}
2429
2430#[derive(Clone, Debug, Default, PartialEq)]
2432pub struct ThreadNetDataPrefixInfoEntry {
2433 pub age: Option<i64>,
2437 pub event: Option<HistoryTrackerNetDataEvent>,
2443 pub on_mesh_prefix: Option<BorderRouterConfig>,
2447 #[doc(hidden)]
2448 pub __source_breaking: fidl::marker::SourceBreaking,
2449}
2450
2451impl fidl::Persistable for ThreadNetDataPrefixInfoEntry {}
2452
2453#[derive(Clone, Debug, Default, PartialEq)]
2455pub struct ThreadNetDataRouteInfoEntry {
2456 pub age: Option<i64>,
2460 pub event: Option<HistoryTrackerNetDataEvent>,
2466 pub external_route: Option<ExternalRouteConfig>,
2470 #[doc(hidden)]
2471 pub __source_breaking: fidl::marker::SourceBreaking,
2472}
2473
2474impl fidl::Persistable for ThreadNetDataRouteInfoEntry {}
2475
2476#[derive(Clone, Debug, Default, PartialEq)]
2478pub struct ThreadNetworkInfoEntry {
2479 pub age: Option<i64>,
2483 pub role: Option<fidl_fuchsia_lowpan_device_common::Role>,
2491 pub mode: Option<ThreadLinkMode>,
2495 pub rloc16: Option<u16>,
2499 pub partition_id: Option<u32>,
2503 #[doc(hidden)]
2504 pub __source_breaking: fidl::marker::SourceBreaking,
2505}
2506
2507impl fidl::Persistable for ThreadNetworkInfoEntry {}
2508
2509#[derive(Clone, Debug, Default, PartialEq)]
2511pub struct ThreadRouterInfoEntry {
2512 pub age: Option<i64>,
2516 pub event: Option<HistoryTrackerRouterEvent>,
2524 pub router_id: Option<u8>,
2528 pub router_rloc16: Option<u16>,
2532 pub next_hop_id: Option<u8>,
2536 pub next_hop_rloc16: Option<u16>,
2540 pub old_path_cost: Option<u8>,
2544 pub new_path_cost: Option<u8>,
2548 #[doc(hidden)]
2549 pub __source_breaking: fidl::marker::SourceBreaking,
2550}
2551
2552impl fidl::Persistable for ThreadRouterInfoEntry {}
2553
2554#[derive(Clone, Debug, Default, PartialEq)]
2559pub struct TrelCounters {
2560 pub rx_bytes: Option<u64>,
2562 pub rx_packets: Option<u64>,
2564 pub tx_bytes: Option<u64>,
2566 pub tx_failure: Option<u64>,
2568 pub tx_packets: Option<u64>,
2570 #[doc(hidden)]
2571 pub __source_breaking: fidl::marker::SourceBreaking,
2572}
2573
2574impl fidl::Persistable for TrelCounters {}
2575
2576#[derive(Clone, Debug, Default, PartialEq)]
2580pub struct TrelPeer {
2581 pub extended_address: Option<Vec<u8>>,
2585 pub extended_pan_id: Option<Vec<u8>>,
2589 pub sock_address: Option<String>,
2593 #[doc(hidden)]
2594 pub __source_breaking: fidl::marker::SourceBreaking,
2595}
2596
2597impl fidl::Persistable for TrelPeer {}
2598
2599#[derive(Clone, Debug, Default, PartialEq)]
2604pub struct TrelPeersInfo {
2605 pub num_trel_peers: Option<u16>,
2609 pub trel_peers: Option<Vec<TrelPeer>>,
2613 #[doc(hidden)]
2614 pub __source_breaking: fidl::marker::SourceBreaking,
2615}
2616
2617impl fidl::Persistable for TrelPeersInfo {}
2618
2619#[derive(Clone, Debug, Default, PartialEq)]
2621pub struct UdpSocket {
2622 pub sock_name: Option<String>,
2626 pub peer_name: Option<String>,
2630 #[doc(hidden)]
2631 pub __source_breaking: fidl::marker::SourceBreaking,
2632}
2633
2634impl fidl::Persistable for UdpSocket {}
2635
2636#[derive(Clone, Debug, Default, PartialEq)]
2640pub struct UpstreamDnsCounters {
2641 pub queries: Option<u32>,
2645 pub responses: Option<u32>,
2649 pub failures: Option<u32>,
2653 #[doc(hidden)]
2654 pub __source_breaking: fidl::marker::SourceBreaking,
2655}
2656
2657impl fidl::Persistable for UpstreamDnsCounters {}
2658
2659#[derive(Clone, Debug, Default, PartialEq)]
2664pub struct UpstreamDnsInfo {
2665 pub upstream_dns_query_state: Option<UpstreamDnsQueryState>,
2669 #[doc(hidden)]
2670 pub __source_breaking: fidl::marker::SourceBreaking,
2671}
2672
2673impl fidl::Persistable for UpstreamDnsInfo {}
2674
2675#[derive(Clone, Debug)]
2677pub enum JoinParams {
2678 ProvisioningParameter(fidl_fuchsia_lowpan_device_common::ProvisioningParams),
2680 JoinerParameter(JoinerCommissioningParams),
2686 #[doc(hidden)]
2687 __SourceBreaking { unknown_ordinal: u64 },
2688}
2689
2690#[macro_export]
2692macro_rules! JoinParamsUnknown {
2693 () => {
2694 _
2695 };
2696}
2697
2698impl PartialEq for JoinParams {
2700 fn eq(&self, other: &Self) -> bool {
2701 match (self, other) {
2702 (Self::ProvisioningParameter(x), Self::ProvisioningParameter(y)) => *x == *y,
2703 (Self::JoinerParameter(x), Self::JoinerParameter(y)) => *x == *y,
2704 _ => false,
2705 }
2706 }
2707}
2708
2709impl JoinParams {
2710 #[inline]
2711 pub fn ordinal(&self) -> u64 {
2712 match *self {
2713 Self::ProvisioningParameter(_) => 1,
2714 Self::JoinerParameter(_) => 2,
2715 Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
2716 }
2717 }
2718
2719 #[inline]
2720 pub fn unknown_variant_for_testing() -> Self {
2721 Self::__SourceBreaking { unknown_ordinal: 0 }
2722 }
2723
2724 #[inline]
2725 pub fn is_unknown(&self) -> bool {
2726 match self {
2727 Self::__SourceBreaking { .. } => true,
2728 _ => false,
2729 }
2730 }
2731}
2732
2733impl fidl::Persistable for JoinParams {}
2734
2735#[derive(Clone, Debug)]
2739pub enum ProvisioningProgress {
2740 Progress(f32),
2742 Identity(fidl_fuchsia_lowpan_device_common::Identity),
2744 #[doc(hidden)]
2745 __SourceBreaking { unknown_ordinal: u64 },
2746}
2747
2748#[macro_export]
2750macro_rules! ProvisioningProgressUnknown {
2751 () => {
2752 _
2753 };
2754}
2755
2756impl PartialEq for ProvisioningProgress {
2758 fn eq(&self, other: &Self) -> bool {
2759 match (self, other) {
2760 (Self::Progress(x), Self::Progress(y)) => *x == *y,
2761 (Self::Identity(x), Self::Identity(y)) => *x == *y,
2762 _ => false,
2763 }
2764 }
2765}
2766
2767impl ProvisioningProgress {
2768 #[inline]
2769 pub fn ordinal(&self) -> u64 {
2770 match *self {
2771 Self::Progress(_) => 1,
2772 Self::Identity(_) => 2,
2773 Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
2774 }
2775 }
2776
2777 #[inline]
2778 pub fn unknown_variant_for_testing() -> Self {
2779 Self::__SourceBreaking { unknown_ordinal: 0 }
2780 }
2781
2782 #[inline]
2783 pub fn is_unknown(&self) -> bool {
2784 match self {
2785 Self::__SourceBreaking { .. } => true,
2786 _ => false,
2787 }
2788 }
2789}
2790
2791impl fidl::Persistable for ProvisioningProgress {}
2792
2793pub mod beacon_info_stream_ordinals {
2794 pub const NEXT: u64 = 0x367a557363a340b6;
2795}
2796
2797pub mod device_ordinals {
2798 pub const GET_SUPPORTED_CHANNELS: u64 = 0x2d8b969a9bd70f23;
2799}
2800
2801pub mod device_connector_ordinals {
2802 pub const CONNECT: u64 = 0x296896c9304836cd;
2803}
2804
2805pub mod device_extra_ordinals {
2806 pub const FORM_NETWORK: u64 = 0x6a8135f84bfc90e;
2807 pub const JOIN_NETWORK: u64 = 0x3ea583bab79f81c0;
2808 pub const START_NETWORK_SCAN: u64 = 0x6288c73b79188b40;
2809}
2810
2811pub mod device_extra_connector_ordinals {
2812 pub const CONNECT: u64 = 0x3fcb37e4226c81e9;
2813}
2814
2815pub mod device_route_ordinals {
2816 pub const REGISTER_ON_MESH_PREFIX: u64 = 0x2c4135231eb97f61;
2817 pub const UNREGISTER_ON_MESH_PREFIX: u64 = 0x82d5184028b797f;
2818 pub const REGISTER_EXTERNAL_ROUTE: u64 = 0x75f70f0fc34a5a73;
2819 pub const UNREGISTER_EXTERNAL_ROUTE: u64 = 0x3769be353b1d7088;
2820}
2821
2822pub mod device_route_connector_ordinals {
2823 pub const CONNECT: u64 = 0x19cd5fdcb971f4ac;
2824}
2825
2826pub mod device_route_extra_ordinals {
2827 pub const GET_LOCAL_ON_MESH_PREFIXES: u64 = 0xf192c43311c811;
2828 pub const GET_LOCAL_EXTERNAL_ROUTES: u64 = 0x5a688c2e62c766a6;
2829}
2830
2831pub mod device_route_extra_connector_ordinals {
2832 pub const CONNECT: u64 = 0x12f72df7b1348fe2;
2833}
2834
2835pub mod legacy_joining_ordinals {
2836 pub const MAKE_JOINABLE: u64 = 0x1739a6ae36d5c5aa;
2837}
2838
2839pub mod legacy_joining_connector_ordinals {
2840 pub const CONNECT: u64 = 0x3c8dfeb943bb8d06;
2841}
2842
2843pub mod provisioning_monitor_ordinals {
2844 pub const WATCH_PROGRESS: u64 = 0xc35336fc43ac0c;
2845}
2846
2847pub mod telemetry_provider_ordinals {
2848 pub const GET_TELEMETRY: u64 = 0xc34f2fff7dacc41;
2849}
2850
2851pub mod telemetry_provider_connector_ordinals {
2852 pub const CONNECT: u64 = 0x24a5bf1be73e2fad;
2853}
2854
2855mod internal {
2856 use super::*;
2857 unsafe impl fidl::encoding::TypeMarker for AddressOrigin {
2858 type Owned = Self;
2859
2860 #[inline(always)]
2861 fn inline_align(_context: fidl::encoding::Context) -> usize {
2862 std::mem::align_of::<u8>()
2863 }
2864
2865 #[inline(always)]
2866 fn inline_size(_context: fidl::encoding::Context) -> usize {
2867 std::mem::size_of::<u8>()
2868 }
2869
2870 #[inline(always)]
2871 fn encode_is_copy() -> bool {
2872 true
2873 }
2874
2875 #[inline(always)]
2876 fn decode_is_copy() -> bool {
2877 false
2878 }
2879 }
2880
2881 impl fidl::encoding::ValueTypeMarker for AddressOrigin {
2882 type Borrowed<'a> = Self;
2883 #[inline(always)]
2884 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2885 *value
2886 }
2887 }
2888
2889 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for AddressOrigin {
2890 #[inline]
2891 unsafe fn encode(
2892 self,
2893 encoder: &mut fidl::encoding::Encoder<'_, D>,
2894 offset: usize,
2895 _depth: fidl::encoding::Depth,
2896 ) -> fidl::Result<()> {
2897 encoder.debug_check_bounds::<Self>(offset);
2898 encoder.write_num(self.into_primitive(), offset);
2899 Ok(())
2900 }
2901 }
2902
2903 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for AddressOrigin {
2904 #[inline(always)]
2905 fn new_empty() -> Self {
2906 Self::Thread
2907 }
2908
2909 #[inline]
2910 unsafe fn decode(
2911 &mut self,
2912 decoder: &mut fidl::encoding::Decoder<'_, D>,
2913 offset: usize,
2914 _depth: fidl::encoding::Depth,
2915 ) -> fidl::Result<()> {
2916 decoder.debug_check_bounds::<Self>(offset);
2917 let prim = decoder.read_num::<u8>(offset);
2918
2919 *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
2920 Ok(())
2921 }
2922 }
2923 unsafe impl fidl::encoding::TypeMarker for CacheEntryState {
2924 type Owned = Self;
2925
2926 #[inline(always)]
2927 fn inline_align(_context: fidl::encoding::Context) -> usize {
2928 std::mem::align_of::<u8>()
2929 }
2930
2931 #[inline(always)]
2932 fn inline_size(_context: fidl::encoding::Context) -> usize {
2933 std::mem::size_of::<u8>()
2934 }
2935
2936 #[inline(always)]
2937 fn encode_is_copy() -> bool {
2938 true
2939 }
2940
2941 #[inline(always)]
2942 fn decode_is_copy() -> bool {
2943 false
2944 }
2945 }
2946
2947 impl fidl::encoding::ValueTypeMarker for CacheEntryState {
2948 type Borrowed<'a> = Self;
2949 #[inline(always)]
2950 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2951 *value
2952 }
2953 }
2954
2955 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
2956 for CacheEntryState
2957 {
2958 #[inline]
2959 unsafe fn encode(
2960 self,
2961 encoder: &mut fidl::encoding::Encoder<'_, D>,
2962 offset: usize,
2963 _depth: fidl::encoding::Depth,
2964 ) -> fidl::Result<()> {
2965 encoder.debug_check_bounds::<Self>(offset);
2966 encoder.write_num(self.into_primitive(), offset);
2967 Ok(())
2968 }
2969 }
2970
2971 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for CacheEntryState {
2972 #[inline(always)]
2973 fn new_empty() -> Self {
2974 Self::Cached
2975 }
2976
2977 #[inline]
2978 unsafe fn decode(
2979 &mut self,
2980 decoder: &mut fidl::encoding::Decoder<'_, D>,
2981 offset: usize,
2982 _depth: fidl::encoding::Depth,
2983 ) -> fidl::Result<()> {
2984 decoder.debug_check_bounds::<Self>(offset);
2985 let prim = decoder.read_num::<u8>(offset);
2986
2987 *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
2988 Ok(())
2989 }
2990 }
2991 unsafe impl fidl::encoding::TypeMarker for Dhcp6PdState {
2992 type Owned = Self;
2993
2994 #[inline(always)]
2995 fn inline_align(_context: fidl::encoding::Context) -> usize {
2996 std::mem::align_of::<u32>()
2997 }
2998
2999 #[inline(always)]
3000 fn inline_size(_context: fidl::encoding::Context) -> usize {
3001 std::mem::size_of::<u32>()
3002 }
3003
3004 #[inline(always)]
3005 fn encode_is_copy() -> bool {
3006 false
3007 }
3008
3009 #[inline(always)]
3010 fn decode_is_copy() -> bool {
3011 false
3012 }
3013 }
3014
3015 impl fidl::encoding::ValueTypeMarker for Dhcp6PdState {
3016 type Borrowed<'a> = Self;
3017 #[inline(always)]
3018 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3019 *value
3020 }
3021 }
3022
3023 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for Dhcp6PdState {
3024 #[inline]
3025 unsafe fn encode(
3026 self,
3027 encoder: &mut fidl::encoding::Encoder<'_, D>,
3028 offset: usize,
3029 _depth: fidl::encoding::Depth,
3030 ) -> fidl::Result<()> {
3031 encoder.debug_check_bounds::<Self>(offset);
3032 encoder.write_num(self.into_primitive(), offset);
3033 Ok(())
3034 }
3035 }
3036
3037 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Dhcp6PdState {
3038 #[inline(always)]
3039 fn new_empty() -> Self {
3040 Self::unknown()
3041 }
3042
3043 #[inline]
3044 unsafe fn decode(
3045 &mut self,
3046 decoder: &mut fidl::encoding::Decoder<'_, D>,
3047 offset: usize,
3048 _depth: fidl::encoding::Depth,
3049 ) -> fidl::Result<()> {
3050 decoder.debug_check_bounds::<Self>(offset);
3051 let prim = decoder.read_num::<u32>(offset);
3052
3053 *self = Self::from_primitive_allow_unknown(prim);
3054 Ok(())
3055 }
3056 }
3057 unsafe impl fidl::encoding::TypeMarker for HistoryTrackerNeighborEvent {
3058 type Owned = Self;
3059
3060 #[inline(always)]
3061 fn inline_align(_context: fidl::encoding::Context) -> usize {
3062 std::mem::align_of::<u8>()
3063 }
3064
3065 #[inline(always)]
3066 fn inline_size(_context: fidl::encoding::Context) -> usize {
3067 std::mem::size_of::<u8>()
3068 }
3069
3070 #[inline(always)]
3071 fn encode_is_copy() -> bool {
3072 true
3073 }
3074
3075 #[inline(always)]
3076 fn decode_is_copy() -> bool {
3077 false
3078 }
3079 }
3080
3081 impl fidl::encoding::ValueTypeMarker for HistoryTrackerNeighborEvent {
3082 type Borrowed<'a> = Self;
3083 #[inline(always)]
3084 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3085 *value
3086 }
3087 }
3088
3089 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
3090 for HistoryTrackerNeighborEvent
3091 {
3092 #[inline]
3093 unsafe fn encode(
3094 self,
3095 encoder: &mut fidl::encoding::Encoder<'_, D>,
3096 offset: usize,
3097 _depth: fidl::encoding::Depth,
3098 ) -> fidl::Result<()> {
3099 encoder.debug_check_bounds::<Self>(offset);
3100 encoder.write_num(self.into_primitive(), offset);
3101 Ok(())
3102 }
3103 }
3104
3105 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
3106 for HistoryTrackerNeighborEvent
3107 {
3108 #[inline(always)]
3109 fn new_empty() -> Self {
3110 Self::Added
3111 }
3112
3113 #[inline]
3114 unsafe fn decode(
3115 &mut self,
3116 decoder: &mut fidl::encoding::Decoder<'_, D>,
3117 offset: usize,
3118 _depth: fidl::encoding::Depth,
3119 ) -> fidl::Result<()> {
3120 decoder.debug_check_bounds::<Self>(offset);
3121 let prim = decoder.read_num::<u8>(offset);
3122
3123 *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
3124 Ok(())
3125 }
3126 }
3127 unsafe impl fidl::encoding::TypeMarker for HistoryTrackerNetDataEvent {
3128 type Owned = Self;
3129
3130 #[inline(always)]
3131 fn inline_align(_context: fidl::encoding::Context) -> usize {
3132 std::mem::align_of::<u8>()
3133 }
3134
3135 #[inline(always)]
3136 fn inline_size(_context: fidl::encoding::Context) -> usize {
3137 std::mem::size_of::<u8>()
3138 }
3139
3140 #[inline(always)]
3141 fn encode_is_copy() -> bool {
3142 true
3143 }
3144
3145 #[inline(always)]
3146 fn decode_is_copy() -> bool {
3147 false
3148 }
3149 }
3150
3151 impl fidl::encoding::ValueTypeMarker for HistoryTrackerNetDataEvent {
3152 type Borrowed<'a> = Self;
3153 #[inline(always)]
3154 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3155 *value
3156 }
3157 }
3158
3159 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
3160 for HistoryTrackerNetDataEvent
3161 {
3162 #[inline]
3163 unsafe fn encode(
3164 self,
3165 encoder: &mut fidl::encoding::Encoder<'_, D>,
3166 offset: usize,
3167 _depth: fidl::encoding::Depth,
3168 ) -> fidl::Result<()> {
3169 encoder.debug_check_bounds::<Self>(offset);
3170 encoder.write_num(self.into_primitive(), offset);
3171 Ok(())
3172 }
3173 }
3174
3175 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
3176 for HistoryTrackerNetDataEvent
3177 {
3178 #[inline(always)]
3179 fn new_empty() -> Self {
3180 Self::Added
3181 }
3182
3183 #[inline]
3184 unsafe fn decode(
3185 &mut self,
3186 decoder: &mut fidl::encoding::Decoder<'_, D>,
3187 offset: usize,
3188 _depth: fidl::encoding::Depth,
3189 ) -> fidl::Result<()> {
3190 decoder.debug_check_bounds::<Self>(offset);
3191 let prim = decoder.read_num::<u8>(offset);
3192
3193 *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
3194 Ok(())
3195 }
3196 }
3197 unsafe impl fidl::encoding::TypeMarker for HistoryTrackerRouterEvent {
3198 type Owned = Self;
3199
3200 #[inline(always)]
3201 fn inline_align(_context: fidl::encoding::Context) -> usize {
3202 std::mem::align_of::<u8>()
3203 }
3204
3205 #[inline(always)]
3206 fn inline_size(_context: fidl::encoding::Context) -> usize {
3207 std::mem::size_of::<u8>()
3208 }
3209
3210 #[inline(always)]
3211 fn encode_is_copy() -> bool {
3212 true
3213 }
3214
3215 #[inline(always)]
3216 fn decode_is_copy() -> bool {
3217 false
3218 }
3219 }
3220
3221 impl fidl::encoding::ValueTypeMarker for HistoryTrackerRouterEvent {
3222 type Borrowed<'a> = Self;
3223 #[inline(always)]
3224 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3225 *value
3226 }
3227 }
3228
3229 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
3230 for HistoryTrackerRouterEvent
3231 {
3232 #[inline]
3233 unsafe fn encode(
3234 self,
3235 encoder: &mut fidl::encoding::Encoder<'_, D>,
3236 offset: usize,
3237 _depth: fidl::encoding::Depth,
3238 ) -> fidl::Result<()> {
3239 encoder.debug_check_bounds::<Self>(offset);
3240 encoder.write_num(self.into_primitive(), offset);
3241 Ok(())
3242 }
3243 }
3244
3245 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
3246 for HistoryTrackerRouterEvent
3247 {
3248 #[inline(always)]
3249 fn new_empty() -> Self {
3250 Self::Added
3251 }
3252
3253 #[inline]
3254 unsafe fn decode(
3255 &mut self,
3256 decoder: &mut fidl::encoding::Decoder<'_, D>,
3257 offset: usize,
3258 _depth: fidl::encoding::Depth,
3259 ) -> fidl::Result<()> {
3260 decoder.debug_check_bounds::<Self>(offset);
3261 let prim = decoder.read_num::<u8>(offset);
3262
3263 *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
3264 Ok(())
3265 }
3266 }
3267 unsafe impl fidl::encoding::TypeMarker for Nat64State {
3268 type Owned = Self;
3269
3270 #[inline(always)]
3271 fn inline_align(_context: fidl::encoding::Context) -> usize {
3272 std::mem::align_of::<u32>()
3273 }
3274
3275 #[inline(always)]
3276 fn inline_size(_context: fidl::encoding::Context) -> usize {
3277 std::mem::size_of::<u32>()
3278 }
3279
3280 #[inline(always)]
3281 fn encode_is_copy() -> bool {
3282 false
3283 }
3284
3285 #[inline(always)]
3286 fn decode_is_copy() -> bool {
3287 false
3288 }
3289 }
3290
3291 impl fidl::encoding::ValueTypeMarker for Nat64State {
3292 type Borrowed<'a> = Self;
3293 #[inline(always)]
3294 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3295 *value
3296 }
3297 }
3298
3299 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for Nat64State {
3300 #[inline]
3301 unsafe fn encode(
3302 self,
3303 encoder: &mut fidl::encoding::Encoder<'_, D>,
3304 offset: usize,
3305 _depth: fidl::encoding::Depth,
3306 ) -> fidl::Result<()> {
3307 encoder.debug_check_bounds::<Self>(offset);
3308 encoder.write_num(self.into_primitive(), offset);
3309 Ok(())
3310 }
3311 }
3312
3313 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Nat64State {
3314 #[inline(always)]
3315 fn new_empty() -> Self {
3316 Self::unknown()
3317 }
3318
3319 #[inline]
3320 unsafe fn decode(
3321 &mut self,
3322 decoder: &mut fidl::encoding::Decoder<'_, D>,
3323 offset: usize,
3324 _depth: fidl::encoding::Depth,
3325 ) -> fidl::Result<()> {
3326 decoder.debug_check_bounds::<Self>(offset);
3327 let prim = decoder.read_num::<u32>(offset);
3328
3329 *self = Self::from_primitive_allow_unknown(prim);
3330 Ok(())
3331 }
3332 }
3333 unsafe impl fidl::encoding::TypeMarker for ProvisionError {
3334 type Owned = Self;
3335
3336 #[inline(always)]
3337 fn inline_align(_context: fidl::encoding::Context) -> usize {
3338 std::mem::align_of::<i32>()
3339 }
3340
3341 #[inline(always)]
3342 fn inline_size(_context: fidl::encoding::Context) -> usize {
3343 std::mem::size_of::<i32>()
3344 }
3345
3346 #[inline(always)]
3347 fn encode_is_copy() -> bool {
3348 false
3349 }
3350
3351 #[inline(always)]
3352 fn decode_is_copy() -> bool {
3353 false
3354 }
3355 }
3356
3357 impl fidl::encoding::ValueTypeMarker for ProvisionError {
3358 type Borrowed<'a> = Self;
3359 #[inline(always)]
3360 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3361 *value
3362 }
3363 }
3364
3365 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for ProvisionError {
3366 #[inline]
3367 unsafe fn encode(
3368 self,
3369 encoder: &mut fidl::encoding::Encoder<'_, D>,
3370 offset: usize,
3371 _depth: fidl::encoding::Depth,
3372 ) -> fidl::Result<()> {
3373 encoder.debug_check_bounds::<Self>(offset);
3374 encoder.write_num(self.into_primitive(), offset);
3375 Ok(())
3376 }
3377 }
3378
3379 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ProvisionError {
3380 #[inline(always)]
3381 fn new_empty() -> Self {
3382 Self::unknown()
3383 }
3384
3385 #[inline]
3386 unsafe fn decode(
3387 &mut self,
3388 decoder: &mut fidl::encoding::Decoder<'_, D>,
3389 offset: usize,
3390 _depth: fidl::encoding::Depth,
3391 ) -> fidl::Result<()> {
3392 decoder.debug_check_bounds::<Self>(offset);
3393 let prim = decoder.read_num::<i32>(offset);
3394
3395 *self = Self::from_primitive_allow_unknown(prim);
3396 Ok(())
3397 }
3398 }
3399 unsafe impl fidl::encoding::TypeMarker for RoutePreference {
3400 type Owned = Self;
3401
3402 #[inline(always)]
3403 fn inline_align(_context: fidl::encoding::Context) -> usize {
3404 std::mem::align_of::<i8>()
3405 }
3406
3407 #[inline(always)]
3408 fn inline_size(_context: fidl::encoding::Context) -> usize {
3409 std::mem::size_of::<i8>()
3410 }
3411
3412 #[inline(always)]
3413 fn encode_is_copy() -> bool {
3414 true
3415 }
3416
3417 #[inline(always)]
3418 fn decode_is_copy() -> bool {
3419 false
3420 }
3421 }
3422
3423 impl fidl::encoding::ValueTypeMarker for RoutePreference {
3424 type Borrowed<'a> = Self;
3425 #[inline(always)]
3426 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3427 *value
3428 }
3429 }
3430
3431 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
3432 for RoutePreference
3433 {
3434 #[inline]
3435 unsafe fn encode(
3436 self,
3437 encoder: &mut fidl::encoding::Encoder<'_, D>,
3438 offset: usize,
3439 _depth: fidl::encoding::Depth,
3440 ) -> fidl::Result<()> {
3441 encoder.debug_check_bounds::<Self>(offset);
3442 encoder.write_num(self.into_primitive(), offset);
3443 Ok(())
3444 }
3445 }
3446
3447 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for RoutePreference {
3448 #[inline(always)]
3449 fn new_empty() -> Self {
3450 Self::Low
3451 }
3452
3453 #[inline]
3454 unsafe fn decode(
3455 &mut self,
3456 decoder: &mut fidl::encoding::Decoder<'_, D>,
3457 offset: usize,
3458 _depth: fidl::encoding::Depth,
3459 ) -> fidl::Result<()> {
3460 decoder.debug_check_bounds::<Self>(offset);
3461 let prim = decoder.read_num::<i8>(offset);
3462
3463 *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
3464 Ok(())
3465 }
3466 }
3467 unsafe impl fidl::encoding::TypeMarker for SrpServerAddressMode {
3468 type Owned = Self;
3469
3470 #[inline(always)]
3471 fn inline_align(_context: fidl::encoding::Context) -> usize {
3472 std::mem::align_of::<u32>()
3473 }
3474
3475 #[inline(always)]
3476 fn inline_size(_context: fidl::encoding::Context) -> usize {
3477 std::mem::size_of::<u32>()
3478 }
3479
3480 #[inline(always)]
3481 fn encode_is_copy() -> bool {
3482 true
3483 }
3484
3485 #[inline(always)]
3486 fn decode_is_copy() -> bool {
3487 false
3488 }
3489 }
3490
3491 impl fidl::encoding::ValueTypeMarker for SrpServerAddressMode {
3492 type Borrowed<'a> = Self;
3493 #[inline(always)]
3494 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3495 *value
3496 }
3497 }
3498
3499 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
3500 for SrpServerAddressMode
3501 {
3502 #[inline]
3503 unsafe fn encode(
3504 self,
3505 encoder: &mut fidl::encoding::Encoder<'_, D>,
3506 offset: usize,
3507 _depth: fidl::encoding::Depth,
3508 ) -> fidl::Result<()> {
3509 encoder.debug_check_bounds::<Self>(offset);
3510 encoder.write_num(self.into_primitive(), offset);
3511 Ok(())
3512 }
3513 }
3514
3515 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for SrpServerAddressMode {
3516 #[inline(always)]
3517 fn new_empty() -> Self {
3518 Self::Unicast
3519 }
3520
3521 #[inline]
3522 unsafe fn decode(
3523 &mut self,
3524 decoder: &mut fidl::encoding::Decoder<'_, D>,
3525 offset: usize,
3526 _depth: fidl::encoding::Depth,
3527 ) -> fidl::Result<()> {
3528 decoder.debug_check_bounds::<Self>(offset);
3529 let prim = decoder.read_num::<u32>(offset);
3530
3531 *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
3532 Ok(())
3533 }
3534 }
3535 unsafe impl fidl::encoding::TypeMarker for SrpServerState {
3536 type Owned = Self;
3537
3538 #[inline(always)]
3539 fn inline_align(_context: fidl::encoding::Context) -> usize {
3540 std::mem::align_of::<u32>()
3541 }
3542
3543 #[inline(always)]
3544 fn inline_size(_context: fidl::encoding::Context) -> usize {
3545 std::mem::size_of::<u32>()
3546 }
3547
3548 #[inline(always)]
3549 fn encode_is_copy() -> bool {
3550 true
3551 }
3552
3553 #[inline(always)]
3554 fn decode_is_copy() -> bool {
3555 false
3556 }
3557 }
3558
3559 impl fidl::encoding::ValueTypeMarker for SrpServerState {
3560 type Borrowed<'a> = Self;
3561 #[inline(always)]
3562 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3563 *value
3564 }
3565 }
3566
3567 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for SrpServerState {
3568 #[inline]
3569 unsafe fn encode(
3570 self,
3571 encoder: &mut fidl::encoding::Encoder<'_, D>,
3572 offset: usize,
3573 _depth: fidl::encoding::Depth,
3574 ) -> fidl::Result<()> {
3575 encoder.debug_check_bounds::<Self>(offset);
3576 encoder.write_num(self.into_primitive(), offset);
3577 Ok(())
3578 }
3579 }
3580
3581 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for SrpServerState {
3582 #[inline(always)]
3583 fn new_empty() -> Self {
3584 Self::Disabled
3585 }
3586
3587 #[inline]
3588 unsafe fn decode(
3589 &mut self,
3590 decoder: &mut fidl::encoding::Decoder<'_, D>,
3591 offset: usize,
3592 _depth: fidl::encoding::Depth,
3593 ) -> fidl::Result<()> {
3594 decoder.debug_check_bounds::<Self>(offset);
3595 let prim = decoder.read_num::<u32>(offset);
3596
3597 *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
3598 Ok(())
3599 }
3600 }
3601 unsafe impl fidl::encoding::TypeMarker for UpstreamDnsQueryState {
3602 type Owned = Self;
3603
3604 #[inline(always)]
3605 fn inline_align(_context: fidl::encoding::Context) -> usize {
3606 std::mem::align_of::<u32>()
3607 }
3608
3609 #[inline(always)]
3610 fn inline_size(_context: fidl::encoding::Context) -> usize {
3611 std::mem::size_of::<u32>()
3612 }
3613
3614 #[inline(always)]
3615 fn encode_is_copy() -> bool {
3616 false
3617 }
3618
3619 #[inline(always)]
3620 fn decode_is_copy() -> bool {
3621 false
3622 }
3623 }
3624
3625 impl fidl::encoding::ValueTypeMarker for UpstreamDnsQueryState {
3626 type Borrowed<'a> = Self;
3627 #[inline(always)]
3628 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3629 *value
3630 }
3631 }
3632
3633 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
3634 for UpstreamDnsQueryState
3635 {
3636 #[inline]
3637 unsafe fn encode(
3638 self,
3639 encoder: &mut fidl::encoding::Encoder<'_, D>,
3640 offset: usize,
3641 _depth: fidl::encoding::Depth,
3642 ) -> fidl::Result<()> {
3643 encoder.debug_check_bounds::<Self>(offset);
3644 encoder.write_num(self.into_primitive(), offset);
3645 Ok(())
3646 }
3647 }
3648
3649 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for UpstreamDnsQueryState {
3650 #[inline(always)]
3651 fn new_empty() -> Self {
3652 Self::unknown()
3653 }
3654
3655 #[inline]
3656 unsafe fn decode(
3657 &mut self,
3658 decoder: &mut fidl::encoding::Decoder<'_, D>,
3659 offset: usize,
3660 _depth: fidl::encoding::Depth,
3661 ) -> fidl::Result<()> {
3662 decoder.debug_check_bounds::<Self>(offset);
3663 let prim = decoder.read_num::<u32>(offset);
3664
3665 *self = Self::from_primitive_allow_unknown(prim);
3666 Ok(())
3667 }
3668 }
3669
3670 impl fidl::encoding::ValueTypeMarker for BeaconInfoStreamNextResponse {
3671 type Borrowed<'a> = &'a Self;
3672 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3673 value
3674 }
3675 }
3676
3677 unsafe impl fidl::encoding::TypeMarker for BeaconInfoStreamNextResponse {
3678 type Owned = Self;
3679
3680 #[inline(always)]
3681 fn inline_align(_context: fidl::encoding::Context) -> usize {
3682 8
3683 }
3684
3685 #[inline(always)]
3686 fn inline_size(_context: fidl::encoding::Context) -> usize {
3687 16
3688 }
3689 }
3690
3691 unsafe impl<D: fidl::encoding::ResourceDialect>
3692 fidl::encoding::Encode<BeaconInfoStreamNextResponse, D> for &BeaconInfoStreamNextResponse
3693 {
3694 #[inline]
3695 unsafe fn encode(
3696 self,
3697 encoder: &mut fidl::encoding::Encoder<'_, D>,
3698 offset: usize,
3699 _depth: fidl::encoding::Depth,
3700 ) -> fidl::Result<()> {
3701 encoder.debug_check_bounds::<BeaconInfoStreamNextResponse>(offset);
3702 fidl::encoding::Encode::<BeaconInfoStreamNextResponse, D>::encode(
3704 (
3705 <fidl::encoding::Vector<BeaconInfo, 32> as fidl::encoding::ValueTypeMarker>::borrow(&self.beacons),
3706 ),
3707 encoder, offset, _depth
3708 )
3709 }
3710 }
3711 unsafe impl<
3712 D: fidl::encoding::ResourceDialect,
3713 T0: fidl::encoding::Encode<fidl::encoding::Vector<BeaconInfo, 32>, D>,
3714 > fidl::encoding::Encode<BeaconInfoStreamNextResponse, D> for (T0,)
3715 {
3716 #[inline]
3717 unsafe fn encode(
3718 self,
3719 encoder: &mut fidl::encoding::Encoder<'_, D>,
3720 offset: usize,
3721 depth: fidl::encoding::Depth,
3722 ) -> fidl::Result<()> {
3723 encoder.debug_check_bounds::<BeaconInfoStreamNextResponse>(offset);
3724 self.0.encode(encoder, offset + 0, depth)?;
3728 Ok(())
3729 }
3730 }
3731
3732 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
3733 for BeaconInfoStreamNextResponse
3734 {
3735 #[inline(always)]
3736 fn new_empty() -> Self {
3737 Self { beacons: fidl::new_empty!(fidl::encoding::Vector<BeaconInfo, 32>, D) }
3738 }
3739
3740 #[inline]
3741 unsafe fn decode(
3742 &mut self,
3743 decoder: &mut fidl::encoding::Decoder<'_, D>,
3744 offset: usize,
3745 _depth: fidl::encoding::Depth,
3746 ) -> fidl::Result<()> {
3747 decoder.debug_check_bounds::<Self>(offset);
3748 fidl::decode!(fidl::encoding::Vector<BeaconInfo, 32>, D, &mut self.beacons, decoder, offset + 0, _depth)?;
3750 Ok(())
3751 }
3752 }
3753
3754 impl fidl::encoding::ValueTypeMarker for DeviceGetSupportedChannelsResponse {
3755 type Borrowed<'a> = &'a Self;
3756 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3757 value
3758 }
3759 }
3760
3761 unsafe impl fidl::encoding::TypeMarker for DeviceGetSupportedChannelsResponse {
3762 type Owned = Self;
3763
3764 #[inline(always)]
3765 fn inline_align(_context: fidl::encoding::Context) -> usize {
3766 8
3767 }
3768
3769 #[inline(always)]
3770 fn inline_size(_context: fidl::encoding::Context) -> usize {
3771 16
3772 }
3773 }
3774
3775 unsafe impl<D: fidl::encoding::ResourceDialect>
3776 fidl::encoding::Encode<DeviceGetSupportedChannelsResponse, D>
3777 for &DeviceGetSupportedChannelsResponse
3778 {
3779 #[inline]
3780 unsafe fn encode(
3781 self,
3782 encoder: &mut fidl::encoding::Encoder<'_, D>,
3783 offset: usize,
3784 _depth: fidl::encoding::Depth,
3785 ) -> fidl::Result<()> {
3786 encoder.debug_check_bounds::<DeviceGetSupportedChannelsResponse>(offset);
3787 fidl::encoding::Encode::<DeviceGetSupportedChannelsResponse, D>::encode(
3789 (
3790 <fidl::encoding::Vector<ChannelInfo, 200> as fidl::encoding::ValueTypeMarker>::borrow(&self.channels_info),
3791 ),
3792 encoder, offset, _depth
3793 )
3794 }
3795 }
3796 unsafe impl<
3797 D: fidl::encoding::ResourceDialect,
3798 T0: fidl::encoding::Encode<fidl::encoding::Vector<ChannelInfo, 200>, D>,
3799 > fidl::encoding::Encode<DeviceGetSupportedChannelsResponse, D> for (T0,)
3800 {
3801 #[inline]
3802 unsafe fn encode(
3803 self,
3804 encoder: &mut fidl::encoding::Encoder<'_, D>,
3805 offset: usize,
3806 depth: fidl::encoding::Depth,
3807 ) -> fidl::Result<()> {
3808 encoder.debug_check_bounds::<DeviceGetSupportedChannelsResponse>(offset);
3809 self.0.encode(encoder, offset + 0, depth)?;
3813 Ok(())
3814 }
3815 }
3816
3817 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
3818 for DeviceGetSupportedChannelsResponse
3819 {
3820 #[inline(always)]
3821 fn new_empty() -> Self {
3822 Self { channels_info: fidl::new_empty!(fidl::encoding::Vector<ChannelInfo, 200>, D) }
3823 }
3824
3825 #[inline]
3826 unsafe fn decode(
3827 &mut self,
3828 decoder: &mut fidl::encoding::Decoder<'_, D>,
3829 offset: usize,
3830 _depth: fidl::encoding::Depth,
3831 ) -> fidl::Result<()> {
3832 decoder.debug_check_bounds::<Self>(offset);
3833 fidl::decode!(fidl::encoding::Vector<ChannelInfo, 200>, D, &mut self.channels_info, decoder, offset + 0, _depth)?;
3835 Ok(())
3836 }
3837 }
3838
3839 impl fidl::encoding::ValueTypeMarker for DeviceRouteExtraGetLocalExternalRoutesResponse {
3840 type Borrowed<'a> = &'a Self;
3841 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3842 value
3843 }
3844 }
3845
3846 unsafe impl fidl::encoding::TypeMarker for DeviceRouteExtraGetLocalExternalRoutesResponse {
3847 type Owned = Self;
3848
3849 #[inline(always)]
3850 fn inline_align(_context: fidl::encoding::Context) -> usize {
3851 8
3852 }
3853
3854 #[inline(always)]
3855 fn inline_size(_context: fidl::encoding::Context) -> usize {
3856 16
3857 }
3858 }
3859
3860 unsafe impl<D: fidl::encoding::ResourceDialect>
3861 fidl::encoding::Encode<DeviceRouteExtraGetLocalExternalRoutesResponse, D>
3862 for &DeviceRouteExtraGetLocalExternalRoutesResponse
3863 {
3864 #[inline]
3865 unsafe fn encode(
3866 self,
3867 encoder: &mut fidl::encoding::Encoder<'_, D>,
3868 offset: usize,
3869 _depth: fidl::encoding::Depth,
3870 ) -> fidl::Result<()> {
3871 encoder.debug_check_bounds::<DeviceRouteExtraGetLocalExternalRoutesResponse>(offset);
3872 fidl::encoding::Encode::<DeviceRouteExtraGetLocalExternalRoutesResponse, D>::encode(
3874 (
3875 <fidl::encoding::Vector<ExternalRoute, 32> as fidl::encoding::ValueTypeMarker>::borrow(&self.external_routes),
3876 ),
3877 encoder, offset, _depth
3878 )
3879 }
3880 }
3881 unsafe impl<
3882 D: fidl::encoding::ResourceDialect,
3883 T0: fidl::encoding::Encode<fidl::encoding::Vector<ExternalRoute, 32>, D>,
3884 > fidl::encoding::Encode<DeviceRouteExtraGetLocalExternalRoutesResponse, D> for (T0,)
3885 {
3886 #[inline]
3887 unsafe fn encode(
3888 self,
3889 encoder: &mut fidl::encoding::Encoder<'_, D>,
3890 offset: usize,
3891 depth: fidl::encoding::Depth,
3892 ) -> fidl::Result<()> {
3893 encoder.debug_check_bounds::<DeviceRouteExtraGetLocalExternalRoutesResponse>(offset);
3894 self.0.encode(encoder, offset + 0, depth)?;
3898 Ok(())
3899 }
3900 }
3901
3902 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
3903 for DeviceRouteExtraGetLocalExternalRoutesResponse
3904 {
3905 #[inline(always)]
3906 fn new_empty() -> Self {
3907 Self { external_routes: fidl::new_empty!(fidl::encoding::Vector<ExternalRoute, 32>, D) }
3908 }
3909
3910 #[inline]
3911 unsafe fn decode(
3912 &mut self,
3913 decoder: &mut fidl::encoding::Decoder<'_, D>,
3914 offset: usize,
3915 _depth: fidl::encoding::Depth,
3916 ) -> fidl::Result<()> {
3917 decoder.debug_check_bounds::<Self>(offset);
3918 fidl::decode!(fidl::encoding::Vector<ExternalRoute, 32>, D, &mut self.external_routes, decoder, offset + 0, _depth)?;
3920 Ok(())
3921 }
3922 }
3923
3924 impl fidl::encoding::ValueTypeMarker for DeviceRouteExtraGetLocalOnMeshPrefixesResponse {
3925 type Borrowed<'a> = &'a Self;
3926 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3927 value
3928 }
3929 }
3930
3931 unsafe impl fidl::encoding::TypeMarker for DeviceRouteExtraGetLocalOnMeshPrefixesResponse {
3932 type Owned = Self;
3933
3934 #[inline(always)]
3935 fn inline_align(_context: fidl::encoding::Context) -> usize {
3936 8
3937 }
3938
3939 #[inline(always)]
3940 fn inline_size(_context: fidl::encoding::Context) -> usize {
3941 16
3942 }
3943 }
3944
3945 unsafe impl<D: fidl::encoding::ResourceDialect>
3946 fidl::encoding::Encode<DeviceRouteExtraGetLocalOnMeshPrefixesResponse, D>
3947 for &DeviceRouteExtraGetLocalOnMeshPrefixesResponse
3948 {
3949 #[inline]
3950 unsafe fn encode(
3951 self,
3952 encoder: &mut fidl::encoding::Encoder<'_, D>,
3953 offset: usize,
3954 _depth: fidl::encoding::Depth,
3955 ) -> fidl::Result<()> {
3956 encoder.debug_check_bounds::<DeviceRouteExtraGetLocalOnMeshPrefixesResponse>(offset);
3957 fidl::encoding::Encode::<DeviceRouteExtraGetLocalOnMeshPrefixesResponse, D>::encode(
3959 (
3960 <fidl::encoding::Vector<OnMeshPrefix, 32> as fidl::encoding::ValueTypeMarker>::borrow(&self.prefixes),
3961 ),
3962 encoder, offset, _depth
3963 )
3964 }
3965 }
3966 unsafe impl<
3967 D: fidl::encoding::ResourceDialect,
3968 T0: fidl::encoding::Encode<fidl::encoding::Vector<OnMeshPrefix, 32>, D>,
3969 > fidl::encoding::Encode<DeviceRouteExtraGetLocalOnMeshPrefixesResponse, D> for (T0,)
3970 {
3971 #[inline]
3972 unsafe fn encode(
3973 self,
3974 encoder: &mut fidl::encoding::Encoder<'_, D>,
3975 offset: usize,
3976 depth: fidl::encoding::Depth,
3977 ) -> fidl::Result<()> {
3978 encoder.debug_check_bounds::<DeviceRouteExtraGetLocalOnMeshPrefixesResponse>(offset);
3979 self.0.encode(encoder, offset + 0, depth)?;
3983 Ok(())
3984 }
3985 }
3986
3987 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
3988 for DeviceRouteExtraGetLocalOnMeshPrefixesResponse
3989 {
3990 #[inline(always)]
3991 fn new_empty() -> Self {
3992 Self { prefixes: fidl::new_empty!(fidl::encoding::Vector<OnMeshPrefix, 32>, D) }
3993 }
3994
3995 #[inline]
3996 unsafe fn decode(
3997 &mut self,
3998 decoder: &mut fidl::encoding::Decoder<'_, D>,
3999 offset: usize,
4000 _depth: fidl::encoding::Depth,
4001 ) -> fidl::Result<()> {
4002 decoder.debug_check_bounds::<Self>(offset);
4003 fidl::decode!(fidl::encoding::Vector<OnMeshPrefix, 32>, D, &mut self.prefixes, decoder, offset + 0, _depth)?;
4005 Ok(())
4006 }
4007 }
4008
4009 impl fidl::encoding::ValueTypeMarker for DeviceRouteRegisterExternalRouteRequest {
4010 type Borrowed<'a> = &'a Self;
4011 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4012 value
4013 }
4014 }
4015
4016 unsafe impl fidl::encoding::TypeMarker for DeviceRouteRegisterExternalRouteRequest {
4017 type Owned = Self;
4018
4019 #[inline(always)]
4020 fn inline_align(_context: fidl::encoding::Context) -> usize {
4021 8
4022 }
4023
4024 #[inline(always)]
4025 fn inline_size(_context: fidl::encoding::Context) -> usize {
4026 16
4027 }
4028 }
4029
4030 unsafe impl<D: fidl::encoding::ResourceDialect>
4031 fidl::encoding::Encode<DeviceRouteRegisterExternalRouteRequest, D>
4032 for &DeviceRouteRegisterExternalRouteRequest
4033 {
4034 #[inline]
4035 unsafe fn encode(
4036 self,
4037 encoder: &mut fidl::encoding::Encoder<'_, D>,
4038 offset: usize,
4039 _depth: fidl::encoding::Depth,
4040 ) -> fidl::Result<()> {
4041 encoder.debug_check_bounds::<DeviceRouteRegisterExternalRouteRequest>(offset);
4042 fidl::encoding::Encode::<DeviceRouteRegisterExternalRouteRequest, D>::encode(
4044 (<ExternalRoute as fidl::encoding::ValueTypeMarker>::borrow(&self.external_route),),
4045 encoder,
4046 offset,
4047 _depth,
4048 )
4049 }
4050 }
4051 unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<ExternalRoute, D>>
4052 fidl::encoding::Encode<DeviceRouteRegisterExternalRouteRequest, D> for (T0,)
4053 {
4054 #[inline]
4055 unsafe fn encode(
4056 self,
4057 encoder: &mut fidl::encoding::Encoder<'_, D>,
4058 offset: usize,
4059 depth: fidl::encoding::Depth,
4060 ) -> fidl::Result<()> {
4061 encoder.debug_check_bounds::<DeviceRouteRegisterExternalRouteRequest>(offset);
4062 self.0.encode(encoder, offset + 0, depth)?;
4066 Ok(())
4067 }
4068 }
4069
4070 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
4071 for DeviceRouteRegisterExternalRouteRequest
4072 {
4073 #[inline(always)]
4074 fn new_empty() -> Self {
4075 Self { external_route: fidl::new_empty!(ExternalRoute, D) }
4076 }
4077
4078 #[inline]
4079 unsafe fn decode(
4080 &mut self,
4081 decoder: &mut fidl::encoding::Decoder<'_, D>,
4082 offset: usize,
4083 _depth: fidl::encoding::Depth,
4084 ) -> fidl::Result<()> {
4085 decoder.debug_check_bounds::<Self>(offset);
4086 fidl::decode!(ExternalRoute, D, &mut self.external_route, decoder, offset + 0, _depth)?;
4088 Ok(())
4089 }
4090 }
4091
4092 impl fidl::encoding::ValueTypeMarker for DeviceRouteRegisterOnMeshPrefixRequest {
4093 type Borrowed<'a> = &'a Self;
4094 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4095 value
4096 }
4097 }
4098
4099 unsafe impl fidl::encoding::TypeMarker for DeviceRouteRegisterOnMeshPrefixRequest {
4100 type Owned = Self;
4101
4102 #[inline(always)]
4103 fn inline_align(_context: fidl::encoding::Context) -> usize {
4104 8
4105 }
4106
4107 #[inline(always)]
4108 fn inline_size(_context: fidl::encoding::Context) -> usize {
4109 16
4110 }
4111 }
4112
4113 unsafe impl<D: fidl::encoding::ResourceDialect>
4114 fidl::encoding::Encode<DeviceRouteRegisterOnMeshPrefixRequest, D>
4115 for &DeviceRouteRegisterOnMeshPrefixRequest
4116 {
4117 #[inline]
4118 unsafe fn encode(
4119 self,
4120 encoder: &mut fidl::encoding::Encoder<'_, D>,
4121 offset: usize,
4122 _depth: fidl::encoding::Depth,
4123 ) -> fidl::Result<()> {
4124 encoder.debug_check_bounds::<DeviceRouteRegisterOnMeshPrefixRequest>(offset);
4125 fidl::encoding::Encode::<DeviceRouteRegisterOnMeshPrefixRequest, D>::encode(
4127 (<OnMeshPrefix as fidl::encoding::ValueTypeMarker>::borrow(&self.prefix),),
4128 encoder,
4129 offset,
4130 _depth,
4131 )
4132 }
4133 }
4134 unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<OnMeshPrefix, D>>
4135 fidl::encoding::Encode<DeviceRouteRegisterOnMeshPrefixRequest, D> for (T0,)
4136 {
4137 #[inline]
4138 unsafe fn encode(
4139 self,
4140 encoder: &mut fidl::encoding::Encoder<'_, D>,
4141 offset: usize,
4142 depth: fidl::encoding::Depth,
4143 ) -> fidl::Result<()> {
4144 encoder.debug_check_bounds::<DeviceRouteRegisterOnMeshPrefixRequest>(offset);
4145 self.0.encode(encoder, offset + 0, depth)?;
4149 Ok(())
4150 }
4151 }
4152
4153 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
4154 for DeviceRouteRegisterOnMeshPrefixRequest
4155 {
4156 #[inline(always)]
4157 fn new_empty() -> Self {
4158 Self { prefix: fidl::new_empty!(OnMeshPrefix, D) }
4159 }
4160
4161 #[inline]
4162 unsafe fn decode(
4163 &mut self,
4164 decoder: &mut fidl::encoding::Decoder<'_, D>,
4165 offset: usize,
4166 _depth: fidl::encoding::Depth,
4167 ) -> fidl::Result<()> {
4168 decoder.debug_check_bounds::<Self>(offset);
4169 fidl::decode!(OnMeshPrefix, D, &mut self.prefix, decoder, offset + 0, _depth)?;
4171 Ok(())
4172 }
4173 }
4174
4175 impl fidl::encoding::ValueTypeMarker for DeviceRouteUnregisterExternalRouteRequest {
4176 type Borrowed<'a> = &'a Self;
4177 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4178 value
4179 }
4180 }
4181
4182 unsafe impl fidl::encoding::TypeMarker for DeviceRouteUnregisterExternalRouteRequest {
4183 type Owned = Self;
4184
4185 #[inline(always)]
4186 fn inline_align(_context: fidl::encoding::Context) -> usize {
4187 1
4188 }
4189
4190 #[inline(always)]
4191 fn inline_size(_context: fidl::encoding::Context) -> usize {
4192 17
4193 }
4194 }
4195
4196 unsafe impl<D: fidl::encoding::ResourceDialect>
4197 fidl::encoding::Encode<DeviceRouteUnregisterExternalRouteRequest, D>
4198 for &DeviceRouteUnregisterExternalRouteRequest
4199 {
4200 #[inline]
4201 unsafe fn encode(
4202 self,
4203 encoder: &mut fidl::encoding::Encoder<'_, D>,
4204 offset: usize,
4205 _depth: fidl::encoding::Depth,
4206 ) -> fidl::Result<()> {
4207 encoder.debug_check_bounds::<DeviceRouteUnregisterExternalRouteRequest>(offset);
4208 fidl::encoding::Encode::<DeviceRouteUnregisterExternalRouteRequest, D>::encode(
4210 (
4211 <fidl_fuchsia_net_common::Ipv6AddressWithPrefix as fidl::encoding::ValueTypeMarker>::borrow(&self.subnet),
4212 ),
4213 encoder, offset, _depth
4214 )
4215 }
4216 }
4217 unsafe impl<
4218 D: fidl::encoding::ResourceDialect,
4219 T0: fidl::encoding::Encode<fidl_fuchsia_net_common::Ipv6AddressWithPrefix, D>,
4220 > fidl::encoding::Encode<DeviceRouteUnregisterExternalRouteRequest, D> for (T0,)
4221 {
4222 #[inline]
4223 unsafe fn encode(
4224 self,
4225 encoder: &mut fidl::encoding::Encoder<'_, D>,
4226 offset: usize,
4227 depth: fidl::encoding::Depth,
4228 ) -> fidl::Result<()> {
4229 encoder.debug_check_bounds::<DeviceRouteUnregisterExternalRouteRequest>(offset);
4230 self.0.encode(encoder, offset + 0, depth)?;
4234 Ok(())
4235 }
4236 }
4237
4238 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
4239 for DeviceRouteUnregisterExternalRouteRequest
4240 {
4241 #[inline(always)]
4242 fn new_empty() -> Self {
4243 Self { subnet: fidl::new_empty!(fidl_fuchsia_net_common::Ipv6AddressWithPrefix, D) }
4244 }
4245
4246 #[inline]
4247 unsafe fn decode(
4248 &mut self,
4249 decoder: &mut fidl::encoding::Decoder<'_, D>,
4250 offset: usize,
4251 _depth: fidl::encoding::Depth,
4252 ) -> fidl::Result<()> {
4253 decoder.debug_check_bounds::<Self>(offset);
4254 fidl::decode!(
4256 fidl_fuchsia_net_common::Ipv6AddressWithPrefix,
4257 D,
4258 &mut self.subnet,
4259 decoder,
4260 offset + 0,
4261 _depth
4262 )?;
4263 Ok(())
4264 }
4265 }
4266
4267 impl fidl::encoding::ValueTypeMarker for DeviceRouteUnregisterOnMeshPrefixRequest {
4268 type Borrowed<'a> = &'a Self;
4269 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4270 value
4271 }
4272 }
4273
4274 unsafe impl fidl::encoding::TypeMarker for DeviceRouteUnregisterOnMeshPrefixRequest {
4275 type Owned = Self;
4276
4277 #[inline(always)]
4278 fn inline_align(_context: fidl::encoding::Context) -> usize {
4279 1
4280 }
4281
4282 #[inline(always)]
4283 fn inline_size(_context: fidl::encoding::Context) -> usize {
4284 17
4285 }
4286 }
4287
4288 unsafe impl<D: fidl::encoding::ResourceDialect>
4289 fidl::encoding::Encode<DeviceRouteUnregisterOnMeshPrefixRequest, D>
4290 for &DeviceRouteUnregisterOnMeshPrefixRequest
4291 {
4292 #[inline]
4293 unsafe fn encode(
4294 self,
4295 encoder: &mut fidl::encoding::Encoder<'_, D>,
4296 offset: usize,
4297 _depth: fidl::encoding::Depth,
4298 ) -> fidl::Result<()> {
4299 encoder.debug_check_bounds::<DeviceRouteUnregisterOnMeshPrefixRequest>(offset);
4300 fidl::encoding::Encode::<DeviceRouteUnregisterOnMeshPrefixRequest, D>::encode(
4302 (
4303 <fidl_fuchsia_net_common::Ipv6AddressWithPrefix as fidl::encoding::ValueTypeMarker>::borrow(&self.subnet),
4304 ),
4305 encoder, offset, _depth
4306 )
4307 }
4308 }
4309 unsafe impl<
4310 D: fidl::encoding::ResourceDialect,
4311 T0: fidl::encoding::Encode<fidl_fuchsia_net_common::Ipv6AddressWithPrefix, D>,
4312 > fidl::encoding::Encode<DeviceRouteUnregisterOnMeshPrefixRequest, D> for (T0,)
4313 {
4314 #[inline]
4315 unsafe fn encode(
4316 self,
4317 encoder: &mut fidl::encoding::Encoder<'_, D>,
4318 offset: usize,
4319 depth: fidl::encoding::Depth,
4320 ) -> fidl::Result<()> {
4321 encoder.debug_check_bounds::<DeviceRouteUnregisterOnMeshPrefixRequest>(offset);
4322 self.0.encode(encoder, offset + 0, depth)?;
4326 Ok(())
4327 }
4328 }
4329
4330 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
4331 for DeviceRouteUnregisterOnMeshPrefixRequest
4332 {
4333 #[inline(always)]
4334 fn new_empty() -> Self {
4335 Self { subnet: fidl::new_empty!(fidl_fuchsia_net_common::Ipv6AddressWithPrefix, D) }
4336 }
4337
4338 #[inline]
4339 unsafe fn decode(
4340 &mut self,
4341 decoder: &mut fidl::encoding::Decoder<'_, D>,
4342 offset: usize,
4343 _depth: fidl::encoding::Depth,
4344 ) -> fidl::Result<()> {
4345 decoder.debug_check_bounds::<Self>(offset);
4346 fidl::decode!(
4348 fidl_fuchsia_net_common::Ipv6AddressWithPrefix,
4349 D,
4350 &mut self.subnet,
4351 decoder,
4352 offset + 0,
4353 _depth
4354 )?;
4355 Ok(())
4356 }
4357 }
4358
4359 impl fidl::encoding::ValueTypeMarker for LegacyJoiningMakeJoinableRequest {
4360 type Borrowed<'a> = &'a Self;
4361 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4362 value
4363 }
4364 }
4365
4366 unsafe impl fidl::encoding::TypeMarker for LegacyJoiningMakeJoinableRequest {
4367 type Owned = Self;
4368
4369 #[inline(always)]
4370 fn inline_align(_context: fidl::encoding::Context) -> usize {
4371 8
4372 }
4373
4374 #[inline(always)]
4375 fn inline_size(_context: fidl::encoding::Context) -> usize {
4376 16
4377 }
4378 }
4379
4380 unsafe impl<D: fidl::encoding::ResourceDialect>
4381 fidl::encoding::Encode<LegacyJoiningMakeJoinableRequest, D>
4382 for &LegacyJoiningMakeJoinableRequest
4383 {
4384 #[inline]
4385 unsafe fn encode(
4386 self,
4387 encoder: &mut fidl::encoding::Encoder<'_, D>,
4388 offset: usize,
4389 _depth: fidl::encoding::Depth,
4390 ) -> fidl::Result<()> {
4391 encoder.debug_check_bounds::<LegacyJoiningMakeJoinableRequest>(offset);
4392 unsafe {
4393 let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
4395 (buf_ptr as *mut LegacyJoiningMakeJoinableRequest)
4396 .write_unaligned((self as *const LegacyJoiningMakeJoinableRequest).read());
4397 let padding_ptr = buf_ptr.offset(8) as *mut u64;
4400 let padding_mask = 0xffffffffffff0000u64;
4401 padding_ptr.write_unaligned(padding_ptr.read_unaligned() & !padding_mask);
4402 }
4403 Ok(())
4404 }
4405 }
4406 unsafe impl<
4407 D: fidl::encoding::ResourceDialect,
4408 T0: fidl::encoding::Encode<i64, D>,
4409 T1: fidl::encoding::Encode<u16, D>,
4410 > fidl::encoding::Encode<LegacyJoiningMakeJoinableRequest, D> for (T0, T1)
4411 {
4412 #[inline]
4413 unsafe fn encode(
4414 self,
4415 encoder: &mut fidl::encoding::Encoder<'_, D>,
4416 offset: usize,
4417 depth: fidl::encoding::Depth,
4418 ) -> fidl::Result<()> {
4419 encoder.debug_check_bounds::<LegacyJoiningMakeJoinableRequest>(offset);
4420 unsafe {
4423 let ptr = encoder.buf.as_mut_ptr().add(offset).offset(8);
4424 (ptr as *mut u64).write_unaligned(0);
4425 }
4426 self.0.encode(encoder, offset + 0, depth)?;
4428 self.1.encode(encoder, offset + 8, depth)?;
4429 Ok(())
4430 }
4431 }
4432
4433 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
4434 for LegacyJoiningMakeJoinableRequest
4435 {
4436 #[inline(always)]
4437 fn new_empty() -> Self {
4438 Self { duration: fidl::new_empty!(i64, D), port: fidl::new_empty!(u16, D) }
4439 }
4440
4441 #[inline]
4442 unsafe fn decode(
4443 &mut self,
4444 decoder: &mut fidl::encoding::Decoder<'_, D>,
4445 offset: usize,
4446 _depth: fidl::encoding::Depth,
4447 ) -> fidl::Result<()> {
4448 decoder.debug_check_bounds::<Self>(offset);
4449 let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
4450 let ptr = unsafe { buf_ptr.offset(8) };
4452 let padval = unsafe { (ptr as *const u64).read_unaligned() };
4453 let mask = 0xffffffffffff0000u64;
4454 let maskedval = padval & mask;
4455 if maskedval != 0 {
4456 return Err(fidl::Error::NonZeroPadding {
4457 padding_start: offset + 8 + ((mask as u64).trailing_zeros() / 8) as usize,
4458 });
4459 }
4460 unsafe {
4462 std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 16);
4463 }
4464 Ok(())
4465 }
4466 }
4467
4468 impl fidl::encoding::ValueTypeMarker for ProvisioningMonitorWatchProgressResponse {
4469 type Borrowed<'a> = &'a Self;
4470 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4471 value
4472 }
4473 }
4474
4475 unsafe impl fidl::encoding::TypeMarker for ProvisioningMonitorWatchProgressResponse {
4476 type Owned = Self;
4477
4478 #[inline(always)]
4479 fn inline_align(_context: fidl::encoding::Context) -> usize {
4480 8
4481 }
4482
4483 #[inline(always)]
4484 fn inline_size(_context: fidl::encoding::Context) -> usize {
4485 16
4486 }
4487 }
4488
4489 unsafe impl<D: fidl::encoding::ResourceDialect>
4490 fidl::encoding::Encode<ProvisioningMonitorWatchProgressResponse, D>
4491 for &ProvisioningMonitorWatchProgressResponse
4492 {
4493 #[inline]
4494 unsafe fn encode(
4495 self,
4496 encoder: &mut fidl::encoding::Encoder<'_, D>,
4497 offset: usize,
4498 _depth: fidl::encoding::Depth,
4499 ) -> fidl::Result<()> {
4500 encoder.debug_check_bounds::<ProvisioningMonitorWatchProgressResponse>(offset);
4501 fidl::encoding::Encode::<ProvisioningMonitorWatchProgressResponse, D>::encode(
4503 (<ProvisioningProgress as fidl::encoding::ValueTypeMarker>::borrow(&self.progress),),
4504 encoder,
4505 offset,
4506 _depth,
4507 )
4508 }
4509 }
4510 unsafe impl<
4511 D: fidl::encoding::ResourceDialect,
4512 T0: fidl::encoding::Encode<ProvisioningProgress, D>,
4513 > fidl::encoding::Encode<ProvisioningMonitorWatchProgressResponse, D> for (T0,)
4514 {
4515 #[inline]
4516 unsafe fn encode(
4517 self,
4518 encoder: &mut fidl::encoding::Encoder<'_, D>,
4519 offset: usize,
4520 depth: fidl::encoding::Depth,
4521 ) -> fidl::Result<()> {
4522 encoder.debug_check_bounds::<ProvisioningMonitorWatchProgressResponse>(offset);
4523 self.0.encode(encoder, offset + 0, depth)?;
4527 Ok(())
4528 }
4529 }
4530
4531 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
4532 for ProvisioningMonitorWatchProgressResponse
4533 {
4534 #[inline(always)]
4535 fn new_empty() -> Self {
4536 Self { progress: fidl::new_empty!(ProvisioningProgress, D) }
4537 }
4538
4539 #[inline]
4540 unsafe fn decode(
4541 &mut self,
4542 decoder: &mut fidl::encoding::Decoder<'_, D>,
4543 offset: usize,
4544 _depth: fidl::encoding::Depth,
4545 ) -> fidl::Result<()> {
4546 decoder.debug_check_bounds::<Self>(offset);
4547 fidl::decode!(
4549 ProvisioningProgress,
4550 D,
4551 &mut self.progress,
4552 decoder,
4553 offset + 0,
4554 _depth
4555 )?;
4556 Ok(())
4557 }
4558 }
4559
4560 impl fidl::encoding::ValueTypeMarker for TelemetryProviderGetTelemetryResponse {
4561 type Borrowed<'a> = &'a Self;
4562 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4563 value
4564 }
4565 }
4566
4567 unsafe impl fidl::encoding::TypeMarker for TelemetryProviderGetTelemetryResponse {
4568 type Owned = Self;
4569
4570 #[inline(always)]
4571 fn inline_align(_context: fidl::encoding::Context) -> usize {
4572 8
4573 }
4574
4575 #[inline(always)]
4576 fn inline_size(_context: fidl::encoding::Context) -> usize {
4577 16
4578 }
4579 }
4580
4581 unsafe impl<D: fidl::encoding::ResourceDialect>
4582 fidl::encoding::Encode<TelemetryProviderGetTelemetryResponse, D>
4583 for &TelemetryProviderGetTelemetryResponse
4584 {
4585 #[inline]
4586 unsafe fn encode(
4587 self,
4588 encoder: &mut fidl::encoding::Encoder<'_, D>,
4589 offset: usize,
4590 _depth: fidl::encoding::Depth,
4591 ) -> fidl::Result<()> {
4592 encoder.debug_check_bounds::<TelemetryProviderGetTelemetryResponse>(offset);
4593 fidl::encoding::Encode::<TelemetryProviderGetTelemetryResponse, D>::encode(
4595 (<Telemetry as fidl::encoding::ValueTypeMarker>::borrow(&self.telemetry),),
4596 encoder,
4597 offset,
4598 _depth,
4599 )
4600 }
4601 }
4602 unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<Telemetry, D>>
4603 fidl::encoding::Encode<TelemetryProviderGetTelemetryResponse, D> for (T0,)
4604 {
4605 #[inline]
4606 unsafe fn encode(
4607 self,
4608 encoder: &mut fidl::encoding::Encoder<'_, D>,
4609 offset: usize,
4610 depth: fidl::encoding::Depth,
4611 ) -> fidl::Result<()> {
4612 encoder.debug_check_bounds::<TelemetryProviderGetTelemetryResponse>(offset);
4613 self.0.encode(encoder, offset + 0, depth)?;
4617 Ok(())
4618 }
4619 }
4620
4621 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
4622 for TelemetryProviderGetTelemetryResponse
4623 {
4624 #[inline(always)]
4625 fn new_empty() -> Self {
4626 Self { telemetry: fidl::new_empty!(Telemetry, D) }
4627 }
4628
4629 #[inline]
4630 unsafe fn decode(
4631 &mut self,
4632 decoder: &mut fidl::encoding::Decoder<'_, D>,
4633 offset: usize,
4634 _depth: fidl::encoding::Depth,
4635 ) -> fidl::Result<()> {
4636 decoder.debug_check_bounds::<Self>(offset);
4637 fidl::decode!(Telemetry, D, &mut self.telemetry, decoder, offset + 0, _depth)?;
4639 Ok(())
4640 }
4641 }
4642
4643 impl BeaconInfo {
4644 #[inline(always)]
4645 fn max_ordinal_present(&self) -> u64 {
4646 if let Some(_) = self.lqi {
4647 return 4;
4648 }
4649 if let Some(_) = self.rssi {
4650 return 3;
4651 }
4652 if let Some(_) = self.identity {
4653 return 2;
4654 }
4655 if let Some(_) = self.address {
4656 return 1;
4657 }
4658 0
4659 }
4660 }
4661
4662 impl fidl::encoding::ValueTypeMarker for BeaconInfo {
4663 type Borrowed<'a> = &'a Self;
4664 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4665 value
4666 }
4667 }
4668
4669 unsafe impl fidl::encoding::TypeMarker for BeaconInfo {
4670 type Owned = Self;
4671
4672 #[inline(always)]
4673 fn inline_align(_context: fidl::encoding::Context) -> usize {
4674 8
4675 }
4676
4677 #[inline(always)]
4678 fn inline_size(_context: fidl::encoding::Context) -> usize {
4679 16
4680 }
4681 }
4682
4683 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<BeaconInfo, D>
4684 for &BeaconInfo
4685 {
4686 unsafe fn encode(
4687 self,
4688 encoder: &mut fidl::encoding::Encoder<'_, D>,
4689 offset: usize,
4690 mut depth: fidl::encoding::Depth,
4691 ) -> fidl::Result<()> {
4692 encoder.debug_check_bounds::<BeaconInfo>(offset);
4693 let max_ordinal: u64 = self.max_ordinal_present();
4695 encoder.write_num(max_ordinal, offset);
4696 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
4697 if max_ordinal == 0 {
4699 return Ok(());
4700 }
4701 depth.increment()?;
4702 let envelope_size = 8;
4703 let bytes_len = max_ordinal as usize * envelope_size;
4704 #[allow(unused_variables)]
4705 let offset = encoder.out_of_line_offset(bytes_len);
4706 let mut _prev_end_offset: usize = 0;
4707 if 1 > max_ordinal {
4708 return Ok(());
4709 }
4710
4711 let cur_offset: usize = (1 - 1) * envelope_size;
4714
4715 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4717
4718 fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_lowpan_common::MacAddress, D>(
4723 self.address.as_ref().map(<fidl_fuchsia_lowpan_common::MacAddress as fidl::encoding::ValueTypeMarker>::borrow),
4724 encoder, offset + cur_offset, depth
4725 )?;
4726
4727 _prev_end_offset = cur_offset + envelope_size;
4728 if 2 > max_ordinal {
4729 return Ok(());
4730 }
4731
4732 let cur_offset: usize = (2 - 1) * envelope_size;
4735
4736 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4738
4739 fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_lowpan_device_common::Identity, D>(
4744 self.identity.as_ref().map(<fidl_fuchsia_lowpan_device_common::Identity as fidl::encoding::ValueTypeMarker>::borrow),
4745 encoder, offset + cur_offset, depth
4746 )?;
4747
4748 _prev_end_offset = cur_offset + envelope_size;
4749 if 3 > max_ordinal {
4750 return Ok(());
4751 }
4752
4753 let cur_offset: usize = (3 - 1) * envelope_size;
4756
4757 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4759
4760 fidl::encoding::encode_in_envelope_optional::<i8, D>(
4765 self.rssi.as_ref().map(<i8 as fidl::encoding::ValueTypeMarker>::borrow),
4766 encoder,
4767 offset + cur_offset,
4768 depth,
4769 )?;
4770
4771 _prev_end_offset = cur_offset + envelope_size;
4772 if 4 > max_ordinal {
4773 return Ok(());
4774 }
4775
4776 let cur_offset: usize = (4 - 1) * envelope_size;
4779
4780 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4782
4783 fidl::encoding::encode_in_envelope_optional::<u8, D>(
4788 self.lqi.as_ref().map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
4789 encoder,
4790 offset + cur_offset,
4791 depth,
4792 )?;
4793
4794 _prev_end_offset = cur_offset + envelope_size;
4795
4796 Ok(())
4797 }
4798 }
4799
4800 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for BeaconInfo {
4801 #[inline(always)]
4802 fn new_empty() -> Self {
4803 Self::default()
4804 }
4805
4806 unsafe fn decode(
4807 &mut self,
4808 decoder: &mut fidl::encoding::Decoder<'_, D>,
4809 offset: usize,
4810 mut depth: fidl::encoding::Depth,
4811 ) -> fidl::Result<()> {
4812 decoder.debug_check_bounds::<Self>(offset);
4813 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
4814 None => return Err(fidl::Error::NotNullable),
4815 Some(len) => len,
4816 };
4817 if len == 0 {
4819 return Ok(());
4820 };
4821 depth.increment()?;
4822 let envelope_size = 8;
4823 let bytes_len = len * envelope_size;
4824 let offset = decoder.out_of_line_offset(bytes_len)?;
4825 let mut _next_ordinal_to_read = 0;
4827 let mut next_offset = offset;
4828 let end_offset = offset + bytes_len;
4829 _next_ordinal_to_read += 1;
4830 if next_offset >= end_offset {
4831 return Ok(());
4832 }
4833
4834 while _next_ordinal_to_read < 1 {
4836 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4837 _next_ordinal_to_read += 1;
4838 next_offset += envelope_size;
4839 }
4840
4841 let next_out_of_line = decoder.next_out_of_line();
4842 let handles_before = decoder.remaining_handles();
4843 if let Some((inlined, num_bytes, num_handles)) =
4844 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4845 {
4846 let member_inline_size = <fidl_fuchsia_lowpan_common::MacAddress as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4847 if inlined != (member_inline_size <= 4) {
4848 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4849 }
4850 let inner_offset;
4851 let mut inner_depth = depth.clone();
4852 if inlined {
4853 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4854 inner_offset = next_offset;
4855 } else {
4856 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4857 inner_depth.increment()?;
4858 }
4859 let val_ref = self.address.get_or_insert_with(|| {
4860 fidl::new_empty!(fidl_fuchsia_lowpan_common::MacAddress, D)
4861 });
4862 fidl::decode!(
4863 fidl_fuchsia_lowpan_common::MacAddress,
4864 D,
4865 val_ref,
4866 decoder,
4867 inner_offset,
4868 inner_depth
4869 )?;
4870 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4871 {
4872 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4873 }
4874 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4875 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4876 }
4877 }
4878
4879 next_offset += envelope_size;
4880 _next_ordinal_to_read += 1;
4881 if next_offset >= end_offset {
4882 return Ok(());
4883 }
4884
4885 while _next_ordinal_to_read < 2 {
4887 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4888 _next_ordinal_to_read += 1;
4889 next_offset += envelope_size;
4890 }
4891
4892 let next_out_of_line = decoder.next_out_of_line();
4893 let handles_before = decoder.remaining_handles();
4894 if let Some((inlined, num_bytes, num_handles)) =
4895 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4896 {
4897 let member_inline_size = <fidl_fuchsia_lowpan_device_common::Identity as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4898 if inlined != (member_inline_size <= 4) {
4899 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4900 }
4901 let inner_offset;
4902 let mut inner_depth = depth.clone();
4903 if inlined {
4904 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4905 inner_offset = next_offset;
4906 } else {
4907 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4908 inner_depth.increment()?;
4909 }
4910 let val_ref = self.identity.get_or_insert_with(|| {
4911 fidl::new_empty!(fidl_fuchsia_lowpan_device_common::Identity, D)
4912 });
4913 fidl::decode!(
4914 fidl_fuchsia_lowpan_device_common::Identity,
4915 D,
4916 val_ref,
4917 decoder,
4918 inner_offset,
4919 inner_depth
4920 )?;
4921 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4922 {
4923 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4924 }
4925 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4926 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4927 }
4928 }
4929
4930 next_offset += envelope_size;
4931 _next_ordinal_to_read += 1;
4932 if next_offset >= end_offset {
4933 return Ok(());
4934 }
4935
4936 while _next_ordinal_to_read < 3 {
4938 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4939 _next_ordinal_to_read += 1;
4940 next_offset += envelope_size;
4941 }
4942
4943 let next_out_of_line = decoder.next_out_of_line();
4944 let handles_before = decoder.remaining_handles();
4945 if let Some((inlined, num_bytes, num_handles)) =
4946 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4947 {
4948 let member_inline_size =
4949 <i8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4950 if inlined != (member_inline_size <= 4) {
4951 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4952 }
4953 let inner_offset;
4954 let mut inner_depth = depth.clone();
4955 if inlined {
4956 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4957 inner_offset = next_offset;
4958 } else {
4959 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4960 inner_depth.increment()?;
4961 }
4962 let val_ref = self.rssi.get_or_insert_with(|| fidl::new_empty!(i8, D));
4963 fidl::decode!(i8, D, val_ref, decoder, inner_offset, inner_depth)?;
4964 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4965 {
4966 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4967 }
4968 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4969 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4970 }
4971 }
4972
4973 next_offset += envelope_size;
4974 _next_ordinal_to_read += 1;
4975 if next_offset >= end_offset {
4976 return Ok(());
4977 }
4978
4979 while _next_ordinal_to_read < 4 {
4981 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4982 _next_ordinal_to_read += 1;
4983 next_offset += envelope_size;
4984 }
4985
4986 let next_out_of_line = decoder.next_out_of_line();
4987 let handles_before = decoder.remaining_handles();
4988 if let Some((inlined, num_bytes, num_handles)) =
4989 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4990 {
4991 let member_inline_size =
4992 <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4993 if inlined != (member_inline_size <= 4) {
4994 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4995 }
4996 let inner_offset;
4997 let mut inner_depth = depth.clone();
4998 if inlined {
4999 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5000 inner_offset = next_offset;
5001 } else {
5002 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5003 inner_depth.increment()?;
5004 }
5005 let val_ref = self.lqi.get_or_insert_with(|| fidl::new_empty!(u8, D));
5006 fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
5007 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5008 {
5009 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5010 }
5011 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5012 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5013 }
5014 }
5015
5016 next_offset += envelope_size;
5017
5018 while next_offset < end_offset {
5020 _next_ordinal_to_read += 1;
5021 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5022 next_offset += envelope_size;
5023 }
5024
5025 Ok(())
5026 }
5027 }
5028
5029 impl BorderRouterConfig {
5030 #[inline(always)]
5031 fn max_ordinal_present(&self) -> u64 {
5032 if let Some(_) = self.rloc16 {
5033 return 12;
5034 }
5035 if let Some(_) = self.dp {
5036 return 11;
5037 }
5038 if let Some(_) = self.nd_dns {
5039 return 10;
5040 }
5041 if let Some(_) = self.stable {
5042 return 9;
5043 }
5044 if let Some(_) = self.on_mesh {
5045 return 8;
5046 }
5047 if let Some(_) = self.default_route {
5048 return 7;
5049 }
5050 if let Some(_) = self.configure {
5051 return 6;
5052 }
5053 if let Some(_) = self.dhcp {
5054 return 5;
5055 }
5056 if let Some(_) = self.slaac {
5057 return 4;
5058 }
5059 if let Some(_) = self.preferred {
5060 return 3;
5061 }
5062 if let Some(_) = self.preference {
5063 return 2;
5064 }
5065 if let Some(_) = self.prefix {
5066 return 1;
5067 }
5068 0
5069 }
5070 }
5071
5072 impl fidl::encoding::ValueTypeMarker for BorderRouterConfig {
5073 type Borrowed<'a> = &'a Self;
5074 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5075 value
5076 }
5077 }
5078
5079 unsafe impl fidl::encoding::TypeMarker for BorderRouterConfig {
5080 type Owned = Self;
5081
5082 #[inline(always)]
5083 fn inline_align(_context: fidl::encoding::Context) -> usize {
5084 8
5085 }
5086
5087 #[inline(always)]
5088 fn inline_size(_context: fidl::encoding::Context) -> usize {
5089 16
5090 }
5091 }
5092
5093 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<BorderRouterConfig, D>
5094 for &BorderRouterConfig
5095 {
5096 unsafe fn encode(
5097 self,
5098 encoder: &mut fidl::encoding::Encoder<'_, D>,
5099 offset: usize,
5100 mut depth: fidl::encoding::Depth,
5101 ) -> fidl::Result<()> {
5102 encoder.debug_check_bounds::<BorderRouterConfig>(offset);
5103 let max_ordinal: u64 = self.max_ordinal_present();
5105 encoder.write_num(max_ordinal, offset);
5106 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
5107 if max_ordinal == 0 {
5109 return Ok(());
5110 }
5111 depth.increment()?;
5112 let envelope_size = 8;
5113 let bytes_len = max_ordinal as usize * envelope_size;
5114 #[allow(unused_variables)]
5115 let offset = encoder.out_of_line_offset(bytes_len);
5116 let mut _prev_end_offset: usize = 0;
5117 if 1 > max_ordinal {
5118 return Ok(());
5119 }
5120
5121 let cur_offset: usize = (1 - 1) * envelope_size;
5124
5125 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5127
5128 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<64>, D>(
5133 self.prefix.as_ref().map(
5134 <fidl::encoding::BoundedString<64> as fidl::encoding::ValueTypeMarker>::borrow,
5135 ),
5136 encoder,
5137 offset + cur_offset,
5138 depth,
5139 )?;
5140
5141 _prev_end_offset = cur_offset + envelope_size;
5142 if 2 > max_ordinal {
5143 return Ok(());
5144 }
5145
5146 let cur_offset: usize = (2 - 1) * envelope_size;
5149
5150 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5152
5153 fidl::encoding::encode_in_envelope_optional::<i8, D>(
5158 self.preference.as_ref().map(<i8 as fidl::encoding::ValueTypeMarker>::borrow),
5159 encoder,
5160 offset + cur_offset,
5161 depth,
5162 )?;
5163
5164 _prev_end_offset = cur_offset + envelope_size;
5165 if 3 > max_ordinal {
5166 return Ok(());
5167 }
5168
5169 let cur_offset: usize = (3 - 1) * envelope_size;
5172
5173 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5175
5176 fidl::encoding::encode_in_envelope_optional::<bool, D>(
5181 self.preferred.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
5182 encoder,
5183 offset + cur_offset,
5184 depth,
5185 )?;
5186
5187 _prev_end_offset = cur_offset + envelope_size;
5188 if 4 > max_ordinal {
5189 return Ok(());
5190 }
5191
5192 let cur_offset: usize = (4 - 1) * envelope_size;
5195
5196 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5198
5199 fidl::encoding::encode_in_envelope_optional::<bool, D>(
5204 self.slaac.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
5205 encoder,
5206 offset + cur_offset,
5207 depth,
5208 )?;
5209
5210 _prev_end_offset = cur_offset + envelope_size;
5211 if 5 > max_ordinal {
5212 return Ok(());
5213 }
5214
5215 let cur_offset: usize = (5 - 1) * envelope_size;
5218
5219 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5221
5222 fidl::encoding::encode_in_envelope_optional::<bool, D>(
5227 self.dhcp.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
5228 encoder,
5229 offset + cur_offset,
5230 depth,
5231 )?;
5232
5233 _prev_end_offset = cur_offset + envelope_size;
5234 if 6 > max_ordinal {
5235 return Ok(());
5236 }
5237
5238 let cur_offset: usize = (6 - 1) * envelope_size;
5241
5242 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5244
5245 fidl::encoding::encode_in_envelope_optional::<bool, D>(
5250 self.configure.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
5251 encoder,
5252 offset + cur_offset,
5253 depth,
5254 )?;
5255
5256 _prev_end_offset = cur_offset + envelope_size;
5257 if 7 > max_ordinal {
5258 return Ok(());
5259 }
5260
5261 let cur_offset: usize = (7 - 1) * envelope_size;
5264
5265 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5267
5268 fidl::encoding::encode_in_envelope_optional::<bool, D>(
5273 self.default_route.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
5274 encoder,
5275 offset + cur_offset,
5276 depth,
5277 )?;
5278
5279 _prev_end_offset = cur_offset + envelope_size;
5280 if 8 > max_ordinal {
5281 return Ok(());
5282 }
5283
5284 let cur_offset: usize = (8 - 1) * envelope_size;
5287
5288 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5290
5291 fidl::encoding::encode_in_envelope_optional::<bool, D>(
5296 self.on_mesh.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
5297 encoder,
5298 offset + cur_offset,
5299 depth,
5300 )?;
5301
5302 _prev_end_offset = cur_offset + envelope_size;
5303 if 9 > max_ordinal {
5304 return Ok(());
5305 }
5306
5307 let cur_offset: usize = (9 - 1) * envelope_size;
5310
5311 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5313
5314 fidl::encoding::encode_in_envelope_optional::<bool, D>(
5319 self.stable.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
5320 encoder,
5321 offset + cur_offset,
5322 depth,
5323 )?;
5324
5325 _prev_end_offset = cur_offset + envelope_size;
5326 if 10 > max_ordinal {
5327 return Ok(());
5328 }
5329
5330 let cur_offset: usize = (10 - 1) * envelope_size;
5333
5334 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5336
5337 fidl::encoding::encode_in_envelope_optional::<bool, D>(
5342 self.nd_dns.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
5343 encoder,
5344 offset + cur_offset,
5345 depth,
5346 )?;
5347
5348 _prev_end_offset = cur_offset + envelope_size;
5349 if 11 > max_ordinal {
5350 return Ok(());
5351 }
5352
5353 let cur_offset: usize = (11 - 1) * envelope_size;
5356
5357 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5359
5360 fidl::encoding::encode_in_envelope_optional::<bool, D>(
5365 self.dp.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
5366 encoder,
5367 offset + cur_offset,
5368 depth,
5369 )?;
5370
5371 _prev_end_offset = cur_offset + envelope_size;
5372 if 12 > max_ordinal {
5373 return Ok(());
5374 }
5375
5376 let cur_offset: usize = (12 - 1) * envelope_size;
5379
5380 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5382
5383 fidl::encoding::encode_in_envelope_optional::<u16, D>(
5388 self.rloc16.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
5389 encoder,
5390 offset + cur_offset,
5391 depth,
5392 )?;
5393
5394 _prev_end_offset = cur_offset + envelope_size;
5395
5396 Ok(())
5397 }
5398 }
5399
5400 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for BorderRouterConfig {
5401 #[inline(always)]
5402 fn new_empty() -> Self {
5403 Self::default()
5404 }
5405
5406 unsafe fn decode(
5407 &mut self,
5408 decoder: &mut fidl::encoding::Decoder<'_, D>,
5409 offset: usize,
5410 mut depth: fidl::encoding::Depth,
5411 ) -> fidl::Result<()> {
5412 decoder.debug_check_bounds::<Self>(offset);
5413 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
5414 None => return Err(fidl::Error::NotNullable),
5415 Some(len) => len,
5416 };
5417 if len == 0 {
5419 return Ok(());
5420 };
5421 depth.increment()?;
5422 let envelope_size = 8;
5423 let bytes_len = len * envelope_size;
5424 let offset = decoder.out_of_line_offset(bytes_len)?;
5425 let mut _next_ordinal_to_read = 0;
5427 let mut next_offset = offset;
5428 let end_offset = offset + bytes_len;
5429 _next_ordinal_to_read += 1;
5430 if next_offset >= end_offset {
5431 return Ok(());
5432 }
5433
5434 while _next_ordinal_to_read < 1 {
5436 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5437 _next_ordinal_to_read += 1;
5438 next_offset += envelope_size;
5439 }
5440
5441 let next_out_of_line = decoder.next_out_of_line();
5442 let handles_before = decoder.remaining_handles();
5443 if let Some((inlined, num_bytes, num_handles)) =
5444 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5445 {
5446 let member_inline_size =
5447 <fidl::encoding::BoundedString<64> as fidl::encoding::TypeMarker>::inline_size(
5448 decoder.context,
5449 );
5450 if inlined != (member_inline_size <= 4) {
5451 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5452 }
5453 let inner_offset;
5454 let mut inner_depth = depth.clone();
5455 if inlined {
5456 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5457 inner_offset = next_offset;
5458 } else {
5459 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5460 inner_depth.increment()?;
5461 }
5462 let val_ref = self
5463 .prefix
5464 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<64>, D));
5465 fidl::decode!(
5466 fidl::encoding::BoundedString<64>,
5467 D,
5468 val_ref,
5469 decoder,
5470 inner_offset,
5471 inner_depth
5472 )?;
5473 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5474 {
5475 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5476 }
5477 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5478 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5479 }
5480 }
5481
5482 next_offset += envelope_size;
5483 _next_ordinal_to_read += 1;
5484 if next_offset >= end_offset {
5485 return Ok(());
5486 }
5487
5488 while _next_ordinal_to_read < 2 {
5490 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5491 _next_ordinal_to_read += 1;
5492 next_offset += envelope_size;
5493 }
5494
5495 let next_out_of_line = decoder.next_out_of_line();
5496 let handles_before = decoder.remaining_handles();
5497 if let Some((inlined, num_bytes, num_handles)) =
5498 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5499 {
5500 let member_inline_size =
5501 <i8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5502 if inlined != (member_inline_size <= 4) {
5503 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5504 }
5505 let inner_offset;
5506 let mut inner_depth = depth.clone();
5507 if inlined {
5508 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5509 inner_offset = next_offset;
5510 } else {
5511 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5512 inner_depth.increment()?;
5513 }
5514 let val_ref = self.preference.get_or_insert_with(|| fidl::new_empty!(i8, D));
5515 fidl::decode!(i8, D, val_ref, decoder, inner_offset, inner_depth)?;
5516 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5517 {
5518 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5519 }
5520 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5521 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5522 }
5523 }
5524
5525 next_offset += envelope_size;
5526 _next_ordinal_to_read += 1;
5527 if next_offset >= end_offset {
5528 return Ok(());
5529 }
5530
5531 while _next_ordinal_to_read < 3 {
5533 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5534 _next_ordinal_to_read += 1;
5535 next_offset += envelope_size;
5536 }
5537
5538 let next_out_of_line = decoder.next_out_of_line();
5539 let handles_before = decoder.remaining_handles();
5540 if let Some((inlined, num_bytes, num_handles)) =
5541 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5542 {
5543 let member_inline_size =
5544 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5545 if inlined != (member_inline_size <= 4) {
5546 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5547 }
5548 let inner_offset;
5549 let mut inner_depth = depth.clone();
5550 if inlined {
5551 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5552 inner_offset = next_offset;
5553 } else {
5554 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5555 inner_depth.increment()?;
5556 }
5557 let val_ref = self.preferred.get_or_insert_with(|| fidl::new_empty!(bool, D));
5558 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
5559 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5560 {
5561 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5562 }
5563 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5564 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5565 }
5566 }
5567
5568 next_offset += envelope_size;
5569 _next_ordinal_to_read += 1;
5570 if next_offset >= end_offset {
5571 return Ok(());
5572 }
5573
5574 while _next_ordinal_to_read < 4 {
5576 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5577 _next_ordinal_to_read += 1;
5578 next_offset += envelope_size;
5579 }
5580
5581 let next_out_of_line = decoder.next_out_of_line();
5582 let handles_before = decoder.remaining_handles();
5583 if let Some((inlined, num_bytes, num_handles)) =
5584 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5585 {
5586 let member_inline_size =
5587 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5588 if inlined != (member_inline_size <= 4) {
5589 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5590 }
5591 let inner_offset;
5592 let mut inner_depth = depth.clone();
5593 if inlined {
5594 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5595 inner_offset = next_offset;
5596 } else {
5597 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5598 inner_depth.increment()?;
5599 }
5600 let val_ref = self.slaac.get_or_insert_with(|| fidl::new_empty!(bool, D));
5601 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
5602 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5603 {
5604 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5605 }
5606 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5607 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5608 }
5609 }
5610
5611 next_offset += envelope_size;
5612 _next_ordinal_to_read += 1;
5613 if next_offset >= end_offset {
5614 return Ok(());
5615 }
5616
5617 while _next_ordinal_to_read < 5 {
5619 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5620 _next_ordinal_to_read += 1;
5621 next_offset += envelope_size;
5622 }
5623
5624 let next_out_of_line = decoder.next_out_of_line();
5625 let handles_before = decoder.remaining_handles();
5626 if let Some((inlined, num_bytes, num_handles)) =
5627 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5628 {
5629 let member_inline_size =
5630 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5631 if inlined != (member_inline_size <= 4) {
5632 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5633 }
5634 let inner_offset;
5635 let mut inner_depth = depth.clone();
5636 if inlined {
5637 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5638 inner_offset = next_offset;
5639 } else {
5640 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5641 inner_depth.increment()?;
5642 }
5643 let val_ref = self.dhcp.get_or_insert_with(|| fidl::new_empty!(bool, D));
5644 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
5645 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5646 {
5647 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5648 }
5649 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5650 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5651 }
5652 }
5653
5654 next_offset += envelope_size;
5655 _next_ordinal_to_read += 1;
5656 if next_offset >= end_offset {
5657 return Ok(());
5658 }
5659
5660 while _next_ordinal_to_read < 6 {
5662 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5663 _next_ordinal_to_read += 1;
5664 next_offset += envelope_size;
5665 }
5666
5667 let next_out_of_line = decoder.next_out_of_line();
5668 let handles_before = decoder.remaining_handles();
5669 if let Some((inlined, num_bytes, num_handles)) =
5670 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5671 {
5672 let member_inline_size =
5673 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5674 if inlined != (member_inline_size <= 4) {
5675 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5676 }
5677 let inner_offset;
5678 let mut inner_depth = depth.clone();
5679 if inlined {
5680 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5681 inner_offset = next_offset;
5682 } else {
5683 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5684 inner_depth.increment()?;
5685 }
5686 let val_ref = self.configure.get_or_insert_with(|| fidl::new_empty!(bool, D));
5687 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
5688 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5689 {
5690 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5691 }
5692 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5693 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5694 }
5695 }
5696
5697 next_offset += envelope_size;
5698 _next_ordinal_to_read += 1;
5699 if next_offset >= end_offset {
5700 return Ok(());
5701 }
5702
5703 while _next_ordinal_to_read < 7 {
5705 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5706 _next_ordinal_to_read += 1;
5707 next_offset += envelope_size;
5708 }
5709
5710 let next_out_of_line = decoder.next_out_of_line();
5711 let handles_before = decoder.remaining_handles();
5712 if let Some((inlined, num_bytes, num_handles)) =
5713 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5714 {
5715 let member_inline_size =
5716 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5717 if inlined != (member_inline_size <= 4) {
5718 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5719 }
5720 let inner_offset;
5721 let mut inner_depth = depth.clone();
5722 if inlined {
5723 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5724 inner_offset = next_offset;
5725 } else {
5726 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5727 inner_depth.increment()?;
5728 }
5729 let val_ref = self.default_route.get_or_insert_with(|| fidl::new_empty!(bool, D));
5730 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
5731 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5732 {
5733 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5734 }
5735 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5736 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5737 }
5738 }
5739
5740 next_offset += envelope_size;
5741 _next_ordinal_to_read += 1;
5742 if next_offset >= end_offset {
5743 return Ok(());
5744 }
5745
5746 while _next_ordinal_to_read < 8 {
5748 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5749 _next_ordinal_to_read += 1;
5750 next_offset += envelope_size;
5751 }
5752
5753 let next_out_of_line = decoder.next_out_of_line();
5754 let handles_before = decoder.remaining_handles();
5755 if let Some((inlined, num_bytes, num_handles)) =
5756 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5757 {
5758 let member_inline_size =
5759 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5760 if inlined != (member_inline_size <= 4) {
5761 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5762 }
5763 let inner_offset;
5764 let mut inner_depth = depth.clone();
5765 if inlined {
5766 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5767 inner_offset = next_offset;
5768 } else {
5769 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5770 inner_depth.increment()?;
5771 }
5772 let val_ref = self.on_mesh.get_or_insert_with(|| fidl::new_empty!(bool, D));
5773 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
5774 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5775 {
5776 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5777 }
5778 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5779 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5780 }
5781 }
5782
5783 next_offset += envelope_size;
5784 _next_ordinal_to_read += 1;
5785 if next_offset >= end_offset {
5786 return Ok(());
5787 }
5788
5789 while _next_ordinal_to_read < 9 {
5791 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5792 _next_ordinal_to_read += 1;
5793 next_offset += envelope_size;
5794 }
5795
5796 let next_out_of_line = decoder.next_out_of_line();
5797 let handles_before = decoder.remaining_handles();
5798 if let Some((inlined, num_bytes, num_handles)) =
5799 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5800 {
5801 let member_inline_size =
5802 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5803 if inlined != (member_inline_size <= 4) {
5804 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5805 }
5806 let inner_offset;
5807 let mut inner_depth = depth.clone();
5808 if inlined {
5809 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5810 inner_offset = next_offset;
5811 } else {
5812 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5813 inner_depth.increment()?;
5814 }
5815 let val_ref = self.stable.get_or_insert_with(|| fidl::new_empty!(bool, D));
5816 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
5817 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5818 {
5819 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5820 }
5821 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5822 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5823 }
5824 }
5825
5826 next_offset += envelope_size;
5827 _next_ordinal_to_read += 1;
5828 if next_offset >= end_offset {
5829 return Ok(());
5830 }
5831
5832 while _next_ordinal_to_read < 10 {
5834 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5835 _next_ordinal_to_read += 1;
5836 next_offset += envelope_size;
5837 }
5838
5839 let next_out_of_line = decoder.next_out_of_line();
5840 let handles_before = decoder.remaining_handles();
5841 if let Some((inlined, num_bytes, num_handles)) =
5842 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5843 {
5844 let member_inline_size =
5845 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5846 if inlined != (member_inline_size <= 4) {
5847 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5848 }
5849 let inner_offset;
5850 let mut inner_depth = depth.clone();
5851 if inlined {
5852 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5853 inner_offset = next_offset;
5854 } else {
5855 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5856 inner_depth.increment()?;
5857 }
5858 let val_ref = self.nd_dns.get_or_insert_with(|| fidl::new_empty!(bool, D));
5859 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
5860 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5861 {
5862 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5863 }
5864 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5865 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5866 }
5867 }
5868
5869 next_offset += envelope_size;
5870 _next_ordinal_to_read += 1;
5871 if next_offset >= end_offset {
5872 return Ok(());
5873 }
5874
5875 while _next_ordinal_to_read < 11 {
5877 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5878 _next_ordinal_to_read += 1;
5879 next_offset += envelope_size;
5880 }
5881
5882 let next_out_of_line = decoder.next_out_of_line();
5883 let handles_before = decoder.remaining_handles();
5884 if let Some((inlined, num_bytes, num_handles)) =
5885 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5886 {
5887 let member_inline_size =
5888 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5889 if inlined != (member_inline_size <= 4) {
5890 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5891 }
5892 let inner_offset;
5893 let mut inner_depth = depth.clone();
5894 if inlined {
5895 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5896 inner_offset = next_offset;
5897 } else {
5898 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5899 inner_depth.increment()?;
5900 }
5901 let val_ref = self.dp.get_or_insert_with(|| fidl::new_empty!(bool, D));
5902 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
5903 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5904 {
5905 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5906 }
5907 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5908 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5909 }
5910 }
5911
5912 next_offset += envelope_size;
5913 _next_ordinal_to_read += 1;
5914 if next_offset >= end_offset {
5915 return Ok(());
5916 }
5917
5918 while _next_ordinal_to_read < 12 {
5920 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5921 _next_ordinal_to_read += 1;
5922 next_offset += envelope_size;
5923 }
5924
5925 let next_out_of_line = decoder.next_out_of_line();
5926 let handles_before = decoder.remaining_handles();
5927 if let Some((inlined, num_bytes, num_handles)) =
5928 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5929 {
5930 let member_inline_size =
5931 <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5932 if inlined != (member_inline_size <= 4) {
5933 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5934 }
5935 let inner_offset;
5936 let mut inner_depth = depth.clone();
5937 if inlined {
5938 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5939 inner_offset = next_offset;
5940 } else {
5941 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5942 inner_depth.increment()?;
5943 }
5944 let val_ref = self.rloc16.get_or_insert_with(|| fidl::new_empty!(u16, D));
5945 fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
5946 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5947 {
5948 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5949 }
5950 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5951 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5952 }
5953 }
5954
5955 next_offset += envelope_size;
5956
5957 while next_offset < end_offset {
5959 _next_ordinal_to_read += 1;
5960 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5961 next_offset += envelope_size;
5962 }
5963
5964 Ok(())
5965 }
5966 }
5967
5968 impl BorderRoutingCounters {
5969 #[inline(always)]
5970 fn max_ordinal_present(&self) -> u64 {
5971 if let Some(_) = self.outbound_internet_bytes {
5972 return 18;
5973 }
5974 if let Some(_) = self.outbound_internet_packets {
5975 return 17;
5976 }
5977 if let Some(_) = self.inbound_internet_bytes {
5978 return 16;
5979 }
5980 if let Some(_) = self.inbound_internet_packets {
5981 return 15;
5982 }
5983 if let Some(_) = self.rs_tx_failure {
5984 return 14;
5985 }
5986 if let Some(_) = self.rs_tx_success {
5987 return 13;
5988 }
5989 if let Some(_) = self.rs_rx {
5990 return 12;
5991 }
5992 if let Some(_) = self.ra_tx_failure {
5993 return 11;
5994 }
5995 if let Some(_) = self.ra_tx_success {
5996 return 10;
5997 }
5998 if let Some(_) = self.ra_rx {
5999 return 9;
6000 }
6001 if let Some(_) = self.outbound_multicast_bytes {
6002 return 8;
6003 }
6004 if let Some(_) = self.outbound_multicast_packets {
6005 return 7;
6006 }
6007 if let Some(_) = self.outbound_unicast_bytes {
6008 return 6;
6009 }
6010 if let Some(_) = self.outbound_unicast_packets {
6011 return 5;
6012 }
6013 if let Some(_) = self.inbound_multicast_bytes {
6014 return 4;
6015 }
6016 if let Some(_) = self.inbound_multicast_packets {
6017 return 3;
6018 }
6019 if let Some(_) = self.inbound_unicast_bytes {
6020 return 2;
6021 }
6022 if let Some(_) = self.inbound_unicast_packets {
6023 return 1;
6024 }
6025 0
6026 }
6027 }
6028
6029 impl fidl::encoding::ValueTypeMarker for BorderRoutingCounters {
6030 type Borrowed<'a> = &'a Self;
6031 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6032 value
6033 }
6034 }
6035
6036 unsafe impl fidl::encoding::TypeMarker for BorderRoutingCounters {
6037 type Owned = Self;
6038
6039 #[inline(always)]
6040 fn inline_align(_context: fidl::encoding::Context) -> usize {
6041 8
6042 }
6043
6044 #[inline(always)]
6045 fn inline_size(_context: fidl::encoding::Context) -> usize {
6046 16
6047 }
6048 }
6049
6050 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<BorderRoutingCounters, D>
6051 for &BorderRoutingCounters
6052 {
6053 unsafe fn encode(
6054 self,
6055 encoder: &mut fidl::encoding::Encoder<'_, D>,
6056 offset: usize,
6057 mut depth: fidl::encoding::Depth,
6058 ) -> fidl::Result<()> {
6059 encoder.debug_check_bounds::<BorderRoutingCounters>(offset);
6060 let max_ordinal: u64 = self.max_ordinal_present();
6062 encoder.write_num(max_ordinal, offset);
6063 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
6064 if max_ordinal == 0 {
6066 return Ok(());
6067 }
6068 depth.increment()?;
6069 let envelope_size = 8;
6070 let bytes_len = max_ordinal as usize * envelope_size;
6071 #[allow(unused_variables)]
6072 let offset = encoder.out_of_line_offset(bytes_len);
6073 let mut _prev_end_offset: usize = 0;
6074 if 1 > max_ordinal {
6075 return Ok(());
6076 }
6077
6078 let cur_offset: usize = (1 - 1) * envelope_size;
6081
6082 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6084
6085 fidl::encoding::encode_in_envelope_optional::<u64, D>(
6090 self.inbound_unicast_packets
6091 .as_ref()
6092 .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
6093 encoder,
6094 offset + cur_offset,
6095 depth,
6096 )?;
6097
6098 _prev_end_offset = cur_offset + envelope_size;
6099 if 2 > max_ordinal {
6100 return Ok(());
6101 }
6102
6103 let cur_offset: usize = (2 - 1) * envelope_size;
6106
6107 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6109
6110 fidl::encoding::encode_in_envelope_optional::<u64, D>(
6115 self.inbound_unicast_bytes
6116 .as_ref()
6117 .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
6118 encoder,
6119 offset + cur_offset,
6120 depth,
6121 )?;
6122
6123 _prev_end_offset = cur_offset + envelope_size;
6124 if 3 > max_ordinal {
6125 return Ok(());
6126 }
6127
6128 let cur_offset: usize = (3 - 1) * envelope_size;
6131
6132 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6134
6135 fidl::encoding::encode_in_envelope_optional::<u64, D>(
6140 self.inbound_multicast_packets
6141 .as_ref()
6142 .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
6143 encoder,
6144 offset + cur_offset,
6145 depth,
6146 )?;
6147
6148 _prev_end_offset = cur_offset + envelope_size;
6149 if 4 > max_ordinal {
6150 return Ok(());
6151 }
6152
6153 let cur_offset: usize = (4 - 1) * envelope_size;
6156
6157 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6159
6160 fidl::encoding::encode_in_envelope_optional::<u64, D>(
6165 self.inbound_multicast_bytes
6166 .as_ref()
6167 .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
6168 encoder,
6169 offset + cur_offset,
6170 depth,
6171 )?;
6172
6173 _prev_end_offset = cur_offset + envelope_size;
6174 if 5 > max_ordinal {
6175 return Ok(());
6176 }
6177
6178 let cur_offset: usize = (5 - 1) * envelope_size;
6181
6182 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6184
6185 fidl::encoding::encode_in_envelope_optional::<u64, D>(
6190 self.outbound_unicast_packets
6191 .as_ref()
6192 .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
6193 encoder,
6194 offset + cur_offset,
6195 depth,
6196 )?;
6197
6198 _prev_end_offset = cur_offset + envelope_size;
6199 if 6 > max_ordinal {
6200 return Ok(());
6201 }
6202
6203 let cur_offset: usize = (6 - 1) * envelope_size;
6206
6207 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6209
6210 fidl::encoding::encode_in_envelope_optional::<u64, D>(
6215 self.outbound_unicast_bytes
6216 .as_ref()
6217 .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
6218 encoder,
6219 offset + cur_offset,
6220 depth,
6221 )?;
6222
6223 _prev_end_offset = cur_offset + envelope_size;
6224 if 7 > max_ordinal {
6225 return Ok(());
6226 }
6227
6228 let cur_offset: usize = (7 - 1) * envelope_size;
6231
6232 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6234
6235 fidl::encoding::encode_in_envelope_optional::<u64, D>(
6240 self.outbound_multicast_packets
6241 .as_ref()
6242 .map(<u64 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 8 > max_ordinal {
6250 return Ok(());
6251 }
6252
6253 let cur_offset: usize = (8 - 1) * envelope_size;
6256
6257 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6259
6260 fidl::encoding::encode_in_envelope_optional::<u64, D>(
6265 self.outbound_multicast_bytes
6266 .as_ref()
6267 .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
6268 encoder,
6269 offset + cur_offset,
6270 depth,
6271 )?;
6272
6273 _prev_end_offset = cur_offset + envelope_size;
6274 if 9 > max_ordinal {
6275 return Ok(());
6276 }
6277
6278 let cur_offset: usize = (9 - 1) * envelope_size;
6281
6282 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6284
6285 fidl::encoding::encode_in_envelope_optional::<u32, D>(
6290 self.ra_rx.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
6291 encoder,
6292 offset + cur_offset,
6293 depth,
6294 )?;
6295
6296 _prev_end_offset = cur_offset + envelope_size;
6297 if 10 > max_ordinal {
6298 return Ok(());
6299 }
6300
6301 let cur_offset: usize = (10 - 1) * envelope_size;
6304
6305 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6307
6308 fidl::encoding::encode_in_envelope_optional::<u32, D>(
6313 self.ra_tx_success.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
6314 encoder,
6315 offset + cur_offset,
6316 depth,
6317 )?;
6318
6319 _prev_end_offset = cur_offset + envelope_size;
6320 if 11 > max_ordinal {
6321 return Ok(());
6322 }
6323
6324 let cur_offset: usize = (11 - 1) * envelope_size;
6327
6328 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6330
6331 fidl::encoding::encode_in_envelope_optional::<u32, D>(
6336 self.ra_tx_failure.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
6337 encoder,
6338 offset + cur_offset,
6339 depth,
6340 )?;
6341
6342 _prev_end_offset = cur_offset + envelope_size;
6343 if 12 > max_ordinal {
6344 return Ok(());
6345 }
6346
6347 let cur_offset: usize = (12 - 1) * envelope_size;
6350
6351 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6353
6354 fidl::encoding::encode_in_envelope_optional::<u32, D>(
6359 self.rs_rx.as_ref().map(<u32 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 13 > max_ordinal {
6367 return Ok(());
6368 }
6369
6370 let cur_offset: usize = (13 - 1) * envelope_size;
6373
6374 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6376
6377 fidl::encoding::encode_in_envelope_optional::<u32, D>(
6382 self.rs_tx_success.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
6383 encoder,
6384 offset + cur_offset,
6385 depth,
6386 )?;
6387
6388 _prev_end_offset = cur_offset + envelope_size;
6389 if 14 > max_ordinal {
6390 return Ok(());
6391 }
6392
6393 let cur_offset: usize = (14 - 1) * envelope_size;
6396
6397 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6399
6400 fidl::encoding::encode_in_envelope_optional::<u32, D>(
6405 self.rs_tx_failure.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
6406 encoder,
6407 offset + cur_offset,
6408 depth,
6409 )?;
6410
6411 _prev_end_offset = cur_offset + envelope_size;
6412 if 15 > max_ordinal {
6413 return Ok(());
6414 }
6415
6416 let cur_offset: usize = (15 - 1) * envelope_size;
6419
6420 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6422
6423 fidl::encoding::encode_in_envelope_optional::<u64, D>(
6428 self.inbound_internet_packets
6429 .as_ref()
6430 .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
6431 encoder,
6432 offset + cur_offset,
6433 depth,
6434 )?;
6435
6436 _prev_end_offset = cur_offset + envelope_size;
6437 if 16 > max_ordinal {
6438 return Ok(());
6439 }
6440
6441 let cur_offset: usize = (16 - 1) * envelope_size;
6444
6445 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6447
6448 fidl::encoding::encode_in_envelope_optional::<u64, D>(
6453 self.inbound_internet_bytes
6454 .as_ref()
6455 .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
6456 encoder,
6457 offset + cur_offset,
6458 depth,
6459 )?;
6460
6461 _prev_end_offset = cur_offset + envelope_size;
6462 if 17 > max_ordinal {
6463 return Ok(());
6464 }
6465
6466 let cur_offset: usize = (17 - 1) * envelope_size;
6469
6470 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6472
6473 fidl::encoding::encode_in_envelope_optional::<u64, D>(
6478 self.outbound_internet_packets
6479 .as_ref()
6480 .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
6481 encoder,
6482 offset + cur_offset,
6483 depth,
6484 )?;
6485
6486 _prev_end_offset = cur_offset + envelope_size;
6487 if 18 > max_ordinal {
6488 return Ok(());
6489 }
6490
6491 let cur_offset: usize = (18 - 1) * envelope_size;
6494
6495 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6497
6498 fidl::encoding::encode_in_envelope_optional::<u64, D>(
6503 self.outbound_internet_bytes
6504 .as_ref()
6505 .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
6506 encoder,
6507 offset + cur_offset,
6508 depth,
6509 )?;
6510
6511 _prev_end_offset = cur_offset + envelope_size;
6512
6513 Ok(())
6514 }
6515 }
6516
6517 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for BorderRoutingCounters {
6518 #[inline(always)]
6519 fn new_empty() -> Self {
6520 Self::default()
6521 }
6522
6523 unsafe fn decode(
6524 &mut self,
6525 decoder: &mut fidl::encoding::Decoder<'_, D>,
6526 offset: usize,
6527 mut depth: fidl::encoding::Depth,
6528 ) -> fidl::Result<()> {
6529 decoder.debug_check_bounds::<Self>(offset);
6530 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
6531 None => return Err(fidl::Error::NotNullable),
6532 Some(len) => len,
6533 };
6534 if len == 0 {
6536 return Ok(());
6537 };
6538 depth.increment()?;
6539 let envelope_size = 8;
6540 let bytes_len = len * envelope_size;
6541 let offset = decoder.out_of_line_offset(bytes_len)?;
6542 let mut _next_ordinal_to_read = 0;
6544 let mut next_offset = offset;
6545 let end_offset = offset + bytes_len;
6546 _next_ordinal_to_read += 1;
6547 if next_offset >= end_offset {
6548 return Ok(());
6549 }
6550
6551 while _next_ordinal_to_read < 1 {
6553 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6554 _next_ordinal_to_read += 1;
6555 next_offset += envelope_size;
6556 }
6557
6558 let next_out_of_line = decoder.next_out_of_line();
6559 let handles_before = decoder.remaining_handles();
6560 if let Some((inlined, num_bytes, num_handles)) =
6561 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6562 {
6563 let member_inline_size =
6564 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6565 if inlined != (member_inline_size <= 4) {
6566 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6567 }
6568 let inner_offset;
6569 let mut inner_depth = depth.clone();
6570 if inlined {
6571 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6572 inner_offset = next_offset;
6573 } else {
6574 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6575 inner_depth.increment()?;
6576 }
6577 let val_ref =
6578 self.inbound_unicast_packets.get_or_insert_with(|| fidl::new_empty!(u64, D));
6579 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
6580 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6581 {
6582 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6583 }
6584 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6585 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6586 }
6587 }
6588
6589 next_offset += envelope_size;
6590 _next_ordinal_to_read += 1;
6591 if next_offset >= end_offset {
6592 return Ok(());
6593 }
6594
6595 while _next_ordinal_to_read < 2 {
6597 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6598 _next_ordinal_to_read += 1;
6599 next_offset += envelope_size;
6600 }
6601
6602 let next_out_of_line = decoder.next_out_of_line();
6603 let handles_before = decoder.remaining_handles();
6604 if let Some((inlined, num_bytes, num_handles)) =
6605 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6606 {
6607 let member_inline_size =
6608 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6609 if inlined != (member_inline_size <= 4) {
6610 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6611 }
6612 let inner_offset;
6613 let mut inner_depth = depth.clone();
6614 if inlined {
6615 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6616 inner_offset = next_offset;
6617 } else {
6618 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6619 inner_depth.increment()?;
6620 }
6621 let val_ref =
6622 self.inbound_unicast_bytes.get_or_insert_with(|| fidl::new_empty!(u64, D));
6623 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
6624 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6625 {
6626 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6627 }
6628 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6629 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6630 }
6631 }
6632
6633 next_offset += envelope_size;
6634 _next_ordinal_to_read += 1;
6635 if next_offset >= end_offset {
6636 return Ok(());
6637 }
6638
6639 while _next_ordinal_to_read < 3 {
6641 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6642 _next_ordinal_to_read += 1;
6643 next_offset += envelope_size;
6644 }
6645
6646 let next_out_of_line = decoder.next_out_of_line();
6647 let handles_before = decoder.remaining_handles();
6648 if let Some((inlined, num_bytes, num_handles)) =
6649 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6650 {
6651 let member_inline_size =
6652 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6653 if inlined != (member_inline_size <= 4) {
6654 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6655 }
6656 let inner_offset;
6657 let mut inner_depth = depth.clone();
6658 if inlined {
6659 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6660 inner_offset = next_offset;
6661 } else {
6662 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6663 inner_depth.increment()?;
6664 }
6665 let val_ref =
6666 self.inbound_multicast_packets.get_or_insert_with(|| fidl::new_empty!(u64, D));
6667 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
6668 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6669 {
6670 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6671 }
6672 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6673 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6674 }
6675 }
6676
6677 next_offset += envelope_size;
6678 _next_ordinal_to_read += 1;
6679 if next_offset >= end_offset {
6680 return Ok(());
6681 }
6682
6683 while _next_ordinal_to_read < 4 {
6685 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6686 _next_ordinal_to_read += 1;
6687 next_offset += envelope_size;
6688 }
6689
6690 let next_out_of_line = decoder.next_out_of_line();
6691 let handles_before = decoder.remaining_handles();
6692 if let Some((inlined, num_bytes, num_handles)) =
6693 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6694 {
6695 let member_inline_size =
6696 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6697 if inlined != (member_inline_size <= 4) {
6698 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6699 }
6700 let inner_offset;
6701 let mut inner_depth = depth.clone();
6702 if inlined {
6703 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6704 inner_offset = next_offset;
6705 } else {
6706 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6707 inner_depth.increment()?;
6708 }
6709 let val_ref =
6710 self.inbound_multicast_bytes.get_or_insert_with(|| fidl::new_empty!(u64, D));
6711 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
6712 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6713 {
6714 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6715 }
6716 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6717 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6718 }
6719 }
6720
6721 next_offset += envelope_size;
6722 _next_ordinal_to_read += 1;
6723 if next_offset >= end_offset {
6724 return Ok(());
6725 }
6726
6727 while _next_ordinal_to_read < 5 {
6729 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6730 _next_ordinal_to_read += 1;
6731 next_offset += envelope_size;
6732 }
6733
6734 let next_out_of_line = decoder.next_out_of_line();
6735 let handles_before = decoder.remaining_handles();
6736 if let Some((inlined, num_bytes, num_handles)) =
6737 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6738 {
6739 let member_inline_size =
6740 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6741 if inlined != (member_inline_size <= 4) {
6742 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6743 }
6744 let inner_offset;
6745 let mut inner_depth = depth.clone();
6746 if inlined {
6747 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6748 inner_offset = next_offset;
6749 } else {
6750 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6751 inner_depth.increment()?;
6752 }
6753 let val_ref =
6754 self.outbound_unicast_packets.get_or_insert_with(|| fidl::new_empty!(u64, D));
6755 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
6756 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6757 {
6758 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6759 }
6760 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6761 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6762 }
6763 }
6764
6765 next_offset += envelope_size;
6766 _next_ordinal_to_read += 1;
6767 if next_offset >= end_offset {
6768 return Ok(());
6769 }
6770
6771 while _next_ordinal_to_read < 6 {
6773 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6774 _next_ordinal_to_read += 1;
6775 next_offset += envelope_size;
6776 }
6777
6778 let next_out_of_line = decoder.next_out_of_line();
6779 let handles_before = decoder.remaining_handles();
6780 if let Some((inlined, num_bytes, num_handles)) =
6781 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6782 {
6783 let member_inline_size =
6784 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6785 if inlined != (member_inline_size <= 4) {
6786 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6787 }
6788 let inner_offset;
6789 let mut inner_depth = depth.clone();
6790 if inlined {
6791 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6792 inner_offset = next_offset;
6793 } else {
6794 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6795 inner_depth.increment()?;
6796 }
6797 let val_ref =
6798 self.outbound_unicast_bytes.get_or_insert_with(|| fidl::new_empty!(u64, D));
6799 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
6800 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6801 {
6802 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6803 }
6804 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6805 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6806 }
6807 }
6808
6809 next_offset += envelope_size;
6810 _next_ordinal_to_read += 1;
6811 if next_offset >= end_offset {
6812 return Ok(());
6813 }
6814
6815 while _next_ordinal_to_read < 7 {
6817 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6818 _next_ordinal_to_read += 1;
6819 next_offset += envelope_size;
6820 }
6821
6822 let next_out_of_line = decoder.next_out_of_line();
6823 let handles_before = decoder.remaining_handles();
6824 if let Some((inlined, num_bytes, num_handles)) =
6825 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6826 {
6827 let member_inline_size =
6828 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6829 if inlined != (member_inline_size <= 4) {
6830 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6831 }
6832 let inner_offset;
6833 let mut inner_depth = depth.clone();
6834 if inlined {
6835 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6836 inner_offset = next_offset;
6837 } else {
6838 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6839 inner_depth.increment()?;
6840 }
6841 let val_ref =
6842 self.outbound_multicast_packets.get_or_insert_with(|| fidl::new_empty!(u64, D));
6843 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
6844 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6845 {
6846 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6847 }
6848 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6849 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6850 }
6851 }
6852
6853 next_offset += envelope_size;
6854 _next_ordinal_to_read += 1;
6855 if next_offset >= end_offset {
6856 return Ok(());
6857 }
6858
6859 while _next_ordinal_to_read < 8 {
6861 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6862 _next_ordinal_to_read += 1;
6863 next_offset += envelope_size;
6864 }
6865
6866 let next_out_of_line = decoder.next_out_of_line();
6867 let handles_before = decoder.remaining_handles();
6868 if let Some((inlined, num_bytes, num_handles)) =
6869 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6870 {
6871 let member_inline_size =
6872 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6873 if inlined != (member_inline_size <= 4) {
6874 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6875 }
6876 let inner_offset;
6877 let mut inner_depth = depth.clone();
6878 if inlined {
6879 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6880 inner_offset = next_offset;
6881 } else {
6882 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6883 inner_depth.increment()?;
6884 }
6885 let val_ref =
6886 self.outbound_multicast_bytes.get_or_insert_with(|| fidl::new_empty!(u64, D));
6887 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
6888 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6889 {
6890 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6891 }
6892 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6893 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6894 }
6895 }
6896
6897 next_offset += envelope_size;
6898 _next_ordinal_to_read += 1;
6899 if next_offset >= end_offset {
6900 return Ok(());
6901 }
6902
6903 while _next_ordinal_to_read < 9 {
6905 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6906 _next_ordinal_to_read += 1;
6907 next_offset += envelope_size;
6908 }
6909
6910 let next_out_of_line = decoder.next_out_of_line();
6911 let handles_before = decoder.remaining_handles();
6912 if let Some((inlined, num_bytes, num_handles)) =
6913 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6914 {
6915 let member_inline_size =
6916 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6917 if inlined != (member_inline_size <= 4) {
6918 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6919 }
6920 let inner_offset;
6921 let mut inner_depth = depth.clone();
6922 if inlined {
6923 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6924 inner_offset = next_offset;
6925 } else {
6926 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6927 inner_depth.increment()?;
6928 }
6929 let val_ref = self.ra_rx.get_or_insert_with(|| fidl::new_empty!(u32, D));
6930 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
6931 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6932 {
6933 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6934 }
6935 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6936 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6937 }
6938 }
6939
6940 next_offset += envelope_size;
6941 _next_ordinal_to_read += 1;
6942 if next_offset >= end_offset {
6943 return Ok(());
6944 }
6945
6946 while _next_ordinal_to_read < 10 {
6948 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6949 _next_ordinal_to_read += 1;
6950 next_offset += envelope_size;
6951 }
6952
6953 let next_out_of_line = decoder.next_out_of_line();
6954 let handles_before = decoder.remaining_handles();
6955 if let Some((inlined, num_bytes, num_handles)) =
6956 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6957 {
6958 let member_inline_size =
6959 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6960 if inlined != (member_inline_size <= 4) {
6961 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6962 }
6963 let inner_offset;
6964 let mut inner_depth = depth.clone();
6965 if inlined {
6966 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6967 inner_offset = next_offset;
6968 } else {
6969 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6970 inner_depth.increment()?;
6971 }
6972 let val_ref = self.ra_tx_success.get_or_insert_with(|| fidl::new_empty!(u32, D));
6973 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
6974 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6975 {
6976 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6977 }
6978 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6979 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6980 }
6981 }
6982
6983 next_offset += envelope_size;
6984 _next_ordinal_to_read += 1;
6985 if next_offset >= end_offset {
6986 return Ok(());
6987 }
6988
6989 while _next_ordinal_to_read < 11 {
6991 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6992 _next_ordinal_to_read += 1;
6993 next_offset += envelope_size;
6994 }
6995
6996 let next_out_of_line = decoder.next_out_of_line();
6997 let handles_before = decoder.remaining_handles();
6998 if let Some((inlined, num_bytes, num_handles)) =
6999 fidl::encoding::decode_envelope_header(decoder, next_offset)?
7000 {
7001 let member_inline_size =
7002 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7003 if inlined != (member_inline_size <= 4) {
7004 return Err(fidl::Error::InvalidInlineBitInEnvelope);
7005 }
7006 let inner_offset;
7007 let mut inner_depth = depth.clone();
7008 if inlined {
7009 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7010 inner_offset = next_offset;
7011 } else {
7012 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7013 inner_depth.increment()?;
7014 }
7015 let val_ref = self.ra_tx_failure.get_or_insert_with(|| fidl::new_empty!(u32, D));
7016 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
7017 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7018 {
7019 return Err(fidl::Error::InvalidNumBytesInEnvelope);
7020 }
7021 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7022 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7023 }
7024 }
7025
7026 next_offset += envelope_size;
7027 _next_ordinal_to_read += 1;
7028 if next_offset >= end_offset {
7029 return Ok(());
7030 }
7031
7032 while _next_ordinal_to_read < 12 {
7034 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7035 _next_ordinal_to_read += 1;
7036 next_offset += envelope_size;
7037 }
7038
7039 let next_out_of_line = decoder.next_out_of_line();
7040 let handles_before = decoder.remaining_handles();
7041 if let Some((inlined, num_bytes, num_handles)) =
7042 fidl::encoding::decode_envelope_header(decoder, next_offset)?
7043 {
7044 let member_inline_size =
7045 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7046 if inlined != (member_inline_size <= 4) {
7047 return Err(fidl::Error::InvalidInlineBitInEnvelope);
7048 }
7049 let inner_offset;
7050 let mut inner_depth = depth.clone();
7051 if inlined {
7052 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7053 inner_offset = next_offset;
7054 } else {
7055 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7056 inner_depth.increment()?;
7057 }
7058 let val_ref = self.rs_rx.get_or_insert_with(|| fidl::new_empty!(u32, D));
7059 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
7060 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7061 {
7062 return Err(fidl::Error::InvalidNumBytesInEnvelope);
7063 }
7064 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7065 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7066 }
7067 }
7068
7069 next_offset += envelope_size;
7070 _next_ordinal_to_read += 1;
7071 if next_offset >= end_offset {
7072 return Ok(());
7073 }
7074
7075 while _next_ordinal_to_read < 13 {
7077 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7078 _next_ordinal_to_read += 1;
7079 next_offset += envelope_size;
7080 }
7081
7082 let next_out_of_line = decoder.next_out_of_line();
7083 let handles_before = decoder.remaining_handles();
7084 if let Some((inlined, num_bytes, num_handles)) =
7085 fidl::encoding::decode_envelope_header(decoder, next_offset)?
7086 {
7087 let member_inline_size =
7088 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7089 if inlined != (member_inline_size <= 4) {
7090 return Err(fidl::Error::InvalidInlineBitInEnvelope);
7091 }
7092 let inner_offset;
7093 let mut inner_depth = depth.clone();
7094 if inlined {
7095 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7096 inner_offset = next_offset;
7097 } else {
7098 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7099 inner_depth.increment()?;
7100 }
7101 let val_ref = self.rs_tx_success.get_or_insert_with(|| fidl::new_empty!(u32, D));
7102 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
7103 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7104 {
7105 return Err(fidl::Error::InvalidNumBytesInEnvelope);
7106 }
7107 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7108 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7109 }
7110 }
7111
7112 next_offset += envelope_size;
7113 _next_ordinal_to_read += 1;
7114 if next_offset >= end_offset {
7115 return Ok(());
7116 }
7117
7118 while _next_ordinal_to_read < 14 {
7120 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7121 _next_ordinal_to_read += 1;
7122 next_offset += envelope_size;
7123 }
7124
7125 let next_out_of_line = decoder.next_out_of_line();
7126 let handles_before = decoder.remaining_handles();
7127 if let Some((inlined, num_bytes, num_handles)) =
7128 fidl::encoding::decode_envelope_header(decoder, next_offset)?
7129 {
7130 let member_inline_size =
7131 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7132 if inlined != (member_inline_size <= 4) {
7133 return Err(fidl::Error::InvalidInlineBitInEnvelope);
7134 }
7135 let inner_offset;
7136 let mut inner_depth = depth.clone();
7137 if inlined {
7138 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7139 inner_offset = next_offset;
7140 } else {
7141 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7142 inner_depth.increment()?;
7143 }
7144 let val_ref = self.rs_tx_failure.get_or_insert_with(|| fidl::new_empty!(u32, D));
7145 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
7146 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7147 {
7148 return Err(fidl::Error::InvalidNumBytesInEnvelope);
7149 }
7150 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7151 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7152 }
7153 }
7154
7155 next_offset += envelope_size;
7156 _next_ordinal_to_read += 1;
7157 if next_offset >= end_offset {
7158 return Ok(());
7159 }
7160
7161 while _next_ordinal_to_read < 15 {
7163 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7164 _next_ordinal_to_read += 1;
7165 next_offset += envelope_size;
7166 }
7167
7168 let next_out_of_line = decoder.next_out_of_line();
7169 let handles_before = decoder.remaining_handles();
7170 if let Some((inlined, num_bytes, num_handles)) =
7171 fidl::encoding::decode_envelope_header(decoder, next_offset)?
7172 {
7173 let member_inline_size =
7174 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7175 if inlined != (member_inline_size <= 4) {
7176 return Err(fidl::Error::InvalidInlineBitInEnvelope);
7177 }
7178 let inner_offset;
7179 let mut inner_depth = depth.clone();
7180 if inlined {
7181 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7182 inner_offset = next_offset;
7183 } else {
7184 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7185 inner_depth.increment()?;
7186 }
7187 let val_ref =
7188 self.inbound_internet_packets.get_or_insert_with(|| fidl::new_empty!(u64, D));
7189 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
7190 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7191 {
7192 return Err(fidl::Error::InvalidNumBytesInEnvelope);
7193 }
7194 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7195 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7196 }
7197 }
7198
7199 next_offset += envelope_size;
7200 _next_ordinal_to_read += 1;
7201 if next_offset >= end_offset {
7202 return Ok(());
7203 }
7204
7205 while _next_ordinal_to_read < 16 {
7207 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7208 _next_ordinal_to_read += 1;
7209 next_offset += envelope_size;
7210 }
7211
7212 let next_out_of_line = decoder.next_out_of_line();
7213 let handles_before = decoder.remaining_handles();
7214 if let Some((inlined, num_bytes, num_handles)) =
7215 fidl::encoding::decode_envelope_header(decoder, next_offset)?
7216 {
7217 let member_inline_size =
7218 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7219 if inlined != (member_inline_size <= 4) {
7220 return Err(fidl::Error::InvalidInlineBitInEnvelope);
7221 }
7222 let inner_offset;
7223 let mut inner_depth = depth.clone();
7224 if inlined {
7225 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7226 inner_offset = next_offset;
7227 } else {
7228 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7229 inner_depth.increment()?;
7230 }
7231 let val_ref =
7232 self.inbound_internet_bytes.get_or_insert_with(|| fidl::new_empty!(u64, D));
7233 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
7234 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7235 {
7236 return Err(fidl::Error::InvalidNumBytesInEnvelope);
7237 }
7238 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7239 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7240 }
7241 }
7242
7243 next_offset += envelope_size;
7244 _next_ordinal_to_read += 1;
7245 if next_offset >= end_offset {
7246 return Ok(());
7247 }
7248
7249 while _next_ordinal_to_read < 17 {
7251 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7252 _next_ordinal_to_read += 1;
7253 next_offset += envelope_size;
7254 }
7255
7256 let next_out_of_line = decoder.next_out_of_line();
7257 let handles_before = decoder.remaining_handles();
7258 if let Some((inlined, num_bytes, num_handles)) =
7259 fidl::encoding::decode_envelope_header(decoder, next_offset)?
7260 {
7261 let member_inline_size =
7262 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7263 if inlined != (member_inline_size <= 4) {
7264 return Err(fidl::Error::InvalidInlineBitInEnvelope);
7265 }
7266 let inner_offset;
7267 let mut inner_depth = depth.clone();
7268 if inlined {
7269 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7270 inner_offset = next_offset;
7271 } else {
7272 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7273 inner_depth.increment()?;
7274 }
7275 let val_ref =
7276 self.outbound_internet_packets.get_or_insert_with(|| fidl::new_empty!(u64, D));
7277 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
7278 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7279 {
7280 return Err(fidl::Error::InvalidNumBytesInEnvelope);
7281 }
7282 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7283 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7284 }
7285 }
7286
7287 next_offset += envelope_size;
7288 _next_ordinal_to_read += 1;
7289 if next_offset >= end_offset {
7290 return Ok(());
7291 }
7292
7293 while _next_ordinal_to_read < 18 {
7295 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7296 _next_ordinal_to_read += 1;
7297 next_offset += envelope_size;
7298 }
7299
7300 let next_out_of_line = decoder.next_out_of_line();
7301 let handles_before = decoder.remaining_handles();
7302 if let Some((inlined, num_bytes, num_handles)) =
7303 fidl::encoding::decode_envelope_header(decoder, next_offset)?
7304 {
7305 let member_inline_size =
7306 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7307 if inlined != (member_inline_size <= 4) {
7308 return Err(fidl::Error::InvalidInlineBitInEnvelope);
7309 }
7310 let inner_offset;
7311 let mut inner_depth = depth.clone();
7312 if inlined {
7313 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7314 inner_offset = next_offset;
7315 } else {
7316 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7317 inner_depth.increment()?;
7318 }
7319 let val_ref =
7320 self.outbound_internet_bytes.get_or_insert_with(|| fidl::new_empty!(u64, D));
7321 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
7322 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7323 {
7324 return Err(fidl::Error::InvalidNumBytesInEnvelope);
7325 }
7326 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7327 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7328 }
7329 }
7330
7331 next_offset += envelope_size;
7332
7333 while next_offset < end_offset {
7335 _next_ordinal_to_read += 1;
7336 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7337 next_offset += envelope_size;
7338 }
7339
7340 Ok(())
7341 }
7342 }
7343
7344 impl BorderRoutingNat64State {
7345 #[inline(always)]
7346 fn max_ordinal_present(&self) -> u64 {
7347 if let Some(_) = self.translator_state {
7348 return 2;
7349 }
7350 if let Some(_) = self.prefix_manager_state {
7351 return 1;
7352 }
7353 0
7354 }
7355 }
7356
7357 impl fidl::encoding::ValueTypeMarker for BorderRoutingNat64State {
7358 type Borrowed<'a> = &'a Self;
7359 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7360 value
7361 }
7362 }
7363
7364 unsafe impl fidl::encoding::TypeMarker for BorderRoutingNat64State {
7365 type Owned = Self;
7366
7367 #[inline(always)]
7368 fn inline_align(_context: fidl::encoding::Context) -> usize {
7369 8
7370 }
7371
7372 #[inline(always)]
7373 fn inline_size(_context: fidl::encoding::Context) -> usize {
7374 16
7375 }
7376 }
7377
7378 unsafe impl<D: fidl::encoding::ResourceDialect>
7379 fidl::encoding::Encode<BorderRoutingNat64State, D> for &BorderRoutingNat64State
7380 {
7381 unsafe fn encode(
7382 self,
7383 encoder: &mut fidl::encoding::Encoder<'_, D>,
7384 offset: usize,
7385 mut depth: fidl::encoding::Depth,
7386 ) -> fidl::Result<()> {
7387 encoder.debug_check_bounds::<BorderRoutingNat64State>(offset);
7388 let max_ordinal: u64 = self.max_ordinal_present();
7390 encoder.write_num(max_ordinal, offset);
7391 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
7392 if max_ordinal == 0 {
7394 return Ok(());
7395 }
7396 depth.increment()?;
7397 let envelope_size = 8;
7398 let bytes_len = max_ordinal as usize * envelope_size;
7399 #[allow(unused_variables)]
7400 let offset = encoder.out_of_line_offset(bytes_len);
7401 let mut _prev_end_offset: usize = 0;
7402 if 1 > max_ordinal {
7403 return Ok(());
7404 }
7405
7406 let cur_offset: usize = (1 - 1) * envelope_size;
7409
7410 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7412
7413 fidl::encoding::encode_in_envelope_optional::<Nat64State, D>(
7418 self.prefix_manager_state
7419 .as_ref()
7420 .map(<Nat64State as fidl::encoding::ValueTypeMarker>::borrow),
7421 encoder,
7422 offset + cur_offset,
7423 depth,
7424 )?;
7425
7426 _prev_end_offset = cur_offset + envelope_size;
7427 if 2 > max_ordinal {
7428 return Ok(());
7429 }
7430
7431 let cur_offset: usize = (2 - 1) * envelope_size;
7434
7435 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7437
7438 fidl::encoding::encode_in_envelope_optional::<Nat64State, D>(
7443 self.translator_state
7444 .as_ref()
7445 .map(<Nat64State as fidl::encoding::ValueTypeMarker>::borrow),
7446 encoder,
7447 offset + cur_offset,
7448 depth,
7449 )?;
7450
7451 _prev_end_offset = cur_offset + envelope_size;
7452
7453 Ok(())
7454 }
7455 }
7456
7457 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
7458 for BorderRoutingNat64State
7459 {
7460 #[inline(always)]
7461 fn new_empty() -> Self {
7462 Self::default()
7463 }
7464
7465 unsafe fn decode(
7466 &mut self,
7467 decoder: &mut fidl::encoding::Decoder<'_, D>,
7468 offset: usize,
7469 mut depth: fidl::encoding::Depth,
7470 ) -> fidl::Result<()> {
7471 decoder.debug_check_bounds::<Self>(offset);
7472 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
7473 None => return Err(fidl::Error::NotNullable),
7474 Some(len) => len,
7475 };
7476 if len == 0 {
7478 return Ok(());
7479 };
7480 depth.increment()?;
7481 let envelope_size = 8;
7482 let bytes_len = len * envelope_size;
7483 let offset = decoder.out_of_line_offset(bytes_len)?;
7484 let mut _next_ordinal_to_read = 0;
7486 let mut next_offset = offset;
7487 let end_offset = offset + bytes_len;
7488 _next_ordinal_to_read += 1;
7489 if next_offset >= end_offset {
7490 return Ok(());
7491 }
7492
7493 while _next_ordinal_to_read < 1 {
7495 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7496 _next_ordinal_to_read += 1;
7497 next_offset += envelope_size;
7498 }
7499
7500 let next_out_of_line = decoder.next_out_of_line();
7501 let handles_before = decoder.remaining_handles();
7502 if let Some((inlined, num_bytes, num_handles)) =
7503 fidl::encoding::decode_envelope_header(decoder, next_offset)?
7504 {
7505 let member_inline_size =
7506 <Nat64State as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7507 if inlined != (member_inline_size <= 4) {
7508 return Err(fidl::Error::InvalidInlineBitInEnvelope);
7509 }
7510 let inner_offset;
7511 let mut inner_depth = depth.clone();
7512 if inlined {
7513 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7514 inner_offset = next_offset;
7515 } else {
7516 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7517 inner_depth.increment()?;
7518 }
7519 let val_ref = self
7520 .prefix_manager_state
7521 .get_or_insert_with(|| fidl::new_empty!(Nat64State, D));
7522 fidl::decode!(Nat64State, D, val_ref, decoder, inner_offset, inner_depth)?;
7523 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7524 {
7525 return Err(fidl::Error::InvalidNumBytesInEnvelope);
7526 }
7527 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7528 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7529 }
7530 }
7531
7532 next_offset += envelope_size;
7533 _next_ordinal_to_read += 1;
7534 if next_offset >= end_offset {
7535 return Ok(());
7536 }
7537
7538 while _next_ordinal_to_read < 2 {
7540 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7541 _next_ordinal_to_read += 1;
7542 next_offset += envelope_size;
7543 }
7544
7545 let next_out_of_line = decoder.next_out_of_line();
7546 let handles_before = decoder.remaining_handles();
7547 if let Some((inlined, num_bytes, num_handles)) =
7548 fidl::encoding::decode_envelope_header(decoder, next_offset)?
7549 {
7550 let member_inline_size =
7551 <Nat64State as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7552 if inlined != (member_inline_size <= 4) {
7553 return Err(fidl::Error::InvalidInlineBitInEnvelope);
7554 }
7555 let inner_offset;
7556 let mut inner_depth = depth.clone();
7557 if inlined {
7558 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7559 inner_offset = next_offset;
7560 } else {
7561 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7562 inner_depth.increment()?;
7563 }
7564 let val_ref =
7565 self.translator_state.get_or_insert_with(|| fidl::new_empty!(Nat64State, D));
7566 fidl::decode!(Nat64State, D, val_ref, decoder, inner_offset, inner_depth)?;
7567 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7568 {
7569 return Err(fidl::Error::InvalidNumBytesInEnvelope);
7570 }
7571 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7572 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7573 }
7574 }
7575
7576 next_offset += envelope_size;
7577
7578 while next_offset < end_offset {
7580 _next_ordinal_to_read += 1;
7581 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7582 next_offset += envelope_size;
7583 }
7584
7585 Ok(())
7586 }
7587 }
7588
7589 impl BorderRoutingPeer {
7590 #[inline(always)]
7591 fn max_ordinal_present(&self) -> u64 {
7592 if let Some(_) = self.age {
7593 return 2;
7594 }
7595 if let Some(_) = self.thread_rloc {
7596 return 1;
7597 }
7598 0
7599 }
7600 }
7601
7602 impl fidl::encoding::ValueTypeMarker for BorderRoutingPeer {
7603 type Borrowed<'a> = &'a Self;
7604 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7605 value
7606 }
7607 }
7608
7609 unsafe impl fidl::encoding::TypeMarker for BorderRoutingPeer {
7610 type Owned = Self;
7611
7612 #[inline(always)]
7613 fn inline_align(_context: fidl::encoding::Context) -> usize {
7614 8
7615 }
7616
7617 #[inline(always)]
7618 fn inline_size(_context: fidl::encoding::Context) -> usize {
7619 16
7620 }
7621 }
7622
7623 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<BorderRoutingPeer, D>
7624 for &BorderRoutingPeer
7625 {
7626 unsafe fn encode(
7627 self,
7628 encoder: &mut fidl::encoding::Encoder<'_, D>,
7629 offset: usize,
7630 mut depth: fidl::encoding::Depth,
7631 ) -> fidl::Result<()> {
7632 encoder.debug_check_bounds::<BorderRoutingPeer>(offset);
7633 let max_ordinal: u64 = self.max_ordinal_present();
7635 encoder.write_num(max_ordinal, offset);
7636 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
7637 if max_ordinal == 0 {
7639 return Ok(());
7640 }
7641 depth.increment()?;
7642 let envelope_size = 8;
7643 let bytes_len = max_ordinal as usize * envelope_size;
7644 #[allow(unused_variables)]
7645 let offset = encoder.out_of_line_offset(bytes_len);
7646 let mut _prev_end_offset: usize = 0;
7647 if 1 > max_ordinal {
7648 return Ok(());
7649 }
7650
7651 let cur_offset: usize = (1 - 1) * envelope_size;
7654
7655 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7657
7658 fidl::encoding::encode_in_envelope_optional::<u16, D>(
7663 self.thread_rloc.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
7664 encoder,
7665 offset + cur_offset,
7666 depth,
7667 )?;
7668
7669 _prev_end_offset = cur_offset + envelope_size;
7670 if 2 > max_ordinal {
7671 return Ok(());
7672 }
7673
7674 let cur_offset: usize = (2 - 1) * envelope_size;
7677
7678 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7680
7681 fidl::encoding::encode_in_envelope_optional::<i64, D>(
7686 self.age.as_ref().map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
7687 encoder,
7688 offset + cur_offset,
7689 depth,
7690 )?;
7691
7692 _prev_end_offset = cur_offset + envelope_size;
7693
7694 Ok(())
7695 }
7696 }
7697
7698 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for BorderRoutingPeer {
7699 #[inline(always)]
7700 fn new_empty() -> Self {
7701 Self::default()
7702 }
7703
7704 unsafe fn decode(
7705 &mut self,
7706 decoder: &mut fidl::encoding::Decoder<'_, D>,
7707 offset: usize,
7708 mut depth: fidl::encoding::Depth,
7709 ) -> fidl::Result<()> {
7710 decoder.debug_check_bounds::<Self>(offset);
7711 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
7712 None => return Err(fidl::Error::NotNullable),
7713 Some(len) => len,
7714 };
7715 if len == 0 {
7717 return Ok(());
7718 };
7719 depth.increment()?;
7720 let envelope_size = 8;
7721 let bytes_len = len * envelope_size;
7722 let offset = decoder.out_of_line_offset(bytes_len)?;
7723 let mut _next_ordinal_to_read = 0;
7725 let mut next_offset = offset;
7726 let end_offset = offset + bytes_len;
7727 _next_ordinal_to_read += 1;
7728 if next_offset >= end_offset {
7729 return Ok(());
7730 }
7731
7732 while _next_ordinal_to_read < 1 {
7734 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7735 _next_ordinal_to_read += 1;
7736 next_offset += envelope_size;
7737 }
7738
7739 let next_out_of_line = decoder.next_out_of_line();
7740 let handles_before = decoder.remaining_handles();
7741 if let Some((inlined, num_bytes, num_handles)) =
7742 fidl::encoding::decode_envelope_header(decoder, next_offset)?
7743 {
7744 let member_inline_size =
7745 <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7746 if inlined != (member_inline_size <= 4) {
7747 return Err(fidl::Error::InvalidInlineBitInEnvelope);
7748 }
7749 let inner_offset;
7750 let mut inner_depth = depth.clone();
7751 if inlined {
7752 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7753 inner_offset = next_offset;
7754 } else {
7755 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7756 inner_depth.increment()?;
7757 }
7758 let val_ref = self.thread_rloc.get_or_insert_with(|| fidl::new_empty!(u16, D));
7759 fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
7760 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7761 {
7762 return Err(fidl::Error::InvalidNumBytesInEnvelope);
7763 }
7764 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7765 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7766 }
7767 }
7768
7769 next_offset += envelope_size;
7770 _next_ordinal_to_read += 1;
7771 if next_offset >= end_offset {
7772 return Ok(());
7773 }
7774
7775 while _next_ordinal_to_read < 2 {
7777 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7778 _next_ordinal_to_read += 1;
7779 next_offset += envelope_size;
7780 }
7781
7782 let next_out_of_line = decoder.next_out_of_line();
7783 let handles_before = decoder.remaining_handles();
7784 if let Some((inlined, num_bytes, num_handles)) =
7785 fidl::encoding::decode_envelope_header(decoder, next_offset)?
7786 {
7787 let member_inline_size =
7788 <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7789 if inlined != (member_inline_size <= 4) {
7790 return Err(fidl::Error::InvalidInlineBitInEnvelope);
7791 }
7792 let inner_offset;
7793 let mut inner_depth = depth.clone();
7794 if inlined {
7795 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7796 inner_offset = next_offset;
7797 } else {
7798 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7799 inner_depth.increment()?;
7800 }
7801 let val_ref = self.age.get_or_insert_with(|| fidl::new_empty!(i64, D));
7802 fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
7803 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7804 {
7805 return Err(fidl::Error::InvalidNumBytesInEnvelope);
7806 }
7807 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7808 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7809 }
7810 }
7811
7812 next_offset += envelope_size;
7813
7814 while next_offset < end_offset {
7816 _next_ordinal_to_read += 1;
7817 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7818 next_offset += envelope_size;
7819 }
7820
7821 Ok(())
7822 }
7823 }
7824
7825 impl BorderRoutingPrefixTable {
7826 #[inline(always)]
7827 fn max_ordinal_present(&self) -> u64 {
7828 if let Some(_) = self.preferred_lifetime {
7829 return 7;
7830 }
7831 if let Some(_) = self.preference {
7832 return 6;
7833 }
7834 if let Some(_) = self.valid_lifetime {
7835 return 5;
7836 }
7837 if let Some(_) = self.duration_since_last_update {
7838 return 4;
7839 }
7840 if let Some(_) = self.is_on_link {
7841 return 3;
7842 }
7843 if let Some(_) = self.prefix {
7844 return 2;
7845 }
7846 if let Some(_) = self.router {
7847 return 1;
7848 }
7849 0
7850 }
7851 }
7852
7853 impl fidl::encoding::ValueTypeMarker for BorderRoutingPrefixTable {
7854 type Borrowed<'a> = &'a Self;
7855 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7856 value
7857 }
7858 }
7859
7860 unsafe impl fidl::encoding::TypeMarker for BorderRoutingPrefixTable {
7861 type Owned = Self;
7862
7863 #[inline(always)]
7864 fn inline_align(_context: fidl::encoding::Context) -> usize {
7865 8
7866 }
7867
7868 #[inline(always)]
7869 fn inline_size(_context: fidl::encoding::Context) -> usize {
7870 16
7871 }
7872 }
7873
7874 unsafe impl<D: fidl::encoding::ResourceDialect>
7875 fidl::encoding::Encode<BorderRoutingPrefixTable, D> for &BorderRoutingPrefixTable
7876 {
7877 unsafe fn encode(
7878 self,
7879 encoder: &mut fidl::encoding::Encoder<'_, D>,
7880 offset: usize,
7881 mut depth: fidl::encoding::Depth,
7882 ) -> fidl::Result<()> {
7883 encoder.debug_check_bounds::<BorderRoutingPrefixTable>(offset);
7884 let max_ordinal: u64 = self.max_ordinal_present();
7886 encoder.write_num(max_ordinal, offset);
7887 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
7888 if max_ordinal == 0 {
7890 return Ok(());
7891 }
7892 depth.increment()?;
7893 let envelope_size = 8;
7894 let bytes_len = max_ordinal as usize * envelope_size;
7895 #[allow(unused_variables)]
7896 let offset = encoder.out_of_line_offset(bytes_len);
7897 let mut _prev_end_offset: usize = 0;
7898 if 1 > max_ordinal {
7899 return Ok(());
7900 }
7901
7902 let cur_offset: usize = (1 - 1) * envelope_size;
7905
7906 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7908
7909 fidl::encoding::encode_in_envelope_optional::<BorderRoutingRouter, D>(
7914 self.router
7915 .as_ref()
7916 .map(<BorderRoutingRouter as fidl::encoding::ValueTypeMarker>::borrow),
7917 encoder,
7918 offset + cur_offset,
7919 depth,
7920 )?;
7921
7922 _prev_end_offset = cur_offset + envelope_size;
7923 if 2 > max_ordinal {
7924 return Ok(());
7925 }
7926
7927 let cur_offset: usize = (2 - 1) * envelope_size;
7930
7931 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7933
7934 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<64>, D>(
7939 self.prefix.as_ref().map(
7940 <fidl::encoding::BoundedString<64> as fidl::encoding::ValueTypeMarker>::borrow,
7941 ),
7942 encoder,
7943 offset + cur_offset,
7944 depth,
7945 )?;
7946
7947 _prev_end_offset = cur_offset + envelope_size;
7948 if 3 > max_ordinal {
7949 return Ok(());
7950 }
7951
7952 let cur_offset: usize = (3 - 1) * envelope_size;
7955
7956 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7958
7959 fidl::encoding::encode_in_envelope_optional::<bool, D>(
7964 self.is_on_link.as_ref().map(<bool 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 4 > max_ordinal {
7972 return Ok(());
7973 }
7974
7975 let cur_offset: usize = (4 - 1) * envelope_size;
7978
7979 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7981
7982 fidl::encoding::encode_in_envelope_optional::<i64, D>(
7987 self.duration_since_last_update
7988 .as_ref()
7989 .map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
7990 encoder,
7991 offset + cur_offset,
7992 depth,
7993 )?;
7994
7995 _prev_end_offset = cur_offset + envelope_size;
7996 if 5 > max_ordinal {
7997 return Ok(());
7998 }
7999
8000 let cur_offset: usize = (5 - 1) * envelope_size;
8003
8004 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8006
8007 fidl::encoding::encode_in_envelope_optional::<u32, D>(
8012 self.valid_lifetime.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
8013 encoder,
8014 offset + cur_offset,
8015 depth,
8016 )?;
8017
8018 _prev_end_offset = cur_offset + envelope_size;
8019 if 6 > max_ordinal {
8020 return Ok(());
8021 }
8022
8023 let cur_offset: usize = (6 - 1) * envelope_size;
8026
8027 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8029
8030 fidl::encoding::encode_in_envelope_optional::<i8, D>(
8035 self.preference.as_ref().map(<i8 as fidl::encoding::ValueTypeMarker>::borrow),
8036 encoder,
8037 offset + cur_offset,
8038 depth,
8039 )?;
8040
8041 _prev_end_offset = cur_offset + envelope_size;
8042 if 7 > max_ordinal {
8043 return Ok(());
8044 }
8045
8046 let cur_offset: usize = (7 - 1) * envelope_size;
8049
8050 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8052
8053 fidl::encoding::encode_in_envelope_optional::<u32, D>(
8058 self.preferred_lifetime
8059 .as_ref()
8060 .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
8061 encoder,
8062 offset + cur_offset,
8063 depth,
8064 )?;
8065
8066 _prev_end_offset = cur_offset + envelope_size;
8067
8068 Ok(())
8069 }
8070 }
8071
8072 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
8073 for BorderRoutingPrefixTable
8074 {
8075 #[inline(always)]
8076 fn new_empty() -> Self {
8077 Self::default()
8078 }
8079
8080 unsafe fn decode(
8081 &mut self,
8082 decoder: &mut fidl::encoding::Decoder<'_, D>,
8083 offset: usize,
8084 mut depth: fidl::encoding::Depth,
8085 ) -> fidl::Result<()> {
8086 decoder.debug_check_bounds::<Self>(offset);
8087 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
8088 None => return Err(fidl::Error::NotNullable),
8089 Some(len) => len,
8090 };
8091 if len == 0 {
8093 return Ok(());
8094 };
8095 depth.increment()?;
8096 let envelope_size = 8;
8097 let bytes_len = len * envelope_size;
8098 let offset = decoder.out_of_line_offset(bytes_len)?;
8099 let mut _next_ordinal_to_read = 0;
8101 let mut next_offset = offset;
8102 let end_offset = offset + bytes_len;
8103 _next_ordinal_to_read += 1;
8104 if next_offset >= end_offset {
8105 return Ok(());
8106 }
8107
8108 while _next_ordinal_to_read < 1 {
8110 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8111 _next_ordinal_to_read += 1;
8112 next_offset += envelope_size;
8113 }
8114
8115 let next_out_of_line = decoder.next_out_of_line();
8116 let handles_before = decoder.remaining_handles();
8117 if let Some((inlined, num_bytes, num_handles)) =
8118 fidl::encoding::decode_envelope_header(decoder, next_offset)?
8119 {
8120 let member_inline_size =
8121 <BorderRoutingRouter as fidl::encoding::TypeMarker>::inline_size(
8122 decoder.context,
8123 );
8124 if inlined != (member_inline_size <= 4) {
8125 return Err(fidl::Error::InvalidInlineBitInEnvelope);
8126 }
8127 let inner_offset;
8128 let mut inner_depth = depth.clone();
8129 if inlined {
8130 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8131 inner_offset = next_offset;
8132 } else {
8133 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8134 inner_depth.increment()?;
8135 }
8136 let val_ref =
8137 self.router.get_or_insert_with(|| fidl::new_empty!(BorderRoutingRouter, D));
8138 fidl::decode!(BorderRoutingRouter, D, val_ref, decoder, inner_offset, inner_depth)?;
8139 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8140 {
8141 return Err(fidl::Error::InvalidNumBytesInEnvelope);
8142 }
8143 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8144 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8145 }
8146 }
8147
8148 next_offset += envelope_size;
8149 _next_ordinal_to_read += 1;
8150 if next_offset >= end_offset {
8151 return Ok(());
8152 }
8153
8154 while _next_ordinal_to_read < 2 {
8156 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8157 _next_ordinal_to_read += 1;
8158 next_offset += envelope_size;
8159 }
8160
8161 let next_out_of_line = decoder.next_out_of_line();
8162 let handles_before = decoder.remaining_handles();
8163 if let Some((inlined, num_bytes, num_handles)) =
8164 fidl::encoding::decode_envelope_header(decoder, next_offset)?
8165 {
8166 let member_inline_size =
8167 <fidl::encoding::BoundedString<64> as fidl::encoding::TypeMarker>::inline_size(
8168 decoder.context,
8169 );
8170 if inlined != (member_inline_size <= 4) {
8171 return Err(fidl::Error::InvalidInlineBitInEnvelope);
8172 }
8173 let inner_offset;
8174 let mut inner_depth = depth.clone();
8175 if inlined {
8176 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8177 inner_offset = next_offset;
8178 } else {
8179 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8180 inner_depth.increment()?;
8181 }
8182 let val_ref = self
8183 .prefix
8184 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<64>, D));
8185 fidl::decode!(
8186 fidl::encoding::BoundedString<64>,
8187 D,
8188 val_ref,
8189 decoder,
8190 inner_offset,
8191 inner_depth
8192 )?;
8193 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8194 {
8195 return Err(fidl::Error::InvalidNumBytesInEnvelope);
8196 }
8197 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8198 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8199 }
8200 }
8201
8202 next_offset += envelope_size;
8203 _next_ordinal_to_read += 1;
8204 if next_offset >= end_offset {
8205 return Ok(());
8206 }
8207
8208 while _next_ordinal_to_read < 3 {
8210 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8211 _next_ordinal_to_read += 1;
8212 next_offset += envelope_size;
8213 }
8214
8215 let next_out_of_line = decoder.next_out_of_line();
8216 let handles_before = decoder.remaining_handles();
8217 if let Some((inlined, num_bytes, num_handles)) =
8218 fidl::encoding::decode_envelope_header(decoder, next_offset)?
8219 {
8220 let member_inline_size =
8221 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
8222 if inlined != (member_inline_size <= 4) {
8223 return Err(fidl::Error::InvalidInlineBitInEnvelope);
8224 }
8225 let inner_offset;
8226 let mut inner_depth = depth.clone();
8227 if inlined {
8228 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8229 inner_offset = next_offset;
8230 } else {
8231 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8232 inner_depth.increment()?;
8233 }
8234 let val_ref = self.is_on_link.get_or_insert_with(|| fidl::new_empty!(bool, D));
8235 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
8236 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8237 {
8238 return Err(fidl::Error::InvalidNumBytesInEnvelope);
8239 }
8240 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8241 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8242 }
8243 }
8244
8245 next_offset += envelope_size;
8246 _next_ordinal_to_read += 1;
8247 if next_offset >= end_offset {
8248 return Ok(());
8249 }
8250
8251 while _next_ordinal_to_read < 4 {
8253 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8254 _next_ordinal_to_read += 1;
8255 next_offset += envelope_size;
8256 }
8257
8258 let next_out_of_line = decoder.next_out_of_line();
8259 let handles_before = decoder.remaining_handles();
8260 if let Some((inlined, num_bytes, num_handles)) =
8261 fidl::encoding::decode_envelope_header(decoder, next_offset)?
8262 {
8263 let member_inline_size =
8264 <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
8265 if inlined != (member_inline_size <= 4) {
8266 return Err(fidl::Error::InvalidInlineBitInEnvelope);
8267 }
8268 let inner_offset;
8269 let mut inner_depth = depth.clone();
8270 if inlined {
8271 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8272 inner_offset = next_offset;
8273 } else {
8274 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8275 inner_depth.increment()?;
8276 }
8277 let val_ref =
8278 self.duration_since_last_update.get_or_insert_with(|| fidl::new_empty!(i64, D));
8279 fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
8280 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8281 {
8282 return Err(fidl::Error::InvalidNumBytesInEnvelope);
8283 }
8284 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8285 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8286 }
8287 }
8288
8289 next_offset += envelope_size;
8290 _next_ordinal_to_read += 1;
8291 if next_offset >= end_offset {
8292 return Ok(());
8293 }
8294
8295 while _next_ordinal_to_read < 5 {
8297 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8298 _next_ordinal_to_read += 1;
8299 next_offset += envelope_size;
8300 }
8301
8302 let next_out_of_line = decoder.next_out_of_line();
8303 let handles_before = decoder.remaining_handles();
8304 if let Some((inlined, num_bytes, num_handles)) =
8305 fidl::encoding::decode_envelope_header(decoder, next_offset)?
8306 {
8307 let member_inline_size =
8308 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
8309 if inlined != (member_inline_size <= 4) {
8310 return Err(fidl::Error::InvalidInlineBitInEnvelope);
8311 }
8312 let inner_offset;
8313 let mut inner_depth = depth.clone();
8314 if inlined {
8315 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8316 inner_offset = next_offset;
8317 } else {
8318 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8319 inner_depth.increment()?;
8320 }
8321 let val_ref = self.valid_lifetime.get_or_insert_with(|| fidl::new_empty!(u32, D));
8322 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
8323 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8324 {
8325 return Err(fidl::Error::InvalidNumBytesInEnvelope);
8326 }
8327 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8328 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8329 }
8330 }
8331
8332 next_offset += envelope_size;
8333 _next_ordinal_to_read += 1;
8334 if next_offset >= end_offset {
8335 return Ok(());
8336 }
8337
8338 while _next_ordinal_to_read < 6 {
8340 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8341 _next_ordinal_to_read += 1;
8342 next_offset += envelope_size;
8343 }
8344
8345 let next_out_of_line = decoder.next_out_of_line();
8346 let handles_before = decoder.remaining_handles();
8347 if let Some((inlined, num_bytes, num_handles)) =
8348 fidl::encoding::decode_envelope_header(decoder, next_offset)?
8349 {
8350 let member_inline_size =
8351 <i8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
8352 if inlined != (member_inline_size <= 4) {
8353 return Err(fidl::Error::InvalidInlineBitInEnvelope);
8354 }
8355 let inner_offset;
8356 let mut inner_depth = depth.clone();
8357 if inlined {
8358 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8359 inner_offset = next_offset;
8360 } else {
8361 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8362 inner_depth.increment()?;
8363 }
8364 let val_ref = self.preference.get_or_insert_with(|| fidl::new_empty!(i8, D));
8365 fidl::decode!(i8, D, val_ref, decoder, inner_offset, inner_depth)?;
8366 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8367 {
8368 return Err(fidl::Error::InvalidNumBytesInEnvelope);
8369 }
8370 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8371 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8372 }
8373 }
8374
8375 next_offset += envelope_size;
8376 _next_ordinal_to_read += 1;
8377 if next_offset >= end_offset {
8378 return Ok(());
8379 }
8380
8381 while _next_ordinal_to_read < 7 {
8383 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8384 _next_ordinal_to_read += 1;
8385 next_offset += envelope_size;
8386 }
8387
8388 let next_out_of_line = decoder.next_out_of_line();
8389 let handles_before = decoder.remaining_handles();
8390 if let Some((inlined, num_bytes, num_handles)) =
8391 fidl::encoding::decode_envelope_header(decoder, next_offset)?
8392 {
8393 let member_inline_size =
8394 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
8395 if inlined != (member_inline_size <= 4) {
8396 return Err(fidl::Error::InvalidInlineBitInEnvelope);
8397 }
8398 let inner_offset;
8399 let mut inner_depth = depth.clone();
8400 if inlined {
8401 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8402 inner_offset = next_offset;
8403 } else {
8404 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8405 inner_depth.increment()?;
8406 }
8407 let val_ref =
8408 self.preferred_lifetime.get_or_insert_with(|| fidl::new_empty!(u32, D));
8409 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
8410 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8411 {
8412 return Err(fidl::Error::InvalidNumBytesInEnvelope);
8413 }
8414 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8415 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8416 }
8417 }
8418
8419 next_offset += envelope_size;
8420
8421 while next_offset < end_offset {
8423 _next_ordinal_to_read += 1;
8424 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8425 next_offset += envelope_size;
8426 }
8427
8428 Ok(())
8429 }
8430 }
8431
8432 impl BorderRoutingRdnss {
8433 #[inline(always)]
8434 fn max_ordinal_present(&self) -> u64 {
8435 if let Some(_) = self.lifetime {
8436 return 4;
8437 }
8438 if let Some(_) = self.duration_since_last_update {
8439 return 3;
8440 }
8441 if let Some(_) = self.address {
8442 return 2;
8443 }
8444 if let Some(_) = self.router {
8445 return 1;
8446 }
8447 0
8448 }
8449 }
8450
8451 impl fidl::encoding::ValueTypeMarker for BorderRoutingRdnss {
8452 type Borrowed<'a> = &'a Self;
8453 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
8454 value
8455 }
8456 }
8457
8458 unsafe impl fidl::encoding::TypeMarker for BorderRoutingRdnss {
8459 type Owned = Self;
8460
8461 #[inline(always)]
8462 fn inline_align(_context: fidl::encoding::Context) -> usize {
8463 8
8464 }
8465
8466 #[inline(always)]
8467 fn inline_size(_context: fidl::encoding::Context) -> usize {
8468 16
8469 }
8470 }
8471
8472 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<BorderRoutingRdnss, D>
8473 for &BorderRoutingRdnss
8474 {
8475 unsafe fn encode(
8476 self,
8477 encoder: &mut fidl::encoding::Encoder<'_, D>,
8478 offset: usize,
8479 mut depth: fidl::encoding::Depth,
8480 ) -> fidl::Result<()> {
8481 encoder.debug_check_bounds::<BorderRoutingRdnss>(offset);
8482 let max_ordinal: u64 = self.max_ordinal_present();
8484 encoder.write_num(max_ordinal, offset);
8485 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
8486 if max_ordinal == 0 {
8488 return Ok(());
8489 }
8490 depth.increment()?;
8491 let envelope_size = 8;
8492 let bytes_len = max_ordinal as usize * envelope_size;
8493 #[allow(unused_variables)]
8494 let offset = encoder.out_of_line_offset(bytes_len);
8495 let mut _prev_end_offset: usize = 0;
8496 if 1 > max_ordinal {
8497 return Ok(());
8498 }
8499
8500 let cur_offset: usize = (1 - 1) * envelope_size;
8503
8504 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8506
8507 fidl::encoding::encode_in_envelope_optional::<BorderRoutingRouter, D>(
8512 self.router
8513 .as_ref()
8514 .map(<BorderRoutingRouter as fidl::encoding::ValueTypeMarker>::borrow),
8515 encoder,
8516 offset + cur_offset,
8517 depth,
8518 )?;
8519
8520 _prev_end_offset = cur_offset + envelope_size;
8521 if 2 > max_ordinal {
8522 return Ok(());
8523 }
8524
8525 let cur_offset: usize = (2 - 1) * envelope_size;
8528
8529 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8531
8532 fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_net_common::Ipv6Address, D>(
8537 self.address.as_ref().map(<fidl_fuchsia_net_common::Ipv6Address as fidl::encoding::ValueTypeMarker>::borrow),
8538 encoder, offset + cur_offset, depth
8539 )?;
8540
8541 _prev_end_offset = cur_offset + envelope_size;
8542 if 3 > max_ordinal {
8543 return Ok(());
8544 }
8545
8546 let cur_offset: usize = (3 - 1) * envelope_size;
8549
8550 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8552
8553 fidl::encoding::encode_in_envelope_optional::<i64, D>(
8558 self.duration_since_last_update
8559 .as_ref()
8560 .map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
8561 encoder,
8562 offset + cur_offset,
8563 depth,
8564 )?;
8565
8566 _prev_end_offset = cur_offset + envelope_size;
8567 if 4 > max_ordinal {
8568 return Ok(());
8569 }
8570
8571 let cur_offset: usize = (4 - 1) * envelope_size;
8574
8575 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8577
8578 fidl::encoding::encode_in_envelope_optional::<u32, D>(
8583 self.lifetime.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
8584 encoder,
8585 offset + cur_offset,
8586 depth,
8587 )?;
8588
8589 _prev_end_offset = cur_offset + envelope_size;
8590
8591 Ok(())
8592 }
8593 }
8594
8595 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for BorderRoutingRdnss {
8596 #[inline(always)]
8597 fn new_empty() -> Self {
8598 Self::default()
8599 }
8600
8601 unsafe fn decode(
8602 &mut self,
8603 decoder: &mut fidl::encoding::Decoder<'_, D>,
8604 offset: usize,
8605 mut depth: fidl::encoding::Depth,
8606 ) -> fidl::Result<()> {
8607 decoder.debug_check_bounds::<Self>(offset);
8608 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
8609 None => return Err(fidl::Error::NotNullable),
8610 Some(len) => len,
8611 };
8612 if len == 0 {
8614 return Ok(());
8615 };
8616 depth.increment()?;
8617 let envelope_size = 8;
8618 let bytes_len = len * envelope_size;
8619 let offset = decoder.out_of_line_offset(bytes_len)?;
8620 let mut _next_ordinal_to_read = 0;
8622 let mut next_offset = offset;
8623 let end_offset = offset + bytes_len;
8624 _next_ordinal_to_read += 1;
8625 if next_offset >= end_offset {
8626 return Ok(());
8627 }
8628
8629 while _next_ordinal_to_read < 1 {
8631 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8632 _next_ordinal_to_read += 1;
8633 next_offset += envelope_size;
8634 }
8635
8636 let next_out_of_line = decoder.next_out_of_line();
8637 let handles_before = decoder.remaining_handles();
8638 if let Some((inlined, num_bytes, num_handles)) =
8639 fidl::encoding::decode_envelope_header(decoder, next_offset)?
8640 {
8641 let member_inline_size =
8642 <BorderRoutingRouter as fidl::encoding::TypeMarker>::inline_size(
8643 decoder.context,
8644 );
8645 if inlined != (member_inline_size <= 4) {
8646 return Err(fidl::Error::InvalidInlineBitInEnvelope);
8647 }
8648 let inner_offset;
8649 let mut inner_depth = depth.clone();
8650 if inlined {
8651 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8652 inner_offset = next_offset;
8653 } else {
8654 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8655 inner_depth.increment()?;
8656 }
8657 let val_ref =
8658 self.router.get_or_insert_with(|| fidl::new_empty!(BorderRoutingRouter, D));
8659 fidl::decode!(BorderRoutingRouter, D, val_ref, decoder, inner_offset, inner_depth)?;
8660 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8661 {
8662 return Err(fidl::Error::InvalidNumBytesInEnvelope);
8663 }
8664 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8665 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8666 }
8667 }
8668
8669 next_offset += envelope_size;
8670 _next_ordinal_to_read += 1;
8671 if next_offset >= end_offset {
8672 return Ok(());
8673 }
8674
8675 while _next_ordinal_to_read < 2 {
8677 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8678 _next_ordinal_to_read += 1;
8679 next_offset += envelope_size;
8680 }
8681
8682 let next_out_of_line = decoder.next_out_of_line();
8683 let handles_before = decoder.remaining_handles();
8684 if let Some((inlined, num_bytes, num_handles)) =
8685 fidl::encoding::decode_envelope_header(decoder, next_offset)?
8686 {
8687 let member_inline_size = <fidl_fuchsia_net_common::Ipv6Address as fidl::encoding::TypeMarker>::inline_size(decoder.context);
8688 if inlined != (member_inline_size <= 4) {
8689 return Err(fidl::Error::InvalidInlineBitInEnvelope);
8690 }
8691 let inner_offset;
8692 let mut inner_depth = depth.clone();
8693 if inlined {
8694 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8695 inner_offset = next_offset;
8696 } else {
8697 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8698 inner_depth.increment()?;
8699 }
8700 let val_ref = self.address.get_or_insert_with(|| {
8701 fidl::new_empty!(fidl_fuchsia_net_common::Ipv6Address, D)
8702 });
8703 fidl::decode!(
8704 fidl_fuchsia_net_common::Ipv6Address,
8705 D,
8706 val_ref,
8707 decoder,
8708 inner_offset,
8709 inner_depth
8710 )?;
8711 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8712 {
8713 return Err(fidl::Error::InvalidNumBytesInEnvelope);
8714 }
8715 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8716 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8717 }
8718 }
8719
8720 next_offset += envelope_size;
8721 _next_ordinal_to_read += 1;
8722 if next_offset >= end_offset {
8723 return Ok(());
8724 }
8725
8726 while _next_ordinal_to_read < 3 {
8728 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8729 _next_ordinal_to_read += 1;
8730 next_offset += envelope_size;
8731 }
8732
8733 let next_out_of_line = decoder.next_out_of_line();
8734 let handles_before = decoder.remaining_handles();
8735 if let Some((inlined, num_bytes, num_handles)) =
8736 fidl::encoding::decode_envelope_header(decoder, next_offset)?
8737 {
8738 let member_inline_size =
8739 <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
8740 if inlined != (member_inline_size <= 4) {
8741 return Err(fidl::Error::InvalidInlineBitInEnvelope);
8742 }
8743 let inner_offset;
8744 let mut inner_depth = depth.clone();
8745 if inlined {
8746 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8747 inner_offset = next_offset;
8748 } else {
8749 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8750 inner_depth.increment()?;
8751 }
8752 let val_ref =
8753 self.duration_since_last_update.get_or_insert_with(|| fidl::new_empty!(i64, D));
8754 fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
8755 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8756 {
8757 return Err(fidl::Error::InvalidNumBytesInEnvelope);
8758 }
8759 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8760 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8761 }
8762 }
8763
8764 next_offset += envelope_size;
8765 _next_ordinal_to_read += 1;
8766 if next_offset >= end_offset {
8767 return Ok(());
8768 }
8769
8770 while _next_ordinal_to_read < 4 {
8772 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8773 _next_ordinal_to_read += 1;
8774 next_offset += envelope_size;
8775 }
8776
8777 let next_out_of_line = decoder.next_out_of_line();
8778 let handles_before = decoder.remaining_handles();
8779 if let Some((inlined, num_bytes, num_handles)) =
8780 fidl::encoding::decode_envelope_header(decoder, next_offset)?
8781 {
8782 let member_inline_size =
8783 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
8784 if inlined != (member_inline_size <= 4) {
8785 return Err(fidl::Error::InvalidInlineBitInEnvelope);
8786 }
8787 let inner_offset;
8788 let mut inner_depth = depth.clone();
8789 if inlined {
8790 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8791 inner_offset = next_offset;
8792 } else {
8793 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8794 inner_depth.increment()?;
8795 }
8796 let val_ref = self.lifetime.get_or_insert_with(|| fidl::new_empty!(u32, D));
8797 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
8798 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8799 {
8800 return Err(fidl::Error::InvalidNumBytesInEnvelope);
8801 }
8802 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8803 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8804 }
8805 }
8806
8807 next_offset += envelope_size;
8808
8809 while next_offset < end_offset {
8811 _next_ordinal_to_read += 1;
8812 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8813 next_offset += envelope_size;
8814 }
8815
8816 Ok(())
8817 }
8818 }
8819
8820 impl BorderRoutingRouter {
8821 #[inline(always)]
8822 fn max_ordinal_present(&self) -> u64 {
8823 if let Some(_) = self.is_peer_br {
8824 return 9;
8825 }
8826 if let Some(_) = self.is_reachable {
8827 return 8;
8828 }
8829 if let Some(_) = self.is_local_device {
8830 return 7;
8831 }
8832 if let Some(_) = self.snac_router_flag {
8833 return 6;
8834 }
8835 if let Some(_) = self.other_config_flag {
8836 return 5;
8837 }
8838 if let Some(_) = self.managed_address_config_flag {
8839 return 4;
8840 }
8841 if let Some(_) = self.age {
8842 return 3;
8843 }
8844 if let Some(_) = self.duration_since_last_update {
8845 return 2;
8846 }
8847 if let Some(_) = self.address {
8848 return 1;
8849 }
8850 0
8851 }
8852 }
8853
8854 impl fidl::encoding::ValueTypeMarker for BorderRoutingRouter {
8855 type Borrowed<'a> = &'a Self;
8856 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
8857 value
8858 }
8859 }
8860
8861 unsafe impl fidl::encoding::TypeMarker for BorderRoutingRouter {
8862 type Owned = Self;
8863
8864 #[inline(always)]
8865 fn inline_align(_context: fidl::encoding::Context) -> usize {
8866 8
8867 }
8868
8869 #[inline(always)]
8870 fn inline_size(_context: fidl::encoding::Context) -> usize {
8871 16
8872 }
8873 }
8874
8875 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<BorderRoutingRouter, D>
8876 for &BorderRoutingRouter
8877 {
8878 unsafe fn encode(
8879 self,
8880 encoder: &mut fidl::encoding::Encoder<'_, D>,
8881 offset: usize,
8882 mut depth: fidl::encoding::Depth,
8883 ) -> fidl::Result<()> {
8884 encoder.debug_check_bounds::<BorderRoutingRouter>(offset);
8885 let max_ordinal: u64 = self.max_ordinal_present();
8887 encoder.write_num(max_ordinal, offset);
8888 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
8889 if max_ordinal == 0 {
8891 return Ok(());
8892 }
8893 depth.increment()?;
8894 let envelope_size = 8;
8895 let bytes_len = max_ordinal as usize * envelope_size;
8896 #[allow(unused_variables)]
8897 let offset = encoder.out_of_line_offset(bytes_len);
8898 let mut _prev_end_offset: usize = 0;
8899 if 1 > max_ordinal {
8900 return Ok(());
8901 }
8902
8903 let cur_offset: usize = (1 - 1) * envelope_size;
8906
8907 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8909
8910 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<64>, D>(
8915 self.address.as_ref().map(
8916 <fidl::encoding::BoundedString<64> as fidl::encoding::ValueTypeMarker>::borrow,
8917 ),
8918 encoder,
8919 offset + cur_offset,
8920 depth,
8921 )?;
8922
8923 _prev_end_offset = cur_offset + envelope_size;
8924 if 2 > max_ordinal {
8925 return Ok(());
8926 }
8927
8928 let cur_offset: usize = (2 - 1) * envelope_size;
8931
8932 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8934
8935 fidl::encoding::encode_in_envelope_optional::<i64, D>(
8940 self.duration_since_last_update
8941 .as_ref()
8942 .map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
8943 encoder,
8944 offset + cur_offset,
8945 depth,
8946 )?;
8947
8948 _prev_end_offset = cur_offset + envelope_size;
8949 if 3 > max_ordinal {
8950 return Ok(());
8951 }
8952
8953 let cur_offset: usize = (3 - 1) * envelope_size;
8956
8957 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8959
8960 fidl::encoding::encode_in_envelope_optional::<i64, D>(
8965 self.age.as_ref().map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
8966 encoder,
8967 offset + cur_offset,
8968 depth,
8969 )?;
8970
8971 _prev_end_offset = cur_offset + envelope_size;
8972 if 4 > max_ordinal {
8973 return Ok(());
8974 }
8975
8976 let cur_offset: usize = (4 - 1) * envelope_size;
8979
8980 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8982
8983 fidl::encoding::encode_in_envelope_optional::<bool, D>(
8988 self.managed_address_config_flag
8989 .as_ref()
8990 .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
8991 encoder,
8992 offset + cur_offset,
8993 depth,
8994 )?;
8995
8996 _prev_end_offset = cur_offset + envelope_size;
8997 if 5 > max_ordinal {
8998 return Ok(());
8999 }
9000
9001 let cur_offset: usize = (5 - 1) * envelope_size;
9004
9005 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9007
9008 fidl::encoding::encode_in_envelope_optional::<bool, D>(
9013 self.other_config_flag
9014 .as_ref()
9015 .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
9016 encoder,
9017 offset + cur_offset,
9018 depth,
9019 )?;
9020
9021 _prev_end_offset = cur_offset + envelope_size;
9022 if 6 > max_ordinal {
9023 return Ok(());
9024 }
9025
9026 let cur_offset: usize = (6 - 1) * envelope_size;
9029
9030 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9032
9033 fidl::encoding::encode_in_envelope_optional::<bool, D>(
9038 self.snac_router_flag
9039 .as_ref()
9040 .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 if 7 > max_ordinal {
9048 return Ok(());
9049 }
9050
9051 let cur_offset: usize = (7 - 1) * envelope_size;
9054
9055 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9057
9058 fidl::encoding::encode_in_envelope_optional::<bool, D>(
9063 self.is_local_device
9064 .as_ref()
9065 .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
9066 encoder,
9067 offset + cur_offset,
9068 depth,
9069 )?;
9070
9071 _prev_end_offset = cur_offset + envelope_size;
9072 if 8 > max_ordinal {
9073 return Ok(());
9074 }
9075
9076 let cur_offset: usize = (8 - 1) * envelope_size;
9079
9080 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9082
9083 fidl::encoding::encode_in_envelope_optional::<bool, D>(
9088 self.is_reachable.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
9089 encoder,
9090 offset + cur_offset,
9091 depth,
9092 )?;
9093
9094 _prev_end_offset = cur_offset + envelope_size;
9095 if 9 > max_ordinal {
9096 return Ok(());
9097 }
9098
9099 let cur_offset: usize = (9 - 1) * envelope_size;
9102
9103 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9105
9106 fidl::encoding::encode_in_envelope_optional::<bool, D>(
9111 self.is_peer_br.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
9112 encoder,
9113 offset + cur_offset,
9114 depth,
9115 )?;
9116
9117 _prev_end_offset = cur_offset + envelope_size;
9118
9119 Ok(())
9120 }
9121 }
9122
9123 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for BorderRoutingRouter {
9124 #[inline(always)]
9125 fn new_empty() -> Self {
9126 Self::default()
9127 }
9128
9129 unsafe fn decode(
9130 &mut self,
9131 decoder: &mut fidl::encoding::Decoder<'_, D>,
9132 offset: usize,
9133 mut depth: fidl::encoding::Depth,
9134 ) -> fidl::Result<()> {
9135 decoder.debug_check_bounds::<Self>(offset);
9136 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
9137 None => return Err(fidl::Error::NotNullable),
9138 Some(len) => len,
9139 };
9140 if len == 0 {
9142 return Ok(());
9143 };
9144 depth.increment()?;
9145 let envelope_size = 8;
9146 let bytes_len = len * envelope_size;
9147 let offset = decoder.out_of_line_offset(bytes_len)?;
9148 let mut _next_ordinal_to_read = 0;
9150 let mut next_offset = offset;
9151 let end_offset = offset + bytes_len;
9152 _next_ordinal_to_read += 1;
9153 if next_offset >= end_offset {
9154 return Ok(());
9155 }
9156
9157 while _next_ordinal_to_read < 1 {
9159 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9160 _next_ordinal_to_read += 1;
9161 next_offset += envelope_size;
9162 }
9163
9164 let next_out_of_line = decoder.next_out_of_line();
9165 let handles_before = decoder.remaining_handles();
9166 if let Some((inlined, num_bytes, num_handles)) =
9167 fidl::encoding::decode_envelope_header(decoder, next_offset)?
9168 {
9169 let member_inline_size =
9170 <fidl::encoding::BoundedString<64> as fidl::encoding::TypeMarker>::inline_size(
9171 decoder.context,
9172 );
9173 if inlined != (member_inline_size <= 4) {
9174 return Err(fidl::Error::InvalidInlineBitInEnvelope);
9175 }
9176 let inner_offset;
9177 let mut inner_depth = depth.clone();
9178 if inlined {
9179 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9180 inner_offset = next_offset;
9181 } else {
9182 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9183 inner_depth.increment()?;
9184 }
9185 let val_ref = self
9186 .address
9187 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<64>, D));
9188 fidl::decode!(
9189 fidl::encoding::BoundedString<64>,
9190 D,
9191 val_ref,
9192 decoder,
9193 inner_offset,
9194 inner_depth
9195 )?;
9196 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9197 {
9198 return Err(fidl::Error::InvalidNumBytesInEnvelope);
9199 }
9200 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9201 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9202 }
9203 }
9204
9205 next_offset += envelope_size;
9206 _next_ordinal_to_read += 1;
9207 if next_offset >= end_offset {
9208 return Ok(());
9209 }
9210
9211 while _next_ordinal_to_read < 2 {
9213 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9214 _next_ordinal_to_read += 1;
9215 next_offset += envelope_size;
9216 }
9217
9218 let next_out_of_line = decoder.next_out_of_line();
9219 let handles_before = decoder.remaining_handles();
9220 if let Some((inlined, num_bytes, num_handles)) =
9221 fidl::encoding::decode_envelope_header(decoder, next_offset)?
9222 {
9223 let member_inline_size =
9224 <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
9225 if inlined != (member_inline_size <= 4) {
9226 return Err(fidl::Error::InvalidInlineBitInEnvelope);
9227 }
9228 let inner_offset;
9229 let mut inner_depth = depth.clone();
9230 if inlined {
9231 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9232 inner_offset = next_offset;
9233 } else {
9234 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9235 inner_depth.increment()?;
9236 }
9237 let val_ref =
9238 self.duration_since_last_update.get_or_insert_with(|| fidl::new_empty!(i64, D));
9239 fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
9240 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9241 {
9242 return Err(fidl::Error::InvalidNumBytesInEnvelope);
9243 }
9244 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9245 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9246 }
9247 }
9248
9249 next_offset += envelope_size;
9250 _next_ordinal_to_read += 1;
9251 if next_offset >= end_offset {
9252 return Ok(());
9253 }
9254
9255 while _next_ordinal_to_read < 3 {
9257 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9258 _next_ordinal_to_read += 1;
9259 next_offset += envelope_size;
9260 }
9261
9262 let next_out_of_line = decoder.next_out_of_line();
9263 let handles_before = decoder.remaining_handles();
9264 if let Some((inlined, num_bytes, num_handles)) =
9265 fidl::encoding::decode_envelope_header(decoder, next_offset)?
9266 {
9267 let member_inline_size =
9268 <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
9269 if inlined != (member_inline_size <= 4) {
9270 return Err(fidl::Error::InvalidInlineBitInEnvelope);
9271 }
9272 let inner_offset;
9273 let mut inner_depth = depth.clone();
9274 if inlined {
9275 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9276 inner_offset = next_offset;
9277 } else {
9278 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9279 inner_depth.increment()?;
9280 }
9281 let val_ref = self.age.get_or_insert_with(|| fidl::new_empty!(i64, D));
9282 fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
9283 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9284 {
9285 return Err(fidl::Error::InvalidNumBytesInEnvelope);
9286 }
9287 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9288 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9289 }
9290 }
9291
9292 next_offset += envelope_size;
9293 _next_ordinal_to_read += 1;
9294 if next_offset >= end_offset {
9295 return Ok(());
9296 }
9297
9298 while _next_ordinal_to_read < 4 {
9300 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9301 _next_ordinal_to_read += 1;
9302 next_offset += envelope_size;
9303 }
9304
9305 let next_out_of_line = decoder.next_out_of_line();
9306 let handles_before = decoder.remaining_handles();
9307 if let Some((inlined, num_bytes, num_handles)) =
9308 fidl::encoding::decode_envelope_header(decoder, next_offset)?
9309 {
9310 let member_inline_size =
9311 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
9312 if inlined != (member_inline_size <= 4) {
9313 return Err(fidl::Error::InvalidInlineBitInEnvelope);
9314 }
9315 let inner_offset;
9316 let mut inner_depth = depth.clone();
9317 if inlined {
9318 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9319 inner_offset = next_offset;
9320 } else {
9321 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9322 inner_depth.increment()?;
9323 }
9324 let val_ref = self
9325 .managed_address_config_flag
9326 .get_or_insert_with(|| fidl::new_empty!(bool, D));
9327 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
9328 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9329 {
9330 return Err(fidl::Error::InvalidNumBytesInEnvelope);
9331 }
9332 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9333 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9334 }
9335 }
9336
9337 next_offset += envelope_size;
9338 _next_ordinal_to_read += 1;
9339 if next_offset >= end_offset {
9340 return Ok(());
9341 }
9342
9343 while _next_ordinal_to_read < 5 {
9345 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9346 _next_ordinal_to_read += 1;
9347 next_offset += envelope_size;
9348 }
9349
9350 let next_out_of_line = decoder.next_out_of_line();
9351 let handles_before = decoder.remaining_handles();
9352 if let Some((inlined, num_bytes, num_handles)) =
9353 fidl::encoding::decode_envelope_header(decoder, next_offset)?
9354 {
9355 let member_inline_size =
9356 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
9357 if inlined != (member_inline_size <= 4) {
9358 return Err(fidl::Error::InvalidInlineBitInEnvelope);
9359 }
9360 let inner_offset;
9361 let mut inner_depth = depth.clone();
9362 if inlined {
9363 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9364 inner_offset = next_offset;
9365 } else {
9366 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9367 inner_depth.increment()?;
9368 }
9369 let val_ref =
9370 self.other_config_flag.get_or_insert_with(|| fidl::new_empty!(bool, D));
9371 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
9372 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9373 {
9374 return Err(fidl::Error::InvalidNumBytesInEnvelope);
9375 }
9376 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9377 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9378 }
9379 }
9380
9381 next_offset += envelope_size;
9382 _next_ordinal_to_read += 1;
9383 if next_offset >= end_offset {
9384 return Ok(());
9385 }
9386
9387 while _next_ordinal_to_read < 6 {
9389 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9390 _next_ordinal_to_read += 1;
9391 next_offset += envelope_size;
9392 }
9393
9394 let next_out_of_line = decoder.next_out_of_line();
9395 let handles_before = decoder.remaining_handles();
9396 if let Some((inlined, num_bytes, num_handles)) =
9397 fidl::encoding::decode_envelope_header(decoder, next_offset)?
9398 {
9399 let member_inline_size =
9400 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
9401 if inlined != (member_inline_size <= 4) {
9402 return Err(fidl::Error::InvalidInlineBitInEnvelope);
9403 }
9404 let inner_offset;
9405 let mut inner_depth = depth.clone();
9406 if inlined {
9407 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9408 inner_offset = next_offset;
9409 } else {
9410 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9411 inner_depth.increment()?;
9412 }
9413 let val_ref =
9414 self.snac_router_flag.get_or_insert_with(|| fidl::new_empty!(bool, D));
9415 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
9416 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9417 {
9418 return Err(fidl::Error::InvalidNumBytesInEnvelope);
9419 }
9420 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9421 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9422 }
9423 }
9424
9425 next_offset += envelope_size;
9426 _next_ordinal_to_read += 1;
9427 if next_offset >= end_offset {
9428 return Ok(());
9429 }
9430
9431 while _next_ordinal_to_read < 7 {
9433 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9434 _next_ordinal_to_read += 1;
9435 next_offset += envelope_size;
9436 }
9437
9438 let next_out_of_line = decoder.next_out_of_line();
9439 let handles_before = decoder.remaining_handles();
9440 if let Some((inlined, num_bytes, num_handles)) =
9441 fidl::encoding::decode_envelope_header(decoder, next_offset)?
9442 {
9443 let member_inline_size =
9444 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
9445 if inlined != (member_inline_size <= 4) {
9446 return Err(fidl::Error::InvalidInlineBitInEnvelope);
9447 }
9448 let inner_offset;
9449 let mut inner_depth = depth.clone();
9450 if inlined {
9451 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9452 inner_offset = next_offset;
9453 } else {
9454 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9455 inner_depth.increment()?;
9456 }
9457 let val_ref = self.is_local_device.get_or_insert_with(|| fidl::new_empty!(bool, D));
9458 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
9459 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9460 {
9461 return Err(fidl::Error::InvalidNumBytesInEnvelope);
9462 }
9463 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9464 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9465 }
9466 }
9467
9468 next_offset += envelope_size;
9469 _next_ordinal_to_read += 1;
9470 if next_offset >= end_offset {
9471 return Ok(());
9472 }
9473
9474 while _next_ordinal_to_read < 8 {
9476 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9477 _next_ordinal_to_read += 1;
9478 next_offset += envelope_size;
9479 }
9480
9481 let next_out_of_line = decoder.next_out_of_line();
9482 let handles_before = decoder.remaining_handles();
9483 if let Some((inlined, num_bytes, num_handles)) =
9484 fidl::encoding::decode_envelope_header(decoder, next_offset)?
9485 {
9486 let member_inline_size =
9487 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
9488 if inlined != (member_inline_size <= 4) {
9489 return Err(fidl::Error::InvalidInlineBitInEnvelope);
9490 }
9491 let inner_offset;
9492 let mut inner_depth = depth.clone();
9493 if inlined {
9494 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9495 inner_offset = next_offset;
9496 } else {
9497 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9498 inner_depth.increment()?;
9499 }
9500 let val_ref = self.is_reachable.get_or_insert_with(|| fidl::new_empty!(bool, D));
9501 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
9502 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9503 {
9504 return Err(fidl::Error::InvalidNumBytesInEnvelope);
9505 }
9506 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9507 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9508 }
9509 }
9510
9511 next_offset += envelope_size;
9512 _next_ordinal_to_read += 1;
9513 if next_offset >= end_offset {
9514 return Ok(());
9515 }
9516
9517 while _next_ordinal_to_read < 9 {
9519 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9520 _next_ordinal_to_read += 1;
9521 next_offset += envelope_size;
9522 }
9523
9524 let next_out_of_line = decoder.next_out_of_line();
9525 let handles_before = decoder.remaining_handles();
9526 if let Some((inlined, num_bytes, num_handles)) =
9527 fidl::encoding::decode_envelope_header(decoder, next_offset)?
9528 {
9529 let member_inline_size =
9530 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
9531 if inlined != (member_inline_size <= 4) {
9532 return Err(fidl::Error::InvalidInlineBitInEnvelope);
9533 }
9534 let inner_offset;
9535 let mut inner_depth = depth.clone();
9536 if inlined {
9537 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9538 inner_offset = next_offset;
9539 } else {
9540 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9541 inner_depth.increment()?;
9542 }
9543 let val_ref = self.is_peer_br.get_or_insert_with(|| fidl::new_empty!(bool, D));
9544 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
9545 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9546 {
9547 return Err(fidl::Error::InvalidNumBytesInEnvelope);
9548 }
9549 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9550 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9551 }
9552 }
9553
9554 next_offset += envelope_size;
9555
9556 while next_offset < end_offset {
9558 _next_ordinal_to_read += 1;
9559 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9560 next_offset += envelope_size;
9561 }
9562
9563 Ok(())
9564 }
9565 }
9566
9567 impl BufferInfo {
9568 #[inline(always)]
9569 fn max_ordinal_present(&self) -> u64 {
9570 if let Some(_) = self.msg_application_coap_queue {
9571 return 11;
9572 }
9573 if let Some(_) = self.msg_coap_secure_queue {
9574 return 10;
9575 }
9576 if let Some(_) = self.msg_coap_queue {
9577 return 9;
9578 }
9579 if let Some(_) = self.msg_mle_queue {
9580 return 8;
9581 }
9582 if let Some(_) = self.msg_mpl_queue {
9583 return 7;
9584 }
9585 if let Some(_) = self.msg_ip6_queue {
9586 return 6;
9587 }
9588 if let Some(_) = self.msg_6lo_reassembly_queue {
9589 return 5;
9590 }
9591 if let Some(_) = self.msg_6lo_send_queue {
9592 return 4;
9593 }
9594 if let Some(_) = self.msg_max_used_buffers {
9595 return 3;
9596 }
9597 if let Some(_) = self.msg_free_buffers {
9598 return 2;
9599 }
9600 if let Some(_) = self.msg_total_buffers {
9601 return 1;
9602 }
9603 0
9604 }
9605 }
9606
9607 impl fidl::encoding::ValueTypeMarker for BufferInfo {
9608 type Borrowed<'a> = &'a Self;
9609 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
9610 value
9611 }
9612 }
9613
9614 unsafe impl fidl::encoding::TypeMarker for BufferInfo {
9615 type Owned = Self;
9616
9617 #[inline(always)]
9618 fn inline_align(_context: fidl::encoding::Context) -> usize {
9619 8
9620 }
9621
9622 #[inline(always)]
9623 fn inline_size(_context: fidl::encoding::Context) -> usize {
9624 16
9625 }
9626 }
9627
9628 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<BufferInfo, D>
9629 for &BufferInfo
9630 {
9631 unsafe fn encode(
9632 self,
9633 encoder: &mut fidl::encoding::Encoder<'_, D>,
9634 offset: usize,
9635 mut depth: fidl::encoding::Depth,
9636 ) -> fidl::Result<()> {
9637 encoder.debug_check_bounds::<BufferInfo>(offset);
9638 let max_ordinal: u64 = self.max_ordinal_present();
9640 encoder.write_num(max_ordinal, offset);
9641 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
9642 if max_ordinal == 0 {
9644 return Ok(());
9645 }
9646 depth.increment()?;
9647 let envelope_size = 8;
9648 let bytes_len = max_ordinal as usize * envelope_size;
9649 #[allow(unused_variables)]
9650 let offset = encoder.out_of_line_offset(bytes_len);
9651 let mut _prev_end_offset: usize = 0;
9652 if 1 > max_ordinal {
9653 return Ok(());
9654 }
9655
9656 let cur_offset: usize = (1 - 1) * envelope_size;
9659
9660 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9662
9663 fidl::encoding::encode_in_envelope_optional::<u16, D>(
9668 self.msg_total_buffers
9669 .as_ref()
9670 .map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
9671 encoder,
9672 offset + cur_offset,
9673 depth,
9674 )?;
9675
9676 _prev_end_offset = cur_offset + envelope_size;
9677 if 2 > max_ordinal {
9678 return Ok(());
9679 }
9680
9681 let cur_offset: usize = (2 - 1) * envelope_size;
9684
9685 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9687
9688 fidl::encoding::encode_in_envelope_optional::<u16, D>(
9693 self.msg_free_buffers
9694 .as_ref()
9695 .map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
9696 encoder,
9697 offset + cur_offset,
9698 depth,
9699 )?;
9700
9701 _prev_end_offset = cur_offset + envelope_size;
9702 if 3 > max_ordinal {
9703 return Ok(());
9704 }
9705
9706 let cur_offset: usize = (3 - 1) * envelope_size;
9709
9710 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9712
9713 fidl::encoding::encode_in_envelope_optional::<u16, D>(
9718 self.msg_max_used_buffers
9719 .as_ref()
9720 .map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
9721 encoder,
9722 offset + cur_offset,
9723 depth,
9724 )?;
9725
9726 _prev_end_offset = cur_offset + envelope_size;
9727 if 4 > max_ordinal {
9728 return Ok(());
9729 }
9730
9731 let cur_offset: usize = (4 - 1) * envelope_size;
9734
9735 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9737
9738 fidl::encoding::encode_in_envelope_optional::<MessageQueueInfo, D>(
9743 self.msg_6lo_send_queue
9744 .as_ref()
9745 .map(<MessageQueueInfo as fidl::encoding::ValueTypeMarker>::borrow),
9746 encoder,
9747 offset + cur_offset,
9748 depth,
9749 )?;
9750
9751 _prev_end_offset = cur_offset + envelope_size;
9752 if 5 > max_ordinal {
9753 return Ok(());
9754 }
9755
9756 let cur_offset: usize = (5 - 1) * envelope_size;
9759
9760 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9762
9763 fidl::encoding::encode_in_envelope_optional::<MessageQueueInfo, D>(
9768 self.msg_6lo_reassembly_queue
9769 .as_ref()
9770 .map(<MessageQueueInfo as fidl::encoding::ValueTypeMarker>::borrow),
9771 encoder,
9772 offset + cur_offset,
9773 depth,
9774 )?;
9775
9776 _prev_end_offset = cur_offset + envelope_size;
9777 if 6 > max_ordinal {
9778 return Ok(());
9779 }
9780
9781 let cur_offset: usize = (6 - 1) * envelope_size;
9784
9785 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9787
9788 fidl::encoding::encode_in_envelope_optional::<MessageQueueInfo, D>(
9793 self.msg_ip6_queue
9794 .as_ref()
9795 .map(<MessageQueueInfo as fidl::encoding::ValueTypeMarker>::borrow),
9796 encoder,
9797 offset + cur_offset,
9798 depth,
9799 )?;
9800
9801 _prev_end_offset = cur_offset + envelope_size;
9802 if 7 > max_ordinal {
9803 return Ok(());
9804 }
9805
9806 let cur_offset: usize = (7 - 1) * envelope_size;
9809
9810 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9812
9813 fidl::encoding::encode_in_envelope_optional::<MessageQueueInfo, D>(
9818 self.msg_mpl_queue
9819 .as_ref()
9820 .map(<MessageQueueInfo as fidl::encoding::ValueTypeMarker>::borrow),
9821 encoder,
9822 offset + cur_offset,
9823 depth,
9824 )?;
9825
9826 _prev_end_offset = cur_offset + envelope_size;
9827 if 8 > max_ordinal {
9828 return Ok(());
9829 }
9830
9831 let cur_offset: usize = (8 - 1) * envelope_size;
9834
9835 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9837
9838 fidl::encoding::encode_in_envelope_optional::<MessageQueueInfo, D>(
9843 self.msg_mle_queue
9844 .as_ref()
9845 .map(<MessageQueueInfo as fidl::encoding::ValueTypeMarker>::borrow),
9846 encoder,
9847 offset + cur_offset,
9848 depth,
9849 )?;
9850
9851 _prev_end_offset = cur_offset + envelope_size;
9852 if 9 > max_ordinal {
9853 return Ok(());
9854 }
9855
9856 let cur_offset: usize = (9 - 1) * envelope_size;
9859
9860 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9862
9863 fidl::encoding::encode_in_envelope_optional::<MessageQueueInfo, D>(
9868 self.msg_coap_queue
9869 .as_ref()
9870 .map(<MessageQueueInfo as fidl::encoding::ValueTypeMarker>::borrow),
9871 encoder,
9872 offset + cur_offset,
9873 depth,
9874 )?;
9875
9876 _prev_end_offset = cur_offset + envelope_size;
9877 if 10 > max_ordinal {
9878 return Ok(());
9879 }
9880
9881 let cur_offset: usize = (10 - 1) * envelope_size;
9884
9885 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9887
9888 fidl::encoding::encode_in_envelope_optional::<MessageQueueInfo, D>(
9893 self.msg_coap_secure_queue
9894 .as_ref()
9895 .map(<MessageQueueInfo as fidl::encoding::ValueTypeMarker>::borrow),
9896 encoder,
9897 offset + cur_offset,
9898 depth,
9899 )?;
9900
9901 _prev_end_offset = cur_offset + envelope_size;
9902 if 11 > max_ordinal {
9903 return Ok(());
9904 }
9905
9906 let cur_offset: usize = (11 - 1) * envelope_size;
9909
9910 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9912
9913 fidl::encoding::encode_in_envelope_optional::<MessageQueueInfo, D>(
9918 self.msg_application_coap_queue
9919 .as_ref()
9920 .map(<MessageQueueInfo as fidl::encoding::ValueTypeMarker>::borrow),
9921 encoder,
9922 offset + cur_offset,
9923 depth,
9924 )?;
9925
9926 _prev_end_offset = cur_offset + envelope_size;
9927
9928 Ok(())
9929 }
9930 }
9931
9932 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for BufferInfo {
9933 #[inline(always)]
9934 fn new_empty() -> Self {
9935 Self::default()
9936 }
9937
9938 unsafe fn decode(
9939 &mut self,
9940 decoder: &mut fidl::encoding::Decoder<'_, D>,
9941 offset: usize,
9942 mut depth: fidl::encoding::Depth,
9943 ) -> fidl::Result<()> {
9944 decoder.debug_check_bounds::<Self>(offset);
9945 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
9946 None => return Err(fidl::Error::NotNullable),
9947 Some(len) => len,
9948 };
9949 if len == 0 {
9951 return Ok(());
9952 };
9953 depth.increment()?;
9954 let envelope_size = 8;
9955 let bytes_len = len * envelope_size;
9956 let offset = decoder.out_of_line_offset(bytes_len)?;
9957 let mut _next_ordinal_to_read = 0;
9959 let mut next_offset = offset;
9960 let end_offset = offset + bytes_len;
9961 _next_ordinal_to_read += 1;
9962 if next_offset >= end_offset {
9963 return Ok(());
9964 }
9965
9966 while _next_ordinal_to_read < 1 {
9968 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9969 _next_ordinal_to_read += 1;
9970 next_offset += envelope_size;
9971 }
9972
9973 let next_out_of_line = decoder.next_out_of_line();
9974 let handles_before = decoder.remaining_handles();
9975 if let Some((inlined, num_bytes, num_handles)) =
9976 fidl::encoding::decode_envelope_header(decoder, next_offset)?
9977 {
9978 let member_inline_size =
9979 <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
9980 if inlined != (member_inline_size <= 4) {
9981 return Err(fidl::Error::InvalidInlineBitInEnvelope);
9982 }
9983 let inner_offset;
9984 let mut inner_depth = depth.clone();
9985 if inlined {
9986 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9987 inner_offset = next_offset;
9988 } else {
9989 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9990 inner_depth.increment()?;
9991 }
9992 let val_ref =
9993 self.msg_total_buffers.get_or_insert_with(|| fidl::new_empty!(u16, D));
9994 fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
9995 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9996 {
9997 return Err(fidl::Error::InvalidNumBytesInEnvelope);
9998 }
9999 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10000 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10001 }
10002 }
10003
10004 next_offset += envelope_size;
10005 _next_ordinal_to_read += 1;
10006 if next_offset >= end_offset {
10007 return Ok(());
10008 }
10009
10010 while _next_ordinal_to_read < 2 {
10012 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10013 _next_ordinal_to_read += 1;
10014 next_offset += envelope_size;
10015 }
10016
10017 let next_out_of_line = decoder.next_out_of_line();
10018 let handles_before = decoder.remaining_handles();
10019 if let Some((inlined, num_bytes, num_handles)) =
10020 fidl::encoding::decode_envelope_header(decoder, next_offset)?
10021 {
10022 let member_inline_size =
10023 <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
10024 if inlined != (member_inline_size <= 4) {
10025 return Err(fidl::Error::InvalidInlineBitInEnvelope);
10026 }
10027 let inner_offset;
10028 let mut inner_depth = depth.clone();
10029 if inlined {
10030 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10031 inner_offset = next_offset;
10032 } else {
10033 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10034 inner_depth.increment()?;
10035 }
10036 let val_ref = self.msg_free_buffers.get_or_insert_with(|| fidl::new_empty!(u16, D));
10037 fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
10038 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10039 {
10040 return Err(fidl::Error::InvalidNumBytesInEnvelope);
10041 }
10042 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10043 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10044 }
10045 }
10046
10047 next_offset += envelope_size;
10048 _next_ordinal_to_read += 1;
10049 if next_offset >= end_offset {
10050 return Ok(());
10051 }
10052
10053 while _next_ordinal_to_read < 3 {
10055 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10056 _next_ordinal_to_read += 1;
10057 next_offset += envelope_size;
10058 }
10059
10060 let next_out_of_line = decoder.next_out_of_line();
10061 let handles_before = decoder.remaining_handles();
10062 if let Some((inlined, num_bytes, num_handles)) =
10063 fidl::encoding::decode_envelope_header(decoder, next_offset)?
10064 {
10065 let member_inline_size =
10066 <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
10067 if inlined != (member_inline_size <= 4) {
10068 return Err(fidl::Error::InvalidInlineBitInEnvelope);
10069 }
10070 let inner_offset;
10071 let mut inner_depth = depth.clone();
10072 if inlined {
10073 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10074 inner_offset = next_offset;
10075 } else {
10076 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10077 inner_depth.increment()?;
10078 }
10079 let val_ref =
10080 self.msg_max_used_buffers.get_or_insert_with(|| fidl::new_empty!(u16, D));
10081 fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
10082 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10083 {
10084 return Err(fidl::Error::InvalidNumBytesInEnvelope);
10085 }
10086 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10087 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10088 }
10089 }
10090
10091 next_offset += envelope_size;
10092 _next_ordinal_to_read += 1;
10093 if next_offset >= end_offset {
10094 return Ok(());
10095 }
10096
10097 while _next_ordinal_to_read < 4 {
10099 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10100 _next_ordinal_to_read += 1;
10101 next_offset += envelope_size;
10102 }
10103
10104 let next_out_of_line = decoder.next_out_of_line();
10105 let handles_before = decoder.remaining_handles();
10106 if let Some((inlined, num_bytes, num_handles)) =
10107 fidl::encoding::decode_envelope_header(decoder, next_offset)?
10108 {
10109 let member_inline_size =
10110 <MessageQueueInfo as fidl::encoding::TypeMarker>::inline_size(decoder.context);
10111 if inlined != (member_inline_size <= 4) {
10112 return Err(fidl::Error::InvalidInlineBitInEnvelope);
10113 }
10114 let inner_offset;
10115 let mut inner_depth = depth.clone();
10116 if inlined {
10117 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10118 inner_offset = next_offset;
10119 } else {
10120 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10121 inner_depth.increment()?;
10122 }
10123 let val_ref = self
10124 .msg_6lo_send_queue
10125 .get_or_insert_with(|| fidl::new_empty!(MessageQueueInfo, D));
10126 fidl::decode!(MessageQueueInfo, D, val_ref, decoder, inner_offset, inner_depth)?;
10127 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10128 {
10129 return Err(fidl::Error::InvalidNumBytesInEnvelope);
10130 }
10131 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10132 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10133 }
10134 }
10135
10136 next_offset += envelope_size;
10137 _next_ordinal_to_read += 1;
10138 if next_offset >= end_offset {
10139 return Ok(());
10140 }
10141
10142 while _next_ordinal_to_read < 5 {
10144 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10145 _next_ordinal_to_read += 1;
10146 next_offset += envelope_size;
10147 }
10148
10149 let next_out_of_line = decoder.next_out_of_line();
10150 let handles_before = decoder.remaining_handles();
10151 if let Some((inlined, num_bytes, num_handles)) =
10152 fidl::encoding::decode_envelope_header(decoder, next_offset)?
10153 {
10154 let member_inline_size =
10155 <MessageQueueInfo as fidl::encoding::TypeMarker>::inline_size(decoder.context);
10156 if inlined != (member_inline_size <= 4) {
10157 return Err(fidl::Error::InvalidInlineBitInEnvelope);
10158 }
10159 let inner_offset;
10160 let mut inner_depth = depth.clone();
10161 if inlined {
10162 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10163 inner_offset = next_offset;
10164 } else {
10165 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10166 inner_depth.increment()?;
10167 }
10168 let val_ref = self
10169 .msg_6lo_reassembly_queue
10170 .get_or_insert_with(|| fidl::new_empty!(MessageQueueInfo, D));
10171 fidl::decode!(MessageQueueInfo, D, val_ref, decoder, inner_offset, inner_depth)?;
10172 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10173 {
10174 return Err(fidl::Error::InvalidNumBytesInEnvelope);
10175 }
10176 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10177 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10178 }
10179 }
10180
10181 next_offset += envelope_size;
10182 _next_ordinal_to_read += 1;
10183 if next_offset >= end_offset {
10184 return Ok(());
10185 }
10186
10187 while _next_ordinal_to_read < 6 {
10189 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10190 _next_ordinal_to_read += 1;
10191 next_offset += envelope_size;
10192 }
10193
10194 let next_out_of_line = decoder.next_out_of_line();
10195 let handles_before = decoder.remaining_handles();
10196 if let Some((inlined, num_bytes, num_handles)) =
10197 fidl::encoding::decode_envelope_header(decoder, next_offset)?
10198 {
10199 let member_inline_size =
10200 <MessageQueueInfo as fidl::encoding::TypeMarker>::inline_size(decoder.context);
10201 if inlined != (member_inline_size <= 4) {
10202 return Err(fidl::Error::InvalidInlineBitInEnvelope);
10203 }
10204 let inner_offset;
10205 let mut inner_depth = depth.clone();
10206 if inlined {
10207 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10208 inner_offset = next_offset;
10209 } else {
10210 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10211 inner_depth.increment()?;
10212 }
10213 let val_ref =
10214 self.msg_ip6_queue.get_or_insert_with(|| fidl::new_empty!(MessageQueueInfo, D));
10215 fidl::decode!(MessageQueueInfo, D, val_ref, decoder, inner_offset, inner_depth)?;
10216 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10217 {
10218 return Err(fidl::Error::InvalidNumBytesInEnvelope);
10219 }
10220 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10221 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10222 }
10223 }
10224
10225 next_offset += envelope_size;
10226 _next_ordinal_to_read += 1;
10227 if next_offset >= end_offset {
10228 return Ok(());
10229 }
10230
10231 while _next_ordinal_to_read < 7 {
10233 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10234 _next_ordinal_to_read += 1;
10235 next_offset += envelope_size;
10236 }
10237
10238 let next_out_of_line = decoder.next_out_of_line();
10239 let handles_before = decoder.remaining_handles();
10240 if let Some((inlined, num_bytes, num_handles)) =
10241 fidl::encoding::decode_envelope_header(decoder, next_offset)?
10242 {
10243 let member_inline_size =
10244 <MessageQueueInfo as fidl::encoding::TypeMarker>::inline_size(decoder.context);
10245 if inlined != (member_inline_size <= 4) {
10246 return Err(fidl::Error::InvalidInlineBitInEnvelope);
10247 }
10248 let inner_offset;
10249 let mut inner_depth = depth.clone();
10250 if inlined {
10251 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10252 inner_offset = next_offset;
10253 } else {
10254 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10255 inner_depth.increment()?;
10256 }
10257 let val_ref =
10258 self.msg_mpl_queue.get_or_insert_with(|| fidl::new_empty!(MessageQueueInfo, D));
10259 fidl::decode!(MessageQueueInfo, D, val_ref, decoder, inner_offset, inner_depth)?;
10260 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10261 {
10262 return Err(fidl::Error::InvalidNumBytesInEnvelope);
10263 }
10264 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10265 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10266 }
10267 }
10268
10269 next_offset += envelope_size;
10270 _next_ordinal_to_read += 1;
10271 if next_offset >= end_offset {
10272 return Ok(());
10273 }
10274
10275 while _next_ordinal_to_read < 8 {
10277 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10278 _next_ordinal_to_read += 1;
10279 next_offset += envelope_size;
10280 }
10281
10282 let next_out_of_line = decoder.next_out_of_line();
10283 let handles_before = decoder.remaining_handles();
10284 if let Some((inlined, num_bytes, num_handles)) =
10285 fidl::encoding::decode_envelope_header(decoder, next_offset)?
10286 {
10287 let member_inline_size =
10288 <MessageQueueInfo as fidl::encoding::TypeMarker>::inline_size(decoder.context);
10289 if inlined != (member_inline_size <= 4) {
10290 return Err(fidl::Error::InvalidInlineBitInEnvelope);
10291 }
10292 let inner_offset;
10293 let mut inner_depth = depth.clone();
10294 if inlined {
10295 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10296 inner_offset = next_offset;
10297 } else {
10298 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10299 inner_depth.increment()?;
10300 }
10301 let val_ref =
10302 self.msg_mle_queue.get_or_insert_with(|| fidl::new_empty!(MessageQueueInfo, D));
10303 fidl::decode!(MessageQueueInfo, D, val_ref, decoder, inner_offset, inner_depth)?;
10304 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10305 {
10306 return Err(fidl::Error::InvalidNumBytesInEnvelope);
10307 }
10308 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10309 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10310 }
10311 }
10312
10313 next_offset += envelope_size;
10314 _next_ordinal_to_read += 1;
10315 if next_offset >= end_offset {
10316 return Ok(());
10317 }
10318
10319 while _next_ordinal_to_read < 9 {
10321 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10322 _next_ordinal_to_read += 1;
10323 next_offset += envelope_size;
10324 }
10325
10326 let next_out_of_line = decoder.next_out_of_line();
10327 let handles_before = decoder.remaining_handles();
10328 if let Some((inlined, num_bytes, num_handles)) =
10329 fidl::encoding::decode_envelope_header(decoder, next_offset)?
10330 {
10331 let member_inline_size =
10332 <MessageQueueInfo as fidl::encoding::TypeMarker>::inline_size(decoder.context);
10333 if inlined != (member_inline_size <= 4) {
10334 return Err(fidl::Error::InvalidInlineBitInEnvelope);
10335 }
10336 let inner_offset;
10337 let mut inner_depth = depth.clone();
10338 if inlined {
10339 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10340 inner_offset = next_offset;
10341 } else {
10342 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10343 inner_depth.increment()?;
10344 }
10345 let val_ref = self
10346 .msg_coap_queue
10347 .get_or_insert_with(|| fidl::new_empty!(MessageQueueInfo, D));
10348 fidl::decode!(MessageQueueInfo, D, val_ref, decoder, inner_offset, inner_depth)?;
10349 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10350 {
10351 return Err(fidl::Error::InvalidNumBytesInEnvelope);
10352 }
10353 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10354 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10355 }
10356 }
10357
10358 next_offset += envelope_size;
10359 _next_ordinal_to_read += 1;
10360 if next_offset >= end_offset {
10361 return Ok(());
10362 }
10363
10364 while _next_ordinal_to_read < 10 {
10366 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10367 _next_ordinal_to_read += 1;
10368 next_offset += envelope_size;
10369 }
10370
10371 let next_out_of_line = decoder.next_out_of_line();
10372 let handles_before = decoder.remaining_handles();
10373 if let Some((inlined, num_bytes, num_handles)) =
10374 fidl::encoding::decode_envelope_header(decoder, next_offset)?
10375 {
10376 let member_inline_size =
10377 <MessageQueueInfo as fidl::encoding::TypeMarker>::inline_size(decoder.context);
10378 if inlined != (member_inline_size <= 4) {
10379 return Err(fidl::Error::InvalidInlineBitInEnvelope);
10380 }
10381 let inner_offset;
10382 let mut inner_depth = depth.clone();
10383 if inlined {
10384 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10385 inner_offset = next_offset;
10386 } else {
10387 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10388 inner_depth.increment()?;
10389 }
10390 let val_ref = self
10391 .msg_coap_secure_queue
10392 .get_or_insert_with(|| fidl::new_empty!(MessageQueueInfo, D));
10393 fidl::decode!(MessageQueueInfo, D, val_ref, decoder, inner_offset, inner_depth)?;
10394 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10395 {
10396 return Err(fidl::Error::InvalidNumBytesInEnvelope);
10397 }
10398 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10399 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10400 }
10401 }
10402
10403 next_offset += envelope_size;
10404 _next_ordinal_to_read += 1;
10405 if next_offset >= end_offset {
10406 return Ok(());
10407 }
10408
10409 while _next_ordinal_to_read < 11 {
10411 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10412 _next_ordinal_to_read += 1;
10413 next_offset += envelope_size;
10414 }
10415
10416 let next_out_of_line = decoder.next_out_of_line();
10417 let handles_before = decoder.remaining_handles();
10418 if let Some((inlined, num_bytes, num_handles)) =
10419 fidl::encoding::decode_envelope_header(decoder, next_offset)?
10420 {
10421 let member_inline_size =
10422 <MessageQueueInfo as fidl::encoding::TypeMarker>::inline_size(decoder.context);
10423 if inlined != (member_inline_size <= 4) {
10424 return Err(fidl::Error::InvalidInlineBitInEnvelope);
10425 }
10426 let inner_offset;
10427 let mut inner_depth = depth.clone();
10428 if inlined {
10429 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10430 inner_offset = next_offset;
10431 } else {
10432 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10433 inner_depth.increment()?;
10434 }
10435 let val_ref = self
10436 .msg_application_coap_queue
10437 .get_or_insert_with(|| fidl::new_empty!(MessageQueueInfo, D));
10438 fidl::decode!(MessageQueueInfo, 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
10450 while next_offset < end_offset {
10452 _next_ordinal_to_read += 1;
10453 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10454 next_offset += envelope_size;
10455 }
10456
10457 Ok(())
10458 }
10459 }
10460
10461 impl ChannelInfo {
10462 #[inline(always)]
10463 fn max_ordinal_present(&self) -> u64 {
10464 if let Some(_) = self.masked_by_regulatory_domain {
10465 return 6;
10466 }
10467 if let Some(_) = self.spectrum_bandwidth_hz {
10468 return 5;
10469 }
10470 if let Some(_) = self.spectrum_center_frequency_hz {
10471 return 4;
10472 }
10473 if let Some(_) = self.max_transmit_power_dbm {
10474 return 3;
10475 }
10476 if let Some(_) = self.id {
10477 return 2;
10478 }
10479 if let Some(_) = self.index {
10480 return 1;
10481 }
10482 0
10483 }
10484 }
10485
10486 impl fidl::encoding::ValueTypeMarker for ChannelInfo {
10487 type Borrowed<'a> = &'a Self;
10488 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
10489 value
10490 }
10491 }
10492
10493 unsafe impl fidl::encoding::TypeMarker for ChannelInfo {
10494 type Owned = Self;
10495
10496 #[inline(always)]
10497 fn inline_align(_context: fidl::encoding::Context) -> usize {
10498 8
10499 }
10500
10501 #[inline(always)]
10502 fn inline_size(_context: fidl::encoding::Context) -> usize {
10503 16
10504 }
10505 }
10506
10507 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ChannelInfo, D>
10508 for &ChannelInfo
10509 {
10510 unsafe fn encode(
10511 self,
10512 encoder: &mut fidl::encoding::Encoder<'_, D>,
10513 offset: usize,
10514 mut depth: fidl::encoding::Depth,
10515 ) -> fidl::Result<()> {
10516 encoder.debug_check_bounds::<ChannelInfo>(offset);
10517 let max_ordinal: u64 = self.max_ordinal_present();
10519 encoder.write_num(max_ordinal, offset);
10520 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
10521 if max_ordinal == 0 {
10523 return Ok(());
10524 }
10525 depth.increment()?;
10526 let envelope_size = 8;
10527 let bytes_len = max_ordinal as usize * envelope_size;
10528 #[allow(unused_variables)]
10529 let offset = encoder.out_of_line_offset(bytes_len);
10530 let mut _prev_end_offset: usize = 0;
10531 if 1 > max_ordinal {
10532 return Ok(());
10533 }
10534
10535 let cur_offset: usize = (1 - 1) * envelope_size;
10538
10539 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10541
10542 fidl::encoding::encode_in_envelope_optional::<u16, D>(
10547 self.index.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
10548 encoder,
10549 offset + cur_offset,
10550 depth,
10551 )?;
10552
10553 _prev_end_offset = cur_offset + envelope_size;
10554 if 2 > max_ordinal {
10555 return Ok(());
10556 }
10557
10558 let cur_offset: usize = (2 - 1) * envelope_size;
10561
10562 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10564
10565 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<16>, D>(
10570 self.id.as_ref().map(
10571 <fidl::encoding::BoundedString<16> as fidl::encoding::ValueTypeMarker>::borrow,
10572 ),
10573 encoder,
10574 offset + cur_offset,
10575 depth,
10576 )?;
10577
10578 _prev_end_offset = cur_offset + envelope_size;
10579 if 3 > max_ordinal {
10580 return Ok(());
10581 }
10582
10583 let cur_offset: usize = (3 - 1) * envelope_size;
10586
10587 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10589
10590 fidl::encoding::encode_in_envelope_optional::<i8, D>(
10595 self.max_transmit_power_dbm
10596 .as_ref()
10597 .map(<i8 as fidl::encoding::ValueTypeMarker>::borrow),
10598 encoder,
10599 offset + cur_offset,
10600 depth,
10601 )?;
10602
10603 _prev_end_offset = cur_offset + envelope_size;
10604 if 4 > max_ordinal {
10605 return Ok(());
10606 }
10607
10608 let cur_offset: usize = (4 - 1) * envelope_size;
10611
10612 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10614
10615 fidl::encoding::encode_in_envelope_optional::<u64, D>(
10620 self.spectrum_center_frequency_hz
10621 .as_ref()
10622 .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
10623 encoder,
10624 offset + cur_offset,
10625 depth,
10626 )?;
10627
10628 _prev_end_offset = cur_offset + envelope_size;
10629 if 5 > max_ordinal {
10630 return Ok(());
10631 }
10632
10633 let cur_offset: usize = (5 - 1) * envelope_size;
10636
10637 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10639
10640 fidl::encoding::encode_in_envelope_optional::<u64, D>(
10645 self.spectrum_bandwidth_hz
10646 .as_ref()
10647 .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
10648 encoder,
10649 offset + cur_offset,
10650 depth,
10651 )?;
10652
10653 _prev_end_offset = cur_offset + envelope_size;
10654 if 6 > max_ordinal {
10655 return Ok(());
10656 }
10657
10658 let cur_offset: usize = (6 - 1) * envelope_size;
10661
10662 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10664
10665 fidl::encoding::encode_in_envelope_optional::<bool, D>(
10670 self.masked_by_regulatory_domain
10671 .as_ref()
10672 .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
10673 encoder,
10674 offset + cur_offset,
10675 depth,
10676 )?;
10677
10678 _prev_end_offset = cur_offset + envelope_size;
10679
10680 Ok(())
10681 }
10682 }
10683
10684 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ChannelInfo {
10685 #[inline(always)]
10686 fn new_empty() -> Self {
10687 Self::default()
10688 }
10689
10690 unsafe fn decode(
10691 &mut self,
10692 decoder: &mut fidl::encoding::Decoder<'_, D>,
10693 offset: usize,
10694 mut depth: fidl::encoding::Depth,
10695 ) -> fidl::Result<()> {
10696 decoder.debug_check_bounds::<Self>(offset);
10697 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
10698 None => return Err(fidl::Error::NotNullable),
10699 Some(len) => len,
10700 };
10701 if len == 0 {
10703 return Ok(());
10704 };
10705 depth.increment()?;
10706 let envelope_size = 8;
10707 let bytes_len = len * envelope_size;
10708 let offset = decoder.out_of_line_offset(bytes_len)?;
10709 let mut _next_ordinal_to_read = 0;
10711 let mut next_offset = offset;
10712 let end_offset = offset + bytes_len;
10713 _next_ordinal_to_read += 1;
10714 if next_offset >= end_offset {
10715 return Ok(());
10716 }
10717
10718 while _next_ordinal_to_read < 1 {
10720 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10721 _next_ordinal_to_read += 1;
10722 next_offset += envelope_size;
10723 }
10724
10725 let next_out_of_line = decoder.next_out_of_line();
10726 let handles_before = decoder.remaining_handles();
10727 if let Some((inlined, num_bytes, num_handles)) =
10728 fidl::encoding::decode_envelope_header(decoder, next_offset)?
10729 {
10730 let member_inline_size =
10731 <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
10732 if inlined != (member_inline_size <= 4) {
10733 return Err(fidl::Error::InvalidInlineBitInEnvelope);
10734 }
10735 let inner_offset;
10736 let mut inner_depth = depth.clone();
10737 if inlined {
10738 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10739 inner_offset = next_offset;
10740 } else {
10741 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10742 inner_depth.increment()?;
10743 }
10744 let val_ref = self.index.get_or_insert_with(|| fidl::new_empty!(u16, D));
10745 fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
10746 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10747 {
10748 return Err(fidl::Error::InvalidNumBytesInEnvelope);
10749 }
10750 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10751 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10752 }
10753 }
10754
10755 next_offset += envelope_size;
10756 _next_ordinal_to_read += 1;
10757 if next_offset >= end_offset {
10758 return Ok(());
10759 }
10760
10761 while _next_ordinal_to_read < 2 {
10763 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10764 _next_ordinal_to_read += 1;
10765 next_offset += envelope_size;
10766 }
10767
10768 let next_out_of_line = decoder.next_out_of_line();
10769 let handles_before = decoder.remaining_handles();
10770 if let Some((inlined, num_bytes, num_handles)) =
10771 fidl::encoding::decode_envelope_header(decoder, next_offset)?
10772 {
10773 let member_inline_size =
10774 <fidl::encoding::BoundedString<16> as fidl::encoding::TypeMarker>::inline_size(
10775 decoder.context,
10776 );
10777 if inlined != (member_inline_size <= 4) {
10778 return Err(fidl::Error::InvalidInlineBitInEnvelope);
10779 }
10780 let inner_offset;
10781 let mut inner_depth = depth.clone();
10782 if inlined {
10783 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10784 inner_offset = next_offset;
10785 } else {
10786 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10787 inner_depth.increment()?;
10788 }
10789 let val_ref = self
10790 .id
10791 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<16>, D));
10792 fidl::decode!(
10793 fidl::encoding::BoundedString<16>,
10794 D,
10795 val_ref,
10796 decoder,
10797 inner_offset,
10798 inner_depth
10799 )?;
10800 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10801 {
10802 return Err(fidl::Error::InvalidNumBytesInEnvelope);
10803 }
10804 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10805 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10806 }
10807 }
10808
10809 next_offset += envelope_size;
10810 _next_ordinal_to_read += 1;
10811 if next_offset >= end_offset {
10812 return Ok(());
10813 }
10814
10815 while _next_ordinal_to_read < 3 {
10817 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10818 _next_ordinal_to_read += 1;
10819 next_offset += envelope_size;
10820 }
10821
10822 let next_out_of_line = decoder.next_out_of_line();
10823 let handles_before = decoder.remaining_handles();
10824 if let Some((inlined, num_bytes, num_handles)) =
10825 fidl::encoding::decode_envelope_header(decoder, next_offset)?
10826 {
10827 let member_inline_size =
10828 <i8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
10829 if inlined != (member_inline_size <= 4) {
10830 return Err(fidl::Error::InvalidInlineBitInEnvelope);
10831 }
10832 let inner_offset;
10833 let mut inner_depth = depth.clone();
10834 if inlined {
10835 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10836 inner_offset = next_offset;
10837 } else {
10838 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10839 inner_depth.increment()?;
10840 }
10841 let val_ref =
10842 self.max_transmit_power_dbm.get_or_insert_with(|| fidl::new_empty!(i8, D));
10843 fidl::decode!(i8, D, val_ref, decoder, inner_offset, inner_depth)?;
10844 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10845 {
10846 return Err(fidl::Error::InvalidNumBytesInEnvelope);
10847 }
10848 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10849 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10850 }
10851 }
10852
10853 next_offset += envelope_size;
10854 _next_ordinal_to_read += 1;
10855 if next_offset >= end_offset {
10856 return Ok(());
10857 }
10858
10859 while _next_ordinal_to_read < 4 {
10861 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10862 _next_ordinal_to_read += 1;
10863 next_offset += envelope_size;
10864 }
10865
10866 let next_out_of_line = decoder.next_out_of_line();
10867 let handles_before = decoder.remaining_handles();
10868 if let Some((inlined, num_bytes, num_handles)) =
10869 fidl::encoding::decode_envelope_header(decoder, next_offset)?
10870 {
10871 let member_inline_size =
10872 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
10873 if inlined != (member_inline_size <= 4) {
10874 return Err(fidl::Error::InvalidInlineBitInEnvelope);
10875 }
10876 let inner_offset;
10877 let mut inner_depth = depth.clone();
10878 if inlined {
10879 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10880 inner_offset = next_offset;
10881 } else {
10882 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10883 inner_depth.increment()?;
10884 }
10885 let val_ref = self
10886 .spectrum_center_frequency_hz
10887 .get_or_insert_with(|| fidl::new_empty!(u64, D));
10888 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
10889 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10890 {
10891 return Err(fidl::Error::InvalidNumBytesInEnvelope);
10892 }
10893 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10894 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10895 }
10896 }
10897
10898 next_offset += envelope_size;
10899 _next_ordinal_to_read += 1;
10900 if next_offset >= end_offset {
10901 return Ok(());
10902 }
10903
10904 while _next_ordinal_to_read < 5 {
10906 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10907 _next_ordinal_to_read += 1;
10908 next_offset += envelope_size;
10909 }
10910
10911 let next_out_of_line = decoder.next_out_of_line();
10912 let handles_before = decoder.remaining_handles();
10913 if let Some((inlined, num_bytes, num_handles)) =
10914 fidl::encoding::decode_envelope_header(decoder, next_offset)?
10915 {
10916 let member_inline_size =
10917 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
10918 if inlined != (member_inline_size <= 4) {
10919 return Err(fidl::Error::InvalidInlineBitInEnvelope);
10920 }
10921 let inner_offset;
10922 let mut inner_depth = depth.clone();
10923 if inlined {
10924 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10925 inner_offset = next_offset;
10926 } else {
10927 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10928 inner_depth.increment()?;
10929 }
10930 let val_ref =
10931 self.spectrum_bandwidth_hz.get_or_insert_with(|| fidl::new_empty!(u64, D));
10932 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
10933 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10934 {
10935 return Err(fidl::Error::InvalidNumBytesInEnvelope);
10936 }
10937 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10938 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10939 }
10940 }
10941
10942 next_offset += envelope_size;
10943 _next_ordinal_to_read += 1;
10944 if next_offset >= end_offset {
10945 return Ok(());
10946 }
10947
10948 while _next_ordinal_to_read < 6 {
10950 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10951 _next_ordinal_to_read += 1;
10952 next_offset += envelope_size;
10953 }
10954
10955 let next_out_of_line = decoder.next_out_of_line();
10956 let handles_before = decoder.remaining_handles();
10957 if let Some((inlined, num_bytes, num_handles)) =
10958 fidl::encoding::decode_envelope_header(decoder, next_offset)?
10959 {
10960 let member_inline_size =
10961 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
10962 if inlined != (member_inline_size <= 4) {
10963 return Err(fidl::Error::InvalidInlineBitInEnvelope);
10964 }
10965 let inner_offset;
10966 let mut inner_depth = depth.clone();
10967 if inlined {
10968 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10969 inner_offset = next_offset;
10970 } else {
10971 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10972 inner_depth.increment()?;
10973 }
10974 let val_ref = self
10975 .masked_by_regulatory_domain
10976 .get_or_insert_with(|| fidl::new_empty!(bool, D));
10977 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
10978 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10979 {
10980 return Err(fidl::Error::InvalidNumBytesInEnvelope);
10981 }
10982 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10983 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10984 }
10985 }
10986
10987 next_offset += envelope_size;
10988
10989 while next_offset < end_offset {
10991 _next_ordinal_to_read += 1;
10992 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10993 next_offset += envelope_size;
10994 }
10995
10996 Ok(())
10997 }
10998 }
10999
11000 impl CommissioningDataset {
11001 #[inline(always)]
11002 fn max_ordinal_present(&self) -> u64 {
11003 if let Some(_) = self.has_extra_tlv {
11004 return 9;
11005 }
11006 if let Some(_) = self.is_joiner_udp_port_set {
11007 return 8;
11008 }
11009 if let Some(_) = self.is_steering_data_set {
11010 return 7;
11011 }
11012 if let Some(_) = self.is_session_id_set {
11013 return 6;
11014 }
11015 if let Some(_) = self.is_locator_set {
11016 return 5;
11017 }
11018 if let Some(_) = self.joiner_udp_port {
11019 return 4;
11020 }
11021 if let Some(_) = self.steering_data {
11022 return 3;
11023 }
11024 if let Some(_) = self.session_id {
11025 return 2;
11026 }
11027 if let Some(_) = self.locator {
11028 return 1;
11029 }
11030 0
11031 }
11032 }
11033
11034 impl fidl::encoding::ValueTypeMarker for CommissioningDataset {
11035 type Borrowed<'a> = &'a Self;
11036 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
11037 value
11038 }
11039 }
11040
11041 unsafe impl fidl::encoding::TypeMarker for CommissioningDataset {
11042 type Owned = Self;
11043
11044 #[inline(always)]
11045 fn inline_align(_context: fidl::encoding::Context) -> usize {
11046 8
11047 }
11048
11049 #[inline(always)]
11050 fn inline_size(_context: fidl::encoding::Context) -> usize {
11051 16
11052 }
11053 }
11054
11055 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<CommissioningDataset, D>
11056 for &CommissioningDataset
11057 {
11058 unsafe fn encode(
11059 self,
11060 encoder: &mut fidl::encoding::Encoder<'_, D>,
11061 offset: usize,
11062 mut depth: fidl::encoding::Depth,
11063 ) -> fidl::Result<()> {
11064 encoder.debug_check_bounds::<CommissioningDataset>(offset);
11065 let max_ordinal: u64 = self.max_ordinal_present();
11067 encoder.write_num(max_ordinal, offset);
11068 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
11069 if max_ordinal == 0 {
11071 return Ok(());
11072 }
11073 depth.increment()?;
11074 let envelope_size = 8;
11075 let bytes_len = max_ordinal as usize * envelope_size;
11076 #[allow(unused_variables)]
11077 let offset = encoder.out_of_line_offset(bytes_len);
11078 let mut _prev_end_offset: usize = 0;
11079 if 1 > max_ordinal {
11080 return Ok(());
11081 }
11082
11083 let cur_offset: usize = (1 - 1) * envelope_size;
11086
11087 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
11089
11090 fidl::encoding::encode_in_envelope_optional::<u16, D>(
11095 self.locator.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
11096 encoder,
11097 offset + cur_offset,
11098 depth,
11099 )?;
11100
11101 _prev_end_offset = cur_offset + envelope_size;
11102 if 2 > max_ordinal {
11103 return Ok(());
11104 }
11105
11106 let cur_offset: usize = (2 - 1) * envelope_size;
11109
11110 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
11112
11113 fidl::encoding::encode_in_envelope_optional::<u16, D>(
11118 self.session_id.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
11119 encoder,
11120 offset + cur_offset,
11121 depth,
11122 )?;
11123
11124 _prev_end_offset = cur_offset + envelope_size;
11125 if 3 > max_ordinal {
11126 return Ok(());
11127 }
11128
11129 let cur_offset: usize = (3 - 1) * envelope_size;
11132
11133 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
11135
11136 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<u8, 16>, D>(
11141 self.steering_data.as_ref().map(
11142 <fidl::encoding::Vector<u8, 16> as fidl::encoding::ValueTypeMarker>::borrow,
11143 ),
11144 encoder,
11145 offset + cur_offset,
11146 depth,
11147 )?;
11148
11149 _prev_end_offset = cur_offset + envelope_size;
11150 if 4 > max_ordinal {
11151 return Ok(());
11152 }
11153
11154 let cur_offset: usize = (4 - 1) * envelope_size;
11157
11158 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
11160
11161 fidl::encoding::encode_in_envelope_optional::<u16, D>(
11166 self.joiner_udp_port.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
11167 encoder,
11168 offset + cur_offset,
11169 depth,
11170 )?;
11171
11172 _prev_end_offset = cur_offset + envelope_size;
11173 if 5 > max_ordinal {
11174 return Ok(());
11175 }
11176
11177 let cur_offset: usize = (5 - 1) * envelope_size;
11180
11181 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
11183
11184 fidl::encoding::encode_in_envelope_optional::<bool, D>(
11189 self.is_locator_set.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
11190 encoder,
11191 offset + cur_offset,
11192 depth,
11193 )?;
11194
11195 _prev_end_offset = cur_offset + envelope_size;
11196 if 6 > max_ordinal {
11197 return Ok(());
11198 }
11199
11200 let cur_offset: usize = (6 - 1) * envelope_size;
11203
11204 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
11206
11207 fidl::encoding::encode_in_envelope_optional::<bool, D>(
11212 self.is_session_id_set
11213 .as_ref()
11214 .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
11215 encoder,
11216 offset + cur_offset,
11217 depth,
11218 )?;
11219
11220 _prev_end_offset = cur_offset + envelope_size;
11221 if 7 > max_ordinal {
11222 return Ok(());
11223 }
11224
11225 let cur_offset: usize = (7 - 1) * envelope_size;
11228
11229 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
11231
11232 fidl::encoding::encode_in_envelope_optional::<bool, D>(
11237 self.is_steering_data_set
11238 .as_ref()
11239 .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
11240 encoder,
11241 offset + cur_offset,
11242 depth,
11243 )?;
11244
11245 _prev_end_offset = cur_offset + envelope_size;
11246 if 8 > max_ordinal {
11247 return Ok(());
11248 }
11249
11250 let cur_offset: usize = (8 - 1) * envelope_size;
11253
11254 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
11256
11257 fidl::encoding::encode_in_envelope_optional::<bool, D>(
11262 self.is_joiner_udp_port_set
11263 .as_ref()
11264 .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
11265 encoder,
11266 offset + cur_offset,
11267 depth,
11268 )?;
11269
11270 _prev_end_offset = cur_offset + envelope_size;
11271 if 9 > max_ordinal {
11272 return Ok(());
11273 }
11274
11275 let cur_offset: usize = (9 - 1) * envelope_size;
11278
11279 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
11281
11282 fidl::encoding::encode_in_envelope_optional::<bool, D>(
11287 self.has_extra_tlv.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
11288 encoder,
11289 offset + cur_offset,
11290 depth,
11291 )?;
11292
11293 _prev_end_offset = cur_offset + envelope_size;
11294
11295 Ok(())
11296 }
11297 }
11298
11299 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for CommissioningDataset {
11300 #[inline(always)]
11301 fn new_empty() -> Self {
11302 Self::default()
11303 }
11304
11305 unsafe fn decode(
11306 &mut self,
11307 decoder: &mut fidl::encoding::Decoder<'_, D>,
11308 offset: usize,
11309 mut depth: fidl::encoding::Depth,
11310 ) -> fidl::Result<()> {
11311 decoder.debug_check_bounds::<Self>(offset);
11312 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
11313 None => return Err(fidl::Error::NotNullable),
11314 Some(len) => len,
11315 };
11316 if len == 0 {
11318 return Ok(());
11319 };
11320 depth.increment()?;
11321 let envelope_size = 8;
11322 let bytes_len = len * envelope_size;
11323 let offset = decoder.out_of_line_offset(bytes_len)?;
11324 let mut _next_ordinal_to_read = 0;
11326 let mut next_offset = offset;
11327 let end_offset = offset + bytes_len;
11328 _next_ordinal_to_read += 1;
11329 if next_offset >= end_offset {
11330 return Ok(());
11331 }
11332
11333 while _next_ordinal_to_read < 1 {
11335 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11336 _next_ordinal_to_read += 1;
11337 next_offset += envelope_size;
11338 }
11339
11340 let next_out_of_line = decoder.next_out_of_line();
11341 let handles_before = decoder.remaining_handles();
11342 if let Some((inlined, num_bytes, num_handles)) =
11343 fidl::encoding::decode_envelope_header(decoder, next_offset)?
11344 {
11345 let member_inline_size =
11346 <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
11347 if inlined != (member_inline_size <= 4) {
11348 return Err(fidl::Error::InvalidInlineBitInEnvelope);
11349 }
11350 let inner_offset;
11351 let mut inner_depth = depth.clone();
11352 if inlined {
11353 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
11354 inner_offset = next_offset;
11355 } else {
11356 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11357 inner_depth.increment()?;
11358 }
11359 let val_ref = self.locator.get_or_insert_with(|| fidl::new_empty!(u16, D));
11360 fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
11361 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
11362 {
11363 return Err(fidl::Error::InvalidNumBytesInEnvelope);
11364 }
11365 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11366 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11367 }
11368 }
11369
11370 next_offset += envelope_size;
11371 _next_ordinal_to_read += 1;
11372 if next_offset >= end_offset {
11373 return Ok(());
11374 }
11375
11376 while _next_ordinal_to_read < 2 {
11378 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11379 _next_ordinal_to_read += 1;
11380 next_offset += envelope_size;
11381 }
11382
11383 let next_out_of_line = decoder.next_out_of_line();
11384 let handles_before = decoder.remaining_handles();
11385 if let Some((inlined, num_bytes, num_handles)) =
11386 fidl::encoding::decode_envelope_header(decoder, next_offset)?
11387 {
11388 let member_inline_size =
11389 <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
11390 if inlined != (member_inline_size <= 4) {
11391 return Err(fidl::Error::InvalidInlineBitInEnvelope);
11392 }
11393 let inner_offset;
11394 let mut inner_depth = depth.clone();
11395 if inlined {
11396 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
11397 inner_offset = next_offset;
11398 } else {
11399 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11400 inner_depth.increment()?;
11401 }
11402 let val_ref = self.session_id.get_or_insert_with(|| fidl::new_empty!(u16, D));
11403 fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
11404 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
11405 {
11406 return Err(fidl::Error::InvalidNumBytesInEnvelope);
11407 }
11408 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11409 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11410 }
11411 }
11412
11413 next_offset += envelope_size;
11414 _next_ordinal_to_read += 1;
11415 if next_offset >= end_offset {
11416 return Ok(());
11417 }
11418
11419 while _next_ordinal_to_read < 3 {
11421 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11422 _next_ordinal_to_read += 1;
11423 next_offset += envelope_size;
11424 }
11425
11426 let next_out_of_line = decoder.next_out_of_line();
11427 let handles_before = decoder.remaining_handles();
11428 if let Some((inlined, num_bytes, num_handles)) =
11429 fidl::encoding::decode_envelope_header(decoder, next_offset)?
11430 {
11431 let member_inline_size =
11432 <fidl::encoding::Vector<u8, 16> as fidl::encoding::TypeMarker>::inline_size(
11433 decoder.context,
11434 );
11435 if inlined != (member_inline_size <= 4) {
11436 return Err(fidl::Error::InvalidInlineBitInEnvelope);
11437 }
11438 let inner_offset;
11439 let mut inner_depth = depth.clone();
11440 if inlined {
11441 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
11442 inner_offset = next_offset;
11443 } else {
11444 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11445 inner_depth.increment()?;
11446 }
11447 let val_ref = self
11448 .steering_data
11449 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u8, 16>, D));
11450 fidl::decode!(fidl::encoding::Vector<u8, 16>, D, val_ref, decoder, inner_offset, inner_depth)?;
11451 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
11452 {
11453 return Err(fidl::Error::InvalidNumBytesInEnvelope);
11454 }
11455 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11456 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11457 }
11458 }
11459
11460 next_offset += envelope_size;
11461 _next_ordinal_to_read += 1;
11462 if next_offset >= end_offset {
11463 return Ok(());
11464 }
11465
11466 while _next_ordinal_to_read < 4 {
11468 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11469 _next_ordinal_to_read += 1;
11470 next_offset += envelope_size;
11471 }
11472
11473 let next_out_of_line = decoder.next_out_of_line();
11474 let handles_before = decoder.remaining_handles();
11475 if let Some((inlined, num_bytes, num_handles)) =
11476 fidl::encoding::decode_envelope_header(decoder, next_offset)?
11477 {
11478 let member_inline_size =
11479 <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
11480 if inlined != (member_inline_size <= 4) {
11481 return Err(fidl::Error::InvalidInlineBitInEnvelope);
11482 }
11483 let inner_offset;
11484 let mut inner_depth = depth.clone();
11485 if inlined {
11486 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
11487 inner_offset = next_offset;
11488 } else {
11489 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11490 inner_depth.increment()?;
11491 }
11492 let val_ref = self.joiner_udp_port.get_or_insert_with(|| fidl::new_empty!(u16, D));
11493 fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
11494 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
11495 {
11496 return Err(fidl::Error::InvalidNumBytesInEnvelope);
11497 }
11498 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11499 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11500 }
11501 }
11502
11503 next_offset += envelope_size;
11504 _next_ordinal_to_read += 1;
11505 if next_offset >= end_offset {
11506 return Ok(());
11507 }
11508
11509 while _next_ordinal_to_read < 5 {
11511 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11512 _next_ordinal_to_read += 1;
11513 next_offset += envelope_size;
11514 }
11515
11516 let next_out_of_line = decoder.next_out_of_line();
11517 let handles_before = decoder.remaining_handles();
11518 if let Some((inlined, num_bytes, num_handles)) =
11519 fidl::encoding::decode_envelope_header(decoder, next_offset)?
11520 {
11521 let member_inline_size =
11522 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
11523 if inlined != (member_inline_size <= 4) {
11524 return Err(fidl::Error::InvalidInlineBitInEnvelope);
11525 }
11526 let inner_offset;
11527 let mut inner_depth = depth.clone();
11528 if inlined {
11529 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
11530 inner_offset = next_offset;
11531 } else {
11532 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11533 inner_depth.increment()?;
11534 }
11535 let val_ref = self.is_locator_set.get_or_insert_with(|| fidl::new_empty!(bool, D));
11536 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
11537 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
11538 {
11539 return Err(fidl::Error::InvalidNumBytesInEnvelope);
11540 }
11541 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11542 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11543 }
11544 }
11545
11546 next_offset += envelope_size;
11547 _next_ordinal_to_read += 1;
11548 if next_offset >= end_offset {
11549 return Ok(());
11550 }
11551
11552 while _next_ordinal_to_read < 6 {
11554 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11555 _next_ordinal_to_read += 1;
11556 next_offset += envelope_size;
11557 }
11558
11559 let next_out_of_line = decoder.next_out_of_line();
11560 let handles_before = decoder.remaining_handles();
11561 if let Some((inlined, num_bytes, num_handles)) =
11562 fidl::encoding::decode_envelope_header(decoder, next_offset)?
11563 {
11564 let member_inline_size =
11565 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
11566 if inlined != (member_inline_size <= 4) {
11567 return Err(fidl::Error::InvalidInlineBitInEnvelope);
11568 }
11569 let inner_offset;
11570 let mut inner_depth = depth.clone();
11571 if inlined {
11572 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
11573 inner_offset = next_offset;
11574 } else {
11575 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11576 inner_depth.increment()?;
11577 }
11578 let val_ref =
11579 self.is_session_id_set.get_or_insert_with(|| fidl::new_empty!(bool, D));
11580 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
11581 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
11582 {
11583 return Err(fidl::Error::InvalidNumBytesInEnvelope);
11584 }
11585 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11586 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11587 }
11588 }
11589
11590 next_offset += envelope_size;
11591 _next_ordinal_to_read += 1;
11592 if next_offset >= end_offset {
11593 return Ok(());
11594 }
11595
11596 while _next_ordinal_to_read < 7 {
11598 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11599 _next_ordinal_to_read += 1;
11600 next_offset += envelope_size;
11601 }
11602
11603 let next_out_of_line = decoder.next_out_of_line();
11604 let handles_before = decoder.remaining_handles();
11605 if let Some((inlined, num_bytes, num_handles)) =
11606 fidl::encoding::decode_envelope_header(decoder, next_offset)?
11607 {
11608 let member_inline_size =
11609 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
11610 if inlined != (member_inline_size <= 4) {
11611 return Err(fidl::Error::InvalidInlineBitInEnvelope);
11612 }
11613 let inner_offset;
11614 let mut inner_depth = depth.clone();
11615 if inlined {
11616 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
11617 inner_offset = next_offset;
11618 } else {
11619 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11620 inner_depth.increment()?;
11621 }
11622 let val_ref =
11623 self.is_steering_data_set.get_or_insert_with(|| fidl::new_empty!(bool, D));
11624 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
11625 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
11626 {
11627 return Err(fidl::Error::InvalidNumBytesInEnvelope);
11628 }
11629 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11630 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11631 }
11632 }
11633
11634 next_offset += envelope_size;
11635 _next_ordinal_to_read += 1;
11636 if next_offset >= end_offset {
11637 return Ok(());
11638 }
11639
11640 while _next_ordinal_to_read < 8 {
11642 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11643 _next_ordinal_to_read += 1;
11644 next_offset += envelope_size;
11645 }
11646
11647 let next_out_of_line = decoder.next_out_of_line();
11648 let handles_before = decoder.remaining_handles();
11649 if let Some((inlined, num_bytes, num_handles)) =
11650 fidl::encoding::decode_envelope_header(decoder, next_offset)?
11651 {
11652 let member_inline_size =
11653 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
11654 if inlined != (member_inline_size <= 4) {
11655 return Err(fidl::Error::InvalidInlineBitInEnvelope);
11656 }
11657 let inner_offset;
11658 let mut inner_depth = depth.clone();
11659 if inlined {
11660 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
11661 inner_offset = next_offset;
11662 } else {
11663 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11664 inner_depth.increment()?;
11665 }
11666 let val_ref =
11667 self.is_joiner_udp_port_set.get_or_insert_with(|| fidl::new_empty!(bool, D));
11668 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
11669 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
11670 {
11671 return Err(fidl::Error::InvalidNumBytesInEnvelope);
11672 }
11673 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11674 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11675 }
11676 }
11677
11678 next_offset += envelope_size;
11679 _next_ordinal_to_read += 1;
11680 if next_offset >= end_offset {
11681 return Ok(());
11682 }
11683
11684 while _next_ordinal_to_read < 9 {
11686 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11687 _next_ordinal_to_read += 1;
11688 next_offset += envelope_size;
11689 }
11690
11691 let next_out_of_line = decoder.next_out_of_line();
11692 let handles_before = decoder.remaining_handles();
11693 if let Some((inlined, num_bytes, num_handles)) =
11694 fidl::encoding::decode_envelope_header(decoder, next_offset)?
11695 {
11696 let member_inline_size =
11697 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
11698 if inlined != (member_inline_size <= 4) {
11699 return Err(fidl::Error::InvalidInlineBitInEnvelope);
11700 }
11701 let inner_offset;
11702 let mut inner_depth = depth.clone();
11703 if inlined {
11704 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
11705 inner_offset = next_offset;
11706 } else {
11707 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11708 inner_depth.increment()?;
11709 }
11710 let val_ref = self.has_extra_tlv.get_or_insert_with(|| fidl::new_empty!(bool, D));
11711 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
11712 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
11713 {
11714 return Err(fidl::Error::InvalidNumBytesInEnvelope);
11715 }
11716 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11717 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11718 }
11719 }
11720
11721 next_offset += envelope_size;
11722
11723 while next_offset < end_offset {
11725 _next_ordinal_to_read += 1;
11726 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11727 next_offset += envelope_size;
11728 }
11729
11730 Ok(())
11731 }
11732 }
11733
11734 impl CslInfo {
11735 #[inline(always)]
11736 fn max_ordinal_present(&self) -> u64 {
11737 if let Some(_) = self.csl_uncertainty {
11738 return 2;
11739 }
11740 if let Some(_) = self.csl_accuracy {
11741 return 1;
11742 }
11743 0
11744 }
11745 }
11746
11747 impl fidl::encoding::ValueTypeMarker for CslInfo {
11748 type Borrowed<'a> = &'a Self;
11749 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
11750 value
11751 }
11752 }
11753
11754 unsafe impl fidl::encoding::TypeMarker for CslInfo {
11755 type Owned = Self;
11756
11757 #[inline(always)]
11758 fn inline_align(_context: fidl::encoding::Context) -> usize {
11759 8
11760 }
11761
11762 #[inline(always)]
11763 fn inline_size(_context: fidl::encoding::Context) -> usize {
11764 16
11765 }
11766 }
11767
11768 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<CslInfo, D> for &CslInfo {
11769 unsafe fn encode(
11770 self,
11771 encoder: &mut fidl::encoding::Encoder<'_, D>,
11772 offset: usize,
11773 mut depth: fidl::encoding::Depth,
11774 ) -> fidl::Result<()> {
11775 encoder.debug_check_bounds::<CslInfo>(offset);
11776 let max_ordinal: u64 = self.max_ordinal_present();
11778 encoder.write_num(max_ordinal, offset);
11779 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
11780 if max_ordinal == 0 {
11782 return Ok(());
11783 }
11784 depth.increment()?;
11785 let envelope_size = 8;
11786 let bytes_len = max_ordinal as usize * envelope_size;
11787 #[allow(unused_variables)]
11788 let offset = encoder.out_of_line_offset(bytes_len);
11789 let mut _prev_end_offset: usize = 0;
11790 if 1 > max_ordinal {
11791 return Ok(());
11792 }
11793
11794 let cur_offset: usize = (1 - 1) * envelope_size;
11797
11798 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
11800
11801 fidl::encoding::encode_in_envelope_optional::<u8, D>(
11806 self.csl_accuracy.as_ref().map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
11807 encoder,
11808 offset + cur_offset,
11809 depth,
11810 )?;
11811
11812 _prev_end_offset = cur_offset + envelope_size;
11813 if 2 > max_ordinal {
11814 return Ok(());
11815 }
11816
11817 let cur_offset: usize = (2 - 1) * envelope_size;
11820
11821 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
11823
11824 fidl::encoding::encode_in_envelope_optional::<u8, D>(
11829 self.csl_uncertainty.as_ref().map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
11830 encoder,
11831 offset + cur_offset,
11832 depth,
11833 )?;
11834
11835 _prev_end_offset = cur_offset + envelope_size;
11836
11837 Ok(())
11838 }
11839 }
11840
11841 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for CslInfo {
11842 #[inline(always)]
11843 fn new_empty() -> Self {
11844 Self::default()
11845 }
11846
11847 unsafe fn decode(
11848 &mut self,
11849 decoder: &mut fidl::encoding::Decoder<'_, D>,
11850 offset: usize,
11851 mut depth: fidl::encoding::Depth,
11852 ) -> fidl::Result<()> {
11853 decoder.debug_check_bounds::<Self>(offset);
11854 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
11855 None => return Err(fidl::Error::NotNullable),
11856 Some(len) => len,
11857 };
11858 if len == 0 {
11860 return Ok(());
11861 };
11862 depth.increment()?;
11863 let envelope_size = 8;
11864 let bytes_len = len * envelope_size;
11865 let offset = decoder.out_of_line_offset(bytes_len)?;
11866 let mut _next_ordinal_to_read = 0;
11868 let mut next_offset = offset;
11869 let end_offset = offset + bytes_len;
11870 _next_ordinal_to_read += 1;
11871 if next_offset >= end_offset {
11872 return Ok(());
11873 }
11874
11875 while _next_ordinal_to_read < 1 {
11877 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11878 _next_ordinal_to_read += 1;
11879 next_offset += envelope_size;
11880 }
11881
11882 let next_out_of_line = decoder.next_out_of_line();
11883 let handles_before = decoder.remaining_handles();
11884 if let Some((inlined, num_bytes, num_handles)) =
11885 fidl::encoding::decode_envelope_header(decoder, next_offset)?
11886 {
11887 let member_inline_size =
11888 <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
11889 if inlined != (member_inline_size <= 4) {
11890 return Err(fidl::Error::InvalidInlineBitInEnvelope);
11891 }
11892 let inner_offset;
11893 let mut inner_depth = depth.clone();
11894 if inlined {
11895 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
11896 inner_offset = next_offset;
11897 } else {
11898 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11899 inner_depth.increment()?;
11900 }
11901 let val_ref = self.csl_accuracy.get_or_insert_with(|| fidl::new_empty!(u8, D));
11902 fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
11903 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
11904 {
11905 return Err(fidl::Error::InvalidNumBytesInEnvelope);
11906 }
11907 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11908 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11909 }
11910 }
11911
11912 next_offset += envelope_size;
11913 _next_ordinal_to_read += 1;
11914 if next_offset >= end_offset {
11915 return Ok(());
11916 }
11917
11918 while _next_ordinal_to_read < 2 {
11920 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11921 _next_ordinal_to_read += 1;
11922 next_offset += envelope_size;
11923 }
11924
11925 let next_out_of_line = decoder.next_out_of_line();
11926 let handles_before = decoder.remaining_handles();
11927 if let Some((inlined, num_bytes, num_handles)) =
11928 fidl::encoding::decode_envelope_header(decoder, next_offset)?
11929 {
11930 let member_inline_size =
11931 <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
11932 if inlined != (member_inline_size <= 4) {
11933 return Err(fidl::Error::InvalidInlineBitInEnvelope);
11934 }
11935 let inner_offset;
11936 let mut inner_depth = depth.clone();
11937 if inlined {
11938 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
11939 inner_offset = next_offset;
11940 } else {
11941 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11942 inner_depth.increment()?;
11943 }
11944 let val_ref = self.csl_uncertainty.get_or_insert_with(|| fidl::new_empty!(u8, D));
11945 fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
11946 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
11947 {
11948 return Err(fidl::Error::InvalidNumBytesInEnvelope);
11949 }
11950 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11951 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11952 }
11953 }
11954
11955 next_offset += envelope_size;
11956
11957 while next_offset < end_offset {
11959 _next_ordinal_to_read += 1;
11960 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11961 next_offset += envelope_size;
11962 }
11963
11964 Ok(())
11965 }
11966 }
11967
11968 impl Dhcp6PdInfo {
11969 #[inline(always)]
11970 fn max_ordinal_present(&self) -> u64 {
11971 if let Some(_) = self.hashed_pd_prefix {
11972 return 3;
11973 }
11974 if let Some(_) = self.pd_processed_ra_info {
11975 return 2;
11976 }
11977 if let Some(_) = self.dhcp6pd_state {
11978 return 1;
11979 }
11980 0
11981 }
11982 }
11983
11984 impl fidl::encoding::ValueTypeMarker for Dhcp6PdInfo {
11985 type Borrowed<'a> = &'a Self;
11986 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
11987 value
11988 }
11989 }
11990
11991 unsafe impl fidl::encoding::TypeMarker for Dhcp6PdInfo {
11992 type Owned = Self;
11993
11994 #[inline(always)]
11995 fn inline_align(_context: fidl::encoding::Context) -> usize {
11996 8
11997 }
11998
11999 #[inline(always)]
12000 fn inline_size(_context: fidl::encoding::Context) -> usize {
12001 16
12002 }
12003 }
12004
12005 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Dhcp6PdInfo, D>
12006 for &Dhcp6PdInfo
12007 {
12008 unsafe fn encode(
12009 self,
12010 encoder: &mut fidl::encoding::Encoder<'_, D>,
12011 offset: usize,
12012 mut depth: fidl::encoding::Depth,
12013 ) -> fidl::Result<()> {
12014 encoder.debug_check_bounds::<Dhcp6PdInfo>(offset);
12015 let max_ordinal: u64 = self.max_ordinal_present();
12017 encoder.write_num(max_ordinal, offset);
12018 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
12019 if max_ordinal == 0 {
12021 return Ok(());
12022 }
12023 depth.increment()?;
12024 let envelope_size = 8;
12025 let bytes_len = max_ordinal as usize * envelope_size;
12026 #[allow(unused_variables)]
12027 let offset = encoder.out_of_line_offset(bytes_len);
12028 let mut _prev_end_offset: usize = 0;
12029 if 1 > max_ordinal {
12030 return Ok(());
12031 }
12032
12033 let cur_offset: usize = (1 - 1) * envelope_size;
12036
12037 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12039
12040 fidl::encoding::encode_in_envelope_optional::<Dhcp6PdState, D>(
12045 self.dhcp6pd_state
12046 .as_ref()
12047 .map(<Dhcp6PdState as fidl::encoding::ValueTypeMarker>::borrow),
12048 encoder,
12049 offset + cur_offset,
12050 depth,
12051 )?;
12052
12053 _prev_end_offset = cur_offset + envelope_size;
12054 if 2 > max_ordinal {
12055 return Ok(());
12056 }
12057
12058 let cur_offset: usize = (2 - 1) * envelope_size;
12061
12062 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12064
12065 fidl::encoding::encode_in_envelope_optional::<PdProcessedRaInfo, D>(
12070 self.pd_processed_ra_info
12071 .as_ref()
12072 .map(<PdProcessedRaInfo as fidl::encoding::ValueTypeMarker>::borrow),
12073 encoder,
12074 offset + cur_offset,
12075 depth,
12076 )?;
12077
12078 _prev_end_offset = cur_offset + envelope_size;
12079 if 3 > max_ordinal {
12080 return Ok(());
12081 }
12082
12083 let cur_offset: usize = (3 - 1) * envelope_size;
12086
12087 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12089
12090 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<u8, 32>, D>(
12095 self.hashed_pd_prefix.as_ref().map(
12096 <fidl::encoding::Vector<u8, 32> as fidl::encoding::ValueTypeMarker>::borrow,
12097 ),
12098 encoder,
12099 offset + cur_offset,
12100 depth,
12101 )?;
12102
12103 _prev_end_offset = cur_offset + envelope_size;
12104
12105 Ok(())
12106 }
12107 }
12108
12109 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Dhcp6PdInfo {
12110 #[inline(always)]
12111 fn new_empty() -> Self {
12112 Self::default()
12113 }
12114
12115 unsafe fn decode(
12116 &mut self,
12117 decoder: &mut fidl::encoding::Decoder<'_, D>,
12118 offset: usize,
12119 mut depth: fidl::encoding::Depth,
12120 ) -> fidl::Result<()> {
12121 decoder.debug_check_bounds::<Self>(offset);
12122 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
12123 None => return Err(fidl::Error::NotNullable),
12124 Some(len) => len,
12125 };
12126 if len == 0 {
12128 return Ok(());
12129 };
12130 depth.increment()?;
12131 let envelope_size = 8;
12132 let bytes_len = len * envelope_size;
12133 let offset = decoder.out_of_line_offset(bytes_len)?;
12134 let mut _next_ordinal_to_read = 0;
12136 let mut next_offset = offset;
12137 let end_offset = offset + bytes_len;
12138 _next_ordinal_to_read += 1;
12139 if next_offset >= end_offset {
12140 return Ok(());
12141 }
12142
12143 while _next_ordinal_to_read < 1 {
12145 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12146 _next_ordinal_to_read += 1;
12147 next_offset += envelope_size;
12148 }
12149
12150 let next_out_of_line = decoder.next_out_of_line();
12151 let handles_before = decoder.remaining_handles();
12152 if let Some((inlined, num_bytes, num_handles)) =
12153 fidl::encoding::decode_envelope_header(decoder, next_offset)?
12154 {
12155 let member_inline_size =
12156 <Dhcp6PdState as fidl::encoding::TypeMarker>::inline_size(decoder.context);
12157 if inlined != (member_inline_size <= 4) {
12158 return Err(fidl::Error::InvalidInlineBitInEnvelope);
12159 }
12160 let inner_offset;
12161 let mut inner_depth = depth.clone();
12162 if inlined {
12163 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
12164 inner_offset = next_offset;
12165 } else {
12166 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12167 inner_depth.increment()?;
12168 }
12169 let val_ref =
12170 self.dhcp6pd_state.get_or_insert_with(|| fidl::new_empty!(Dhcp6PdState, D));
12171 fidl::decode!(Dhcp6PdState, D, val_ref, decoder, inner_offset, inner_depth)?;
12172 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
12173 {
12174 return Err(fidl::Error::InvalidNumBytesInEnvelope);
12175 }
12176 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12177 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12178 }
12179 }
12180
12181 next_offset += envelope_size;
12182 _next_ordinal_to_read += 1;
12183 if next_offset >= end_offset {
12184 return Ok(());
12185 }
12186
12187 while _next_ordinal_to_read < 2 {
12189 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12190 _next_ordinal_to_read += 1;
12191 next_offset += envelope_size;
12192 }
12193
12194 let next_out_of_line = decoder.next_out_of_line();
12195 let handles_before = decoder.remaining_handles();
12196 if let Some((inlined, num_bytes, num_handles)) =
12197 fidl::encoding::decode_envelope_header(decoder, next_offset)?
12198 {
12199 let member_inline_size =
12200 <PdProcessedRaInfo as fidl::encoding::TypeMarker>::inline_size(decoder.context);
12201 if inlined != (member_inline_size <= 4) {
12202 return Err(fidl::Error::InvalidInlineBitInEnvelope);
12203 }
12204 let inner_offset;
12205 let mut inner_depth = depth.clone();
12206 if inlined {
12207 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
12208 inner_offset = next_offset;
12209 } else {
12210 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12211 inner_depth.increment()?;
12212 }
12213 let val_ref = self
12214 .pd_processed_ra_info
12215 .get_or_insert_with(|| fidl::new_empty!(PdProcessedRaInfo, D));
12216 fidl::decode!(PdProcessedRaInfo, D, val_ref, decoder, inner_offset, inner_depth)?;
12217 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
12218 {
12219 return Err(fidl::Error::InvalidNumBytesInEnvelope);
12220 }
12221 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12222 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12223 }
12224 }
12225
12226 next_offset += envelope_size;
12227 _next_ordinal_to_read += 1;
12228 if next_offset >= end_offset {
12229 return Ok(());
12230 }
12231
12232 while _next_ordinal_to_read < 3 {
12234 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12235 _next_ordinal_to_read += 1;
12236 next_offset += envelope_size;
12237 }
12238
12239 let next_out_of_line = decoder.next_out_of_line();
12240 let handles_before = decoder.remaining_handles();
12241 if let Some((inlined, num_bytes, num_handles)) =
12242 fidl::encoding::decode_envelope_header(decoder, next_offset)?
12243 {
12244 let member_inline_size =
12245 <fidl::encoding::Vector<u8, 32> as fidl::encoding::TypeMarker>::inline_size(
12246 decoder.context,
12247 );
12248 if inlined != (member_inline_size <= 4) {
12249 return Err(fidl::Error::InvalidInlineBitInEnvelope);
12250 }
12251 let inner_offset;
12252 let mut inner_depth = depth.clone();
12253 if inlined {
12254 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
12255 inner_offset = next_offset;
12256 } else {
12257 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12258 inner_depth.increment()?;
12259 }
12260 let val_ref = self
12261 .hashed_pd_prefix
12262 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u8, 32>, D));
12263 fidl::decode!(fidl::encoding::Vector<u8, 32>, D, val_ref, decoder, inner_offset, inner_depth)?;
12264 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
12265 {
12266 return Err(fidl::Error::InvalidNumBytesInEnvelope);
12267 }
12268 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12269 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12270 }
12271 }
12272
12273 next_offset += envelope_size;
12274
12275 while next_offset < end_offset {
12277 _next_ordinal_to_read += 1;
12278 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12279 next_offset += envelope_size;
12280 }
12281
12282 Ok(())
12283 }
12284 }
12285
12286 impl DnsTxtEntry {
12287 #[inline(always)]
12288 fn max_ordinal_present(&self) -> u64 {
12289 if let Some(_) = self.value {
12290 return 2;
12291 }
12292 if let Some(_) = self.key {
12293 return 1;
12294 }
12295 0
12296 }
12297 }
12298
12299 impl fidl::encoding::ValueTypeMarker for DnsTxtEntry {
12300 type Borrowed<'a> = &'a Self;
12301 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
12302 value
12303 }
12304 }
12305
12306 unsafe impl fidl::encoding::TypeMarker for DnsTxtEntry {
12307 type Owned = Self;
12308
12309 #[inline(always)]
12310 fn inline_align(_context: fidl::encoding::Context) -> usize {
12311 8
12312 }
12313
12314 #[inline(always)]
12315 fn inline_size(_context: fidl::encoding::Context) -> usize {
12316 16
12317 }
12318 }
12319
12320 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<DnsTxtEntry, D>
12321 for &DnsTxtEntry
12322 {
12323 unsafe fn encode(
12324 self,
12325 encoder: &mut fidl::encoding::Encoder<'_, D>,
12326 offset: usize,
12327 mut depth: fidl::encoding::Depth,
12328 ) -> fidl::Result<()> {
12329 encoder.debug_check_bounds::<DnsTxtEntry>(offset);
12330 let max_ordinal: u64 = self.max_ordinal_present();
12332 encoder.write_num(max_ordinal, offset);
12333 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
12334 if max_ordinal == 0 {
12336 return Ok(());
12337 }
12338 depth.increment()?;
12339 let envelope_size = 8;
12340 let bytes_len = max_ordinal as usize * envelope_size;
12341 #[allow(unused_variables)]
12342 let offset = encoder.out_of_line_offset(bytes_len);
12343 let mut _prev_end_offset: usize = 0;
12344 if 1 > max_ordinal {
12345 return Ok(());
12346 }
12347
12348 let cur_offset: usize = (1 - 1) * envelope_size;
12351
12352 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12354
12355 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<64>, D>(
12360 self.key.as_ref().map(
12361 <fidl::encoding::BoundedString<64> as fidl::encoding::ValueTypeMarker>::borrow,
12362 ),
12363 encoder,
12364 offset + cur_offset,
12365 depth,
12366 )?;
12367
12368 _prev_end_offset = cur_offset + envelope_size;
12369 if 2 > max_ordinal {
12370 return Ok(());
12371 }
12372
12373 let cur_offset: usize = (2 - 1) * envelope_size;
12376
12377 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12379
12380 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<u8, 253>, D>(
12385 self.value.as_ref().map(
12386 <fidl::encoding::Vector<u8, 253> as fidl::encoding::ValueTypeMarker>::borrow,
12387 ),
12388 encoder,
12389 offset + cur_offset,
12390 depth,
12391 )?;
12392
12393 _prev_end_offset = cur_offset + envelope_size;
12394
12395 Ok(())
12396 }
12397 }
12398
12399 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for DnsTxtEntry {
12400 #[inline(always)]
12401 fn new_empty() -> Self {
12402 Self::default()
12403 }
12404
12405 unsafe fn decode(
12406 &mut self,
12407 decoder: &mut fidl::encoding::Decoder<'_, D>,
12408 offset: usize,
12409 mut depth: fidl::encoding::Depth,
12410 ) -> fidl::Result<()> {
12411 decoder.debug_check_bounds::<Self>(offset);
12412 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
12413 None => return Err(fidl::Error::NotNullable),
12414 Some(len) => len,
12415 };
12416 if len == 0 {
12418 return Ok(());
12419 };
12420 depth.increment()?;
12421 let envelope_size = 8;
12422 let bytes_len = len * envelope_size;
12423 let offset = decoder.out_of_line_offset(bytes_len)?;
12424 let mut _next_ordinal_to_read = 0;
12426 let mut next_offset = offset;
12427 let end_offset = offset + bytes_len;
12428 _next_ordinal_to_read += 1;
12429 if next_offset >= end_offset {
12430 return Ok(());
12431 }
12432
12433 while _next_ordinal_to_read < 1 {
12435 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12436 _next_ordinal_to_read += 1;
12437 next_offset += envelope_size;
12438 }
12439
12440 let next_out_of_line = decoder.next_out_of_line();
12441 let handles_before = decoder.remaining_handles();
12442 if let Some((inlined, num_bytes, num_handles)) =
12443 fidl::encoding::decode_envelope_header(decoder, next_offset)?
12444 {
12445 let member_inline_size =
12446 <fidl::encoding::BoundedString<64> as fidl::encoding::TypeMarker>::inline_size(
12447 decoder.context,
12448 );
12449 if inlined != (member_inline_size <= 4) {
12450 return Err(fidl::Error::InvalidInlineBitInEnvelope);
12451 }
12452 let inner_offset;
12453 let mut inner_depth = depth.clone();
12454 if inlined {
12455 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
12456 inner_offset = next_offset;
12457 } else {
12458 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12459 inner_depth.increment()?;
12460 }
12461 let val_ref = self
12462 .key
12463 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<64>, D));
12464 fidl::decode!(
12465 fidl::encoding::BoundedString<64>,
12466 D,
12467 val_ref,
12468 decoder,
12469 inner_offset,
12470 inner_depth
12471 )?;
12472 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
12473 {
12474 return Err(fidl::Error::InvalidNumBytesInEnvelope);
12475 }
12476 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12477 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12478 }
12479 }
12480
12481 next_offset += envelope_size;
12482 _next_ordinal_to_read += 1;
12483 if next_offset >= end_offset {
12484 return Ok(());
12485 }
12486
12487 while _next_ordinal_to_read < 2 {
12489 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12490 _next_ordinal_to_read += 1;
12491 next_offset += envelope_size;
12492 }
12493
12494 let next_out_of_line = decoder.next_out_of_line();
12495 let handles_before = decoder.remaining_handles();
12496 if let Some((inlined, num_bytes, num_handles)) =
12497 fidl::encoding::decode_envelope_header(decoder, next_offset)?
12498 {
12499 let member_inline_size =
12500 <fidl::encoding::Vector<u8, 253> as fidl::encoding::TypeMarker>::inline_size(
12501 decoder.context,
12502 );
12503 if inlined != (member_inline_size <= 4) {
12504 return Err(fidl::Error::InvalidInlineBitInEnvelope);
12505 }
12506 let inner_offset;
12507 let mut inner_depth = depth.clone();
12508 if inlined {
12509 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
12510 inner_offset = next_offset;
12511 } else {
12512 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12513 inner_depth.increment()?;
12514 }
12515 let val_ref = self
12516 .value
12517 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u8, 253>, D));
12518 fidl::decode!(fidl::encoding::Vector<u8, 253>, D, val_ref, decoder, inner_offset, inner_depth)?;
12519 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
12520 {
12521 return Err(fidl::Error::InvalidNumBytesInEnvelope);
12522 }
12523 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12524 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12525 }
12526 }
12527
12528 next_offset += envelope_size;
12529
12530 while next_offset < end_offset {
12532 _next_ordinal_to_read += 1;
12533 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12534 next_offset += envelope_size;
12535 }
12536
12537 Ok(())
12538 }
12539 }
12540
12541 impl DnssdCounters {
12542 #[inline(always)]
12543 fn max_ordinal_present(&self) -> u64 {
12544 if let Some(_) = self.upstream_dns_counters {
12545 return 8;
12546 }
12547 if let Some(_) = self.resolved_by_srp {
12548 return 7;
12549 }
12550 if let Some(_) = self.other_response {
12551 return 6;
12552 }
12553 if let Some(_) = self.not_implemented_response {
12554 return 5;
12555 }
12556 if let Some(_) = self.name_error_response {
12557 return 4;
12558 }
12559 if let Some(_) = self.format_error_response {
12560 return 3;
12561 }
12562 if let Some(_) = self.server_failure_response {
12563 return 2;
12564 }
12565 if let Some(_) = self.success_response {
12566 return 1;
12567 }
12568 0
12569 }
12570 }
12571
12572 impl fidl::encoding::ValueTypeMarker for DnssdCounters {
12573 type Borrowed<'a> = &'a Self;
12574 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
12575 value
12576 }
12577 }
12578
12579 unsafe impl fidl::encoding::TypeMarker for DnssdCounters {
12580 type Owned = Self;
12581
12582 #[inline(always)]
12583 fn inline_align(_context: fidl::encoding::Context) -> usize {
12584 8
12585 }
12586
12587 #[inline(always)]
12588 fn inline_size(_context: fidl::encoding::Context) -> usize {
12589 16
12590 }
12591 }
12592
12593 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<DnssdCounters, D>
12594 for &DnssdCounters
12595 {
12596 unsafe fn encode(
12597 self,
12598 encoder: &mut fidl::encoding::Encoder<'_, D>,
12599 offset: usize,
12600 mut depth: fidl::encoding::Depth,
12601 ) -> fidl::Result<()> {
12602 encoder.debug_check_bounds::<DnssdCounters>(offset);
12603 let max_ordinal: u64 = self.max_ordinal_present();
12605 encoder.write_num(max_ordinal, offset);
12606 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
12607 if max_ordinal == 0 {
12609 return Ok(());
12610 }
12611 depth.increment()?;
12612 let envelope_size = 8;
12613 let bytes_len = max_ordinal as usize * envelope_size;
12614 #[allow(unused_variables)]
12615 let offset = encoder.out_of_line_offset(bytes_len);
12616 let mut _prev_end_offset: usize = 0;
12617 if 1 > max_ordinal {
12618 return Ok(());
12619 }
12620
12621 let cur_offset: usize = (1 - 1) * envelope_size;
12624
12625 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12627
12628 fidl::encoding::encode_in_envelope_optional::<u32, D>(
12633 self.success_response
12634 .as_ref()
12635 .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
12636 encoder,
12637 offset + cur_offset,
12638 depth,
12639 )?;
12640
12641 _prev_end_offset = cur_offset + envelope_size;
12642 if 2 > max_ordinal {
12643 return Ok(());
12644 }
12645
12646 let cur_offset: usize = (2 - 1) * envelope_size;
12649
12650 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12652
12653 fidl::encoding::encode_in_envelope_optional::<u32, D>(
12658 self.server_failure_response
12659 .as_ref()
12660 .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
12661 encoder,
12662 offset + cur_offset,
12663 depth,
12664 )?;
12665
12666 _prev_end_offset = cur_offset + envelope_size;
12667 if 3 > max_ordinal {
12668 return Ok(());
12669 }
12670
12671 let cur_offset: usize = (3 - 1) * envelope_size;
12674
12675 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12677
12678 fidl::encoding::encode_in_envelope_optional::<u32, D>(
12683 self.format_error_response
12684 .as_ref()
12685 .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
12686 encoder,
12687 offset + cur_offset,
12688 depth,
12689 )?;
12690
12691 _prev_end_offset = cur_offset + envelope_size;
12692 if 4 > max_ordinal {
12693 return Ok(());
12694 }
12695
12696 let cur_offset: usize = (4 - 1) * envelope_size;
12699
12700 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12702
12703 fidl::encoding::encode_in_envelope_optional::<u32, D>(
12708 self.name_error_response
12709 .as_ref()
12710 .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
12711 encoder,
12712 offset + cur_offset,
12713 depth,
12714 )?;
12715
12716 _prev_end_offset = cur_offset + envelope_size;
12717 if 5 > max_ordinal {
12718 return Ok(());
12719 }
12720
12721 let cur_offset: usize = (5 - 1) * envelope_size;
12724
12725 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12727
12728 fidl::encoding::encode_in_envelope_optional::<u32, D>(
12733 self.not_implemented_response
12734 .as_ref()
12735 .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
12736 encoder,
12737 offset + cur_offset,
12738 depth,
12739 )?;
12740
12741 _prev_end_offset = cur_offset + envelope_size;
12742 if 6 > max_ordinal {
12743 return Ok(());
12744 }
12745
12746 let cur_offset: usize = (6 - 1) * envelope_size;
12749
12750 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12752
12753 fidl::encoding::encode_in_envelope_optional::<u32, D>(
12758 self.other_response.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
12759 encoder,
12760 offset + cur_offset,
12761 depth,
12762 )?;
12763
12764 _prev_end_offset = cur_offset + envelope_size;
12765 if 7 > max_ordinal {
12766 return Ok(());
12767 }
12768
12769 let cur_offset: usize = (7 - 1) * envelope_size;
12772
12773 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12775
12776 fidl::encoding::encode_in_envelope_optional::<u32, D>(
12781 self.resolved_by_srp.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
12782 encoder,
12783 offset + cur_offset,
12784 depth,
12785 )?;
12786
12787 _prev_end_offset = cur_offset + envelope_size;
12788 if 8 > max_ordinal {
12789 return Ok(());
12790 }
12791
12792 let cur_offset: usize = (8 - 1) * envelope_size;
12795
12796 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12798
12799 fidl::encoding::encode_in_envelope_optional::<UpstreamDnsCounters, D>(
12804 self.upstream_dns_counters
12805 .as_ref()
12806 .map(<UpstreamDnsCounters as fidl::encoding::ValueTypeMarker>::borrow),
12807 encoder,
12808 offset + cur_offset,
12809 depth,
12810 )?;
12811
12812 _prev_end_offset = cur_offset + envelope_size;
12813
12814 Ok(())
12815 }
12816 }
12817
12818 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for DnssdCounters {
12819 #[inline(always)]
12820 fn new_empty() -> Self {
12821 Self::default()
12822 }
12823
12824 unsafe fn decode(
12825 &mut self,
12826 decoder: &mut fidl::encoding::Decoder<'_, D>,
12827 offset: usize,
12828 mut depth: fidl::encoding::Depth,
12829 ) -> fidl::Result<()> {
12830 decoder.debug_check_bounds::<Self>(offset);
12831 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
12832 None => return Err(fidl::Error::NotNullable),
12833 Some(len) => len,
12834 };
12835 if len == 0 {
12837 return Ok(());
12838 };
12839 depth.increment()?;
12840 let envelope_size = 8;
12841 let bytes_len = len * envelope_size;
12842 let offset = decoder.out_of_line_offset(bytes_len)?;
12843 let mut _next_ordinal_to_read = 0;
12845 let mut next_offset = offset;
12846 let end_offset = offset + bytes_len;
12847 _next_ordinal_to_read += 1;
12848 if next_offset >= end_offset {
12849 return Ok(());
12850 }
12851
12852 while _next_ordinal_to_read < 1 {
12854 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12855 _next_ordinal_to_read += 1;
12856 next_offset += envelope_size;
12857 }
12858
12859 let next_out_of_line = decoder.next_out_of_line();
12860 let handles_before = decoder.remaining_handles();
12861 if let Some((inlined, num_bytes, num_handles)) =
12862 fidl::encoding::decode_envelope_header(decoder, next_offset)?
12863 {
12864 let member_inline_size =
12865 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
12866 if inlined != (member_inline_size <= 4) {
12867 return Err(fidl::Error::InvalidInlineBitInEnvelope);
12868 }
12869 let inner_offset;
12870 let mut inner_depth = depth.clone();
12871 if inlined {
12872 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
12873 inner_offset = next_offset;
12874 } else {
12875 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12876 inner_depth.increment()?;
12877 }
12878 let val_ref = self.success_response.get_or_insert_with(|| fidl::new_empty!(u32, D));
12879 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
12880 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
12881 {
12882 return Err(fidl::Error::InvalidNumBytesInEnvelope);
12883 }
12884 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12885 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12886 }
12887 }
12888
12889 next_offset += envelope_size;
12890 _next_ordinal_to_read += 1;
12891 if next_offset >= end_offset {
12892 return Ok(());
12893 }
12894
12895 while _next_ordinal_to_read < 2 {
12897 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12898 _next_ordinal_to_read += 1;
12899 next_offset += envelope_size;
12900 }
12901
12902 let next_out_of_line = decoder.next_out_of_line();
12903 let handles_before = decoder.remaining_handles();
12904 if let Some((inlined, num_bytes, num_handles)) =
12905 fidl::encoding::decode_envelope_header(decoder, next_offset)?
12906 {
12907 let member_inline_size =
12908 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
12909 if inlined != (member_inline_size <= 4) {
12910 return Err(fidl::Error::InvalidInlineBitInEnvelope);
12911 }
12912 let inner_offset;
12913 let mut inner_depth = depth.clone();
12914 if inlined {
12915 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
12916 inner_offset = next_offset;
12917 } else {
12918 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12919 inner_depth.increment()?;
12920 }
12921 let val_ref =
12922 self.server_failure_response.get_or_insert_with(|| fidl::new_empty!(u32, D));
12923 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
12924 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
12925 {
12926 return Err(fidl::Error::InvalidNumBytesInEnvelope);
12927 }
12928 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12929 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12930 }
12931 }
12932
12933 next_offset += envelope_size;
12934 _next_ordinal_to_read += 1;
12935 if next_offset >= end_offset {
12936 return Ok(());
12937 }
12938
12939 while _next_ordinal_to_read < 3 {
12941 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12942 _next_ordinal_to_read += 1;
12943 next_offset += envelope_size;
12944 }
12945
12946 let next_out_of_line = decoder.next_out_of_line();
12947 let handles_before = decoder.remaining_handles();
12948 if let Some((inlined, num_bytes, num_handles)) =
12949 fidl::encoding::decode_envelope_header(decoder, next_offset)?
12950 {
12951 let member_inline_size =
12952 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
12953 if inlined != (member_inline_size <= 4) {
12954 return Err(fidl::Error::InvalidInlineBitInEnvelope);
12955 }
12956 let inner_offset;
12957 let mut inner_depth = depth.clone();
12958 if inlined {
12959 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
12960 inner_offset = next_offset;
12961 } else {
12962 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12963 inner_depth.increment()?;
12964 }
12965 let val_ref =
12966 self.format_error_response.get_or_insert_with(|| fidl::new_empty!(u32, D));
12967 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
12968 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
12969 {
12970 return Err(fidl::Error::InvalidNumBytesInEnvelope);
12971 }
12972 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12973 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12974 }
12975 }
12976
12977 next_offset += envelope_size;
12978 _next_ordinal_to_read += 1;
12979 if next_offset >= end_offset {
12980 return Ok(());
12981 }
12982
12983 while _next_ordinal_to_read < 4 {
12985 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12986 _next_ordinal_to_read += 1;
12987 next_offset += envelope_size;
12988 }
12989
12990 let next_out_of_line = decoder.next_out_of_line();
12991 let handles_before = decoder.remaining_handles();
12992 if let Some((inlined, num_bytes, num_handles)) =
12993 fidl::encoding::decode_envelope_header(decoder, next_offset)?
12994 {
12995 let member_inline_size =
12996 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
12997 if inlined != (member_inline_size <= 4) {
12998 return Err(fidl::Error::InvalidInlineBitInEnvelope);
12999 }
13000 let inner_offset;
13001 let mut inner_depth = depth.clone();
13002 if inlined {
13003 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13004 inner_offset = next_offset;
13005 } else {
13006 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13007 inner_depth.increment()?;
13008 }
13009 let val_ref =
13010 self.name_error_response.get_or_insert_with(|| fidl::new_empty!(u32, D));
13011 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
13012 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13013 {
13014 return Err(fidl::Error::InvalidNumBytesInEnvelope);
13015 }
13016 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13017 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13018 }
13019 }
13020
13021 next_offset += envelope_size;
13022 _next_ordinal_to_read += 1;
13023 if next_offset >= end_offset {
13024 return Ok(());
13025 }
13026
13027 while _next_ordinal_to_read < 5 {
13029 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13030 _next_ordinal_to_read += 1;
13031 next_offset += envelope_size;
13032 }
13033
13034 let next_out_of_line = decoder.next_out_of_line();
13035 let handles_before = decoder.remaining_handles();
13036 if let Some((inlined, num_bytes, num_handles)) =
13037 fidl::encoding::decode_envelope_header(decoder, next_offset)?
13038 {
13039 let member_inline_size =
13040 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
13041 if inlined != (member_inline_size <= 4) {
13042 return Err(fidl::Error::InvalidInlineBitInEnvelope);
13043 }
13044 let inner_offset;
13045 let mut inner_depth = depth.clone();
13046 if inlined {
13047 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13048 inner_offset = next_offset;
13049 } else {
13050 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13051 inner_depth.increment()?;
13052 }
13053 let val_ref =
13054 self.not_implemented_response.get_or_insert_with(|| fidl::new_empty!(u32, D));
13055 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
13056 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13057 {
13058 return Err(fidl::Error::InvalidNumBytesInEnvelope);
13059 }
13060 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13061 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13062 }
13063 }
13064
13065 next_offset += envelope_size;
13066 _next_ordinal_to_read += 1;
13067 if next_offset >= end_offset {
13068 return Ok(());
13069 }
13070
13071 while _next_ordinal_to_read < 6 {
13073 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13074 _next_ordinal_to_read += 1;
13075 next_offset += envelope_size;
13076 }
13077
13078 let next_out_of_line = decoder.next_out_of_line();
13079 let handles_before = decoder.remaining_handles();
13080 if let Some((inlined, num_bytes, num_handles)) =
13081 fidl::encoding::decode_envelope_header(decoder, next_offset)?
13082 {
13083 let member_inline_size =
13084 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
13085 if inlined != (member_inline_size <= 4) {
13086 return Err(fidl::Error::InvalidInlineBitInEnvelope);
13087 }
13088 let inner_offset;
13089 let mut inner_depth = depth.clone();
13090 if inlined {
13091 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13092 inner_offset = next_offset;
13093 } else {
13094 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13095 inner_depth.increment()?;
13096 }
13097 let val_ref = self.other_response.get_or_insert_with(|| fidl::new_empty!(u32, D));
13098 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
13099 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13100 {
13101 return Err(fidl::Error::InvalidNumBytesInEnvelope);
13102 }
13103 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13104 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13105 }
13106 }
13107
13108 next_offset += envelope_size;
13109 _next_ordinal_to_read += 1;
13110 if next_offset >= end_offset {
13111 return Ok(());
13112 }
13113
13114 while _next_ordinal_to_read < 7 {
13116 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13117 _next_ordinal_to_read += 1;
13118 next_offset += envelope_size;
13119 }
13120
13121 let next_out_of_line = decoder.next_out_of_line();
13122 let handles_before = decoder.remaining_handles();
13123 if let Some((inlined, num_bytes, num_handles)) =
13124 fidl::encoding::decode_envelope_header(decoder, next_offset)?
13125 {
13126 let member_inline_size =
13127 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
13128 if inlined != (member_inline_size <= 4) {
13129 return Err(fidl::Error::InvalidInlineBitInEnvelope);
13130 }
13131 let inner_offset;
13132 let mut inner_depth = depth.clone();
13133 if inlined {
13134 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13135 inner_offset = next_offset;
13136 } else {
13137 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13138 inner_depth.increment()?;
13139 }
13140 let val_ref = self.resolved_by_srp.get_or_insert_with(|| fidl::new_empty!(u32, D));
13141 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
13142 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13143 {
13144 return Err(fidl::Error::InvalidNumBytesInEnvelope);
13145 }
13146 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13147 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13148 }
13149 }
13150
13151 next_offset += envelope_size;
13152 _next_ordinal_to_read += 1;
13153 if next_offset >= end_offset {
13154 return Ok(());
13155 }
13156
13157 while _next_ordinal_to_read < 8 {
13159 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13160 _next_ordinal_to_read += 1;
13161 next_offset += envelope_size;
13162 }
13163
13164 let next_out_of_line = decoder.next_out_of_line();
13165 let handles_before = decoder.remaining_handles();
13166 if let Some((inlined, num_bytes, num_handles)) =
13167 fidl::encoding::decode_envelope_header(decoder, next_offset)?
13168 {
13169 let member_inline_size =
13170 <UpstreamDnsCounters as fidl::encoding::TypeMarker>::inline_size(
13171 decoder.context,
13172 );
13173 if inlined != (member_inline_size <= 4) {
13174 return Err(fidl::Error::InvalidInlineBitInEnvelope);
13175 }
13176 let inner_offset;
13177 let mut inner_depth = depth.clone();
13178 if inlined {
13179 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13180 inner_offset = next_offset;
13181 } else {
13182 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13183 inner_depth.increment()?;
13184 }
13185 let val_ref = self
13186 .upstream_dns_counters
13187 .get_or_insert_with(|| fidl::new_empty!(UpstreamDnsCounters, D));
13188 fidl::decode!(UpstreamDnsCounters, D, val_ref, decoder, inner_offset, inner_depth)?;
13189 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13190 {
13191 return Err(fidl::Error::InvalidNumBytesInEnvelope);
13192 }
13193 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13194 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13195 }
13196 }
13197
13198 next_offset += envelope_size;
13199
13200 while next_offset < end_offset {
13202 _next_ordinal_to_read += 1;
13203 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13204 next_offset += envelope_size;
13205 }
13206
13207 Ok(())
13208 }
13209 }
13210
13211 impl EidCacheEntry {
13212 #[inline(always)]
13213 fn max_ordinal_present(&self) -> u64 {
13214 if let Some(_) = self.retry_delay {
13215 return 10;
13216 }
13217 if let Some(_) = self.timeout {
13218 return 9;
13219 }
13220 if let Some(_) = self.mesh_local_eid {
13221 return 8;
13222 }
13223 if let Some(_) = self.last_trans_time {
13224 return 7;
13225 }
13226 if let Some(_) = self.valid_last_trans {
13227 return 6;
13228 }
13229 if let Some(_) = self.ramp_down {
13230 return 5;
13231 }
13232 if let Some(_) = self.can_evict {
13233 return 4;
13234 }
13235 if let Some(_) = self.state {
13236 return 3;
13237 }
13238 if let Some(_) = self.rloc16 {
13239 return 2;
13240 }
13241 if let Some(_) = self.target {
13242 return 1;
13243 }
13244 0
13245 }
13246 }
13247
13248 impl fidl::encoding::ValueTypeMarker for EidCacheEntry {
13249 type Borrowed<'a> = &'a Self;
13250 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
13251 value
13252 }
13253 }
13254
13255 unsafe impl fidl::encoding::TypeMarker for EidCacheEntry {
13256 type Owned = Self;
13257
13258 #[inline(always)]
13259 fn inline_align(_context: fidl::encoding::Context) -> usize {
13260 8
13261 }
13262
13263 #[inline(always)]
13264 fn inline_size(_context: fidl::encoding::Context) -> usize {
13265 16
13266 }
13267 }
13268
13269 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<EidCacheEntry, D>
13270 for &EidCacheEntry
13271 {
13272 unsafe fn encode(
13273 self,
13274 encoder: &mut fidl::encoding::Encoder<'_, D>,
13275 offset: usize,
13276 mut depth: fidl::encoding::Depth,
13277 ) -> fidl::Result<()> {
13278 encoder.debug_check_bounds::<EidCacheEntry>(offset);
13279 let max_ordinal: u64 = self.max_ordinal_present();
13281 encoder.write_num(max_ordinal, offset);
13282 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
13283 if max_ordinal == 0 {
13285 return Ok(());
13286 }
13287 depth.increment()?;
13288 let envelope_size = 8;
13289 let bytes_len = max_ordinal as usize * envelope_size;
13290 #[allow(unused_variables)]
13291 let offset = encoder.out_of_line_offset(bytes_len);
13292 let mut _prev_end_offset: usize = 0;
13293 if 1 > max_ordinal {
13294 return Ok(());
13295 }
13296
13297 let cur_offset: usize = (1 - 1) * envelope_size;
13300
13301 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13303
13304 fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_net_common::Ipv6Address, D>(
13309 self.target.as_ref().map(<fidl_fuchsia_net_common::Ipv6Address as fidl::encoding::ValueTypeMarker>::borrow),
13310 encoder, offset + cur_offset, depth
13311 )?;
13312
13313 _prev_end_offset = cur_offset + envelope_size;
13314 if 2 > max_ordinal {
13315 return Ok(());
13316 }
13317
13318 let cur_offset: usize = (2 - 1) * envelope_size;
13321
13322 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13324
13325 fidl::encoding::encode_in_envelope_optional::<u16, D>(
13330 self.rloc16.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
13331 encoder,
13332 offset + cur_offset,
13333 depth,
13334 )?;
13335
13336 _prev_end_offset = cur_offset + envelope_size;
13337 if 3 > max_ordinal {
13338 return Ok(());
13339 }
13340
13341 let cur_offset: usize = (3 - 1) * envelope_size;
13344
13345 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13347
13348 fidl::encoding::encode_in_envelope_optional::<CacheEntryState, D>(
13353 self.state
13354 .as_ref()
13355 .map(<CacheEntryState as fidl::encoding::ValueTypeMarker>::borrow),
13356 encoder,
13357 offset + cur_offset,
13358 depth,
13359 )?;
13360
13361 _prev_end_offset = cur_offset + envelope_size;
13362 if 4 > max_ordinal {
13363 return Ok(());
13364 }
13365
13366 let cur_offset: usize = (4 - 1) * envelope_size;
13369
13370 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13372
13373 fidl::encoding::encode_in_envelope_optional::<bool, D>(
13378 self.can_evict.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
13379 encoder,
13380 offset + cur_offset,
13381 depth,
13382 )?;
13383
13384 _prev_end_offset = cur_offset + envelope_size;
13385 if 5 > max_ordinal {
13386 return Ok(());
13387 }
13388
13389 let cur_offset: usize = (5 - 1) * envelope_size;
13392
13393 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13395
13396 fidl::encoding::encode_in_envelope_optional::<bool, D>(
13401 self.ramp_down.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
13402 encoder,
13403 offset + cur_offset,
13404 depth,
13405 )?;
13406
13407 _prev_end_offset = cur_offset + envelope_size;
13408 if 6 > max_ordinal {
13409 return Ok(());
13410 }
13411
13412 let cur_offset: usize = (6 - 1) * envelope_size;
13415
13416 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13418
13419 fidl::encoding::encode_in_envelope_optional::<bool, D>(
13424 self.valid_last_trans
13425 .as_ref()
13426 .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
13427 encoder,
13428 offset + cur_offset,
13429 depth,
13430 )?;
13431
13432 _prev_end_offset = cur_offset + envelope_size;
13433 if 7 > max_ordinal {
13434 return Ok(());
13435 }
13436
13437 let cur_offset: usize = (7 - 1) * envelope_size;
13440
13441 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13443
13444 fidl::encoding::encode_in_envelope_optional::<i64, D>(
13449 self.last_trans_time.as_ref().map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
13450 encoder,
13451 offset + cur_offset,
13452 depth,
13453 )?;
13454
13455 _prev_end_offset = cur_offset + envelope_size;
13456 if 8 > max_ordinal {
13457 return Ok(());
13458 }
13459
13460 let cur_offset: usize = (8 - 1) * envelope_size;
13463
13464 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13466
13467 fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_net_common::Ipv6Address, D>(
13472 self.mesh_local_eid.as_ref().map(<fidl_fuchsia_net_common::Ipv6Address as fidl::encoding::ValueTypeMarker>::borrow),
13473 encoder, offset + cur_offset, depth
13474 )?;
13475
13476 _prev_end_offset = cur_offset + envelope_size;
13477 if 9 > max_ordinal {
13478 return Ok(());
13479 }
13480
13481 let cur_offset: usize = (9 - 1) * envelope_size;
13484
13485 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13487
13488 fidl::encoding::encode_in_envelope_optional::<i64, D>(
13493 self.timeout.as_ref().map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
13494 encoder,
13495 offset + cur_offset,
13496 depth,
13497 )?;
13498
13499 _prev_end_offset = cur_offset + envelope_size;
13500 if 10 > max_ordinal {
13501 return Ok(());
13502 }
13503
13504 let cur_offset: usize = (10 - 1) * envelope_size;
13507
13508 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13510
13511 fidl::encoding::encode_in_envelope_optional::<i64, D>(
13516 self.retry_delay.as_ref().map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
13517 encoder,
13518 offset + cur_offset,
13519 depth,
13520 )?;
13521
13522 _prev_end_offset = cur_offset + envelope_size;
13523
13524 Ok(())
13525 }
13526 }
13527
13528 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for EidCacheEntry {
13529 #[inline(always)]
13530 fn new_empty() -> Self {
13531 Self::default()
13532 }
13533
13534 unsafe fn decode(
13535 &mut self,
13536 decoder: &mut fidl::encoding::Decoder<'_, D>,
13537 offset: usize,
13538 mut depth: fidl::encoding::Depth,
13539 ) -> fidl::Result<()> {
13540 decoder.debug_check_bounds::<Self>(offset);
13541 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
13542 None => return Err(fidl::Error::NotNullable),
13543 Some(len) => len,
13544 };
13545 if len == 0 {
13547 return Ok(());
13548 };
13549 depth.increment()?;
13550 let envelope_size = 8;
13551 let bytes_len = len * envelope_size;
13552 let offset = decoder.out_of_line_offset(bytes_len)?;
13553 let mut _next_ordinal_to_read = 0;
13555 let mut next_offset = offset;
13556 let end_offset = offset + bytes_len;
13557 _next_ordinal_to_read += 1;
13558 if next_offset >= end_offset {
13559 return Ok(());
13560 }
13561
13562 while _next_ordinal_to_read < 1 {
13564 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13565 _next_ordinal_to_read += 1;
13566 next_offset += envelope_size;
13567 }
13568
13569 let next_out_of_line = decoder.next_out_of_line();
13570 let handles_before = decoder.remaining_handles();
13571 if let Some((inlined, num_bytes, num_handles)) =
13572 fidl::encoding::decode_envelope_header(decoder, next_offset)?
13573 {
13574 let member_inline_size = <fidl_fuchsia_net_common::Ipv6Address as fidl::encoding::TypeMarker>::inline_size(decoder.context);
13575 if inlined != (member_inline_size <= 4) {
13576 return Err(fidl::Error::InvalidInlineBitInEnvelope);
13577 }
13578 let inner_offset;
13579 let mut inner_depth = depth.clone();
13580 if inlined {
13581 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13582 inner_offset = next_offset;
13583 } else {
13584 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13585 inner_depth.increment()?;
13586 }
13587 let val_ref = self.target.get_or_insert_with(|| {
13588 fidl::new_empty!(fidl_fuchsia_net_common::Ipv6Address, D)
13589 });
13590 fidl::decode!(
13591 fidl_fuchsia_net_common::Ipv6Address,
13592 D,
13593 val_ref,
13594 decoder,
13595 inner_offset,
13596 inner_depth
13597 )?;
13598 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13599 {
13600 return Err(fidl::Error::InvalidNumBytesInEnvelope);
13601 }
13602 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13603 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13604 }
13605 }
13606
13607 next_offset += envelope_size;
13608 _next_ordinal_to_read += 1;
13609 if next_offset >= end_offset {
13610 return Ok(());
13611 }
13612
13613 while _next_ordinal_to_read < 2 {
13615 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13616 _next_ordinal_to_read += 1;
13617 next_offset += envelope_size;
13618 }
13619
13620 let next_out_of_line = decoder.next_out_of_line();
13621 let handles_before = decoder.remaining_handles();
13622 if let Some((inlined, num_bytes, num_handles)) =
13623 fidl::encoding::decode_envelope_header(decoder, next_offset)?
13624 {
13625 let member_inline_size =
13626 <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
13627 if inlined != (member_inline_size <= 4) {
13628 return Err(fidl::Error::InvalidInlineBitInEnvelope);
13629 }
13630 let inner_offset;
13631 let mut inner_depth = depth.clone();
13632 if inlined {
13633 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13634 inner_offset = next_offset;
13635 } else {
13636 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13637 inner_depth.increment()?;
13638 }
13639 let val_ref = self.rloc16.get_or_insert_with(|| fidl::new_empty!(u16, D));
13640 fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
13641 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13642 {
13643 return Err(fidl::Error::InvalidNumBytesInEnvelope);
13644 }
13645 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13646 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13647 }
13648 }
13649
13650 next_offset += envelope_size;
13651 _next_ordinal_to_read += 1;
13652 if next_offset >= end_offset {
13653 return Ok(());
13654 }
13655
13656 while _next_ordinal_to_read < 3 {
13658 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13659 _next_ordinal_to_read += 1;
13660 next_offset += envelope_size;
13661 }
13662
13663 let next_out_of_line = decoder.next_out_of_line();
13664 let handles_before = decoder.remaining_handles();
13665 if let Some((inlined, num_bytes, num_handles)) =
13666 fidl::encoding::decode_envelope_header(decoder, next_offset)?
13667 {
13668 let member_inline_size =
13669 <CacheEntryState as fidl::encoding::TypeMarker>::inline_size(decoder.context);
13670 if inlined != (member_inline_size <= 4) {
13671 return Err(fidl::Error::InvalidInlineBitInEnvelope);
13672 }
13673 let inner_offset;
13674 let mut inner_depth = depth.clone();
13675 if inlined {
13676 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13677 inner_offset = next_offset;
13678 } else {
13679 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13680 inner_depth.increment()?;
13681 }
13682 let val_ref =
13683 self.state.get_or_insert_with(|| fidl::new_empty!(CacheEntryState, D));
13684 fidl::decode!(CacheEntryState, D, val_ref, decoder, inner_offset, inner_depth)?;
13685 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13686 {
13687 return Err(fidl::Error::InvalidNumBytesInEnvelope);
13688 }
13689 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13690 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13691 }
13692 }
13693
13694 next_offset += envelope_size;
13695 _next_ordinal_to_read += 1;
13696 if next_offset >= end_offset {
13697 return Ok(());
13698 }
13699
13700 while _next_ordinal_to_read < 4 {
13702 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13703 _next_ordinal_to_read += 1;
13704 next_offset += envelope_size;
13705 }
13706
13707 let next_out_of_line = decoder.next_out_of_line();
13708 let handles_before = decoder.remaining_handles();
13709 if let Some((inlined, num_bytes, num_handles)) =
13710 fidl::encoding::decode_envelope_header(decoder, next_offset)?
13711 {
13712 let member_inline_size =
13713 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
13714 if inlined != (member_inline_size <= 4) {
13715 return Err(fidl::Error::InvalidInlineBitInEnvelope);
13716 }
13717 let inner_offset;
13718 let mut inner_depth = depth.clone();
13719 if inlined {
13720 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13721 inner_offset = next_offset;
13722 } else {
13723 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13724 inner_depth.increment()?;
13725 }
13726 let val_ref = self.can_evict.get_or_insert_with(|| fidl::new_empty!(bool, D));
13727 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
13728 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13729 {
13730 return Err(fidl::Error::InvalidNumBytesInEnvelope);
13731 }
13732 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13733 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13734 }
13735 }
13736
13737 next_offset += envelope_size;
13738 _next_ordinal_to_read += 1;
13739 if next_offset >= end_offset {
13740 return Ok(());
13741 }
13742
13743 while _next_ordinal_to_read < 5 {
13745 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13746 _next_ordinal_to_read += 1;
13747 next_offset += envelope_size;
13748 }
13749
13750 let next_out_of_line = decoder.next_out_of_line();
13751 let handles_before = decoder.remaining_handles();
13752 if let Some((inlined, num_bytes, num_handles)) =
13753 fidl::encoding::decode_envelope_header(decoder, next_offset)?
13754 {
13755 let member_inline_size =
13756 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
13757 if inlined != (member_inline_size <= 4) {
13758 return Err(fidl::Error::InvalidInlineBitInEnvelope);
13759 }
13760 let inner_offset;
13761 let mut inner_depth = depth.clone();
13762 if inlined {
13763 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13764 inner_offset = next_offset;
13765 } else {
13766 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13767 inner_depth.increment()?;
13768 }
13769 let val_ref = self.ramp_down.get_or_insert_with(|| fidl::new_empty!(bool, D));
13770 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
13771 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13772 {
13773 return Err(fidl::Error::InvalidNumBytesInEnvelope);
13774 }
13775 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13776 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13777 }
13778 }
13779
13780 next_offset += envelope_size;
13781 _next_ordinal_to_read += 1;
13782 if next_offset >= end_offset {
13783 return Ok(());
13784 }
13785
13786 while _next_ordinal_to_read < 6 {
13788 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13789 _next_ordinal_to_read += 1;
13790 next_offset += envelope_size;
13791 }
13792
13793 let next_out_of_line = decoder.next_out_of_line();
13794 let handles_before = decoder.remaining_handles();
13795 if let Some((inlined, num_bytes, num_handles)) =
13796 fidl::encoding::decode_envelope_header(decoder, next_offset)?
13797 {
13798 let member_inline_size =
13799 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
13800 if inlined != (member_inline_size <= 4) {
13801 return Err(fidl::Error::InvalidInlineBitInEnvelope);
13802 }
13803 let inner_offset;
13804 let mut inner_depth = depth.clone();
13805 if inlined {
13806 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13807 inner_offset = next_offset;
13808 } else {
13809 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13810 inner_depth.increment()?;
13811 }
13812 let val_ref =
13813 self.valid_last_trans.get_or_insert_with(|| fidl::new_empty!(bool, D));
13814 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
13815 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13816 {
13817 return Err(fidl::Error::InvalidNumBytesInEnvelope);
13818 }
13819 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13820 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13821 }
13822 }
13823
13824 next_offset += envelope_size;
13825 _next_ordinal_to_read += 1;
13826 if next_offset >= end_offset {
13827 return Ok(());
13828 }
13829
13830 while _next_ordinal_to_read < 7 {
13832 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13833 _next_ordinal_to_read += 1;
13834 next_offset += envelope_size;
13835 }
13836
13837 let next_out_of_line = decoder.next_out_of_line();
13838 let handles_before = decoder.remaining_handles();
13839 if let Some((inlined, num_bytes, num_handles)) =
13840 fidl::encoding::decode_envelope_header(decoder, next_offset)?
13841 {
13842 let member_inline_size =
13843 <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
13844 if inlined != (member_inline_size <= 4) {
13845 return Err(fidl::Error::InvalidInlineBitInEnvelope);
13846 }
13847 let inner_offset;
13848 let mut inner_depth = depth.clone();
13849 if inlined {
13850 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13851 inner_offset = next_offset;
13852 } else {
13853 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13854 inner_depth.increment()?;
13855 }
13856 let val_ref = self.last_trans_time.get_or_insert_with(|| fidl::new_empty!(i64, D));
13857 fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
13858 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13859 {
13860 return Err(fidl::Error::InvalidNumBytesInEnvelope);
13861 }
13862 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13863 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13864 }
13865 }
13866
13867 next_offset += envelope_size;
13868 _next_ordinal_to_read += 1;
13869 if next_offset >= end_offset {
13870 return Ok(());
13871 }
13872
13873 while _next_ordinal_to_read < 8 {
13875 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13876 _next_ordinal_to_read += 1;
13877 next_offset += envelope_size;
13878 }
13879
13880 let next_out_of_line = decoder.next_out_of_line();
13881 let handles_before = decoder.remaining_handles();
13882 if let Some((inlined, num_bytes, num_handles)) =
13883 fidl::encoding::decode_envelope_header(decoder, next_offset)?
13884 {
13885 let member_inline_size = <fidl_fuchsia_net_common::Ipv6Address as fidl::encoding::TypeMarker>::inline_size(decoder.context);
13886 if inlined != (member_inline_size <= 4) {
13887 return Err(fidl::Error::InvalidInlineBitInEnvelope);
13888 }
13889 let inner_offset;
13890 let mut inner_depth = depth.clone();
13891 if inlined {
13892 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13893 inner_offset = next_offset;
13894 } else {
13895 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13896 inner_depth.increment()?;
13897 }
13898 let val_ref = self.mesh_local_eid.get_or_insert_with(|| {
13899 fidl::new_empty!(fidl_fuchsia_net_common::Ipv6Address, D)
13900 });
13901 fidl::decode!(
13902 fidl_fuchsia_net_common::Ipv6Address,
13903 D,
13904 val_ref,
13905 decoder,
13906 inner_offset,
13907 inner_depth
13908 )?;
13909 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13910 {
13911 return Err(fidl::Error::InvalidNumBytesInEnvelope);
13912 }
13913 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13914 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13915 }
13916 }
13917
13918 next_offset += envelope_size;
13919 _next_ordinal_to_read += 1;
13920 if next_offset >= end_offset {
13921 return Ok(());
13922 }
13923
13924 while _next_ordinal_to_read < 9 {
13926 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13927 _next_ordinal_to_read += 1;
13928 next_offset += envelope_size;
13929 }
13930
13931 let next_out_of_line = decoder.next_out_of_line();
13932 let handles_before = decoder.remaining_handles();
13933 if let Some((inlined, num_bytes, num_handles)) =
13934 fidl::encoding::decode_envelope_header(decoder, next_offset)?
13935 {
13936 let member_inline_size =
13937 <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
13938 if inlined != (member_inline_size <= 4) {
13939 return Err(fidl::Error::InvalidInlineBitInEnvelope);
13940 }
13941 let inner_offset;
13942 let mut inner_depth = depth.clone();
13943 if inlined {
13944 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13945 inner_offset = next_offset;
13946 } else {
13947 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13948 inner_depth.increment()?;
13949 }
13950 let val_ref = self.timeout.get_or_insert_with(|| fidl::new_empty!(i64, D));
13951 fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
13952 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13953 {
13954 return Err(fidl::Error::InvalidNumBytesInEnvelope);
13955 }
13956 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13957 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13958 }
13959 }
13960
13961 next_offset += envelope_size;
13962 _next_ordinal_to_read += 1;
13963 if next_offset >= end_offset {
13964 return Ok(());
13965 }
13966
13967 while _next_ordinal_to_read < 10 {
13969 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13970 _next_ordinal_to_read += 1;
13971 next_offset += envelope_size;
13972 }
13973
13974 let next_out_of_line = decoder.next_out_of_line();
13975 let handles_before = decoder.remaining_handles();
13976 if let Some((inlined, num_bytes, num_handles)) =
13977 fidl::encoding::decode_envelope_header(decoder, next_offset)?
13978 {
13979 let member_inline_size =
13980 <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
13981 if inlined != (member_inline_size <= 4) {
13982 return Err(fidl::Error::InvalidInlineBitInEnvelope);
13983 }
13984 let inner_offset;
13985 let mut inner_depth = depth.clone();
13986 if inlined {
13987 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13988 inner_offset = next_offset;
13989 } else {
13990 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13991 inner_depth.increment()?;
13992 }
13993 let val_ref = self.retry_delay.get_or_insert_with(|| fidl::new_empty!(i64, D));
13994 fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
13995 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13996 {
13997 return Err(fidl::Error::InvalidNumBytesInEnvelope);
13998 }
13999 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14000 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14001 }
14002 }
14003
14004 next_offset += envelope_size;
14005
14006 while next_offset < end_offset {
14008 _next_ordinal_to_read += 1;
14009 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14010 next_offset += envelope_size;
14011 }
14012
14013 Ok(())
14014 }
14015 }
14016
14017 impl ExternalRoute {
14018 #[inline(always)]
14019 fn max_ordinal_present(&self) -> u64 {
14020 if let Some(_) = self.stable {
14021 return 3;
14022 }
14023 if let Some(_) = self.route_preference {
14024 return 2;
14025 }
14026 if let Some(_) = self.subnet {
14027 return 1;
14028 }
14029 0
14030 }
14031 }
14032
14033 impl fidl::encoding::ValueTypeMarker for ExternalRoute {
14034 type Borrowed<'a> = &'a Self;
14035 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
14036 value
14037 }
14038 }
14039
14040 unsafe impl fidl::encoding::TypeMarker for ExternalRoute {
14041 type Owned = Self;
14042
14043 #[inline(always)]
14044 fn inline_align(_context: fidl::encoding::Context) -> usize {
14045 8
14046 }
14047
14048 #[inline(always)]
14049 fn inline_size(_context: fidl::encoding::Context) -> usize {
14050 16
14051 }
14052 }
14053
14054 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ExternalRoute, D>
14055 for &ExternalRoute
14056 {
14057 unsafe fn encode(
14058 self,
14059 encoder: &mut fidl::encoding::Encoder<'_, D>,
14060 offset: usize,
14061 mut depth: fidl::encoding::Depth,
14062 ) -> fidl::Result<()> {
14063 encoder.debug_check_bounds::<ExternalRoute>(offset);
14064 let max_ordinal: u64 = self.max_ordinal_present();
14066 encoder.write_num(max_ordinal, offset);
14067 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
14068 if max_ordinal == 0 {
14070 return Ok(());
14071 }
14072 depth.increment()?;
14073 let envelope_size = 8;
14074 let bytes_len = max_ordinal as usize * envelope_size;
14075 #[allow(unused_variables)]
14076 let offset = encoder.out_of_line_offset(bytes_len);
14077 let mut _prev_end_offset: usize = 0;
14078 if 1 > max_ordinal {
14079 return Ok(());
14080 }
14081
14082 let cur_offset: usize = (1 - 1) * envelope_size;
14085
14086 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
14088
14089 fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_net_common::Ipv6AddressWithPrefix, D>(
14094 self.subnet.as_ref().map(<fidl_fuchsia_net_common::Ipv6AddressWithPrefix as fidl::encoding::ValueTypeMarker>::borrow),
14095 encoder, offset + cur_offset, depth
14096 )?;
14097
14098 _prev_end_offset = cur_offset + envelope_size;
14099 if 2 > max_ordinal {
14100 return Ok(());
14101 }
14102
14103 let cur_offset: usize = (2 - 1) * envelope_size;
14106
14107 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
14109
14110 fidl::encoding::encode_in_envelope_optional::<RoutePreference, D>(
14115 self.route_preference
14116 .as_ref()
14117 .map(<RoutePreference as fidl::encoding::ValueTypeMarker>::borrow),
14118 encoder,
14119 offset + cur_offset,
14120 depth,
14121 )?;
14122
14123 _prev_end_offset = cur_offset + envelope_size;
14124 if 3 > max_ordinal {
14125 return Ok(());
14126 }
14127
14128 let cur_offset: usize = (3 - 1) * envelope_size;
14131
14132 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
14134
14135 fidl::encoding::encode_in_envelope_optional::<bool, D>(
14140 self.stable.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
14141 encoder,
14142 offset + cur_offset,
14143 depth,
14144 )?;
14145
14146 _prev_end_offset = cur_offset + envelope_size;
14147
14148 Ok(())
14149 }
14150 }
14151
14152 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ExternalRoute {
14153 #[inline(always)]
14154 fn new_empty() -> Self {
14155 Self::default()
14156 }
14157
14158 unsafe fn decode(
14159 &mut self,
14160 decoder: &mut fidl::encoding::Decoder<'_, D>,
14161 offset: usize,
14162 mut depth: fidl::encoding::Depth,
14163 ) -> fidl::Result<()> {
14164 decoder.debug_check_bounds::<Self>(offset);
14165 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
14166 None => return Err(fidl::Error::NotNullable),
14167 Some(len) => len,
14168 };
14169 if len == 0 {
14171 return Ok(());
14172 };
14173 depth.increment()?;
14174 let envelope_size = 8;
14175 let bytes_len = len * envelope_size;
14176 let offset = decoder.out_of_line_offset(bytes_len)?;
14177 let mut _next_ordinal_to_read = 0;
14179 let mut next_offset = offset;
14180 let end_offset = offset + bytes_len;
14181 _next_ordinal_to_read += 1;
14182 if next_offset >= end_offset {
14183 return Ok(());
14184 }
14185
14186 while _next_ordinal_to_read < 1 {
14188 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14189 _next_ordinal_to_read += 1;
14190 next_offset += envelope_size;
14191 }
14192
14193 let next_out_of_line = decoder.next_out_of_line();
14194 let handles_before = decoder.remaining_handles();
14195 if let Some((inlined, num_bytes, num_handles)) =
14196 fidl::encoding::decode_envelope_header(decoder, next_offset)?
14197 {
14198 let member_inline_size = <fidl_fuchsia_net_common::Ipv6AddressWithPrefix as fidl::encoding::TypeMarker>::inline_size(decoder.context);
14199 if inlined != (member_inline_size <= 4) {
14200 return Err(fidl::Error::InvalidInlineBitInEnvelope);
14201 }
14202 let inner_offset;
14203 let mut inner_depth = depth.clone();
14204 if inlined {
14205 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14206 inner_offset = next_offset;
14207 } else {
14208 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14209 inner_depth.increment()?;
14210 }
14211 let val_ref = self.subnet.get_or_insert_with(|| {
14212 fidl::new_empty!(fidl_fuchsia_net_common::Ipv6AddressWithPrefix, D)
14213 });
14214 fidl::decode!(
14215 fidl_fuchsia_net_common::Ipv6AddressWithPrefix,
14216 D,
14217 val_ref,
14218 decoder,
14219 inner_offset,
14220 inner_depth
14221 )?;
14222 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14223 {
14224 return Err(fidl::Error::InvalidNumBytesInEnvelope);
14225 }
14226 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14227 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14228 }
14229 }
14230
14231 next_offset += envelope_size;
14232 _next_ordinal_to_read += 1;
14233 if next_offset >= end_offset {
14234 return Ok(());
14235 }
14236
14237 while _next_ordinal_to_read < 2 {
14239 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14240 _next_ordinal_to_read += 1;
14241 next_offset += envelope_size;
14242 }
14243
14244 let next_out_of_line = decoder.next_out_of_line();
14245 let handles_before = decoder.remaining_handles();
14246 if let Some((inlined, num_bytes, num_handles)) =
14247 fidl::encoding::decode_envelope_header(decoder, next_offset)?
14248 {
14249 let member_inline_size =
14250 <RoutePreference as fidl::encoding::TypeMarker>::inline_size(decoder.context);
14251 if inlined != (member_inline_size <= 4) {
14252 return Err(fidl::Error::InvalidInlineBitInEnvelope);
14253 }
14254 let inner_offset;
14255 let mut inner_depth = depth.clone();
14256 if inlined {
14257 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14258 inner_offset = next_offset;
14259 } else {
14260 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14261 inner_depth.increment()?;
14262 }
14263 let val_ref = self
14264 .route_preference
14265 .get_or_insert_with(|| fidl::new_empty!(RoutePreference, D));
14266 fidl::decode!(RoutePreference, D, val_ref, decoder, inner_offset, inner_depth)?;
14267 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14268 {
14269 return Err(fidl::Error::InvalidNumBytesInEnvelope);
14270 }
14271 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14272 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14273 }
14274 }
14275
14276 next_offset += envelope_size;
14277 _next_ordinal_to_read += 1;
14278 if next_offset >= end_offset {
14279 return Ok(());
14280 }
14281
14282 while _next_ordinal_to_read < 3 {
14284 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14285 _next_ordinal_to_read += 1;
14286 next_offset += envelope_size;
14287 }
14288
14289 let next_out_of_line = decoder.next_out_of_line();
14290 let handles_before = decoder.remaining_handles();
14291 if let Some((inlined, num_bytes, num_handles)) =
14292 fidl::encoding::decode_envelope_header(decoder, next_offset)?
14293 {
14294 let member_inline_size =
14295 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
14296 if inlined != (member_inline_size <= 4) {
14297 return Err(fidl::Error::InvalidInlineBitInEnvelope);
14298 }
14299 let inner_offset;
14300 let mut inner_depth = depth.clone();
14301 if inlined {
14302 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14303 inner_offset = next_offset;
14304 } else {
14305 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14306 inner_depth.increment()?;
14307 }
14308 let val_ref = self.stable.get_or_insert_with(|| fidl::new_empty!(bool, D));
14309 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
14310 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14311 {
14312 return Err(fidl::Error::InvalidNumBytesInEnvelope);
14313 }
14314 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14315 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14316 }
14317 }
14318
14319 next_offset += envelope_size;
14320
14321 while next_offset < end_offset {
14323 _next_ordinal_to_read += 1;
14324 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14325 next_offset += envelope_size;
14326 }
14327
14328 Ok(())
14329 }
14330 }
14331
14332 impl ExternalRouteConfig {
14333 #[inline(always)]
14334 fn max_ordinal_present(&self) -> u64 {
14335 if let Some(_) = self.adv_pio {
14336 return 7;
14337 }
14338 if let Some(_) = self.next_hop_is_this_device {
14339 return 6;
14340 }
14341 if let Some(_) = self.stable {
14342 return 5;
14343 }
14344 if let Some(_) = self.nat64 {
14345 return 4;
14346 }
14347 if let Some(_) = self.preference {
14348 return 3;
14349 }
14350 if let Some(_) = self.rloc16 {
14351 return 2;
14352 }
14353 if let Some(_) = self.prefix {
14354 return 1;
14355 }
14356 0
14357 }
14358 }
14359
14360 impl fidl::encoding::ValueTypeMarker for ExternalRouteConfig {
14361 type Borrowed<'a> = &'a Self;
14362 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
14363 value
14364 }
14365 }
14366
14367 unsafe impl fidl::encoding::TypeMarker for ExternalRouteConfig {
14368 type Owned = Self;
14369
14370 #[inline(always)]
14371 fn inline_align(_context: fidl::encoding::Context) -> usize {
14372 8
14373 }
14374
14375 #[inline(always)]
14376 fn inline_size(_context: fidl::encoding::Context) -> usize {
14377 16
14378 }
14379 }
14380
14381 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ExternalRouteConfig, D>
14382 for &ExternalRouteConfig
14383 {
14384 unsafe fn encode(
14385 self,
14386 encoder: &mut fidl::encoding::Encoder<'_, D>,
14387 offset: usize,
14388 mut depth: fidl::encoding::Depth,
14389 ) -> fidl::Result<()> {
14390 encoder.debug_check_bounds::<ExternalRouteConfig>(offset);
14391 let max_ordinal: u64 = self.max_ordinal_present();
14393 encoder.write_num(max_ordinal, offset);
14394 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
14395 if max_ordinal == 0 {
14397 return Ok(());
14398 }
14399 depth.increment()?;
14400 let envelope_size = 8;
14401 let bytes_len = max_ordinal as usize * envelope_size;
14402 #[allow(unused_variables)]
14403 let offset = encoder.out_of_line_offset(bytes_len);
14404 let mut _prev_end_offset: usize = 0;
14405 if 1 > max_ordinal {
14406 return Ok(());
14407 }
14408
14409 let cur_offset: usize = (1 - 1) * envelope_size;
14412
14413 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
14415
14416 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<64>, D>(
14421 self.prefix.as_ref().map(
14422 <fidl::encoding::BoundedString<64> as fidl::encoding::ValueTypeMarker>::borrow,
14423 ),
14424 encoder,
14425 offset + cur_offset,
14426 depth,
14427 )?;
14428
14429 _prev_end_offset = cur_offset + envelope_size;
14430 if 2 > max_ordinal {
14431 return Ok(());
14432 }
14433
14434 let cur_offset: usize = (2 - 1) * envelope_size;
14437
14438 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
14440
14441 fidl::encoding::encode_in_envelope_optional::<u16, D>(
14446 self.rloc16.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
14447 encoder,
14448 offset + cur_offset,
14449 depth,
14450 )?;
14451
14452 _prev_end_offset = cur_offset + envelope_size;
14453 if 3 > max_ordinal {
14454 return Ok(());
14455 }
14456
14457 let cur_offset: usize = (3 - 1) * envelope_size;
14460
14461 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
14463
14464 fidl::encoding::encode_in_envelope_optional::<i8, D>(
14469 self.preference.as_ref().map(<i8 as fidl::encoding::ValueTypeMarker>::borrow),
14470 encoder,
14471 offset + cur_offset,
14472 depth,
14473 )?;
14474
14475 _prev_end_offset = cur_offset + envelope_size;
14476 if 4 > max_ordinal {
14477 return Ok(());
14478 }
14479
14480 let cur_offset: usize = (4 - 1) * envelope_size;
14483
14484 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
14486
14487 fidl::encoding::encode_in_envelope_optional::<bool, D>(
14492 self.nat64.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
14493 encoder,
14494 offset + cur_offset,
14495 depth,
14496 )?;
14497
14498 _prev_end_offset = cur_offset + envelope_size;
14499 if 5 > max_ordinal {
14500 return Ok(());
14501 }
14502
14503 let cur_offset: usize = (5 - 1) * envelope_size;
14506
14507 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
14509
14510 fidl::encoding::encode_in_envelope_optional::<bool, D>(
14515 self.stable.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
14516 encoder,
14517 offset + cur_offset,
14518 depth,
14519 )?;
14520
14521 _prev_end_offset = cur_offset + envelope_size;
14522 if 6 > max_ordinal {
14523 return Ok(());
14524 }
14525
14526 let cur_offset: usize = (6 - 1) * envelope_size;
14529
14530 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
14532
14533 fidl::encoding::encode_in_envelope_optional::<bool, D>(
14538 self.next_hop_is_this_device
14539 .as_ref()
14540 .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
14541 encoder,
14542 offset + cur_offset,
14543 depth,
14544 )?;
14545
14546 _prev_end_offset = cur_offset + envelope_size;
14547 if 7 > max_ordinal {
14548 return Ok(());
14549 }
14550
14551 let cur_offset: usize = (7 - 1) * envelope_size;
14554
14555 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
14557
14558 fidl::encoding::encode_in_envelope_optional::<bool, D>(
14563 self.adv_pio.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
14564 encoder,
14565 offset + cur_offset,
14566 depth,
14567 )?;
14568
14569 _prev_end_offset = cur_offset + envelope_size;
14570
14571 Ok(())
14572 }
14573 }
14574
14575 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ExternalRouteConfig {
14576 #[inline(always)]
14577 fn new_empty() -> Self {
14578 Self::default()
14579 }
14580
14581 unsafe fn decode(
14582 &mut self,
14583 decoder: &mut fidl::encoding::Decoder<'_, D>,
14584 offset: usize,
14585 mut depth: fidl::encoding::Depth,
14586 ) -> fidl::Result<()> {
14587 decoder.debug_check_bounds::<Self>(offset);
14588 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
14589 None => return Err(fidl::Error::NotNullable),
14590 Some(len) => len,
14591 };
14592 if len == 0 {
14594 return Ok(());
14595 };
14596 depth.increment()?;
14597 let envelope_size = 8;
14598 let bytes_len = len * envelope_size;
14599 let offset = decoder.out_of_line_offset(bytes_len)?;
14600 let mut _next_ordinal_to_read = 0;
14602 let mut next_offset = offset;
14603 let end_offset = offset + bytes_len;
14604 _next_ordinal_to_read += 1;
14605 if next_offset >= end_offset {
14606 return Ok(());
14607 }
14608
14609 while _next_ordinal_to_read < 1 {
14611 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14612 _next_ordinal_to_read += 1;
14613 next_offset += envelope_size;
14614 }
14615
14616 let next_out_of_line = decoder.next_out_of_line();
14617 let handles_before = decoder.remaining_handles();
14618 if let Some((inlined, num_bytes, num_handles)) =
14619 fidl::encoding::decode_envelope_header(decoder, next_offset)?
14620 {
14621 let member_inline_size =
14622 <fidl::encoding::BoundedString<64> as fidl::encoding::TypeMarker>::inline_size(
14623 decoder.context,
14624 );
14625 if inlined != (member_inline_size <= 4) {
14626 return Err(fidl::Error::InvalidInlineBitInEnvelope);
14627 }
14628 let inner_offset;
14629 let mut inner_depth = depth.clone();
14630 if inlined {
14631 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14632 inner_offset = next_offset;
14633 } else {
14634 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14635 inner_depth.increment()?;
14636 }
14637 let val_ref = self
14638 .prefix
14639 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<64>, D));
14640 fidl::decode!(
14641 fidl::encoding::BoundedString<64>,
14642 D,
14643 val_ref,
14644 decoder,
14645 inner_offset,
14646 inner_depth
14647 )?;
14648 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14649 {
14650 return Err(fidl::Error::InvalidNumBytesInEnvelope);
14651 }
14652 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14653 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14654 }
14655 }
14656
14657 next_offset += envelope_size;
14658 _next_ordinal_to_read += 1;
14659 if next_offset >= end_offset {
14660 return Ok(());
14661 }
14662
14663 while _next_ordinal_to_read < 2 {
14665 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14666 _next_ordinal_to_read += 1;
14667 next_offset += envelope_size;
14668 }
14669
14670 let next_out_of_line = decoder.next_out_of_line();
14671 let handles_before = decoder.remaining_handles();
14672 if let Some((inlined, num_bytes, num_handles)) =
14673 fidl::encoding::decode_envelope_header(decoder, next_offset)?
14674 {
14675 let member_inline_size =
14676 <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
14677 if inlined != (member_inline_size <= 4) {
14678 return Err(fidl::Error::InvalidInlineBitInEnvelope);
14679 }
14680 let inner_offset;
14681 let mut inner_depth = depth.clone();
14682 if inlined {
14683 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14684 inner_offset = next_offset;
14685 } else {
14686 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14687 inner_depth.increment()?;
14688 }
14689 let val_ref = self.rloc16.get_or_insert_with(|| fidl::new_empty!(u16, D));
14690 fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
14691 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14692 {
14693 return Err(fidl::Error::InvalidNumBytesInEnvelope);
14694 }
14695 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14696 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14697 }
14698 }
14699
14700 next_offset += envelope_size;
14701 _next_ordinal_to_read += 1;
14702 if next_offset >= end_offset {
14703 return Ok(());
14704 }
14705
14706 while _next_ordinal_to_read < 3 {
14708 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14709 _next_ordinal_to_read += 1;
14710 next_offset += envelope_size;
14711 }
14712
14713 let next_out_of_line = decoder.next_out_of_line();
14714 let handles_before = decoder.remaining_handles();
14715 if let Some((inlined, num_bytes, num_handles)) =
14716 fidl::encoding::decode_envelope_header(decoder, next_offset)?
14717 {
14718 let member_inline_size =
14719 <i8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
14720 if inlined != (member_inline_size <= 4) {
14721 return Err(fidl::Error::InvalidInlineBitInEnvelope);
14722 }
14723 let inner_offset;
14724 let mut inner_depth = depth.clone();
14725 if inlined {
14726 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14727 inner_offset = next_offset;
14728 } else {
14729 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14730 inner_depth.increment()?;
14731 }
14732 let val_ref = self.preference.get_or_insert_with(|| fidl::new_empty!(i8, D));
14733 fidl::decode!(i8, D, val_ref, decoder, inner_offset, inner_depth)?;
14734 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14735 {
14736 return Err(fidl::Error::InvalidNumBytesInEnvelope);
14737 }
14738 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14739 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14740 }
14741 }
14742
14743 next_offset += envelope_size;
14744 _next_ordinal_to_read += 1;
14745 if next_offset >= end_offset {
14746 return Ok(());
14747 }
14748
14749 while _next_ordinal_to_read < 4 {
14751 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14752 _next_ordinal_to_read += 1;
14753 next_offset += envelope_size;
14754 }
14755
14756 let next_out_of_line = decoder.next_out_of_line();
14757 let handles_before = decoder.remaining_handles();
14758 if let Some((inlined, num_bytes, num_handles)) =
14759 fidl::encoding::decode_envelope_header(decoder, next_offset)?
14760 {
14761 let member_inline_size =
14762 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
14763 if inlined != (member_inline_size <= 4) {
14764 return Err(fidl::Error::InvalidInlineBitInEnvelope);
14765 }
14766 let inner_offset;
14767 let mut inner_depth = depth.clone();
14768 if inlined {
14769 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14770 inner_offset = next_offset;
14771 } else {
14772 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14773 inner_depth.increment()?;
14774 }
14775 let val_ref = self.nat64.get_or_insert_with(|| fidl::new_empty!(bool, D));
14776 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
14777 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14778 {
14779 return Err(fidl::Error::InvalidNumBytesInEnvelope);
14780 }
14781 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14782 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14783 }
14784 }
14785
14786 next_offset += envelope_size;
14787 _next_ordinal_to_read += 1;
14788 if next_offset >= end_offset {
14789 return Ok(());
14790 }
14791
14792 while _next_ordinal_to_read < 5 {
14794 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14795 _next_ordinal_to_read += 1;
14796 next_offset += envelope_size;
14797 }
14798
14799 let next_out_of_line = decoder.next_out_of_line();
14800 let handles_before = decoder.remaining_handles();
14801 if let Some((inlined, num_bytes, num_handles)) =
14802 fidl::encoding::decode_envelope_header(decoder, next_offset)?
14803 {
14804 let member_inline_size =
14805 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
14806 if inlined != (member_inline_size <= 4) {
14807 return Err(fidl::Error::InvalidInlineBitInEnvelope);
14808 }
14809 let inner_offset;
14810 let mut inner_depth = depth.clone();
14811 if inlined {
14812 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14813 inner_offset = next_offset;
14814 } else {
14815 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14816 inner_depth.increment()?;
14817 }
14818 let val_ref = self.stable.get_or_insert_with(|| fidl::new_empty!(bool, D));
14819 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
14820 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14821 {
14822 return Err(fidl::Error::InvalidNumBytesInEnvelope);
14823 }
14824 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14825 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14826 }
14827 }
14828
14829 next_offset += envelope_size;
14830 _next_ordinal_to_read += 1;
14831 if next_offset >= end_offset {
14832 return Ok(());
14833 }
14834
14835 while _next_ordinal_to_read < 6 {
14837 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14838 _next_ordinal_to_read += 1;
14839 next_offset += envelope_size;
14840 }
14841
14842 let next_out_of_line = decoder.next_out_of_line();
14843 let handles_before = decoder.remaining_handles();
14844 if let Some((inlined, num_bytes, num_handles)) =
14845 fidl::encoding::decode_envelope_header(decoder, next_offset)?
14846 {
14847 let member_inline_size =
14848 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
14849 if inlined != (member_inline_size <= 4) {
14850 return Err(fidl::Error::InvalidInlineBitInEnvelope);
14851 }
14852 let inner_offset;
14853 let mut inner_depth = depth.clone();
14854 if inlined {
14855 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14856 inner_offset = next_offset;
14857 } else {
14858 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14859 inner_depth.increment()?;
14860 }
14861 let val_ref =
14862 self.next_hop_is_this_device.get_or_insert_with(|| fidl::new_empty!(bool, D));
14863 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
14864 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14865 {
14866 return Err(fidl::Error::InvalidNumBytesInEnvelope);
14867 }
14868 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14869 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14870 }
14871 }
14872
14873 next_offset += envelope_size;
14874 _next_ordinal_to_read += 1;
14875 if next_offset >= end_offset {
14876 return Ok(());
14877 }
14878
14879 while _next_ordinal_to_read < 7 {
14881 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14882 _next_ordinal_to_read += 1;
14883 next_offset += envelope_size;
14884 }
14885
14886 let next_out_of_line = decoder.next_out_of_line();
14887 let handles_before = decoder.remaining_handles();
14888 if let Some((inlined, num_bytes, num_handles)) =
14889 fidl::encoding::decode_envelope_header(decoder, next_offset)?
14890 {
14891 let member_inline_size =
14892 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
14893 if inlined != (member_inline_size <= 4) {
14894 return Err(fidl::Error::InvalidInlineBitInEnvelope);
14895 }
14896 let inner_offset;
14897 let mut inner_depth = depth.clone();
14898 if inlined {
14899 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14900 inner_offset = next_offset;
14901 } else {
14902 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14903 inner_depth.increment()?;
14904 }
14905 let val_ref = self.adv_pio.get_or_insert_with(|| fidl::new_empty!(bool, D));
14906 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
14907 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14908 {
14909 return Err(fidl::Error::InvalidNumBytesInEnvelope);
14910 }
14911 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14912 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14913 }
14914 }
14915
14916 next_offset += envelope_size;
14917
14918 while next_offset < end_offset {
14920 _next_ordinal_to_read += 1;
14921 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14922 next_offset += envelope_size;
14923 }
14924
14925 Ok(())
14926 }
14927 }
14928
14929 impl JoinerCommissioningParams {
14930 #[inline(always)]
14931 fn max_ordinal_present(&self) -> u64 {
14932 if let Some(_) = self.vendor_data_string {
14933 return 6;
14934 }
14935 if let Some(_) = self.vendor_sw_version {
14936 return 5;
14937 }
14938 if let Some(_) = self.vendor_model {
14939 return 4;
14940 }
14941 if let Some(_) = self.vendor_name {
14942 return 3;
14943 }
14944 if let Some(_) = self.provisioning_url {
14945 return 2;
14946 }
14947 if let Some(_) = self.pskd {
14948 return 1;
14949 }
14950 0
14951 }
14952 }
14953
14954 impl fidl::encoding::ValueTypeMarker for JoinerCommissioningParams {
14955 type Borrowed<'a> = &'a Self;
14956 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
14957 value
14958 }
14959 }
14960
14961 unsafe impl fidl::encoding::TypeMarker for JoinerCommissioningParams {
14962 type Owned = Self;
14963
14964 #[inline(always)]
14965 fn inline_align(_context: fidl::encoding::Context) -> usize {
14966 8
14967 }
14968
14969 #[inline(always)]
14970 fn inline_size(_context: fidl::encoding::Context) -> usize {
14971 16
14972 }
14973 }
14974
14975 unsafe impl<D: fidl::encoding::ResourceDialect>
14976 fidl::encoding::Encode<JoinerCommissioningParams, D> for &JoinerCommissioningParams
14977 {
14978 unsafe fn encode(
14979 self,
14980 encoder: &mut fidl::encoding::Encoder<'_, D>,
14981 offset: usize,
14982 mut depth: fidl::encoding::Depth,
14983 ) -> fidl::Result<()> {
14984 encoder.debug_check_bounds::<JoinerCommissioningParams>(offset);
14985 let max_ordinal: u64 = self.max_ordinal_present();
14987 encoder.write_num(max_ordinal, offset);
14988 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
14989 if max_ordinal == 0 {
14991 return Ok(());
14992 }
14993 depth.increment()?;
14994 let envelope_size = 8;
14995 let bytes_len = max_ordinal as usize * envelope_size;
14996 #[allow(unused_variables)]
14997 let offset = encoder.out_of_line_offset(bytes_len);
14998 let mut _prev_end_offset: usize = 0;
14999 if 1 > max_ordinal {
15000 return Ok(());
15001 }
15002
15003 let cur_offset: usize = (1 - 1) * envelope_size;
15006
15007 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
15009
15010 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<32>, D>(
15015 self.pskd.as_ref().map(
15016 <fidl::encoding::BoundedString<32> as fidl::encoding::ValueTypeMarker>::borrow,
15017 ),
15018 encoder,
15019 offset + cur_offset,
15020 depth,
15021 )?;
15022
15023 _prev_end_offset = cur_offset + envelope_size;
15024 if 2 > max_ordinal {
15025 return Ok(());
15026 }
15027
15028 let cur_offset: usize = (2 - 1) * envelope_size;
15031
15032 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
15034
15035 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<64>, D>(
15040 self.provisioning_url.as_ref().map(
15041 <fidl::encoding::BoundedString<64> as fidl::encoding::ValueTypeMarker>::borrow,
15042 ),
15043 encoder,
15044 offset + cur_offset,
15045 depth,
15046 )?;
15047
15048 _prev_end_offset = cur_offset + envelope_size;
15049 if 3 > max_ordinal {
15050 return Ok(());
15051 }
15052
15053 let cur_offset: usize = (3 - 1) * envelope_size;
15056
15057 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
15059
15060 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<32>, D>(
15065 self.vendor_name.as_ref().map(
15066 <fidl::encoding::BoundedString<32> as fidl::encoding::ValueTypeMarker>::borrow,
15067 ),
15068 encoder,
15069 offset + cur_offset,
15070 depth,
15071 )?;
15072
15073 _prev_end_offset = cur_offset + envelope_size;
15074 if 4 > max_ordinal {
15075 return Ok(());
15076 }
15077
15078 let cur_offset: usize = (4 - 1) * envelope_size;
15081
15082 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
15084
15085 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<32>, D>(
15090 self.vendor_model.as_ref().map(
15091 <fidl::encoding::BoundedString<32> as fidl::encoding::ValueTypeMarker>::borrow,
15092 ),
15093 encoder,
15094 offset + cur_offset,
15095 depth,
15096 )?;
15097
15098 _prev_end_offset = cur_offset + envelope_size;
15099 if 5 > max_ordinal {
15100 return Ok(());
15101 }
15102
15103 let cur_offset: usize = (5 - 1) * envelope_size;
15106
15107 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
15109
15110 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<16>, D>(
15115 self.vendor_sw_version.as_ref().map(
15116 <fidl::encoding::BoundedString<16> as fidl::encoding::ValueTypeMarker>::borrow,
15117 ),
15118 encoder,
15119 offset + cur_offset,
15120 depth,
15121 )?;
15122
15123 _prev_end_offset = cur_offset + envelope_size;
15124 if 6 > max_ordinal {
15125 return Ok(());
15126 }
15127
15128 let cur_offset: usize = (6 - 1) * envelope_size;
15131
15132 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
15134
15135 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<64>, D>(
15140 self.vendor_data_string.as_ref().map(
15141 <fidl::encoding::BoundedString<64> as fidl::encoding::ValueTypeMarker>::borrow,
15142 ),
15143 encoder,
15144 offset + cur_offset,
15145 depth,
15146 )?;
15147
15148 _prev_end_offset = cur_offset + envelope_size;
15149
15150 Ok(())
15151 }
15152 }
15153
15154 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
15155 for JoinerCommissioningParams
15156 {
15157 #[inline(always)]
15158 fn new_empty() -> Self {
15159 Self::default()
15160 }
15161
15162 unsafe fn decode(
15163 &mut self,
15164 decoder: &mut fidl::encoding::Decoder<'_, D>,
15165 offset: usize,
15166 mut depth: fidl::encoding::Depth,
15167 ) -> fidl::Result<()> {
15168 decoder.debug_check_bounds::<Self>(offset);
15169 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
15170 None => return Err(fidl::Error::NotNullable),
15171 Some(len) => len,
15172 };
15173 if len == 0 {
15175 return Ok(());
15176 };
15177 depth.increment()?;
15178 let envelope_size = 8;
15179 let bytes_len = len * envelope_size;
15180 let offset = decoder.out_of_line_offset(bytes_len)?;
15181 let mut _next_ordinal_to_read = 0;
15183 let mut next_offset = offset;
15184 let end_offset = offset + bytes_len;
15185 _next_ordinal_to_read += 1;
15186 if next_offset >= end_offset {
15187 return Ok(());
15188 }
15189
15190 while _next_ordinal_to_read < 1 {
15192 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15193 _next_ordinal_to_read += 1;
15194 next_offset += envelope_size;
15195 }
15196
15197 let next_out_of_line = decoder.next_out_of_line();
15198 let handles_before = decoder.remaining_handles();
15199 if let Some((inlined, num_bytes, num_handles)) =
15200 fidl::encoding::decode_envelope_header(decoder, next_offset)?
15201 {
15202 let member_inline_size =
15203 <fidl::encoding::BoundedString<32> as fidl::encoding::TypeMarker>::inline_size(
15204 decoder.context,
15205 );
15206 if inlined != (member_inline_size <= 4) {
15207 return Err(fidl::Error::InvalidInlineBitInEnvelope);
15208 }
15209 let inner_offset;
15210 let mut inner_depth = depth.clone();
15211 if inlined {
15212 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
15213 inner_offset = next_offset;
15214 } else {
15215 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
15216 inner_depth.increment()?;
15217 }
15218 let val_ref = self
15219 .pskd
15220 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<32>, D));
15221 fidl::decode!(
15222 fidl::encoding::BoundedString<32>,
15223 D,
15224 val_ref,
15225 decoder,
15226 inner_offset,
15227 inner_depth
15228 )?;
15229 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
15230 {
15231 return Err(fidl::Error::InvalidNumBytesInEnvelope);
15232 }
15233 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
15234 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
15235 }
15236 }
15237
15238 next_offset += envelope_size;
15239 _next_ordinal_to_read += 1;
15240 if next_offset >= end_offset {
15241 return Ok(());
15242 }
15243
15244 while _next_ordinal_to_read < 2 {
15246 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15247 _next_ordinal_to_read += 1;
15248 next_offset += envelope_size;
15249 }
15250
15251 let next_out_of_line = decoder.next_out_of_line();
15252 let handles_before = decoder.remaining_handles();
15253 if let Some((inlined, num_bytes, num_handles)) =
15254 fidl::encoding::decode_envelope_header(decoder, next_offset)?
15255 {
15256 let member_inline_size =
15257 <fidl::encoding::BoundedString<64> as fidl::encoding::TypeMarker>::inline_size(
15258 decoder.context,
15259 );
15260 if inlined != (member_inline_size <= 4) {
15261 return Err(fidl::Error::InvalidInlineBitInEnvelope);
15262 }
15263 let inner_offset;
15264 let mut inner_depth = depth.clone();
15265 if inlined {
15266 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
15267 inner_offset = next_offset;
15268 } else {
15269 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
15270 inner_depth.increment()?;
15271 }
15272 let val_ref = self
15273 .provisioning_url
15274 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<64>, D));
15275 fidl::decode!(
15276 fidl::encoding::BoundedString<64>,
15277 D,
15278 val_ref,
15279 decoder,
15280 inner_offset,
15281 inner_depth
15282 )?;
15283 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
15284 {
15285 return Err(fidl::Error::InvalidNumBytesInEnvelope);
15286 }
15287 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
15288 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
15289 }
15290 }
15291
15292 next_offset += envelope_size;
15293 _next_ordinal_to_read += 1;
15294 if next_offset >= end_offset {
15295 return Ok(());
15296 }
15297
15298 while _next_ordinal_to_read < 3 {
15300 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15301 _next_ordinal_to_read += 1;
15302 next_offset += envelope_size;
15303 }
15304
15305 let next_out_of_line = decoder.next_out_of_line();
15306 let handles_before = decoder.remaining_handles();
15307 if let Some((inlined, num_bytes, num_handles)) =
15308 fidl::encoding::decode_envelope_header(decoder, next_offset)?
15309 {
15310 let member_inline_size =
15311 <fidl::encoding::BoundedString<32> as fidl::encoding::TypeMarker>::inline_size(
15312 decoder.context,
15313 );
15314 if inlined != (member_inline_size <= 4) {
15315 return Err(fidl::Error::InvalidInlineBitInEnvelope);
15316 }
15317 let inner_offset;
15318 let mut inner_depth = depth.clone();
15319 if inlined {
15320 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
15321 inner_offset = next_offset;
15322 } else {
15323 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
15324 inner_depth.increment()?;
15325 }
15326 let val_ref = self
15327 .vendor_name
15328 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<32>, D));
15329 fidl::decode!(
15330 fidl::encoding::BoundedString<32>,
15331 D,
15332 val_ref,
15333 decoder,
15334 inner_offset,
15335 inner_depth
15336 )?;
15337 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
15338 {
15339 return Err(fidl::Error::InvalidNumBytesInEnvelope);
15340 }
15341 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
15342 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
15343 }
15344 }
15345
15346 next_offset += envelope_size;
15347 _next_ordinal_to_read += 1;
15348 if next_offset >= end_offset {
15349 return Ok(());
15350 }
15351
15352 while _next_ordinal_to_read < 4 {
15354 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15355 _next_ordinal_to_read += 1;
15356 next_offset += envelope_size;
15357 }
15358
15359 let next_out_of_line = decoder.next_out_of_line();
15360 let handles_before = decoder.remaining_handles();
15361 if let Some((inlined, num_bytes, num_handles)) =
15362 fidl::encoding::decode_envelope_header(decoder, next_offset)?
15363 {
15364 let member_inline_size =
15365 <fidl::encoding::BoundedString<32> as fidl::encoding::TypeMarker>::inline_size(
15366 decoder.context,
15367 );
15368 if inlined != (member_inline_size <= 4) {
15369 return Err(fidl::Error::InvalidInlineBitInEnvelope);
15370 }
15371 let inner_offset;
15372 let mut inner_depth = depth.clone();
15373 if inlined {
15374 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
15375 inner_offset = next_offset;
15376 } else {
15377 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
15378 inner_depth.increment()?;
15379 }
15380 let val_ref = self
15381 .vendor_model
15382 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<32>, D));
15383 fidl::decode!(
15384 fidl::encoding::BoundedString<32>,
15385 D,
15386 val_ref,
15387 decoder,
15388 inner_offset,
15389 inner_depth
15390 )?;
15391 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
15392 {
15393 return Err(fidl::Error::InvalidNumBytesInEnvelope);
15394 }
15395 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
15396 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
15397 }
15398 }
15399
15400 next_offset += envelope_size;
15401 _next_ordinal_to_read += 1;
15402 if next_offset >= end_offset {
15403 return Ok(());
15404 }
15405
15406 while _next_ordinal_to_read < 5 {
15408 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15409 _next_ordinal_to_read += 1;
15410 next_offset += envelope_size;
15411 }
15412
15413 let next_out_of_line = decoder.next_out_of_line();
15414 let handles_before = decoder.remaining_handles();
15415 if let Some((inlined, num_bytes, num_handles)) =
15416 fidl::encoding::decode_envelope_header(decoder, next_offset)?
15417 {
15418 let member_inline_size =
15419 <fidl::encoding::BoundedString<16> as fidl::encoding::TypeMarker>::inline_size(
15420 decoder.context,
15421 );
15422 if inlined != (member_inline_size <= 4) {
15423 return Err(fidl::Error::InvalidInlineBitInEnvelope);
15424 }
15425 let inner_offset;
15426 let mut inner_depth = depth.clone();
15427 if inlined {
15428 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
15429 inner_offset = next_offset;
15430 } else {
15431 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
15432 inner_depth.increment()?;
15433 }
15434 let val_ref = self
15435 .vendor_sw_version
15436 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<16>, D));
15437 fidl::decode!(
15438 fidl::encoding::BoundedString<16>,
15439 D,
15440 val_ref,
15441 decoder,
15442 inner_offset,
15443 inner_depth
15444 )?;
15445 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
15446 {
15447 return Err(fidl::Error::InvalidNumBytesInEnvelope);
15448 }
15449 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
15450 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
15451 }
15452 }
15453
15454 next_offset += envelope_size;
15455 _next_ordinal_to_read += 1;
15456 if next_offset >= end_offset {
15457 return Ok(());
15458 }
15459
15460 while _next_ordinal_to_read < 6 {
15462 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15463 _next_ordinal_to_read += 1;
15464 next_offset += envelope_size;
15465 }
15466
15467 let next_out_of_line = decoder.next_out_of_line();
15468 let handles_before = decoder.remaining_handles();
15469 if let Some((inlined, num_bytes, num_handles)) =
15470 fidl::encoding::decode_envelope_header(decoder, next_offset)?
15471 {
15472 let member_inline_size =
15473 <fidl::encoding::BoundedString<64> as fidl::encoding::TypeMarker>::inline_size(
15474 decoder.context,
15475 );
15476 if inlined != (member_inline_size <= 4) {
15477 return Err(fidl::Error::InvalidInlineBitInEnvelope);
15478 }
15479 let inner_offset;
15480 let mut inner_depth = depth.clone();
15481 if inlined {
15482 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
15483 inner_offset = next_offset;
15484 } else {
15485 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
15486 inner_depth.increment()?;
15487 }
15488 let val_ref = self
15489 .vendor_data_string
15490 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<64>, D));
15491 fidl::decode!(
15492 fidl::encoding::BoundedString<64>,
15493 D,
15494 val_ref,
15495 decoder,
15496 inner_offset,
15497 inner_depth
15498 )?;
15499 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
15500 {
15501 return Err(fidl::Error::InvalidNumBytesInEnvelope);
15502 }
15503 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
15504 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
15505 }
15506 }
15507
15508 next_offset += envelope_size;
15509
15510 while next_offset < end_offset {
15512 _next_ordinal_to_read += 1;
15513 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15514 next_offset += envelope_size;
15515 }
15516
15517 Ok(())
15518 }
15519 }
15520
15521 impl LeaderData {
15522 #[inline(always)]
15523 fn max_ordinal_present(&self) -> u64 {
15524 if let Some(_) = self.router_id {
15525 return 5;
15526 }
15527 if let Some(_) = self.stable_network_data_version {
15528 return 4;
15529 }
15530 if let Some(_) = self.network_data_version {
15531 return 3;
15532 }
15533 if let Some(_) = self.weight {
15534 return 2;
15535 }
15536 if let Some(_) = self.partition_id {
15537 return 1;
15538 }
15539 0
15540 }
15541 }
15542
15543 impl fidl::encoding::ValueTypeMarker for LeaderData {
15544 type Borrowed<'a> = &'a Self;
15545 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
15546 value
15547 }
15548 }
15549
15550 unsafe impl fidl::encoding::TypeMarker for LeaderData {
15551 type Owned = Self;
15552
15553 #[inline(always)]
15554 fn inline_align(_context: fidl::encoding::Context) -> usize {
15555 8
15556 }
15557
15558 #[inline(always)]
15559 fn inline_size(_context: fidl::encoding::Context) -> usize {
15560 16
15561 }
15562 }
15563
15564 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<LeaderData, D>
15565 for &LeaderData
15566 {
15567 unsafe fn encode(
15568 self,
15569 encoder: &mut fidl::encoding::Encoder<'_, D>,
15570 offset: usize,
15571 mut depth: fidl::encoding::Depth,
15572 ) -> fidl::Result<()> {
15573 encoder.debug_check_bounds::<LeaderData>(offset);
15574 let max_ordinal: u64 = self.max_ordinal_present();
15576 encoder.write_num(max_ordinal, offset);
15577 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
15578 if max_ordinal == 0 {
15580 return Ok(());
15581 }
15582 depth.increment()?;
15583 let envelope_size = 8;
15584 let bytes_len = max_ordinal as usize * envelope_size;
15585 #[allow(unused_variables)]
15586 let offset = encoder.out_of_line_offset(bytes_len);
15587 let mut _prev_end_offset: usize = 0;
15588 if 1 > max_ordinal {
15589 return Ok(());
15590 }
15591
15592 let cur_offset: usize = (1 - 1) * envelope_size;
15595
15596 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
15598
15599 fidl::encoding::encode_in_envelope_optional::<u32, D>(
15604 self.partition_id.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
15605 encoder,
15606 offset + cur_offset,
15607 depth,
15608 )?;
15609
15610 _prev_end_offset = cur_offset + envelope_size;
15611 if 2 > max_ordinal {
15612 return Ok(());
15613 }
15614
15615 let cur_offset: usize = (2 - 1) * envelope_size;
15618
15619 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
15621
15622 fidl::encoding::encode_in_envelope_optional::<u8, D>(
15627 self.weight.as_ref().map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
15628 encoder,
15629 offset + cur_offset,
15630 depth,
15631 )?;
15632
15633 _prev_end_offset = cur_offset + envelope_size;
15634 if 3 > max_ordinal {
15635 return Ok(());
15636 }
15637
15638 let cur_offset: usize = (3 - 1) * envelope_size;
15641
15642 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
15644
15645 fidl::encoding::encode_in_envelope_optional::<u8, D>(
15650 self.network_data_version
15651 .as_ref()
15652 .map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
15653 encoder,
15654 offset + cur_offset,
15655 depth,
15656 )?;
15657
15658 _prev_end_offset = cur_offset + envelope_size;
15659 if 4 > max_ordinal {
15660 return Ok(());
15661 }
15662
15663 let cur_offset: usize = (4 - 1) * envelope_size;
15666
15667 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
15669
15670 fidl::encoding::encode_in_envelope_optional::<u8, D>(
15675 self.stable_network_data_version
15676 .as_ref()
15677 .map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
15678 encoder,
15679 offset + cur_offset,
15680 depth,
15681 )?;
15682
15683 _prev_end_offset = cur_offset + envelope_size;
15684 if 5 > max_ordinal {
15685 return Ok(());
15686 }
15687
15688 let cur_offset: usize = (5 - 1) * envelope_size;
15691
15692 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
15694
15695 fidl::encoding::encode_in_envelope_optional::<u8, D>(
15700 self.router_id.as_ref().map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
15701 encoder,
15702 offset + cur_offset,
15703 depth,
15704 )?;
15705
15706 _prev_end_offset = cur_offset + envelope_size;
15707
15708 Ok(())
15709 }
15710 }
15711
15712 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for LeaderData {
15713 #[inline(always)]
15714 fn new_empty() -> Self {
15715 Self::default()
15716 }
15717
15718 unsafe fn decode(
15719 &mut self,
15720 decoder: &mut fidl::encoding::Decoder<'_, D>,
15721 offset: usize,
15722 mut depth: fidl::encoding::Depth,
15723 ) -> fidl::Result<()> {
15724 decoder.debug_check_bounds::<Self>(offset);
15725 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
15726 None => return Err(fidl::Error::NotNullable),
15727 Some(len) => len,
15728 };
15729 if len == 0 {
15731 return Ok(());
15732 };
15733 depth.increment()?;
15734 let envelope_size = 8;
15735 let bytes_len = len * envelope_size;
15736 let offset = decoder.out_of_line_offset(bytes_len)?;
15737 let mut _next_ordinal_to_read = 0;
15739 let mut next_offset = offset;
15740 let end_offset = offset + bytes_len;
15741 _next_ordinal_to_read += 1;
15742 if next_offset >= end_offset {
15743 return Ok(());
15744 }
15745
15746 while _next_ordinal_to_read < 1 {
15748 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15749 _next_ordinal_to_read += 1;
15750 next_offset += envelope_size;
15751 }
15752
15753 let next_out_of_line = decoder.next_out_of_line();
15754 let handles_before = decoder.remaining_handles();
15755 if let Some((inlined, num_bytes, num_handles)) =
15756 fidl::encoding::decode_envelope_header(decoder, next_offset)?
15757 {
15758 let member_inline_size =
15759 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
15760 if inlined != (member_inline_size <= 4) {
15761 return Err(fidl::Error::InvalidInlineBitInEnvelope);
15762 }
15763 let inner_offset;
15764 let mut inner_depth = depth.clone();
15765 if inlined {
15766 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
15767 inner_offset = next_offset;
15768 } else {
15769 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
15770 inner_depth.increment()?;
15771 }
15772 let val_ref = self.partition_id.get_or_insert_with(|| fidl::new_empty!(u32, D));
15773 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
15774 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
15775 {
15776 return Err(fidl::Error::InvalidNumBytesInEnvelope);
15777 }
15778 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
15779 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
15780 }
15781 }
15782
15783 next_offset += envelope_size;
15784 _next_ordinal_to_read += 1;
15785 if next_offset >= end_offset {
15786 return Ok(());
15787 }
15788
15789 while _next_ordinal_to_read < 2 {
15791 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15792 _next_ordinal_to_read += 1;
15793 next_offset += envelope_size;
15794 }
15795
15796 let next_out_of_line = decoder.next_out_of_line();
15797 let handles_before = decoder.remaining_handles();
15798 if let Some((inlined, num_bytes, num_handles)) =
15799 fidl::encoding::decode_envelope_header(decoder, next_offset)?
15800 {
15801 let member_inline_size =
15802 <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
15803 if inlined != (member_inline_size <= 4) {
15804 return Err(fidl::Error::InvalidInlineBitInEnvelope);
15805 }
15806 let inner_offset;
15807 let mut inner_depth = depth.clone();
15808 if inlined {
15809 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
15810 inner_offset = next_offset;
15811 } else {
15812 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
15813 inner_depth.increment()?;
15814 }
15815 let val_ref = self.weight.get_or_insert_with(|| fidl::new_empty!(u8, D));
15816 fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
15817 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
15818 {
15819 return Err(fidl::Error::InvalidNumBytesInEnvelope);
15820 }
15821 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
15822 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
15823 }
15824 }
15825
15826 next_offset += envelope_size;
15827 _next_ordinal_to_read += 1;
15828 if next_offset >= end_offset {
15829 return Ok(());
15830 }
15831
15832 while _next_ordinal_to_read < 3 {
15834 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15835 _next_ordinal_to_read += 1;
15836 next_offset += envelope_size;
15837 }
15838
15839 let next_out_of_line = decoder.next_out_of_line();
15840 let handles_before = decoder.remaining_handles();
15841 if let Some((inlined, num_bytes, num_handles)) =
15842 fidl::encoding::decode_envelope_header(decoder, next_offset)?
15843 {
15844 let member_inline_size =
15845 <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
15846 if inlined != (member_inline_size <= 4) {
15847 return Err(fidl::Error::InvalidInlineBitInEnvelope);
15848 }
15849 let inner_offset;
15850 let mut inner_depth = depth.clone();
15851 if inlined {
15852 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
15853 inner_offset = next_offset;
15854 } else {
15855 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
15856 inner_depth.increment()?;
15857 }
15858 let val_ref =
15859 self.network_data_version.get_or_insert_with(|| fidl::new_empty!(u8, D));
15860 fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
15861 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
15862 {
15863 return Err(fidl::Error::InvalidNumBytesInEnvelope);
15864 }
15865 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
15866 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
15867 }
15868 }
15869
15870 next_offset += envelope_size;
15871 _next_ordinal_to_read += 1;
15872 if next_offset >= end_offset {
15873 return Ok(());
15874 }
15875
15876 while _next_ordinal_to_read < 4 {
15878 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15879 _next_ordinal_to_read += 1;
15880 next_offset += envelope_size;
15881 }
15882
15883 let next_out_of_line = decoder.next_out_of_line();
15884 let handles_before = decoder.remaining_handles();
15885 if let Some((inlined, num_bytes, num_handles)) =
15886 fidl::encoding::decode_envelope_header(decoder, next_offset)?
15887 {
15888 let member_inline_size =
15889 <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
15890 if inlined != (member_inline_size <= 4) {
15891 return Err(fidl::Error::InvalidInlineBitInEnvelope);
15892 }
15893 let inner_offset;
15894 let mut inner_depth = depth.clone();
15895 if inlined {
15896 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
15897 inner_offset = next_offset;
15898 } else {
15899 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
15900 inner_depth.increment()?;
15901 }
15902 let val_ref =
15903 self.stable_network_data_version.get_or_insert_with(|| fidl::new_empty!(u8, D));
15904 fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
15905 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
15906 {
15907 return Err(fidl::Error::InvalidNumBytesInEnvelope);
15908 }
15909 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
15910 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
15911 }
15912 }
15913
15914 next_offset += envelope_size;
15915 _next_ordinal_to_read += 1;
15916 if next_offset >= end_offset {
15917 return Ok(());
15918 }
15919
15920 while _next_ordinal_to_read < 5 {
15922 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15923 _next_ordinal_to_read += 1;
15924 next_offset += envelope_size;
15925 }
15926
15927 let next_out_of_line = decoder.next_out_of_line();
15928 let handles_before = decoder.remaining_handles();
15929 if let Some((inlined, num_bytes, num_handles)) =
15930 fidl::encoding::decode_envelope_header(decoder, next_offset)?
15931 {
15932 let member_inline_size =
15933 <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
15934 if inlined != (member_inline_size <= 4) {
15935 return Err(fidl::Error::InvalidInlineBitInEnvelope);
15936 }
15937 let inner_offset;
15938 let mut inner_depth = depth.clone();
15939 if inlined {
15940 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
15941 inner_offset = next_offset;
15942 } else {
15943 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
15944 inner_depth.increment()?;
15945 }
15946 let val_ref = self.router_id.get_or_insert_with(|| fidl::new_empty!(u8, D));
15947 fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
15948 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
15949 {
15950 return Err(fidl::Error::InvalidNumBytesInEnvelope);
15951 }
15952 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
15953 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
15954 }
15955 }
15956
15957 next_offset += envelope_size;
15958
15959 while next_offset < end_offset {
15961 _next_ordinal_to_read += 1;
15962 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15963 next_offset += envelope_size;
15964 }
15965
15966 Ok(())
15967 }
15968 }
15969
15970 impl LinkMetricsEntry {
15971 #[inline(always)]
15972 fn max_ordinal_present(&self) -> u64 {
15973 if let Some(_) = self.extended_address {
15974 return 3;
15975 }
15976 if let Some(_) = self.rssi {
15977 return 2;
15978 }
15979 if let Some(_) = self.link_margin {
15980 return 1;
15981 }
15982 0
15983 }
15984 }
15985
15986 impl fidl::encoding::ValueTypeMarker for LinkMetricsEntry {
15987 type Borrowed<'a> = &'a Self;
15988 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
15989 value
15990 }
15991 }
15992
15993 unsafe impl fidl::encoding::TypeMarker for LinkMetricsEntry {
15994 type Owned = Self;
15995
15996 #[inline(always)]
15997 fn inline_align(_context: fidl::encoding::Context) -> usize {
15998 8
15999 }
16000
16001 #[inline(always)]
16002 fn inline_size(_context: fidl::encoding::Context) -> usize {
16003 16
16004 }
16005 }
16006
16007 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<LinkMetricsEntry, D>
16008 for &LinkMetricsEntry
16009 {
16010 unsafe fn encode(
16011 self,
16012 encoder: &mut fidl::encoding::Encoder<'_, D>,
16013 offset: usize,
16014 mut depth: fidl::encoding::Depth,
16015 ) -> fidl::Result<()> {
16016 encoder.debug_check_bounds::<LinkMetricsEntry>(offset);
16017 let max_ordinal: u64 = self.max_ordinal_present();
16019 encoder.write_num(max_ordinal, offset);
16020 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
16021 if max_ordinal == 0 {
16023 return Ok(());
16024 }
16025 depth.increment()?;
16026 let envelope_size = 8;
16027 let bytes_len = max_ordinal as usize * envelope_size;
16028 #[allow(unused_variables)]
16029 let offset = encoder.out_of_line_offset(bytes_len);
16030 let mut _prev_end_offset: usize = 0;
16031 if 1 > max_ordinal {
16032 return Ok(());
16033 }
16034
16035 let cur_offset: usize = (1 - 1) * envelope_size;
16038
16039 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
16041
16042 fidl::encoding::encode_in_envelope_optional::<u8, D>(
16047 self.link_margin.as_ref().map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
16048 encoder,
16049 offset + cur_offset,
16050 depth,
16051 )?;
16052
16053 _prev_end_offset = cur_offset + envelope_size;
16054 if 2 > max_ordinal {
16055 return Ok(());
16056 }
16057
16058 let cur_offset: usize = (2 - 1) * envelope_size;
16061
16062 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
16064
16065 fidl::encoding::encode_in_envelope_optional::<i8, D>(
16070 self.rssi.as_ref().map(<i8 as fidl::encoding::ValueTypeMarker>::borrow),
16071 encoder,
16072 offset + cur_offset,
16073 depth,
16074 )?;
16075
16076 _prev_end_offset = cur_offset + envelope_size;
16077 if 3 > max_ordinal {
16078 return Ok(());
16079 }
16080
16081 let cur_offset: usize = (3 - 1) * envelope_size;
16084
16085 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
16087
16088 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<u8, 8>, D>(
16093 self.extended_address.as_ref().map(
16094 <fidl::encoding::Vector<u8, 8> as fidl::encoding::ValueTypeMarker>::borrow,
16095 ),
16096 encoder,
16097 offset + cur_offset,
16098 depth,
16099 )?;
16100
16101 _prev_end_offset = cur_offset + envelope_size;
16102
16103 Ok(())
16104 }
16105 }
16106
16107 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for LinkMetricsEntry {
16108 #[inline(always)]
16109 fn new_empty() -> Self {
16110 Self::default()
16111 }
16112
16113 unsafe fn decode(
16114 &mut self,
16115 decoder: &mut fidl::encoding::Decoder<'_, D>,
16116 offset: usize,
16117 mut depth: fidl::encoding::Depth,
16118 ) -> fidl::Result<()> {
16119 decoder.debug_check_bounds::<Self>(offset);
16120 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
16121 None => return Err(fidl::Error::NotNullable),
16122 Some(len) => len,
16123 };
16124 if len == 0 {
16126 return Ok(());
16127 };
16128 depth.increment()?;
16129 let envelope_size = 8;
16130 let bytes_len = len * envelope_size;
16131 let offset = decoder.out_of_line_offset(bytes_len)?;
16132 let mut _next_ordinal_to_read = 0;
16134 let mut next_offset = offset;
16135 let end_offset = offset + bytes_len;
16136 _next_ordinal_to_read += 1;
16137 if next_offset >= end_offset {
16138 return Ok(());
16139 }
16140
16141 while _next_ordinal_to_read < 1 {
16143 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
16144 _next_ordinal_to_read += 1;
16145 next_offset += envelope_size;
16146 }
16147
16148 let next_out_of_line = decoder.next_out_of_line();
16149 let handles_before = decoder.remaining_handles();
16150 if let Some((inlined, num_bytes, num_handles)) =
16151 fidl::encoding::decode_envelope_header(decoder, next_offset)?
16152 {
16153 let member_inline_size =
16154 <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
16155 if inlined != (member_inline_size <= 4) {
16156 return Err(fidl::Error::InvalidInlineBitInEnvelope);
16157 }
16158 let inner_offset;
16159 let mut inner_depth = depth.clone();
16160 if inlined {
16161 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
16162 inner_offset = next_offset;
16163 } else {
16164 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
16165 inner_depth.increment()?;
16166 }
16167 let val_ref = self.link_margin.get_or_insert_with(|| fidl::new_empty!(u8, D));
16168 fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
16169 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
16170 {
16171 return Err(fidl::Error::InvalidNumBytesInEnvelope);
16172 }
16173 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
16174 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
16175 }
16176 }
16177
16178 next_offset += envelope_size;
16179 _next_ordinal_to_read += 1;
16180 if next_offset >= end_offset {
16181 return Ok(());
16182 }
16183
16184 while _next_ordinal_to_read < 2 {
16186 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
16187 _next_ordinal_to_read += 1;
16188 next_offset += envelope_size;
16189 }
16190
16191 let next_out_of_line = decoder.next_out_of_line();
16192 let handles_before = decoder.remaining_handles();
16193 if let Some((inlined, num_bytes, num_handles)) =
16194 fidl::encoding::decode_envelope_header(decoder, next_offset)?
16195 {
16196 let member_inline_size =
16197 <i8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
16198 if inlined != (member_inline_size <= 4) {
16199 return Err(fidl::Error::InvalidInlineBitInEnvelope);
16200 }
16201 let inner_offset;
16202 let mut inner_depth = depth.clone();
16203 if inlined {
16204 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
16205 inner_offset = next_offset;
16206 } else {
16207 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
16208 inner_depth.increment()?;
16209 }
16210 let val_ref = self.rssi.get_or_insert_with(|| fidl::new_empty!(i8, D));
16211 fidl::decode!(i8, D, val_ref, decoder, inner_offset, inner_depth)?;
16212 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
16213 {
16214 return Err(fidl::Error::InvalidNumBytesInEnvelope);
16215 }
16216 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
16217 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
16218 }
16219 }
16220
16221 next_offset += envelope_size;
16222 _next_ordinal_to_read += 1;
16223 if next_offset >= end_offset {
16224 return Ok(());
16225 }
16226
16227 while _next_ordinal_to_read < 3 {
16229 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
16230 _next_ordinal_to_read += 1;
16231 next_offset += envelope_size;
16232 }
16233
16234 let next_out_of_line = decoder.next_out_of_line();
16235 let handles_before = decoder.remaining_handles();
16236 if let Some((inlined, num_bytes, num_handles)) =
16237 fidl::encoding::decode_envelope_header(decoder, next_offset)?
16238 {
16239 let member_inline_size =
16240 <fidl::encoding::Vector<u8, 8> as fidl::encoding::TypeMarker>::inline_size(
16241 decoder.context,
16242 );
16243 if inlined != (member_inline_size <= 4) {
16244 return Err(fidl::Error::InvalidInlineBitInEnvelope);
16245 }
16246 let inner_offset;
16247 let mut inner_depth = depth.clone();
16248 if inlined {
16249 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
16250 inner_offset = next_offset;
16251 } else {
16252 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
16253 inner_depth.increment()?;
16254 }
16255 let val_ref = self
16256 .extended_address
16257 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u8, 8>, D));
16258 fidl::decode!(fidl::encoding::Vector<u8, 8>, D, val_ref, decoder, inner_offset, inner_depth)?;
16259 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
16260 {
16261 return Err(fidl::Error::InvalidNumBytesInEnvelope);
16262 }
16263 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
16264 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
16265 }
16266 }
16267
16268 next_offset += envelope_size;
16269
16270 while next_offset < end_offset {
16272 _next_ordinal_to_read += 1;
16273 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
16274 next_offset += envelope_size;
16275 }
16276
16277 Ok(())
16278 }
16279 }
16280
16281 impl LowpanContextInfo {
16282 #[inline(always)]
16283 fn max_ordinal_present(&self) -> u64 {
16284 if let Some(_) = self.prefix {
16285 return 4;
16286 }
16287 if let Some(_) = self.stable {
16288 return 3;
16289 }
16290 if let Some(_) = self.compress_flag {
16291 return 2;
16292 }
16293 if let Some(_) = self.context_id {
16294 return 1;
16295 }
16296 0
16297 }
16298 }
16299
16300 impl fidl::encoding::ValueTypeMarker for LowpanContextInfo {
16301 type Borrowed<'a> = &'a Self;
16302 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
16303 value
16304 }
16305 }
16306
16307 unsafe impl fidl::encoding::TypeMarker for LowpanContextInfo {
16308 type Owned = Self;
16309
16310 #[inline(always)]
16311 fn inline_align(_context: fidl::encoding::Context) -> usize {
16312 8
16313 }
16314
16315 #[inline(always)]
16316 fn inline_size(_context: fidl::encoding::Context) -> usize {
16317 16
16318 }
16319 }
16320
16321 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<LowpanContextInfo, D>
16322 for &LowpanContextInfo
16323 {
16324 unsafe fn encode(
16325 self,
16326 encoder: &mut fidl::encoding::Encoder<'_, D>,
16327 offset: usize,
16328 mut depth: fidl::encoding::Depth,
16329 ) -> fidl::Result<()> {
16330 encoder.debug_check_bounds::<LowpanContextInfo>(offset);
16331 let max_ordinal: u64 = self.max_ordinal_present();
16333 encoder.write_num(max_ordinal, offset);
16334 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
16335 if max_ordinal == 0 {
16337 return Ok(());
16338 }
16339 depth.increment()?;
16340 let envelope_size = 8;
16341 let bytes_len = max_ordinal as usize * envelope_size;
16342 #[allow(unused_variables)]
16343 let offset = encoder.out_of_line_offset(bytes_len);
16344 let mut _prev_end_offset: usize = 0;
16345 if 1 > max_ordinal {
16346 return Ok(());
16347 }
16348
16349 let cur_offset: usize = (1 - 1) * envelope_size;
16352
16353 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
16355
16356 fidl::encoding::encode_in_envelope_optional::<u8, D>(
16361 self.context_id.as_ref().map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
16362 encoder,
16363 offset + cur_offset,
16364 depth,
16365 )?;
16366
16367 _prev_end_offset = cur_offset + envelope_size;
16368 if 2 > max_ordinal {
16369 return Ok(());
16370 }
16371
16372 let cur_offset: usize = (2 - 1) * envelope_size;
16375
16376 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
16378
16379 fidl::encoding::encode_in_envelope_optional::<bool, D>(
16384 self.compress_flag.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
16385 encoder,
16386 offset + cur_offset,
16387 depth,
16388 )?;
16389
16390 _prev_end_offset = cur_offset + envelope_size;
16391 if 3 > max_ordinal {
16392 return Ok(());
16393 }
16394
16395 let cur_offset: usize = (3 - 1) * envelope_size;
16398
16399 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
16401
16402 fidl::encoding::encode_in_envelope_optional::<bool, D>(
16407 self.stable.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
16408 encoder,
16409 offset + cur_offset,
16410 depth,
16411 )?;
16412
16413 _prev_end_offset = cur_offset + envelope_size;
16414 if 4 > max_ordinal {
16415 return Ok(());
16416 }
16417
16418 let cur_offset: usize = (4 - 1) * envelope_size;
16421
16422 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
16424
16425 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<64>, D>(
16430 self.prefix.as_ref().map(
16431 <fidl::encoding::BoundedString<64> as fidl::encoding::ValueTypeMarker>::borrow,
16432 ),
16433 encoder,
16434 offset + cur_offset,
16435 depth,
16436 )?;
16437
16438 _prev_end_offset = cur_offset + envelope_size;
16439
16440 Ok(())
16441 }
16442 }
16443
16444 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for LowpanContextInfo {
16445 #[inline(always)]
16446 fn new_empty() -> Self {
16447 Self::default()
16448 }
16449
16450 unsafe fn decode(
16451 &mut self,
16452 decoder: &mut fidl::encoding::Decoder<'_, D>,
16453 offset: usize,
16454 mut depth: fidl::encoding::Depth,
16455 ) -> fidl::Result<()> {
16456 decoder.debug_check_bounds::<Self>(offset);
16457 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
16458 None => return Err(fidl::Error::NotNullable),
16459 Some(len) => len,
16460 };
16461 if len == 0 {
16463 return Ok(());
16464 };
16465 depth.increment()?;
16466 let envelope_size = 8;
16467 let bytes_len = len * envelope_size;
16468 let offset = decoder.out_of_line_offset(bytes_len)?;
16469 let mut _next_ordinal_to_read = 0;
16471 let mut next_offset = offset;
16472 let end_offset = offset + bytes_len;
16473 _next_ordinal_to_read += 1;
16474 if next_offset >= end_offset {
16475 return Ok(());
16476 }
16477
16478 while _next_ordinal_to_read < 1 {
16480 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
16481 _next_ordinal_to_read += 1;
16482 next_offset += envelope_size;
16483 }
16484
16485 let next_out_of_line = decoder.next_out_of_line();
16486 let handles_before = decoder.remaining_handles();
16487 if let Some((inlined, num_bytes, num_handles)) =
16488 fidl::encoding::decode_envelope_header(decoder, next_offset)?
16489 {
16490 let member_inline_size =
16491 <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
16492 if inlined != (member_inline_size <= 4) {
16493 return Err(fidl::Error::InvalidInlineBitInEnvelope);
16494 }
16495 let inner_offset;
16496 let mut inner_depth = depth.clone();
16497 if inlined {
16498 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
16499 inner_offset = next_offset;
16500 } else {
16501 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
16502 inner_depth.increment()?;
16503 }
16504 let val_ref = self.context_id.get_or_insert_with(|| fidl::new_empty!(u8, D));
16505 fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
16506 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
16507 {
16508 return Err(fidl::Error::InvalidNumBytesInEnvelope);
16509 }
16510 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
16511 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
16512 }
16513 }
16514
16515 next_offset += envelope_size;
16516 _next_ordinal_to_read += 1;
16517 if next_offset >= end_offset {
16518 return Ok(());
16519 }
16520
16521 while _next_ordinal_to_read < 2 {
16523 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
16524 _next_ordinal_to_read += 1;
16525 next_offset += envelope_size;
16526 }
16527
16528 let next_out_of_line = decoder.next_out_of_line();
16529 let handles_before = decoder.remaining_handles();
16530 if let Some((inlined, num_bytes, num_handles)) =
16531 fidl::encoding::decode_envelope_header(decoder, next_offset)?
16532 {
16533 let member_inline_size =
16534 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
16535 if inlined != (member_inline_size <= 4) {
16536 return Err(fidl::Error::InvalidInlineBitInEnvelope);
16537 }
16538 let inner_offset;
16539 let mut inner_depth = depth.clone();
16540 if inlined {
16541 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
16542 inner_offset = next_offset;
16543 } else {
16544 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
16545 inner_depth.increment()?;
16546 }
16547 let val_ref = self.compress_flag.get_or_insert_with(|| fidl::new_empty!(bool, D));
16548 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
16549 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
16550 {
16551 return Err(fidl::Error::InvalidNumBytesInEnvelope);
16552 }
16553 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
16554 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
16555 }
16556 }
16557
16558 next_offset += envelope_size;
16559 _next_ordinal_to_read += 1;
16560 if next_offset >= end_offset {
16561 return Ok(());
16562 }
16563
16564 while _next_ordinal_to_read < 3 {
16566 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
16567 _next_ordinal_to_read += 1;
16568 next_offset += envelope_size;
16569 }
16570
16571 let next_out_of_line = decoder.next_out_of_line();
16572 let handles_before = decoder.remaining_handles();
16573 if let Some((inlined, num_bytes, num_handles)) =
16574 fidl::encoding::decode_envelope_header(decoder, next_offset)?
16575 {
16576 let member_inline_size =
16577 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
16578 if inlined != (member_inline_size <= 4) {
16579 return Err(fidl::Error::InvalidInlineBitInEnvelope);
16580 }
16581 let inner_offset;
16582 let mut inner_depth = depth.clone();
16583 if inlined {
16584 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
16585 inner_offset = next_offset;
16586 } else {
16587 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
16588 inner_depth.increment()?;
16589 }
16590 let val_ref = self.stable.get_or_insert_with(|| fidl::new_empty!(bool, D));
16591 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
16592 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
16593 {
16594 return Err(fidl::Error::InvalidNumBytesInEnvelope);
16595 }
16596 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
16597 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
16598 }
16599 }
16600
16601 next_offset += envelope_size;
16602 _next_ordinal_to_read += 1;
16603 if next_offset >= end_offset {
16604 return Ok(());
16605 }
16606
16607 while _next_ordinal_to_read < 4 {
16609 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
16610 _next_ordinal_to_read += 1;
16611 next_offset += envelope_size;
16612 }
16613
16614 let next_out_of_line = decoder.next_out_of_line();
16615 let handles_before = decoder.remaining_handles();
16616 if let Some((inlined, num_bytes, num_handles)) =
16617 fidl::encoding::decode_envelope_header(decoder, next_offset)?
16618 {
16619 let member_inline_size =
16620 <fidl::encoding::BoundedString<64> as fidl::encoding::TypeMarker>::inline_size(
16621 decoder.context,
16622 );
16623 if inlined != (member_inline_size <= 4) {
16624 return Err(fidl::Error::InvalidInlineBitInEnvelope);
16625 }
16626 let inner_offset;
16627 let mut inner_depth = depth.clone();
16628 if inlined {
16629 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
16630 inner_offset = next_offset;
16631 } else {
16632 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
16633 inner_depth.increment()?;
16634 }
16635 let val_ref = self
16636 .prefix
16637 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<64>, D));
16638 fidl::decode!(
16639 fidl::encoding::BoundedString<64>,
16640 D,
16641 val_ref,
16642 decoder,
16643 inner_offset,
16644 inner_depth
16645 )?;
16646 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
16647 {
16648 return Err(fidl::Error::InvalidNumBytesInEnvelope);
16649 }
16650 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
16651 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
16652 }
16653 }
16654
16655 next_offset += envelope_size;
16656
16657 while next_offset < end_offset {
16659 _next_ordinal_to_read += 1;
16660 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
16661 next_offset += envelope_size;
16662 }
16663
16664 Ok(())
16665 }
16666 }
16667
16668 impl MessageQueueInfo {
16669 #[inline(always)]
16670 fn max_ordinal_present(&self) -> u64 {
16671 if let Some(_) = self.total_bytes {
16672 return 3;
16673 }
16674 if let Some(_) = self.num_buffers {
16675 return 2;
16676 }
16677 if let Some(_) = self.num_messages {
16678 return 1;
16679 }
16680 0
16681 }
16682 }
16683
16684 impl fidl::encoding::ValueTypeMarker for MessageQueueInfo {
16685 type Borrowed<'a> = &'a Self;
16686 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
16687 value
16688 }
16689 }
16690
16691 unsafe impl fidl::encoding::TypeMarker for MessageQueueInfo {
16692 type Owned = Self;
16693
16694 #[inline(always)]
16695 fn inline_align(_context: fidl::encoding::Context) -> usize {
16696 8
16697 }
16698
16699 #[inline(always)]
16700 fn inline_size(_context: fidl::encoding::Context) -> usize {
16701 16
16702 }
16703 }
16704
16705 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<MessageQueueInfo, D>
16706 for &MessageQueueInfo
16707 {
16708 unsafe fn encode(
16709 self,
16710 encoder: &mut fidl::encoding::Encoder<'_, D>,
16711 offset: usize,
16712 mut depth: fidl::encoding::Depth,
16713 ) -> fidl::Result<()> {
16714 encoder.debug_check_bounds::<MessageQueueInfo>(offset);
16715 let max_ordinal: u64 = self.max_ordinal_present();
16717 encoder.write_num(max_ordinal, offset);
16718 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
16719 if max_ordinal == 0 {
16721 return Ok(());
16722 }
16723 depth.increment()?;
16724 let envelope_size = 8;
16725 let bytes_len = max_ordinal as usize * envelope_size;
16726 #[allow(unused_variables)]
16727 let offset = encoder.out_of_line_offset(bytes_len);
16728 let mut _prev_end_offset: usize = 0;
16729 if 1 > max_ordinal {
16730 return Ok(());
16731 }
16732
16733 let cur_offset: usize = (1 - 1) * envelope_size;
16736
16737 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
16739
16740 fidl::encoding::encode_in_envelope_optional::<u16, D>(
16745 self.num_messages.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
16746 encoder,
16747 offset + cur_offset,
16748 depth,
16749 )?;
16750
16751 _prev_end_offset = cur_offset + envelope_size;
16752 if 2 > max_ordinal {
16753 return Ok(());
16754 }
16755
16756 let cur_offset: usize = (2 - 1) * envelope_size;
16759
16760 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
16762
16763 fidl::encoding::encode_in_envelope_optional::<u16, D>(
16768 self.num_buffers.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
16769 encoder,
16770 offset + cur_offset,
16771 depth,
16772 )?;
16773
16774 _prev_end_offset = cur_offset + envelope_size;
16775 if 3 > max_ordinal {
16776 return Ok(());
16777 }
16778
16779 let cur_offset: usize = (3 - 1) * envelope_size;
16782
16783 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
16785
16786 fidl::encoding::encode_in_envelope_optional::<u32, D>(
16791 self.total_bytes.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
16792 encoder,
16793 offset + cur_offset,
16794 depth,
16795 )?;
16796
16797 _prev_end_offset = cur_offset + envelope_size;
16798
16799 Ok(())
16800 }
16801 }
16802
16803 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for MessageQueueInfo {
16804 #[inline(always)]
16805 fn new_empty() -> Self {
16806 Self::default()
16807 }
16808
16809 unsafe fn decode(
16810 &mut self,
16811 decoder: &mut fidl::encoding::Decoder<'_, D>,
16812 offset: usize,
16813 mut depth: fidl::encoding::Depth,
16814 ) -> fidl::Result<()> {
16815 decoder.debug_check_bounds::<Self>(offset);
16816 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
16817 None => return Err(fidl::Error::NotNullable),
16818 Some(len) => len,
16819 };
16820 if len == 0 {
16822 return Ok(());
16823 };
16824 depth.increment()?;
16825 let envelope_size = 8;
16826 let bytes_len = len * envelope_size;
16827 let offset = decoder.out_of_line_offset(bytes_len)?;
16828 let mut _next_ordinal_to_read = 0;
16830 let mut next_offset = offset;
16831 let end_offset = offset + bytes_len;
16832 _next_ordinal_to_read += 1;
16833 if next_offset >= end_offset {
16834 return Ok(());
16835 }
16836
16837 while _next_ordinal_to_read < 1 {
16839 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
16840 _next_ordinal_to_read += 1;
16841 next_offset += envelope_size;
16842 }
16843
16844 let next_out_of_line = decoder.next_out_of_line();
16845 let handles_before = decoder.remaining_handles();
16846 if let Some((inlined, num_bytes, num_handles)) =
16847 fidl::encoding::decode_envelope_header(decoder, next_offset)?
16848 {
16849 let member_inline_size =
16850 <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
16851 if inlined != (member_inline_size <= 4) {
16852 return Err(fidl::Error::InvalidInlineBitInEnvelope);
16853 }
16854 let inner_offset;
16855 let mut inner_depth = depth.clone();
16856 if inlined {
16857 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
16858 inner_offset = next_offset;
16859 } else {
16860 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
16861 inner_depth.increment()?;
16862 }
16863 let val_ref = self.num_messages.get_or_insert_with(|| fidl::new_empty!(u16, D));
16864 fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
16865 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
16866 {
16867 return Err(fidl::Error::InvalidNumBytesInEnvelope);
16868 }
16869 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
16870 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
16871 }
16872 }
16873
16874 next_offset += envelope_size;
16875 _next_ordinal_to_read += 1;
16876 if next_offset >= end_offset {
16877 return Ok(());
16878 }
16879
16880 while _next_ordinal_to_read < 2 {
16882 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
16883 _next_ordinal_to_read += 1;
16884 next_offset += envelope_size;
16885 }
16886
16887 let next_out_of_line = decoder.next_out_of_line();
16888 let handles_before = decoder.remaining_handles();
16889 if let Some((inlined, num_bytes, num_handles)) =
16890 fidl::encoding::decode_envelope_header(decoder, next_offset)?
16891 {
16892 let member_inline_size =
16893 <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
16894 if inlined != (member_inline_size <= 4) {
16895 return Err(fidl::Error::InvalidInlineBitInEnvelope);
16896 }
16897 let inner_offset;
16898 let mut inner_depth = depth.clone();
16899 if inlined {
16900 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
16901 inner_offset = next_offset;
16902 } else {
16903 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
16904 inner_depth.increment()?;
16905 }
16906 let val_ref = self.num_buffers.get_or_insert_with(|| fidl::new_empty!(u16, D));
16907 fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
16908 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
16909 {
16910 return Err(fidl::Error::InvalidNumBytesInEnvelope);
16911 }
16912 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
16913 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
16914 }
16915 }
16916
16917 next_offset += envelope_size;
16918 _next_ordinal_to_read += 1;
16919 if next_offset >= end_offset {
16920 return Ok(());
16921 }
16922
16923 while _next_ordinal_to_read < 3 {
16925 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
16926 _next_ordinal_to_read += 1;
16927 next_offset += envelope_size;
16928 }
16929
16930 let next_out_of_line = decoder.next_out_of_line();
16931 let handles_before = decoder.remaining_handles();
16932 if let Some((inlined, num_bytes, num_handles)) =
16933 fidl::encoding::decode_envelope_header(decoder, next_offset)?
16934 {
16935 let member_inline_size =
16936 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
16937 if inlined != (member_inline_size <= 4) {
16938 return Err(fidl::Error::InvalidInlineBitInEnvelope);
16939 }
16940 let inner_offset;
16941 let mut inner_depth = depth.clone();
16942 if inlined {
16943 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
16944 inner_offset = next_offset;
16945 } else {
16946 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
16947 inner_depth.increment()?;
16948 }
16949 let val_ref = self.total_bytes.get_or_insert_with(|| fidl::new_empty!(u32, D));
16950 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
16951 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
16952 {
16953 return Err(fidl::Error::InvalidNumBytesInEnvelope);
16954 }
16955 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
16956 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
16957 }
16958 }
16959
16960 next_offset += envelope_size;
16961
16962 while next_offset < end_offset {
16964 _next_ordinal_to_read += 1;
16965 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
16966 next_offset += envelope_size;
16967 }
16968
16969 Ok(())
16970 }
16971 }
16972
16973 impl MultiRadioNeighborInfo {
16974 #[inline(always)]
16975 fn max_ordinal_present(&self) -> u64 {
16976 if let Some(_) = self.radio_link_info {
16977 return 3;
16978 }
16979 if let Some(_) = self.thread_rloc {
16980 return 2;
16981 }
16982 if let Some(_) = self.extended_address {
16983 return 1;
16984 }
16985 0
16986 }
16987 }
16988
16989 impl fidl::encoding::ValueTypeMarker for MultiRadioNeighborInfo {
16990 type Borrowed<'a> = &'a Self;
16991 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
16992 value
16993 }
16994 }
16995
16996 unsafe impl fidl::encoding::TypeMarker for MultiRadioNeighborInfo {
16997 type Owned = Self;
16998
16999 #[inline(always)]
17000 fn inline_align(_context: fidl::encoding::Context) -> usize {
17001 8
17002 }
17003
17004 #[inline(always)]
17005 fn inline_size(_context: fidl::encoding::Context) -> usize {
17006 16
17007 }
17008 }
17009
17010 unsafe impl<D: fidl::encoding::ResourceDialect>
17011 fidl::encoding::Encode<MultiRadioNeighborInfo, D> for &MultiRadioNeighborInfo
17012 {
17013 unsafe fn encode(
17014 self,
17015 encoder: &mut fidl::encoding::Encoder<'_, D>,
17016 offset: usize,
17017 mut depth: fidl::encoding::Depth,
17018 ) -> fidl::Result<()> {
17019 encoder.debug_check_bounds::<MultiRadioNeighborInfo>(offset);
17020 let max_ordinal: u64 = self.max_ordinal_present();
17022 encoder.write_num(max_ordinal, offset);
17023 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
17024 if max_ordinal == 0 {
17026 return Ok(());
17027 }
17028 depth.increment()?;
17029 let envelope_size = 8;
17030 let bytes_len = max_ordinal as usize * envelope_size;
17031 #[allow(unused_variables)]
17032 let offset = encoder.out_of_line_offset(bytes_len);
17033 let mut _prev_end_offset: usize = 0;
17034 if 1 > max_ordinal {
17035 return Ok(());
17036 }
17037
17038 let cur_offset: usize = (1 - 1) * envelope_size;
17041
17042 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
17044
17045 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<u8, 8>, D>(
17050 self.extended_address.as_ref().map(
17051 <fidl::encoding::Vector<u8, 8> as fidl::encoding::ValueTypeMarker>::borrow,
17052 ),
17053 encoder,
17054 offset + cur_offset,
17055 depth,
17056 )?;
17057
17058 _prev_end_offset = cur_offset + envelope_size;
17059 if 2 > max_ordinal {
17060 return Ok(());
17061 }
17062
17063 let cur_offset: usize = (2 - 1) * envelope_size;
17066
17067 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
17069
17070 fidl::encoding::encode_in_envelope_optional::<u16, D>(
17075 self.thread_rloc.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
17076 encoder,
17077 offset + cur_offset,
17078 depth,
17079 )?;
17080
17081 _prev_end_offset = cur_offset + envelope_size;
17082 if 3 > max_ordinal {
17083 return Ok(());
17084 }
17085
17086 let cur_offset: usize = (3 - 1) * envelope_size;
17089
17090 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
17092
17093 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<RadioLinkInfo, 5>, D>(
17098 self.radio_link_info.as_ref().map(<fidl::encoding::Vector<RadioLinkInfo, 5> as fidl::encoding::ValueTypeMarker>::borrow),
17099 encoder, offset + cur_offset, depth
17100 )?;
17101
17102 _prev_end_offset = cur_offset + envelope_size;
17103
17104 Ok(())
17105 }
17106 }
17107
17108 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
17109 for MultiRadioNeighborInfo
17110 {
17111 #[inline(always)]
17112 fn new_empty() -> Self {
17113 Self::default()
17114 }
17115
17116 unsafe fn decode(
17117 &mut self,
17118 decoder: &mut fidl::encoding::Decoder<'_, D>,
17119 offset: usize,
17120 mut depth: fidl::encoding::Depth,
17121 ) -> fidl::Result<()> {
17122 decoder.debug_check_bounds::<Self>(offset);
17123 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
17124 None => return Err(fidl::Error::NotNullable),
17125 Some(len) => len,
17126 };
17127 if len == 0 {
17129 return Ok(());
17130 };
17131 depth.increment()?;
17132 let envelope_size = 8;
17133 let bytes_len = len * envelope_size;
17134 let offset = decoder.out_of_line_offset(bytes_len)?;
17135 let mut _next_ordinal_to_read = 0;
17137 let mut next_offset = offset;
17138 let end_offset = offset + bytes_len;
17139 _next_ordinal_to_read += 1;
17140 if next_offset >= end_offset {
17141 return Ok(());
17142 }
17143
17144 while _next_ordinal_to_read < 1 {
17146 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
17147 _next_ordinal_to_read += 1;
17148 next_offset += envelope_size;
17149 }
17150
17151 let next_out_of_line = decoder.next_out_of_line();
17152 let handles_before = decoder.remaining_handles();
17153 if let Some((inlined, num_bytes, num_handles)) =
17154 fidl::encoding::decode_envelope_header(decoder, next_offset)?
17155 {
17156 let member_inline_size =
17157 <fidl::encoding::Vector<u8, 8> as fidl::encoding::TypeMarker>::inline_size(
17158 decoder.context,
17159 );
17160 if inlined != (member_inline_size <= 4) {
17161 return Err(fidl::Error::InvalidInlineBitInEnvelope);
17162 }
17163 let inner_offset;
17164 let mut inner_depth = depth.clone();
17165 if inlined {
17166 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
17167 inner_offset = next_offset;
17168 } else {
17169 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
17170 inner_depth.increment()?;
17171 }
17172 let val_ref = self
17173 .extended_address
17174 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u8, 8>, D));
17175 fidl::decode!(fidl::encoding::Vector<u8, 8>, D, val_ref, decoder, inner_offset, inner_depth)?;
17176 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
17177 {
17178 return Err(fidl::Error::InvalidNumBytesInEnvelope);
17179 }
17180 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
17181 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
17182 }
17183 }
17184
17185 next_offset += envelope_size;
17186 _next_ordinal_to_read += 1;
17187 if next_offset >= end_offset {
17188 return Ok(());
17189 }
17190
17191 while _next_ordinal_to_read < 2 {
17193 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
17194 _next_ordinal_to_read += 1;
17195 next_offset += envelope_size;
17196 }
17197
17198 let next_out_of_line = decoder.next_out_of_line();
17199 let handles_before = decoder.remaining_handles();
17200 if let Some((inlined, num_bytes, num_handles)) =
17201 fidl::encoding::decode_envelope_header(decoder, next_offset)?
17202 {
17203 let member_inline_size =
17204 <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
17205 if inlined != (member_inline_size <= 4) {
17206 return Err(fidl::Error::InvalidInlineBitInEnvelope);
17207 }
17208 let inner_offset;
17209 let mut inner_depth = depth.clone();
17210 if inlined {
17211 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
17212 inner_offset = next_offset;
17213 } else {
17214 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
17215 inner_depth.increment()?;
17216 }
17217 let val_ref = self.thread_rloc.get_or_insert_with(|| fidl::new_empty!(u16, D));
17218 fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
17219 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
17220 {
17221 return Err(fidl::Error::InvalidNumBytesInEnvelope);
17222 }
17223 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
17224 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
17225 }
17226 }
17227
17228 next_offset += envelope_size;
17229 _next_ordinal_to_read += 1;
17230 if next_offset >= end_offset {
17231 return Ok(());
17232 }
17233
17234 while _next_ordinal_to_read < 3 {
17236 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
17237 _next_ordinal_to_read += 1;
17238 next_offset += envelope_size;
17239 }
17240
17241 let next_out_of_line = decoder.next_out_of_line();
17242 let handles_before = decoder.remaining_handles();
17243 if let Some((inlined, num_bytes, num_handles)) =
17244 fidl::encoding::decode_envelope_header(decoder, next_offset)?
17245 {
17246 let member_inline_size = <fidl::encoding::Vector<RadioLinkInfo, 5> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
17247 if inlined != (member_inline_size <= 4) {
17248 return Err(fidl::Error::InvalidInlineBitInEnvelope);
17249 }
17250 let inner_offset;
17251 let mut inner_depth = depth.clone();
17252 if inlined {
17253 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
17254 inner_offset = next_offset;
17255 } else {
17256 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
17257 inner_depth.increment()?;
17258 }
17259 let val_ref = self.radio_link_info.get_or_insert_with(
17260 || fidl::new_empty!(fidl::encoding::Vector<RadioLinkInfo, 5>, D),
17261 );
17262 fidl::decode!(fidl::encoding::Vector<RadioLinkInfo, 5>, D, val_ref, decoder, inner_offset, inner_depth)?;
17263 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
17264 {
17265 return Err(fidl::Error::InvalidNumBytesInEnvelope);
17266 }
17267 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
17268 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
17269 }
17270 }
17271
17272 next_offset += envelope_size;
17273
17274 while next_offset < end_offset {
17276 _next_ordinal_to_read += 1;
17277 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
17278 next_offset += envelope_size;
17279 }
17280
17281 Ok(())
17282 }
17283 }
17284
17285 impl Nat64ErrorCounters {
17286 #[inline(always)]
17287 fn max_ordinal_present(&self) -> u64 {
17288 if let Some(_) = self.no_mapping {
17289 return 4;
17290 }
17291 if let Some(_) = self.unsupported_protocol {
17292 return 3;
17293 }
17294 if let Some(_) = self.illegal_packet {
17295 return 2;
17296 }
17297 if let Some(_) = self.unknown {
17298 return 1;
17299 }
17300 0
17301 }
17302 }
17303
17304 impl fidl::encoding::ValueTypeMarker for Nat64ErrorCounters {
17305 type Borrowed<'a> = &'a Self;
17306 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
17307 value
17308 }
17309 }
17310
17311 unsafe impl fidl::encoding::TypeMarker for Nat64ErrorCounters {
17312 type Owned = Self;
17313
17314 #[inline(always)]
17315 fn inline_align(_context: fidl::encoding::Context) -> usize {
17316 8
17317 }
17318
17319 #[inline(always)]
17320 fn inline_size(_context: fidl::encoding::Context) -> usize {
17321 16
17322 }
17323 }
17324
17325 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Nat64ErrorCounters, D>
17326 for &Nat64ErrorCounters
17327 {
17328 unsafe fn encode(
17329 self,
17330 encoder: &mut fidl::encoding::Encoder<'_, D>,
17331 offset: usize,
17332 mut depth: fidl::encoding::Depth,
17333 ) -> fidl::Result<()> {
17334 encoder.debug_check_bounds::<Nat64ErrorCounters>(offset);
17335 let max_ordinal: u64 = self.max_ordinal_present();
17337 encoder.write_num(max_ordinal, offset);
17338 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
17339 if max_ordinal == 0 {
17341 return Ok(());
17342 }
17343 depth.increment()?;
17344 let envelope_size = 8;
17345 let bytes_len = max_ordinal as usize * envelope_size;
17346 #[allow(unused_variables)]
17347 let offset = encoder.out_of_line_offset(bytes_len);
17348 let mut _prev_end_offset: usize = 0;
17349 if 1 > max_ordinal {
17350 return Ok(());
17351 }
17352
17353 let cur_offset: usize = (1 - 1) * envelope_size;
17356
17357 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
17359
17360 fidl::encoding::encode_in_envelope_optional::<Nat64PacketCounters, D>(
17365 self.unknown
17366 .as_ref()
17367 .map(<Nat64PacketCounters as fidl::encoding::ValueTypeMarker>::borrow),
17368 encoder,
17369 offset + cur_offset,
17370 depth,
17371 )?;
17372
17373 _prev_end_offset = cur_offset + envelope_size;
17374 if 2 > max_ordinal {
17375 return Ok(());
17376 }
17377
17378 let cur_offset: usize = (2 - 1) * envelope_size;
17381
17382 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
17384
17385 fidl::encoding::encode_in_envelope_optional::<Nat64PacketCounters, D>(
17390 self.illegal_packet
17391 .as_ref()
17392 .map(<Nat64PacketCounters as fidl::encoding::ValueTypeMarker>::borrow),
17393 encoder,
17394 offset + cur_offset,
17395 depth,
17396 )?;
17397
17398 _prev_end_offset = cur_offset + envelope_size;
17399 if 3 > max_ordinal {
17400 return Ok(());
17401 }
17402
17403 let cur_offset: usize = (3 - 1) * envelope_size;
17406
17407 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
17409
17410 fidl::encoding::encode_in_envelope_optional::<Nat64PacketCounters, D>(
17415 self.unsupported_protocol
17416 .as_ref()
17417 .map(<Nat64PacketCounters as fidl::encoding::ValueTypeMarker>::borrow),
17418 encoder,
17419 offset + cur_offset,
17420 depth,
17421 )?;
17422
17423 _prev_end_offset = cur_offset + envelope_size;
17424 if 4 > max_ordinal {
17425 return Ok(());
17426 }
17427
17428 let cur_offset: usize = (4 - 1) * envelope_size;
17431
17432 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
17434
17435 fidl::encoding::encode_in_envelope_optional::<Nat64PacketCounters, D>(
17440 self.no_mapping
17441 .as_ref()
17442 .map(<Nat64PacketCounters as fidl::encoding::ValueTypeMarker>::borrow),
17443 encoder,
17444 offset + cur_offset,
17445 depth,
17446 )?;
17447
17448 _prev_end_offset = cur_offset + envelope_size;
17449
17450 Ok(())
17451 }
17452 }
17453
17454 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Nat64ErrorCounters {
17455 #[inline(always)]
17456 fn new_empty() -> Self {
17457 Self::default()
17458 }
17459
17460 unsafe fn decode(
17461 &mut self,
17462 decoder: &mut fidl::encoding::Decoder<'_, D>,
17463 offset: usize,
17464 mut depth: fidl::encoding::Depth,
17465 ) -> fidl::Result<()> {
17466 decoder.debug_check_bounds::<Self>(offset);
17467 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
17468 None => return Err(fidl::Error::NotNullable),
17469 Some(len) => len,
17470 };
17471 if len == 0 {
17473 return Ok(());
17474 };
17475 depth.increment()?;
17476 let envelope_size = 8;
17477 let bytes_len = len * envelope_size;
17478 let offset = decoder.out_of_line_offset(bytes_len)?;
17479 let mut _next_ordinal_to_read = 0;
17481 let mut next_offset = offset;
17482 let end_offset = offset + bytes_len;
17483 _next_ordinal_to_read += 1;
17484 if next_offset >= end_offset {
17485 return Ok(());
17486 }
17487
17488 while _next_ordinal_to_read < 1 {
17490 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
17491 _next_ordinal_to_read += 1;
17492 next_offset += envelope_size;
17493 }
17494
17495 let next_out_of_line = decoder.next_out_of_line();
17496 let handles_before = decoder.remaining_handles();
17497 if let Some((inlined, num_bytes, num_handles)) =
17498 fidl::encoding::decode_envelope_header(decoder, next_offset)?
17499 {
17500 let member_inline_size =
17501 <Nat64PacketCounters as fidl::encoding::TypeMarker>::inline_size(
17502 decoder.context,
17503 );
17504 if inlined != (member_inline_size <= 4) {
17505 return Err(fidl::Error::InvalidInlineBitInEnvelope);
17506 }
17507 let inner_offset;
17508 let mut inner_depth = depth.clone();
17509 if inlined {
17510 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
17511 inner_offset = next_offset;
17512 } else {
17513 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
17514 inner_depth.increment()?;
17515 }
17516 let val_ref =
17517 self.unknown.get_or_insert_with(|| fidl::new_empty!(Nat64PacketCounters, D));
17518 fidl::decode!(Nat64PacketCounters, D, val_ref, decoder, inner_offset, inner_depth)?;
17519 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
17520 {
17521 return Err(fidl::Error::InvalidNumBytesInEnvelope);
17522 }
17523 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
17524 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
17525 }
17526 }
17527
17528 next_offset += envelope_size;
17529 _next_ordinal_to_read += 1;
17530 if next_offset >= end_offset {
17531 return Ok(());
17532 }
17533
17534 while _next_ordinal_to_read < 2 {
17536 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
17537 _next_ordinal_to_read += 1;
17538 next_offset += envelope_size;
17539 }
17540
17541 let next_out_of_line = decoder.next_out_of_line();
17542 let handles_before = decoder.remaining_handles();
17543 if let Some((inlined, num_bytes, num_handles)) =
17544 fidl::encoding::decode_envelope_header(decoder, next_offset)?
17545 {
17546 let member_inline_size =
17547 <Nat64PacketCounters as fidl::encoding::TypeMarker>::inline_size(
17548 decoder.context,
17549 );
17550 if inlined != (member_inline_size <= 4) {
17551 return Err(fidl::Error::InvalidInlineBitInEnvelope);
17552 }
17553 let inner_offset;
17554 let mut inner_depth = depth.clone();
17555 if inlined {
17556 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
17557 inner_offset = next_offset;
17558 } else {
17559 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
17560 inner_depth.increment()?;
17561 }
17562 let val_ref = self
17563 .illegal_packet
17564 .get_or_insert_with(|| fidl::new_empty!(Nat64PacketCounters, D));
17565 fidl::decode!(Nat64PacketCounters, D, val_ref, decoder, inner_offset, inner_depth)?;
17566 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
17567 {
17568 return Err(fidl::Error::InvalidNumBytesInEnvelope);
17569 }
17570 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
17571 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
17572 }
17573 }
17574
17575 next_offset += envelope_size;
17576 _next_ordinal_to_read += 1;
17577 if next_offset >= end_offset {
17578 return Ok(());
17579 }
17580
17581 while _next_ordinal_to_read < 3 {
17583 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
17584 _next_ordinal_to_read += 1;
17585 next_offset += envelope_size;
17586 }
17587
17588 let next_out_of_line = decoder.next_out_of_line();
17589 let handles_before = decoder.remaining_handles();
17590 if let Some((inlined, num_bytes, num_handles)) =
17591 fidl::encoding::decode_envelope_header(decoder, next_offset)?
17592 {
17593 let member_inline_size =
17594 <Nat64PacketCounters as fidl::encoding::TypeMarker>::inline_size(
17595 decoder.context,
17596 );
17597 if inlined != (member_inline_size <= 4) {
17598 return Err(fidl::Error::InvalidInlineBitInEnvelope);
17599 }
17600 let inner_offset;
17601 let mut inner_depth = depth.clone();
17602 if inlined {
17603 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
17604 inner_offset = next_offset;
17605 } else {
17606 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
17607 inner_depth.increment()?;
17608 }
17609 let val_ref = self
17610 .unsupported_protocol
17611 .get_or_insert_with(|| fidl::new_empty!(Nat64PacketCounters, D));
17612 fidl::decode!(Nat64PacketCounters, D, val_ref, decoder, inner_offset, inner_depth)?;
17613 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
17614 {
17615 return Err(fidl::Error::InvalidNumBytesInEnvelope);
17616 }
17617 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
17618 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
17619 }
17620 }
17621
17622 next_offset += envelope_size;
17623 _next_ordinal_to_read += 1;
17624 if next_offset >= end_offset {
17625 return Ok(());
17626 }
17627
17628 while _next_ordinal_to_read < 4 {
17630 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
17631 _next_ordinal_to_read += 1;
17632 next_offset += envelope_size;
17633 }
17634
17635 let next_out_of_line = decoder.next_out_of_line();
17636 let handles_before = decoder.remaining_handles();
17637 if let Some((inlined, num_bytes, num_handles)) =
17638 fidl::encoding::decode_envelope_header(decoder, next_offset)?
17639 {
17640 let member_inline_size =
17641 <Nat64PacketCounters as fidl::encoding::TypeMarker>::inline_size(
17642 decoder.context,
17643 );
17644 if inlined != (member_inline_size <= 4) {
17645 return Err(fidl::Error::InvalidInlineBitInEnvelope);
17646 }
17647 let inner_offset;
17648 let mut inner_depth = depth.clone();
17649 if inlined {
17650 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
17651 inner_offset = next_offset;
17652 } else {
17653 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
17654 inner_depth.increment()?;
17655 }
17656 let val_ref =
17657 self.no_mapping.get_or_insert_with(|| fidl::new_empty!(Nat64PacketCounters, D));
17658 fidl::decode!(Nat64PacketCounters, D, val_ref, decoder, inner_offset, inner_depth)?;
17659 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
17660 {
17661 return Err(fidl::Error::InvalidNumBytesInEnvelope);
17662 }
17663 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
17664 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
17665 }
17666 }
17667
17668 next_offset += envelope_size;
17669
17670 while next_offset < end_offset {
17672 _next_ordinal_to_read += 1;
17673 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
17674 next_offset += envelope_size;
17675 }
17676
17677 Ok(())
17678 }
17679 }
17680
17681 impl Nat64Info {
17682 #[inline(always)]
17683 fn max_ordinal_present(&self) -> u64 {
17684 if let Some(_) = self.nat64_protocol_counters {
17685 return 4;
17686 }
17687 if let Some(_) = self.nat64_error_counters {
17688 return 3;
17689 }
17690 if let Some(_) = self.nat64_mappings {
17691 return 2;
17692 }
17693 if let Some(_) = self.nat64_state {
17694 return 1;
17695 }
17696 0
17697 }
17698 }
17699
17700 impl fidl::encoding::ValueTypeMarker for Nat64Info {
17701 type Borrowed<'a> = &'a Self;
17702 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
17703 value
17704 }
17705 }
17706
17707 unsafe impl fidl::encoding::TypeMarker for Nat64Info {
17708 type Owned = Self;
17709
17710 #[inline(always)]
17711 fn inline_align(_context: fidl::encoding::Context) -> usize {
17712 8
17713 }
17714
17715 #[inline(always)]
17716 fn inline_size(_context: fidl::encoding::Context) -> usize {
17717 16
17718 }
17719 }
17720
17721 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Nat64Info, D>
17722 for &Nat64Info
17723 {
17724 unsafe fn encode(
17725 self,
17726 encoder: &mut fidl::encoding::Encoder<'_, D>,
17727 offset: usize,
17728 mut depth: fidl::encoding::Depth,
17729 ) -> fidl::Result<()> {
17730 encoder.debug_check_bounds::<Nat64Info>(offset);
17731 let max_ordinal: u64 = self.max_ordinal_present();
17733 encoder.write_num(max_ordinal, offset);
17734 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
17735 if max_ordinal == 0 {
17737 return Ok(());
17738 }
17739 depth.increment()?;
17740 let envelope_size = 8;
17741 let bytes_len = max_ordinal as usize * envelope_size;
17742 #[allow(unused_variables)]
17743 let offset = encoder.out_of_line_offset(bytes_len);
17744 let mut _prev_end_offset: usize = 0;
17745 if 1 > max_ordinal {
17746 return Ok(());
17747 }
17748
17749 let cur_offset: usize = (1 - 1) * envelope_size;
17752
17753 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
17755
17756 fidl::encoding::encode_in_envelope_optional::<BorderRoutingNat64State, D>(
17761 self.nat64_state
17762 .as_ref()
17763 .map(<BorderRoutingNat64State as fidl::encoding::ValueTypeMarker>::borrow),
17764 encoder,
17765 offset + cur_offset,
17766 depth,
17767 )?;
17768
17769 _prev_end_offset = cur_offset + envelope_size;
17770 if 2 > max_ordinal {
17771 return Ok(());
17772 }
17773
17774 let cur_offset: usize = (2 - 1) * envelope_size;
17777
17778 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
17780
17781 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<Nat64Mapping>, D>(
17786 self.nat64_mappings.as_ref().map(<fidl::encoding::UnboundedVector<Nat64Mapping> as fidl::encoding::ValueTypeMarker>::borrow),
17787 encoder, offset + cur_offset, depth
17788 )?;
17789
17790 _prev_end_offset = cur_offset + envelope_size;
17791 if 3 > max_ordinal {
17792 return Ok(());
17793 }
17794
17795 let cur_offset: usize = (3 - 1) * envelope_size;
17798
17799 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
17801
17802 fidl::encoding::encode_in_envelope_optional::<Nat64ErrorCounters, D>(
17807 self.nat64_error_counters
17808 .as_ref()
17809 .map(<Nat64ErrorCounters as fidl::encoding::ValueTypeMarker>::borrow),
17810 encoder,
17811 offset + cur_offset,
17812 depth,
17813 )?;
17814
17815 _prev_end_offset = cur_offset + envelope_size;
17816 if 4 > max_ordinal {
17817 return Ok(());
17818 }
17819
17820 let cur_offset: usize = (4 - 1) * envelope_size;
17823
17824 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
17826
17827 fidl::encoding::encode_in_envelope_optional::<Nat64ProtocolCounters, D>(
17832 self.nat64_protocol_counters
17833 .as_ref()
17834 .map(<Nat64ProtocolCounters as fidl::encoding::ValueTypeMarker>::borrow),
17835 encoder,
17836 offset + cur_offset,
17837 depth,
17838 )?;
17839
17840 _prev_end_offset = cur_offset + envelope_size;
17841
17842 Ok(())
17843 }
17844 }
17845
17846 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Nat64Info {
17847 #[inline(always)]
17848 fn new_empty() -> Self {
17849 Self::default()
17850 }
17851
17852 unsafe fn decode(
17853 &mut self,
17854 decoder: &mut fidl::encoding::Decoder<'_, D>,
17855 offset: usize,
17856 mut depth: fidl::encoding::Depth,
17857 ) -> fidl::Result<()> {
17858 decoder.debug_check_bounds::<Self>(offset);
17859 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
17860 None => return Err(fidl::Error::NotNullable),
17861 Some(len) => len,
17862 };
17863 if len == 0 {
17865 return Ok(());
17866 };
17867 depth.increment()?;
17868 let envelope_size = 8;
17869 let bytes_len = len * envelope_size;
17870 let offset = decoder.out_of_line_offset(bytes_len)?;
17871 let mut _next_ordinal_to_read = 0;
17873 let mut next_offset = offset;
17874 let end_offset = offset + bytes_len;
17875 _next_ordinal_to_read += 1;
17876 if next_offset >= end_offset {
17877 return Ok(());
17878 }
17879
17880 while _next_ordinal_to_read < 1 {
17882 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
17883 _next_ordinal_to_read += 1;
17884 next_offset += envelope_size;
17885 }
17886
17887 let next_out_of_line = decoder.next_out_of_line();
17888 let handles_before = decoder.remaining_handles();
17889 if let Some((inlined, num_bytes, num_handles)) =
17890 fidl::encoding::decode_envelope_header(decoder, next_offset)?
17891 {
17892 let member_inline_size =
17893 <BorderRoutingNat64State as fidl::encoding::TypeMarker>::inline_size(
17894 decoder.context,
17895 );
17896 if inlined != (member_inline_size <= 4) {
17897 return Err(fidl::Error::InvalidInlineBitInEnvelope);
17898 }
17899 let inner_offset;
17900 let mut inner_depth = depth.clone();
17901 if inlined {
17902 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
17903 inner_offset = next_offset;
17904 } else {
17905 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
17906 inner_depth.increment()?;
17907 }
17908 let val_ref = self
17909 .nat64_state
17910 .get_or_insert_with(|| fidl::new_empty!(BorderRoutingNat64State, D));
17911 fidl::decode!(
17912 BorderRoutingNat64State,
17913 D,
17914 val_ref,
17915 decoder,
17916 inner_offset,
17917 inner_depth
17918 )?;
17919 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
17920 {
17921 return Err(fidl::Error::InvalidNumBytesInEnvelope);
17922 }
17923 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
17924 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
17925 }
17926 }
17927
17928 next_offset += envelope_size;
17929 _next_ordinal_to_read += 1;
17930 if next_offset >= end_offset {
17931 return Ok(());
17932 }
17933
17934 while _next_ordinal_to_read < 2 {
17936 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
17937 _next_ordinal_to_read += 1;
17938 next_offset += envelope_size;
17939 }
17940
17941 let next_out_of_line = decoder.next_out_of_line();
17942 let handles_before = decoder.remaining_handles();
17943 if let Some((inlined, num_bytes, num_handles)) =
17944 fidl::encoding::decode_envelope_header(decoder, next_offset)?
17945 {
17946 let member_inline_size = <fidl::encoding::UnboundedVector<Nat64Mapping> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
17947 if inlined != (member_inline_size <= 4) {
17948 return Err(fidl::Error::InvalidInlineBitInEnvelope);
17949 }
17950 let inner_offset;
17951 let mut inner_depth = depth.clone();
17952 if inlined {
17953 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
17954 inner_offset = next_offset;
17955 } else {
17956 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
17957 inner_depth.increment()?;
17958 }
17959 let val_ref = self.nat64_mappings.get_or_insert_with(|| {
17960 fidl::new_empty!(fidl::encoding::UnboundedVector<Nat64Mapping>, D)
17961 });
17962 fidl::decode!(
17963 fidl::encoding::UnboundedVector<Nat64Mapping>,
17964 D,
17965 val_ref,
17966 decoder,
17967 inner_offset,
17968 inner_depth
17969 )?;
17970 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
17971 {
17972 return Err(fidl::Error::InvalidNumBytesInEnvelope);
17973 }
17974 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
17975 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
17976 }
17977 }
17978
17979 next_offset += envelope_size;
17980 _next_ordinal_to_read += 1;
17981 if next_offset >= end_offset {
17982 return Ok(());
17983 }
17984
17985 while _next_ordinal_to_read < 3 {
17987 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
17988 _next_ordinal_to_read += 1;
17989 next_offset += envelope_size;
17990 }
17991
17992 let next_out_of_line = decoder.next_out_of_line();
17993 let handles_before = decoder.remaining_handles();
17994 if let Some((inlined, num_bytes, num_handles)) =
17995 fidl::encoding::decode_envelope_header(decoder, next_offset)?
17996 {
17997 let member_inline_size =
17998 <Nat64ErrorCounters as fidl::encoding::TypeMarker>::inline_size(
17999 decoder.context,
18000 );
18001 if inlined != (member_inline_size <= 4) {
18002 return Err(fidl::Error::InvalidInlineBitInEnvelope);
18003 }
18004 let inner_offset;
18005 let mut inner_depth = depth.clone();
18006 if inlined {
18007 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
18008 inner_offset = next_offset;
18009 } else {
18010 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
18011 inner_depth.increment()?;
18012 }
18013 let val_ref = self
18014 .nat64_error_counters
18015 .get_or_insert_with(|| fidl::new_empty!(Nat64ErrorCounters, D));
18016 fidl::decode!(Nat64ErrorCounters, D, val_ref, decoder, inner_offset, inner_depth)?;
18017 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
18018 {
18019 return Err(fidl::Error::InvalidNumBytesInEnvelope);
18020 }
18021 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
18022 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
18023 }
18024 }
18025
18026 next_offset += envelope_size;
18027 _next_ordinal_to_read += 1;
18028 if next_offset >= end_offset {
18029 return Ok(());
18030 }
18031
18032 while _next_ordinal_to_read < 4 {
18034 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
18035 _next_ordinal_to_read += 1;
18036 next_offset += envelope_size;
18037 }
18038
18039 let next_out_of_line = decoder.next_out_of_line();
18040 let handles_before = decoder.remaining_handles();
18041 if let Some((inlined, num_bytes, num_handles)) =
18042 fidl::encoding::decode_envelope_header(decoder, next_offset)?
18043 {
18044 let member_inline_size =
18045 <Nat64ProtocolCounters as fidl::encoding::TypeMarker>::inline_size(
18046 decoder.context,
18047 );
18048 if inlined != (member_inline_size <= 4) {
18049 return Err(fidl::Error::InvalidInlineBitInEnvelope);
18050 }
18051 let inner_offset;
18052 let mut inner_depth = depth.clone();
18053 if inlined {
18054 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
18055 inner_offset = next_offset;
18056 } else {
18057 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
18058 inner_depth.increment()?;
18059 }
18060 let val_ref = self
18061 .nat64_protocol_counters
18062 .get_or_insert_with(|| fidl::new_empty!(Nat64ProtocolCounters, D));
18063 fidl::decode!(
18064 Nat64ProtocolCounters,
18065 D,
18066 val_ref,
18067 decoder,
18068 inner_offset,
18069 inner_depth
18070 )?;
18071 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
18072 {
18073 return Err(fidl::Error::InvalidNumBytesInEnvelope);
18074 }
18075 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
18076 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
18077 }
18078 }
18079
18080 next_offset += envelope_size;
18081
18082 while next_offset < end_offset {
18084 _next_ordinal_to_read += 1;
18085 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
18086 next_offset += envelope_size;
18087 }
18088
18089 Ok(())
18090 }
18091 }
18092
18093 impl Nat64Mapping {
18094 #[inline(always)]
18095 fn max_ordinal_present(&self) -> u64 {
18096 if let Some(_) = self.counters {
18097 return 5;
18098 }
18099 if let Some(_) = self.remaining_time_ms {
18100 return 4;
18101 }
18102 if let Some(_) = self.ip6_addr {
18103 return 3;
18104 }
18105 if let Some(_) = self.ip4_addr {
18106 return 2;
18107 }
18108 if let Some(_) = self.mapping_id {
18109 return 1;
18110 }
18111 0
18112 }
18113 }
18114
18115 impl fidl::encoding::ValueTypeMarker for Nat64Mapping {
18116 type Borrowed<'a> = &'a Self;
18117 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
18118 value
18119 }
18120 }
18121
18122 unsafe impl fidl::encoding::TypeMarker for Nat64Mapping {
18123 type Owned = Self;
18124
18125 #[inline(always)]
18126 fn inline_align(_context: fidl::encoding::Context) -> usize {
18127 8
18128 }
18129
18130 #[inline(always)]
18131 fn inline_size(_context: fidl::encoding::Context) -> usize {
18132 16
18133 }
18134 }
18135
18136 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Nat64Mapping, D>
18137 for &Nat64Mapping
18138 {
18139 unsafe fn encode(
18140 self,
18141 encoder: &mut fidl::encoding::Encoder<'_, D>,
18142 offset: usize,
18143 mut depth: fidl::encoding::Depth,
18144 ) -> fidl::Result<()> {
18145 encoder.debug_check_bounds::<Nat64Mapping>(offset);
18146 let max_ordinal: u64 = self.max_ordinal_present();
18148 encoder.write_num(max_ordinal, offset);
18149 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
18150 if max_ordinal == 0 {
18152 return Ok(());
18153 }
18154 depth.increment()?;
18155 let envelope_size = 8;
18156 let bytes_len = max_ordinal as usize * envelope_size;
18157 #[allow(unused_variables)]
18158 let offset = encoder.out_of_line_offset(bytes_len);
18159 let mut _prev_end_offset: usize = 0;
18160 if 1 > max_ordinal {
18161 return Ok(());
18162 }
18163
18164 let cur_offset: usize = (1 - 1) * envelope_size;
18167
18168 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
18170
18171 fidl::encoding::encode_in_envelope_optional::<u64, D>(
18176 self.mapping_id.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
18177 encoder,
18178 offset + cur_offset,
18179 depth,
18180 )?;
18181
18182 _prev_end_offset = cur_offset + envelope_size;
18183 if 2 > max_ordinal {
18184 return Ok(());
18185 }
18186
18187 let cur_offset: usize = (2 - 1) * envelope_size;
18190
18191 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
18193
18194 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<u8>, D>(
18199 self.ip4_addr.as_ref().map(<fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow),
18200 encoder, offset + cur_offset, depth
18201 )?;
18202
18203 _prev_end_offset = cur_offset + envelope_size;
18204 if 3 > max_ordinal {
18205 return Ok(());
18206 }
18207
18208 let cur_offset: usize = (3 - 1) * envelope_size;
18211
18212 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
18214
18215 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<u8>, D>(
18220 self.ip6_addr.as_ref().map(<fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow),
18221 encoder, offset + cur_offset, depth
18222 )?;
18223
18224 _prev_end_offset = cur_offset + envelope_size;
18225 if 4 > max_ordinal {
18226 return Ok(());
18227 }
18228
18229 let cur_offset: usize = (4 - 1) * envelope_size;
18232
18233 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
18235
18236 fidl::encoding::encode_in_envelope_optional::<u32, D>(
18241 self.remaining_time_ms
18242 .as_ref()
18243 .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
18244 encoder,
18245 offset + cur_offset,
18246 depth,
18247 )?;
18248
18249 _prev_end_offset = cur_offset + envelope_size;
18250 if 5 > max_ordinal {
18251 return Ok(());
18252 }
18253
18254 let cur_offset: usize = (5 - 1) * envelope_size;
18257
18258 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
18260
18261 fidl::encoding::encode_in_envelope_optional::<Nat64ProtocolCounters, D>(
18266 self.counters
18267 .as_ref()
18268 .map(<Nat64ProtocolCounters as fidl::encoding::ValueTypeMarker>::borrow),
18269 encoder,
18270 offset + cur_offset,
18271 depth,
18272 )?;
18273
18274 _prev_end_offset = cur_offset + envelope_size;
18275
18276 Ok(())
18277 }
18278 }
18279
18280 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Nat64Mapping {
18281 #[inline(always)]
18282 fn new_empty() -> Self {
18283 Self::default()
18284 }
18285
18286 unsafe fn decode(
18287 &mut self,
18288 decoder: &mut fidl::encoding::Decoder<'_, D>,
18289 offset: usize,
18290 mut depth: fidl::encoding::Depth,
18291 ) -> fidl::Result<()> {
18292 decoder.debug_check_bounds::<Self>(offset);
18293 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
18294 None => return Err(fidl::Error::NotNullable),
18295 Some(len) => len,
18296 };
18297 if len == 0 {
18299 return Ok(());
18300 };
18301 depth.increment()?;
18302 let envelope_size = 8;
18303 let bytes_len = len * envelope_size;
18304 let offset = decoder.out_of_line_offset(bytes_len)?;
18305 let mut _next_ordinal_to_read = 0;
18307 let mut next_offset = offset;
18308 let end_offset = offset + bytes_len;
18309 _next_ordinal_to_read += 1;
18310 if next_offset >= end_offset {
18311 return Ok(());
18312 }
18313
18314 while _next_ordinal_to_read < 1 {
18316 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
18317 _next_ordinal_to_read += 1;
18318 next_offset += envelope_size;
18319 }
18320
18321 let next_out_of_line = decoder.next_out_of_line();
18322 let handles_before = decoder.remaining_handles();
18323 if let Some((inlined, num_bytes, num_handles)) =
18324 fidl::encoding::decode_envelope_header(decoder, next_offset)?
18325 {
18326 let member_inline_size =
18327 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
18328 if inlined != (member_inline_size <= 4) {
18329 return Err(fidl::Error::InvalidInlineBitInEnvelope);
18330 }
18331 let inner_offset;
18332 let mut inner_depth = depth.clone();
18333 if inlined {
18334 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
18335 inner_offset = next_offset;
18336 } else {
18337 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
18338 inner_depth.increment()?;
18339 }
18340 let val_ref = self.mapping_id.get_or_insert_with(|| fidl::new_empty!(u64, D));
18341 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
18342 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
18343 {
18344 return Err(fidl::Error::InvalidNumBytesInEnvelope);
18345 }
18346 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
18347 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
18348 }
18349 }
18350
18351 next_offset += envelope_size;
18352 _next_ordinal_to_read += 1;
18353 if next_offset >= end_offset {
18354 return Ok(());
18355 }
18356
18357 while _next_ordinal_to_read < 2 {
18359 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
18360 _next_ordinal_to_read += 1;
18361 next_offset += envelope_size;
18362 }
18363
18364 let next_out_of_line = decoder.next_out_of_line();
18365 let handles_before = decoder.remaining_handles();
18366 if let Some((inlined, num_bytes, num_handles)) =
18367 fidl::encoding::decode_envelope_header(decoder, next_offset)?
18368 {
18369 let member_inline_size = <fidl::encoding::UnboundedVector<u8> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
18370 if inlined != (member_inline_size <= 4) {
18371 return Err(fidl::Error::InvalidInlineBitInEnvelope);
18372 }
18373 let inner_offset;
18374 let mut inner_depth = depth.clone();
18375 if inlined {
18376 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
18377 inner_offset = next_offset;
18378 } else {
18379 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
18380 inner_depth.increment()?;
18381 }
18382 let val_ref = self.ip4_addr.get_or_insert_with(|| {
18383 fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D)
18384 });
18385 fidl::decode!(
18386 fidl::encoding::UnboundedVector<u8>,
18387 D,
18388 val_ref,
18389 decoder,
18390 inner_offset,
18391 inner_depth
18392 )?;
18393 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
18394 {
18395 return Err(fidl::Error::InvalidNumBytesInEnvelope);
18396 }
18397 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
18398 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
18399 }
18400 }
18401
18402 next_offset += envelope_size;
18403 _next_ordinal_to_read += 1;
18404 if next_offset >= end_offset {
18405 return Ok(());
18406 }
18407
18408 while _next_ordinal_to_read < 3 {
18410 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
18411 _next_ordinal_to_read += 1;
18412 next_offset += envelope_size;
18413 }
18414
18415 let next_out_of_line = decoder.next_out_of_line();
18416 let handles_before = decoder.remaining_handles();
18417 if let Some((inlined, num_bytes, num_handles)) =
18418 fidl::encoding::decode_envelope_header(decoder, next_offset)?
18419 {
18420 let member_inline_size = <fidl::encoding::UnboundedVector<u8> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
18421 if inlined != (member_inline_size <= 4) {
18422 return Err(fidl::Error::InvalidInlineBitInEnvelope);
18423 }
18424 let inner_offset;
18425 let mut inner_depth = depth.clone();
18426 if inlined {
18427 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
18428 inner_offset = next_offset;
18429 } else {
18430 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
18431 inner_depth.increment()?;
18432 }
18433 let val_ref = self.ip6_addr.get_or_insert_with(|| {
18434 fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D)
18435 });
18436 fidl::decode!(
18437 fidl::encoding::UnboundedVector<u8>,
18438 D,
18439 val_ref,
18440 decoder,
18441 inner_offset,
18442 inner_depth
18443 )?;
18444 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
18445 {
18446 return Err(fidl::Error::InvalidNumBytesInEnvelope);
18447 }
18448 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
18449 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
18450 }
18451 }
18452
18453 next_offset += envelope_size;
18454 _next_ordinal_to_read += 1;
18455 if next_offset >= end_offset {
18456 return Ok(());
18457 }
18458
18459 while _next_ordinal_to_read < 4 {
18461 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
18462 _next_ordinal_to_read += 1;
18463 next_offset += envelope_size;
18464 }
18465
18466 let next_out_of_line = decoder.next_out_of_line();
18467 let handles_before = decoder.remaining_handles();
18468 if let Some((inlined, num_bytes, num_handles)) =
18469 fidl::encoding::decode_envelope_header(decoder, next_offset)?
18470 {
18471 let member_inline_size =
18472 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
18473 if inlined != (member_inline_size <= 4) {
18474 return Err(fidl::Error::InvalidInlineBitInEnvelope);
18475 }
18476 let inner_offset;
18477 let mut inner_depth = depth.clone();
18478 if inlined {
18479 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
18480 inner_offset = next_offset;
18481 } else {
18482 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
18483 inner_depth.increment()?;
18484 }
18485 let val_ref =
18486 self.remaining_time_ms.get_or_insert_with(|| fidl::new_empty!(u32, D));
18487 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
18488 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
18489 {
18490 return Err(fidl::Error::InvalidNumBytesInEnvelope);
18491 }
18492 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
18493 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
18494 }
18495 }
18496
18497 next_offset += envelope_size;
18498 _next_ordinal_to_read += 1;
18499 if next_offset >= end_offset {
18500 return Ok(());
18501 }
18502
18503 while _next_ordinal_to_read < 5 {
18505 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
18506 _next_ordinal_to_read += 1;
18507 next_offset += envelope_size;
18508 }
18509
18510 let next_out_of_line = decoder.next_out_of_line();
18511 let handles_before = decoder.remaining_handles();
18512 if let Some((inlined, num_bytes, num_handles)) =
18513 fidl::encoding::decode_envelope_header(decoder, next_offset)?
18514 {
18515 let member_inline_size =
18516 <Nat64ProtocolCounters as fidl::encoding::TypeMarker>::inline_size(
18517 decoder.context,
18518 );
18519 if inlined != (member_inline_size <= 4) {
18520 return Err(fidl::Error::InvalidInlineBitInEnvelope);
18521 }
18522 let inner_offset;
18523 let mut inner_depth = depth.clone();
18524 if inlined {
18525 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
18526 inner_offset = next_offset;
18527 } else {
18528 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
18529 inner_depth.increment()?;
18530 }
18531 let val_ref =
18532 self.counters.get_or_insert_with(|| fidl::new_empty!(Nat64ProtocolCounters, D));
18533 fidl::decode!(
18534 Nat64ProtocolCounters,
18535 D,
18536 val_ref,
18537 decoder,
18538 inner_offset,
18539 inner_depth
18540 )?;
18541 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
18542 {
18543 return Err(fidl::Error::InvalidNumBytesInEnvelope);
18544 }
18545 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
18546 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
18547 }
18548 }
18549
18550 next_offset += envelope_size;
18551
18552 while next_offset < end_offset {
18554 _next_ordinal_to_read += 1;
18555 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
18556 next_offset += envelope_size;
18557 }
18558
18559 Ok(())
18560 }
18561 }
18562
18563 impl Nat64PacketCounters {
18564 #[inline(always)]
18565 fn max_ordinal_present(&self) -> u64 {
18566 if let Some(_) = self.ipv6_to_ipv4_packets {
18567 return 2;
18568 }
18569 if let Some(_) = self.ipv4_to_ipv6_packets {
18570 return 1;
18571 }
18572 0
18573 }
18574 }
18575
18576 impl fidl::encoding::ValueTypeMarker for Nat64PacketCounters {
18577 type Borrowed<'a> = &'a Self;
18578 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
18579 value
18580 }
18581 }
18582
18583 unsafe impl fidl::encoding::TypeMarker for Nat64PacketCounters {
18584 type Owned = Self;
18585
18586 #[inline(always)]
18587 fn inline_align(_context: fidl::encoding::Context) -> usize {
18588 8
18589 }
18590
18591 #[inline(always)]
18592 fn inline_size(_context: fidl::encoding::Context) -> usize {
18593 16
18594 }
18595 }
18596
18597 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Nat64PacketCounters, D>
18598 for &Nat64PacketCounters
18599 {
18600 unsafe fn encode(
18601 self,
18602 encoder: &mut fidl::encoding::Encoder<'_, D>,
18603 offset: usize,
18604 mut depth: fidl::encoding::Depth,
18605 ) -> fidl::Result<()> {
18606 encoder.debug_check_bounds::<Nat64PacketCounters>(offset);
18607 let max_ordinal: u64 = self.max_ordinal_present();
18609 encoder.write_num(max_ordinal, offset);
18610 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
18611 if max_ordinal == 0 {
18613 return Ok(());
18614 }
18615 depth.increment()?;
18616 let envelope_size = 8;
18617 let bytes_len = max_ordinal as usize * envelope_size;
18618 #[allow(unused_variables)]
18619 let offset = encoder.out_of_line_offset(bytes_len);
18620 let mut _prev_end_offset: usize = 0;
18621 if 1 > max_ordinal {
18622 return Ok(());
18623 }
18624
18625 let cur_offset: usize = (1 - 1) * envelope_size;
18628
18629 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
18631
18632 fidl::encoding::encode_in_envelope_optional::<u64, D>(
18637 self.ipv4_to_ipv6_packets
18638 .as_ref()
18639 .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
18640 encoder,
18641 offset + cur_offset,
18642 depth,
18643 )?;
18644
18645 _prev_end_offset = cur_offset + envelope_size;
18646 if 2 > max_ordinal {
18647 return Ok(());
18648 }
18649
18650 let cur_offset: usize = (2 - 1) * envelope_size;
18653
18654 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
18656
18657 fidl::encoding::encode_in_envelope_optional::<u64, D>(
18662 self.ipv6_to_ipv4_packets
18663 .as_ref()
18664 .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
18665 encoder,
18666 offset + cur_offset,
18667 depth,
18668 )?;
18669
18670 _prev_end_offset = cur_offset + envelope_size;
18671
18672 Ok(())
18673 }
18674 }
18675
18676 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Nat64PacketCounters {
18677 #[inline(always)]
18678 fn new_empty() -> Self {
18679 Self::default()
18680 }
18681
18682 unsafe fn decode(
18683 &mut self,
18684 decoder: &mut fidl::encoding::Decoder<'_, D>,
18685 offset: usize,
18686 mut depth: fidl::encoding::Depth,
18687 ) -> fidl::Result<()> {
18688 decoder.debug_check_bounds::<Self>(offset);
18689 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
18690 None => return Err(fidl::Error::NotNullable),
18691 Some(len) => len,
18692 };
18693 if len == 0 {
18695 return Ok(());
18696 };
18697 depth.increment()?;
18698 let envelope_size = 8;
18699 let bytes_len = len * envelope_size;
18700 let offset = decoder.out_of_line_offset(bytes_len)?;
18701 let mut _next_ordinal_to_read = 0;
18703 let mut next_offset = offset;
18704 let end_offset = offset + bytes_len;
18705 _next_ordinal_to_read += 1;
18706 if next_offset >= end_offset {
18707 return Ok(());
18708 }
18709
18710 while _next_ordinal_to_read < 1 {
18712 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
18713 _next_ordinal_to_read += 1;
18714 next_offset += envelope_size;
18715 }
18716
18717 let next_out_of_line = decoder.next_out_of_line();
18718 let handles_before = decoder.remaining_handles();
18719 if let Some((inlined, num_bytes, num_handles)) =
18720 fidl::encoding::decode_envelope_header(decoder, next_offset)?
18721 {
18722 let member_inline_size =
18723 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
18724 if inlined != (member_inline_size <= 4) {
18725 return Err(fidl::Error::InvalidInlineBitInEnvelope);
18726 }
18727 let inner_offset;
18728 let mut inner_depth = depth.clone();
18729 if inlined {
18730 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
18731 inner_offset = next_offset;
18732 } else {
18733 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
18734 inner_depth.increment()?;
18735 }
18736 let val_ref =
18737 self.ipv4_to_ipv6_packets.get_or_insert_with(|| fidl::new_empty!(u64, D));
18738 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
18739 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
18740 {
18741 return Err(fidl::Error::InvalidNumBytesInEnvelope);
18742 }
18743 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
18744 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
18745 }
18746 }
18747
18748 next_offset += envelope_size;
18749 _next_ordinal_to_read += 1;
18750 if next_offset >= end_offset {
18751 return Ok(());
18752 }
18753
18754 while _next_ordinal_to_read < 2 {
18756 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
18757 _next_ordinal_to_read += 1;
18758 next_offset += envelope_size;
18759 }
18760
18761 let next_out_of_line = decoder.next_out_of_line();
18762 let handles_before = decoder.remaining_handles();
18763 if let Some((inlined, num_bytes, num_handles)) =
18764 fidl::encoding::decode_envelope_header(decoder, next_offset)?
18765 {
18766 let member_inline_size =
18767 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
18768 if inlined != (member_inline_size <= 4) {
18769 return Err(fidl::Error::InvalidInlineBitInEnvelope);
18770 }
18771 let inner_offset;
18772 let mut inner_depth = depth.clone();
18773 if inlined {
18774 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
18775 inner_offset = next_offset;
18776 } else {
18777 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
18778 inner_depth.increment()?;
18779 }
18780 let val_ref =
18781 self.ipv6_to_ipv4_packets.get_or_insert_with(|| fidl::new_empty!(u64, D));
18782 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
18783 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
18784 {
18785 return Err(fidl::Error::InvalidNumBytesInEnvelope);
18786 }
18787 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
18788 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
18789 }
18790 }
18791
18792 next_offset += envelope_size;
18793
18794 while next_offset < end_offset {
18796 _next_ordinal_to_read += 1;
18797 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
18798 next_offset += envelope_size;
18799 }
18800
18801 Ok(())
18802 }
18803 }
18804
18805 impl Nat64ProtocolCounters {
18806 #[inline(always)]
18807 fn max_ordinal_present(&self) -> u64 {
18808 if let Some(_) = self.total {
18809 return 4;
18810 }
18811 if let Some(_) = self.icmp {
18812 return 3;
18813 }
18814 if let Some(_) = self.udp {
18815 return 2;
18816 }
18817 if let Some(_) = self.tcp {
18818 return 1;
18819 }
18820 0
18821 }
18822 }
18823
18824 impl fidl::encoding::ValueTypeMarker for Nat64ProtocolCounters {
18825 type Borrowed<'a> = &'a Self;
18826 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
18827 value
18828 }
18829 }
18830
18831 unsafe impl fidl::encoding::TypeMarker for Nat64ProtocolCounters {
18832 type Owned = Self;
18833
18834 #[inline(always)]
18835 fn inline_align(_context: fidl::encoding::Context) -> usize {
18836 8
18837 }
18838
18839 #[inline(always)]
18840 fn inline_size(_context: fidl::encoding::Context) -> usize {
18841 16
18842 }
18843 }
18844
18845 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Nat64ProtocolCounters, D>
18846 for &Nat64ProtocolCounters
18847 {
18848 unsafe fn encode(
18849 self,
18850 encoder: &mut fidl::encoding::Encoder<'_, D>,
18851 offset: usize,
18852 mut depth: fidl::encoding::Depth,
18853 ) -> fidl::Result<()> {
18854 encoder.debug_check_bounds::<Nat64ProtocolCounters>(offset);
18855 let max_ordinal: u64 = self.max_ordinal_present();
18857 encoder.write_num(max_ordinal, offset);
18858 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
18859 if max_ordinal == 0 {
18861 return Ok(());
18862 }
18863 depth.increment()?;
18864 let envelope_size = 8;
18865 let bytes_len = max_ordinal as usize * envelope_size;
18866 #[allow(unused_variables)]
18867 let offset = encoder.out_of_line_offset(bytes_len);
18868 let mut _prev_end_offset: usize = 0;
18869 if 1 > max_ordinal {
18870 return Ok(());
18871 }
18872
18873 let cur_offset: usize = (1 - 1) * envelope_size;
18876
18877 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
18879
18880 fidl::encoding::encode_in_envelope_optional::<Nat64TrafficCounters, D>(
18885 self.tcp
18886 .as_ref()
18887 .map(<Nat64TrafficCounters as fidl::encoding::ValueTypeMarker>::borrow),
18888 encoder,
18889 offset + cur_offset,
18890 depth,
18891 )?;
18892
18893 _prev_end_offset = cur_offset + envelope_size;
18894 if 2 > max_ordinal {
18895 return Ok(());
18896 }
18897
18898 let cur_offset: usize = (2 - 1) * envelope_size;
18901
18902 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
18904
18905 fidl::encoding::encode_in_envelope_optional::<Nat64TrafficCounters, D>(
18910 self.udp
18911 .as_ref()
18912 .map(<Nat64TrafficCounters as fidl::encoding::ValueTypeMarker>::borrow),
18913 encoder,
18914 offset + cur_offset,
18915 depth,
18916 )?;
18917
18918 _prev_end_offset = cur_offset + envelope_size;
18919 if 3 > max_ordinal {
18920 return Ok(());
18921 }
18922
18923 let cur_offset: usize = (3 - 1) * envelope_size;
18926
18927 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
18929
18930 fidl::encoding::encode_in_envelope_optional::<Nat64TrafficCounters, D>(
18935 self.icmp
18936 .as_ref()
18937 .map(<Nat64TrafficCounters as fidl::encoding::ValueTypeMarker>::borrow),
18938 encoder,
18939 offset + cur_offset,
18940 depth,
18941 )?;
18942
18943 _prev_end_offset = cur_offset + envelope_size;
18944 if 4 > max_ordinal {
18945 return Ok(());
18946 }
18947
18948 let cur_offset: usize = (4 - 1) * envelope_size;
18951
18952 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
18954
18955 fidl::encoding::encode_in_envelope_optional::<Nat64TrafficCounters, D>(
18960 self.total
18961 .as_ref()
18962 .map(<Nat64TrafficCounters as fidl::encoding::ValueTypeMarker>::borrow),
18963 encoder,
18964 offset + cur_offset,
18965 depth,
18966 )?;
18967
18968 _prev_end_offset = cur_offset + envelope_size;
18969
18970 Ok(())
18971 }
18972 }
18973
18974 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Nat64ProtocolCounters {
18975 #[inline(always)]
18976 fn new_empty() -> Self {
18977 Self::default()
18978 }
18979
18980 unsafe fn decode(
18981 &mut self,
18982 decoder: &mut fidl::encoding::Decoder<'_, D>,
18983 offset: usize,
18984 mut depth: fidl::encoding::Depth,
18985 ) -> fidl::Result<()> {
18986 decoder.debug_check_bounds::<Self>(offset);
18987 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
18988 None => return Err(fidl::Error::NotNullable),
18989 Some(len) => len,
18990 };
18991 if len == 0 {
18993 return Ok(());
18994 };
18995 depth.increment()?;
18996 let envelope_size = 8;
18997 let bytes_len = len * envelope_size;
18998 let offset = decoder.out_of_line_offset(bytes_len)?;
18999 let mut _next_ordinal_to_read = 0;
19001 let mut next_offset = offset;
19002 let end_offset = offset + bytes_len;
19003 _next_ordinal_to_read += 1;
19004 if next_offset >= end_offset {
19005 return Ok(());
19006 }
19007
19008 while _next_ordinal_to_read < 1 {
19010 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
19011 _next_ordinal_to_read += 1;
19012 next_offset += envelope_size;
19013 }
19014
19015 let next_out_of_line = decoder.next_out_of_line();
19016 let handles_before = decoder.remaining_handles();
19017 if let Some((inlined, num_bytes, num_handles)) =
19018 fidl::encoding::decode_envelope_header(decoder, next_offset)?
19019 {
19020 let member_inline_size =
19021 <Nat64TrafficCounters as fidl::encoding::TypeMarker>::inline_size(
19022 decoder.context,
19023 );
19024 if inlined != (member_inline_size <= 4) {
19025 return Err(fidl::Error::InvalidInlineBitInEnvelope);
19026 }
19027 let inner_offset;
19028 let mut inner_depth = depth.clone();
19029 if inlined {
19030 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
19031 inner_offset = next_offset;
19032 } else {
19033 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
19034 inner_depth.increment()?;
19035 }
19036 let val_ref =
19037 self.tcp.get_or_insert_with(|| fidl::new_empty!(Nat64TrafficCounters, D));
19038 fidl::decode!(
19039 Nat64TrafficCounters,
19040 D,
19041 val_ref,
19042 decoder,
19043 inner_offset,
19044 inner_depth
19045 )?;
19046 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
19047 {
19048 return Err(fidl::Error::InvalidNumBytesInEnvelope);
19049 }
19050 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
19051 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
19052 }
19053 }
19054
19055 next_offset += envelope_size;
19056 _next_ordinal_to_read += 1;
19057 if next_offset >= end_offset {
19058 return Ok(());
19059 }
19060
19061 while _next_ordinal_to_read < 2 {
19063 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
19064 _next_ordinal_to_read += 1;
19065 next_offset += envelope_size;
19066 }
19067
19068 let next_out_of_line = decoder.next_out_of_line();
19069 let handles_before = decoder.remaining_handles();
19070 if let Some((inlined, num_bytes, num_handles)) =
19071 fidl::encoding::decode_envelope_header(decoder, next_offset)?
19072 {
19073 let member_inline_size =
19074 <Nat64TrafficCounters as fidl::encoding::TypeMarker>::inline_size(
19075 decoder.context,
19076 );
19077 if inlined != (member_inline_size <= 4) {
19078 return Err(fidl::Error::InvalidInlineBitInEnvelope);
19079 }
19080 let inner_offset;
19081 let mut inner_depth = depth.clone();
19082 if inlined {
19083 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
19084 inner_offset = next_offset;
19085 } else {
19086 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
19087 inner_depth.increment()?;
19088 }
19089 let val_ref =
19090 self.udp.get_or_insert_with(|| fidl::new_empty!(Nat64TrafficCounters, D));
19091 fidl::decode!(
19092 Nat64TrafficCounters,
19093 D,
19094 val_ref,
19095 decoder,
19096 inner_offset,
19097 inner_depth
19098 )?;
19099 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
19100 {
19101 return Err(fidl::Error::InvalidNumBytesInEnvelope);
19102 }
19103 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
19104 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
19105 }
19106 }
19107
19108 next_offset += envelope_size;
19109 _next_ordinal_to_read += 1;
19110 if next_offset >= end_offset {
19111 return Ok(());
19112 }
19113
19114 while _next_ordinal_to_read < 3 {
19116 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
19117 _next_ordinal_to_read += 1;
19118 next_offset += envelope_size;
19119 }
19120
19121 let next_out_of_line = decoder.next_out_of_line();
19122 let handles_before = decoder.remaining_handles();
19123 if let Some((inlined, num_bytes, num_handles)) =
19124 fidl::encoding::decode_envelope_header(decoder, next_offset)?
19125 {
19126 let member_inline_size =
19127 <Nat64TrafficCounters as fidl::encoding::TypeMarker>::inline_size(
19128 decoder.context,
19129 );
19130 if inlined != (member_inline_size <= 4) {
19131 return Err(fidl::Error::InvalidInlineBitInEnvelope);
19132 }
19133 let inner_offset;
19134 let mut inner_depth = depth.clone();
19135 if inlined {
19136 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
19137 inner_offset = next_offset;
19138 } else {
19139 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
19140 inner_depth.increment()?;
19141 }
19142 let val_ref =
19143 self.icmp.get_or_insert_with(|| fidl::new_empty!(Nat64TrafficCounters, D));
19144 fidl::decode!(
19145 Nat64TrafficCounters,
19146 D,
19147 val_ref,
19148 decoder,
19149 inner_offset,
19150 inner_depth
19151 )?;
19152 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
19153 {
19154 return Err(fidl::Error::InvalidNumBytesInEnvelope);
19155 }
19156 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
19157 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
19158 }
19159 }
19160
19161 next_offset += envelope_size;
19162 _next_ordinal_to_read += 1;
19163 if next_offset >= end_offset {
19164 return Ok(());
19165 }
19166
19167 while _next_ordinal_to_read < 4 {
19169 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
19170 _next_ordinal_to_read += 1;
19171 next_offset += envelope_size;
19172 }
19173
19174 let next_out_of_line = decoder.next_out_of_line();
19175 let handles_before = decoder.remaining_handles();
19176 if let Some((inlined, num_bytes, num_handles)) =
19177 fidl::encoding::decode_envelope_header(decoder, next_offset)?
19178 {
19179 let member_inline_size =
19180 <Nat64TrafficCounters as fidl::encoding::TypeMarker>::inline_size(
19181 decoder.context,
19182 );
19183 if inlined != (member_inline_size <= 4) {
19184 return Err(fidl::Error::InvalidInlineBitInEnvelope);
19185 }
19186 let inner_offset;
19187 let mut inner_depth = depth.clone();
19188 if inlined {
19189 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
19190 inner_offset = next_offset;
19191 } else {
19192 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
19193 inner_depth.increment()?;
19194 }
19195 let val_ref =
19196 self.total.get_or_insert_with(|| fidl::new_empty!(Nat64TrafficCounters, D));
19197 fidl::decode!(
19198 Nat64TrafficCounters,
19199 D,
19200 val_ref,
19201 decoder,
19202 inner_offset,
19203 inner_depth
19204 )?;
19205 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
19206 {
19207 return Err(fidl::Error::InvalidNumBytesInEnvelope);
19208 }
19209 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
19210 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
19211 }
19212 }
19213
19214 next_offset += envelope_size;
19215
19216 while next_offset < end_offset {
19218 _next_ordinal_to_read += 1;
19219 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
19220 next_offset += envelope_size;
19221 }
19222
19223 Ok(())
19224 }
19225 }
19226
19227 impl Nat64TrafficCounters {
19228 #[inline(always)]
19229 fn max_ordinal_present(&self) -> u64 {
19230 if let Some(_) = self.ipv6_to_ipv4_bytes {
19231 return 4;
19232 }
19233 if let Some(_) = self.ipv6_to_ipv4_packets {
19234 return 3;
19235 }
19236 if let Some(_) = self.ipv4_to_ipv6_bytes {
19237 return 2;
19238 }
19239 if let Some(_) = self.ipv4_to_ipv6_packets {
19240 return 1;
19241 }
19242 0
19243 }
19244 }
19245
19246 impl fidl::encoding::ValueTypeMarker for Nat64TrafficCounters {
19247 type Borrowed<'a> = &'a Self;
19248 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
19249 value
19250 }
19251 }
19252
19253 unsafe impl fidl::encoding::TypeMarker for Nat64TrafficCounters {
19254 type Owned = Self;
19255
19256 #[inline(always)]
19257 fn inline_align(_context: fidl::encoding::Context) -> usize {
19258 8
19259 }
19260
19261 #[inline(always)]
19262 fn inline_size(_context: fidl::encoding::Context) -> usize {
19263 16
19264 }
19265 }
19266
19267 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Nat64TrafficCounters, D>
19268 for &Nat64TrafficCounters
19269 {
19270 unsafe fn encode(
19271 self,
19272 encoder: &mut fidl::encoding::Encoder<'_, D>,
19273 offset: usize,
19274 mut depth: fidl::encoding::Depth,
19275 ) -> fidl::Result<()> {
19276 encoder.debug_check_bounds::<Nat64TrafficCounters>(offset);
19277 let max_ordinal: u64 = self.max_ordinal_present();
19279 encoder.write_num(max_ordinal, offset);
19280 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
19281 if max_ordinal == 0 {
19283 return Ok(());
19284 }
19285 depth.increment()?;
19286 let envelope_size = 8;
19287 let bytes_len = max_ordinal as usize * envelope_size;
19288 #[allow(unused_variables)]
19289 let offset = encoder.out_of_line_offset(bytes_len);
19290 let mut _prev_end_offset: usize = 0;
19291 if 1 > max_ordinal {
19292 return Ok(());
19293 }
19294
19295 let cur_offset: usize = (1 - 1) * envelope_size;
19298
19299 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
19301
19302 fidl::encoding::encode_in_envelope_optional::<u64, D>(
19307 self.ipv4_to_ipv6_packets
19308 .as_ref()
19309 .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
19310 encoder,
19311 offset + cur_offset,
19312 depth,
19313 )?;
19314
19315 _prev_end_offset = cur_offset + envelope_size;
19316 if 2 > max_ordinal {
19317 return Ok(());
19318 }
19319
19320 let cur_offset: usize = (2 - 1) * envelope_size;
19323
19324 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
19326
19327 fidl::encoding::encode_in_envelope_optional::<u64, D>(
19332 self.ipv4_to_ipv6_bytes
19333 .as_ref()
19334 .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
19335 encoder,
19336 offset + cur_offset,
19337 depth,
19338 )?;
19339
19340 _prev_end_offset = cur_offset + envelope_size;
19341 if 3 > max_ordinal {
19342 return Ok(());
19343 }
19344
19345 let cur_offset: usize = (3 - 1) * envelope_size;
19348
19349 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
19351
19352 fidl::encoding::encode_in_envelope_optional::<u64, D>(
19357 self.ipv6_to_ipv4_packets
19358 .as_ref()
19359 .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
19360 encoder,
19361 offset + cur_offset,
19362 depth,
19363 )?;
19364
19365 _prev_end_offset = cur_offset + envelope_size;
19366 if 4 > max_ordinal {
19367 return Ok(());
19368 }
19369
19370 let cur_offset: usize = (4 - 1) * envelope_size;
19373
19374 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
19376
19377 fidl::encoding::encode_in_envelope_optional::<u64, D>(
19382 self.ipv6_to_ipv4_bytes
19383 .as_ref()
19384 .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
19385 encoder,
19386 offset + cur_offset,
19387 depth,
19388 )?;
19389
19390 _prev_end_offset = cur_offset + envelope_size;
19391
19392 Ok(())
19393 }
19394 }
19395
19396 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Nat64TrafficCounters {
19397 #[inline(always)]
19398 fn new_empty() -> Self {
19399 Self::default()
19400 }
19401
19402 unsafe fn decode(
19403 &mut self,
19404 decoder: &mut fidl::encoding::Decoder<'_, D>,
19405 offset: usize,
19406 mut depth: fidl::encoding::Depth,
19407 ) -> fidl::Result<()> {
19408 decoder.debug_check_bounds::<Self>(offset);
19409 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
19410 None => return Err(fidl::Error::NotNullable),
19411 Some(len) => len,
19412 };
19413 if len == 0 {
19415 return Ok(());
19416 };
19417 depth.increment()?;
19418 let envelope_size = 8;
19419 let bytes_len = len * envelope_size;
19420 let offset = decoder.out_of_line_offset(bytes_len)?;
19421 let mut _next_ordinal_to_read = 0;
19423 let mut next_offset = offset;
19424 let end_offset = offset + bytes_len;
19425 _next_ordinal_to_read += 1;
19426 if next_offset >= end_offset {
19427 return Ok(());
19428 }
19429
19430 while _next_ordinal_to_read < 1 {
19432 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
19433 _next_ordinal_to_read += 1;
19434 next_offset += envelope_size;
19435 }
19436
19437 let next_out_of_line = decoder.next_out_of_line();
19438 let handles_before = decoder.remaining_handles();
19439 if let Some((inlined, num_bytes, num_handles)) =
19440 fidl::encoding::decode_envelope_header(decoder, next_offset)?
19441 {
19442 let member_inline_size =
19443 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
19444 if inlined != (member_inline_size <= 4) {
19445 return Err(fidl::Error::InvalidInlineBitInEnvelope);
19446 }
19447 let inner_offset;
19448 let mut inner_depth = depth.clone();
19449 if inlined {
19450 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
19451 inner_offset = next_offset;
19452 } else {
19453 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
19454 inner_depth.increment()?;
19455 }
19456 let val_ref =
19457 self.ipv4_to_ipv6_packets.get_or_insert_with(|| fidl::new_empty!(u64, D));
19458 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
19459 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
19460 {
19461 return Err(fidl::Error::InvalidNumBytesInEnvelope);
19462 }
19463 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
19464 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
19465 }
19466 }
19467
19468 next_offset += envelope_size;
19469 _next_ordinal_to_read += 1;
19470 if next_offset >= end_offset {
19471 return Ok(());
19472 }
19473
19474 while _next_ordinal_to_read < 2 {
19476 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
19477 _next_ordinal_to_read += 1;
19478 next_offset += envelope_size;
19479 }
19480
19481 let next_out_of_line = decoder.next_out_of_line();
19482 let handles_before = decoder.remaining_handles();
19483 if let Some((inlined, num_bytes, num_handles)) =
19484 fidl::encoding::decode_envelope_header(decoder, next_offset)?
19485 {
19486 let member_inline_size =
19487 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
19488 if inlined != (member_inline_size <= 4) {
19489 return Err(fidl::Error::InvalidInlineBitInEnvelope);
19490 }
19491 let inner_offset;
19492 let mut inner_depth = depth.clone();
19493 if inlined {
19494 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
19495 inner_offset = next_offset;
19496 } else {
19497 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
19498 inner_depth.increment()?;
19499 }
19500 let val_ref =
19501 self.ipv4_to_ipv6_bytes.get_or_insert_with(|| fidl::new_empty!(u64, D));
19502 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
19503 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
19504 {
19505 return Err(fidl::Error::InvalidNumBytesInEnvelope);
19506 }
19507 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
19508 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
19509 }
19510 }
19511
19512 next_offset += envelope_size;
19513 _next_ordinal_to_read += 1;
19514 if next_offset >= end_offset {
19515 return Ok(());
19516 }
19517
19518 while _next_ordinal_to_read < 3 {
19520 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
19521 _next_ordinal_to_read += 1;
19522 next_offset += envelope_size;
19523 }
19524
19525 let next_out_of_line = decoder.next_out_of_line();
19526 let handles_before = decoder.remaining_handles();
19527 if let Some((inlined, num_bytes, num_handles)) =
19528 fidl::encoding::decode_envelope_header(decoder, next_offset)?
19529 {
19530 let member_inline_size =
19531 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
19532 if inlined != (member_inline_size <= 4) {
19533 return Err(fidl::Error::InvalidInlineBitInEnvelope);
19534 }
19535 let inner_offset;
19536 let mut inner_depth = depth.clone();
19537 if inlined {
19538 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
19539 inner_offset = next_offset;
19540 } else {
19541 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
19542 inner_depth.increment()?;
19543 }
19544 let val_ref =
19545 self.ipv6_to_ipv4_packets.get_or_insert_with(|| fidl::new_empty!(u64, D));
19546 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
19547 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
19548 {
19549 return Err(fidl::Error::InvalidNumBytesInEnvelope);
19550 }
19551 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
19552 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
19553 }
19554 }
19555
19556 next_offset += envelope_size;
19557 _next_ordinal_to_read += 1;
19558 if next_offset >= end_offset {
19559 return Ok(());
19560 }
19561
19562 while _next_ordinal_to_read < 4 {
19564 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
19565 _next_ordinal_to_read += 1;
19566 next_offset += envelope_size;
19567 }
19568
19569 let next_out_of_line = decoder.next_out_of_line();
19570 let handles_before = decoder.remaining_handles();
19571 if let Some((inlined, num_bytes, num_handles)) =
19572 fidl::encoding::decode_envelope_header(decoder, next_offset)?
19573 {
19574 let member_inline_size =
19575 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
19576 if inlined != (member_inline_size <= 4) {
19577 return Err(fidl::Error::InvalidInlineBitInEnvelope);
19578 }
19579 let inner_offset;
19580 let mut inner_depth = depth.clone();
19581 if inlined {
19582 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
19583 inner_offset = next_offset;
19584 } else {
19585 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
19586 inner_depth.increment()?;
19587 }
19588 let val_ref =
19589 self.ipv6_to_ipv4_bytes.get_or_insert_with(|| fidl::new_empty!(u64, D));
19590 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
19591 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
19592 {
19593 return Err(fidl::Error::InvalidNumBytesInEnvelope);
19594 }
19595 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
19596 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
19597 }
19598 }
19599
19600 next_offset += envelope_size;
19601
19602 while next_offset < end_offset {
19604 _next_ordinal_to_read += 1;
19605 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
19606 next_offset += envelope_size;
19607 }
19608
19609 Ok(())
19610 }
19611 }
19612
19613 impl NetifAddress {
19614 #[inline(always)]
19615 fn max_ordinal_present(&self) -> u64 {
19616 if let Some(_) = self.valid {
19617 return 5;
19618 }
19619 if let Some(_) = self.preferred {
19620 return 4;
19621 }
19622 if let Some(_) = self.origin {
19623 return 3;
19624 }
19625 if let Some(_) = self.prefix_length {
19626 return 2;
19627 }
19628 if let Some(_) = self.address {
19629 return 1;
19630 }
19631 0
19632 }
19633 }
19634
19635 impl fidl::encoding::ValueTypeMarker for NetifAddress {
19636 type Borrowed<'a> = &'a Self;
19637 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
19638 value
19639 }
19640 }
19641
19642 unsafe impl fidl::encoding::TypeMarker for NetifAddress {
19643 type Owned = Self;
19644
19645 #[inline(always)]
19646 fn inline_align(_context: fidl::encoding::Context) -> usize {
19647 8
19648 }
19649
19650 #[inline(always)]
19651 fn inline_size(_context: fidl::encoding::Context) -> usize {
19652 16
19653 }
19654 }
19655
19656 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<NetifAddress, D>
19657 for &NetifAddress
19658 {
19659 unsafe fn encode(
19660 self,
19661 encoder: &mut fidl::encoding::Encoder<'_, D>,
19662 offset: usize,
19663 mut depth: fidl::encoding::Depth,
19664 ) -> fidl::Result<()> {
19665 encoder.debug_check_bounds::<NetifAddress>(offset);
19666 let max_ordinal: u64 = self.max_ordinal_present();
19668 encoder.write_num(max_ordinal, offset);
19669 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
19670 if max_ordinal == 0 {
19672 return Ok(());
19673 }
19674 depth.increment()?;
19675 let envelope_size = 8;
19676 let bytes_len = max_ordinal as usize * envelope_size;
19677 #[allow(unused_variables)]
19678 let offset = encoder.out_of_line_offset(bytes_len);
19679 let mut _prev_end_offset: usize = 0;
19680 if 1 > max_ordinal {
19681 return Ok(());
19682 }
19683
19684 let cur_offset: usize = (1 - 1) * envelope_size;
19687
19688 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
19690
19691 fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_net_common::Ipv6Address, D>(
19696 self.address.as_ref().map(<fidl_fuchsia_net_common::Ipv6Address as fidl::encoding::ValueTypeMarker>::borrow),
19697 encoder, offset + cur_offset, depth
19698 )?;
19699
19700 _prev_end_offset = cur_offset + envelope_size;
19701 if 2 > max_ordinal {
19702 return Ok(());
19703 }
19704
19705 let cur_offset: usize = (2 - 1) * envelope_size;
19708
19709 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
19711
19712 fidl::encoding::encode_in_envelope_optional::<u8, D>(
19717 self.prefix_length.as_ref().map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
19718 encoder,
19719 offset + cur_offset,
19720 depth,
19721 )?;
19722
19723 _prev_end_offset = cur_offset + envelope_size;
19724 if 3 > max_ordinal {
19725 return Ok(());
19726 }
19727
19728 let cur_offset: usize = (3 - 1) * envelope_size;
19731
19732 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
19734
19735 fidl::encoding::encode_in_envelope_optional::<AddressOrigin, D>(
19740 self.origin
19741 .as_ref()
19742 .map(<AddressOrigin as fidl::encoding::ValueTypeMarker>::borrow),
19743 encoder,
19744 offset + cur_offset,
19745 depth,
19746 )?;
19747
19748 _prev_end_offset = cur_offset + envelope_size;
19749 if 4 > max_ordinal {
19750 return Ok(());
19751 }
19752
19753 let cur_offset: usize = (4 - 1) * envelope_size;
19756
19757 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
19759
19760 fidl::encoding::encode_in_envelope_optional::<bool, D>(
19765 self.preferred.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
19766 encoder,
19767 offset + cur_offset,
19768 depth,
19769 )?;
19770
19771 _prev_end_offset = cur_offset + envelope_size;
19772 if 5 > max_ordinal {
19773 return Ok(());
19774 }
19775
19776 let cur_offset: usize = (5 - 1) * envelope_size;
19779
19780 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
19782
19783 fidl::encoding::encode_in_envelope_optional::<bool, D>(
19788 self.valid.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
19789 encoder,
19790 offset + cur_offset,
19791 depth,
19792 )?;
19793
19794 _prev_end_offset = cur_offset + envelope_size;
19795
19796 Ok(())
19797 }
19798 }
19799
19800 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for NetifAddress {
19801 #[inline(always)]
19802 fn new_empty() -> Self {
19803 Self::default()
19804 }
19805
19806 unsafe fn decode(
19807 &mut self,
19808 decoder: &mut fidl::encoding::Decoder<'_, D>,
19809 offset: usize,
19810 mut depth: fidl::encoding::Depth,
19811 ) -> fidl::Result<()> {
19812 decoder.debug_check_bounds::<Self>(offset);
19813 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
19814 None => return Err(fidl::Error::NotNullable),
19815 Some(len) => len,
19816 };
19817 if len == 0 {
19819 return Ok(());
19820 };
19821 depth.increment()?;
19822 let envelope_size = 8;
19823 let bytes_len = len * envelope_size;
19824 let offset = decoder.out_of_line_offset(bytes_len)?;
19825 let mut _next_ordinal_to_read = 0;
19827 let mut next_offset = offset;
19828 let end_offset = offset + bytes_len;
19829 _next_ordinal_to_read += 1;
19830 if next_offset >= end_offset {
19831 return Ok(());
19832 }
19833
19834 while _next_ordinal_to_read < 1 {
19836 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
19837 _next_ordinal_to_read += 1;
19838 next_offset += envelope_size;
19839 }
19840
19841 let next_out_of_line = decoder.next_out_of_line();
19842 let handles_before = decoder.remaining_handles();
19843 if let Some((inlined, num_bytes, num_handles)) =
19844 fidl::encoding::decode_envelope_header(decoder, next_offset)?
19845 {
19846 let member_inline_size = <fidl_fuchsia_net_common::Ipv6Address as fidl::encoding::TypeMarker>::inline_size(decoder.context);
19847 if inlined != (member_inline_size <= 4) {
19848 return Err(fidl::Error::InvalidInlineBitInEnvelope);
19849 }
19850 let inner_offset;
19851 let mut inner_depth = depth.clone();
19852 if inlined {
19853 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
19854 inner_offset = next_offset;
19855 } else {
19856 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
19857 inner_depth.increment()?;
19858 }
19859 let val_ref = self.address.get_or_insert_with(|| {
19860 fidl::new_empty!(fidl_fuchsia_net_common::Ipv6Address, D)
19861 });
19862 fidl::decode!(
19863 fidl_fuchsia_net_common::Ipv6Address,
19864 D,
19865 val_ref,
19866 decoder,
19867 inner_offset,
19868 inner_depth
19869 )?;
19870 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
19871 {
19872 return Err(fidl::Error::InvalidNumBytesInEnvelope);
19873 }
19874 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
19875 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
19876 }
19877 }
19878
19879 next_offset += envelope_size;
19880 _next_ordinal_to_read += 1;
19881 if next_offset >= end_offset {
19882 return Ok(());
19883 }
19884
19885 while _next_ordinal_to_read < 2 {
19887 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
19888 _next_ordinal_to_read += 1;
19889 next_offset += envelope_size;
19890 }
19891
19892 let next_out_of_line = decoder.next_out_of_line();
19893 let handles_before = decoder.remaining_handles();
19894 if let Some((inlined, num_bytes, num_handles)) =
19895 fidl::encoding::decode_envelope_header(decoder, next_offset)?
19896 {
19897 let member_inline_size =
19898 <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
19899 if inlined != (member_inline_size <= 4) {
19900 return Err(fidl::Error::InvalidInlineBitInEnvelope);
19901 }
19902 let inner_offset;
19903 let mut inner_depth = depth.clone();
19904 if inlined {
19905 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
19906 inner_offset = next_offset;
19907 } else {
19908 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
19909 inner_depth.increment()?;
19910 }
19911 let val_ref = self.prefix_length.get_or_insert_with(|| fidl::new_empty!(u8, D));
19912 fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
19913 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
19914 {
19915 return Err(fidl::Error::InvalidNumBytesInEnvelope);
19916 }
19917 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
19918 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
19919 }
19920 }
19921
19922 next_offset += envelope_size;
19923 _next_ordinal_to_read += 1;
19924 if next_offset >= end_offset {
19925 return Ok(());
19926 }
19927
19928 while _next_ordinal_to_read < 3 {
19930 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
19931 _next_ordinal_to_read += 1;
19932 next_offset += envelope_size;
19933 }
19934
19935 let next_out_of_line = decoder.next_out_of_line();
19936 let handles_before = decoder.remaining_handles();
19937 if let Some((inlined, num_bytes, num_handles)) =
19938 fidl::encoding::decode_envelope_header(decoder, next_offset)?
19939 {
19940 let member_inline_size =
19941 <AddressOrigin as fidl::encoding::TypeMarker>::inline_size(decoder.context);
19942 if inlined != (member_inline_size <= 4) {
19943 return Err(fidl::Error::InvalidInlineBitInEnvelope);
19944 }
19945 let inner_offset;
19946 let mut inner_depth = depth.clone();
19947 if inlined {
19948 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
19949 inner_offset = next_offset;
19950 } else {
19951 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
19952 inner_depth.increment()?;
19953 }
19954 let val_ref = self.origin.get_or_insert_with(|| fidl::new_empty!(AddressOrigin, D));
19955 fidl::decode!(AddressOrigin, D, val_ref, decoder, inner_offset, inner_depth)?;
19956 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
19957 {
19958 return Err(fidl::Error::InvalidNumBytesInEnvelope);
19959 }
19960 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
19961 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
19962 }
19963 }
19964
19965 next_offset += envelope_size;
19966 _next_ordinal_to_read += 1;
19967 if next_offset >= end_offset {
19968 return Ok(());
19969 }
19970
19971 while _next_ordinal_to_read < 4 {
19973 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
19974 _next_ordinal_to_read += 1;
19975 next_offset += envelope_size;
19976 }
19977
19978 let next_out_of_line = decoder.next_out_of_line();
19979 let handles_before = decoder.remaining_handles();
19980 if let Some((inlined, num_bytes, num_handles)) =
19981 fidl::encoding::decode_envelope_header(decoder, next_offset)?
19982 {
19983 let member_inline_size =
19984 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
19985 if inlined != (member_inline_size <= 4) {
19986 return Err(fidl::Error::InvalidInlineBitInEnvelope);
19987 }
19988 let inner_offset;
19989 let mut inner_depth = depth.clone();
19990 if inlined {
19991 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
19992 inner_offset = next_offset;
19993 } else {
19994 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
19995 inner_depth.increment()?;
19996 }
19997 let val_ref = self.preferred.get_or_insert_with(|| fidl::new_empty!(bool, D));
19998 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
19999 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
20000 {
20001 return Err(fidl::Error::InvalidNumBytesInEnvelope);
20002 }
20003 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
20004 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
20005 }
20006 }
20007
20008 next_offset += envelope_size;
20009 _next_ordinal_to_read += 1;
20010 if next_offset >= end_offset {
20011 return Ok(());
20012 }
20013
20014 while _next_ordinal_to_read < 5 {
20016 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
20017 _next_ordinal_to_read += 1;
20018 next_offset += envelope_size;
20019 }
20020
20021 let next_out_of_line = decoder.next_out_of_line();
20022 let handles_before = decoder.remaining_handles();
20023 if let Some((inlined, num_bytes, num_handles)) =
20024 fidl::encoding::decode_envelope_header(decoder, next_offset)?
20025 {
20026 let member_inline_size =
20027 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
20028 if inlined != (member_inline_size <= 4) {
20029 return Err(fidl::Error::InvalidInlineBitInEnvelope);
20030 }
20031 let inner_offset;
20032 let mut inner_depth = depth.clone();
20033 if inlined {
20034 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
20035 inner_offset = next_offset;
20036 } else {
20037 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
20038 inner_depth.increment()?;
20039 }
20040 let val_ref = self.valid.get_or_insert_with(|| fidl::new_empty!(bool, D));
20041 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
20042 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
20043 {
20044 return Err(fidl::Error::InvalidNumBytesInEnvelope);
20045 }
20046 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
20047 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
20048 }
20049 }
20050
20051 next_offset += envelope_size;
20052
20053 while next_offset < end_offset {
20055 _next_ordinal_to_read += 1;
20056 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
20057 next_offset += envelope_size;
20058 }
20059
20060 Ok(())
20061 }
20062 }
20063
20064 impl NetworkData {
20065 #[inline(always)]
20066 fn max_ordinal_present(&self) -> u64 {
20067 if let Some(_) = self.commissioning_dataset {
20068 return 5;
20069 }
20070 if let Some(_) = self.contexts {
20071 return 4;
20072 }
20073 if let Some(_) = self.services {
20074 return 3;
20075 }
20076 if let Some(_) = self.external_routes {
20077 return 2;
20078 }
20079 if let Some(_) = self.on_mesh_prefixes {
20080 return 1;
20081 }
20082 0
20083 }
20084 }
20085
20086 impl fidl::encoding::ValueTypeMarker for NetworkData {
20087 type Borrowed<'a> = &'a Self;
20088 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
20089 value
20090 }
20091 }
20092
20093 unsafe impl fidl::encoding::TypeMarker for NetworkData {
20094 type Owned = Self;
20095
20096 #[inline(always)]
20097 fn inline_align(_context: fidl::encoding::Context) -> usize {
20098 8
20099 }
20100
20101 #[inline(always)]
20102 fn inline_size(_context: fidl::encoding::Context) -> usize {
20103 16
20104 }
20105 }
20106
20107 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<NetworkData, D>
20108 for &NetworkData
20109 {
20110 unsafe fn encode(
20111 self,
20112 encoder: &mut fidl::encoding::Encoder<'_, D>,
20113 offset: usize,
20114 mut depth: fidl::encoding::Depth,
20115 ) -> fidl::Result<()> {
20116 encoder.debug_check_bounds::<NetworkData>(offset);
20117 let max_ordinal: u64 = self.max_ordinal_present();
20119 encoder.write_num(max_ordinal, offset);
20120 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
20121 if max_ordinal == 0 {
20123 return Ok(());
20124 }
20125 depth.increment()?;
20126 let envelope_size = 8;
20127 let bytes_len = max_ordinal as usize * envelope_size;
20128 #[allow(unused_variables)]
20129 let offset = encoder.out_of_line_offset(bytes_len);
20130 let mut _prev_end_offset: usize = 0;
20131 if 1 > max_ordinal {
20132 return Ok(());
20133 }
20134
20135 let cur_offset: usize = (1 - 1) * envelope_size;
20138
20139 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
20141
20142 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<BorderRouterConfig, 32>, D>(
20147 self.on_mesh_prefixes.as_ref().map(<fidl::encoding::Vector<BorderRouterConfig, 32> as fidl::encoding::ValueTypeMarker>::borrow),
20148 encoder, offset + cur_offset, depth
20149 )?;
20150
20151 _prev_end_offset = cur_offset + envelope_size;
20152 if 2 > max_ordinal {
20153 return Ok(());
20154 }
20155
20156 let cur_offset: usize = (2 - 1) * envelope_size;
20159
20160 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
20162
20163 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<ExternalRouteConfig, 32>, D>(
20168 self.external_routes.as_ref().map(<fidl::encoding::Vector<ExternalRouteConfig, 32> as fidl::encoding::ValueTypeMarker>::borrow),
20169 encoder, offset + cur_offset, depth
20170 )?;
20171
20172 _prev_end_offset = cur_offset + envelope_size;
20173 if 3 > max_ordinal {
20174 return Ok(());
20175 }
20176
20177 let cur_offset: usize = (3 - 1) * envelope_size;
20180
20181 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
20183
20184 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<ServiceConfig, 32>, D>(
20189 self.services.as_ref().map(<fidl::encoding::Vector<ServiceConfig, 32> as fidl::encoding::ValueTypeMarker>::borrow),
20190 encoder, offset + cur_offset, depth
20191 )?;
20192
20193 _prev_end_offset = cur_offset + envelope_size;
20194 if 4 > max_ordinal {
20195 return Ok(());
20196 }
20197
20198 let cur_offset: usize = (4 - 1) * envelope_size;
20201
20202 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
20204
20205 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<LowpanContextInfo, 32>, D>(
20210 self.contexts.as_ref().map(<fidl::encoding::Vector<LowpanContextInfo, 32> as fidl::encoding::ValueTypeMarker>::borrow),
20211 encoder, offset + cur_offset, depth
20212 )?;
20213
20214 _prev_end_offset = cur_offset + envelope_size;
20215 if 5 > max_ordinal {
20216 return Ok(());
20217 }
20218
20219 let cur_offset: usize = (5 - 1) * envelope_size;
20222
20223 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
20225
20226 fidl::encoding::encode_in_envelope_optional::<CommissioningDataset, D>(
20231 self.commissioning_dataset
20232 .as_ref()
20233 .map(<CommissioningDataset as fidl::encoding::ValueTypeMarker>::borrow),
20234 encoder,
20235 offset + cur_offset,
20236 depth,
20237 )?;
20238
20239 _prev_end_offset = cur_offset + envelope_size;
20240
20241 Ok(())
20242 }
20243 }
20244
20245 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for NetworkData {
20246 #[inline(always)]
20247 fn new_empty() -> Self {
20248 Self::default()
20249 }
20250
20251 unsafe fn decode(
20252 &mut self,
20253 decoder: &mut fidl::encoding::Decoder<'_, D>,
20254 offset: usize,
20255 mut depth: fidl::encoding::Depth,
20256 ) -> fidl::Result<()> {
20257 decoder.debug_check_bounds::<Self>(offset);
20258 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
20259 None => return Err(fidl::Error::NotNullable),
20260 Some(len) => len,
20261 };
20262 if len == 0 {
20264 return Ok(());
20265 };
20266 depth.increment()?;
20267 let envelope_size = 8;
20268 let bytes_len = len * envelope_size;
20269 let offset = decoder.out_of_line_offset(bytes_len)?;
20270 let mut _next_ordinal_to_read = 0;
20272 let mut next_offset = offset;
20273 let end_offset = offset + bytes_len;
20274 _next_ordinal_to_read += 1;
20275 if next_offset >= end_offset {
20276 return Ok(());
20277 }
20278
20279 while _next_ordinal_to_read < 1 {
20281 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
20282 _next_ordinal_to_read += 1;
20283 next_offset += envelope_size;
20284 }
20285
20286 let next_out_of_line = decoder.next_out_of_line();
20287 let handles_before = decoder.remaining_handles();
20288 if let Some((inlined, num_bytes, num_handles)) =
20289 fidl::encoding::decode_envelope_header(decoder, next_offset)?
20290 {
20291 let member_inline_size = <fidl::encoding::Vector<BorderRouterConfig, 32> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
20292 if inlined != (member_inline_size <= 4) {
20293 return Err(fidl::Error::InvalidInlineBitInEnvelope);
20294 }
20295 let inner_offset;
20296 let mut inner_depth = depth.clone();
20297 if inlined {
20298 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
20299 inner_offset = next_offset;
20300 } else {
20301 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
20302 inner_depth.increment()?;
20303 }
20304 let val_ref = self.on_mesh_prefixes.get_or_insert_with(
20305 || fidl::new_empty!(fidl::encoding::Vector<BorderRouterConfig, 32>, D),
20306 );
20307 fidl::decode!(fidl::encoding::Vector<BorderRouterConfig, 32>, D, val_ref, decoder, inner_offset, inner_depth)?;
20308 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
20309 {
20310 return Err(fidl::Error::InvalidNumBytesInEnvelope);
20311 }
20312 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
20313 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
20314 }
20315 }
20316
20317 next_offset += envelope_size;
20318 _next_ordinal_to_read += 1;
20319 if next_offset >= end_offset {
20320 return Ok(());
20321 }
20322
20323 while _next_ordinal_to_read < 2 {
20325 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
20326 _next_ordinal_to_read += 1;
20327 next_offset += envelope_size;
20328 }
20329
20330 let next_out_of_line = decoder.next_out_of_line();
20331 let handles_before = decoder.remaining_handles();
20332 if let Some((inlined, num_bytes, num_handles)) =
20333 fidl::encoding::decode_envelope_header(decoder, next_offset)?
20334 {
20335 let member_inline_size = <fidl::encoding::Vector<ExternalRouteConfig, 32> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
20336 if inlined != (member_inline_size <= 4) {
20337 return Err(fidl::Error::InvalidInlineBitInEnvelope);
20338 }
20339 let inner_offset;
20340 let mut inner_depth = depth.clone();
20341 if inlined {
20342 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
20343 inner_offset = next_offset;
20344 } else {
20345 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
20346 inner_depth.increment()?;
20347 }
20348 let val_ref = self.external_routes.get_or_insert_with(
20349 || fidl::new_empty!(fidl::encoding::Vector<ExternalRouteConfig, 32>, D),
20350 );
20351 fidl::decode!(fidl::encoding::Vector<ExternalRouteConfig, 32>, D, val_ref, decoder, inner_offset, inner_depth)?;
20352 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
20353 {
20354 return Err(fidl::Error::InvalidNumBytesInEnvelope);
20355 }
20356 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
20357 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
20358 }
20359 }
20360
20361 next_offset += envelope_size;
20362 _next_ordinal_to_read += 1;
20363 if next_offset >= end_offset {
20364 return Ok(());
20365 }
20366
20367 while _next_ordinal_to_read < 3 {
20369 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
20370 _next_ordinal_to_read += 1;
20371 next_offset += envelope_size;
20372 }
20373
20374 let next_out_of_line = decoder.next_out_of_line();
20375 let handles_before = decoder.remaining_handles();
20376 if let Some((inlined, num_bytes, num_handles)) =
20377 fidl::encoding::decode_envelope_header(decoder, next_offset)?
20378 {
20379 let member_inline_size = <fidl::encoding::Vector<ServiceConfig, 32> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
20380 if inlined != (member_inline_size <= 4) {
20381 return Err(fidl::Error::InvalidInlineBitInEnvelope);
20382 }
20383 let inner_offset;
20384 let mut inner_depth = depth.clone();
20385 if inlined {
20386 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
20387 inner_offset = next_offset;
20388 } else {
20389 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
20390 inner_depth.increment()?;
20391 }
20392 let val_ref = self.services.get_or_insert_with(
20393 || fidl::new_empty!(fidl::encoding::Vector<ServiceConfig, 32>, D),
20394 );
20395 fidl::decode!(fidl::encoding::Vector<ServiceConfig, 32>, D, val_ref, decoder, inner_offset, inner_depth)?;
20396 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
20397 {
20398 return Err(fidl::Error::InvalidNumBytesInEnvelope);
20399 }
20400 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
20401 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
20402 }
20403 }
20404
20405 next_offset += envelope_size;
20406 _next_ordinal_to_read += 1;
20407 if next_offset >= end_offset {
20408 return Ok(());
20409 }
20410
20411 while _next_ordinal_to_read < 4 {
20413 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
20414 _next_ordinal_to_read += 1;
20415 next_offset += envelope_size;
20416 }
20417
20418 let next_out_of_line = decoder.next_out_of_line();
20419 let handles_before = decoder.remaining_handles();
20420 if let Some((inlined, num_bytes, num_handles)) =
20421 fidl::encoding::decode_envelope_header(decoder, next_offset)?
20422 {
20423 let member_inline_size = <fidl::encoding::Vector<LowpanContextInfo, 32> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
20424 if inlined != (member_inline_size <= 4) {
20425 return Err(fidl::Error::InvalidInlineBitInEnvelope);
20426 }
20427 let inner_offset;
20428 let mut inner_depth = depth.clone();
20429 if inlined {
20430 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
20431 inner_offset = next_offset;
20432 } else {
20433 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
20434 inner_depth.increment()?;
20435 }
20436 let val_ref = self.contexts.get_or_insert_with(
20437 || fidl::new_empty!(fidl::encoding::Vector<LowpanContextInfo, 32>, D),
20438 );
20439 fidl::decode!(fidl::encoding::Vector<LowpanContextInfo, 32>, D, val_ref, decoder, inner_offset, inner_depth)?;
20440 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
20441 {
20442 return Err(fidl::Error::InvalidNumBytesInEnvelope);
20443 }
20444 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
20445 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
20446 }
20447 }
20448
20449 next_offset += envelope_size;
20450 _next_ordinal_to_read += 1;
20451 if next_offset >= end_offset {
20452 return Ok(());
20453 }
20454
20455 while _next_ordinal_to_read < 5 {
20457 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
20458 _next_ordinal_to_read += 1;
20459 next_offset += envelope_size;
20460 }
20461
20462 let next_out_of_line = decoder.next_out_of_line();
20463 let handles_before = decoder.remaining_handles();
20464 if let Some((inlined, num_bytes, num_handles)) =
20465 fidl::encoding::decode_envelope_header(decoder, next_offset)?
20466 {
20467 let member_inline_size =
20468 <CommissioningDataset as fidl::encoding::TypeMarker>::inline_size(
20469 decoder.context,
20470 );
20471 if inlined != (member_inline_size <= 4) {
20472 return Err(fidl::Error::InvalidInlineBitInEnvelope);
20473 }
20474 let inner_offset;
20475 let mut inner_depth = depth.clone();
20476 if inlined {
20477 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
20478 inner_offset = next_offset;
20479 } else {
20480 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
20481 inner_depth.increment()?;
20482 }
20483 let val_ref = self
20484 .commissioning_dataset
20485 .get_or_insert_with(|| fidl::new_empty!(CommissioningDataset, D));
20486 fidl::decode!(
20487 CommissioningDataset,
20488 D,
20489 val_ref,
20490 decoder,
20491 inner_offset,
20492 inner_depth
20493 )?;
20494 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
20495 {
20496 return Err(fidl::Error::InvalidNumBytesInEnvelope);
20497 }
20498 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
20499 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
20500 }
20501 }
20502
20503 next_offset += envelope_size;
20504
20505 while next_offset < end_offset {
20507 _next_ordinal_to_read += 1;
20508 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
20509 next_offset += envelope_size;
20510 }
20511
20512 Ok(())
20513 }
20514 }
20515
20516 impl NetworkScanParameters {
20517 #[inline(always)]
20518 fn max_ordinal_present(&self) -> u64 {
20519 if let Some(_) = self.tx_power_dbm {
20520 return 2;
20521 }
20522 if let Some(_) = self.channels {
20523 return 1;
20524 }
20525 0
20526 }
20527 }
20528
20529 impl fidl::encoding::ValueTypeMarker for NetworkScanParameters {
20530 type Borrowed<'a> = &'a Self;
20531 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
20532 value
20533 }
20534 }
20535
20536 unsafe impl fidl::encoding::TypeMarker for NetworkScanParameters {
20537 type Owned = Self;
20538
20539 #[inline(always)]
20540 fn inline_align(_context: fidl::encoding::Context) -> usize {
20541 8
20542 }
20543
20544 #[inline(always)]
20545 fn inline_size(_context: fidl::encoding::Context) -> usize {
20546 16
20547 }
20548 }
20549
20550 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<NetworkScanParameters, D>
20551 for &NetworkScanParameters
20552 {
20553 unsafe fn encode(
20554 self,
20555 encoder: &mut fidl::encoding::Encoder<'_, D>,
20556 offset: usize,
20557 mut depth: fidl::encoding::Depth,
20558 ) -> fidl::Result<()> {
20559 encoder.debug_check_bounds::<NetworkScanParameters>(offset);
20560 let max_ordinal: u64 = self.max_ordinal_present();
20562 encoder.write_num(max_ordinal, offset);
20563 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
20564 if max_ordinal == 0 {
20566 return Ok(());
20567 }
20568 depth.increment()?;
20569 let envelope_size = 8;
20570 let bytes_len = max_ordinal as usize * envelope_size;
20571 #[allow(unused_variables)]
20572 let offset = encoder.out_of_line_offset(bytes_len);
20573 let mut _prev_end_offset: usize = 0;
20574 if 1 > max_ordinal {
20575 return Ok(());
20576 }
20577
20578 let cur_offset: usize = (1 - 1) * envelope_size;
20581
20582 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
20584
20585 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<u16, 200>, D>(
20590 self.channels.as_ref().map(
20591 <fidl::encoding::Vector<u16, 200> as fidl::encoding::ValueTypeMarker>::borrow,
20592 ),
20593 encoder,
20594 offset + cur_offset,
20595 depth,
20596 )?;
20597
20598 _prev_end_offset = cur_offset + envelope_size;
20599 if 2 > max_ordinal {
20600 return Ok(());
20601 }
20602
20603 let cur_offset: usize = (2 - 1) * envelope_size;
20606
20607 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
20609
20610 fidl::encoding::encode_in_envelope_optional::<i8, D>(
20615 self.tx_power_dbm.as_ref().map(<i8 as fidl::encoding::ValueTypeMarker>::borrow),
20616 encoder,
20617 offset + cur_offset,
20618 depth,
20619 )?;
20620
20621 _prev_end_offset = cur_offset + envelope_size;
20622
20623 Ok(())
20624 }
20625 }
20626
20627 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for NetworkScanParameters {
20628 #[inline(always)]
20629 fn new_empty() -> Self {
20630 Self::default()
20631 }
20632
20633 unsafe fn decode(
20634 &mut self,
20635 decoder: &mut fidl::encoding::Decoder<'_, D>,
20636 offset: usize,
20637 mut depth: fidl::encoding::Depth,
20638 ) -> fidl::Result<()> {
20639 decoder.debug_check_bounds::<Self>(offset);
20640 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
20641 None => return Err(fidl::Error::NotNullable),
20642 Some(len) => len,
20643 };
20644 if len == 0 {
20646 return Ok(());
20647 };
20648 depth.increment()?;
20649 let envelope_size = 8;
20650 let bytes_len = len * envelope_size;
20651 let offset = decoder.out_of_line_offset(bytes_len)?;
20652 let mut _next_ordinal_to_read = 0;
20654 let mut next_offset = offset;
20655 let end_offset = offset + bytes_len;
20656 _next_ordinal_to_read += 1;
20657 if next_offset >= end_offset {
20658 return Ok(());
20659 }
20660
20661 while _next_ordinal_to_read < 1 {
20663 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
20664 _next_ordinal_to_read += 1;
20665 next_offset += envelope_size;
20666 }
20667
20668 let next_out_of_line = decoder.next_out_of_line();
20669 let handles_before = decoder.remaining_handles();
20670 if let Some((inlined, num_bytes, num_handles)) =
20671 fidl::encoding::decode_envelope_header(decoder, next_offset)?
20672 {
20673 let member_inline_size =
20674 <fidl::encoding::Vector<u16, 200> as fidl::encoding::TypeMarker>::inline_size(
20675 decoder.context,
20676 );
20677 if inlined != (member_inline_size <= 4) {
20678 return Err(fidl::Error::InvalidInlineBitInEnvelope);
20679 }
20680 let inner_offset;
20681 let mut inner_depth = depth.clone();
20682 if inlined {
20683 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
20684 inner_offset = next_offset;
20685 } else {
20686 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
20687 inner_depth.increment()?;
20688 }
20689 let val_ref = self
20690 .channels
20691 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u16, 200>, D));
20692 fidl::decode!(fidl::encoding::Vector<u16, 200>, D, val_ref, decoder, inner_offset, inner_depth)?;
20693 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
20694 {
20695 return Err(fidl::Error::InvalidNumBytesInEnvelope);
20696 }
20697 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
20698 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
20699 }
20700 }
20701
20702 next_offset += envelope_size;
20703 _next_ordinal_to_read += 1;
20704 if next_offset >= end_offset {
20705 return Ok(());
20706 }
20707
20708 while _next_ordinal_to_read < 2 {
20710 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
20711 _next_ordinal_to_read += 1;
20712 next_offset += envelope_size;
20713 }
20714
20715 let next_out_of_line = decoder.next_out_of_line();
20716 let handles_before = decoder.remaining_handles();
20717 if let Some((inlined, num_bytes, num_handles)) =
20718 fidl::encoding::decode_envelope_header(decoder, next_offset)?
20719 {
20720 let member_inline_size =
20721 <i8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
20722 if inlined != (member_inline_size <= 4) {
20723 return Err(fidl::Error::InvalidInlineBitInEnvelope);
20724 }
20725 let inner_offset;
20726 let mut inner_depth = depth.clone();
20727 if inlined {
20728 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
20729 inner_offset = next_offset;
20730 } else {
20731 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
20732 inner_depth.increment()?;
20733 }
20734 let val_ref = self.tx_power_dbm.get_or_insert_with(|| fidl::new_empty!(i8, D));
20735 fidl::decode!(i8, D, val_ref, decoder, inner_offset, inner_depth)?;
20736 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
20737 {
20738 return Err(fidl::Error::InvalidNumBytesInEnvelope);
20739 }
20740 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
20741 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
20742 }
20743 }
20744
20745 next_offset += envelope_size;
20746
20747 while next_offset < end_offset {
20749 _next_ordinal_to_read += 1;
20750 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
20751 next_offset += envelope_size;
20752 }
20753
20754 Ok(())
20755 }
20756 }
20757
20758 impl OnMeshPrefix {
20759 #[inline(always)]
20760 fn max_ordinal_present(&self) -> u64 {
20761 if let Some(_) = self.slaac_valid {
20762 return 5;
20763 }
20764 if let Some(_) = self.slaac_preferred {
20765 return 4;
20766 }
20767 if let Some(_) = self.stable {
20768 return 3;
20769 }
20770 if let Some(_) = self.default_route_preference {
20771 return 2;
20772 }
20773 if let Some(_) = self.subnet {
20774 return 1;
20775 }
20776 0
20777 }
20778 }
20779
20780 impl fidl::encoding::ValueTypeMarker for OnMeshPrefix {
20781 type Borrowed<'a> = &'a Self;
20782 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
20783 value
20784 }
20785 }
20786
20787 unsafe impl fidl::encoding::TypeMarker for OnMeshPrefix {
20788 type Owned = Self;
20789
20790 #[inline(always)]
20791 fn inline_align(_context: fidl::encoding::Context) -> usize {
20792 8
20793 }
20794
20795 #[inline(always)]
20796 fn inline_size(_context: fidl::encoding::Context) -> usize {
20797 16
20798 }
20799 }
20800
20801 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<OnMeshPrefix, D>
20802 for &OnMeshPrefix
20803 {
20804 unsafe fn encode(
20805 self,
20806 encoder: &mut fidl::encoding::Encoder<'_, D>,
20807 offset: usize,
20808 mut depth: fidl::encoding::Depth,
20809 ) -> fidl::Result<()> {
20810 encoder.debug_check_bounds::<OnMeshPrefix>(offset);
20811 let max_ordinal: u64 = self.max_ordinal_present();
20813 encoder.write_num(max_ordinal, offset);
20814 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
20815 if max_ordinal == 0 {
20817 return Ok(());
20818 }
20819 depth.increment()?;
20820 let envelope_size = 8;
20821 let bytes_len = max_ordinal as usize * envelope_size;
20822 #[allow(unused_variables)]
20823 let offset = encoder.out_of_line_offset(bytes_len);
20824 let mut _prev_end_offset: usize = 0;
20825 if 1 > max_ordinal {
20826 return Ok(());
20827 }
20828
20829 let cur_offset: usize = (1 - 1) * envelope_size;
20832
20833 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
20835
20836 fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_net_common::Ipv6AddressWithPrefix, D>(
20841 self.subnet.as_ref().map(<fidl_fuchsia_net_common::Ipv6AddressWithPrefix as fidl::encoding::ValueTypeMarker>::borrow),
20842 encoder, offset + cur_offset, depth
20843 )?;
20844
20845 _prev_end_offset = cur_offset + envelope_size;
20846 if 2 > max_ordinal {
20847 return Ok(());
20848 }
20849
20850 let cur_offset: usize = (2 - 1) * envelope_size;
20853
20854 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
20856
20857 fidl::encoding::encode_in_envelope_optional::<RoutePreference, D>(
20862 self.default_route_preference
20863 .as_ref()
20864 .map(<RoutePreference as fidl::encoding::ValueTypeMarker>::borrow),
20865 encoder,
20866 offset + cur_offset,
20867 depth,
20868 )?;
20869
20870 _prev_end_offset = cur_offset + envelope_size;
20871 if 3 > max_ordinal {
20872 return Ok(());
20873 }
20874
20875 let cur_offset: usize = (3 - 1) * envelope_size;
20878
20879 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
20881
20882 fidl::encoding::encode_in_envelope_optional::<bool, D>(
20887 self.stable.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
20888 encoder,
20889 offset + cur_offset,
20890 depth,
20891 )?;
20892
20893 _prev_end_offset = cur_offset + envelope_size;
20894 if 4 > max_ordinal {
20895 return Ok(());
20896 }
20897
20898 let cur_offset: usize = (4 - 1) * envelope_size;
20901
20902 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
20904
20905 fidl::encoding::encode_in_envelope_optional::<bool, D>(
20910 self.slaac_preferred
20911 .as_ref()
20912 .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
20913 encoder,
20914 offset + cur_offset,
20915 depth,
20916 )?;
20917
20918 _prev_end_offset = cur_offset + envelope_size;
20919 if 5 > max_ordinal {
20920 return Ok(());
20921 }
20922
20923 let cur_offset: usize = (5 - 1) * envelope_size;
20926
20927 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
20929
20930 fidl::encoding::encode_in_envelope_optional::<bool, D>(
20935 self.slaac_valid.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
20936 encoder,
20937 offset + cur_offset,
20938 depth,
20939 )?;
20940
20941 _prev_end_offset = cur_offset + envelope_size;
20942
20943 Ok(())
20944 }
20945 }
20946
20947 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for OnMeshPrefix {
20948 #[inline(always)]
20949 fn new_empty() -> Self {
20950 Self::default()
20951 }
20952
20953 unsafe fn decode(
20954 &mut self,
20955 decoder: &mut fidl::encoding::Decoder<'_, D>,
20956 offset: usize,
20957 mut depth: fidl::encoding::Depth,
20958 ) -> fidl::Result<()> {
20959 decoder.debug_check_bounds::<Self>(offset);
20960 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
20961 None => return Err(fidl::Error::NotNullable),
20962 Some(len) => len,
20963 };
20964 if len == 0 {
20966 return Ok(());
20967 };
20968 depth.increment()?;
20969 let envelope_size = 8;
20970 let bytes_len = len * envelope_size;
20971 let offset = decoder.out_of_line_offset(bytes_len)?;
20972 let mut _next_ordinal_to_read = 0;
20974 let mut next_offset = offset;
20975 let end_offset = offset + bytes_len;
20976 _next_ordinal_to_read += 1;
20977 if next_offset >= end_offset {
20978 return Ok(());
20979 }
20980
20981 while _next_ordinal_to_read < 1 {
20983 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
20984 _next_ordinal_to_read += 1;
20985 next_offset += envelope_size;
20986 }
20987
20988 let next_out_of_line = decoder.next_out_of_line();
20989 let handles_before = decoder.remaining_handles();
20990 if let Some((inlined, num_bytes, num_handles)) =
20991 fidl::encoding::decode_envelope_header(decoder, next_offset)?
20992 {
20993 let member_inline_size = <fidl_fuchsia_net_common::Ipv6AddressWithPrefix as fidl::encoding::TypeMarker>::inline_size(decoder.context);
20994 if inlined != (member_inline_size <= 4) {
20995 return Err(fidl::Error::InvalidInlineBitInEnvelope);
20996 }
20997 let inner_offset;
20998 let mut inner_depth = depth.clone();
20999 if inlined {
21000 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
21001 inner_offset = next_offset;
21002 } else {
21003 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
21004 inner_depth.increment()?;
21005 }
21006 let val_ref = self.subnet.get_or_insert_with(|| {
21007 fidl::new_empty!(fidl_fuchsia_net_common::Ipv6AddressWithPrefix, D)
21008 });
21009 fidl::decode!(
21010 fidl_fuchsia_net_common::Ipv6AddressWithPrefix,
21011 D,
21012 val_ref,
21013 decoder,
21014 inner_offset,
21015 inner_depth
21016 )?;
21017 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
21018 {
21019 return Err(fidl::Error::InvalidNumBytesInEnvelope);
21020 }
21021 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
21022 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
21023 }
21024 }
21025
21026 next_offset += envelope_size;
21027 _next_ordinal_to_read += 1;
21028 if next_offset >= end_offset {
21029 return Ok(());
21030 }
21031
21032 while _next_ordinal_to_read < 2 {
21034 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
21035 _next_ordinal_to_read += 1;
21036 next_offset += envelope_size;
21037 }
21038
21039 let next_out_of_line = decoder.next_out_of_line();
21040 let handles_before = decoder.remaining_handles();
21041 if let Some((inlined, num_bytes, num_handles)) =
21042 fidl::encoding::decode_envelope_header(decoder, next_offset)?
21043 {
21044 let member_inline_size =
21045 <RoutePreference as fidl::encoding::TypeMarker>::inline_size(decoder.context);
21046 if inlined != (member_inline_size <= 4) {
21047 return Err(fidl::Error::InvalidInlineBitInEnvelope);
21048 }
21049 let inner_offset;
21050 let mut inner_depth = depth.clone();
21051 if inlined {
21052 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
21053 inner_offset = next_offset;
21054 } else {
21055 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
21056 inner_depth.increment()?;
21057 }
21058 let val_ref = self
21059 .default_route_preference
21060 .get_or_insert_with(|| fidl::new_empty!(RoutePreference, D));
21061 fidl::decode!(RoutePreference, D, val_ref, decoder, inner_offset, inner_depth)?;
21062 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
21063 {
21064 return Err(fidl::Error::InvalidNumBytesInEnvelope);
21065 }
21066 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
21067 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
21068 }
21069 }
21070
21071 next_offset += envelope_size;
21072 _next_ordinal_to_read += 1;
21073 if next_offset >= end_offset {
21074 return Ok(());
21075 }
21076
21077 while _next_ordinal_to_read < 3 {
21079 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
21080 _next_ordinal_to_read += 1;
21081 next_offset += envelope_size;
21082 }
21083
21084 let next_out_of_line = decoder.next_out_of_line();
21085 let handles_before = decoder.remaining_handles();
21086 if let Some((inlined, num_bytes, num_handles)) =
21087 fidl::encoding::decode_envelope_header(decoder, next_offset)?
21088 {
21089 let member_inline_size =
21090 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
21091 if inlined != (member_inline_size <= 4) {
21092 return Err(fidl::Error::InvalidInlineBitInEnvelope);
21093 }
21094 let inner_offset;
21095 let mut inner_depth = depth.clone();
21096 if inlined {
21097 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
21098 inner_offset = next_offset;
21099 } else {
21100 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
21101 inner_depth.increment()?;
21102 }
21103 let val_ref = self.stable.get_or_insert_with(|| fidl::new_empty!(bool, D));
21104 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
21105 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
21106 {
21107 return Err(fidl::Error::InvalidNumBytesInEnvelope);
21108 }
21109 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
21110 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
21111 }
21112 }
21113
21114 next_offset += envelope_size;
21115 _next_ordinal_to_read += 1;
21116 if next_offset >= end_offset {
21117 return Ok(());
21118 }
21119
21120 while _next_ordinal_to_read < 4 {
21122 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
21123 _next_ordinal_to_read += 1;
21124 next_offset += envelope_size;
21125 }
21126
21127 let next_out_of_line = decoder.next_out_of_line();
21128 let handles_before = decoder.remaining_handles();
21129 if let Some((inlined, num_bytes, num_handles)) =
21130 fidl::encoding::decode_envelope_header(decoder, next_offset)?
21131 {
21132 let member_inline_size =
21133 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
21134 if inlined != (member_inline_size <= 4) {
21135 return Err(fidl::Error::InvalidInlineBitInEnvelope);
21136 }
21137 let inner_offset;
21138 let mut inner_depth = depth.clone();
21139 if inlined {
21140 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
21141 inner_offset = next_offset;
21142 } else {
21143 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
21144 inner_depth.increment()?;
21145 }
21146 let val_ref = self.slaac_preferred.get_or_insert_with(|| fidl::new_empty!(bool, D));
21147 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
21148 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
21149 {
21150 return Err(fidl::Error::InvalidNumBytesInEnvelope);
21151 }
21152 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
21153 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
21154 }
21155 }
21156
21157 next_offset += envelope_size;
21158 _next_ordinal_to_read += 1;
21159 if next_offset >= end_offset {
21160 return Ok(());
21161 }
21162
21163 while _next_ordinal_to_read < 5 {
21165 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
21166 _next_ordinal_to_read += 1;
21167 next_offset += envelope_size;
21168 }
21169
21170 let next_out_of_line = decoder.next_out_of_line();
21171 let handles_before = decoder.remaining_handles();
21172 if let Some((inlined, num_bytes, num_handles)) =
21173 fidl::encoding::decode_envelope_header(decoder, next_offset)?
21174 {
21175 let member_inline_size =
21176 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
21177 if inlined != (member_inline_size <= 4) {
21178 return Err(fidl::Error::InvalidInlineBitInEnvelope);
21179 }
21180 let inner_offset;
21181 let mut inner_depth = depth.clone();
21182 if inlined {
21183 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
21184 inner_offset = next_offset;
21185 } else {
21186 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
21187 inner_depth.increment()?;
21188 }
21189 let val_ref = self.slaac_valid.get_or_insert_with(|| fidl::new_empty!(bool, D));
21190 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
21191 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
21192 {
21193 return Err(fidl::Error::InvalidNumBytesInEnvelope);
21194 }
21195 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
21196 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
21197 }
21198 }
21199
21200 next_offset += envelope_size;
21201
21202 while next_offset < end_offset {
21204 _next_ordinal_to_read += 1;
21205 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
21206 next_offset += envelope_size;
21207 }
21208
21209 Ok(())
21210 }
21211 }
21212
21213 impl OperationalDataset {
21214 #[inline(always)]
21215 fn max_ordinal_present(&self) -> u64 {
21216 if let Some(_) = self.channel_mask {
21217 return 13;
21218 }
21219 if let Some(_) = self.security_policy {
21220 return 12;
21221 }
21222 if let Some(_) = self.pskc {
21223 return 11;
21224 }
21225 if let Some(_) = self.wakeup_channel {
21226 return 10;
21227 }
21228 if let Some(_) = self.channel {
21229 return 9;
21230 }
21231 if let Some(_) = self.pan_id {
21232 return 8;
21233 }
21234 if let Some(_) = self.delay {
21235 return 7;
21236 }
21237 if let Some(_) = self.mesh_local_prefix {
21238 return 6;
21239 }
21240 if let Some(_) = self.extended_pan_id {
21241 return 5;
21242 }
21243 if let Some(_) = self.network_name {
21244 return 4;
21245 }
21246 if let Some(_) = self.network_key {
21247 return 3;
21248 }
21249 if let Some(_) = self.pending_timestamp {
21250 return 2;
21251 }
21252 if let Some(_) = self.active_timestamp {
21253 return 1;
21254 }
21255 0
21256 }
21257 }
21258
21259 impl fidl::encoding::ValueTypeMarker for OperationalDataset {
21260 type Borrowed<'a> = &'a Self;
21261 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
21262 value
21263 }
21264 }
21265
21266 unsafe impl fidl::encoding::TypeMarker for OperationalDataset {
21267 type Owned = Self;
21268
21269 #[inline(always)]
21270 fn inline_align(_context: fidl::encoding::Context) -> usize {
21271 8
21272 }
21273
21274 #[inline(always)]
21275 fn inline_size(_context: fidl::encoding::Context) -> usize {
21276 16
21277 }
21278 }
21279
21280 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<OperationalDataset, D>
21281 for &OperationalDataset
21282 {
21283 unsafe fn encode(
21284 self,
21285 encoder: &mut fidl::encoding::Encoder<'_, D>,
21286 offset: usize,
21287 mut depth: fidl::encoding::Depth,
21288 ) -> fidl::Result<()> {
21289 encoder.debug_check_bounds::<OperationalDataset>(offset);
21290 let max_ordinal: u64 = self.max_ordinal_present();
21292 encoder.write_num(max_ordinal, offset);
21293 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
21294 if max_ordinal == 0 {
21296 return Ok(());
21297 }
21298 depth.increment()?;
21299 let envelope_size = 8;
21300 let bytes_len = max_ordinal as usize * envelope_size;
21301 #[allow(unused_variables)]
21302 let offset = encoder.out_of_line_offset(bytes_len);
21303 let mut _prev_end_offset: usize = 0;
21304 if 1 > max_ordinal {
21305 return Ok(());
21306 }
21307
21308 let cur_offset: usize = (1 - 1) * envelope_size;
21311
21312 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
21314
21315 fidl::encoding::encode_in_envelope_optional::<i64, D>(
21320 self.active_timestamp
21321 .as_ref()
21322 .map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
21323 encoder,
21324 offset + cur_offset,
21325 depth,
21326 )?;
21327
21328 _prev_end_offset = cur_offset + envelope_size;
21329 if 2 > max_ordinal {
21330 return Ok(());
21331 }
21332
21333 let cur_offset: usize = (2 - 1) * envelope_size;
21336
21337 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
21339
21340 fidl::encoding::encode_in_envelope_optional::<i64, D>(
21345 self.pending_timestamp
21346 .as_ref()
21347 .map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
21348 encoder,
21349 offset + cur_offset,
21350 depth,
21351 )?;
21352
21353 _prev_end_offset = cur_offset + envelope_size;
21354 if 3 > max_ordinal {
21355 return Ok(());
21356 }
21357
21358 let cur_offset: usize = (3 - 1) * envelope_size;
21361
21362 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
21364
21365 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<u8, 16>, D>(
21370 self.network_key.as_ref().map(
21371 <fidl::encoding::Vector<u8, 16> as fidl::encoding::ValueTypeMarker>::borrow,
21372 ),
21373 encoder,
21374 offset + cur_offset,
21375 depth,
21376 )?;
21377
21378 _prev_end_offset = cur_offset + envelope_size;
21379 if 4 > max_ordinal {
21380 return Ok(());
21381 }
21382
21383 let cur_offset: usize = (4 - 1) * envelope_size;
21386
21387 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
21389
21390 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<u8, 17>, D>(
21395 self.network_name.as_ref().map(
21396 <fidl::encoding::Vector<u8, 17> as fidl::encoding::ValueTypeMarker>::borrow,
21397 ),
21398 encoder,
21399 offset + cur_offset,
21400 depth,
21401 )?;
21402
21403 _prev_end_offset = cur_offset + envelope_size;
21404 if 5 > max_ordinal {
21405 return Ok(());
21406 }
21407
21408 let cur_offset: usize = (5 - 1) * envelope_size;
21411
21412 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
21414
21415 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<u8, 8>, D>(
21420 self.extended_pan_id.as_ref().map(
21421 <fidl::encoding::Vector<u8, 8> as fidl::encoding::ValueTypeMarker>::borrow,
21422 ),
21423 encoder,
21424 offset + cur_offset,
21425 depth,
21426 )?;
21427
21428 _prev_end_offset = cur_offset + envelope_size;
21429 if 6 > max_ordinal {
21430 return Ok(());
21431 }
21432
21433 let cur_offset: usize = (6 - 1) * envelope_size;
21436
21437 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
21439
21440 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<u8, 8>, D>(
21445 self.mesh_local_prefix.as_ref().map(
21446 <fidl::encoding::Vector<u8, 8> as fidl::encoding::ValueTypeMarker>::borrow,
21447 ),
21448 encoder,
21449 offset + cur_offset,
21450 depth,
21451 )?;
21452
21453 _prev_end_offset = cur_offset + envelope_size;
21454 if 7 > max_ordinal {
21455 return Ok(());
21456 }
21457
21458 let cur_offset: usize = (7 - 1) * envelope_size;
21461
21462 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
21464
21465 fidl::encoding::encode_in_envelope_optional::<u32, D>(
21470 self.delay.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
21471 encoder,
21472 offset + cur_offset,
21473 depth,
21474 )?;
21475
21476 _prev_end_offset = cur_offset + envelope_size;
21477 if 8 > max_ordinal {
21478 return Ok(());
21479 }
21480
21481 let cur_offset: usize = (8 - 1) * envelope_size;
21484
21485 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
21487
21488 fidl::encoding::encode_in_envelope_optional::<u16, D>(
21493 self.pan_id.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
21494 encoder,
21495 offset + cur_offset,
21496 depth,
21497 )?;
21498
21499 _prev_end_offset = cur_offset + envelope_size;
21500 if 9 > max_ordinal {
21501 return Ok(());
21502 }
21503
21504 let cur_offset: usize = (9 - 1) * envelope_size;
21507
21508 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
21510
21511 fidl::encoding::encode_in_envelope_optional::<u16, D>(
21516 self.channel.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
21517 encoder,
21518 offset + cur_offset,
21519 depth,
21520 )?;
21521
21522 _prev_end_offset = cur_offset + envelope_size;
21523 if 10 > max_ordinal {
21524 return Ok(());
21525 }
21526
21527 let cur_offset: usize = (10 - 1) * envelope_size;
21530
21531 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
21533
21534 fidl::encoding::encode_in_envelope_optional::<u16, D>(
21539 self.wakeup_channel.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
21540 encoder,
21541 offset + cur_offset,
21542 depth,
21543 )?;
21544
21545 _prev_end_offset = cur_offset + envelope_size;
21546 if 11 > max_ordinal {
21547 return Ok(());
21548 }
21549
21550 let cur_offset: usize = (11 - 1) * envelope_size;
21553
21554 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
21556
21557 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<u8, 16>, D>(
21562 self.pskc.as_ref().map(
21563 <fidl::encoding::Vector<u8, 16> as fidl::encoding::ValueTypeMarker>::borrow,
21564 ),
21565 encoder,
21566 offset + cur_offset,
21567 depth,
21568 )?;
21569
21570 _prev_end_offset = cur_offset + envelope_size;
21571 if 12 > max_ordinal {
21572 return Ok(());
21573 }
21574
21575 let cur_offset: usize = (12 - 1) * envelope_size;
21578
21579 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
21581
21582 fidl::encoding::encode_in_envelope_optional::<SecurityPolicy, D>(
21587 self.security_policy
21588 .as_ref()
21589 .map(<SecurityPolicy as fidl::encoding::ValueTypeMarker>::borrow),
21590 encoder,
21591 offset + cur_offset,
21592 depth,
21593 )?;
21594
21595 _prev_end_offset = cur_offset + envelope_size;
21596 if 13 > max_ordinal {
21597 return Ok(());
21598 }
21599
21600 let cur_offset: usize = (13 - 1) * envelope_size;
21603
21604 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
21606
21607 fidl::encoding::encode_in_envelope_optional::<u32, D>(
21612 self.channel_mask.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
21613 encoder,
21614 offset + cur_offset,
21615 depth,
21616 )?;
21617
21618 _prev_end_offset = cur_offset + envelope_size;
21619
21620 Ok(())
21621 }
21622 }
21623
21624 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for OperationalDataset {
21625 #[inline(always)]
21626 fn new_empty() -> Self {
21627 Self::default()
21628 }
21629
21630 unsafe fn decode(
21631 &mut self,
21632 decoder: &mut fidl::encoding::Decoder<'_, D>,
21633 offset: usize,
21634 mut depth: fidl::encoding::Depth,
21635 ) -> fidl::Result<()> {
21636 decoder.debug_check_bounds::<Self>(offset);
21637 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
21638 None => return Err(fidl::Error::NotNullable),
21639 Some(len) => len,
21640 };
21641 if len == 0 {
21643 return Ok(());
21644 };
21645 depth.increment()?;
21646 let envelope_size = 8;
21647 let bytes_len = len * envelope_size;
21648 let offset = decoder.out_of_line_offset(bytes_len)?;
21649 let mut _next_ordinal_to_read = 0;
21651 let mut next_offset = offset;
21652 let end_offset = offset + bytes_len;
21653 _next_ordinal_to_read += 1;
21654 if next_offset >= end_offset {
21655 return Ok(());
21656 }
21657
21658 while _next_ordinal_to_read < 1 {
21660 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
21661 _next_ordinal_to_read += 1;
21662 next_offset += envelope_size;
21663 }
21664
21665 let next_out_of_line = decoder.next_out_of_line();
21666 let handles_before = decoder.remaining_handles();
21667 if let Some((inlined, num_bytes, num_handles)) =
21668 fidl::encoding::decode_envelope_header(decoder, next_offset)?
21669 {
21670 let member_inline_size =
21671 <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
21672 if inlined != (member_inline_size <= 4) {
21673 return Err(fidl::Error::InvalidInlineBitInEnvelope);
21674 }
21675 let inner_offset;
21676 let mut inner_depth = depth.clone();
21677 if inlined {
21678 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
21679 inner_offset = next_offset;
21680 } else {
21681 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
21682 inner_depth.increment()?;
21683 }
21684 let val_ref = self.active_timestamp.get_or_insert_with(|| fidl::new_empty!(i64, D));
21685 fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
21686 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
21687 {
21688 return Err(fidl::Error::InvalidNumBytesInEnvelope);
21689 }
21690 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
21691 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
21692 }
21693 }
21694
21695 next_offset += envelope_size;
21696 _next_ordinal_to_read += 1;
21697 if next_offset >= end_offset {
21698 return Ok(());
21699 }
21700
21701 while _next_ordinal_to_read < 2 {
21703 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
21704 _next_ordinal_to_read += 1;
21705 next_offset += envelope_size;
21706 }
21707
21708 let next_out_of_line = decoder.next_out_of_line();
21709 let handles_before = decoder.remaining_handles();
21710 if let Some((inlined, num_bytes, num_handles)) =
21711 fidl::encoding::decode_envelope_header(decoder, next_offset)?
21712 {
21713 let member_inline_size =
21714 <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
21715 if inlined != (member_inline_size <= 4) {
21716 return Err(fidl::Error::InvalidInlineBitInEnvelope);
21717 }
21718 let inner_offset;
21719 let mut inner_depth = depth.clone();
21720 if inlined {
21721 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
21722 inner_offset = next_offset;
21723 } else {
21724 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
21725 inner_depth.increment()?;
21726 }
21727 let val_ref =
21728 self.pending_timestamp.get_or_insert_with(|| fidl::new_empty!(i64, D));
21729 fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
21730 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
21731 {
21732 return Err(fidl::Error::InvalidNumBytesInEnvelope);
21733 }
21734 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
21735 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
21736 }
21737 }
21738
21739 next_offset += envelope_size;
21740 _next_ordinal_to_read += 1;
21741 if next_offset >= end_offset {
21742 return Ok(());
21743 }
21744
21745 while _next_ordinal_to_read < 3 {
21747 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
21748 _next_ordinal_to_read += 1;
21749 next_offset += envelope_size;
21750 }
21751
21752 let next_out_of_line = decoder.next_out_of_line();
21753 let handles_before = decoder.remaining_handles();
21754 if let Some((inlined, num_bytes, num_handles)) =
21755 fidl::encoding::decode_envelope_header(decoder, next_offset)?
21756 {
21757 let member_inline_size =
21758 <fidl::encoding::Vector<u8, 16> as fidl::encoding::TypeMarker>::inline_size(
21759 decoder.context,
21760 );
21761 if inlined != (member_inline_size <= 4) {
21762 return Err(fidl::Error::InvalidInlineBitInEnvelope);
21763 }
21764 let inner_offset;
21765 let mut inner_depth = depth.clone();
21766 if inlined {
21767 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
21768 inner_offset = next_offset;
21769 } else {
21770 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
21771 inner_depth.increment()?;
21772 }
21773 let val_ref = self
21774 .network_key
21775 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u8, 16>, D));
21776 fidl::decode!(fidl::encoding::Vector<u8, 16>, D, val_ref, decoder, inner_offset, inner_depth)?;
21777 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
21778 {
21779 return Err(fidl::Error::InvalidNumBytesInEnvelope);
21780 }
21781 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
21782 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
21783 }
21784 }
21785
21786 next_offset += envelope_size;
21787 _next_ordinal_to_read += 1;
21788 if next_offset >= end_offset {
21789 return Ok(());
21790 }
21791
21792 while _next_ordinal_to_read < 4 {
21794 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
21795 _next_ordinal_to_read += 1;
21796 next_offset += envelope_size;
21797 }
21798
21799 let next_out_of_line = decoder.next_out_of_line();
21800 let handles_before = decoder.remaining_handles();
21801 if let Some((inlined, num_bytes, num_handles)) =
21802 fidl::encoding::decode_envelope_header(decoder, next_offset)?
21803 {
21804 let member_inline_size =
21805 <fidl::encoding::Vector<u8, 17> as fidl::encoding::TypeMarker>::inline_size(
21806 decoder.context,
21807 );
21808 if inlined != (member_inline_size <= 4) {
21809 return Err(fidl::Error::InvalidInlineBitInEnvelope);
21810 }
21811 let inner_offset;
21812 let mut inner_depth = depth.clone();
21813 if inlined {
21814 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
21815 inner_offset = next_offset;
21816 } else {
21817 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
21818 inner_depth.increment()?;
21819 }
21820 let val_ref = self
21821 .network_name
21822 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u8, 17>, D));
21823 fidl::decode!(fidl::encoding::Vector<u8, 17>, D, val_ref, decoder, inner_offset, inner_depth)?;
21824 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
21825 {
21826 return Err(fidl::Error::InvalidNumBytesInEnvelope);
21827 }
21828 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
21829 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
21830 }
21831 }
21832
21833 next_offset += envelope_size;
21834 _next_ordinal_to_read += 1;
21835 if next_offset >= end_offset {
21836 return Ok(());
21837 }
21838
21839 while _next_ordinal_to_read < 5 {
21841 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
21842 _next_ordinal_to_read += 1;
21843 next_offset += envelope_size;
21844 }
21845
21846 let next_out_of_line = decoder.next_out_of_line();
21847 let handles_before = decoder.remaining_handles();
21848 if let Some((inlined, num_bytes, num_handles)) =
21849 fidl::encoding::decode_envelope_header(decoder, next_offset)?
21850 {
21851 let member_inline_size =
21852 <fidl::encoding::Vector<u8, 8> as fidl::encoding::TypeMarker>::inline_size(
21853 decoder.context,
21854 );
21855 if inlined != (member_inline_size <= 4) {
21856 return Err(fidl::Error::InvalidInlineBitInEnvelope);
21857 }
21858 let inner_offset;
21859 let mut inner_depth = depth.clone();
21860 if inlined {
21861 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
21862 inner_offset = next_offset;
21863 } else {
21864 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
21865 inner_depth.increment()?;
21866 }
21867 let val_ref = self
21868 .extended_pan_id
21869 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u8, 8>, D));
21870 fidl::decode!(fidl::encoding::Vector<u8, 8>, D, val_ref, decoder, inner_offset, inner_depth)?;
21871 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
21872 {
21873 return Err(fidl::Error::InvalidNumBytesInEnvelope);
21874 }
21875 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
21876 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
21877 }
21878 }
21879
21880 next_offset += envelope_size;
21881 _next_ordinal_to_read += 1;
21882 if next_offset >= end_offset {
21883 return Ok(());
21884 }
21885
21886 while _next_ordinal_to_read < 6 {
21888 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
21889 _next_ordinal_to_read += 1;
21890 next_offset += envelope_size;
21891 }
21892
21893 let next_out_of_line = decoder.next_out_of_line();
21894 let handles_before = decoder.remaining_handles();
21895 if let Some((inlined, num_bytes, num_handles)) =
21896 fidl::encoding::decode_envelope_header(decoder, next_offset)?
21897 {
21898 let member_inline_size =
21899 <fidl::encoding::Vector<u8, 8> as fidl::encoding::TypeMarker>::inline_size(
21900 decoder.context,
21901 );
21902 if inlined != (member_inline_size <= 4) {
21903 return Err(fidl::Error::InvalidInlineBitInEnvelope);
21904 }
21905 let inner_offset;
21906 let mut inner_depth = depth.clone();
21907 if inlined {
21908 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
21909 inner_offset = next_offset;
21910 } else {
21911 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
21912 inner_depth.increment()?;
21913 }
21914 let val_ref = self
21915 .mesh_local_prefix
21916 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u8, 8>, D));
21917 fidl::decode!(fidl::encoding::Vector<u8, 8>, D, val_ref, decoder, inner_offset, inner_depth)?;
21918 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
21919 {
21920 return Err(fidl::Error::InvalidNumBytesInEnvelope);
21921 }
21922 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
21923 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
21924 }
21925 }
21926
21927 next_offset += envelope_size;
21928 _next_ordinal_to_read += 1;
21929 if next_offset >= end_offset {
21930 return Ok(());
21931 }
21932
21933 while _next_ordinal_to_read < 7 {
21935 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
21936 _next_ordinal_to_read += 1;
21937 next_offset += envelope_size;
21938 }
21939
21940 let next_out_of_line = decoder.next_out_of_line();
21941 let handles_before = decoder.remaining_handles();
21942 if let Some((inlined, num_bytes, num_handles)) =
21943 fidl::encoding::decode_envelope_header(decoder, next_offset)?
21944 {
21945 let member_inline_size =
21946 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
21947 if inlined != (member_inline_size <= 4) {
21948 return Err(fidl::Error::InvalidInlineBitInEnvelope);
21949 }
21950 let inner_offset;
21951 let mut inner_depth = depth.clone();
21952 if inlined {
21953 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
21954 inner_offset = next_offset;
21955 } else {
21956 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
21957 inner_depth.increment()?;
21958 }
21959 let val_ref = self.delay.get_or_insert_with(|| fidl::new_empty!(u32, D));
21960 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
21961 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
21962 {
21963 return Err(fidl::Error::InvalidNumBytesInEnvelope);
21964 }
21965 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
21966 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
21967 }
21968 }
21969
21970 next_offset += envelope_size;
21971 _next_ordinal_to_read += 1;
21972 if next_offset >= end_offset {
21973 return Ok(());
21974 }
21975
21976 while _next_ordinal_to_read < 8 {
21978 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
21979 _next_ordinal_to_read += 1;
21980 next_offset += envelope_size;
21981 }
21982
21983 let next_out_of_line = decoder.next_out_of_line();
21984 let handles_before = decoder.remaining_handles();
21985 if let Some((inlined, num_bytes, num_handles)) =
21986 fidl::encoding::decode_envelope_header(decoder, next_offset)?
21987 {
21988 let member_inline_size =
21989 <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
21990 if inlined != (member_inline_size <= 4) {
21991 return Err(fidl::Error::InvalidInlineBitInEnvelope);
21992 }
21993 let inner_offset;
21994 let mut inner_depth = depth.clone();
21995 if inlined {
21996 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
21997 inner_offset = next_offset;
21998 } else {
21999 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
22000 inner_depth.increment()?;
22001 }
22002 let val_ref = self.pan_id.get_or_insert_with(|| fidl::new_empty!(u16, D));
22003 fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
22004 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
22005 {
22006 return Err(fidl::Error::InvalidNumBytesInEnvelope);
22007 }
22008 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
22009 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
22010 }
22011 }
22012
22013 next_offset += envelope_size;
22014 _next_ordinal_to_read += 1;
22015 if next_offset >= end_offset {
22016 return Ok(());
22017 }
22018
22019 while _next_ordinal_to_read < 9 {
22021 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
22022 _next_ordinal_to_read += 1;
22023 next_offset += envelope_size;
22024 }
22025
22026 let next_out_of_line = decoder.next_out_of_line();
22027 let handles_before = decoder.remaining_handles();
22028 if let Some((inlined, num_bytes, num_handles)) =
22029 fidl::encoding::decode_envelope_header(decoder, next_offset)?
22030 {
22031 let member_inline_size =
22032 <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
22033 if inlined != (member_inline_size <= 4) {
22034 return Err(fidl::Error::InvalidInlineBitInEnvelope);
22035 }
22036 let inner_offset;
22037 let mut inner_depth = depth.clone();
22038 if inlined {
22039 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
22040 inner_offset = next_offset;
22041 } else {
22042 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
22043 inner_depth.increment()?;
22044 }
22045 let val_ref = self.channel.get_or_insert_with(|| fidl::new_empty!(u16, D));
22046 fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
22047 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
22048 {
22049 return Err(fidl::Error::InvalidNumBytesInEnvelope);
22050 }
22051 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
22052 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
22053 }
22054 }
22055
22056 next_offset += envelope_size;
22057 _next_ordinal_to_read += 1;
22058 if next_offset >= end_offset {
22059 return Ok(());
22060 }
22061
22062 while _next_ordinal_to_read < 10 {
22064 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
22065 _next_ordinal_to_read += 1;
22066 next_offset += envelope_size;
22067 }
22068
22069 let next_out_of_line = decoder.next_out_of_line();
22070 let handles_before = decoder.remaining_handles();
22071 if let Some((inlined, num_bytes, num_handles)) =
22072 fidl::encoding::decode_envelope_header(decoder, next_offset)?
22073 {
22074 let member_inline_size =
22075 <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
22076 if inlined != (member_inline_size <= 4) {
22077 return Err(fidl::Error::InvalidInlineBitInEnvelope);
22078 }
22079 let inner_offset;
22080 let mut inner_depth = depth.clone();
22081 if inlined {
22082 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
22083 inner_offset = next_offset;
22084 } else {
22085 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
22086 inner_depth.increment()?;
22087 }
22088 let val_ref = self.wakeup_channel.get_or_insert_with(|| fidl::new_empty!(u16, D));
22089 fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
22090 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
22091 {
22092 return Err(fidl::Error::InvalidNumBytesInEnvelope);
22093 }
22094 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
22095 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
22096 }
22097 }
22098
22099 next_offset += envelope_size;
22100 _next_ordinal_to_read += 1;
22101 if next_offset >= end_offset {
22102 return Ok(());
22103 }
22104
22105 while _next_ordinal_to_read < 11 {
22107 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
22108 _next_ordinal_to_read += 1;
22109 next_offset += envelope_size;
22110 }
22111
22112 let next_out_of_line = decoder.next_out_of_line();
22113 let handles_before = decoder.remaining_handles();
22114 if let Some((inlined, num_bytes, num_handles)) =
22115 fidl::encoding::decode_envelope_header(decoder, next_offset)?
22116 {
22117 let member_inline_size =
22118 <fidl::encoding::Vector<u8, 16> as fidl::encoding::TypeMarker>::inline_size(
22119 decoder.context,
22120 );
22121 if inlined != (member_inline_size <= 4) {
22122 return Err(fidl::Error::InvalidInlineBitInEnvelope);
22123 }
22124 let inner_offset;
22125 let mut inner_depth = depth.clone();
22126 if inlined {
22127 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
22128 inner_offset = next_offset;
22129 } else {
22130 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
22131 inner_depth.increment()?;
22132 }
22133 let val_ref = self
22134 .pskc
22135 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u8, 16>, D));
22136 fidl::decode!(fidl::encoding::Vector<u8, 16>, D, val_ref, decoder, inner_offset, inner_depth)?;
22137 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
22138 {
22139 return Err(fidl::Error::InvalidNumBytesInEnvelope);
22140 }
22141 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
22142 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
22143 }
22144 }
22145
22146 next_offset += envelope_size;
22147 _next_ordinal_to_read += 1;
22148 if next_offset >= end_offset {
22149 return Ok(());
22150 }
22151
22152 while _next_ordinal_to_read < 12 {
22154 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
22155 _next_ordinal_to_read += 1;
22156 next_offset += envelope_size;
22157 }
22158
22159 let next_out_of_line = decoder.next_out_of_line();
22160 let handles_before = decoder.remaining_handles();
22161 if let Some((inlined, num_bytes, num_handles)) =
22162 fidl::encoding::decode_envelope_header(decoder, next_offset)?
22163 {
22164 let member_inline_size =
22165 <SecurityPolicy as fidl::encoding::TypeMarker>::inline_size(decoder.context);
22166 if inlined != (member_inline_size <= 4) {
22167 return Err(fidl::Error::InvalidInlineBitInEnvelope);
22168 }
22169 let inner_offset;
22170 let mut inner_depth = depth.clone();
22171 if inlined {
22172 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
22173 inner_offset = next_offset;
22174 } else {
22175 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
22176 inner_depth.increment()?;
22177 }
22178 let val_ref =
22179 self.security_policy.get_or_insert_with(|| fidl::new_empty!(SecurityPolicy, D));
22180 fidl::decode!(SecurityPolicy, D, val_ref, decoder, inner_offset, inner_depth)?;
22181 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
22182 {
22183 return Err(fidl::Error::InvalidNumBytesInEnvelope);
22184 }
22185 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
22186 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
22187 }
22188 }
22189
22190 next_offset += envelope_size;
22191 _next_ordinal_to_read += 1;
22192 if next_offset >= end_offset {
22193 return Ok(());
22194 }
22195
22196 while _next_ordinal_to_read < 13 {
22198 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
22199 _next_ordinal_to_read += 1;
22200 next_offset += envelope_size;
22201 }
22202
22203 let next_out_of_line = decoder.next_out_of_line();
22204 let handles_before = decoder.remaining_handles();
22205 if let Some((inlined, num_bytes, num_handles)) =
22206 fidl::encoding::decode_envelope_header(decoder, next_offset)?
22207 {
22208 let member_inline_size =
22209 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
22210 if inlined != (member_inline_size <= 4) {
22211 return Err(fidl::Error::InvalidInlineBitInEnvelope);
22212 }
22213 let inner_offset;
22214 let mut inner_depth = depth.clone();
22215 if inlined {
22216 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
22217 inner_offset = next_offset;
22218 } else {
22219 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
22220 inner_depth.increment()?;
22221 }
22222 let val_ref = self.channel_mask.get_or_insert_with(|| fidl::new_empty!(u32, D));
22223 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
22224 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
22225 {
22226 return Err(fidl::Error::InvalidNumBytesInEnvelope);
22227 }
22228 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
22229 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
22230 }
22231 }
22232
22233 next_offset += envelope_size;
22234
22235 while next_offset < end_offset {
22237 _next_ordinal_to_read += 1;
22238 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
22239 next_offset += envelope_size;
22240 }
22241
22242 Ok(())
22243 }
22244 }
22245
22246 impl PdProcessedRaInfo {
22247 #[inline(always)]
22248 fn max_ordinal_present(&self) -> u64 {
22249 if let Some(_) = self.last_platform_ra_msec {
22250 return 3;
22251 }
22252 if let Some(_) = self.num_platform_pio_processed {
22253 return 2;
22254 }
22255 if let Some(_) = self.num_platform_ra_received {
22256 return 1;
22257 }
22258 0
22259 }
22260 }
22261
22262 impl fidl::encoding::ValueTypeMarker for PdProcessedRaInfo {
22263 type Borrowed<'a> = &'a Self;
22264 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
22265 value
22266 }
22267 }
22268
22269 unsafe impl fidl::encoding::TypeMarker for PdProcessedRaInfo {
22270 type Owned = Self;
22271
22272 #[inline(always)]
22273 fn inline_align(_context: fidl::encoding::Context) -> usize {
22274 8
22275 }
22276
22277 #[inline(always)]
22278 fn inline_size(_context: fidl::encoding::Context) -> usize {
22279 16
22280 }
22281 }
22282
22283 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<PdProcessedRaInfo, D>
22284 for &PdProcessedRaInfo
22285 {
22286 unsafe fn encode(
22287 self,
22288 encoder: &mut fidl::encoding::Encoder<'_, D>,
22289 offset: usize,
22290 mut depth: fidl::encoding::Depth,
22291 ) -> fidl::Result<()> {
22292 encoder.debug_check_bounds::<PdProcessedRaInfo>(offset);
22293 let max_ordinal: u64 = self.max_ordinal_present();
22295 encoder.write_num(max_ordinal, offset);
22296 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
22297 if max_ordinal == 0 {
22299 return Ok(());
22300 }
22301 depth.increment()?;
22302 let envelope_size = 8;
22303 let bytes_len = max_ordinal as usize * envelope_size;
22304 #[allow(unused_variables)]
22305 let offset = encoder.out_of_line_offset(bytes_len);
22306 let mut _prev_end_offset: usize = 0;
22307 if 1 > max_ordinal {
22308 return Ok(());
22309 }
22310
22311 let cur_offset: usize = (1 - 1) * envelope_size;
22314
22315 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
22317
22318 fidl::encoding::encode_in_envelope_optional::<u32, D>(
22323 self.num_platform_ra_received
22324 .as_ref()
22325 .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
22326 encoder,
22327 offset + cur_offset,
22328 depth,
22329 )?;
22330
22331 _prev_end_offset = cur_offset + envelope_size;
22332 if 2 > max_ordinal {
22333 return Ok(());
22334 }
22335
22336 let cur_offset: usize = (2 - 1) * envelope_size;
22339
22340 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
22342
22343 fidl::encoding::encode_in_envelope_optional::<u32, D>(
22348 self.num_platform_pio_processed
22349 .as_ref()
22350 .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
22351 encoder,
22352 offset + cur_offset,
22353 depth,
22354 )?;
22355
22356 _prev_end_offset = cur_offset + envelope_size;
22357 if 3 > max_ordinal {
22358 return Ok(());
22359 }
22360
22361 let cur_offset: usize = (3 - 1) * envelope_size;
22364
22365 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
22367
22368 fidl::encoding::encode_in_envelope_optional::<u32, D>(
22373 self.last_platform_ra_msec
22374 .as_ref()
22375 .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
22376 encoder,
22377 offset + cur_offset,
22378 depth,
22379 )?;
22380
22381 _prev_end_offset = cur_offset + envelope_size;
22382
22383 Ok(())
22384 }
22385 }
22386
22387 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for PdProcessedRaInfo {
22388 #[inline(always)]
22389 fn new_empty() -> Self {
22390 Self::default()
22391 }
22392
22393 unsafe fn decode(
22394 &mut self,
22395 decoder: &mut fidl::encoding::Decoder<'_, D>,
22396 offset: usize,
22397 mut depth: fidl::encoding::Depth,
22398 ) -> fidl::Result<()> {
22399 decoder.debug_check_bounds::<Self>(offset);
22400 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
22401 None => return Err(fidl::Error::NotNullable),
22402 Some(len) => len,
22403 };
22404 if len == 0 {
22406 return Ok(());
22407 };
22408 depth.increment()?;
22409 let envelope_size = 8;
22410 let bytes_len = len * envelope_size;
22411 let offset = decoder.out_of_line_offset(bytes_len)?;
22412 let mut _next_ordinal_to_read = 0;
22414 let mut next_offset = offset;
22415 let end_offset = offset + bytes_len;
22416 _next_ordinal_to_read += 1;
22417 if next_offset >= end_offset {
22418 return Ok(());
22419 }
22420
22421 while _next_ordinal_to_read < 1 {
22423 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
22424 _next_ordinal_to_read += 1;
22425 next_offset += envelope_size;
22426 }
22427
22428 let next_out_of_line = decoder.next_out_of_line();
22429 let handles_before = decoder.remaining_handles();
22430 if let Some((inlined, num_bytes, num_handles)) =
22431 fidl::encoding::decode_envelope_header(decoder, next_offset)?
22432 {
22433 let member_inline_size =
22434 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
22435 if inlined != (member_inline_size <= 4) {
22436 return Err(fidl::Error::InvalidInlineBitInEnvelope);
22437 }
22438 let inner_offset;
22439 let mut inner_depth = depth.clone();
22440 if inlined {
22441 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
22442 inner_offset = next_offset;
22443 } else {
22444 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
22445 inner_depth.increment()?;
22446 }
22447 let val_ref =
22448 self.num_platform_ra_received.get_or_insert_with(|| fidl::new_empty!(u32, D));
22449 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
22450 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
22451 {
22452 return Err(fidl::Error::InvalidNumBytesInEnvelope);
22453 }
22454 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
22455 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
22456 }
22457 }
22458
22459 next_offset += envelope_size;
22460 _next_ordinal_to_read += 1;
22461 if next_offset >= end_offset {
22462 return Ok(());
22463 }
22464
22465 while _next_ordinal_to_read < 2 {
22467 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
22468 _next_ordinal_to_read += 1;
22469 next_offset += envelope_size;
22470 }
22471
22472 let next_out_of_line = decoder.next_out_of_line();
22473 let handles_before = decoder.remaining_handles();
22474 if let Some((inlined, num_bytes, num_handles)) =
22475 fidl::encoding::decode_envelope_header(decoder, next_offset)?
22476 {
22477 let member_inline_size =
22478 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
22479 if inlined != (member_inline_size <= 4) {
22480 return Err(fidl::Error::InvalidInlineBitInEnvelope);
22481 }
22482 let inner_offset;
22483 let mut inner_depth = depth.clone();
22484 if inlined {
22485 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
22486 inner_offset = next_offset;
22487 } else {
22488 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
22489 inner_depth.increment()?;
22490 }
22491 let val_ref =
22492 self.num_platform_pio_processed.get_or_insert_with(|| fidl::new_empty!(u32, D));
22493 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
22494 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
22495 {
22496 return Err(fidl::Error::InvalidNumBytesInEnvelope);
22497 }
22498 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
22499 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
22500 }
22501 }
22502
22503 next_offset += envelope_size;
22504 _next_ordinal_to_read += 1;
22505 if next_offset >= end_offset {
22506 return Ok(());
22507 }
22508
22509 while _next_ordinal_to_read < 3 {
22511 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
22512 _next_ordinal_to_read += 1;
22513 next_offset += envelope_size;
22514 }
22515
22516 let next_out_of_line = decoder.next_out_of_line();
22517 let handles_before = decoder.remaining_handles();
22518 if let Some((inlined, num_bytes, num_handles)) =
22519 fidl::encoding::decode_envelope_header(decoder, next_offset)?
22520 {
22521 let member_inline_size =
22522 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
22523 if inlined != (member_inline_size <= 4) {
22524 return Err(fidl::Error::InvalidInlineBitInEnvelope);
22525 }
22526 let inner_offset;
22527 let mut inner_depth = depth.clone();
22528 if inlined {
22529 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
22530 inner_offset = next_offset;
22531 } else {
22532 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
22533 inner_depth.increment()?;
22534 }
22535 let val_ref =
22536 self.last_platform_ra_msec.get_or_insert_with(|| fidl::new_empty!(u32, D));
22537 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
22538 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
22539 {
22540 return Err(fidl::Error::InvalidNumBytesInEnvelope);
22541 }
22542 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
22543 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
22544 }
22545 }
22546
22547 next_offset += envelope_size;
22548
22549 while next_offset < end_offset {
22551 _next_ordinal_to_read += 1;
22552 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
22553 next_offset += envelope_size;
22554 }
22555
22556 Ok(())
22557 }
22558 }
22559
22560 impl RadioLinkInfo {
22561 #[inline(always)]
22562 fn max_ordinal_present(&self) -> u64 {
22563 if let Some(_) = self.preference {
22564 return 2;
22565 }
22566 if let Some(_) = self.link_type {
22567 return 1;
22568 }
22569 0
22570 }
22571 }
22572
22573 impl fidl::encoding::ValueTypeMarker for RadioLinkInfo {
22574 type Borrowed<'a> = &'a Self;
22575 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
22576 value
22577 }
22578 }
22579
22580 unsafe impl fidl::encoding::TypeMarker for RadioLinkInfo {
22581 type Owned = Self;
22582
22583 #[inline(always)]
22584 fn inline_align(_context: fidl::encoding::Context) -> usize {
22585 8
22586 }
22587
22588 #[inline(always)]
22589 fn inline_size(_context: fidl::encoding::Context) -> usize {
22590 16
22591 }
22592 }
22593
22594 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<RadioLinkInfo, D>
22595 for &RadioLinkInfo
22596 {
22597 unsafe fn encode(
22598 self,
22599 encoder: &mut fidl::encoding::Encoder<'_, D>,
22600 offset: usize,
22601 mut depth: fidl::encoding::Depth,
22602 ) -> fidl::Result<()> {
22603 encoder.debug_check_bounds::<RadioLinkInfo>(offset);
22604 let max_ordinal: u64 = self.max_ordinal_present();
22606 encoder.write_num(max_ordinal, offset);
22607 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
22608 if max_ordinal == 0 {
22610 return Ok(());
22611 }
22612 depth.increment()?;
22613 let envelope_size = 8;
22614 let bytes_len = max_ordinal as usize * envelope_size;
22615 #[allow(unused_variables)]
22616 let offset = encoder.out_of_line_offset(bytes_len);
22617 let mut _prev_end_offset: usize = 0;
22618 if 1 > max_ordinal {
22619 return Ok(());
22620 }
22621
22622 let cur_offset: usize = (1 - 1) * envelope_size;
22625
22626 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
22628
22629 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<10>, D>(
22634 self.link_type.as_ref().map(
22635 <fidl::encoding::BoundedString<10> as fidl::encoding::ValueTypeMarker>::borrow,
22636 ),
22637 encoder,
22638 offset + cur_offset,
22639 depth,
22640 )?;
22641
22642 _prev_end_offset = cur_offset + envelope_size;
22643 if 2 > max_ordinal {
22644 return Ok(());
22645 }
22646
22647 let cur_offset: usize = (2 - 1) * envelope_size;
22650
22651 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
22653
22654 fidl::encoding::encode_in_envelope_optional::<u8, D>(
22659 self.preference.as_ref().map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
22660 encoder,
22661 offset + cur_offset,
22662 depth,
22663 )?;
22664
22665 _prev_end_offset = cur_offset + envelope_size;
22666
22667 Ok(())
22668 }
22669 }
22670
22671 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for RadioLinkInfo {
22672 #[inline(always)]
22673 fn new_empty() -> Self {
22674 Self::default()
22675 }
22676
22677 unsafe fn decode(
22678 &mut self,
22679 decoder: &mut fidl::encoding::Decoder<'_, D>,
22680 offset: usize,
22681 mut depth: fidl::encoding::Depth,
22682 ) -> fidl::Result<()> {
22683 decoder.debug_check_bounds::<Self>(offset);
22684 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
22685 None => return Err(fidl::Error::NotNullable),
22686 Some(len) => len,
22687 };
22688 if len == 0 {
22690 return Ok(());
22691 };
22692 depth.increment()?;
22693 let envelope_size = 8;
22694 let bytes_len = len * envelope_size;
22695 let offset = decoder.out_of_line_offset(bytes_len)?;
22696 let mut _next_ordinal_to_read = 0;
22698 let mut next_offset = offset;
22699 let end_offset = offset + bytes_len;
22700 _next_ordinal_to_read += 1;
22701 if next_offset >= end_offset {
22702 return Ok(());
22703 }
22704
22705 while _next_ordinal_to_read < 1 {
22707 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
22708 _next_ordinal_to_read += 1;
22709 next_offset += envelope_size;
22710 }
22711
22712 let next_out_of_line = decoder.next_out_of_line();
22713 let handles_before = decoder.remaining_handles();
22714 if let Some((inlined, num_bytes, num_handles)) =
22715 fidl::encoding::decode_envelope_header(decoder, next_offset)?
22716 {
22717 let member_inline_size =
22718 <fidl::encoding::BoundedString<10> as fidl::encoding::TypeMarker>::inline_size(
22719 decoder.context,
22720 );
22721 if inlined != (member_inline_size <= 4) {
22722 return Err(fidl::Error::InvalidInlineBitInEnvelope);
22723 }
22724 let inner_offset;
22725 let mut inner_depth = depth.clone();
22726 if inlined {
22727 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
22728 inner_offset = next_offset;
22729 } else {
22730 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
22731 inner_depth.increment()?;
22732 }
22733 let val_ref = self
22734 .link_type
22735 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<10>, D));
22736 fidl::decode!(
22737 fidl::encoding::BoundedString<10>,
22738 D,
22739 val_ref,
22740 decoder,
22741 inner_offset,
22742 inner_depth
22743 )?;
22744 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
22745 {
22746 return Err(fidl::Error::InvalidNumBytesInEnvelope);
22747 }
22748 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
22749 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
22750 }
22751 }
22752
22753 next_offset += envelope_size;
22754 _next_ordinal_to_read += 1;
22755 if next_offset >= end_offset {
22756 return Ok(());
22757 }
22758
22759 while _next_ordinal_to_read < 2 {
22761 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
22762 _next_ordinal_to_read += 1;
22763 next_offset += envelope_size;
22764 }
22765
22766 let next_out_of_line = decoder.next_out_of_line();
22767 let handles_before = decoder.remaining_handles();
22768 if let Some((inlined, num_bytes, num_handles)) =
22769 fidl::encoding::decode_envelope_header(decoder, next_offset)?
22770 {
22771 let member_inline_size =
22772 <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
22773 if inlined != (member_inline_size <= 4) {
22774 return Err(fidl::Error::InvalidInlineBitInEnvelope);
22775 }
22776 let inner_offset;
22777 let mut inner_depth = depth.clone();
22778 if inlined {
22779 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
22780 inner_offset = next_offset;
22781 } else {
22782 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
22783 inner_depth.increment()?;
22784 }
22785 let val_ref = self.preference.get_or_insert_with(|| fidl::new_empty!(u8, D));
22786 fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
22787 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
22788 {
22789 return Err(fidl::Error::InvalidNumBytesInEnvelope);
22790 }
22791 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
22792 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
22793 }
22794 }
22795
22796 next_offset += envelope_size;
22797
22798 while next_offset < end_offset {
22800 _next_ordinal_to_read += 1;
22801 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
22802 next_offset += envelope_size;
22803 }
22804
22805 Ok(())
22806 }
22807 }
22808
22809 impl RouterInfo {
22810 #[inline(always)]
22811 fn max_ordinal_present(&self) -> u64 {
22812 if let Some(_) = self.link_established {
22813 return 9;
22814 }
22815 if let Some(_) = self.age {
22816 return 8;
22817 }
22818 if let Some(_) = self.link_quality_out {
22819 return 7;
22820 }
22821 if let Some(_) = self.link_quality_in {
22822 return 6;
22823 }
22824 if let Some(_) = self.path_cost {
22825 return 5;
22826 }
22827 if let Some(_) = self.next_hop {
22828 return 4;
22829 }
22830 if let Some(_) = self.router_id {
22831 return 3;
22832 }
22833 if let Some(_) = self.thread_rloc {
22834 return 2;
22835 }
22836 if let Some(_) = self.extended_address {
22837 return 1;
22838 }
22839 0
22840 }
22841 }
22842
22843 impl fidl::encoding::ValueTypeMarker for RouterInfo {
22844 type Borrowed<'a> = &'a Self;
22845 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
22846 value
22847 }
22848 }
22849
22850 unsafe impl fidl::encoding::TypeMarker for RouterInfo {
22851 type Owned = Self;
22852
22853 #[inline(always)]
22854 fn inline_align(_context: fidl::encoding::Context) -> usize {
22855 8
22856 }
22857
22858 #[inline(always)]
22859 fn inline_size(_context: fidl::encoding::Context) -> usize {
22860 16
22861 }
22862 }
22863
22864 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<RouterInfo, D>
22865 for &RouterInfo
22866 {
22867 unsafe fn encode(
22868 self,
22869 encoder: &mut fidl::encoding::Encoder<'_, D>,
22870 offset: usize,
22871 mut depth: fidl::encoding::Depth,
22872 ) -> fidl::Result<()> {
22873 encoder.debug_check_bounds::<RouterInfo>(offset);
22874 let max_ordinal: u64 = self.max_ordinal_present();
22876 encoder.write_num(max_ordinal, offset);
22877 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
22878 if max_ordinal == 0 {
22880 return Ok(());
22881 }
22882 depth.increment()?;
22883 let envelope_size = 8;
22884 let bytes_len = max_ordinal as usize * envelope_size;
22885 #[allow(unused_variables)]
22886 let offset = encoder.out_of_line_offset(bytes_len);
22887 let mut _prev_end_offset: usize = 0;
22888 if 1 > max_ordinal {
22889 return Ok(());
22890 }
22891
22892 let cur_offset: usize = (1 - 1) * envelope_size;
22895
22896 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
22898
22899 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<u8, 8>, D>(
22904 self.extended_address.as_ref().map(
22905 <fidl::encoding::Vector<u8, 8> as fidl::encoding::ValueTypeMarker>::borrow,
22906 ),
22907 encoder,
22908 offset + cur_offset,
22909 depth,
22910 )?;
22911
22912 _prev_end_offset = cur_offset + envelope_size;
22913 if 2 > max_ordinal {
22914 return Ok(());
22915 }
22916
22917 let cur_offset: usize = (2 - 1) * envelope_size;
22920
22921 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
22923
22924 fidl::encoding::encode_in_envelope_optional::<u16, D>(
22929 self.thread_rloc.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
22930 encoder,
22931 offset + cur_offset,
22932 depth,
22933 )?;
22934
22935 _prev_end_offset = cur_offset + envelope_size;
22936 if 3 > max_ordinal {
22937 return Ok(());
22938 }
22939
22940 let cur_offset: usize = (3 - 1) * envelope_size;
22943
22944 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
22946
22947 fidl::encoding::encode_in_envelope_optional::<u8, D>(
22952 self.router_id.as_ref().map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
22953 encoder,
22954 offset + cur_offset,
22955 depth,
22956 )?;
22957
22958 _prev_end_offset = cur_offset + envelope_size;
22959 if 4 > max_ordinal {
22960 return Ok(());
22961 }
22962
22963 let cur_offset: usize = (4 - 1) * envelope_size;
22966
22967 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
22969
22970 fidl::encoding::encode_in_envelope_optional::<u8, D>(
22975 self.next_hop.as_ref().map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
22976 encoder,
22977 offset + cur_offset,
22978 depth,
22979 )?;
22980
22981 _prev_end_offset = cur_offset + envelope_size;
22982 if 5 > max_ordinal {
22983 return Ok(());
22984 }
22985
22986 let cur_offset: usize = (5 - 1) * envelope_size;
22989
22990 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
22992
22993 fidl::encoding::encode_in_envelope_optional::<u8, D>(
22998 self.path_cost.as_ref().map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
22999 encoder,
23000 offset + cur_offset,
23001 depth,
23002 )?;
23003
23004 _prev_end_offset = cur_offset + envelope_size;
23005 if 6 > max_ordinal {
23006 return Ok(());
23007 }
23008
23009 let cur_offset: usize = (6 - 1) * envelope_size;
23012
23013 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
23015
23016 fidl::encoding::encode_in_envelope_optional::<u8, D>(
23021 self.link_quality_in.as_ref().map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
23022 encoder,
23023 offset + cur_offset,
23024 depth,
23025 )?;
23026
23027 _prev_end_offset = cur_offset + envelope_size;
23028 if 7 > max_ordinal {
23029 return Ok(());
23030 }
23031
23032 let cur_offset: usize = (7 - 1) * envelope_size;
23035
23036 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
23038
23039 fidl::encoding::encode_in_envelope_optional::<u8, D>(
23044 self.link_quality_out.as_ref().map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
23045 encoder,
23046 offset + cur_offset,
23047 depth,
23048 )?;
23049
23050 _prev_end_offset = cur_offset + envelope_size;
23051 if 8 > max_ordinal {
23052 return Ok(());
23053 }
23054
23055 let cur_offset: usize = (8 - 1) * envelope_size;
23058
23059 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
23061
23062 fidl::encoding::encode_in_envelope_optional::<i64, D>(
23067 self.age.as_ref().map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
23068 encoder,
23069 offset + cur_offset,
23070 depth,
23071 )?;
23072
23073 _prev_end_offset = cur_offset + envelope_size;
23074 if 9 > max_ordinal {
23075 return Ok(());
23076 }
23077
23078 let cur_offset: usize = (9 - 1) * envelope_size;
23081
23082 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
23084
23085 fidl::encoding::encode_in_envelope_optional::<bool, D>(
23090 self.link_established
23091 .as_ref()
23092 .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
23093 encoder,
23094 offset + cur_offset,
23095 depth,
23096 )?;
23097
23098 _prev_end_offset = cur_offset + envelope_size;
23099
23100 Ok(())
23101 }
23102 }
23103
23104 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for RouterInfo {
23105 #[inline(always)]
23106 fn new_empty() -> Self {
23107 Self::default()
23108 }
23109
23110 unsafe fn decode(
23111 &mut self,
23112 decoder: &mut fidl::encoding::Decoder<'_, D>,
23113 offset: usize,
23114 mut depth: fidl::encoding::Depth,
23115 ) -> fidl::Result<()> {
23116 decoder.debug_check_bounds::<Self>(offset);
23117 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
23118 None => return Err(fidl::Error::NotNullable),
23119 Some(len) => len,
23120 };
23121 if len == 0 {
23123 return Ok(());
23124 };
23125 depth.increment()?;
23126 let envelope_size = 8;
23127 let bytes_len = len * envelope_size;
23128 let offset = decoder.out_of_line_offset(bytes_len)?;
23129 let mut _next_ordinal_to_read = 0;
23131 let mut next_offset = offset;
23132 let end_offset = offset + bytes_len;
23133 _next_ordinal_to_read += 1;
23134 if next_offset >= end_offset {
23135 return Ok(());
23136 }
23137
23138 while _next_ordinal_to_read < 1 {
23140 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
23141 _next_ordinal_to_read += 1;
23142 next_offset += envelope_size;
23143 }
23144
23145 let next_out_of_line = decoder.next_out_of_line();
23146 let handles_before = decoder.remaining_handles();
23147 if let Some((inlined, num_bytes, num_handles)) =
23148 fidl::encoding::decode_envelope_header(decoder, next_offset)?
23149 {
23150 let member_inline_size =
23151 <fidl::encoding::Vector<u8, 8> as fidl::encoding::TypeMarker>::inline_size(
23152 decoder.context,
23153 );
23154 if inlined != (member_inline_size <= 4) {
23155 return Err(fidl::Error::InvalidInlineBitInEnvelope);
23156 }
23157 let inner_offset;
23158 let mut inner_depth = depth.clone();
23159 if inlined {
23160 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
23161 inner_offset = next_offset;
23162 } else {
23163 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
23164 inner_depth.increment()?;
23165 }
23166 let val_ref = self
23167 .extended_address
23168 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u8, 8>, D));
23169 fidl::decode!(fidl::encoding::Vector<u8, 8>, D, val_ref, decoder, inner_offset, inner_depth)?;
23170 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
23171 {
23172 return Err(fidl::Error::InvalidNumBytesInEnvelope);
23173 }
23174 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
23175 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
23176 }
23177 }
23178
23179 next_offset += envelope_size;
23180 _next_ordinal_to_read += 1;
23181 if next_offset >= end_offset {
23182 return Ok(());
23183 }
23184
23185 while _next_ordinal_to_read < 2 {
23187 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
23188 _next_ordinal_to_read += 1;
23189 next_offset += envelope_size;
23190 }
23191
23192 let next_out_of_line = decoder.next_out_of_line();
23193 let handles_before = decoder.remaining_handles();
23194 if let Some((inlined, num_bytes, num_handles)) =
23195 fidl::encoding::decode_envelope_header(decoder, next_offset)?
23196 {
23197 let member_inline_size =
23198 <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
23199 if inlined != (member_inline_size <= 4) {
23200 return Err(fidl::Error::InvalidInlineBitInEnvelope);
23201 }
23202 let inner_offset;
23203 let mut inner_depth = depth.clone();
23204 if inlined {
23205 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
23206 inner_offset = next_offset;
23207 } else {
23208 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
23209 inner_depth.increment()?;
23210 }
23211 let val_ref = self.thread_rloc.get_or_insert_with(|| fidl::new_empty!(u16, D));
23212 fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
23213 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
23214 {
23215 return Err(fidl::Error::InvalidNumBytesInEnvelope);
23216 }
23217 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
23218 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
23219 }
23220 }
23221
23222 next_offset += envelope_size;
23223 _next_ordinal_to_read += 1;
23224 if next_offset >= end_offset {
23225 return Ok(());
23226 }
23227
23228 while _next_ordinal_to_read < 3 {
23230 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
23231 _next_ordinal_to_read += 1;
23232 next_offset += envelope_size;
23233 }
23234
23235 let next_out_of_line = decoder.next_out_of_line();
23236 let handles_before = decoder.remaining_handles();
23237 if let Some((inlined, num_bytes, num_handles)) =
23238 fidl::encoding::decode_envelope_header(decoder, next_offset)?
23239 {
23240 let member_inline_size =
23241 <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
23242 if inlined != (member_inline_size <= 4) {
23243 return Err(fidl::Error::InvalidInlineBitInEnvelope);
23244 }
23245 let inner_offset;
23246 let mut inner_depth = depth.clone();
23247 if inlined {
23248 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
23249 inner_offset = next_offset;
23250 } else {
23251 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
23252 inner_depth.increment()?;
23253 }
23254 let val_ref = self.router_id.get_or_insert_with(|| fidl::new_empty!(u8, D));
23255 fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
23256 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
23257 {
23258 return Err(fidl::Error::InvalidNumBytesInEnvelope);
23259 }
23260 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
23261 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
23262 }
23263 }
23264
23265 next_offset += envelope_size;
23266 _next_ordinal_to_read += 1;
23267 if next_offset >= end_offset {
23268 return Ok(());
23269 }
23270
23271 while _next_ordinal_to_read < 4 {
23273 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
23274 _next_ordinal_to_read += 1;
23275 next_offset += envelope_size;
23276 }
23277
23278 let next_out_of_line = decoder.next_out_of_line();
23279 let handles_before = decoder.remaining_handles();
23280 if let Some((inlined, num_bytes, num_handles)) =
23281 fidl::encoding::decode_envelope_header(decoder, next_offset)?
23282 {
23283 let member_inline_size =
23284 <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
23285 if inlined != (member_inline_size <= 4) {
23286 return Err(fidl::Error::InvalidInlineBitInEnvelope);
23287 }
23288 let inner_offset;
23289 let mut inner_depth = depth.clone();
23290 if inlined {
23291 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
23292 inner_offset = next_offset;
23293 } else {
23294 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
23295 inner_depth.increment()?;
23296 }
23297 let val_ref = self.next_hop.get_or_insert_with(|| fidl::new_empty!(u8, D));
23298 fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
23299 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
23300 {
23301 return Err(fidl::Error::InvalidNumBytesInEnvelope);
23302 }
23303 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
23304 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
23305 }
23306 }
23307
23308 next_offset += envelope_size;
23309 _next_ordinal_to_read += 1;
23310 if next_offset >= end_offset {
23311 return Ok(());
23312 }
23313
23314 while _next_ordinal_to_read < 5 {
23316 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
23317 _next_ordinal_to_read += 1;
23318 next_offset += envelope_size;
23319 }
23320
23321 let next_out_of_line = decoder.next_out_of_line();
23322 let handles_before = decoder.remaining_handles();
23323 if let Some((inlined, num_bytes, num_handles)) =
23324 fidl::encoding::decode_envelope_header(decoder, next_offset)?
23325 {
23326 let member_inline_size =
23327 <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
23328 if inlined != (member_inline_size <= 4) {
23329 return Err(fidl::Error::InvalidInlineBitInEnvelope);
23330 }
23331 let inner_offset;
23332 let mut inner_depth = depth.clone();
23333 if inlined {
23334 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
23335 inner_offset = next_offset;
23336 } else {
23337 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
23338 inner_depth.increment()?;
23339 }
23340 let val_ref = self.path_cost.get_or_insert_with(|| fidl::new_empty!(u8, D));
23341 fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
23342 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
23343 {
23344 return Err(fidl::Error::InvalidNumBytesInEnvelope);
23345 }
23346 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
23347 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
23348 }
23349 }
23350
23351 next_offset += envelope_size;
23352 _next_ordinal_to_read += 1;
23353 if next_offset >= end_offset {
23354 return Ok(());
23355 }
23356
23357 while _next_ordinal_to_read < 6 {
23359 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
23360 _next_ordinal_to_read += 1;
23361 next_offset += envelope_size;
23362 }
23363
23364 let next_out_of_line = decoder.next_out_of_line();
23365 let handles_before = decoder.remaining_handles();
23366 if let Some((inlined, num_bytes, num_handles)) =
23367 fidl::encoding::decode_envelope_header(decoder, next_offset)?
23368 {
23369 let member_inline_size =
23370 <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
23371 if inlined != (member_inline_size <= 4) {
23372 return Err(fidl::Error::InvalidInlineBitInEnvelope);
23373 }
23374 let inner_offset;
23375 let mut inner_depth = depth.clone();
23376 if inlined {
23377 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
23378 inner_offset = next_offset;
23379 } else {
23380 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
23381 inner_depth.increment()?;
23382 }
23383 let val_ref = self.link_quality_in.get_or_insert_with(|| fidl::new_empty!(u8, D));
23384 fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
23385 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
23386 {
23387 return Err(fidl::Error::InvalidNumBytesInEnvelope);
23388 }
23389 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
23390 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
23391 }
23392 }
23393
23394 next_offset += envelope_size;
23395 _next_ordinal_to_read += 1;
23396 if next_offset >= end_offset {
23397 return Ok(());
23398 }
23399
23400 while _next_ordinal_to_read < 7 {
23402 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
23403 _next_ordinal_to_read += 1;
23404 next_offset += envelope_size;
23405 }
23406
23407 let next_out_of_line = decoder.next_out_of_line();
23408 let handles_before = decoder.remaining_handles();
23409 if let Some((inlined, num_bytes, num_handles)) =
23410 fidl::encoding::decode_envelope_header(decoder, next_offset)?
23411 {
23412 let member_inline_size =
23413 <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
23414 if inlined != (member_inline_size <= 4) {
23415 return Err(fidl::Error::InvalidInlineBitInEnvelope);
23416 }
23417 let inner_offset;
23418 let mut inner_depth = depth.clone();
23419 if inlined {
23420 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
23421 inner_offset = next_offset;
23422 } else {
23423 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
23424 inner_depth.increment()?;
23425 }
23426 let val_ref = self.link_quality_out.get_or_insert_with(|| fidl::new_empty!(u8, D));
23427 fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
23428 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
23429 {
23430 return Err(fidl::Error::InvalidNumBytesInEnvelope);
23431 }
23432 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
23433 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
23434 }
23435 }
23436
23437 next_offset += envelope_size;
23438 _next_ordinal_to_read += 1;
23439 if next_offset >= end_offset {
23440 return Ok(());
23441 }
23442
23443 while _next_ordinal_to_read < 8 {
23445 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
23446 _next_ordinal_to_read += 1;
23447 next_offset += envelope_size;
23448 }
23449
23450 let next_out_of_line = decoder.next_out_of_line();
23451 let handles_before = decoder.remaining_handles();
23452 if let Some((inlined, num_bytes, num_handles)) =
23453 fidl::encoding::decode_envelope_header(decoder, next_offset)?
23454 {
23455 let member_inline_size =
23456 <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
23457 if inlined != (member_inline_size <= 4) {
23458 return Err(fidl::Error::InvalidInlineBitInEnvelope);
23459 }
23460 let inner_offset;
23461 let mut inner_depth = depth.clone();
23462 if inlined {
23463 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
23464 inner_offset = next_offset;
23465 } else {
23466 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
23467 inner_depth.increment()?;
23468 }
23469 let val_ref = self.age.get_or_insert_with(|| fidl::new_empty!(i64, D));
23470 fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
23471 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
23472 {
23473 return Err(fidl::Error::InvalidNumBytesInEnvelope);
23474 }
23475 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
23476 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
23477 }
23478 }
23479
23480 next_offset += envelope_size;
23481 _next_ordinal_to_read += 1;
23482 if next_offset >= end_offset {
23483 return Ok(());
23484 }
23485
23486 while _next_ordinal_to_read < 9 {
23488 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
23489 _next_ordinal_to_read += 1;
23490 next_offset += envelope_size;
23491 }
23492
23493 let next_out_of_line = decoder.next_out_of_line();
23494 let handles_before = decoder.remaining_handles();
23495 if let Some((inlined, num_bytes, num_handles)) =
23496 fidl::encoding::decode_envelope_header(decoder, next_offset)?
23497 {
23498 let member_inline_size =
23499 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
23500 if inlined != (member_inline_size <= 4) {
23501 return Err(fidl::Error::InvalidInlineBitInEnvelope);
23502 }
23503 let inner_offset;
23504 let mut inner_depth = depth.clone();
23505 if inlined {
23506 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
23507 inner_offset = next_offset;
23508 } else {
23509 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
23510 inner_depth.increment()?;
23511 }
23512 let val_ref =
23513 self.link_established.get_or_insert_with(|| fidl::new_empty!(bool, D));
23514 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
23515 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
23516 {
23517 return Err(fidl::Error::InvalidNumBytesInEnvelope);
23518 }
23519 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
23520 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
23521 }
23522 }
23523
23524 next_offset += envelope_size;
23525
23526 while next_offset < end_offset {
23528 _next_ordinal_to_read += 1;
23529 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
23530 next_offset += envelope_size;
23531 }
23532
23533 Ok(())
23534 }
23535 }
23536
23537 impl SecurityPolicy {
23538 #[inline(always)]
23539 fn max_ordinal_present(&self) -> u64 {
23540 if let Some(_) = self.version_threshold_for_routing {
23541 return 10;
23542 }
23543 if let Some(_) = self.nonccm_routers_enabled {
23544 return 9;
23545 }
23546 if let Some(_) = self.toble_link_enabled {
23547 return 8;
23548 }
23549 if let Some(_) = self.network_key_provisioning_enabled {
23550 return 7;
23551 }
23552 if let Some(_) = self.autonomous_enrollment_enabled {
23553 return 6;
23554 }
23555 if let Some(_) = self.external_commissioning_enabled {
23556 return 5;
23557 }
23558 if let Some(_) = self.routers_enabled {
23559 return 4;
23560 }
23561 if let Some(_) = self.native_commissioning_enabled {
23562 return 3;
23563 }
23564 if let Some(_) = self.obtain_network_key_enabled {
23565 return 2;
23566 }
23567 if let Some(_) = self.rotation_time {
23568 return 1;
23569 }
23570 0
23571 }
23572 }
23573
23574 impl fidl::encoding::ValueTypeMarker for SecurityPolicy {
23575 type Borrowed<'a> = &'a Self;
23576 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
23577 value
23578 }
23579 }
23580
23581 unsafe impl fidl::encoding::TypeMarker for SecurityPolicy {
23582 type Owned = Self;
23583
23584 #[inline(always)]
23585 fn inline_align(_context: fidl::encoding::Context) -> usize {
23586 8
23587 }
23588
23589 #[inline(always)]
23590 fn inline_size(_context: fidl::encoding::Context) -> usize {
23591 16
23592 }
23593 }
23594
23595 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<SecurityPolicy, D>
23596 for &SecurityPolicy
23597 {
23598 unsafe fn encode(
23599 self,
23600 encoder: &mut fidl::encoding::Encoder<'_, D>,
23601 offset: usize,
23602 mut depth: fidl::encoding::Depth,
23603 ) -> fidl::Result<()> {
23604 encoder.debug_check_bounds::<SecurityPolicy>(offset);
23605 let max_ordinal: u64 = self.max_ordinal_present();
23607 encoder.write_num(max_ordinal, offset);
23608 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
23609 if max_ordinal == 0 {
23611 return Ok(());
23612 }
23613 depth.increment()?;
23614 let envelope_size = 8;
23615 let bytes_len = max_ordinal as usize * envelope_size;
23616 #[allow(unused_variables)]
23617 let offset = encoder.out_of_line_offset(bytes_len);
23618 let mut _prev_end_offset: usize = 0;
23619 if 1 > max_ordinal {
23620 return Ok(());
23621 }
23622
23623 let cur_offset: usize = (1 - 1) * envelope_size;
23626
23627 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
23629
23630 fidl::encoding::encode_in_envelope_optional::<u16, D>(
23635 self.rotation_time.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
23636 encoder,
23637 offset + cur_offset,
23638 depth,
23639 )?;
23640
23641 _prev_end_offset = cur_offset + envelope_size;
23642 if 2 > max_ordinal {
23643 return Ok(());
23644 }
23645
23646 let cur_offset: usize = (2 - 1) * envelope_size;
23649
23650 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
23652
23653 fidl::encoding::encode_in_envelope_optional::<bool, D>(
23658 self.obtain_network_key_enabled
23659 .as_ref()
23660 .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
23661 encoder,
23662 offset + cur_offset,
23663 depth,
23664 )?;
23665
23666 _prev_end_offset = cur_offset + envelope_size;
23667 if 3 > max_ordinal {
23668 return Ok(());
23669 }
23670
23671 let cur_offset: usize = (3 - 1) * envelope_size;
23674
23675 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
23677
23678 fidl::encoding::encode_in_envelope_optional::<bool, D>(
23683 self.native_commissioning_enabled
23684 .as_ref()
23685 .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
23686 encoder,
23687 offset + cur_offset,
23688 depth,
23689 )?;
23690
23691 _prev_end_offset = cur_offset + envelope_size;
23692 if 4 > max_ordinal {
23693 return Ok(());
23694 }
23695
23696 let cur_offset: usize = (4 - 1) * envelope_size;
23699
23700 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
23702
23703 fidl::encoding::encode_in_envelope_optional::<bool, D>(
23708 self.routers_enabled
23709 .as_ref()
23710 .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
23711 encoder,
23712 offset + cur_offset,
23713 depth,
23714 )?;
23715
23716 _prev_end_offset = cur_offset + envelope_size;
23717 if 5 > max_ordinal {
23718 return Ok(());
23719 }
23720
23721 let cur_offset: usize = (5 - 1) * envelope_size;
23724
23725 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
23727
23728 fidl::encoding::encode_in_envelope_optional::<bool, D>(
23733 self.external_commissioning_enabled
23734 .as_ref()
23735 .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
23736 encoder,
23737 offset + cur_offset,
23738 depth,
23739 )?;
23740
23741 _prev_end_offset = cur_offset + envelope_size;
23742 if 6 > max_ordinal {
23743 return Ok(());
23744 }
23745
23746 let cur_offset: usize = (6 - 1) * envelope_size;
23749
23750 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
23752
23753 fidl::encoding::encode_in_envelope_optional::<bool, D>(
23758 self.autonomous_enrollment_enabled
23759 .as_ref()
23760 .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
23761 encoder,
23762 offset + cur_offset,
23763 depth,
23764 )?;
23765
23766 _prev_end_offset = cur_offset + envelope_size;
23767 if 7 > max_ordinal {
23768 return Ok(());
23769 }
23770
23771 let cur_offset: usize = (7 - 1) * envelope_size;
23774
23775 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
23777
23778 fidl::encoding::encode_in_envelope_optional::<bool, D>(
23783 self.network_key_provisioning_enabled
23784 .as_ref()
23785 .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
23786 encoder,
23787 offset + cur_offset,
23788 depth,
23789 )?;
23790
23791 _prev_end_offset = cur_offset + envelope_size;
23792 if 8 > max_ordinal {
23793 return Ok(());
23794 }
23795
23796 let cur_offset: usize = (8 - 1) * envelope_size;
23799
23800 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
23802
23803 fidl::encoding::encode_in_envelope_optional::<bool, D>(
23808 self.toble_link_enabled
23809 .as_ref()
23810 .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
23811 encoder,
23812 offset + cur_offset,
23813 depth,
23814 )?;
23815
23816 _prev_end_offset = cur_offset + envelope_size;
23817 if 9 > max_ordinal {
23818 return Ok(());
23819 }
23820
23821 let cur_offset: usize = (9 - 1) * envelope_size;
23824
23825 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
23827
23828 fidl::encoding::encode_in_envelope_optional::<bool, D>(
23833 self.nonccm_routers_enabled
23834 .as_ref()
23835 .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
23836 encoder,
23837 offset + cur_offset,
23838 depth,
23839 )?;
23840
23841 _prev_end_offset = cur_offset + envelope_size;
23842 if 10 > max_ordinal {
23843 return Ok(());
23844 }
23845
23846 let cur_offset: usize = (10 - 1) * envelope_size;
23849
23850 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
23852
23853 fidl::encoding::encode_in_envelope_optional::<u8, D>(
23858 self.version_threshold_for_routing
23859 .as_ref()
23860 .map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
23861 encoder,
23862 offset + cur_offset,
23863 depth,
23864 )?;
23865
23866 _prev_end_offset = cur_offset + envelope_size;
23867
23868 Ok(())
23869 }
23870 }
23871
23872 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for SecurityPolicy {
23873 #[inline(always)]
23874 fn new_empty() -> Self {
23875 Self::default()
23876 }
23877
23878 unsafe fn decode(
23879 &mut self,
23880 decoder: &mut fidl::encoding::Decoder<'_, D>,
23881 offset: usize,
23882 mut depth: fidl::encoding::Depth,
23883 ) -> fidl::Result<()> {
23884 decoder.debug_check_bounds::<Self>(offset);
23885 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
23886 None => return Err(fidl::Error::NotNullable),
23887 Some(len) => len,
23888 };
23889 if len == 0 {
23891 return Ok(());
23892 };
23893 depth.increment()?;
23894 let envelope_size = 8;
23895 let bytes_len = len * envelope_size;
23896 let offset = decoder.out_of_line_offset(bytes_len)?;
23897 let mut _next_ordinal_to_read = 0;
23899 let mut next_offset = offset;
23900 let end_offset = offset + bytes_len;
23901 _next_ordinal_to_read += 1;
23902 if next_offset >= end_offset {
23903 return Ok(());
23904 }
23905
23906 while _next_ordinal_to_read < 1 {
23908 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
23909 _next_ordinal_to_read += 1;
23910 next_offset += envelope_size;
23911 }
23912
23913 let next_out_of_line = decoder.next_out_of_line();
23914 let handles_before = decoder.remaining_handles();
23915 if let Some((inlined, num_bytes, num_handles)) =
23916 fidl::encoding::decode_envelope_header(decoder, next_offset)?
23917 {
23918 let member_inline_size =
23919 <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
23920 if inlined != (member_inline_size <= 4) {
23921 return Err(fidl::Error::InvalidInlineBitInEnvelope);
23922 }
23923 let inner_offset;
23924 let mut inner_depth = depth.clone();
23925 if inlined {
23926 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
23927 inner_offset = next_offset;
23928 } else {
23929 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
23930 inner_depth.increment()?;
23931 }
23932 let val_ref = self.rotation_time.get_or_insert_with(|| fidl::new_empty!(u16, D));
23933 fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
23934 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
23935 {
23936 return Err(fidl::Error::InvalidNumBytesInEnvelope);
23937 }
23938 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
23939 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
23940 }
23941 }
23942
23943 next_offset += envelope_size;
23944 _next_ordinal_to_read += 1;
23945 if next_offset >= end_offset {
23946 return Ok(());
23947 }
23948
23949 while _next_ordinal_to_read < 2 {
23951 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
23952 _next_ordinal_to_read += 1;
23953 next_offset += envelope_size;
23954 }
23955
23956 let next_out_of_line = decoder.next_out_of_line();
23957 let handles_before = decoder.remaining_handles();
23958 if let Some((inlined, num_bytes, num_handles)) =
23959 fidl::encoding::decode_envelope_header(decoder, next_offset)?
23960 {
23961 let member_inline_size =
23962 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
23963 if inlined != (member_inline_size <= 4) {
23964 return Err(fidl::Error::InvalidInlineBitInEnvelope);
23965 }
23966 let inner_offset;
23967 let mut inner_depth = depth.clone();
23968 if inlined {
23969 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
23970 inner_offset = next_offset;
23971 } else {
23972 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
23973 inner_depth.increment()?;
23974 }
23975 let val_ref = self
23976 .obtain_network_key_enabled
23977 .get_or_insert_with(|| fidl::new_empty!(bool, D));
23978 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
23979 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
23980 {
23981 return Err(fidl::Error::InvalidNumBytesInEnvelope);
23982 }
23983 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
23984 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
23985 }
23986 }
23987
23988 next_offset += envelope_size;
23989 _next_ordinal_to_read += 1;
23990 if next_offset >= end_offset {
23991 return Ok(());
23992 }
23993
23994 while _next_ordinal_to_read < 3 {
23996 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
23997 _next_ordinal_to_read += 1;
23998 next_offset += envelope_size;
23999 }
24000
24001 let next_out_of_line = decoder.next_out_of_line();
24002 let handles_before = decoder.remaining_handles();
24003 if let Some((inlined, num_bytes, num_handles)) =
24004 fidl::encoding::decode_envelope_header(decoder, next_offset)?
24005 {
24006 let member_inline_size =
24007 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
24008 if inlined != (member_inline_size <= 4) {
24009 return Err(fidl::Error::InvalidInlineBitInEnvelope);
24010 }
24011 let inner_offset;
24012 let mut inner_depth = depth.clone();
24013 if inlined {
24014 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
24015 inner_offset = next_offset;
24016 } else {
24017 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
24018 inner_depth.increment()?;
24019 }
24020 let val_ref = self
24021 .native_commissioning_enabled
24022 .get_or_insert_with(|| fidl::new_empty!(bool, D));
24023 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
24024 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
24025 {
24026 return Err(fidl::Error::InvalidNumBytesInEnvelope);
24027 }
24028 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
24029 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
24030 }
24031 }
24032
24033 next_offset += envelope_size;
24034 _next_ordinal_to_read += 1;
24035 if next_offset >= end_offset {
24036 return Ok(());
24037 }
24038
24039 while _next_ordinal_to_read < 4 {
24041 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
24042 _next_ordinal_to_read += 1;
24043 next_offset += envelope_size;
24044 }
24045
24046 let next_out_of_line = decoder.next_out_of_line();
24047 let handles_before = decoder.remaining_handles();
24048 if let Some((inlined, num_bytes, num_handles)) =
24049 fidl::encoding::decode_envelope_header(decoder, next_offset)?
24050 {
24051 let member_inline_size =
24052 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
24053 if inlined != (member_inline_size <= 4) {
24054 return Err(fidl::Error::InvalidInlineBitInEnvelope);
24055 }
24056 let inner_offset;
24057 let mut inner_depth = depth.clone();
24058 if inlined {
24059 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
24060 inner_offset = next_offset;
24061 } else {
24062 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
24063 inner_depth.increment()?;
24064 }
24065 let val_ref = self.routers_enabled.get_or_insert_with(|| fidl::new_empty!(bool, D));
24066 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
24067 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
24068 {
24069 return Err(fidl::Error::InvalidNumBytesInEnvelope);
24070 }
24071 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
24072 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
24073 }
24074 }
24075
24076 next_offset += envelope_size;
24077 _next_ordinal_to_read += 1;
24078 if next_offset >= end_offset {
24079 return Ok(());
24080 }
24081
24082 while _next_ordinal_to_read < 5 {
24084 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
24085 _next_ordinal_to_read += 1;
24086 next_offset += envelope_size;
24087 }
24088
24089 let next_out_of_line = decoder.next_out_of_line();
24090 let handles_before = decoder.remaining_handles();
24091 if let Some((inlined, num_bytes, num_handles)) =
24092 fidl::encoding::decode_envelope_header(decoder, next_offset)?
24093 {
24094 let member_inline_size =
24095 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
24096 if inlined != (member_inline_size <= 4) {
24097 return Err(fidl::Error::InvalidInlineBitInEnvelope);
24098 }
24099 let inner_offset;
24100 let mut inner_depth = depth.clone();
24101 if inlined {
24102 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
24103 inner_offset = next_offset;
24104 } else {
24105 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
24106 inner_depth.increment()?;
24107 }
24108 let val_ref = self
24109 .external_commissioning_enabled
24110 .get_or_insert_with(|| fidl::new_empty!(bool, D));
24111 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
24112 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
24113 {
24114 return Err(fidl::Error::InvalidNumBytesInEnvelope);
24115 }
24116 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
24117 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
24118 }
24119 }
24120
24121 next_offset += envelope_size;
24122 _next_ordinal_to_read += 1;
24123 if next_offset >= end_offset {
24124 return Ok(());
24125 }
24126
24127 while _next_ordinal_to_read < 6 {
24129 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
24130 _next_ordinal_to_read += 1;
24131 next_offset += envelope_size;
24132 }
24133
24134 let next_out_of_line = decoder.next_out_of_line();
24135 let handles_before = decoder.remaining_handles();
24136 if let Some((inlined, num_bytes, num_handles)) =
24137 fidl::encoding::decode_envelope_header(decoder, next_offset)?
24138 {
24139 let member_inline_size =
24140 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
24141 if inlined != (member_inline_size <= 4) {
24142 return Err(fidl::Error::InvalidInlineBitInEnvelope);
24143 }
24144 let inner_offset;
24145 let mut inner_depth = depth.clone();
24146 if inlined {
24147 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
24148 inner_offset = next_offset;
24149 } else {
24150 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
24151 inner_depth.increment()?;
24152 }
24153 let val_ref = self
24154 .autonomous_enrollment_enabled
24155 .get_or_insert_with(|| fidl::new_empty!(bool, D));
24156 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
24157 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
24158 {
24159 return Err(fidl::Error::InvalidNumBytesInEnvelope);
24160 }
24161 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
24162 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
24163 }
24164 }
24165
24166 next_offset += envelope_size;
24167 _next_ordinal_to_read += 1;
24168 if next_offset >= end_offset {
24169 return Ok(());
24170 }
24171
24172 while _next_ordinal_to_read < 7 {
24174 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
24175 _next_ordinal_to_read += 1;
24176 next_offset += envelope_size;
24177 }
24178
24179 let next_out_of_line = decoder.next_out_of_line();
24180 let handles_before = decoder.remaining_handles();
24181 if let Some((inlined, num_bytes, num_handles)) =
24182 fidl::encoding::decode_envelope_header(decoder, next_offset)?
24183 {
24184 let member_inline_size =
24185 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
24186 if inlined != (member_inline_size <= 4) {
24187 return Err(fidl::Error::InvalidInlineBitInEnvelope);
24188 }
24189 let inner_offset;
24190 let mut inner_depth = depth.clone();
24191 if inlined {
24192 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
24193 inner_offset = next_offset;
24194 } else {
24195 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
24196 inner_depth.increment()?;
24197 }
24198 let val_ref = self
24199 .network_key_provisioning_enabled
24200 .get_or_insert_with(|| fidl::new_empty!(bool, D));
24201 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
24202 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
24203 {
24204 return Err(fidl::Error::InvalidNumBytesInEnvelope);
24205 }
24206 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
24207 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
24208 }
24209 }
24210
24211 next_offset += envelope_size;
24212 _next_ordinal_to_read += 1;
24213 if next_offset >= end_offset {
24214 return Ok(());
24215 }
24216
24217 while _next_ordinal_to_read < 8 {
24219 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
24220 _next_ordinal_to_read += 1;
24221 next_offset += envelope_size;
24222 }
24223
24224 let next_out_of_line = decoder.next_out_of_line();
24225 let handles_before = decoder.remaining_handles();
24226 if let Some((inlined, num_bytes, num_handles)) =
24227 fidl::encoding::decode_envelope_header(decoder, next_offset)?
24228 {
24229 let member_inline_size =
24230 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
24231 if inlined != (member_inline_size <= 4) {
24232 return Err(fidl::Error::InvalidInlineBitInEnvelope);
24233 }
24234 let inner_offset;
24235 let mut inner_depth = depth.clone();
24236 if inlined {
24237 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
24238 inner_offset = next_offset;
24239 } else {
24240 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
24241 inner_depth.increment()?;
24242 }
24243 let val_ref =
24244 self.toble_link_enabled.get_or_insert_with(|| fidl::new_empty!(bool, D));
24245 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
24246 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
24247 {
24248 return Err(fidl::Error::InvalidNumBytesInEnvelope);
24249 }
24250 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
24251 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
24252 }
24253 }
24254
24255 next_offset += envelope_size;
24256 _next_ordinal_to_read += 1;
24257 if next_offset >= end_offset {
24258 return Ok(());
24259 }
24260
24261 while _next_ordinal_to_read < 9 {
24263 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
24264 _next_ordinal_to_read += 1;
24265 next_offset += envelope_size;
24266 }
24267
24268 let next_out_of_line = decoder.next_out_of_line();
24269 let handles_before = decoder.remaining_handles();
24270 if let Some((inlined, num_bytes, num_handles)) =
24271 fidl::encoding::decode_envelope_header(decoder, next_offset)?
24272 {
24273 let member_inline_size =
24274 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
24275 if inlined != (member_inline_size <= 4) {
24276 return Err(fidl::Error::InvalidInlineBitInEnvelope);
24277 }
24278 let inner_offset;
24279 let mut inner_depth = depth.clone();
24280 if inlined {
24281 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
24282 inner_offset = next_offset;
24283 } else {
24284 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
24285 inner_depth.increment()?;
24286 }
24287 let val_ref =
24288 self.nonccm_routers_enabled.get_or_insert_with(|| fidl::new_empty!(bool, D));
24289 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
24290 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
24291 {
24292 return Err(fidl::Error::InvalidNumBytesInEnvelope);
24293 }
24294 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
24295 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
24296 }
24297 }
24298
24299 next_offset += envelope_size;
24300 _next_ordinal_to_read += 1;
24301 if next_offset >= end_offset {
24302 return Ok(());
24303 }
24304
24305 while _next_ordinal_to_read < 10 {
24307 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
24308 _next_ordinal_to_read += 1;
24309 next_offset += envelope_size;
24310 }
24311
24312 let next_out_of_line = decoder.next_out_of_line();
24313 let handles_before = decoder.remaining_handles();
24314 if let Some((inlined, num_bytes, num_handles)) =
24315 fidl::encoding::decode_envelope_header(decoder, next_offset)?
24316 {
24317 let member_inline_size =
24318 <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
24319 if inlined != (member_inline_size <= 4) {
24320 return Err(fidl::Error::InvalidInlineBitInEnvelope);
24321 }
24322 let inner_offset;
24323 let mut inner_depth = depth.clone();
24324 if inlined {
24325 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
24326 inner_offset = next_offset;
24327 } else {
24328 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
24329 inner_depth.increment()?;
24330 }
24331 let val_ref = self
24332 .version_threshold_for_routing
24333 .get_or_insert_with(|| fidl::new_empty!(u8, D));
24334 fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
24335 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
24336 {
24337 return Err(fidl::Error::InvalidNumBytesInEnvelope);
24338 }
24339 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
24340 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
24341 }
24342 }
24343
24344 next_offset += envelope_size;
24345
24346 while next_offset < end_offset {
24348 _next_ordinal_to_read += 1;
24349 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
24350 next_offset += envelope_size;
24351 }
24352
24353 Ok(())
24354 }
24355 }
24356
24357 impl ServerConfig {
24358 #[inline(always)]
24359 fn max_ordinal_present(&self) -> u64 {
24360 if let Some(_) = self.rloc16 {
24361 return 4;
24362 }
24363 if let Some(_) = self.server_data {
24364 return 3;
24365 }
24366 if let Some(_) = self.server_data_length {
24367 return 2;
24368 }
24369 if let Some(_) = self.stable {
24370 return 1;
24371 }
24372 0
24373 }
24374 }
24375
24376 impl fidl::encoding::ValueTypeMarker for ServerConfig {
24377 type Borrowed<'a> = &'a Self;
24378 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
24379 value
24380 }
24381 }
24382
24383 unsafe impl fidl::encoding::TypeMarker for ServerConfig {
24384 type Owned = Self;
24385
24386 #[inline(always)]
24387 fn inline_align(_context: fidl::encoding::Context) -> usize {
24388 8
24389 }
24390
24391 #[inline(always)]
24392 fn inline_size(_context: fidl::encoding::Context) -> usize {
24393 16
24394 }
24395 }
24396
24397 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ServerConfig, D>
24398 for &ServerConfig
24399 {
24400 unsafe fn encode(
24401 self,
24402 encoder: &mut fidl::encoding::Encoder<'_, D>,
24403 offset: usize,
24404 mut depth: fidl::encoding::Depth,
24405 ) -> fidl::Result<()> {
24406 encoder.debug_check_bounds::<ServerConfig>(offset);
24407 let max_ordinal: u64 = self.max_ordinal_present();
24409 encoder.write_num(max_ordinal, offset);
24410 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
24411 if max_ordinal == 0 {
24413 return Ok(());
24414 }
24415 depth.increment()?;
24416 let envelope_size = 8;
24417 let bytes_len = max_ordinal as usize * envelope_size;
24418 #[allow(unused_variables)]
24419 let offset = encoder.out_of_line_offset(bytes_len);
24420 let mut _prev_end_offset: usize = 0;
24421 if 1 > max_ordinal {
24422 return Ok(());
24423 }
24424
24425 let cur_offset: usize = (1 - 1) * envelope_size;
24428
24429 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
24431
24432 fidl::encoding::encode_in_envelope_optional::<bool, D>(
24437 self.stable.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
24438 encoder,
24439 offset + cur_offset,
24440 depth,
24441 )?;
24442
24443 _prev_end_offset = cur_offset + envelope_size;
24444 if 2 > max_ordinal {
24445 return Ok(());
24446 }
24447
24448 let cur_offset: usize = (2 - 1) * envelope_size;
24451
24452 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
24454
24455 fidl::encoding::encode_in_envelope_optional::<u8, D>(
24460 self.server_data_length
24461 .as_ref()
24462 .map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
24463 encoder,
24464 offset + cur_offset,
24465 depth,
24466 )?;
24467
24468 _prev_end_offset = cur_offset + envelope_size;
24469 if 3 > max_ordinal {
24470 return Ok(());
24471 }
24472
24473 let cur_offset: usize = (3 - 1) * envelope_size;
24476
24477 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
24479
24480 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<u8, 252>, D>(
24485 self.server_data.as_ref().map(
24486 <fidl::encoding::Vector<u8, 252> as fidl::encoding::ValueTypeMarker>::borrow,
24487 ),
24488 encoder,
24489 offset + cur_offset,
24490 depth,
24491 )?;
24492
24493 _prev_end_offset = cur_offset + envelope_size;
24494 if 4 > max_ordinal {
24495 return Ok(());
24496 }
24497
24498 let cur_offset: usize = (4 - 1) * envelope_size;
24501
24502 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
24504
24505 fidl::encoding::encode_in_envelope_optional::<u16, D>(
24510 self.rloc16.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
24511 encoder,
24512 offset + cur_offset,
24513 depth,
24514 )?;
24515
24516 _prev_end_offset = cur_offset + envelope_size;
24517
24518 Ok(())
24519 }
24520 }
24521
24522 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ServerConfig {
24523 #[inline(always)]
24524 fn new_empty() -> Self {
24525 Self::default()
24526 }
24527
24528 unsafe fn decode(
24529 &mut self,
24530 decoder: &mut fidl::encoding::Decoder<'_, D>,
24531 offset: usize,
24532 mut depth: fidl::encoding::Depth,
24533 ) -> fidl::Result<()> {
24534 decoder.debug_check_bounds::<Self>(offset);
24535 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
24536 None => return Err(fidl::Error::NotNullable),
24537 Some(len) => len,
24538 };
24539 if len == 0 {
24541 return Ok(());
24542 };
24543 depth.increment()?;
24544 let envelope_size = 8;
24545 let bytes_len = len * envelope_size;
24546 let offset = decoder.out_of_line_offset(bytes_len)?;
24547 let mut _next_ordinal_to_read = 0;
24549 let mut next_offset = offset;
24550 let end_offset = offset + bytes_len;
24551 _next_ordinal_to_read += 1;
24552 if next_offset >= end_offset {
24553 return Ok(());
24554 }
24555
24556 while _next_ordinal_to_read < 1 {
24558 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
24559 _next_ordinal_to_read += 1;
24560 next_offset += envelope_size;
24561 }
24562
24563 let next_out_of_line = decoder.next_out_of_line();
24564 let handles_before = decoder.remaining_handles();
24565 if let Some((inlined, num_bytes, num_handles)) =
24566 fidl::encoding::decode_envelope_header(decoder, next_offset)?
24567 {
24568 let member_inline_size =
24569 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
24570 if inlined != (member_inline_size <= 4) {
24571 return Err(fidl::Error::InvalidInlineBitInEnvelope);
24572 }
24573 let inner_offset;
24574 let mut inner_depth = depth.clone();
24575 if inlined {
24576 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
24577 inner_offset = next_offset;
24578 } else {
24579 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
24580 inner_depth.increment()?;
24581 }
24582 let val_ref = self.stable.get_or_insert_with(|| fidl::new_empty!(bool, D));
24583 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
24584 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
24585 {
24586 return Err(fidl::Error::InvalidNumBytesInEnvelope);
24587 }
24588 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
24589 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
24590 }
24591 }
24592
24593 next_offset += envelope_size;
24594 _next_ordinal_to_read += 1;
24595 if next_offset >= end_offset {
24596 return Ok(());
24597 }
24598
24599 while _next_ordinal_to_read < 2 {
24601 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
24602 _next_ordinal_to_read += 1;
24603 next_offset += envelope_size;
24604 }
24605
24606 let next_out_of_line = decoder.next_out_of_line();
24607 let handles_before = decoder.remaining_handles();
24608 if let Some((inlined, num_bytes, num_handles)) =
24609 fidl::encoding::decode_envelope_header(decoder, next_offset)?
24610 {
24611 let member_inline_size =
24612 <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
24613 if inlined != (member_inline_size <= 4) {
24614 return Err(fidl::Error::InvalidInlineBitInEnvelope);
24615 }
24616 let inner_offset;
24617 let mut inner_depth = depth.clone();
24618 if inlined {
24619 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
24620 inner_offset = next_offset;
24621 } else {
24622 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
24623 inner_depth.increment()?;
24624 }
24625 let val_ref =
24626 self.server_data_length.get_or_insert_with(|| fidl::new_empty!(u8, D));
24627 fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
24628 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
24629 {
24630 return Err(fidl::Error::InvalidNumBytesInEnvelope);
24631 }
24632 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
24633 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
24634 }
24635 }
24636
24637 next_offset += envelope_size;
24638 _next_ordinal_to_read += 1;
24639 if next_offset >= end_offset {
24640 return Ok(());
24641 }
24642
24643 while _next_ordinal_to_read < 3 {
24645 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
24646 _next_ordinal_to_read += 1;
24647 next_offset += envelope_size;
24648 }
24649
24650 let next_out_of_line = decoder.next_out_of_line();
24651 let handles_before = decoder.remaining_handles();
24652 if let Some((inlined, num_bytes, num_handles)) =
24653 fidl::encoding::decode_envelope_header(decoder, next_offset)?
24654 {
24655 let member_inline_size =
24656 <fidl::encoding::Vector<u8, 252> as fidl::encoding::TypeMarker>::inline_size(
24657 decoder.context,
24658 );
24659 if inlined != (member_inline_size <= 4) {
24660 return Err(fidl::Error::InvalidInlineBitInEnvelope);
24661 }
24662 let inner_offset;
24663 let mut inner_depth = depth.clone();
24664 if inlined {
24665 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
24666 inner_offset = next_offset;
24667 } else {
24668 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
24669 inner_depth.increment()?;
24670 }
24671 let val_ref = self
24672 .server_data
24673 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u8, 252>, D));
24674 fidl::decode!(fidl::encoding::Vector<u8, 252>, D, val_ref, decoder, inner_offset, inner_depth)?;
24675 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
24676 {
24677 return Err(fidl::Error::InvalidNumBytesInEnvelope);
24678 }
24679 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
24680 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
24681 }
24682 }
24683
24684 next_offset += envelope_size;
24685 _next_ordinal_to_read += 1;
24686 if next_offset >= end_offset {
24687 return Ok(());
24688 }
24689
24690 while _next_ordinal_to_read < 4 {
24692 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
24693 _next_ordinal_to_read += 1;
24694 next_offset += envelope_size;
24695 }
24696
24697 let next_out_of_line = decoder.next_out_of_line();
24698 let handles_before = decoder.remaining_handles();
24699 if let Some((inlined, num_bytes, num_handles)) =
24700 fidl::encoding::decode_envelope_header(decoder, next_offset)?
24701 {
24702 let member_inline_size =
24703 <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
24704 if inlined != (member_inline_size <= 4) {
24705 return Err(fidl::Error::InvalidInlineBitInEnvelope);
24706 }
24707 let inner_offset;
24708 let mut inner_depth = depth.clone();
24709 if inlined {
24710 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
24711 inner_offset = next_offset;
24712 } else {
24713 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
24714 inner_depth.increment()?;
24715 }
24716 let val_ref = self.rloc16.get_or_insert_with(|| fidl::new_empty!(u16, D));
24717 fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
24718 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
24719 {
24720 return Err(fidl::Error::InvalidNumBytesInEnvelope);
24721 }
24722 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
24723 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
24724 }
24725 }
24726
24727 next_offset += envelope_size;
24728
24729 while next_offset < end_offset {
24731 _next_ordinal_to_read += 1;
24732 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
24733 next_offset += envelope_size;
24734 }
24735
24736 Ok(())
24737 }
24738 }
24739
24740 impl ServiceConfig {
24741 #[inline(always)]
24742 fn max_ordinal_present(&self) -> u64 {
24743 if let Some(_) = self.server_config {
24744 return 5;
24745 }
24746 if let Some(_) = self.service_data {
24747 return 4;
24748 }
24749 if let Some(_) = self.service_data_length {
24750 return 3;
24751 }
24752 if let Some(_) = self.enterprise_number {
24753 return 2;
24754 }
24755 if let Some(_) = self.service_id {
24756 return 1;
24757 }
24758 0
24759 }
24760 }
24761
24762 impl fidl::encoding::ValueTypeMarker for ServiceConfig {
24763 type Borrowed<'a> = &'a Self;
24764 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
24765 value
24766 }
24767 }
24768
24769 unsafe impl fidl::encoding::TypeMarker for ServiceConfig {
24770 type Owned = Self;
24771
24772 #[inline(always)]
24773 fn inline_align(_context: fidl::encoding::Context) -> usize {
24774 8
24775 }
24776
24777 #[inline(always)]
24778 fn inline_size(_context: fidl::encoding::Context) -> usize {
24779 16
24780 }
24781 }
24782
24783 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ServiceConfig, D>
24784 for &ServiceConfig
24785 {
24786 unsafe fn encode(
24787 self,
24788 encoder: &mut fidl::encoding::Encoder<'_, D>,
24789 offset: usize,
24790 mut depth: fidl::encoding::Depth,
24791 ) -> fidl::Result<()> {
24792 encoder.debug_check_bounds::<ServiceConfig>(offset);
24793 let max_ordinal: u64 = self.max_ordinal_present();
24795 encoder.write_num(max_ordinal, offset);
24796 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
24797 if max_ordinal == 0 {
24799 return Ok(());
24800 }
24801 depth.increment()?;
24802 let envelope_size = 8;
24803 let bytes_len = max_ordinal as usize * envelope_size;
24804 #[allow(unused_variables)]
24805 let offset = encoder.out_of_line_offset(bytes_len);
24806 let mut _prev_end_offset: usize = 0;
24807 if 1 > max_ordinal {
24808 return Ok(());
24809 }
24810
24811 let cur_offset: usize = (1 - 1) * envelope_size;
24814
24815 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
24817
24818 fidl::encoding::encode_in_envelope_optional::<u8, D>(
24823 self.service_id.as_ref().map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
24824 encoder,
24825 offset + cur_offset,
24826 depth,
24827 )?;
24828
24829 _prev_end_offset = cur_offset + envelope_size;
24830 if 2 > max_ordinal {
24831 return Ok(());
24832 }
24833
24834 let cur_offset: usize = (2 - 1) * envelope_size;
24837
24838 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
24840
24841 fidl::encoding::encode_in_envelope_optional::<u32, D>(
24846 self.enterprise_number
24847 .as_ref()
24848 .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
24849 encoder,
24850 offset + cur_offset,
24851 depth,
24852 )?;
24853
24854 _prev_end_offset = cur_offset + envelope_size;
24855 if 3 > max_ordinal {
24856 return Ok(());
24857 }
24858
24859 let cur_offset: usize = (3 - 1) * envelope_size;
24862
24863 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
24865
24866 fidl::encoding::encode_in_envelope_optional::<u8, D>(
24871 self.service_data_length
24872 .as_ref()
24873 .map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
24874 encoder,
24875 offset + cur_offset,
24876 depth,
24877 )?;
24878
24879 _prev_end_offset = cur_offset + envelope_size;
24880 if 4 > max_ordinal {
24881 return Ok(());
24882 }
24883
24884 let cur_offset: usize = (4 - 1) * envelope_size;
24887
24888 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
24890
24891 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<u8, 252>, D>(
24896 self.service_data.as_ref().map(
24897 <fidl::encoding::Vector<u8, 252> as fidl::encoding::ValueTypeMarker>::borrow,
24898 ),
24899 encoder,
24900 offset + cur_offset,
24901 depth,
24902 )?;
24903
24904 _prev_end_offset = cur_offset + envelope_size;
24905 if 5 > max_ordinal {
24906 return Ok(());
24907 }
24908
24909 let cur_offset: usize = (5 - 1) * envelope_size;
24912
24913 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
24915
24916 fidl::encoding::encode_in_envelope_optional::<ServerConfig, D>(
24921 self.server_config
24922 .as_ref()
24923 .map(<ServerConfig as fidl::encoding::ValueTypeMarker>::borrow),
24924 encoder,
24925 offset + cur_offset,
24926 depth,
24927 )?;
24928
24929 _prev_end_offset = cur_offset + envelope_size;
24930
24931 Ok(())
24932 }
24933 }
24934
24935 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ServiceConfig {
24936 #[inline(always)]
24937 fn new_empty() -> Self {
24938 Self::default()
24939 }
24940
24941 unsafe fn decode(
24942 &mut self,
24943 decoder: &mut fidl::encoding::Decoder<'_, D>,
24944 offset: usize,
24945 mut depth: fidl::encoding::Depth,
24946 ) -> fidl::Result<()> {
24947 decoder.debug_check_bounds::<Self>(offset);
24948 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
24949 None => return Err(fidl::Error::NotNullable),
24950 Some(len) => len,
24951 };
24952 if len == 0 {
24954 return Ok(());
24955 };
24956 depth.increment()?;
24957 let envelope_size = 8;
24958 let bytes_len = len * envelope_size;
24959 let offset = decoder.out_of_line_offset(bytes_len)?;
24960 let mut _next_ordinal_to_read = 0;
24962 let mut next_offset = offset;
24963 let end_offset = offset + bytes_len;
24964 _next_ordinal_to_read += 1;
24965 if next_offset >= end_offset {
24966 return Ok(());
24967 }
24968
24969 while _next_ordinal_to_read < 1 {
24971 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
24972 _next_ordinal_to_read += 1;
24973 next_offset += envelope_size;
24974 }
24975
24976 let next_out_of_line = decoder.next_out_of_line();
24977 let handles_before = decoder.remaining_handles();
24978 if let Some((inlined, num_bytes, num_handles)) =
24979 fidl::encoding::decode_envelope_header(decoder, next_offset)?
24980 {
24981 let member_inline_size =
24982 <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
24983 if inlined != (member_inline_size <= 4) {
24984 return Err(fidl::Error::InvalidInlineBitInEnvelope);
24985 }
24986 let inner_offset;
24987 let mut inner_depth = depth.clone();
24988 if inlined {
24989 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
24990 inner_offset = next_offset;
24991 } else {
24992 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
24993 inner_depth.increment()?;
24994 }
24995 let val_ref = self.service_id.get_or_insert_with(|| fidl::new_empty!(u8, D));
24996 fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
24997 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
24998 {
24999 return Err(fidl::Error::InvalidNumBytesInEnvelope);
25000 }
25001 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
25002 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
25003 }
25004 }
25005
25006 next_offset += envelope_size;
25007 _next_ordinal_to_read += 1;
25008 if next_offset >= end_offset {
25009 return Ok(());
25010 }
25011
25012 while _next_ordinal_to_read < 2 {
25014 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
25015 _next_ordinal_to_read += 1;
25016 next_offset += envelope_size;
25017 }
25018
25019 let next_out_of_line = decoder.next_out_of_line();
25020 let handles_before = decoder.remaining_handles();
25021 if let Some((inlined, num_bytes, num_handles)) =
25022 fidl::encoding::decode_envelope_header(decoder, next_offset)?
25023 {
25024 let member_inline_size =
25025 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
25026 if inlined != (member_inline_size <= 4) {
25027 return Err(fidl::Error::InvalidInlineBitInEnvelope);
25028 }
25029 let inner_offset;
25030 let mut inner_depth = depth.clone();
25031 if inlined {
25032 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
25033 inner_offset = next_offset;
25034 } else {
25035 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
25036 inner_depth.increment()?;
25037 }
25038 let val_ref =
25039 self.enterprise_number.get_or_insert_with(|| fidl::new_empty!(u32, D));
25040 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
25041 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
25042 {
25043 return Err(fidl::Error::InvalidNumBytesInEnvelope);
25044 }
25045 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
25046 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
25047 }
25048 }
25049
25050 next_offset += envelope_size;
25051 _next_ordinal_to_read += 1;
25052 if next_offset >= end_offset {
25053 return Ok(());
25054 }
25055
25056 while _next_ordinal_to_read < 3 {
25058 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
25059 _next_ordinal_to_read += 1;
25060 next_offset += envelope_size;
25061 }
25062
25063 let next_out_of_line = decoder.next_out_of_line();
25064 let handles_before = decoder.remaining_handles();
25065 if let Some((inlined, num_bytes, num_handles)) =
25066 fidl::encoding::decode_envelope_header(decoder, next_offset)?
25067 {
25068 let member_inline_size =
25069 <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
25070 if inlined != (member_inline_size <= 4) {
25071 return Err(fidl::Error::InvalidInlineBitInEnvelope);
25072 }
25073 let inner_offset;
25074 let mut inner_depth = depth.clone();
25075 if inlined {
25076 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
25077 inner_offset = next_offset;
25078 } else {
25079 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
25080 inner_depth.increment()?;
25081 }
25082 let val_ref =
25083 self.service_data_length.get_or_insert_with(|| fidl::new_empty!(u8, D));
25084 fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
25085 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
25086 {
25087 return Err(fidl::Error::InvalidNumBytesInEnvelope);
25088 }
25089 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
25090 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
25091 }
25092 }
25093
25094 next_offset += envelope_size;
25095 _next_ordinal_to_read += 1;
25096 if next_offset >= end_offset {
25097 return Ok(());
25098 }
25099
25100 while _next_ordinal_to_read < 4 {
25102 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
25103 _next_ordinal_to_read += 1;
25104 next_offset += envelope_size;
25105 }
25106
25107 let next_out_of_line = decoder.next_out_of_line();
25108 let handles_before = decoder.remaining_handles();
25109 if let Some((inlined, num_bytes, num_handles)) =
25110 fidl::encoding::decode_envelope_header(decoder, next_offset)?
25111 {
25112 let member_inline_size =
25113 <fidl::encoding::Vector<u8, 252> as fidl::encoding::TypeMarker>::inline_size(
25114 decoder.context,
25115 );
25116 if inlined != (member_inline_size <= 4) {
25117 return Err(fidl::Error::InvalidInlineBitInEnvelope);
25118 }
25119 let inner_offset;
25120 let mut inner_depth = depth.clone();
25121 if inlined {
25122 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
25123 inner_offset = next_offset;
25124 } else {
25125 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
25126 inner_depth.increment()?;
25127 }
25128 let val_ref = self
25129 .service_data
25130 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u8, 252>, D));
25131 fidl::decode!(fidl::encoding::Vector<u8, 252>, D, val_ref, decoder, inner_offset, inner_depth)?;
25132 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
25133 {
25134 return Err(fidl::Error::InvalidNumBytesInEnvelope);
25135 }
25136 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
25137 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
25138 }
25139 }
25140
25141 next_offset += envelope_size;
25142 _next_ordinal_to_read += 1;
25143 if next_offset >= end_offset {
25144 return Ok(());
25145 }
25146
25147 while _next_ordinal_to_read < 5 {
25149 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
25150 _next_ordinal_to_read += 1;
25151 next_offset += envelope_size;
25152 }
25153
25154 let next_out_of_line = decoder.next_out_of_line();
25155 let handles_before = decoder.remaining_handles();
25156 if let Some((inlined, num_bytes, num_handles)) =
25157 fidl::encoding::decode_envelope_header(decoder, next_offset)?
25158 {
25159 let member_inline_size =
25160 <ServerConfig as fidl::encoding::TypeMarker>::inline_size(decoder.context);
25161 if inlined != (member_inline_size <= 4) {
25162 return Err(fidl::Error::InvalidInlineBitInEnvelope);
25163 }
25164 let inner_offset;
25165 let mut inner_depth = depth.clone();
25166 if inlined {
25167 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
25168 inner_offset = next_offset;
25169 } else {
25170 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
25171 inner_depth.increment()?;
25172 }
25173 let val_ref =
25174 self.server_config.get_or_insert_with(|| fidl::new_empty!(ServerConfig, D));
25175 fidl::decode!(ServerConfig, D, val_ref, decoder, inner_offset, inner_depth)?;
25176 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
25177 {
25178 return Err(fidl::Error::InvalidNumBytesInEnvelope);
25179 }
25180 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
25181 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
25182 }
25183 }
25184
25185 next_offset += envelope_size;
25186
25187 while next_offset < end_offset {
25189 _next_ordinal_to_read += 1;
25190 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
25191 next_offset += envelope_size;
25192 }
25193
25194 Ok(())
25195 }
25196 }
25197
25198 impl SrpServerHost {
25199 #[inline(always)]
25200 fn max_ordinal_present(&self) -> u64 {
25201 if let Some(_) = self.addresses {
25202 return 3;
25203 }
25204 if let Some(_) = self.deleted {
25205 return 2;
25206 }
25207 if let Some(_) = self.name {
25208 return 1;
25209 }
25210 0
25211 }
25212 }
25213
25214 impl fidl::encoding::ValueTypeMarker for SrpServerHost {
25215 type Borrowed<'a> = &'a Self;
25216 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
25217 value
25218 }
25219 }
25220
25221 unsafe impl fidl::encoding::TypeMarker for SrpServerHost {
25222 type Owned = Self;
25223
25224 #[inline(always)]
25225 fn inline_align(_context: fidl::encoding::Context) -> usize {
25226 8
25227 }
25228
25229 #[inline(always)]
25230 fn inline_size(_context: fidl::encoding::Context) -> usize {
25231 16
25232 }
25233 }
25234
25235 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<SrpServerHost, D>
25236 for &SrpServerHost
25237 {
25238 unsafe fn encode(
25239 self,
25240 encoder: &mut fidl::encoding::Encoder<'_, D>,
25241 offset: usize,
25242 mut depth: fidl::encoding::Depth,
25243 ) -> fidl::Result<()> {
25244 encoder.debug_check_bounds::<SrpServerHost>(offset);
25245 let max_ordinal: u64 = self.max_ordinal_present();
25247 encoder.write_num(max_ordinal, offset);
25248 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
25249 if max_ordinal == 0 {
25251 return Ok(());
25252 }
25253 depth.increment()?;
25254 let envelope_size = 8;
25255 let bytes_len = max_ordinal as usize * envelope_size;
25256 #[allow(unused_variables)]
25257 let offset = encoder.out_of_line_offset(bytes_len);
25258 let mut _prev_end_offset: usize = 0;
25259 if 1 > max_ordinal {
25260 return Ok(());
25261 }
25262
25263 let cur_offset: usize = (1 - 1) * envelope_size;
25266
25267 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
25269
25270 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<255>, D>(
25275 self.name.as_ref().map(
25276 <fidl::encoding::BoundedString<255> as fidl::encoding::ValueTypeMarker>::borrow,
25277 ),
25278 encoder,
25279 offset + cur_offset,
25280 depth,
25281 )?;
25282
25283 _prev_end_offset = cur_offset + envelope_size;
25284 if 2 > max_ordinal {
25285 return Ok(());
25286 }
25287
25288 let cur_offset: usize = (2 - 1) * envelope_size;
25291
25292 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
25294
25295 fidl::encoding::encode_in_envelope_optional::<bool, D>(
25300 self.deleted.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
25301 encoder,
25302 offset + cur_offset,
25303 depth,
25304 )?;
25305
25306 _prev_end_offset = cur_offset + envelope_size;
25307 if 3 > max_ordinal {
25308 return Ok(());
25309 }
25310
25311 let cur_offset: usize = (3 - 1) * envelope_size;
25314
25315 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
25317
25318 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<fidl_fuchsia_net_common::Ipv6Address, 16>, D>(
25323 self.addresses.as_ref().map(<fidl::encoding::Vector<fidl_fuchsia_net_common::Ipv6Address, 16> as fidl::encoding::ValueTypeMarker>::borrow),
25324 encoder, offset + cur_offset, depth
25325 )?;
25326
25327 _prev_end_offset = cur_offset + envelope_size;
25328
25329 Ok(())
25330 }
25331 }
25332
25333 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for SrpServerHost {
25334 #[inline(always)]
25335 fn new_empty() -> Self {
25336 Self::default()
25337 }
25338
25339 unsafe fn decode(
25340 &mut self,
25341 decoder: &mut fidl::encoding::Decoder<'_, D>,
25342 offset: usize,
25343 mut depth: fidl::encoding::Depth,
25344 ) -> fidl::Result<()> {
25345 decoder.debug_check_bounds::<Self>(offset);
25346 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
25347 None => return Err(fidl::Error::NotNullable),
25348 Some(len) => len,
25349 };
25350 if len == 0 {
25352 return Ok(());
25353 };
25354 depth.increment()?;
25355 let envelope_size = 8;
25356 let bytes_len = len * envelope_size;
25357 let offset = decoder.out_of_line_offset(bytes_len)?;
25358 let mut _next_ordinal_to_read = 0;
25360 let mut next_offset = offset;
25361 let end_offset = offset + bytes_len;
25362 _next_ordinal_to_read += 1;
25363 if next_offset >= end_offset {
25364 return Ok(());
25365 }
25366
25367 while _next_ordinal_to_read < 1 {
25369 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
25370 _next_ordinal_to_read += 1;
25371 next_offset += envelope_size;
25372 }
25373
25374 let next_out_of_line = decoder.next_out_of_line();
25375 let handles_before = decoder.remaining_handles();
25376 if let Some((inlined, num_bytes, num_handles)) =
25377 fidl::encoding::decode_envelope_header(decoder, next_offset)?
25378 {
25379 let member_inline_size =
25380 <fidl::encoding::BoundedString<255> as fidl::encoding::TypeMarker>::inline_size(
25381 decoder.context,
25382 );
25383 if inlined != (member_inline_size <= 4) {
25384 return Err(fidl::Error::InvalidInlineBitInEnvelope);
25385 }
25386 let inner_offset;
25387 let mut inner_depth = depth.clone();
25388 if inlined {
25389 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
25390 inner_offset = next_offset;
25391 } else {
25392 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
25393 inner_depth.increment()?;
25394 }
25395 let val_ref = self
25396 .name
25397 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<255>, D));
25398 fidl::decode!(
25399 fidl::encoding::BoundedString<255>,
25400 D,
25401 val_ref,
25402 decoder,
25403 inner_offset,
25404 inner_depth
25405 )?;
25406 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
25407 {
25408 return Err(fidl::Error::InvalidNumBytesInEnvelope);
25409 }
25410 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
25411 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
25412 }
25413 }
25414
25415 next_offset += envelope_size;
25416 _next_ordinal_to_read += 1;
25417 if next_offset >= end_offset {
25418 return Ok(());
25419 }
25420
25421 while _next_ordinal_to_read < 2 {
25423 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
25424 _next_ordinal_to_read += 1;
25425 next_offset += envelope_size;
25426 }
25427
25428 let next_out_of_line = decoder.next_out_of_line();
25429 let handles_before = decoder.remaining_handles();
25430 if let Some((inlined, num_bytes, num_handles)) =
25431 fidl::encoding::decode_envelope_header(decoder, next_offset)?
25432 {
25433 let member_inline_size =
25434 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
25435 if inlined != (member_inline_size <= 4) {
25436 return Err(fidl::Error::InvalidInlineBitInEnvelope);
25437 }
25438 let inner_offset;
25439 let mut inner_depth = depth.clone();
25440 if inlined {
25441 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
25442 inner_offset = next_offset;
25443 } else {
25444 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
25445 inner_depth.increment()?;
25446 }
25447 let val_ref = self.deleted.get_or_insert_with(|| fidl::new_empty!(bool, D));
25448 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
25449 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
25450 {
25451 return Err(fidl::Error::InvalidNumBytesInEnvelope);
25452 }
25453 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
25454 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
25455 }
25456 }
25457
25458 next_offset += envelope_size;
25459 _next_ordinal_to_read += 1;
25460 if next_offset >= end_offset {
25461 return Ok(());
25462 }
25463
25464 while _next_ordinal_to_read < 3 {
25466 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
25467 _next_ordinal_to_read += 1;
25468 next_offset += envelope_size;
25469 }
25470
25471 let next_out_of_line = decoder.next_out_of_line();
25472 let handles_before = decoder.remaining_handles();
25473 if let Some((inlined, num_bytes, num_handles)) =
25474 fidl::encoding::decode_envelope_header(decoder, next_offset)?
25475 {
25476 let member_inline_size = <fidl::encoding::Vector<
25477 fidl_fuchsia_net_common::Ipv6Address,
25478 16,
25479 > as fidl::encoding::TypeMarker>::inline_size(
25480 decoder.context
25481 );
25482 if inlined != (member_inline_size <= 4) {
25483 return Err(fidl::Error::InvalidInlineBitInEnvelope);
25484 }
25485 let inner_offset;
25486 let mut inner_depth = depth.clone();
25487 if inlined {
25488 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
25489 inner_offset = next_offset;
25490 } else {
25491 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
25492 inner_depth.increment()?;
25493 }
25494 let val_ref =
25495 self.addresses.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<fidl_fuchsia_net_common::Ipv6Address, 16>, D));
25496 fidl::decode!(fidl::encoding::Vector<fidl_fuchsia_net_common::Ipv6Address, 16>, D, val_ref, decoder, inner_offset, inner_depth)?;
25497 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
25498 {
25499 return Err(fidl::Error::InvalidNumBytesInEnvelope);
25500 }
25501 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
25502 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
25503 }
25504 }
25505
25506 next_offset += envelope_size;
25507
25508 while next_offset < end_offset {
25510 _next_ordinal_to_read += 1;
25511 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
25512 next_offset += envelope_size;
25513 }
25514
25515 Ok(())
25516 }
25517 }
25518
25519 impl SrpServerInfo {
25520 #[inline(always)]
25521 fn max_ordinal_present(&self) -> u64 {
25522 if let Some(_) = self.services {
25523 return 8;
25524 }
25525 if let Some(_) = self.hosts {
25526 return 7;
25527 }
25528 if let Some(_) = self.services_registration {
25529 return 6;
25530 }
25531 if let Some(_) = self.hosts_registration {
25532 return 5;
25533 }
25534 if let Some(_) = self.response_counters {
25535 return 4;
25536 }
25537 if let Some(_) = self.address_mode {
25538 return 3;
25539 }
25540 if let Some(_) = self.port {
25541 return 2;
25542 }
25543 if let Some(_) = self.state {
25544 return 1;
25545 }
25546 0
25547 }
25548 }
25549
25550 impl fidl::encoding::ValueTypeMarker for SrpServerInfo {
25551 type Borrowed<'a> = &'a Self;
25552 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
25553 value
25554 }
25555 }
25556
25557 unsafe impl fidl::encoding::TypeMarker for SrpServerInfo {
25558 type Owned = Self;
25559
25560 #[inline(always)]
25561 fn inline_align(_context: fidl::encoding::Context) -> usize {
25562 8
25563 }
25564
25565 #[inline(always)]
25566 fn inline_size(_context: fidl::encoding::Context) -> usize {
25567 16
25568 }
25569 }
25570
25571 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<SrpServerInfo, D>
25572 for &SrpServerInfo
25573 {
25574 unsafe fn encode(
25575 self,
25576 encoder: &mut fidl::encoding::Encoder<'_, D>,
25577 offset: usize,
25578 mut depth: fidl::encoding::Depth,
25579 ) -> fidl::Result<()> {
25580 encoder.debug_check_bounds::<SrpServerInfo>(offset);
25581 let max_ordinal: u64 = self.max_ordinal_present();
25583 encoder.write_num(max_ordinal, offset);
25584 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
25585 if max_ordinal == 0 {
25587 return Ok(());
25588 }
25589 depth.increment()?;
25590 let envelope_size = 8;
25591 let bytes_len = max_ordinal as usize * envelope_size;
25592 #[allow(unused_variables)]
25593 let offset = encoder.out_of_line_offset(bytes_len);
25594 let mut _prev_end_offset: usize = 0;
25595 if 1 > max_ordinal {
25596 return Ok(());
25597 }
25598
25599 let cur_offset: usize = (1 - 1) * envelope_size;
25602
25603 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
25605
25606 fidl::encoding::encode_in_envelope_optional::<SrpServerState, D>(
25611 self.state
25612 .as_ref()
25613 .map(<SrpServerState as fidl::encoding::ValueTypeMarker>::borrow),
25614 encoder,
25615 offset + cur_offset,
25616 depth,
25617 )?;
25618
25619 _prev_end_offset = cur_offset + envelope_size;
25620 if 2 > max_ordinal {
25621 return Ok(());
25622 }
25623
25624 let cur_offset: usize = (2 - 1) * envelope_size;
25627
25628 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
25630
25631 fidl::encoding::encode_in_envelope_optional::<u16, D>(
25636 self.port.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
25637 encoder,
25638 offset + cur_offset,
25639 depth,
25640 )?;
25641
25642 _prev_end_offset = cur_offset + envelope_size;
25643 if 3 > max_ordinal {
25644 return Ok(());
25645 }
25646
25647 let cur_offset: usize = (3 - 1) * envelope_size;
25650
25651 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
25653
25654 fidl::encoding::encode_in_envelope_optional::<SrpServerAddressMode, D>(
25659 self.address_mode
25660 .as_ref()
25661 .map(<SrpServerAddressMode as fidl::encoding::ValueTypeMarker>::borrow),
25662 encoder,
25663 offset + cur_offset,
25664 depth,
25665 )?;
25666
25667 _prev_end_offset = cur_offset + envelope_size;
25668 if 4 > max_ordinal {
25669 return Ok(());
25670 }
25671
25672 let cur_offset: usize = (4 - 1) * envelope_size;
25675
25676 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
25678
25679 fidl::encoding::encode_in_envelope_optional::<SrpServerResponseCounters, D>(
25684 self.response_counters
25685 .as_ref()
25686 .map(<SrpServerResponseCounters as fidl::encoding::ValueTypeMarker>::borrow),
25687 encoder,
25688 offset + cur_offset,
25689 depth,
25690 )?;
25691
25692 _prev_end_offset = cur_offset + envelope_size;
25693 if 5 > max_ordinal {
25694 return Ok(());
25695 }
25696
25697 let cur_offset: usize = (5 - 1) * envelope_size;
25700
25701 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
25703
25704 fidl::encoding::encode_in_envelope_optional::<SrpServerRegistration, D>(
25709 self.hosts_registration
25710 .as_ref()
25711 .map(<SrpServerRegistration as fidl::encoding::ValueTypeMarker>::borrow),
25712 encoder,
25713 offset + cur_offset,
25714 depth,
25715 )?;
25716
25717 _prev_end_offset = cur_offset + envelope_size;
25718 if 6 > max_ordinal {
25719 return Ok(());
25720 }
25721
25722 let cur_offset: usize = (6 - 1) * envelope_size;
25725
25726 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
25728
25729 fidl::encoding::encode_in_envelope_optional::<SrpServerRegistration, D>(
25734 self.services_registration
25735 .as_ref()
25736 .map(<SrpServerRegistration as fidl::encoding::ValueTypeMarker>::borrow),
25737 encoder,
25738 offset + cur_offset,
25739 depth,
25740 )?;
25741
25742 _prev_end_offset = cur_offset + envelope_size;
25743 if 7 > max_ordinal {
25744 return Ok(());
25745 }
25746
25747 let cur_offset: usize = (7 - 1) * envelope_size;
25750
25751 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
25753
25754 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<SrpServerHost, 64>, D>(
25759 self.hosts.as_ref().map(<fidl::encoding::Vector<SrpServerHost, 64> as fidl::encoding::ValueTypeMarker>::borrow),
25760 encoder, offset + cur_offset, depth
25761 )?;
25762
25763 _prev_end_offset = cur_offset + envelope_size;
25764 if 8 > max_ordinal {
25765 return Ok(());
25766 }
25767
25768 let cur_offset: usize = (8 - 1) * envelope_size;
25771
25772 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
25774
25775 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<SrpServerService, 64>, D>(
25780 self.services.as_ref().map(<fidl::encoding::Vector<SrpServerService, 64> as fidl::encoding::ValueTypeMarker>::borrow),
25781 encoder, offset + cur_offset, depth
25782 )?;
25783
25784 _prev_end_offset = cur_offset + envelope_size;
25785
25786 Ok(())
25787 }
25788 }
25789
25790 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for SrpServerInfo {
25791 #[inline(always)]
25792 fn new_empty() -> Self {
25793 Self::default()
25794 }
25795
25796 unsafe fn decode(
25797 &mut self,
25798 decoder: &mut fidl::encoding::Decoder<'_, D>,
25799 offset: usize,
25800 mut depth: fidl::encoding::Depth,
25801 ) -> fidl::Result<()> {
25802 decoder.debug_check_bounds::<Self>(offset);
25803 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
25804 None => return Err(fidl::Error::NotNullable),
25805 Some(len) => len,
25806 };
25807 if len == 0 {
25809 return Ok(());
25810 };
25811 depth.increment()?;
25812 let envelope_size = 8;
25813 let bytes_len = len * envelope_size;
25814 let offset = decoder.out_of_line_offset(bytes_len)?;
25815 let mut _next_ordinal_to_read = 0;
25817 let mut next_offset = offset;
25818 let end_offset = offset + bytes_len;
25819 _next_ordinal_to_read += 1;
25820 if next_offset >= end_offset {
25821 return Ok(());
25822 }
25823
25824 while _next_ordinal_to_read < 1 {
25826 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
25827 _next_ordinal_to_read += 1;
25828 next_offset += envelope_size;
25829 }
25830
25831 let next_out_of_line = decoder.next_out_of_line();
25832 let handles_before = decoder.remaining_handles();
25833 if let Some((inlined, num_bytes, num_handles)) =
25834 fidl::encoding::decode_envelope_header(decoder, next_offset)?
25835 {
25836 let member_inline_size =
25837 <SrpServerState as fidl::encoding::TypeMarker>::inline_size(decoder.context);
25838 if inlined != (member_inline_size <= 4) {
25839 return Err(fidl::Error::InvalidInlineBitInEnvelope);
25840 }
25841 let inner_offset;
25842 let mut inner_depth = depth.clone();
25843 if inlined {
25844 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
25845 inner_offset = next_offset;
25846 } else {
25847 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
25848 inner_depth.increment()?;
25849 }
25850 let val_ref = self.state.get_or_insert_with(|| fidl::new_empty!(SrpServerState, D));
25851 fidl::decode!(SrpServerState, D, val_ref, decoder, inner_offset, inner_depth)?;
25852 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
25853 {
25854 return Err(fidl::Error::InvalidNumBytesInEnvelope);
25855 }
25856 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
25857 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
25858 }
25859 }
25860
25861 next_offset += envelope_size;
25862 _next_ordinal_to_read += 1;
25863 if next_offset >= end_offset {
25864 return Ok(());
25865 }
25866
25867 while _next_ordinal_to_read < 2 {
25869 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
25870 _next_ordinal_to_read += 1;
25871 next_offset += envelope_size;
25872 }
25873
25874 let next_out_of_line = decoder.next_out_of_line();
25875 let handles_before = decoder.remaining_handles();
25876 if let Some((inlined, num_bytes, num_handles)) =
25877 fidl::encoding::decode_envelope_header(decoder, next_offset)?
25878 {
25879 let member_inline_size =
25880 <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
25881 if inlined != (member_inline_size <= 4) {
25882 return Err(fidl::Error::InvalidInlineBitInEnvelope);
25883 }
25884 let inner_offset;
25885 let mut inner_depth = depth.clone();
25886 if inlined {
25887 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
25888 inner_offset = next_offset;
25889 } else {
25890 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
25891 inner_depth.increment()?;
25892 }
25893 let val_ref = self.port.get_or_insert_with(|| fidl::new_empty!(u16, D));
25894 fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
25895 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
25896 {
25897 return Err(fidl::Error::InvalidNumBytesInEnvelope);
25898 }
25899 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
25900 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
25901 }
25902 }
25903
25904 next_offset += envelope_size;
25905 _next_ordinal_to_read += 1;
25906 if next_offset >= end_offset {
25907 return Ok(());
25908 }
25909
25910 while _next_ordinal_to_read < 3 {
25912 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
25913 _next_ordinal_to_read += 1;
25914 next_offset += envelope_size;
25915 }
25916
25917 let next_out_of_line = decoder.next_out_of_line();
25918 let handles_before = decoder.remaining_handles();
25919 if let Some((inlined, num_bytes, num_handles)) =
25920 fidl::encoding::decode_envelope_header(decoder, next_offset)?
25921 {
25922 let member_inline_size =
25923 <SrpServerAddressMode as fidl::encoding::TypeMarker>::inline_size(
25924 decoder.context,
25925 );
25926 if inlined != (member_inline_size <= 4) {
25927 return Err(fidl::Error::InvalidInlineBitInEnvelope);
25928 }
25929 let inner_offset;
25930 let mut inner_depth = depth.clone();
25931 if inlined {
25932 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
25933 inner_offset = next_offset;
25934 } else {
25935 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
25936 inner_depth.increment()?;
25937 }
25938 let val_ref = self
25939 .address_mode
25940 .get_or_insert_with(|| fidl::new_empty!(SrpServerAddressMode, D));
25941 fidl::decode!(
25942 SrpServerAddressMode,
25943 D,
25944 val_ref,
25945 decoder,
25946 inner_offset,
25947 inner_depth
25948 )?;
25949 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
25950 {
25951 return Err(fidl::Error::InvalidNumBytesInEnvelope);
25952 }
25953 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
25954 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
25955 }
25956 }
25957
25958 next_offset += envelope_size;
25959 _next_ordinal_to_read += 1;
25960 if next_offset >= end_offset {
25961 return Ok(());
25962 }
25963
25964 while _next_ordinal_to_read < 4 {
25966 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
25967 _next_ordinal_to_read += 1;
25968 next_offset += envelope_size;
25969 }
25970
25971 let next_out_of_line = decoder.next_out_of_line();
25972 let handles_before = decoder.remaining_handles();
25973 if let Some((inlined, num_bytes, num_handles)) =
25974 fidl::encoding::decode_envelope_header(decoder, next_offset)?
25975 {
25976 let member_inline_size =
25977 <SrpServerResponseCounters as fidl::encoding::TypeMarker>::inline_size(
25978 decoder.context,
25979 );
25980 if inlined != (member_inline_size <= 4) {
25981 return Err(fidl::Error::InvalidInlineBitInEnvelope);
25982 }
25983 let inner_offset;
25984 let mut inner_depth = depth.clone();
25985 if inlined {
25986 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
25987 inner_offset = next_offset;
25988 } else {
25989 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
25990 inner_depth.increment()?;
25991 }
25992 let val_ref = self
25993 .response_counters
25994 .get_or_insert_with(|| fidl::new_empty!(SrpServerResponseCounters, D));
25995 fidl::decode!(
25996 SrpServerResponseCounters,
25997 D,
25998 val_ref,
25999 decoder,
26000 inner_offset,
26001 inner_depth
26002 )?;
26003 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
26004 {
26005 return Err(fidl::Error::InvalidNumBytesInEnvelope);
26006 }
26007 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
26008 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
26009 }
26010 }
26011
26012 next_offset += envelope_size;
26013 _next_ordinal_to_read += 1;
26014 if next_offset >= end_offset {
26015 return Ok(());
26016 }
26017
26018 while _next_ordinal_to_read < 5 {
26020 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
26021 _next_ordinal_to_read += 1;
26022 next_offset += envelope_size;
26023 }
26024
26025 let next_out_of_line = decoder.next_out_of_line();
26026 let handles_before = decoder.remaining_handles();
26027 if let Some((inlined, num_bytes, num_handles)) =
26028 fidl::encoding::decode_envelope_header(decoder, next_offset)?
26029 {
26030 let member_inline_size =
26031 <SrpServerRegistration as fidl::encoding::TypeMarker>::inline_size(
26032 decoder.context,
26033 );
26034 if inlined != (member_inline_size <= 4) {
26035 return Err(fidl::Error::InvalidInlineBitInEnvelope);
26036 }
26037 let inner_offset;
26038 let mut inner_depth = depth.clone();
26039 if inlined {
26040 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
26041 inner_offset = next_offset;
26042 } else {
26043 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
26044 inner_depth.increment()?;
26045 }
26046 let val_ref = self
26047 .hosts_registration
26048 .get_or_insert_with(|| fidl::new_empty!(SrpServerRegistration, D));
26049 fidl::decode!(
26050 SrpServerRegistration,
26051 D,
26052 val_ref,
26053 decoder,
26054 inner_offset,
26055 inner_depth
26056 )?;
26057 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
26058 {
26059 return Err(fidl::Error::InvalidNumBytesInEnvelope);
26060 }
26061 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
26062 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
26063 }
26064 }
26065
26066 next_offset += envelope_size;
26067 _next_ordinal_to_read += 1;
26068 if next_offset >= end_offset {
26069 return Ok(());
26070 }
26071
26072 while _next_ordinal_to_read < 6 {
26074 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
26075 _next_ordinal_to_read += 1;
26076 next_offset += envelope_size;
26077 }
26078
26079 let next_out_of_line = decoder.next_out_of_line();
26080 let handles_before = decoder.remaining_handles();
26081 if let Some((inlined, num_bytes, num_handles)) =
26082 fidl::encoding::decode_envelope_header(decoder, next_offset)?
26083 {
26084 let member_inline_size =
26085 <SrpServerRegistration as fidl::encoding::TypeMarker>::inline_size(
26086 decoder.context,
26087 );
26088 if inlined != (member_inline_size <= 4) {
26089 return Err(fidl::Error::InvalidInlineBitInEnvelope);
26090 }
26091 let inner_offset;
26092 let mut inner_depth = depth.clone();
26093 if inlined {
26094 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
26095 inner_offset = next_offset;
26096 } else {
26097 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
26098 inner_depth.increment()?;
26099 }
26100 let val_ref = self
26101 .services_registration
26102 .get_or_insert_with(|| fidl::new_empty!(SrpServerRegistration, D));
26103 fidl::decode!(
26104 SrpServerRegistration,
26105 D,
26106 val_ref,
26107 decoder,
26108 inner_offset,
26109 inner_depth
26110 )?;
26111 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
26112 {
26113 return Err(fidl::Error::InvalidNumBytesInEnvelope);
26114 }
26115 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
26116 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
26117 }
26118 }
26119
26120 next_offset += envelope_size;
26121 _next_ordinal_to_read += 1;
26122 if next_offset >= end_offset {
26123 return Ok(());
26124 }
26125
26126 while _next_ordinal_to_read < 7 {
26128 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
26129 _next_ordinal_to_read += 1;
26130 next_offset += envelope_size;
26131 }
26132
26133 let next_out_of_line = decoder.next_out_of_line();
26134 let handles_before = decoder.remaining_handles();
26135 if let Some((inlined, num_bytes, num_handles)) =
26136 fidl::encoding::decode_envelope_header(decoder, next_offset)?
26137 {
26138 let member_inline_size = <fidl::encoding::Vector<SrpServerHost, 64> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
26139 if inlined != (member_inline_size <= 4) {
26140 return Err(fidl::Error::InvalidInlineBitInEnvelope);
26141 }
26142 let inner_offset;
26143 let mut inner_depth = depth.clone();
26144 if inlined {
26145 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
26146 inner_offset = next_offset;
26147 } else {
26148 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
26149 inner_depth.increment()?;
26150 }
26151 let val_ref = self.hosts.get_or_insert_with(
26152 || fidl::new_empty!(fidl::encoding::Vector<SrpServerHost, 64>, D),
26153 );
26154 fidl::decode!(fidl::encoding::Vector<SrpServerHost, 64>, D, val_ref, decoder, inner_offset, inner_depth)?;
26155 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
26156 {
26157 return Err(fidl::Error::InvalidNumBytesInEnvelope);
26158 }
26159 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
26160 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
26161 }
26162 }
26163
26164 next_offset += envelope_size;
26165 _next_ordinal_to_read += 1;
26166 if next_offset >= end_offset {
26167 return Ok(());
26168 }
26169
26170 while _next_ordinal_to_read < 8 {
26172 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
26173 _next_ordinal_to_read += 1;
26174 next_offset += envelope_size;
26175 }
26176
26177 let next_out_of_line = decoder.next_out_of_line();
26178 let handles_before = decoder.remaining_handles();
26179 if let Some((inlined, num_bytes, num_handles)) =
26180 fidl::encoding::decode_envelope_header(decoder, next_offset)?
26181 {
26182 let member_inline_size = <fidl::encoding::Vector<SrpServerService, 64> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
26183 if inlined != (member_inline_size <= 4) {
26184 return Err(fidl::Error::InvalidInlineBitInEnvelope);
26185 }
26186 let inner_offset;
26187 let mut inner_depth = depth.clone();
26188 if inlined {
26189 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
26190 inner_offset = next_offset;
26191 } else {
26192 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
26193 inner_depth.increment()?;
26194 }
26195 let val_ref = self.services.get_or_insert_with(
26196 || fidl::new_empty!(fidl::encoding::Vector<SrpServerService, 64>, D),
26197 );
26198 fidl::decode!(fidl::encoding::Vector<SrpServerService, 64>, D, val_ref, decoder, inner_offset, inner_depth)?;
26199 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
26200 {
26201 return Err(fidl::Error::InvalidNumBytesInEnvelope);
26202 }
26203 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
26204 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
26205 }
26206 }
26207
26208 next_offset += envelope_size;
26209
26210 while next_offset < end_offset {
26212 _next_ordinal_to_read += 1;
26213 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
26214 next_offset += envelope_size;
26215 }
26216
26217 Ok(())
26218 }
26219 }
26220
26221 impl SrpServerRegistration {
26222 #[inline(always)]
26223 fn max_ordinal_present(&self) -> u64 {
26224 if let Some(_) = self.remaining_key_lease_time_total {
26225 return 6;
26226 }
26227 if let Some(_) = self.remaining_lease_time_total {
26228 return 5;
26229 }
26230 if let Some(_) = self.key_lease_time_total {
26231 return 4;
26232 }
26233 if let Some(_) = self.lease_time_total {
26234 return 3;
26235 }
26236 if let Some(_) = self.deleted_count {
26237 return 2;
26238 }
26239 if let Some(_) = self.fresh_count {
26240 return 1;
26241 }
26242 0
26243 }
26244 }
26245
26246 impl fidl::encoding::ValueTypeMarker for SrpServerRegistration {
26247 type Borrowed<'a> = &'a Self;
26248 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
26249 value
26250 }
26251 }
26252
26253 unsafe impl fidl::encoding::TypeMarker for SrpServerRegistration {
26254 type Owned = Self;
26255
26256 #[inline(always)]
26257 fn inline_align(_context: fidl::encoding::Context) -> usize {
26258 8
26259 }
26260
26261 #[inline(always)]
26262 fn inline_size(_context: fidl::encoding::Context) -> usize {
26263 16
26264 }
26265 }
26266
26267 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<SrpServerRegistration, D>
26268 for &SrpServerRegistration
26269 {
26270 unsafe fn encode(
26271 self,
26272 encoder: &mut fidl::encoding::Encoder<'_, D>,
26273 offset: usize,
26274 mut depth: fidl::encoding::Depth,
26275 ) -> fidl::Result<()> {
26276 encoder.debug_check_bounds::<SrpServerRegistration>(offset);
26277 let max_ordinal: u64 = self.max_ordinal_present();
26279 encoder.write_num(max_ordinal, offset);
26280 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
26281 if max_ordinal == 0 {
26283 return Ok(());
26284 }
26285 depth.increment()?;
26286 let envelope_size = 8;
26287 let bytes_len = max_ordinal as usize * envelope_size;
26288 #[allow(unused_variables)]
26289 let offset = encoder.out_of_line_offset(bytes_len);
26290 let mut _prev_end_offset: usize = 0;
26291 if 1 > max_ordinal {
26292 return Ok(());
26293 }
26294
26295 let cur_offset: usize = (1 - 1) * envelope_size;
26298
26299 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
26301
26302 fidl::encoding::encode_in_envelope_optional::<u32, D>(
26307 self.fresh_count.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
26308 encoder,
26309 offset + cur_offset,
26310 depth,
26311 )?;
26312
26313 _prev_end_offset = cur_offset + envelope_size;
26314 if 2 > max_ordinal {
26315 return Ok(());
26316 }
26317
26318 let cur_offset: usize = (2 - 1) * envelope_size;
26321
26322 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
26324
26325 fidl::encoding::encode_in_envelope_optional::<u32, D>(
26330 self.deleted_count.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
26331 encoder,
26332 offset + cur_offset,
26333 depth,
26334 )?;
26335
26336 _prev_end_offset = cur_offset + envelope_size;
26337 if 3 > max_ordinal {
26338 return Ok(());
26339 }
26340
26341 let cur_offset: usize = (3 - 1) * envelope_size;
26344
26345 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
26347
26348 fidl::encoding::encode_in_envelope_optional::<i64, D>(
26353 self.lease_time_total
26354 .as_ref()
26355 .map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
26356 encoder,
26357 offset + cur_offset,
26358 depth,
26359 )?;
26360
26361 _prev_end_offset = cur_offset + envelope_size;
26362 if 4 > max_ordinal {
26363 return Ok(());
26364 }
26365
26366 let cur_offset: usize = (4 - 1) * envelope_size;
26369
26370 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
26372
26373 fidl::encoding::encode_in_envelope_optional::<i64, D>(
26378 self.key_lease_time_total
26379 .as_ref()
26380 .map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
26381 encoder,
26382 offset + cur_offset,
26383 depth,
26384 )?;
26385
26386 _prev_end_offset = cur_offset + envelope_size;
26387 if 5 > max_ordinal {
26388 return Ok(());
26389 }
26390
26391 let cur_offset: usize = (5 - 1) * envelope_size;
26394
26395 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
26397
26398 fidl::encoding::encode_in_envelope_optional::<i64, D>(
26403 self.remaining_lease_time_total
26404 .as_ref()
26405 .map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
26406 encoder,
26407 offset + cur_offset,
26408 depth,
26409 )?;
26410
26411 _prev_end_offset = cur_offset + envelope_size;
26412 if 6 > max_ordinal {
26413 return Ok(());
26414 }
26415
26416 let cur_offset: usize = (6 - 1) * envelope_size;
26419
26420 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
26422
26423 fidl::encoding::encode_in_envelope_optional::<i64, D>(
26428 self.remaining_key_lease_time_total
26429 .as_ref()
26430 .map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
26431 encoder,
26432 offset + cur_offset,
26433 depth,
26434 )?;
26435
26436 _prev_end_offset = cur_offset + envelope_size;
26437
26438 Ok(())
26439 }
26440 }
26441
26442 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for SrpServerRegistration {
26443 #[inline(always)]
26444 fn new_empty() -> Self {
26445 Self::default()
26446 }
26447
26448 unsafe fn decode(
26449 &mut self,
26450 decoder: &mut fidl::encoding::Decoder<'_, D>,
26451 offset: usize,
26452 mut depth: fidl::encoding::Depth,
26453 ) -> fidl::Result<()> {
26454 decoder.debug_check_bounds::<Self>(offset);
26455 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
26456 None => return Err(fidl::Error::NotNullable),
26457 Some(len) => len,
26458 };
26459 if len == 0 {
26461 return Ok(());
26462 };
26463 depth.increment()?;
26464 let envelope_size = 8;
26465 let bytes_len = len * envelope_size;
26466 let offset = decoder.out_of_line_offset(bytes_len)?;
26467 let mut _next_ordinal_to_read = 0;
26469 let mut next_offset = offset;
26470 let end_offset = offset + bytes_len;
26471 _next_ordinal_to_read += 1;
26472 if next_offset >= end_offset {
26473 return Ok(());
26474 }
26475
26476 while _next_ordinal_to_read < 1 {
26478 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
26479 _next_ordinal_to_read += 1;
26480 next_offset += envelope_size;
26481 }
26482
26483 let next_out_of_line = decoder.next_out_of_line();
26484 let handles_before = decoder.remaining_handles();
26485 if let Some((inlined, num_bytes, num_handles)) =
26486 fidl::encoding::decode_envelope_header(decoder, next_offset)?
26487 {
26488 let member_inline_size =
26489 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
26490 if inlined != (member_inline_size <= 4) {
26491 return Err(fidl::Error::InvalidInlineBitInEnvelope);
26492 }
26493 let inner_offset;
26494 let mut inner_depth = depth.clone();
26495 if inlined {
26496 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
26497 inner_offset = next_offset;
26498 } else {
26499 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
26500 inner_depth.increment()?;
26501 }
26502 let val_ref = self.fresh_count.get_or_insert_with(|| fidl::new_empty!(u32, D));
26503 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
26504 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
26505 {
26506 return Err(fidl::Error::InvalidNumBytesInEnvelope);
26507 }
26508 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
26509 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
26510 }
26511 }
26512
26513 next_offset += envelope_size;
26514 _next_ordinal_to_read += 1;
26515 if next_offset >= end_offset {
26516 return Ok(());
26517 }
26518
26519 while _next_ordinal_to_read < 2 {
26521 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
26522 _next_ordinal_to_read += 1;
26523 next_offset += envelope_size;
26524 }
26525
26526 let next_out_of_line = decoder.next_out_of_line();
26527 let handles_before = decoder.remaining_handles();
26528 if let Some((inlined, num_bytes, num_handles)) =
26529 fidl::encoding::decode_envelope_header(decoder, next_offset)?
26530 {
26531 let member_inline_size =
26532 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
26533 if inlined != (member_inline_size <= 4) {
26534 return Err(fidl::Error::InvalidInlineBitInEnvelope);
26535 }
26536 let inner_offset;
26537 let mut inner_depth = depth.clone();
26538 if inlined {
26539 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
26540 inner_offset = next_offset;
26541 } else {
26542 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
26543 inner_depth.increment()?;
26544 }
26545 let val_ref = self.deleted_count.get_or_insert_with(|| fidl::new_empty!(u32, D));
26546 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
26547 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
26548 {
26549 return Err(fidl::Error::InvalidNumBytesInEnvelope);
26550 }
26551 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
26552 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
26553 }
26554 }
26555
26556 next_offset += envelope_size;
26557 _next_ordinal_to_read += 1;
26558 if next_offset >= end_offset {
26559 return Ok(());
26560 }
26561
26562 while _next_ordinal_to_read < 3 {
26564 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
26565 _next_ordinal_to_read += 1;
26566 next_offset += envelope_size;
26567 }
26568
26569 let next_out_of_line = decoder.next_out_of_line();
26570 let handles_before = decoder.remaining_handles();
26571 if let Some((inlined, num_bytes, num_handles)) =
26572 fidl::encoding::decode_envelope_header(decoder, next_offset)?
26573 {
26574 let member_inline_size =
26575 <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
26576 if inlined != (member_inline_size <= 4) {
26577 return Err(fidl::Error::InvalidInlineBitInEnvelope);
26578 }
26579 let inner_offset;
26580 let mut inner_depth = depth.clone();
26581 if inlined {
26582 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
26583 inner_offset = next_offset;
26584 } else {
26585 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
26586 inner_depth.increment()?;
26587 }
26588 let val_ref = self.lease_time_total.get_or_insert_with(|| fidl::new_empty!(i64, D));
26589 fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
26590 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
26591 {
26592 return Err(fidl::Error::InvalidNumBytesInEnvelope);
26593 }
26594 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
26595 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
26596 }
26597 }
26598
26599 next_offset += envelope_size;
26600 _next_ordinal_to_read += 1;
26601 if next_offset >= end_offset {
26602 return Ok(());
26603 }
26604
26605 while _next_ordinal_to_read < 4 {
26607 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
26608 _next_ordinal_to_read += 1;
26609 next_offset += envelope_size;
26610 }
26611
26612 let next_out_of_line = decoder.next_out_of_line();
26613 let handles_before = decoder.remaining_handles();
26614 if let Some((inlined, num_bytes, num_handles)) =
26615 fidl::encoding::decode_envelope_header(decoder, next_offset)?
26616 {
26617 let member_inline_size =
26618 <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
26619 if inlined != (member_inline_size <= 4) {
26620 return Err(fidl::Error::InvalidInlineBitInEnvelope);
26621 }
26622 let inner_offset;
26623 let mut inner_depth = depth.clone();
26624 if inlined {
26625 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
26626 inner_offset = next_offset;
26627 } else {
26628 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
26629 inner_depth.increment()?;
26630 }
26631 let val_ref =
26632 self.key_lease_time_total.get_or_insert_with(|| fidl::new_empty!(i64, D));
26633 fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
26634 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
26635 {
26636 return Err(fidl::Error::InvalidNumBytesInEnvelope);
26637 }
26638 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
26639 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
26640 }
26641 }
26642
26643 next_offset += envelope_size;
26644 _next_ordinal_to_read += 1;
26645 if next_offset >= end_offset {
26646 return Ok(());
26647 }
26648
26649 while _next_ordinal_to_read < 5 {
26651 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
26652 _next_ordinal_to_read += 1;
26653 next_offset += envelope_size;
26654 }
26655
26656 let next_out_of_line = decoder.next_out_of_line();
26657 let handles_before = decoder.remaining_handles();
26658 if let Some((inlined, num_bytes, num_handles)) =
26659 fidl::encoding::decode_envelope_header(decoder, next_offset)?
26660 {
26661 let member_inline_size =
26662 <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
26663 if inlined != (member_inline_size <= 4) {
26664 return Err(fidl::Error::InvalidInlineBitInEnvelope);
26665 }
26666 let inner_offset;
26667 let mut inner_depth = depth.clone();
26668 if inlined {
26669 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
26670 inner_offset = next_offset;
26671 } else {
26672 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
26673 inner_depth.increment()?;
26674 }
26675 let val_ref =
26676 self.remaining_lease_time_total.get_or_insert_with(|| fidl::new_empty!(i64, D));
26677 fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
26678 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
26679 {
26680 return Err(fidl::Error::InvalidNumBytesInEnvelope);
26681 }
26682 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
26683 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
26684 }
26685 }
26686
26687 next_offset += envelope_size;
26688 _next_ordinal_to_read += 1;
26689 if next_offset >= end_offset {
26690 return Ok(());
26691 }
26692
26693 while _next_ordinal_to_read < 6 {
26695 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
26696 _next_ordinal_to_read += 1;
26697 next_offset += envelope_size;
26698 }
26699
26700 let next_out_of_line = decoder.next_out_of_line();
26701 let handles_before = decoder.remaining_handles();
26702 if let Some((inlined, num_bytes, num_handles)) =
26703 fidl::encoding::decode_envelope_header(decoder, next_offset)?
26704 {
26705 let member_inline_size =
26706 <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
26707 if inlined != (member_inline_size <= 4) {
26708 return Err(fidl::Error::InvalidInlineBitInEnvelope);
26709 }
26710 let inner_offset;
26711 let mut inner_depth = depth.clone();
26712 if inlined {
26713 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
26714 inner_offset = next_offset;
26715 } else {
26716 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
26717 inner_depth.increment()?;
26718 }
26719 let val_ref = self
26720 .remaining_key_lease_time_total
26721 .get_or_insert_with(|| fidl::new_empty!(i64, D));
26722 fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
26723 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
26724 {
26725 return Err(fidl::Error::InvalidNumBytesInEnvelope);
26726 }
26727 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
26728 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
26729 }
26730 }
26731
26732 next_offset += envelope_size;
26733
26734 while next_offset < end_offset {
26736 _next_ordinal_to_read += 1;
26737 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
26738 next_offset += envelope_size;
26739 }
26740
26741 Ok(())
26742 }
26743 }
26744
26745 impl SrpServerResponseCounters {
26746 #[inline(always)]
26747 fn max_ordinal_present(&self) -> u64 {
26748 if let Some(_) = self.other_response {
26749 return 6;
26750 }
26751 if let Some(_) = self.refused_response {
26752 return 5;
26753 }
26754 if let Some(_) = self.name_exists_response {
26755 return 4;
26756 }
26757 if let Some(_) = self.format_error_response {
26758 return 3;
26759 }
26760 if let Some(_) = self.server_failure_response {
26761 return 2;
26762 }
26763 if let Some(_) = self.success_response {
26764 return 1;
26765 }
26766 0
26767 }
26768 }
26769
26770 impl fidl::encoding::ValueTypeMarker for SrpServerResponseCounters {
26771 type Borrowed<'a> = &'a Self;
26772 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
26773 value
26774 }
26775 }
26776
26777 unsafe impl fidl::encoding::TypeMarker for SrpServerResponseCounters {
26778 type Owned = Self;
26779
26780 #[inline(always)]
26781 fn inline_align(_context: fidl::encoding::Context) -> usize {
26782 8
26783 }
26784
26785 #[inline(always)]
26786 fn inline_size(_context: fidl::encoding::Context) -> usize {
26787 16
26788 }
26789 }
26790
26791 unsafe impl<D: fidl::encoding::ResourceDialect>
26792 fidl::encoding::Encode<SrpServerResponseCounters, D> for &SrpServerResponseCounters
26793 {
26794 unsafe fn encode(
26795 self,
26796 encoder: &mut fidl::encoding::Encoder<'_, D>,
26797 offset: usize,
26798 mut depth: fidl::encoding::Depth,
26799 ) -> fidl::Result<()> {
26800 encoder.debug_check_bounds::<SrpServerResponseCounters>(offset);
26801 let max_ordinal: u64 = self.max_ordinal_present();
26803 encoder.write_num(max_ordinal, offset);
26804 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
26805 if max_ordinal == 0 {
26807 return Ok(());
26808 }
26809 depth.increment()?;
26810 let envelope_size = 8;
26811 let bytes_len = max_ordinal as usize * envelope_size;
26812 #[allow(unused_variables)]
26813 let offset = encoder.out_of_line_offset(bytes_len);
26814 let mut _prev_end_offset: usize = 0;
26815 if 1 > max_ordinal {
26816 return Ok(());
26817 }
26818
26819 let cur_offset: usize = (1 - 1) * envelope_size;
26822
26823 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
26825
26826 fidl::encoding::encode_in_envelope_optional::<u32, D>(
26831 self.success_response
26832 .as_ref()
26833 .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
26834 encoder,
26835 offset + cur_offset,
26836 depth,
26837 )?;
26838
26839 _prev_end_offset = cur_offset + envelope_size;
26840 if 2 > max_ordinal {
26841 return Ok(());
26842 }
26843
26844 let cur_offset: usize = (2 - 1) * envelope_size;
26847
26848 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
26850
26851 fidl::encoding::encode_in_envelope_optional::<u32, D>(
26856 self.server_failure_response
26857 .as_ref()
26858 .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
26859 encoder,
26860 offset + cur_offset,
26861 depth,
26862 )?;
26863
26864 _prev_end_offset = cur_offset + envelope_size;
26865 if 3 > max_ordinal {
26866 return Ok(());
26867 }
26868
26869 let cur_offset: usize = (3 - 1) * envelope_size;
26872
26873 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
26875
26876 fidl::encoding::encode_in_envelope_optional::<u32, D>(
26881 self.format_error_response
26882 .as_ref()
26883 .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
26884 encoder,
26885 offset + cur_offset,
26886 depth,
26887 )?;
26888
26889 _prev_end_offset = cur_offset + envelope_size;
26890 if 4 > max_ordinal {
26891 return Ok(());
26892 }
26893
26894 let cur_offset: usize = (4 - 1) * envelope_size;
26897
26898 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
26900
26901 fidl::encoding::encode_in_envelope_optional::<u32, D>(
26906 self.name_exists_response
26907 .as_ref()
26908 .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
26909 encoder,
26910 offset + cur_offset,
26911 depth,
26912 )?;
26913
26914 _prev_end_offset = cur_offset + envelope_size;
26915 if 5 > max_ordinal {
26916 return Ok(());
26917 }
26918
26919 let cur_offset: usize = (5 - 1) * envelope_size;
26922
26923 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
26925
26926 fidl::encoding::encode_in_envelope_optional::<u32, D>(
26931 self.refused_response
26932 .as_ref()
26933 .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
26934 encoder,
26935 offset + cur_offset,
26936 depth,
26937 )?;
26938
26939 _prev_end_offset = cur_offset + envelope_size;
26940 if 6 > max_ordinal {
26941 return Ok(());
26942 }
26943
26944 let cur_offset: usize = (6 - 1) * envelope_size;
26947
26948 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
26950
26951 fidl::encoding::encode_in_envelope_optional::<u32, D>(
26956 self.other_response.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
26957 encoder,
26958 offset + cur_offset,
26959 depth,
26960 )?;
26961
26962 _prev_end_offset = cur_offset + envelope_size;
26963
26964 Ok(())
26965 }
26966 }
26967
26968 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
26969 for SrpServerResponseCounters
26970 {
26971 #[inline(always)]
26972 fn new_empty() -> Self {
26973 Self::default()
26974 }
26975
26976 unsafe fn decode(
26977 &mut self,
26978 decoder: &mut fidl::encoding::Decoder<'_, D>,
26979 offset: usize,
26980 mut depth: fidl::encoding::Depth,
26981 ) -> fidl::Result<()> {
26982 decoder.debug_check_bounds::<Self>(offset);
26983 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
26984 None => return Err(fidl::Error::NotNullable),
26985 Some(len) => len,
26986 };
26987 if len == 0 {
26989 return Ok(());
26990 };
26991 depth.increment()?;
26992 let envelope_size = 8;
26993 let bytes_len = len * envelope_size;
26994 let offset = decoder.out_of_line_offset(bytes_len)?;
26995 let mut _next_ordinal_to_read = 0;
26997 let mut next_offset = offset;
26998 let end_offset = offset + bytes_len;
26999 _next_ordinal_to_read += 1;
27000 if next_offset >= end_offset {
27001 return Ok(());
27002 }
27003
27004 while _next_ordinal_to_read < 1 {
27006 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
27007 _next_ordinal_to_read += 1;
27008 next_offset += envelope_size;
27009 }
27010
27011 let next_out_of_line = decoder.next_out_of_line();
27012 let handles_before = decoder.remaining_handles();
27013 if let Some((inlined, num_bytes, num_handles)) =
27014 fidl::encoding::decode_envelope_header(decoder, next_offset)?
27015 {
27016 let member_inline_size =
27017 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
27018 if inlined != (member_inline_size <= 4) {
27019 return Err(fidl::Error::InvalidInlineBitInEnvelope);
27020 }
27021 let inner_offset;
27022 let mut inner_depth = depth.clone();
27023 if inlined {
27024 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
27025 inner_offset = next_offset;
27026 } else {
27027 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
27028 inner_depth.increment()?;
27029 }
27030 let val_ref = self.success_response.get_or_insert_with(|| fidl::new_empty!(u32, D));
27031 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
27032 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
27033 {
27034 return Err(fidl::Error::InvalidNumBytesInEnvelope);
27035 }
27036 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
27037 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
27038 }
27039 }
27040
27041 next_offset += envelope_size;
27042 _next_ordinal_to_read += 1;
27043 if next_offset >= end_offset {
27044 return Ok(());
27045 }
27046
27047 while _next_ordinal_to_read < 2 {
27049 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
27050 _next_ordinal_to_read += 1;
27051 next_offset += envelope_size;
27052 }
27053
27054 let next_out_of_line = decoder.next_out_of_line();
27055 let handles_before = decoder.remaining_handles();
27056 if let Some((inlined, num_bytes, num_handles)) =
27057 fidl::encoding::decode_envelope_header(decoder, next_offset)?
27058 {
27059 let member_inline_size =
27060 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
27061 if inlined != (member_inline_size <= 4) {
27062 return Err(fidl::Error::InvalidInlineBitInEnvelope);
27063 }
27064 let inner_offset;
27065 let mut inner_depth = depth.clone();
27066 if inlined {
27067 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
27068 inner_offset = next_offset;
27069 } else {
27070 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
27071 inner_depth.increment()?;
27072 }
27073 let val_ref =
27074 self.server_failure_response.get_or_insert_with(|| fidl::new_empty!(u32, D));
27075 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
27076 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
27077 {
27078 return Err(fidl::Error::InvalidNumBytesInEnvelope);
27079 }
27080 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
27081 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
27082 }
27083 }
27084
27085 next_offset += envelope_size;
27086 _next_ordinal_to_read += 1;
27087 if next_offset >= end_offset {
27088 return Ok(());
27089 }
27090
27091 while _next_ordinal_to_read < 3 {
27093 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
27094 _next_ordinal_to_read += 1;
27095 next_offset += envelope_size;
27096 }
27097
27098 let next_out_of_line = decoder.next_out_of_line();
27099 let handles_before = decoder.remaining_handles();
27100 if let Some((inlined, num_bytes, num_handles)) =
27101 fidl::encoding::decode_envelope_header(decoder, next_offset)?
27102 {
27103 let member_inline_size =
27104 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
27105 if inlined != (member_inline_size <= 4) {
27106 return Err(fidl::Error::InvalidInlineBitInEnvelope);
27107 }
27108 let inner_offset;
27109 let mut inner_depth = depth.clone();
27110 if inlined {
27111 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
27112 inner_offset = next_offset;
27113 } else {
27114 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
27115 inner_depth.increment()?;
27116 }
27117 let val_ref =
27118 self.format_error_response.get_or_insert_with(|| fidl::new_empty!(u32, D));
27119 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
27120 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
27121 {
27122 return Err(fidl::Error::InvalidNumBytesInEnvelope);
27123 }
27124 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
27125 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
27126 }
27127 }
27128
27129 next_offset += envelope_size;
27130 _next_ordinal_to_read += 1;
27131 if next_offset >= end_offset {
27132 return Ok(());
27133 }
27134
27135 while _next_ordinal_to_read < 4 {
27137 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
27138 _next_ordinal_to_read += 1;
27139 next_offset += envelope_size;
27140 }
27141
27142 let next_out_of_line = decoder.next_out_of_line();
27143 let handles_before = decoder.remaining_handles();
27144 if let Some((inlined, num_bytes, num_handles)) =
27145 fidl::encoding::decode_envelope_header(decoder, next_offset)?
27146 {
27147 let member_inline_size =
27148 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
27149 if inlined != (member_inline_size <= 4) {
27150 return Err(fidl::Error::InvalidInlineBitInEnvelope);
27151 }
27152 let inner_offset;
27153 let mut inner_depth = depth.clone();
27154 if inlined {
27155 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
27156 inner_offset = next_offset;
27157 } else {
27158 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
27159 inner_depth.increment()?;
27160 }
27161 let val_ref =
27162 self.name_exists_response.get_or_insert_with(|| fidl::new_empty!(u32, D));
27163 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
27164 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
27165 {
27166 return Err(fidl::Error::InvalidNumBytesInEnvelope);
27167 }
27168 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
27169 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
27170 }
27171 }
27172
27173 next_offset += envelope_size;
27174 _next_ordinal_to_read += 1;
27175 if next_offset >= end_offset {
27176 return Ok(());
27177 }
27178
27179 while _next_ordinal_to_read < 5 {
27181 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
27182 _next_ordinal_to_read += 1;
27183 next_offset += envelope_size;
27184 }
27185
27186 let next_out_of_line = decoder.next_out_of_line();
27187 let handles_before = decoder.remaining_handles();
27188 if let Some((inlined, num_bytes, num_handles)) =
27189 fidl::encoding::decode_envelope_header(decoder, next_offset)?
27190 {
27191 let member_inline_size =
27192 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
27193 if inlined != (member_inline_size <= 4) {
27194 return Err(fidl::Error::InvalidInlineBitInEnvelope);
27195 }
27196 let inner_offset;
27197 let mut inner_depth = depth.clone();
27198 if inlined {
27199 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
27200 inner_offset = next_offset;
27201 } else {
27202 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
27203 inner_depth.increment()?;
27204 }
27205 let val_ref = self.refused_response.get_or_insert_with(|| fidl::new_empty!(u32, D));
27206 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
27207 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
27208 {
27209 return Err(fidl::Error::InvalidNumBytesInEnvelope);
27210 }
27211 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
27212 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
27213 }
27214 }
27215
27216 next_offset += envelope_size;
27217 _next_ordinal_to_read += 1;
27218 if next_offset >= end_offset {
27219 return Ok(());
27220 }
27221
27222 while _next_ordinal_to_read < 6 {
27224 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
27225 _next_ordinal_to_read += 1;
27226 next_offset += envelope_size;
27227 }
27228
27229 let next_out_of_line = decoder.next_out_of_line();
27230 let handles_before = decoder.remaining_handles();
27231 if let Some((inlined, num_bytes, num_handles)) =
27232 fidl::encoding::decode_envelope_header(decoder, next_offset)?
27233 {
27234 let member_inline_size =
27235 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
27236 if inlined != (member_inline_size <= 4) {
27237 return Err(fidl::Error::InvalidInlineBitInEnvelope);
27238 }
27239 let inner_offset;
27240 let mut inner_depth = depth.clone();
27241 if inlined {
27242 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
27243 inner_offset = next_offset;
27244 } else {
27245 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
27246 inner_depth.increment()?;
27247 }
27248 let val_ref = self.other_response.get_or_insert_with(|| fidl::new_empty!(u32, D));
27249 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
27250 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
27251 {
27252 return Err(fidl::Error::InvalidNumBytesInEnvelope);
27253 }
27254 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
27255 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
27256 }
27257 }
27258
27259 next_offset += envelope_size;
27260
27261 while next_offset < end_offset {
27263 _next_ordinal_to_read += 1;
27264 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
27265 next_offset += envelope_size;
27266 }
27267
27268 Ok(())
27269 }
27270 }
27271
27272 impl SrpServerService {
27273 #[inline(always)]
27274 fn max_ordinal_present(&self) -> u64 {
27275 if let Some(_) = self.host {
27276 return 11;
27277 }
27278 if let Some(_) = self.txt_data {
27279 return 10;
27280 }
27281 if let Some(_) = self.key_lease {
27282 return 9;
27283 }
27284 if let Some(_) = self.lease {
27285 return 8;
27286 }
27287 if let Some(_) = self.ttl {
27288 return 7;
27289 }
27290 if let Some(_) = self.weight {
27291 return 6;
27292 }
27293 if let Some(_) = self.priority {
27294 return 5;
27295 }
27296 if let Some(_) = self.port {
27297 return 4;
27298 }
27299 if let Some(_) = self.subtypes {
27300 return 3;
27301 }
27302 if let Some(_) = self.deleted {
27303 return 2;
27304 }
27305 if let Some(_) = self.instance_name {
27306 return 1;
27307 }
27308 0
27309 }
27310 }
27311
27312 impl fidl::encoding::ValueTypeMarker for SrpServerService {
27313 type Borrowed<'a> = &'a Self;
27314 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
27315 value
27316 }
27317 }
27318
27319 unsafe impl fidl::encoding::TypeMarker for SrpServerService {
27320 type Owned = Self;
27321
27322 #[inline(always)]
27323 fn inline_align(_context: fidl::encoding::Context) -> usize {
27324 8
27325 }
27326
27327 #[inline(always)]
27328 fn inline_size(_context: fidl::encoding::Context) -> usize {
27329 16
27330 }
27331 }
27332
27333 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<SrpServerService, D>
27334 for &SrpServerService
27335 {
27336 unsafe fn encode(
27337 self,
27338 encoder: &mut fidl::encoding::Encoder<'_, D>,
27339 offset: usize,
27340 mut depth: fidl::encoding::Depth,
27341 ) -> fidl::Result<()> {
27342 encoder.debug_check_bounds::<SrpServerService>(offset);
27343 let max_ordinal: u64 = self.max_ordinal_present();
27345 encoder.write_num(max_ordinal, offset);
27346 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
27347 if max_ordinal == 0 {
27349 return Ok(());
27350 }
27351 depth.increment()?;
27352 let envelope_size = 8;
27353 let bytes_len = max_ordinal as usize * envelope_size;
27354 #[allow(unused_variables)]
27355 let offset = encoder.out_of_line_offset(bytes_len);
27356 let mut _prev_end_offset: usize = 0;
27357 if 1 > max_ordinal {
27358 return Ok(());
27359 }
27360
27361 let cur_offset: usize = (1 - 1) * envelope_size;
27364
27365 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
27367
27368 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<255>, D>(
27373 self.instance_name.as_ref().map(
27374 <fidl::encoding::BoundedString<255> as fidl::encoding::ValueTypeMarker>::borrow,
27375 ),
27376 encoder,
27377 offset + cur_offset,
27378 depth,
27379 )?;
27380
27381 _prev_end_offset = cur_offset + envelope_size;
27382 if 2 > max_ordinal {
27383 return Ok(());
27384 }
27385
27386 let cur_offset: usize = (2 - 1) * envelope_size;
27389
27390 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
27392
27393 fidl::encoding::encode_in_envelope_optional::<bool, D>(
27398 self.deleted.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
27399 encoder,
27400 offset + cur_offset,
27401 depth,
27402 )?;
27403
27404 _prev_end_offset = cur_offset + envelope_size;
27405 if 3 > max_ordinal {
27406 return Ok(());
27407 }
27408
27409 let cur_offset: usize = (3 - 1) * envelope_size;
27412
27413 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
27415
27416 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<fidl::encoding::BoundedString<63>, 6>, D>(
27421 self.subtypes.as_ref().map(<fidl::encoding::Vector<fidl::encoding::BoundedString<63>, 6> as fidl::encoding::ValueTypeMarker>::borrow),
27422 encoder, offset + cur_offset, depth
27423 )?;
27424
27425 _prev_end_offset = cur_offset + envelope_size;
27426 if 4 > max_ordinal {
27427 return Ok(());
27428 }
27429
27430 let cur_offset: usize = (4 - 1) * envelope_size;
27433
27434 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
27436
27437 fidl::encoding::encode_in_envelope_optional::<u16, D>(
27442 self.port.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
27443 encoder,
27444 offset + cur_offset,
27445 depth,
27446 )?;
27447
27448 _prev_end_offset = cur_offset + envelope_size;
27449 if 5 > max_ordinal {
27450 return Ok(());
27451 }
27452
27453 let cur_offset: usize = (5 - 1) * envelope_size;
27456
27457 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
27459
27460 fidl::encoding::encode_in_envelope_optional::<u16, D>(
27465 self.priority.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
27466 encoder,
27467 offset + cur_offset,
27468 depth,
27469 )?;
27470
27471 _prev_end_offset = cur_offset + envelope_size;
27472 if 6 > max_ordinal {
27473 return Ok(());
27474 }
27475
27476 let cur_offset: usize = (6 - 1) * envelope_size;
27479
27480 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
27482
27483 fidl::encoding::encode_in_envelope_optional::<u16, D>(
27488 self.weight.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
27489 encoder,
27490 offset + cur_offset,
27491 depth,
27492 )?;
27493
27494 _prev_end_offset = cur_offset + envelope_size;
27495 if 7 > max_ordinal {
27496 return Ok(());
27497 }
27498
27499 let cur_offset: usize = (7 - 1) * envelope_size;
27502
27503 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
27505
27506 fidl::encoding::encode_in_envelope_optional::<i64, D>(
27511 self.ttl.as_ref().map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
27512 encoder,
27513 offset + cur_offset,
27514 depth,
27515 )?;
27516
27517 _prev_end_offset = cur_offset + envelope_size;
27518 if 8 > max_ordinal {
27519 return Ok(());
27520 }
27521
27522 let cur_offset: usize = (8 - 1) * envelope_size;
27525
27526 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
27528
27529 fidl::encoding::encode_in_envelope_optional::<i64, D>(
27534 self.lease.as_ref().map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
27535 encoder,
27536 offset + cur_offset,
27537 depth,
27538 )?;
27539
27540 _prev_end_offset = cur_offset + envelope_size;
27541 if 9 > max_ordinal {
27542 return Ok(());
27543 }
27544
27545 let cur_offset: usize = (9 - 1) * envelope_size;
27548
27549 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
27551
27552 fidl::encoding::encode_in_envelope_optional::<i64, D>(
27557 self.key_lease.as_ref().map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
27558 encoder,
27559 offset + cur_offset,
27560 depth,
27561 )?;
27562
27563 _prev_end_offset = cur_offset + envelope_size;
27564 if 10 > max_ordinal {
27565 return Ok(());
27566 }
27567
27568 let cur_offset: usize = (10 - 1) * envelope_size;
27571
27572 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
27574
27575 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<DnsTxtEntry>, D>(
27580 self.txt_data.as_ref().map(<fidl::encoding::UnboundedVector<DnsTxtEntry> as fidl::encoding::ValueTypeMarker>::borrow),
27581 encoder, offset + cur_offset, depth
27582 )?;
27583
27584 _prev_end_offset = cur_offset + envelope_size;
27585 if 11 > max_ordinal {
27586 return Ok(());
27587 }
27588
27589 let cur_offset: usize = (11 - 1) * envelope_size;
27592
27593 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
27595
27596 fidl::encoding::encode_in_envelope_optional::<SrpServerHost, D>(
27601 self.host.as_ref().map(<SrpServerHost as fidl::encoding::ValueTypeMarker>::borrow),
27602 encoder,
27603 offset + cur_offset,
27604 depth,
27605 )?;
27606
27607 _prev_end_offset = cur_offset + envelope_size;
27608
27609 Ok(())
27610 }
27611 }
27612
27613 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for SrpServerService {
27614 #[inline(always)]
27615 fn new_empty() -> Self {
27616 Self::default()
27617 }
27618
27619 unsafe fn decode(
27620 &mut self,
27621 decoder: &mut fidl::encoding::Decoder<'_, D>,
27622 offset: usize,
27623 mut depth: fidl::encoding::Depth,
27624 ) -> fidl::Result<()> {
27625 decoder.debug_check_bounds::<Self>(offset);
27626 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
27627 None => return Err(fidl::Error::NotNullable),
27628 Some(len) => len,
27629 };
27630 if len == 0 {
27632 return Ok(());
27633 };
27634 depth.increment()?;
27635 let envelope_size = 8;
27636 let bytes_len = len * envelope_size;
27637 let offset = decoder.out_of_line_offset(bytes_len)?;
27638 let mut _next_ordinal_to_read = 0;
27640 let mut next_offset = offset;
27641 let end_offset = offset + bytes_len;
27642 _next_ordinal_to_read += 1;
27643 if next_offset >= end_offset {
27644 return Ok(());
27645 }
27646
27647 while _next_ordinal_to_read < 1 {
27649 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
27650 _next_ordinal_to_read += 1;
27651 next_offset += envelope_size;
27652 }
27653
27654 let next_out_of_line = decoder.next_out_of_line();
27655 let handles_before = decoder.remaining_handles();
27656 if let Some((inlined, num_bytes, num_handles)) =
27657 fidl::encoding::decode_envelope_header(decoder, next_offset)?
27658 {
27659 let member_inline_size =
27660 <fidl::encoding::BoundedString<255> as fidl::encoding::TypeMarker>::inline_size(
27661 decoder.context,
27662 );
27663 if inlined != (member_inline_size <= 4) {
27664 return Err(fidl::Error::InvalidInlineBitInEnvelope);
27665 }
27666 let inner_offset;
27667 let mut inner_depth = depth.clone();
27668 if inlined {
27669 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
27670 inner_offset = next_offset;
27671 } else {
27672 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
27673 inner_depth.increment()?;
27674 }
27675 let val_ref = self
27676 .instance_name
27677 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<255>, D));
27678 fidl::decode!(
27679 fidl::encoding::BoundedString<255>,
27680 D,
27681 val_ref,
27682 decoder,
27683 inner_offset,
27684 inner_depth
27685 )?;
27686 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
27687 {
27688 return Err(fidl::Error::InvalidNumBytesInEnvelope);
27689 }
27690 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
27691 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
27692 }
27693 }
27694
27695 next_offset += envelope_size;
27696 _next_ordinal_to_read += 1;
27697 if next_offset >= end_offset {
27698 return Ok(());
27699 }
27700
27701 while _next_ordinal_to_read < 2 {
27703 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
27704 _next_ordinal_to_read += 1;
27705 next_offset += envelope_size;
27706 }
27707
27708 let next_out_of_line = decoder.next_out_of_line();
27709 let handles_before = decoder.remaining_handles();
27710 if let Some((inlined, num_bytes, num_handles)) =
27711 fidl::encoding::decode_envelope_header(decoder, next_offset)?
27712 {
27713 let member_inline_size =
27714 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
27715 if inlined != (member_inline_size <= 4) {
27716 return Err(fidl::Error::InvalidInlineBitInEnvelope);
27717 }
27718 let inner_offset;
27719 let mut inner_depth = depth.clone();
27720 if inlined {
27721 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
27722 inner_offset = next_offset;
27723 } else {
27724 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
27725 inner_depth.increment()?;
27726 }
27727 let val_ref = self.deleted.get_or_insert_with(|| fidl::new_empty!(bool, D));
27728 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
27729 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
27730 {
27731 return Err(fidl::Error::InvalidNumBytesInEnvelope);
27732 }
27733 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
27734 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
27735 }
27736 }
27737
27738 next_offset += envelope_size;
27739 _next_ordinal_to_read += 1;
27740 if next_offset >= end_offset {
27741 return Ok(());
27742 }
27743
27744 while _next_ordinal_to_read < 3 {
27746 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
27747 _next_ordinal_to_read += 1;
27748 next_offset += envelope_size;
27749 }
27750
27751 let next_out_of_line = decoder.next_out_of_line();
27752 let handles_before = decoder.remaining_handles();
27753 if let Some((inlined, num_bytes, num_handles)) =
27754 fidl::encoding::decode_envelope_header(decoder, next_offset)?
27755 {
27756 let member_inline_size = <fidl::encoding::Vector<
27757 fidl::encoding::BoundedString<63>,
27758 6,
27759 > as fidl::encoding::TypeMarker>::inline_size(
27760 decoder.context
27761 );
27762 if inlined != (member_inline_size <= 4) {
27763 return Err(fidl::Error::InvalidInlineBitInEnvelope);
27764 }
27765 let inner_offset;
27766 let mut inner_depth = depth.clone();
27767 if inlined {
27768 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
27769 inner_offset = next_offset;
27770 } else {
27771 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
27772 inner_depth.increment()?;
27773 }
27774 let val_ref = self.subtypes.get_or_insert_with(|| {
27775 fidl::new_empty!(
27776 fidl::encoding::Vector<fidl::encoding::BoundedString<63>, 6>,
27777 D
27778 )
27779 });
27780 fidl::decode!(
27781 fidl::encoding::Vector<fidl::encoding::BoundedString<63>, 6>,
27782 D,
27783 val_ref,
27784 decoder,
27785 inner_offset,
27786 inner_depth
27787 )?;
27788 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
27789 {
27790 return Err(fidl::Error::InvalidNumBytesInEnvelope);
27791 }
27792 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
27793 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
27794 }
27795 }
27796
27797 next_offset += envelope_size;
27798 _next_ordinal_to_read += 1;
27799 if next_offset >= end_offset {
27800 return Ok(());
27801 }
27802
27803 while _next_ordinal_to_read < 4 {
27805 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
27806 _next_ordinal_to_read += 1;
27807 next_offset += envelope_size;
27808 }
27809
27810 let next_out_of_line = decoder.next_out_of_line();
27811 let handles_before = decoder.remaining_handles();
27812 if let Some((inlined, num_bytes, num_handles)) =
27813 fidl::encoding::decode_envelope_header(decoder, next_offset)?
27814 {
27815 let member_inline_size =
27816 <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
27817 if inlined != (member_inline_size <= 4) {
27818 return Err(fidl::Error::InvalidInlineBitInEnvelope);
27819 }
27820 let inner_offset;
27821 let mut inner_depth = depth.clone();
27822 if inlined {
27823 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
27824 inner_offset = next_offset;
27825 } else {
27826 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
27827 inner_depth.increment()?;
27828 }
27829 let val_ref = self.port.get_or_insert_with(|| fidl::new_empty!(u16, D));
27830 fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
27831 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
27832 {
27833 return Err(fidl::Error::InvalidNumBytesInEnvelope);
27834 }
27835 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
27836 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
27837 }
27838 }
27839
27840 next_offset += envelope_size;
27841 _next_ordinal_to_read += 1;
27842 if next_offset >= end_offset {
27843 return Ok(());
27844 }
27845
27846 while _next_ordinal_to_read < 5 {
27848 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
27849 _next_ordinal_to_read += 1;
27850 next_offset += envelope_size;
27851 }
27852
27853 let next_out_of_line = decoder.next_out_of_line();
27854 let handles_before = decoder.remaining_handles();
27855 if let Some((inlined, num_bytes, num_handles)) =
27856 fidl::encoding::decode_envelope_header(decoder, next_offset)?
27857 {
27858 let member_inline_size =
27859 <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
27860 if inlined != (member_inline_size <= 4) {
27861 return Err(fidl::Error::InvalidInlineBitInEnvelope);
27862 }
27863 let inner_offset;
27864 let mut inner_depth = depth.clone();
27865 if inlined {
27866 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
27867 inner_offset = next_offset;
27868 } else {
27869 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
27870 inner_depth.increment()?;
27871 }
27872 let val_ref = self.priority.get_or_insert_with(|| fidl::new_empty!(u16, D));
27873 fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
27874 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
27875 {
27876 return Err(fidl::Error::InvalidNumBytesInEnvelope);
27877 }
27878 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
27879 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
27880 }
27881 }
27882
27883 next_offset += envelope_size;
27884 _next_ordinal_to_read += 1;
27885 if next_offset >= end_offset {
27886 return Ok(());
27887 }
27888
27889 while _next_ordinal_to_read < 6 {
27891 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
27892 _next_ordinal_to_read += 1;
27893 next_offset += envelope_size;
27894 }
27895
27896 let next_out_of_line = decoder.next_out_of_line();
27897 let handles_before = decoder.remaining_handles();
27898 if let Some((inlined, num_bytes, num_handles)) =
27899 fidl::encoding::decode_envelope_header(decoder, next_offset)?
27900 {
27901 let member_inline_size =
27902 <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
27903 if inlined != (member_inline_size <= 4) {
27904 return Err(fidl::Error::InvalidInlineBitInEnvelope);
27905 }
27906 let inner_offset;
27907 let mut inner_depth = depth.clone();
27908 if inlined {
27909 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
27910 inner_offset = next_offset;
27911 } else {
27912 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
27913 inner_depth.increment()?;
27914 }
27915 let val_ref = self.weight.get_or_insert_with(|| fidl::new_empty!(u16, D));
27916 fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
27917 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
27918 {
27919 return Err(fidl::Error::InvalidNumBytesInEnvelope);
27920 }
27921 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
27922 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
27923 }
27924 }
27925
27926 next_offset += envelope_size;
27927 _next_ordinal_to_read += 1;
27928 if next_offset >= end_offset {
27929 return Ok(());
27930 }
27931
27932 while _next_ordinal_to_read < 7 {
27934 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
27935 _next_ordinal_to_read += 1;
27936 next_offset += envelope_size;
27937 }
27938
27939 let next_out_of_line = decoder.next_out_of_line();
27940 let handles_before = decoder.remaining_handles();
27941 if let Some((inlined, num_bytes, num_handles)) =
27942 fidl::encoding::decode_envelope_header(decoder, next_offset)?
27943 {
27944 let member_inline_size =
27945 <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
27946 if inlined != (member_inline_size <= 4) {
27947 return Err(fidl::Error::InvalidInlineBitInEnvelope);
27948 }
27949 let inner_offset;
27950 let mut inner_depth = depth.clone();
27951 if inlined {
27952 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
27953 inner_offset = next_offset;
27954 } else {
27955 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
27956 inner_depth.increment()?;
27957 }
27958 let val_ref = self.ttl.get_or_insert_with(|| fidl::new_empty!(i64, D));
27959 fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
27960 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
27961 {
27962 return Err(fidl::Error::InvalidNumBytesInEnvelope);
27963 }
27964 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
27965 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
27966 }
27967 }
27968
27969 next_offset += envelope_size;
27970 _next_ordinal_to_read += 1;
27971 if next_offset >= end_offset {
27972 return Ok(());
27973 }
27974
27975 while _next_ordinal_to_read < 8 {
27977 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
27978 _next_ordinal_to_read += 1;
27979 next_offset += envelope_size;
27980 }
27981
27982 let next_out_of_line = decoder.next_out_of_line();
27983 let handles_before = decoder.remaining_handles();
27984 if let Some((inlined, num_bytes, num_handles)) =
27985 fidl::encoding::decode_envelope_header(decoder, next_offset)?
27986 {
27987 let member_inline_size =
27988 <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
27989 if inlined != (member_inline_size <= 4) {
27990 return Err(fidl::Error::InvalidInlineBitInEnvelope);
27991 }
27992 let inner_offset;
27993 let mut inner_depth = depth.clone();
27994 if inlined {
27995 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
27996 inner_offset = next_offset;
27997 } else {
27998 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
27999 inner_depth.increment()?;
28000 }
28001 let val_ref = self.lease.get_or_insert_with(|| fidl::new_empty!(i64, D));
28002 fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
28003 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
28004 {
28005 return Err(fidl::Error::InvalidNumBytesInEnvelope);
28006 }
28007 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
28008 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
28009 }
28010 }
28011
28012 next_offset += envelope_size;
28013 _next_ordinal_to_read += 1;
28014 if next_offset >= end_offset {
28015 return Ok(());
28016 }
28017
28018 while _next_ordinal_to_read < 9 {
28020 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
28021 _next_ordinal_to_read += 1;
28022 next_offset += envelope_size;
28023 }
28024
28025 let next_out_of_line = decoder.next_out_of_line();
28026 let handles_before = decoder.remaining_handles();
28027 if let Some((inlined, num_bytes, num_handles)) =
28028 fidl::encoding::decode_envelope_header(decoder, next_offset)?
28029 {
28030 let member_inline_size =
28031 <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
28032 if inlined != (member_inline_size <= 4) {
28033 return Err(fidl::Error::InvalidInlineBitInEnvelope);
28034 }
28035 let inner_offset;
28036 let mut inner_depth = depth.clone();
28037 if inlined {
28038 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
28039 inner_offset = next_offset;
28040 } else {
28041 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
28042 inner_depth.increment()?;
28043 }
28044 let val_ref = self.key_lease.get_or_insert_with(|| fidl::new_empty!(i64, D));
28045 fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
28046 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
28047 {
28048 return Err(fidl::Error::InvalidNumBytesInEnvelope);
28049 }
28050 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
28051 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
28052 }
28053 }
28054
28055 next_offset += envelope_size;
28056 _next_ordinal_to_read += 1;
28057 if next_offset >= end_offset {
28058 return Ok(());
28059 }
28060
28061 while _next_ordinal_to_read < 10 {
28063 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
28064 _next_ordinal_to_read += 1;
28065 next_offset += envelope_size;
28066 }
28067
28068 let next_out_of_line = decoder.next_out_of_line();
28069 let handles_before = decoder.remaining_handles();
28070 if let Some((inlined, num_bytes, num_handles)) =
28071 fidl::encoding::decode_envelope_header(decoder, next_offset)?
28072 {
28073 let member_inline_size = <fidl::encoding::UnboundedVector<DnsTxtEntry> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
28074 if inlined != (member_inline_size <= 4) {
28075 return Err(fidl::Error::InvalidInlineBitInEnvelope);
28076 }
28077 let inner_offset;
28078 let mut inner_depth = depth.clone();
28079 if inlined {
28080 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
28081 inner_offset = next_offset;
28082 } else {
28083 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
28084 inner_depth.increment()?;
28085 }
28086 let val_ref = self.txt_data.get_or_insert_with(|| {
28087 fidl::new_empty!(fidl::encoding::UnboundedVector<DnsTxtEntry>, D)
28088 });
28089 fidl::decode!(
28090 fidl::encoding::UnboundedVector<DnsTxtEntry>,
28091 D,
28092 val_ref,
28093 decoder,
28094 inner_offset,
28095 inner_depth
28096 )?;
28097 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
28098 {
28099 return Err(fidl::Error::InvalidNumBytesInEnvelope);
28100 }
28101 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
28102 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
28103 }
28104 }
28105
28106 next_offset += envelope_size;
28107 _next_ordinal_to_read += 1;
28108 if next_offset >= end_offset {
28109 return Ok(());
28110 }
28111
28112 while _next_ordinal_to_read < 11 {
28114 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
28115 _next_ordinal_to_read += 1;
28116 next_offset += envelope_size;
28117 }
28118
28119 let next_out_of_line = decoder.next_out_of_line();
28120 let handles_before = decoder.remaining_handles();
28121 if let Some((inlined, num_bytes, num_handles)) =
28122 fidl::encoding::decode_envelope_header(decoder, next_offset)?
28123 {
28124 let member_inline_size =
28125 <SrpServerHost as fidl::encoding::TypeMarker>::inline_size(decoder.context);
28126 if inlined != (member_inline_size <= 4) {
28127 return Err(fidl::Error::InvalidInlineBitInEnvelope);
28128 }
28129 let inner_offset;
28130 let mut inner_depth = depth.clone();
28131 if inlined {
28132 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
28133 inner_offset = next_offset;
28134 } else {
28135 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
28136 inner_depth.increment()?;
28137 }
28138 let val_ref = self.host.get_or_insert_with(|| fidl::new_empty!(SrpServerHost, D));
28139 fidl::decode!(SrpServerHost, D, val_ref, decoder, inner_offset, inner_depth)?;
28140 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
28141 {
28142 return Err(fidl::Error::InvalidNumBytesInEnvelope);
28143 }
28144 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
28145 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
28146 }
28147 }
28148
28149 next_offset += envelope_size;
28150
28151 while next_offset < end_offset {
28153 _next_ordinal_to_read += 1;
28154 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
28155 next_offset += envelope_size;
28156 }
28157
28158 Ok(())
28159 }
28160 }
28161
28162 impl Telemetry {
28163 #[inline(always)]
28164 fn max_ordinal_present(&self) -> u64 {
28165 if let Some(_) = self.mle_counters {
28166 return 44;
28167 }
28168 if let Some(_) = self.buffer_info {
28169 return 43;
28170 }
28171 if let Some(_) = self.csl_info {
28172 return 42;
28173 }
28174 if let Some(_) = self.cca_threshold {
28175 return 41;
28176 }
28177 if let Some(_) = self.eid_cache_entries {
28178 return 40;
28179 }
28180 if let Some(_) = self.netstat {
28181 return 39;
28182 }
28183 if let Some(_) = self.border_routing_rdnsses {
28184 return 38;
28185 }
28186 if let Some(_) = self.border_routing_prefixes {
28187 return 37;
28188 }
28189 if let Some(_) = self.ipmaddrs {
28190 return 36;
28191 }
28192 if let Some(_) = self.ipaddrs {
28193 return 35;
28194 }
28195 if let Some(_) = self.history_report {
28196 return 34;
28197 }
28198 if let Some(_) = self.network_data {
28199 return 33;
28200 }
28201 if let Some(_) = self.router_info {
28202 return 32;
28203 }
28204 if let Some(_) = self.multiradio_neighbor_info {
28205 return 31;
28206 }
28207 if let Some(_) = self.active_dataset {
28208 return 30;
28209 }
28210 if let Some(_) = self.border_routing_routers {
28211 return 29;
28212 }
28213 if let Some(_) = self.border_routing_peers {
28214 return 28;
28215 }
28216 if let Some(_) = self.extended_pan_id {
28217 return 27;
28218 }
28219 if let Some(_) = self.multi_ail_detected {
28220 return 26;
28221 }
28222 if let Some(_) = self.border_agent_counters {
28223 return 25;
28224 }
28225 if let Some(_) = self.link_metrics_entries {
28226 return 24;
28227 }
28228 if let Some(_) = self.dhcp6pd_info {
28229 return 23;
28230 }
28231 if let Some(_) = self.upstream_dns_info {
28232 return 22;
28233 }
28234 if let Some(_) = self.trel_peers_info {
28235 return 21;
28236 }
28237 if let Some(_) = self.trel_counters {
28238 return 20;
28239 }
28240 if let Some(_) = self.nat64_info {
28241 return 19;
28242 }
28243 if let Some(_) = self.uptime {
28244 return 18;
28245 }
28246 if let Some(_) = self.leader_data {
28247 return 17;
28248 }
28249 if let Some(_) = self.dnssd_counters {
28250 return 16;
28251 }
28252 if let Some(_) = self.srp_server_info {
28253 return 15;
28254 }
28255 if let Some(_) = self.thread_border_routing_counters {
28256 return 14;
28257 }
28258 if let Some(_) = self.thread_stable_network_data {
28259 return 13;
28260 }
28261 if let Some(_) = self.thread_network_data {
28262 return 12;
28263 }
28264 if let Some(_) = self.thread_stable_network_data_version {
28265 return 11;
28266 }
28267 if let Some(_) = self.thread_network_data_version {
28268 return 10;
28269 }
28270 if let Some(_) = self.thread_rloc {
28271 return 9;
28272 }
28273 if let Some(_) = self.thread_router_id {
28274 return 8;
28275 }
28276 if let Some(_) = self.thread_link_mode {
28277 return 7;
28278 }
28279 if let Some(_) = self.rcp_version {
28280 return 6;
28281 }
28282 if let Some(_) = self.stack_version {
28283 return 5;
28284 }
28285 if let Some(_) = self.partition_id {
28286 return 4;
28287 }
28288 if let Some(_) = self.channel_index {
28289 return 3;
28290 }
28291 if let Some(_) = self.tx_power {
28292 return 2;
28293 }
28294 if let Some(_) = self.rssi {
28295 return 1;
28296 }
28297 0
28298 }
28299 }
28300
28301 impl fidl::encoding::ValueTypeMarker for Telemetry {
28302 type Borrowed<'a> = &'a Self;
28303 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
28304 value
28305 }
28306 }
28307
28308 unsafe impl fidl::encoding::TypeMarker for Telemetry {
28309 type Owned = Self;
28310
28311 #[inline(always)]
28312 fn inline_align(_context: fidl::encoding::Context) -> usize {
28313 8
28314 }
28315
28316 #[inline(always)]
28317 fn inline_size(_context: fidl::encoding::Context) -> usize {
28318 16
28319 }
28320 }
28321
28322 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Telemetry, D>
28323 for &Telemetry
28324 {
28325 unsafe fn encode(
28326 self,
28327 encoder: &mut fidl::encoding::Encoder<'_, D>,
28328 offset: usize,
28329 mut depth: fidl::encoding::Depth,
28330 ) -> fidl::Result<()> {
28331 encoder.debug_check_bounds::<Telemetry>(offset);
28332 let max_ordinal: u64 = self.max_ordinal_present();
28334 encoder.write_num(max_ordinal, offset);
28335 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
28336 if max_ordinal == 0 {
28338 return Ok(());
28339 }
28340 depth.increment()?;
28341 let envelope_size = 8;
28342 let bytes_len = max_ordinal as usize * envelope_size;
28343 #[allow(unused_variables)]
28344 let offset = encoder.out_of_line_offset(bytes_len);
28345 let mut _prev_end_offset: usize = 0;
28346 if 1 > max_ordinal {
28347 return Ok(());
28348 }
28349
28350 let cur_offset: usize = (1 - 1) * envelope_size;
28353
28354 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
28356
28357 fidl::encoding::encode_in_envelope_optional::<i8, D>(
28362 self.rssi.as_ref().map(<i8 as fidl::encoding::ValueTypeMarker>::borrow),
28363 encoder,
28364 offset + cur_offset,
28365 depth,
28366 )?;
28367
28368 _prev_end_offset = cur_offset + envelope_size;
28369 if 2 > max_ordinal {
28370 return Ok(());
28371 }
28372
28373 let cur_offset: usize = (2 - 1) * envelope_size;
28376
28377 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
28379
28380 fidl::encoding::encode_in_envelope_optional::<i8, D>(
28385 self.tx_power.as_ref().map(<i8 as fidl::encoding::ValueTypeMarker>::borrow),
28386 encoder,
28387 offset + cur_offset,
28388 depth,
28389 )?;
28390
28391 _prev_end_offset = cur_offset + envelope_size;
28392 if 3 > max_ordinal {
28393 return Ok(());
28394 }
28395
28396 let cur_offset: usize = (3 - 1) * envelope_size;
28399
28400 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
28402
28403 fidl::encoding::encode_in_envelope_optional::<u16, D>(
28408 self.channel_index.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
28409 encoder,
28410 offset + cur_offset,
28411 depth,
28412 )?;
28413
28414 _prev_end_offset = cur_offset + envelope_size;
28415 if 4 > max_ordinal {
28416 return Ok(());
28417 }
28418
28419 let cur_offset: usize = (4 - 1) * envelope_size;
28422
28423 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
28425
28426 fidl::encoding::encode_in_envelope_optional::<u32, D>(
28431 self.partition_id.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
28432 encoder,
28433 offset + cur_offset,
28434 depth,
28435 )?;
28436
28437 _prev_end_offset = cur_offset + envelope_size;
28438 if 5 > max_ordinal {
28439 return Ok(());
28440 }
28441
28442 let cur_offset: usize = (5 - 1) * envelope_size;
28445
28446 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
28448
28449 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<256>, D>(
28454 self.stack_version.as_ref().map(
28455 <fidl::encoding::BoundedString<256> as fidl::encoding::ValueTypeMarker>::borrow,
28456 ),
28457 encoder,
28458 offset + cur_offset,
28459 depth,
28460 )?;
28461
28462 _prev_end_offset = cur_offset + envelope_size;
28463 if 6 > max_ordinal {
28464 return Ok(());
28465 }
28466
28467 let cur_offset: usize = (6 - 1) * envelope_size;
28470
28471 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
28473
28474 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<256>, D>(
28479 self.rcp_version.as_ref().map(
28480 <fidl::encoding::BoundedString<256> as fidl::encoding::ValueTypeMarker>::borrow,
28481 ),
28482 encoder,
28483 offset + cur_offset,
28484 depth,
28485 )?;
28486
28487 _prev_end_offset = cur_offset + envelope_size;
28488 if 7 > max_ordinal {
28489 return Ok(());
28490 }
28491
28492 let cur_offset: usize = (7 - 1) * envelope_size;
28495
28496 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
28498
28499 fidl::encoding::encode_in_envelope_optional::<u8, D>(
28504 self.thread_link_mode.as_ref().map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
28505 encoder,
28506 offset + cur_offset,
28507 depth,
28508 )?;
28509
28510 _prev_end_offset = cur_offset + envelope_size;
28511 if 8 > max_ordinal {
28512 return Ok(());
28513 }
28514
28515 let cur_offset: usize = (8 - 1) * envelope_size;
28518
28519 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
28521
28522 fidl::encoding::encode_in_envelope_optional::<u8, D>(
28527 self.thread_router_id.as_ref().map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
28528 encoder,
28529 offset + cur_offset,
28530 depth,
28531 )?;
28532
28533 _prev_end_offset = cur_offset + envelope_size;
28534 if 9 > max_ordinal {
28535 return Ok(());
28536 }
28537
28538 let cur_offset: usize = (9 - 1) * envelope_size;
28541
28542 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
28544
28545 fidl::encoding::encode_in_envelope_optional::<u16, D>(
28550 self.thread_rloc.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
28551 encoder,
28552 offset + cur_offset,
28553 depth,
28554 )?;
28555
28556 _prev_end_offset = cur_offset + envelope_size;
28557 if 10 > max_ordinal {
28558 return Ok(());
28559 }
28560
28561 let cur_offset: usize = (10 - 1) * envelope_size;
28564
28565 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
28567
28568 fidl::encoding::encode_in_envelope_optional::<u8, D>(
28573 self.thread_network_data_version
28574 .as_ref()
28575 .map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
28576 encoder,
28577 offset + cur_offset,
28578 depth,
28579 )?;
28580
28581 _prev_end_offset = cur_offset + envelope_size;
28582 if 11 > max_ordinal {
28583 return Ok(());
28584 }
28585
28586 let cur_offset: usize = (11 - 1) * envelope_size;
28589
28590 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
28592
28593 fidl::encoding::encode_in_envelope_optional::<u8, D>(
28598 self.thread_stable_network_data_version
28599 .as_ref()
28600 .map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
28601 encoder,
28602 offset + cur_offset,
28603 depth,
28604 )?;
28605
28606 _prev_end_offset = cur_offset + envelope_size;
28607 if 12 > max_ordinal {
28608 return Ok(());
28609 }
28610
28611 let cur_offset: usize = (12 - 1) * envelope_size;
28614
28615 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
28617
28618 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<u8, 255>, D>(
28623 self.thread_network_data.as_ref().map(
28624 <fidl::encoding::Vector<u8, 255> as fidl::encoding::ValueTypeMarker>::borrow,
28625 ),
28626 encoder,
28627 offset + cur_offset,
28628 depth,
28629 )?;
28630
28631 _prev_end_offset = cur_offset + envelope_size;
28632 if 13 > max_ordinal {
28633 return Ok(());
28634 }
28635
28636 let cur_offset: usize = (13 - 1) * envelope_size;
28639
28640 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
28642
28643 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<u8, 255>, D>(
28648 self.thread_stable_network_data.as_ref().map(
28649 <fidl::encoding::Vector<u8, 255> as fidl::encoding::ValueTypeMarker>::borrow,
28650 ),
28651 encoder,
28652 offset + cur_offset,
28653 depth,
28654 )?;
28655
28656 _prev_end_offset = cur_offset + envelope_size;
28657 if 14 > max_ordinal {
28658 return Ok(());
28659 }
28660
28661 let cur_offset: usize = (14 - 1) * envelope_size;
28664
28665 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
28667
28668 fidl::encoding::encode_in_envelope_optional::<BorderRoutingCounters, D>(
28673 self.thread_border_routing_counters
28674 .as_ref()
28675 .map(<BorderRoutingCounters as fidl::encoding::ValueTypeMarker>::borrow),
28676 encoder,
28677 offset + cur_offset,
28678 depth,
28679 )?;
28680
28681 _prev_end_offset = cur_offset + envelope_size;
28682 if 15 > max_ordinal {
28683 return Ok(());
28684 }
28685
28686 let cur_offset: usize = (15 - 1) * envelope_size;
28689
28690 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
28692
28693 fidl::encoding::encode_in_envelope_optional::<SrpServerInfo, D>(
28698 self.srp_server_info
28699 .as_ref()
28700 .map(<SrpServerInfo as fidl::encoding::ValueTypeMarker>::borrow),
28701 encoder,
28702 offset + cur_offset,
28703 depth,
28704 )?;
28705
28706 _prev_end_offset = cur_offset + envelope_size;
28707 if 16 > max_ordinal {
28708 return Ok(());
28709 }
28710
28711 let cur_offset: usize = (16 - 1) * envelope_size;
28714
28715 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
28717
28718 fidl::encoding::encode_in_envelope_optional::<DnssdCounters, D>(
28723 self.dnssd_counters
28724 .as_ref()
28725 .map(<DnssdCounters as fidl::encoding::ValueTypeMarker>::borrow),
28726 encoder,
28727 offset + cur_offset,
28728 depth,
28729 )?;
28730
28731 _prev_end_offset = cur_offset + envelope_size;
28732 if 17 > max_ordinal {
28733 return Ok(());
28734 }
28735
28736 let cur_offset: usize = (17 - 1) * envelope_size;
28739
28740 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
28742
28743 fidl::encoding::encode_in_envelope_optional::<LeaderData, D>(
28748 self.leader_data
28749 .as_ref()
28750 .map(<LeaderData as fidl::encoding::ValueTypeMarker>::borrow),
28751 encoder,
28752 offset + cur_offset,
28753 depth,
28754 )?;
28755
28756 _prev_end_offset = cur_offset + envelope_size;
28757 if 18 > max_ordinal {
28758 return Ok(());
28759 }
28760
28761 let cur_offset: usize = (18 - 1) * envelope_size;
28764
28765 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
28767
28768 fidl::encoding::encode_in_envelope_optional::<i64, D>(
28773 self.uptime.as_ref().map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
28774 encoder,
28775 offset + cur_offset,
28776 depth,
28777 )?;
28778
28779 _prev_end_offset = cur_offset + envelope_size;
28780 if 19 > max_ordinal {
28781 return Ok(());
28782 }
28783
28784 let cur_offset: usize = (19 - 1) * envelope_size;
28787
28788 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
28790
28791 fidl::encoding::encode_in_envelope_optional::<Nat64Info, D>(
28796 self.nat64_info
28797 .as_ref()
28798 .map(<Nat64Info as fidl::encoding::ValueTypeMarker>::borrow),
28799 encoder,
28800 offset + cur_offset,
28801 depth,
28802 )?;
28803
28804 _prev_end_offset = cur_offset + envelope_size;
28805 if 20 > max_ordinal {
28806 return Ok(());
28807 }
28808
28809 let cur_offset: usize = (20 - 1) * envelope_size;
28812
28813 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
28815
28816 fidl::encoding::encode_in_envelope_optional::<TrelCounters, D>(
28821 self.trel_counters
28822 .as_ref()
28823 .map(<TrelCounters as fidl::encoding::ValueTypeMarker>::borrow),
28824 encoder,
28825 offset + cur_offset,
28826 depth,
28827 )?;
28828
28829 _prev_end_offset = cur_offset + envelope_size;
28830 if 21 > max_ordinal {
28831 return Ok(());
28832 }
28833
28834 let cur_offset: usize = (21 - 1) * envelope_size;
28837
28838 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
28840
28841 fidl::encoding::encode_in_envelope_optional::<TrelPeersInfo, D>(
28846 self.trel_peers_info
28847 .as_ref()
28848 .map(<TrelPeersInfo as fidl::encoding::ValueTypeMarker>::borrow),
28849 encoder,
28850 offset + cur_offset,
28851 depth,
28852 )?;
28853
28854 _prev_end_offset = cur_offset + envelope_size;
28855 if 22 > max_ordinal {
28856 return Ok(());
28857 }
28858
28859 let cur_offset: usize = (22 - 1) * envelope_size;
28862
28863 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
28865
28866 fidl::encoding::encode_in_envelope_optional::<UpstreamDnsInfo, D>(
28871 self.upstream_dns_info
28872 .as_ref()
28873 .map(<UpstreamDnsInfo as fidl::encoding::ValueTypeMarker>::borrow),
28874 encoder,
28875 offset + cur_offset,
28876 depth,
28877 )?;
28878
28879 _prev_end_offset = cur_offset + envelope_size;
28880 if 23 > max_ordinal {
28881 return Ok(());
28882 }
28883
28884 let cur_offset: usize = (23 - 1) * envelope_size;
28887
28888 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
28890
28891 fidl::encoding::encode_in_envelope_optional::<Dhcp6PdInfo, D>(
28896 self.dhcp6pd_info
28897 .as_ref()
28898 .map(<Dhcp6PdInfo as fidl::encoding::ValueTypeMarker>::borrow),
28899 encoder,
28900 offset + cur_offset,
28901 depth,
28902 )?;
28903
28904 _prev_end_offset = cur_offset + envelope_size;
28905 if 24 > max_ordinal {
28906 return Ok(());
28907 }
28908
28909 let cur_offset: usize = (24 - 1) * envelope_size;
28912
28913 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
28915
28916 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<LinkMetricsEntry, 64>, D>(
28921 self.link_metrics_entries.as_ref().map(<fidl::encoding::Vector<LinkMetricsEntry, 64> as fidl::encoding::ValueTypeMarker>::borrow),
28922 encoder, offset + cur_offset, depth
28923 )?;
28924
28925 _prev_end_offset = cur_offset + envelope_size;
28926 if 25 > max_ordinal {
28927 return Ok(());
28928 }
28929
28930 let cur_offset: usize = (25 - 1) * envelope_size;
28933
28934 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
28936
28937 fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_lowpan_device_common::BorderAgentCounters, D>(
28942 self.border_agent_counters.as_ref().map(<fidl_fuchsia_lowpan_device_common::BorderAgentCounters as fidl::encoding::ValueTypeMarker>::borrow),
28943 encoder, offset + cur_offset, depth
28944 )?;
28945
28946 _prev_end_offset = cur_offset + envelope_size;
28947 if 26 > max_ordinal {
28948 return Ok(());
28949 }
28950
28951 let cur_offset: usize = (26 - 1) * envelope_size;
28954
28955 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
28957
28958 fidl::encoding::encode_in_envelope_optional::<bool, D>(
28963 self.multi_ail_detected
28964 .as_ref()
28965 .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
28966 encoder,
28967 offset + cur_offset,
28968 depth,
28969 )?;
28970
28971 _prev_end_offset = cur_offset + envelope_size;
28972 if 27 > max_ordinal {
28973 return Ok(());
28974 }
28975
28976 let cur_offset: usize = (27 - 1) * envelope_size;
28979
28980 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
28982
28983 fidl::encoding::encode_in_envelope_optional::<u64, D>(
28988 self.extended_pan_id.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
28989 encoder,
28990 offset + cur_offset,
28991 depth,
28992 )?;
28993
28994 _prev_end_offset = cur_offset + envelope_size;
28995 if 28 > max_ordinal {
28996 return Ok(());
28997 }
28998
28999 let cur_offset: usize = (28 - 1) * envelope_size;
29002
29003 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
29005
29006 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<BorderRoutingPeer, 64>, D>(
29011 self.border_routing_peers.as_ref().map(<fidl::encoding::Vector<BorderRoutingPeer, 64> as fidl::encoding::ValueTypeMarker>::borrow),
29012 encoder, offset + cur_offset, depth
29013 )?;
29014
29015 _prev_end_offset = cur_offset + envelope_size;
29016 if 29 > max_ordinal {
29017 return Ok(());
29018 }
29019
29020 let cur_offset: usize = (29 - 1) * envelope_size;
29023
29024 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
29026
29027 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<BorderRoutingRouter, 64>, D>(
29032 self.border_routing_routers.as_ref().map(<fidl::encoding::Vector<BorderRoutingRouter, 64> as fidl::encoding::ValueTypeMarker>::borrow),
29033 encoder, offset + cur_offset, depth
29034 )?;
29035
29036 _prev_end_offset = cur_offset + envelope_size;
29037 if 30 > max_ordinal {
29038 return Ok(());
29039 }
29040
29041 let cur_offset: usize = (30 - 1) * envelope_size;
29044
29045 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
29047
29048 fidl::encoding::encode_in_envelope_optional::<OperationalDataset, D>(
29053 self.active_dataset
29054 .as_ref()
29055 .map(<OperationalDataset as fidl::encoding::ValueTypeMarker>::borrow),
29056 encoder,
29057 offset + cur_offset,
29058 depth,
29059 )?;
29060
29061 _prev_end_offset = cur_offset + envelope_size;
29062 if 31 > max_ordinal {
29063 return Ok(());
29064 }
29065
29066 let cur_offset: usize = (31 - 1) * envelope_size;
29069
29070 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
29072
29073 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<MultiRadioNeighborInfo, 64>, D>(
29078 self.multiradio_neighbor_info.as_ref().map(<fidl::encoding::Vector<MultiRadioNeighborInfo, 64> as fidl::encoding::ValueTypeMarker>::borrow),
29079 encoder, offset + cur_offset, depth
29080 )?;
29081
29082 _prev_end_offset = cur_offset + envelope_size;
29083 if 32 > max_ordinal {
29084 return Ok(());
29085 }
29086
29087 let cur_offset: usize = (32 - 1) * envelope_size;
29090
29091 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
29093
29094 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<RouterInfo, 64>, D>(
29099 self.router_info.as_ref().map(<fidl::encoding::Vector<RouterInfo, 64> as fidl::encoding::ValueTypeMarker>::borrow),
29100 encoder, offset + cur_offset, depth
29101 )?;
29102
29103 _prev_end_offset = cur_offset + envelope_size;
29104 if 33 > max_ordinal {
29105 return Ok(());
29106 }
29107
29108 let cur_offset: usize = (33 - 1) * envelope_size;
29111
29112 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
29114
29115 fidl::encoding::encode_in_envelope_optional::<NetworkData, D>(
29120 self.network_data
29121 .as_ref()
29122 .map(<NetworkData as fidl::encoding::ValueTypeMarker>::borrow),
29123 encoder,
29124 offset + cur_offset,
29125 depth,
29126 )?;
29127
29128 _prev_end_offset = cur_offset + envelope_size;
29129 if 34 > max_ordinal {
29130 return Ok(());
29131 }
29132
29133 let cur_offset: usize = (34 - 1) * envelope_size;
29136
29137 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
29139
29140 fidl::encoding::encode_in_envelope_optional::<ThreadHistoryReport, D>(
29145 self.history_report
29146 .as_ref()
29147 .map(<ThreadHistoryReport as fidl::encoding::ValueTypeMarker>::borrow),
29148 encoder,
29149 offset + cur_offset,
29150 depth,
29151 )?;
29152
29153 _prev_end_offset = cur_offset + envelope_size;
29154 if 35 > max_ordinal {
29155 return Ok(());
29156 }
29157
29158 let cur_offset: usize = (35 - 1) * envelope_size;
29161
29162 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
29164
29165 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<NetifAddress, 32>, D>(
29170 self.ipaddrs.as_ref().map(<fidl::encoding::Vector<NetifAddress, 32> as fidl::encoding::ValueTypeMarker>::borrow),
29171 encoder, offset + cur_offset, depth
29172 )?;
29173
29174 _prev_end_offset = cur_offset + envelope_size;
29175 if 36 > max_ordinal {
29176 return Ok(());
29177 }
29178
29179 let cur_offset: usize = (36 - 1) * envelope_size;
29182
29183 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
29185
29186 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<fidl_fuchsia_net_common::Ipv6Address, 32>, D>(
29191 self.ipmaddrs.as_ref().map(<fidl::encoding::Vector<fidl_fuchsia_net_common::Ipv6Address, 32> as fidl::encoding::ValueTypeMarker>::borrow),
29192 encoder, offset + cur_offset, depth
29193 )?;
29194
29195 _prev_end_offset = cur_offset + envelope_size;
29196 if 37 > max_ordinal {
29197 return Ok(());
29198 }
29199
29200 let cur_offset: usize = (37 - 1) * envelope_size;
29203
29204 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
29206
29207 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<BorderRoutingPrefixTable, 64>, D>(
29212 self.border_routing_prefixes.as_ref().map(<fidl::encoding::Vector<BorderRoutingPrefixTable, 64> as fidl::encoding::ValueTypeMarker>::borrow),
29213 encoder, offset + cur_offset, depth
29214 )?;
29215
29216 _prev_end_offset = cur_offset + envelope_size;
29217 if 38 > max_ordinal {
29218 return Ok(());
29219 }
29220
29221 let cur_offset: usize = (38 - 1) * envelope_size;
29224
29225 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
29227
29228 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<BorderRoutingRdnss, 64>, D>(
29233 self.border_routing_rdnsses.as_ref().map(<fidl::encoding::Vector<BorderRoutingRdnss, 64> as fidl::encoding::ValueTypeMarker>::borrow),
29234 encoder, offset + cur_offset, depth
29235 )?;
29236
29237 _prev_end_offset = cur_offset + envelope_size;
29238 if 39 > max_ordinal {
29239 return Ok(());
29240 }
29241
29242 let cur_offset: usize = (39 - 1) * envelope_size;
29245
29246 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
29248
29249 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<UdpSocket, 32>, D>(
29254 self.netstat.as_ref().map(<fidl::encoding::Vector<UdpSocket, 32> as fidl::encoding::ValueTypeMarker>::borrow),
29255 encoder, offset + cur_offset, depth
29256 )?;
29257
29258 _prev_end_offset = cur_offset + envelope_size;
29259 if 40 > max_ordinal {
29260 return Ok(());
29261 }
29262
29263 let cur_offset: usize = (40 - 1) * envelope_size;
29266
29267 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
29269
29270 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<EidCacheEntry, 64>, D>(
29275 self.eid_cache_entries.as_ref().map(<fidl::encoding::Vector<EidCacheEntry, 64> as fidl::encoding::ValueTypeMarker>::borrow),
29276 encoder, offset + cur_offset, depth
29277 )?;
29278
29279 _prev_end_offset = cur_offset + envelope_size;
29280 if 41 > max_ordinal {
29281 return Ok(());
29282 }
29283
29284 let cur_offset: usize = (41 - 1) * envelope_size;
29287
29288 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
29290
29291 fidl::encoding::encode_in_envelope_optional::<i8, D>(
29296 self.cca_threshold.as_ref().map(<i8 as fidl::encoding::ValueTypeMarker>::borrow),
29297 encoder,
29298 offset + cur_offset,
29299 depth,
29300 )?;
29301
29302 _prev_end_offset = cur_offset + envelope_size;
29303 if 42 > max_ordinal {
29304 return Ok(());
29305 }
29306
29307 let cur_offset: usize = (42 - 1) * envelope_size;
29310
29311 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
29313
29314 fidl::encoding::encode_in_envelope_optional::<CslInfo, D>(
29319 self.csl_info.as_ref().map(<CslInfo as fidl::encoding::ValueTypeMarker>::borrow),
29320 encoder,
29321 offset + cur_offset,
29322 depth,
29323 )?;
29324
29325 _prev_end_offset = cur_offset + envelope_size;
29326 if 43 > max_ordinal {
29327 return Ok(());
29328 }
29329
29330 let cur_offset: usize = (43 - 1) * envelope_size;
29333
29334 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
29336
29337 fidl::encoding::encode_in_envelope_optional::<BufferInfo, D>(
29342 self.buffer_info
29343 .as_ref()
29344 .map(<BufferInfo as fidl::encoding::ValueTypeMarker>::borrow),
29345 encoder,
29346 offset + cur_offset,
29347 depth,
29348 )?;
29349
29350 _prev_end_offset = cur_offset + envelope_size;
29351 if 44 > max_ordinal {
29352 return Ok(());
29353 }
29354
29355 let cur_offset: usize = (44 - 1) * envelope_size;
29358
29359 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
29361
29362 fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_lowpan_device_common::MleCounters, D>(
29367 self.mle_counters.as_ref().map(<fidl_fuchsia_lowpan_device_common::MleCounters as fidl::encoding::ValueTypeMarker>::borrow),
29368 encoder, offset + cur_offset, depth
29369 )?;
29370
29371 _prev_end_offset = cur_offset + envelope_size;
29372
29373 Ok(())
29374 }
29375 }
29376
29377 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Telemetry {
29378 #[inline(always)]
29379 fn new_empty() -> Self {
29380 Self::default()
29381 }
29382
29383 unsafe fn decode(
29384 &mut self,
29385 decoder: &mut fidl::encoding::Decoder<'_, D>,
29386 offset: usize,
29387 mut depth: fidl::encoding::Depth,
29388 ) -> fidl::Result<()> {
29389 decoder.debug_check_bounds::<Self>(offset);
29390 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
29391 None => return Err(fidl::Error::NotNullable),
29392 Some(len) => len,
29393 };
29394 if len == 0 {
29396 return Ok(());
29397 };
29398 depth.increment()?;
29399 let envelope_size = 8;
29400 let bytes_len = len * envelope_size;
29401 let offset = decoder.out_of_line_offset(bytes_len)?;
29402 let mut _next_ordinal_to_read = 0;
29404 let mut next_offset = offset;
29405 let end_offset = offset + bytes_len;
29406 _next_ordinal_to_read += 1;
29407 if next_offset >= end_offset {
29408 return Ok(());
29409 }
29410
29411 while _next_ordinal_to_read < 1 {
29413 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
29414 _next_ordinal_to_read += 1;
29415 next_offset += envelope_size;
29416 }
29417
29418 let next_out_of_line = decoder.next_out_of_line();
29419 let handles_before = decoder.remaining_handles();
29420 if let Some((inlined, num_bytes, num_handles)) =
29421 fidl::encoding::decode_envelope_header(decoder, next_offset)?
29422 {
29423 let member_inline_size =
29424 <i8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
29425 if inlined != (member_inline_size <= 4) {
29426 return Err(fidl::Error::InvalidInlineBitInEnvelope);
29427 }
29428 let inner_offset;
29429 let mut inner_depth = depth.clone();
29430 if inlined {
29431 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
29432 inner_offset = next_offset;
29433 } else {
29434 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
29435 inner_depth.increment()?;
29436 }
29437 let val_ref = self.rssi.get_or_insert_with(|| fidl::new_empty!(i8, D));
29438 fidl::decode!(i8, D, val_ref, decoder, inner_offset, inner_depth)?;
29439 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
29440 {
29441 return Err(fidl::Error::InvalidNumBytesInEnvelope);
29442 }
29443 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
29444 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
29445 }
29446 }
29447
29448 next_offset += envelope_size;
29449 _next_ordinal_to_read += 1;
29450 if next_offset >= end_offset {
29451 return Ok(());
29452 }
29453
29454 while _next_ordinal_to_read < 2 {
29456 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
29457 _next_ordinal_to_read += 1;
29458 next_offset += envelope_size;
29459 }
29460
29461 let next_out_of_line = decoder.next_out_of_line();
29462 let handles_before = decoder.remaining_handles();
29463 if let Some((inlined, num_bytes, num_handles)) =
29464 fidl::encoding::decode_envelope_header(decoder, next_offset)?
29465 {
29466 let member_inline_size =
29467 <i8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
29468 if inlined != (member_inline_size <= 4) {
29469 return Err(fidl::Error::InvalidInlineBitInEnvelope);
29470 }
29471 let inner_offset;
29472 let mut inner_depth = depth.clone();
29473 if inlined {
29474 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
29475 inner_offset = next_offset;
29476 } else {
29477 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
29478 inner_depth.increment()?;
29479 }
29480 let val_ref = self.tx_power.get_or_insert_with(|| fidl::new_empty!(i8, D));
29481 fidl::decode!(i8, D, val_ref, decoder, inner_offset, inner_depth)?;
29482 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
29483 {
29484 return Err(fidl::Error::InvalidNumBytesInEnvelope);
29485 }
29486 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
29487 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
29488 }
29489 }
29490
29491 next_offset += envelope_size;
29492 _next_ordinal_to_read += 1;
29493 if next_offset >= end_offset {
29494 return Ok(());
29495 }
29496
29497 while _next_ordinal_to_read < 3 {
29499 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
29500 _next_ordinal_to_read += 1;
29501 next_offset += envelope_size;
29502 }
29503
29504 let next_out_of_line = decoder.next_out_of_line();
29505 let handles_before = decoder.remaining_handles();
29506 if let Some((inlined, num_bytes, num_handles)) =
29507 fidl::encoding::decode_envelope_header(decoder, next_offset)?
29508 {
29509 let member_inline_size =
29510 <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
29511 if inlined != (member_inline_size <= 4) {
29512 return Err(fidl::Error::InvalidInlineBitInEnvelope);
29513 }
29514 let inner_offset;
29515 let mut inner_depth = depth.clone();
29516 if inlined {
29517 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
29518 inner_offset = next_offset;
29519 } else {
29520 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
29521 inner_depth.increment()?;
29522 }
29523 let val_ref = self.channel_index.get_or_insert_with(|| fidl::new_empty!(u16, D));
29524 fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
29525 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
29526 {
29527 return Err(fidl::Error::InvalidNumBytesInEnvelope);
29528 }
29529 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
29530 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
29531 }
29532 }
29533
29534 next_offset += envelope_size;
29535 _next_ordinal_to_read += 1;
29536 if next_offset >= end_offset {
29537 return Ok(());
29538 }
29539
29540 while _next_ordinal_to_read < 4 {
29542 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
29543 _next_ordinal_to_read += 1;
29544 next_offset += envelope_size;
29545 }
29546
29547 let next_out_of_line = decoder.next_out_of_line();
29548 let handles_before = decoder.remaining_handles();
29549 if let Some((inlined, num_bytes, num_handles)) =
29550 fidl::encoding::decode_envelope_header(decoder, next_offset)?
29551 {
29552 let member_inline_size =
29553 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
29554 if inlined != (member_inline_size <= 4) {
29555 return Err(fidl::Error::InvalidInlineBitInEnvelope);
29556 }
29557 let inner_offset;
29558 let mut inner_depth = depth.clone();
29559 if inlined {
29560 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
29561 inner_offset = next_offset;
29562 } else {
29563 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
29564 inner_depth.increment()?;
29565 }
29566 let val_ref = self.partition_id.get_or_insert_with(|| fidl::new_empty!(u32, D));
29567 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
29568 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
29569 {
29570 return Err(fidl::Error::InvalidNumBytesInEnvelope);
29571 }
29572 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
29573 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
29574 }
29575 }
29576
29577 next_offset += envelope_size;
29578 _next_ordinal_to_read += 1;
29579 if next_offset >= end_offset {
29580 return Ok(());
29581 }
29582
29583 while _next_ordinal_to_read < 5 {
29585 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
29586 _next_ordinal_to_read += 1;
29587 next_offset += envelope_size;
29588 }
29589
29590 let next_out_of_line = decoder.next_out_of_line();
29591 let handles_before = decoder.remaining_handles();
29592 if let Some((inlined, num_bytes, num_handles)) =
29593 fidl::encoding::decode_envelope_header(decoder, next_offset)?
29594 {
29595 let member_inline_size =
29596 <fidl::encoding::BoundedString<256> as fidl::encoding::TypeMarker>::inline_size(
29597 decoder.context,
29598 );
29599 if inlined != (member_inline_size <= 4) {
29600 return Err(fidl::Error::InvalidInlineBitInEnvelope);
29601 }
29602 let inner_offset;
29603 let mut inner_depth = depth.clone();
29604 if inlined {
29605 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
29606 inner_offset = next_offset;
29607 } else {
29608 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
29609 inner_depth.increment()?;
29610 }
29611 let val_ref = self
29612 .stack_version
29613 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<256>, D));
29614 fidl::decode!(
29615 fidl::encoding::BoundedString<256>,
29616 D,
29617 val_ref,
29618 decoder,
29619 inner_offset,
29620 inner_depth
29621 )?;
29622 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
29623 {
29624 return Err(fidl::Error::InvalidNumBytesInEnvelope);
29625 }
29626 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
29627 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
29628 }
29629 }
29630
29631 next_offset += envelope_size;
29632 _next_ordinal_to_read += 1;
29633 if next_offset >= end_offset {
29634 return Ok(());
29635 }
29636
29637 while _next_ordinal_to_read < 6 {
29639 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
29640 _next_ordinal_to_read += 1;
29641 next_offset += envelope_size;
29642 }
29643
29644 let next_out_of_line = decoder.next_out_of_line();
29645 let handles_before = decoder.remaining_handles();
29646 if let Some((inlined, num_bytes, num_handles)) =
29647 fidl::encoding::decode_envelope_header(decoder, next_offset)?
29648 {
29649 let member_inline_size =
29650 <fidl::encoding::BoundedString<256> as fidl::encoding::TypeMarker>::inline_size(
29651 decoder.context,
29652 );
29653 if inlined != (member_inline_size <= 4) {
29654 return Err(fidl::Error::InvalidInlineBitInEnvelope);
29655 }
29656 let inner_offset;
29657 let mut inner_depth = depth.clone();
29658 if inlined {
29659 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
29660 inner_offset = next_offset;
29661 } else {
29662 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
29663 inner_depth.increment()?;
29664 }
29665 let val_ref = self
29666 .rcp_version
29667 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<256>, D));
29668 fidl::decode!(
29669 fidl::encoding::BoundedString<256>,
29670 D,
29671 val_ref,
29672 decoder,
29673 inner_offset,
29674 inner_depth
29675 )?;
29676 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
29677 {
29678 return Err(fidl::Error::InvalidNumBytesInEnvelope);
29679 }
29680 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
29681 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
29682 }
29683 }
29684
29685 next_offset += envelope_size;
29686 _next_ordinal_to_read += 1;
29687 if next_offset >= end_offset {
29688 return Ok(());
29689 }
29690
29691 while _next_ordinal_to_read < 7 {
29693 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
29694 _next_ordinal_to_read += 1;
29695 next_offset += envelope_size;
29696 }
29697
29698 let next_out_of_line = decoder.next_out_of_line();
29699 let handles_before = decoder.remaining_handles();
29700 if let Some((inlined, num_bytes, num_handles)) =
29701 fidl::encoding::decode_envelope_header(decoder, next_offset)?
29702 {
29703 let member_inline_size =
29704 <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
29705 if inlined != (member_inline_size <= 4) {
29706 return Err(fidl::Error::InvalidInlineBitInEnvelope);
29707 }
29708 let inner_offset;
29709 let mut inner_depth = depth.clone();
29710 if inlined {
29711 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
29712 inner_offset = next_offset;
29713 } else {
29714 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
29715 inner_depth.increment()?;
29716 }
29717 let val_ref = self.thread_link_mode.get_or_insert_with(|| fidl::new_empty!(u8, D));
29718 fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
29719 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
29720 {
29721 return Err(fidl::Error::InvalidNumBytesInEnvelope);
29722 }
29723 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
29724 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
29725 }
29726 }
29727
29728 next_offset += envelope_size;
29729 _next_ordinal_to_read += 1;
29730 if next_offset >= end_offset {
29731 return Ok(());
29732 }
29733
29734 while _next_ordinal_to_read < 8 {
29736 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
29737 _next_ordinal_to_read += 1;
29738 next_offset += envelope_size;
29739 }
29740
29741 let next_out_of_line = decoder.next_out_of_line();
29742 let handles_before = decoder.remaining_handles();
29743 if let Some((inlined, num_bytes, num_handles)) =
29744 fidl::encoding::decode_envelope_header(decoder, next_offset)?
29745 {
29746 let member_inline_size =
29747 <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
29748 if inlined != (member_inline_size <= 4) {
29749 return Err(fidl::Error::InvalidInlineBitInEnvelope);
29750 }
29751 let inner_offset;
29752 let mut inner_depth = depth.clone();
29753 if inlined {
29754 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
29755 inner_offset = next_offset;
29756 } else {
29757 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
29758 inner_depth.increment()?;
29759 }
29760 let val_ref = self.thread_router_id.get_or_insert_with(|| fidl::new_empty!(u8, D));
29761 fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
29762 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
29763 {
29764 return Err(fidl::Error::InvalidNumBytesInEnvelope);
29765 }
29766 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
29767 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
29768 }
29769 }
29770
29771 next_offset += envelope_size;
29772 _next_ordinal_to_read += 1;
29773 if next_offset >= end_offset {
29774 return Ok(());
29775 }
29776
29777 while _next_ordinal_to_read < 9 {
29779 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
29780 _next_ordinal_to_read += 1;
29781 next_offset += envelope_size;
29782 }
29783
29784 let next_out_of_line = decoder.next_out_of_line();
29785 let handles_before = decoder.remaining_handles();
29786 if let Some((inlined, num_bytes, num_handles)) =
29787 fidl::encoding::decode_envelope_header(decoder, next_offset)?
29788 {
29789 let member_inline_size =
29790 <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
29791 if inlined != (member_inline_size <= 4) {
29792 return Err(fidl::Error::InvalidInlineBitInEnvelope);
29793 }
29794 let inner_offset;
29795 let mut inner_depth = depth.clone();
29796 if inlined {
29797 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
29798 inner_offset = next_offset;
29799 } else {
29800 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
29801 inner_depth.increment()?;
29802 }
29803 let val_ref = self.thread_rloc.get_or_insert_with(|| fidl::new_empty!(u16, D));
29804 fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
29805 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
29806 {
29807 return Err(fidl::Error::InvalidNumBytesInEnvelope);
29808 }
29809 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
29810 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
29811 }
29812 }
29813
29814 next_offset += envelope_size;
29815 _next_ordinal_to_read += 1;
29816 if next_offset >= end_offset {
29817 return Ok(());
29818 }
29819
29820 while _next_ordinal_to_read < 10 {
29822 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
29823 _next_ordinal_to_read += 1;
29824 next_offset += envelope_size;
29825 }
29826
29827 let next_out_of_line = decoder.next_out_of_line();
29828 let handles_before = decoder.remaining_handles();
29829 if let Some((inlined, num_bytes, num_handles)) =
29830 fidl::encoding::decode_envelope_header(decoder, next_offset)?
29831 {
29832 let member_inline_size =
29833 <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
29834 if inlined != (member_inline_size <= 4) {
29835 return Err(fidl::Error::InvalidInlineBitInEnvelope);
29836 }
29837 let inner_offset;
29838 let mut inner_depth = depth.clone();
29839 if inlined {
29840 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
29841 inner_offset = next_offset;
29842 } else {
29843 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
29844 inner_depth.increment()?;
29845 }
29846 let val_ref =
29847 self.thread_network_data_version.get_or_insert_with(|| fidl::new_empty!(u8, D));
29848 fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
29849 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
29850 {
29851 return Err(fidl::Error::InvalidNumBytesInEnvelope);
29852 }
29853 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
29854 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
29855 }
29856 }
29857
29858 next_offset += envelope_size;
29859 _next_ordinal_to_read += 1;
29860 if next_offset >= end_offset {
29861 return Ok(());
29862 }
29863
29864 while _next_ordinal_to_read < 11 {
29866 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
29867 _next_ordinal_to_read += 1;
29868 next_offset += envelope_size;
29869 }
29870
29871 let next_out_of_line = decoder.next_out_of_line();
29872 let handles_before = decoder.remaining_handles();
29873 if let Some((inlined, num_bytes, num_handles)) =
29874 fidl::encoding::decode_envelope_header(decoder, next_offset)?
29875 {
29876 let member_inline_size =
29877 <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
29878 if inlined != (member_inline_size <= 4) {
29879 return Err(fidl::Error::InvalidInlineBitInEnvelope);
29880 }
29881 let inner_offset;
29882 let mut inner_depth = depth.clone();
29883 if inlined {
29884 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
29885 inner_offset = next_offset;
29886 } else {
29887 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
29888 inner_depth.increment()?;
29889 }
29890 let val_ref = self
29891 .thread_stable_network_data_version
29892 .get_or_insert_with(|| fidl::new_empty!(u8, D));
29893 fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
29894 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
29895 {
29896 return Err(fidl::Error::InvalidNumBytesInEnvelope);
29897 }
29898 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
29899 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
29900 }
29901 }
29902
29903 next_offset += envelope_size;
29904 _next_ordinal_to_read += 1;
29905 if next_offset >= end_offset {
29906 return Ok(());
29907 }
29908
29909 while _next_ordinal_to_read < 12 {
29911 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
29912 _next_ordinal_to_read += 1;
29913 next_offset += envelope_size;
29914 }
29915
29916 let next_out_of_line = decoder.next_out_of_line();
29917 let handles_before = decoder.remaining_handles();
29918 if let Some((inlined, num_bytes, num_handles)) =
29919 fidl::encoding::decode_envelope_header(decoder, next_offset)?
29920 {
29921 let member_inline_size =
29922 <fidl::encoding::Vector<u8, 255> as fidl::encoding::TypeMarker>::inline_size(
29923 decoder.context,
29924 );
29925 if inlined != (member_inline_size <= 4) {
29926 return Err(fidl::Error::InvalidInlineBitInEnvelope);
29927 }
29928 let inner_offset;
29929 let mut inner_depth = depth.clone();
29930 if inlined {
29931 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
29932 inner_offset = next_offset;
29933 } else {
29934 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
29935 inner_depth.increment()?;
29936 }
29937 let val_ref = self
29938 .thread_network_data
29939 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u8, 255>, D));
29940 fidl::decode!(fidl::encoding::Vector<u8, 255>, D, val_ref, decoder, inner_offset, inner_depth)?;
29941 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
29942 {
29943 return Err(fidl::Error::InvalidNumBytesInEnvelope);
29944 }
29945 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
29946 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
29947 }
29948 }
29949
29950 next_offset += envelope_size;
29951 _next_ordinal_to_read += 1;
29952 if next_offset >= end_offset {
29953 return Ok(());
29954 }
29955
29956 while _next_ordinal_to_read < 13 {
29958 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
29959 _next_ordinal_to_read += 1;
29960 next_offset += envelope_size;
29961 }
29962
29963 let next_out_of_line = decoder.next_out_of_line();
29964 let handles_before = decoder.remaining_handles();
29965 if let Some((inlined, num_bytes, num_handles)) =
29966 fidl::encoding::decode_envelope_header(decoder, next_offset)?
29967 {
29968 let member_inline_size =
29969 <fidl::encoding::Vector<u8, 255> as fidl::encoding::TypeMarker>::inline_size(
29970 decoder.context,
29971 );
29972 if inlined != (member_inline_size <= 4) {
29973 return Err(fidl::Error::InvalidInlineBitInEnvelope);
29974 }
29975 let inner_offset;
29976 let mut inner_depth = depth.clone();
29977 if inlined {
29978 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
29979 inner_offset = next_offset;
29980 } else {
29981 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
29982 inner_depth.increment()?;
29983 }
29984 let val_ref = self
29985 .thread_stable_network_data
29986 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u8, 255>, D));
29987 fidl::decode!(fidl::encoding::Vector<u8, 255>, D, val_ref, decoder, inner_offset, inner_depth)?;
29988 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
29989 {
29990 return Err(fidl::Error::InvalidNumBytesInEnvelope);
29991 }
29992 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
29993 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
29994 }
29995 }
29996
29997 next_offset += envelope_size;
29998 _next_ordinal_to_read += 1;
29999 if next_offset >= end_offset {
30000 return Ok(());
30001 }
30002
30003 while _next_ordinal_to_read < 14 {
30005 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
30006 _next_ordinal_to_read += 1;
30007 next_offset += envelope_size;
30008 }
30009
30010 let next_out_of_line = decoder.next_out_of_line();
30011 let handles_before = decoder.remaining_handles();
30012 if let Some((inlined, num_bytes, num_handles)) =
30013 fidl::encoding::decode_envelope_header(decoder, next_offset)?
30014 {
30015 let member_inline_size =
30016 <BorderRoutingCounters as fidl::encoding::TypeMarker>::inline_size(
30017 decoder.context,
30018 );
30019 if inlined != (member_inline_size <= 4) {
30020 return Err(fidl::Error::InvalidInlineBitInEnvelope);
30021 }
30022 let inner_offset;
30023 let mut inner_depth = depth.clone();
30024 if inlined {
30025 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
30026 inner_offset = next_offset;
30027 } else {
30028 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
30029 inner_depth.increment()?;
30030 }
30031 let val_ref = self
30032 .thread_border_routing_counters
30033 .get_or_insert_with(|| fidl::new_empty!(BorderRoutingCounters, D));
30034 fidl::decode!(
30035 BorderRoutingCounters,
30036 D,
30037 val_ref,
30038 decoder,
30039 inner_offset,
30040 inner_depth
30041 )?;
30042 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
30043 {
30044 return Err(fidl::Error::InvalidNumBytesInEnvelope);
30045 }
30046 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
30047 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
30048 }
30049 }
30050
30051 next_offset += envelope_size;
30052 _next_ordinal_to_read += 1;
30053 if next_offset >= end_offset {
30054 return Ok(());
30055 }
30056
30057 while _next_ordinal_to_read < 15 {
30059 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
30060 _next_ordinal_to_read += 1;
30061 next_offset += envelope_size;
30062 }
30063
30064 let next_out_of_line = decoder.next_out_of_line();
30065 let handles_before = decoder.remaining_handles();
30066 if let Some((inlined, num_bytes, num_handles)) =
30067 fidl::encoding::decode_envelope_header(decoder, next_offset)?
30068 {
30069 let member_inline_size =
30070 <SrpServerInfo as fidl::encoding::TypeMarker>::inline_size(decoder.context);
30071 if inlined != (member_inline_size <= 4) {
30072 return Err(fidl::Error::InvalidInlineBitInEnvelope);
30073 }
30074 let inner_offset;
30075 let mut inner_depth = depth.clone();
30076 if inlined {
30077 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
30078 inner_offset = next_offset;
30079 } else {
30080 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
30081 inner_depth.increment()?;
30082 }
30083 let val_ref =
30084 self.srp_server_info.get_or_insert_with(|| fidl::new_empty!(SrpServerInfo, D));
30085 fidl::decode!(SrpServerInfo, D, val_ref, decoder, inner_offset, inner_depth)?;
30086 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
30087 {
30088 return Err(fidl::Error::InvalidNumBytesInEnvelope);
30089 }
30090 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
30091 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
30092 }
30093 }
30094
30095 next_offset += envelope_size;
30096 _next_ordinal_to_read += 1;
30097 if next_offset >= end_offset {
30098 return Ok(());
30099 }
30100
30101 while _next_ordinal_to_read < 16 {
30103 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
30104 _next_ordinal_to_read += 1;
30105 next_offset += envelope_size;
30106 }
30107
30108 let next_out_of_line = decoder.next_out_of_line();
30109 let handles_before = decoder.remaining_handles();
30110 if let Some((inlined, num_bytes, num_handles)) =
30111 fidl::encoding::decode_envelope_header(decoder, next_offset)?
30112 {
30113 let member_inline_size =
30114 <DnssdCounters as fidl::encoding::TypeMarker>::inline_size(decoder.context);
30115 if inlined != (member_inline_size <= 4) {
30116 return Err(fidl::Error::InvalidInlineBitInEnvelope);
30117 }
30118 let inner_offset;
30119 let mut inner_depth = depth.clone();
30120 if inlined {
30121 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
30122 inner_offset = next_offset;
30123 } else {
30124 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
30125 inner_depth.increment()?;
30126 }
30127 let val_ref =
30128 self.dnssd_counters.get_or_insert_with(|| fidl::new_empty!(DnssdCounters, D));
30129 fidl::decode!(DnssdCounters, D, val_ref, decoder, inner_offset, inner_depth)?;
30130 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
30131 {
30132 return Err(fidl::Error::InvalidNumBytesInEnvelope);
30133 }
30134 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
30135 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
30136 }
30137 }
30138
30139 next_offset += envelope_size;
30140 _next_ordinal_to_read += 1;
30141 if next_offset >= end_offset {
30142 return Ok(());
30143 }
30144
30145 while _next_ordinal_to_read < 17 {
30147 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
30148 _next_ordinal_to_read += 1;
30149 next_offset += envelope_size;
30150 }
30151
30152 let next_out_of_line = decoder.next_out_of_line();
30153 let handles_before = decoder.remaining_handles();
30154 if let Some((inlined, num_bytes, num_handles)) =
30155 fidl::encoding::decode_envelope_header(decoder, next_offset)?
30156 {
30157 let member_inline_size =
30158 <LeaderData as fidl::encoding::TypeMarker>::inline_size(decoder.context);
30159 if inlined != (member_inline_size <= 4) {
30160 return Err(fidl::Error::InvalidInlineBitInEnvelope);
30161 }
30162 let inner_offset;
30163 let mut inner_depth = depth.clone();
30164 if inlined {
30165 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
30166 inner_offset = next_offset;
30167 } else {
30168 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
30169 inner_depth.increment()?;
30170 }
30171 let val_ref =
30172 self.leader_data.get_or_insert_with(|| fidl::new_empty!(LeaderData, D));
30173 fidl::decode!(LeaderData, D, val_ref, decoder, inner_offset, inner_depth)?;
30174 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
30175 {
30176 return Err(fidl::Error::InvalidNumBytesInEnvelope);
30177 }
30178 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
30179 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
30180 }
30181 }
30182
30183 next_offset += envelope_size;
30184 _next_ordinal_to_read += 1;
30185 if next_offset >= end_offset {
30186 return Ok(());
30187 }
30188
30189 while _next_ordinal_to_read < 18 {
30191 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
30192 _next_ordinal_to_read += 1;
30193 next_offset += envelope_size;
30194 }
30195
30196 let next_out_of_line = decoder.next_out_of_line();
30197 let handles_before = decoder.remaining_handles();
30198 if let Some((inlined, num_bytes, num_handles)) =
30199 fidl::encoding::decode_envelope_header(decoder, next_offset)?
30200 {
30201 let member_inline_size =
30202 <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
30203 if inlined != (member_inline_size <= 4) {
30204 return Err(fidl::Error::InvalidInlineBitInEnvelope);
30205 }
30206 let inner_offset;
30207 let mut inner_depth = depth.clone();
30208 if inlined {
30209 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
30210 inner_offset = next_offset;
30211 } else {
30212 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
30213 inner_depth.increment()?;
30214 }
30215 let val_ref = self.uptime.get_or_insert_with(|| fidl::new_empty!(i64, D));
30216 fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
30217 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
30218 {
30219 return Err(fidl::Error::InvalidNumBytesInEnvelope);
30220 }
30221 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
30222 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
30223 }
30224 }
30225
30226 next_offset += envelope_size;
30227 _next_ordinal_to_read += 1;
30228 if next_offset >= end_offset {
30229 return Ok(());
30230 }
30231
30232 while _next_ordinal_to_read < 19 {
30234 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
30235 _next_ordinal_to_read += 1;
30236 next_offset += envelope_size;
30237 }
30238
30239 let next_out_of_line = decoder.next_out_of_line();
30240 let handles_before = decoder.remaining_handles();
30241 if let Some((inlined, num_bytes, num_handles)) =
30242 fidl::encoding::decode_envelope_header(decoder, next_offset)?
30243 {
30244 let member_inline_size =
30245 <Nat64Info as fidl::encoding::TypeMarker>::inline_size(decoder.context);
30246 if inlined != (member_inline_size <= 4) {
30247 return Err(fidl::Error::InvalidInlineBitInEnvelope);
30248 }
30249 let inner_offset;
30250 let mut inner_depth = depth.clone();
30251 if inlined {
30252 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
30253 inner_offset = next_offset;
30254 } else {
30255 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
30256 inner_depth.increment()?;
30257 }
30258 let val_ref = self.nat64_info.get_or_insert_with(|| fidl::new_empty!(Nat64Info, D));
30259 fidl::decode!(Nat64Info, D, val_ref, decoder, inner_offset, inner_depth)?;
30260 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
30261 {
30262 return Err(fidl::Error::InvalidNumBytesInEnvelope);
30263 }
30264 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
30265 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
30266 }
30267 }
30268
30269 next_offset += envelope_size;
30270 _next_ordinal_to_read += 1;
30271 if next_offset >= end_offset {
30272 return Ok(());
30273 }
30274
30275 while _next_ordinal_to_read < 20 {
30277 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
30278 _next_ordinal_to_read += 1;
30279 next_offset += envelope_size;
30280 }
30281
30282 let next_out_of_line = decoder.next_out_of_line();
30283 let handles_before = decoder.remaining_handles();
30284 if let Some((inlined, num_bytes, num_handles)) =
30285 fidl::encoding::decode_envelope_header(decoder, next_offset)?
30286 {
30287 let member_inline_size =
30288 <TrelCounters as fidl::encoding::TypeMarker>::inline_size(decoder.context);
30289 if inlined != (member_inline_size <= 4) {
30290 return Err(fidl::Error::InvalidInlineBitInEnvelope);
30291 }
30292 let inner_offset;
30293 let mut inner_depth = depth.clone();
30294 if inlined {
30295 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
30296 inner_offset = next_offset;
30297 } else {
30298 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
30299 inner_depth.increment()?;
30300 }
30301 let val_ref =
30302 self.trel_counters.get_or_insert_with(|| fidl::new_empty!(TrelCounters, D));
30303 fidl::decode!(TrelCounters, D, val_ref, decoder, inner_offset, inner_depth)?;
30304 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
30305 {
30306 return Err(fidl::Error::InvalidNumBytesInEnvelope);
30307 }
30308 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
30309 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
30310 }
30311 }
30312
30313 next_offset += envelope_size;
30314 _next_ordinal_to_read += 1;
30315 if next_offset >= end_offset {
30316 return Ok(());
30317 }
30318
30319 while _next_ordinal_to_read < 21 {
30321 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
30322 _next_ordinal_to_read += 1;
30323 next_offset += envelope_size;
30324 }
30325
30326 let next_out_of_line = decoder.next_out_of_line();
30327 let handles_before = decoder.remaining_handles();
30328 if let Some((inlined, num_bytes, num_handles)) =
30329 fidl::encoding::decode_envelope_header(decoder, next_offset)?
30330 {
30331 let member_inline_size =
30332 <TrelPeersInfo as fidl::encoding::TypeMarker>::inline_size(decoder.context);
30333 if inlined != (member_inline_size <= 4) {
30334 return Err(fidl::Error::InvalidInlineBitInEnvelope);
30335 }
30336 let inner_offset;
30337 let mut inner_depth = depth.clone();
30338 if inlined {
30339 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
30340 inner_offset = next_offset;
30341 } else {
30342 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
30343 inner_depth.increment()?;
30344 }
30345 let val_ref =
30346 self.trel_peers_info.get_or_insert_with(|| fidl::new_empty!(TrelPeersInfo, D));
30347 fidl::decode!(TrelPeersInfo, D, val_ref, decoder, inner_offset, inner_depth)?;
30348 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
30349 {
30350 return Err(fidl::Error::InvalidNumBytesInEnvelope);
30351 }
30352 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
30353 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
30354 }
30355 }
30356
30357 next_offset += envelope_size;
30358 _next_ordinal_to_read += 1;
30359 if next_offset >= end_offset {
30360 return Ok(());
30361 }
30362
30363 while _next_ordinal_to_read < 22 {
30365 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
30366 _next_ordinal_to_read += 1;
30367 next_offset += envelope_size;
30368 }
30369
30370 let next_out_of_line = decoder.next_out_of_line();
30371 let handles_before = decoder.remaining_handles();
30372 if let Some((inlined, num_bytes, num_handles)) =
30373 fidl::encoding::decode_envelope_header(decoder, next_offset)?
30374 {
30375 let member_inline_size =
30376 <UpstreamDnsInfo as fidl::encoding::TypeMarker>::inline_size(decoder.context);
30377 if inlined != (member_inline_size <= 4) {
30378 return Err(fidl::Error::InvalidInlineBitInEnvelope);
30379 }
30380 let inner_offset;
30381 let mut inner_depth = depth.clone();
30382 if inlined {
30383 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
30384 inner_offset = next_offset;
30385 } else {
30386 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
30387 inner_depth.increment()?;
30388 }
30389 let val_ref = self
30390 .upstream_dns_info
30391 .get_or_insert_with(|| fidl::new_empty!(UpstreamDnsInfo, D));
30392 fidl::decode!(UpstreamDnsInfo, D, val_ref, decoder, inner_offset, inner_depth)?;
30393 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
30394 {
30395 return Err(fidl::Error::InvalidNumBytesInEnvelope);
30396 }
30397 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
30398 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
30399 }
30400 }
30401
30402 next_offset += envelope_size;
30403 _next_ordinal_to_read += 1;
30404 if next_offset >= end_offset {
30405 return Ok(());
30406 }
30407
30408 while _next_ordinal_to_read < 23 {
30410 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
30411 _next_ordinal_to_read += 1;
30412 next_offset += envelope_size;
30413 }
30414
30415 let next_out_of_line = decoder.next_out_of_line();
30416 let handles_before = decoder.remaining_handles();
30417 if let Some((inlined, num_bytes, num_handles)) =
30418 fidl::encoding::decode_envelope_header(decoder, next_offset)?
30419 {
30420 let member_inline_size =
30421 <Dhcp6PdInfo as fidl::encoding::TypeMarker>::inline_size(decoder.context);
30422 if inlined != (member_inline_size <= 4) {
30423 return Err(fidl::Error::InvalidInlineBitInEnvelope);
30424 }
30425 let inner_offset;
30426 let mut inner_depth = depth.clone();
30427 if inlined {
30428 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
30429 inner_offset = next_offset;
30430 } else {
30431 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
30432 inner_depth.increment()?;
30433 }
30434 let val_ref =
30435 self.dhcp6pd_info.get_or_insert_with(|| fidl::new_empty!(Dhcp6PdInfo, D));
30436 fidl::decode!(Dhcp6PdInfo, D, val_ref, decoder, inner_offset, inner_depth)?;
30437 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
30438 {
30439 return Err(fidl::Error::InvalidNumBytesInEnvelope);
30440 }
30441 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
30442 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
30443 }
30444 }
30445
30446 next_offset += envelope_size;
30447 _next_ordinal_to_read += 1;
30448 if next_offset >= end_offset {
30449 return Ok(());
30450 }
30451
30452 while _next_ordinal_to_read < 24 {
30454 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
30455 _next_ordinal_to_read += 1;
30456 next_offset += envelope_size;
30457 }
30458
30459 let next_out_of_line = decoder.next_out_of_line();
30460 let handles_before = decoder.remaining_handles();
30461 if let Some((inlined, num_bytes, num_handles)) =
30462 fidl::encoding::decode_envelope_header(decoder, next_offset)?
30463 {
30464 let member_inline_size = <fidl::encoding::Vector<LinkMetricsEntry, 64> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
30465 if inlined != (member_inline_size <= 4) {
30466 return Err(fidl::Error::InvalidInlineBitInEnvelope);
30467 }
30468 let inner_offset;
30469 let mut inner_depth = depth.clone();
30470 if inlined {
30471 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
30472 inner_offset = next_offset;
30473 } else {
30474 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
30475 inner_depth.increment()?;
30476 }
30477 let val_ref = self.link_metrics_entries.get_or_insert_with(
30478 || fidl::new_empty!(fidl::encoding::Vector<LinkMetricsEntry, 64>, D),
30479 );
30480 fidl::decode!(fidl::encoding::Vector<LinkMetricsEntry, 64>, D, val_ref, decoder, inner_offset, inner_depth)?;
30481 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
30482 {
30483 return Err(fidl::Error::InvalidNumBytesInEnvelope);
30484 }
30485 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
30486 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
30487 }
30488 }
30489
30490 next_offset += envelope_size;
30491 _next_ordinal_to_read += 1;
30492 if next_offset >= end_offset {
30493 return Ok(());
30494 }
30495
30496 while _next_ordinal_to_read < 25 {
30498 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
30499 _next_ordinal_to_read += 1;
30500 next_offset += envelope_size;
30501 }
30502
30503 let next_out_of_line = decoder.next_out_of_line();
30504 let handles_before = decoder.remaining_handles();
30505 if let Some((inlined, num_bytes, num_handles)) =
30506 fidl::encoding::decode_envelope_header(decoder, next_offset)?
30507 {
30508 let member_inline_size = <fidl_fuchsia_lowpan_device_common::BorderAgentCounters as fidl::encoding::TypeMarker>::inline_size(decoder.context);
30509 if inlined != (member_inline_size <= 4) {
30510 return Err(fidl::Error::InvalidInlineBitInEnvelope);
30511 }
30512 let inner_offset;
30513 let mut inner_depth = depth.clone();
30514 if inlined {
30515 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
30516 inner_offset = next_offset;
30517 } else {
30518 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
30519 inner_depth.increment()?;
30520 }
30521 let val_ref = self.border_agent_counters.get_or_insert_with(|| {
30522 fidl::new_empty!(fidl_fuchsia_lowpan_device_common::BorderAgentCounters, D)
30523 });
30524 fidl::decode!(
30525 fidl_fuchsia_lowpan_device_common::BorderAgentCounters,
30526 D,
30527 val_ref,
30528 decoder,
30529 inner_offset,
30530 inner_depth
30531 )?;
30532 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
30533 {
30534 return Err(fidl::Error::InvalidNumBytesInEnvelope);
30535 }
30536 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
30537 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
30538 }
30539 }
30540
30541 next_offset += envelope_size;
30542 _next_ordinal_to_read += 1;
30543 if next_offset >= end_offset {
30544 return Ok(());
30545 }
30546
30547 while _next_ordinal_to_read < 26 {
30549 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
30550 _next_ordinal_to_read += 1;
30551 next_offset += envelope_size;
30552 }
30553
30554 let next_out_of_line = decoder.next_out_of_line();
30555 let handles_before = decoder.remaining_handles();
30556 if let Some((inlined, num_bytes, num_handles)) =
30557 fidl::encoding::decode_envelope_header(decoder, next_offset)?
30558 {
30559 let member_inline_size =
30560 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
30561 if inlined != (member_inline_size <= 4) {
30562 return Err(fidl::Error::InvalidInlineBitInEnvelope);
30563 }
30564 let inner_offset;
30565 let mut inner_depth = depth.clone();
30566 if inlined {
30567 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
30568 inner_offset = next_offset;
30569 } else {
30570 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
30571 inner_depth.increment()?;
30572 }
30573 let val_ref =
30574 self.multi_ail_detected.get_or_insert_with(|| fidl::new_empty!(bool, D));
30575 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
30576 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
30577 {
30578 return Err(fidl::Error::InvalidNumBytesInEnvelope);
30579 }
30580 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
30581 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
30582 }
30583 }
30584
30585 next_offset += envelope_size;
30586 _next_ordinal_to_read += 1;
30587 if next_offset >= end_offset {
30588 return Ok(());
30589 }
30590
30591 while _next_ordinal_to_read < 27 {
30593 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
30594 _next_ordinal_to_read += 1;
30595 next_offset += envelope_size;
30596 }
30597
30598 let next_out_of_line = decoder.next_out_of_line();
30599 let handles_before = decoder.remaining_handles();
30600 if let Some((inlined, num_bytes, num_handles)) =
30601 fidl::encoding::decode_envelope_header(decoder, next_offset)?
30602 {
30603 let member_inline_size =
30604 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
30605 if inlined != (member_inline_size <= 4) {
30606 return Err(fidl::Error::InvalidInlineBitInEnvelope);
30607 }
30608 let inner_offset;
30609 let mut inner_depth = depth.clone();
30610 if inlined {
30611 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
30612 inner_offset = next_offset;
30613 } else {
30614 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
30615 inner_depth.increment()?;
30616 }
30617 let val_ref = self.extended_pan_id.get_or_insert_with(|| fidl::new_empty!(u64, D));
30618 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
30619 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
30620 {
30621 return Err(fidl::Error::InvalidNumBytesInEnvelope);
30622 }
30623 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
30624 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
30625 }
30626 }
30627
30628 next_offset += envelope_size;
30629 _next_ordinal_to_read += 1;
30630 if next_offset >= end_offset {
30631 return Ok(());
30632 }
30633
30634 while _next_ordinal_to_read < 28 {
30636 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
30637 _next_ordinal_to_read += 1;
30638 next_offset += envelope_size;
30639 }
30640
30641 let next_out_of_line = decoder.next_out_of_line();
30642 let handles_before = decoder.remaining_handles();
30643 if let Some((inlined, num_bytes, num_handles)) =
30644 fidl::encoding::decode_envelope_header(decoder, next_offset)?
30645 {
30646 let member_inline_size = <fidl::encoding::Vector<BorderRoutingPeer, 64> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
30647 if inlined != (member_inline_size <= 4) {
30648 return Err(fidl::Error::InvalidInlineBitInEnvelope);
30649 }
30650 let inner_offset;
30651 let mut inner_depth = depth.clone();
30652 if inlined {
30653 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
30654 inner_offset = next_offset;
30655 } else {
30656 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
30657 inner_depth.increment()?;
30658 }
30659 let val_ref = self.border_routing_peers.get_or_insert_with(
30660 || fidl::new_empty!(fidl::encoding::Vector<BorderRoutingPeer, 64>, D),
30661 );
30662 fidl::decode!(fidl::encoding::Vector<BorderRoutingPeer, 64>, D, val_ref, decoder, inner_offset, inner_depth)?;
30663 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
30664 {
30665 return Err(fidl::Error::InvalidNumBytesInEnvelope);
30666 }
30667 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
30668 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
30669 }
30670 }
30671
30672 next_offset += envelope_size;
30673 _next_ordinal_to_read += 1;
30674 if next_offset >= end_offset {
30675 return Ok(());
30676 }
30677
30678 while _next_ordinal_to_read < 29 {
30680 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
30681 _next_ordinal_to_read += 1;
30682 next_offset += envelope_size;
30683 }
30684
30685 let next_out_of_line = decoder.next_out_of_line();
30686 let handles_before = decoder.remaining_handles();
30687 if let Some((inlined, num_bytes, num_handles)) =
30688 fidl::encoding::decode_envelope_header(decoder, next_offset)?
30689 {
30690 let member_inline_size = <fidl::encoding::Vector<BorderRoutingRouter, 64> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
30691 if inlined != (member_inline_size <= 4) {
30692 return Err(fidl::Error::InvalidInlineBitInEnvelope);
30693 }
30694 let inner_offset;
30695 let mut inner_depth = depth.clone();
30696 if inlined {
30697 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
30698 inner_offset = next_offset;
30699 } else {
30700 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
30701 inner_depth.increment()?;
30702 }
30703 let val_ref = self.border_routing_routers.get_or_insert_with(
30704 || fidl::new_empty!(fidl::encoding::Vector<BorderRoutingRouter, 64>, D),
30705 );
30706 fidl::decode!(fidl::encoding::Vector<BorderRoutingRouter, 64>, D, val_ref, decoder, inner_offset, inner_depth)?;
30707 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
30708 {
30709 return Err(fidl::Error::InvalidNumBytesInEnvelope);
30710 }
30711 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
30712 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
30713 }
30714 }
30715
30716 next_offset += envelope_size;
30717 _next_ordinal_to_read += 1;
30718 if next_offset >= end_offset {
30719 return Ok(());
30720 }
30721
30722 while _next_ordinal_to_read < 30 {
30724 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
30725 _next_ordinal_to_read += 1;
30726 next_offset += envelope_size;
30727 }
30728
30729 let next_out_of_line = decoder.next_out_of_line();
30730 let handles_before = decoder.remaining_handles();
30731 if let Some((inlined, num_bytes, num_handles)) =
30732 fidl::encoding::decode_envelope_header(decoder, next_offset)?
30733 {
30734 let member_inline_size =
30735 <OperationalDataset as fidl::encoding::TypeMarker>::inline_size(
30736 decoder.context,
30737 );
30738 if inlined != (member_inline_size <= 4) {
30739 return Err(fidl::Error::InvalidInlineBitInEnvelope);
30740 }
30741 let inner_offset;
30742 let mut inner_depth = depth.clone();
30743 if inlined {
30744 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
30745 inner_offset = next_offset;
30746 } else {
30747 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
30748 inner_depth.increment()?;
30749 }
30750 let val_ref = self
30751 .active_dataset
30752 .get_or_insert_with(|| fidl::new_empty!(OperationalDataset, D));
30753 fidl::decode!(OperationalDataset, D, val_ref, decoder, inner_offset, inner_depth)?;
30754 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
30755 {
30756 return Err(fidl::Error::InvalidNumBytesInEnvelope);
30757 }
30758 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
30759 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
30760 }
30761 }
30762
30763 next_offset += envelope_size;
30764 _next_ordinal_to_read += 1;
30765 if next_offset >= end_offset {
30766 return Ok(());
30767 }
30768
30769 while _next_ordinal_to_read < 31 {
30771 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
30772 _next_ordinal_to_read += 1;
30773 next_offset += envelope_size;
30774 }
30775
30776 let next_out_of_line = decoder.next_out_of_line();
30777 let handles_before = decoder.remaining_handles();
30778 if let Some((inlined, num_bytes, num_handles)) =
30779 fidl::encoding::decode_envelope_header(decoder, next_offset)?
30780 {
30781 let member_inline_size = <fidl::encoding::Vector<MultiRadioNeighborInfo, 64> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
30782 if inlined != (member_inline_size <= 4) {
30783 return Err(fidl::Error::InvalidInlineBitInEnvelope);
30784 }
30785 let inner_offset;
30786 let mut inner_depth = depth.clone();
30787 if inlined {
30788 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
30789 inner_offset = next_offset;
30790 } else {
30791 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
30792 inner_depth.increment()?;
30793 }
30794 let val_ref = self.multiradio_neighbor_info.get_or_insert_with(
30795 || fidl::new_empty!(fidl::encoding::Vector<MultiRadioNeighborInfo, 64>, D),
30796 );
30797 fidl::decode!(fidl::encoding::Vector<MultiRadioNeighborInfo, 64>, D, val_ref, decoder, inner_offset, inner_depth)?;
30798 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
30799 {
30800 return Err(fidl::Error::InvalidNumBytesInEnvelope);
30801 }
30802 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
30803 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
30804 }
30805 }
30806
30807 next_offset += envelope_size;
30808 _next_ordinal_to_read += 1;
30809 if next_offset >= end_offset {
30810 return Ok(());
30811 }
30812
30813 while _next_ordinal_to_read < 32 {
30815 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
30816 _next_ordinal_to_read += 1;
30817 next_offset += envelope_size;
30818 }
30819
30820 let next_out_of_line = decoder.next_out_of_line();
30821 let handles_before = decoder.remaining_handles();
30822 if let Some((inlined, num_bytes, num_handles)) =
30823 fidl::encoding::decode_envelope_header(decoder, next_offset)?
30824 {
30825 let member_inline_size = <fidl::encoding::Vector<RouterInfo, 64> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
30826 if inlined != (member_inline_size <= 4) {
30827 return Err(fidl::Error::InvalidInlineBitInEnvelope);
30828 }
30829 let inner_offset;
30830 let mut inner_depth = depth.clone();
30831 if inlined {
30832 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
30833 inner_offset = next_offset;
30834 } else {
30835 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
30836 inner_depth.increment()?;
30837 }
30838 let val_ref = self.router_info.get_or_insert_with(
30839 || fidl::new_empty!(fidl::encoding::Vector<RouterInfo, 64>, D),
30840 );
30841 fidl::decode!(fidl::encoding::Vector<RouterInfo, 64>, D, val_ref, decoder, inner_offset, inner_depth)?;
30842 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
30843 {
30844 return Err(fidl::Error::InvalidNumBytesInEnvelope);
30845 }
30846 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
30847 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
30848 }
30849 }
30850
30851 next_offset += envelope_size;
30852 _next_ordinal_to_read += 1;
30853 if next_offset >= end_offset {
30854 return Ok(());
30855 }
30856
30857 while _next_ordinal_to_read < 33 {
30859 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
30860 _next_ordinal_to_read += 1;
30861 next_offset += envelope_size;
30862 }
30863
30864 let next_out_of_line = decoder.next_out_of_line();
30865 let handles_before = decoder.remaining_handles();
30866 if let Some((inlined, num_bytes, num_handles)) =
30867 fidl::encoding::decode_envelope_header(decoder, next_offset)?
30868 {
30869 let member_inline_size =
30870 <NetworkData as fidl::encoding::TypeMarker>::inline_size(decoder.context);
30871 if inlined != (member_inline_size <= 4) {
30872 return Err(fidl::Error::InvalidInlineBitInEnvelope);
30873 }
30874 let inner_offset;
30875 let mut inner_depth = depth.clone();
30876 if inlined {
30877 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
30878 inner_offset = next_offset;
30879 } else {
30880 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
30881 inner_depth.increment()?;
30882 }
30883 let val_ref =
30884 self.network_data.get_or_insert_with(|| fidl::new_empty!(NetworkData, D));
30885 fidl::decode!(NetworkData, D, val_ref, decoder, inner_offset, inner_depth)?;
30886 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
30887 {
30888 return Err(fidl::Error::InvalidNumBytesInEnvelope);
30889 }
30890 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
30891 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
30892 }
30893 }
30894
30895 next_offset += envelope_size;
30896 _next_ordinal_to_read += 1;
30897 if next_offset >= end_offset {
30898 return Ok(());
30899 }
30900
30901 while _next_ordinal_to_read < 34 {
30903 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
30904 _next_ordinal_to_read += 1;
30905 next_offset += envelope_size;
30906 }
30907
30908 let next_out_of_line = decoder.next_out_of_line();
30909 let handles_before = decoder.remaining_handles();
30910 if let Some((inlined, num_bytes, num_handles)) =
30911 fidl::encoding::decode_envelope_header(decoder, next_offset)?
30912 {
30913 let member_inline_size =
30914 <ThreadHistoryReport as fidl::encoding::TypeMarker>::inline_size(
30915 decoder.context,
30916 );
30917 if inlined != (member_inline_size <= 4) {
30918 return Err(fidl::Error::InvalidInlineBitInEnvelope);
30919 }
30920 let inner_offset;
30921 let mut inner_depth = depth.clone();
30922 if inlined {
30923 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
30924 inner_offset = next_offset;
30925 } else {
30926 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
30927 inner_depth.increment()?;
30928 }
30929 let val_ref = self
30930 .history_report
30931 .get_or_insert_with(|| fidl::new_empty!(ThreadHistoryReport, D));
30932 fidl::decode!(ThreadHistoryReport, D, val_ref, decoder, inner_offset, inner_depth)?;
30933 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
30934 {
30935 return Err(fidl::Error::InvalidNumBytesInEnvelope);
30936 }
30937 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
30938 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
30939 }
30940 }
30941
30942 next_offset += envelope_size;
30943 _next_ordinal_to_read += 1;
30944 if next_offset >= end_offset {
30945 return Ok(());
30946 }
30947
30948 while _next_ordinal_to_read < 35 {
30950 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
30951 _next_ordinal_to_read += 1;
30952 next_offset += envelope_size;
30953 }
30954
30955 let next_out_of_line = decoder.next_out_of_line();
30956 let handles_before = decoder.remaining_handles();
30957 if let Some((inlined, num_bytes, num_handles)) =
30958 fidl::encoding::decode_envelope_header(decoder, next_offset)?
30959 {
30960 let member_inline_size = <fidl::encoding::Vector<NetifAddress, 32> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
30961 if inlined != (member_inline_size <= 4) {
30962 return Err(fidl::Error::InvalidInlineBitInEnvelope);
30963 }
30964 let inner_offset;
30965 let mut inner_depth = depth.clone();
30966 if inlined {
30967 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
30968 inner_offset = next_offset;
30969 } else {
30970 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
30971 inner_depth.increment()?;
30972 }
30973 let val_ref = self.ipaddrs.get_or_insert_with(
30974 || fidl::new_empty!(fidl::encoding::Vector<NetifAddress, 32>, D),
30975 );
30976 fidl::decode!(fidl::encoding::Vector<NetifAddress, 32>, D, val_ref, decoder, inner_offset, inner_depth)?;
30977 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
30978 {
30979 return Err(fidl::Error::InvalidNumBytesInEnvelope);
30980 }
30981 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
30982 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
30983 }
30984 }
30985
30986 next_offset += envelope_size;
30987 _next_ordinal_to_read += 1;
30988 if next_offset >= end_offset {
30989 return Ok(());
30990 }
30991
30992 while _next_ordinal_to_read < 36 {
30994 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
30995 _next_ordinal_to_read += 1;
30996 next_offset += envelope_size;
30997 }
30998
30999 let next_out_of_line = decoder.next_out_of_line();
31000 let handles_before = decoder.remaining_handles();
31001 if let Some((inlined, num_bytes, num_handles)) =
31002 fidl::encoding::decode_envelope_header(decoder, next_offset)?
31003 {
31004 let member_inline_size = <fidl::encoding::Vector<
31005 fidl_fuchsia_net_common::Ipv6Address,
31006 32,
31007 > as fidl::encoding::TypeMarker>::inline_size(
31008 decoder.context
31009 );
31010 if inlined != (member_inline_size <= 4) {
31011 return Err(fidl::Error::InvalidInlineBitInEnvelope);
31012 }
31013 let inner_offset;
31014 let mut inner_depth = depth.clone();
31015 if inlined {
31016 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
31017 inner_offset = next_offset;
31018 } else {
31019 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
31020 inner_depth.increment()?;
31021 }
31022 let val_ref =
31023 self.ipmaddrs.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<fidl_fuchsia_net_common::Ipv6Address, 32>, D));
31024 fidl::decode!(fidl::encoding::Vector<fidl_fuchsia_net_common::Ipv6Address, 32>, D, val_ref, decoder, inner_offset, inner_depth)?;
31025 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
31026 {
31027 return Err(fidl::Error::InvalidNumBytesInEnvelope);
31028 }
31029 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
31030 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
31031 }
31032 }
31033
31034 next_offset += envelope_size;
31035 _next_ordinal_to_read += 1;
31036 if next_offset >= end_offset {
31037 return Ok(());
31038 }
31039
31040 while _next_ordinal_to_read < 37 {
31042 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
31043 _next_ordinal_to_read += 1;
31044 next_offset += envelope_size;
31045 }
31046
31047 let next_out_of_line = decoder.next_out_of_line();
31048 let handles_before = decoder.remaining_handles();
31049 if let Some((inlined, num_bytes, num_handles)) =
31050 fidl::encoding::decode_envelope_header(decoder, next_offset)?
31051 {
31052 let member_inline_size = <fidl::encoding::Vector<BorderRoutingPrefixTable, 64> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
31053 if inlined != (member_inline_size <= 4) {
31054 return Err(fidl::Error::InvalidInlineBitInEnvelope);
31055 }
31056 let inner_offset;
31057 let mut inner_depth = depth.clone();
31058 if inlined {
31059 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
31060 inner_offset = next_offset;
31061 } else {
31062 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
31063 inner_depth.increment()?;
31064 }
31065 let val_ref = self.border_routing_prefixes.get_or_insert_with(
31066 || fidl::new_empty!(fidl::encoding::Vector<BorderRoutingPrefixTable, 64>, D),
31067 );
31068 fidl::decode!(fidl::encoding::Vector<BorderRoutingPrefixTable, 64>, D, val_ref, decoder, inner_offset, inner_depth)?;
31069 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
31070 {
31071 return Err(fidl::Error::InvalidNumBytesInEnvelope);
31072 }
31073 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
31074 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
31075 }
31076 }
31077
31078 next_offset += envelope_size;
31079 _next_ordinal_to_read += 1;
31080 if next_offset >= end_offset {
31081 return Ok(());
31082 }
31083
31084 while _next_ordinal_to_read < 38 {
31086 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
31087 _next_ordinal_to_read += 1;
31088 next_offset += envelope_size;
31089 }
31090
31091 let next_out_of_line = decoder.next_out_of_line();
31092 let handles_before = decoder.remaining_handles();
31093 if let Some((inlined, num_bytes, num_handles)) =
31094 fidl::encoding::decode_envelope_header(decoder, next_offset)?
31095 {
31096 let member_inline_size = <fidl::encoding::Vector<BorderRoutingRdnss, 64> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
31097 if inlined != (member_inline_size <= 4) {
31098 return Err(fidl::Error::InvalidInlineBitInEnvelope);
31099 }
31100 let inner_offset;
31101 let mut inner_depth = depth.clone();
31102 if inlined {
31103 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
31104 inner_offset = next_offset;
31105 } else {
31106 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
31107 inner_depth.increment()?;
31108 }
31109 let val_ref = self.border_routing_rdnsses.get_or_insert_with(
31110 || fidl::new_empty!(fidl::encoding::Vector<BorderRoutingRdnss, 64>, D),
31111 );
31112 fidl::decode!(fidl::encoding::Vector<BorderRoutingRdnss, 64>, D, val_ref, decoder, inner_offset, inner_depth)?;
31113 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
31114 {
31115 return Err(fidl::Error::InvalidNumBytesInEnvelope);
31116 }
31117 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
31118 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
31119 }
31120 }
31121
31122 next_offset += envelope_size;
31123 _next_ordinal_to_read += 1;
31124 if next_offset >= end_offset {
31125 return Ok(());
31126 }
31127
31128 while _next_ordinal_to_read < 39 {
31130 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
31131 _next_ordinal_to_read += 1;
31132 next_offset += envelope_size;
31133 }
31134
31135 let next_out_of_line = decoder.next_out_of_line();
31136 let handles_before = decoder.remaining_handles();
31137 if let Some((inlined, num_bytes, num_handles)) =
31138 fidl::encoding::decode_envelope_header(decoder, next_offset)?
31139 {
31140 let member_inline_size = <fidl::encoding::Vector<UdpSocket, 32> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
31141 if inlined != (member_inline_size <= 4) {
31142 return Err(fidl::Error::InvalidInlineBitInEnvelope);
31143 }
31144 let inner_offset;
31145 let mut inner_depth = depth.clone();
31146 if inlined {
31147 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
31148 inner_offset = next_offset;
31149 } else {
31150 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
31151 inner_depth.increment()?;
31152 }
31153 let val_ref = self.netstat.get_or_insert_with(
31154 || fidl::new_empty!(fidl::encoding::Vector<UdpSocket, 32>, D),
31155 );
31156 fidl::decode!(fidl::encoding::Vector<UdpSocket, 32>, D, val_ref, decoder, inner_offset, inner_depth)?;
31157 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
31158 {
31159 return Err(fidl::Error::InvalidNumBytesInEnvelope);
31160 }
31161 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
31162 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
31163 }
31164 }
31165
31166 next_offset += envelope_size;
31167 _next_ordinal_to_read += 1;
31168 if next_offset >= end_offset {
31169 return Ok(());
31170 }
31171
31172 while _next_ordinal_to_read < 40 {
31174 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
31175 _next_ordinal_to_read += 1;
31176 next_offset += envelope_size;
31177 }
31178
31179 let next_out_of_line = decoder.next_out_of_line();
31180 let handles_before = decoder.remaining_handles();
31181 if let Some((inlined, num_bytes, num_handles)) =
31182 fidl::encoding::decode_envelope_header(decoder, next_offset)?
31183 {
31184 let member_inline_size = <fidl::encoding::Vector<EidCacheEntry, 64> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
31185 if inlined != (member_inline_size <= 4) {
31186 return Err(fidl::Error::InvalidInlineBitInEnvelope);
31187 }
31188 let inner_offset;
31189 let mut inner_depth = depth.clone();
31190 if inlined {
31191 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
31192 inner_offset = next_offset;
31193 } else {
31194 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
31195 inner_depth.increment()?;
31196 }
31197 let val_ref = self.eid_cache_entries.get_or_insert_with(
31198 || fidl::new_empty!(fidl::encoding::Vector<EidCacheEntry, 64>, D),
31199 );
31200 fidl::decode!(fidl::encoding::Vector<EidCacheEntry, 64>, D, val_ref, decoder, inner_offset, inner_depth)?;
31201 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
31202 {
31203 return Err(fidl::Error::InvalidNumBytesInEnvelope);
31204 }
31205 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
31206 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
31207 }
31208 }
31209
31210 next_offset += envelope_size;
31211 _next_ordinal_to_read += 1;
31212 if next_offset >= end_offset {
31213 return Ok(());
31214 }
31215
31216 while _next_ordinal_to_read < 41 {
31218 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
31219 _next_ordinal_to_read += 1;
31220 next_offset += envelope_size;
31221 }
31222
31223 let next_out_of_line = decoder.next_out_of_line();
31224 let handles_before = decoder.remaining_handles();
31225 if let Some((inlined, num_bytes, num_handles)) =
31226 fidl::encoding::decode_envelope_header(decoder, next_offset)?
31227 {
31228 let member_inline_size =
31229 <i8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
31230 if inlined != (member_inline_size <= 4) {
31231 return Err(fidl::Error::InvalidInlineBitInEnvelope);
31232 }
31233 let inner_offset;
31234 let mut inner_depth = depth.clone();
31235 if inlined {
31236 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
31237 inner_offset = next_offset;
31238 } else {
31239 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
31240 inner_depth.increment()?;
31241 }
31242 let val_ref = self.cca_threshold.get_or_insert_with(|| fidl::new_empty!(i8, D));
31243 fidl::decode!(i8, D, val_ref, decoder, inner_offset, inner_depth)?;
31244 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
31245 {
31246 return Err(fidl::Error::InvalidNumBytesInEnvelope);
31247 }
31248 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
31249 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
31250 }
31251 }
31252
31253 next_offset += envelope_size;
31254 _next_ordinal_to_read += 1;
31255 if next_offset >= end_offset {
31256 return Ok(());
31257 }
31258
31259 while _next_ordinal_to_read < 42 {
31261 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
31262 _next_ordinal_to_read += 1;
31263 next_offset += envelope_size;
31264 }
31265
31266 let next_out_of_line = decoder.next_out_of_line();
31267 let handles_before = decoder.remaining_handles();
31268 if let Some((inlined, num_bytes, num_handles)) =
31269 fidl::encoding::decode_envelope_header(decoder, next_offset)?
31270 {
31271 let member_inline_size =
31272 <CslInfo as fidl::encoding::TypeMarker>::inline_size(decoder.context);
31273 if inlined != (member_inline_size <= 4) {
31274 return Err(fidl::Error::InvalidInlineBitInEnvelope);
31275 }
31276 let inner_offset;
31277 let mut inner_depth = depth.clone();
31278 if inlined {
31279 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
31280 inner_offset = next_offset;
31281 } else {
31282 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
31283 inner_depth.increment()?;
31284 }
31285 let val_ref = self.csl_info.get_or_insert_with(|| fidl::new_empty!(CslInfo, D));
31286 fidl::decode!(CslInfo, D, val_ref, decoder, inner_offset, inner_depth)?;
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 < 43 {
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 <BufferInfo as fidl::encoding::TypeMarker>::inline_size(decoder.context);
31316 if inlined != (member_inline_size <= 4) {
31317 return Err(fidl::Error::InvalidInlineBitInEnvelope);
31318 }
31319 let inner_offset;
31320 let mut inner_depth = depth.clone();
31321 if inlined {
31322 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
31323 inner_offset = next_offset;
31324 } else {
31325 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
31326 inner_depth.increment()?;
31327 }
31328 let val_ref =
31329 self.buffer_info.get_or_insert_with(|| fidl::new_empty!(BufferInfo, D));
31330 fidl::decode!(BufferInfo, D, val_ref, decoder, inner_offset, inner_depth)?;
31331 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
31332 {
31333 return Err(fidl::Error::InvalidNumBytesInEnvelope);
31334 }
31335 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
31336 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
31337 }
31338 }
31339
31340 next_offset += envelope_size;
31341 _next_ordinal_to_read += 1;
31342 if next_offset >= end_offset {
31343 return Ok(());
31344 }
31345
31346 while _next_ordinal_to_read < 44 {
31348 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
31349 _next_ordinal_to_read += 1;
31350 next_offset += envelope_size;
31351 }
31352
31353 let next_out_of_line = decoder.next_out_of_line();
31354 let handles_before = decoder.remaining_handles();
31355 if let Some((inlined, num_bytes, num_handles)) =
31356 fidl::encoding::decode_envelope_header(decoder, next_offset)?
31357 {
31358 let member_inline_size = <fidl_fuchsia_lowpan_device_common::MleCounters as fidl::encoding::TypeMarker>::inline_size(decoder.context);
31359 if inlined != (member_inline_size <= 4) {
31360 return Err(fidl::Error::InvalidInlineBitInEnvelope);
31361 }
31362 let inner_offset;
31363 let mut inner_depth = depth.clone();
31364 if inlined {
31365 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
31366 inner_offset = next_offset;
31367 } else {
31368 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
31369 inner_depth.increment()?;
31370 }
31371 let val_ref = self.mle_counters.get_or_insert_with(|| {
31372 fidl::new_empty!(fidl_fuchsia_lowpan_device_common::MleCounters, D)
31373 });
31374 fidl::decode!(
31375 fidl_fuchsia_lowpan_device_common::MleCounters,
31376 D,
31377 val_ref,
31378 decoder,
31379 inner_offset,
31380 inner_depth
31381 )?;
31382 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
31383 {
31384 return Err(fidl::Error::InvalidNumBytesInEnvelope);
31385 }
31386 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
31387 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
31388 }
31389 }
31390
31391 next_offset += envelope_size;
31392
31393 while next_offset < end_offset {
31395 _next_ordinal_to_read += 1;
31396 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
31397 next_offset += envelope_size;
31398 }
31399
31400 Ok(())
31401 }
31402 }
31403
31404 impl ThreadHistoryReport {
31405 #[inline(always)]
31406 fn max_ordinal_present(&self) -> u64 {
31407 if let Some(_) = self.route_info_history {
31408 return 5;
31409 }
31410 if let Some(_) = self.prefix_info_history {
31411 return 4;
31412 }
31413 if let Some(_) = self.router_info_history {
31414 return 3;
31415 }
31416 if let Some(_) = self.neighbor_info_history {
31417 return 2;
31418 }
31419 if let Some(_) = self.net_info_history {
31420 return 1;
31421 }
31422 0
31423 }
31424 }
31425
31426 impl fidl::encoding::ValueTypeMarker for ThreadHistoryReport {
31427 type Borrowed<'a> = &'a Self;
31428 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
31429 value
31430 }
31431 }
31432
31433 unsafe impl fidl::encoding::TypeMarker for ThreadHistoryReport {
31434 type Owned = Self;
31435
31436 #[inline(always)]
31437 fn inline_align(_context: fidl::encoding::Context) -> usize {
31438 8
31439 }
31440
31441 #[inline(always)]
31442 fn inline_size(_context: fidl::encoding::Context) -> usize {
31443 16
31444 }
31445 }
31446
31447 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ThreadHistoryReport, D>
31448 for &ThreadHistoryReport
31449 {
31450 unsafe fn encode(
31451 self,
31452 encoder: &mut fidl::encoding::Encoder<'_, D>,
31453 offset: usize,
31454 mut depth: fidl::encoding::Depth,
31455 ) -> fidl::Result<()> {
31456 encoder.debug_check_bounds::<ThreadHistoryReport>(offset);
31457 let max_ordinal: u64 = self.max_ordinal_present();
31459 encoder.write_num(max_ordinal, offset);
31460 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
31461 if max_ordinal == 0 {
31463 return Ok(());
31464 }
31465 depth.increment()?;
31466 let envelope_size = 8;
31467 let bytes_len = max_ordinal as usize * envelope_size;
31468 #[allow(unused_variables)]
31469 let offset = encoder.out_of_line_offset(bytes_len);
31470 let mut _prev_end_offset: usize = 0;
31471 if 1 > max_ordinal {
31472 return Ok(());
31473 }
31474
31475 let cur_offset: usize = (1 - 1) * envelope_size;
31478
31479 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
31481
31482 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<ThreadNetworkInfoEntry, 32>, D>(
31487 self.net_info_history.as_ref().map(<fidl::encoding::Vector<ThreadNetworkInfoEntry, 32> as fidl::encoding::ValueTypeMarker>::borrow),
31488 encoder, offset + cur_offset, depth
31489 )?;
31490
31491 _prev_end_offset = cur_offset + envelope_size;
31492 if 2 > max_ordinal {
31493 return Ok(());
31494 }
31495
31496 let cur_offset: usize = (2 - 1) * envelope_size;
31499
31500 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
31502
31503 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<ThreadNeighborInfoEntry, 64>, D>(
31508 self.neighbor_info_history.as_ref().map(<fidl::encoding::Vector<ThreadNeighborInfoEntry, 64> as fidl::encoding::ValueTypeMarker>::borrow),
31509 encoder, offset + cur_offset, depth
31510 )?;
31511
31512 _prev_end_offset = cur_offset + envelope_size;
31513 if 3 > max_ordinal {
31514 return Ok(());
31515 }
31516
31517 let cur_offset: usize = (3 - 1) * envelope_size;
31520
31521 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
31523
31524 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<ThreadRouterInfoEntry, 256>, D>(
31529 self.router_info_history.as_ref().map(<fidl::encoding::Vector<ThreadRouterInfoEntry, 256> as fidl::encoding::ValueTypeMarker>::borrow),
31530 encoder, offset + cur_offset, depth
31531 )?;
31532
31533 _prev_end_offset = cur_offset + envelope_size;
31534 if 4 > max_ordinal {
31535 return Ok(());
31536 }
31537
31538 let cur_offset: usize = (4 - 1) * envelope_size;
31541
31542 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
31544
31545 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<ThreadNetDataPrefixInfoEntry, 32>, D>(
31550 self.prefix_info_history.as_ref().map(<fidl::encoding::Vector<ThreadNetDataPrefixInfoEntry, 32> as fidl::encoding::ValueTypeMarker>::borrow),
31551 encoder, offset + cur_offset, depth
31552 )?;
31553
31554 _prev_end_offset = cur_offset + envelope_size;
31555 if 5 > max_ordinal {
31556 return Ok(());
31557 }
31558
31559 let cur_offset: usize = (5 - 1) * envelope_size;
31562
31563 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
31565
31566 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<ThreadNetDataRouteInfoEntry, 32>, D>(
31571 self.route_info_history.as_ref().map(<fidl::encoding::Vector<ThreadNetDataRouteInfoEntry, 32> as fidl::encoding::ValueTypeMarker>::borrow),
31572 encoder, offset + cur_offset, depth
31573 )?;
31574
31575 _prev_end_offset = cur_offset + envelope_size;
31576
31577 Ok(())
31578 }
31579 }
31580
31581 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ThreadHistoryReport {
31582 #[inline(always)]
31583 fn new_empty() -> Self {
31584 Self::default()
31585 }
31586
31587 unsafe fn decode(
31588 &mut self,
31589 decoder: &mut fidl::encoding::Decoder<'_, D>,
31590 offset: usize,
31591 mut depth: fidl::encoding::Depth,
31592 ) -> fidl::Result<()> {
31593 decoder.debug_check_bounds::<Self>(offset);
31594 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
31595 None => return Err(fidl::Error::NotNullable),
31596 Some(len) => len,
31597 };
31598 if len == 0 {
31600 return Ok(());
31601 };
31602 depth.increment()?;
31603 let envelope_size = 8;
31604 let bytes_len = len * envelope_size;
31605 let offset = decoder.out_of_line_offset(bytes_len)?;
31606 let mut _next_ordinal_to_read = 0;
31608 let mut next_offset = offset;
31609 let end_offset = offset + bytes_len;
31610 _next_ordinal_to_read += 1;
31611 if next_offset >= end_offset {
31612 return Ok(());
31613 }
31614
31615 while _next_ordinal_to_read < 1 {
31617 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
31618 _next_ordinal_to_read += 1;
31619 next_offset += envelope_size;
31620 }
31621
31622 let next_out_of_line = decoder.next_out_of_line();
31623 let handles_before = decoder.remaining_handles();
31624 if let Some((inlined, num_bytes, num_handles)) =
31625 fidl::encoding::decode_envelope_header(decoder, next_offset)?
31626 {
31627 let member_inline_size = <fidl::encoding::Vector<ThreadNetworkInfoEntry, 32> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
31628 if inlined != (member_inline_size <= 4) {
31629 return Err(fidl::Error::InvalidInlineBitInEnvelope);
31630 }
31631 let inner_offset;
31632 let mut inner_depth = depth.clone();
31633 if inlined {
31634 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
31635 inner_offset = next_offset;
31636 } else {
31637 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
31638 inner_depth.increment()?;
31639 }
31640 let val_ref = self.net_info_history.get_or_insert_with(
31641 || fidl::new_empty!(fidl::encoding::Vector<ThreadNetworkInfoEntry, 32>, D),
31642 );
31643 fidl::decode!(fidl::encoding::Vector<ThreadNetworkInfoEntry, 32>, D, val_ref, decoder, inner_offset, inner_depth)?;
31644 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
31645 {
31646 return Err(fidl::Error::InvalidNumBytesInEnvelope);
31647 }
31648 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
31649 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
31650 }
31651 }
31652
31653 next_offset += envelope_size;
31654 _next_ordinal_to_read += 1;
31655 if next_offset >= end_offset {
31656 return Ok(());
31657 }
31658
31659 while _next_ordinal_to_read < 2 {
31661 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
31662 _next_ordinal_to_read += 1;
31663 next_offset += envelope_size;
31664 }
31665
31666 let next_out_of_line = decoder.next_out_of_line();
31667 let handles_before = decoder.remaining_handles();
31668 if let Some((inlined, num_bytes, num_handles)) =
31669 fidl::encoding::decode_envelope_header(decoder, next_offset)?
31670 {
31671 let member_inline_size = <fidl::encoding::Vector<ThreadNeighborInfoEntry, 64> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
31672 if inlined != (member_inline_size <= 4) {
31673 return Err(fidl::Error::InvalidInlineBitInEnvelope);
31674 }
31675 let inner_offset;
31676 let mut inner_depth = depth.clone();
31677 if inlined {
31678 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
31679 inner_offset = next_offset;
31680 } else {
31681 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
31682 inner_depth.increment()?;
31683 }
31684 let val_ref = self.neighbor_info_history.get_or_insert_with(
31685 || fidl::new_empty!(fidl::encoding::Vector<ThreadNeighborInfoEntry, 64>, D),
31686 );
31687 fidl::decode!(fidl::encoding::Vector<ThreadNeighborInfoEntry, 64>, D, val_ref, decoder, inner_offset, inner_depth)?;
31688 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
31689 {
31690 return Err(fidl::Error::InvalidNumBytesInEnvelope);
31691 }
31692 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
31693 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
31694 }
31695 }
31696
31697 next_offset += envelope_size;
31698 _next_ordinal_to_read += 1;
31699 if next_offset >= end_offset {
31700 return Ok(());
31701 }
31702
31703 while _next_ordinal_to_read < 3 {
31705 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
31706 _next_ordinal_to_read += 1;
31707 next_offset += envelope_size;
31708 }
31709
31710 let next_out_of_line = decoder.next_out_of_line();
31711 let handles_before = decoder.remaining_handles();
31712 if let Some((inlined, num_bytes, num_handles)) =
31713 fidl::encoding::decode_envelope_header(decoder, next_offset)?
31714 {
31715 let member_inline_size = <fidl::encoding::Vector<ThreadRouterInfoEntry, 256> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
31716 if inlined != (member_inline_size <= 4) {
31717 return Err(fidl::Error::InvalidInlineBitInEnvelope);
31718 }
31719 let inner_offset;
31720 let mut inner_depth = depth.clone();
31721 if inlined {
31722 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
31723 inner_offset = next_offset;
31724 } else {
31725 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
31726 inner_depth.increment()?;
31727 }
31728 let val_ref = self.router_info_history.get_or_insert_with(
31729 || fidl::new_empty!(fidl::encoding::Vector<ThreadRouterInfoEntry, 256>, D),
31730 );
31731 fidl::decode!(fidl::encoding::Vector<ThreadRouterInfoEntry, 256>, D, val_ref, decoder, inner_offset, inner_depth)?;
31732 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
31733 {
31734 return Err(fidl::Error::InvalidNumBytesInEnvelope);
31735 }
31736 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
31737 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
31738 }
31739 }
31740
31741 next_offset += envelope_size;
31742 _next_ordinal_to_read += 1;
31743 if next_offset >= end_offset {
31744 return Ok(());
31745 }
31746
31747 while _next_ordinal_to_read < 4 {
31749 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
31750 _next_ordinal_to_read += 1;
31751 next_offset += envelope_size;
31752 }
31753
31754 let next_out_of_line = decoder.next_out_of_line();
31755 let handles_before = decoder.remaining_handles();
31756 if let Some((inlined, num_bytes, num_handles)) =
31757 fidl::encoding::decode_envelope_header(decoder, next_offset)?
31758 {
31759 let member_inline_size = <fidl::encoding::Vector<ThreadNetDataPrefixInfoEntry, 32> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
31760 if inlined != (member_inline_size <= 4) {
31761 return Err(fidl::Error::InvalidInlineBitInEnvelope);
31762 }
31763 let inner_offset;
31764 let mut inner_depth = depth.clone();
31765 if inlined {
31766 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
31767 inner_offset = next_offset;
31768 } else {
31769 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
31770 inner_depth.increment()?;
31771 }
31772 let val_ref =
31773 self.prefix_info_history.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<ThreadNetDataPrefixInfoEntry, 32>, D));
31774 fidl::decode!(fidl::encoding::Vector<ThreadNetDataPrefixInfoEntry, 32>, D, val_ref, decoder, inner_offset, inner_depth)?;
31775 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
31776 {
31777 return Err(fidl::Error::InvalidNumBytesInEnvelope);
31778 }
31779 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
31780 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
31781 }
31782 }
31783
31784 next_offset += envelope_size;
31785 _next_ordinal_to_read += 1;
31786 if next_offset >= end_offset {
31787 return Ok(());
31788 }
31789
31790 while _next_ordinal_to_read < 5 {
31792 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
31793 _next_ordinal_to_read += 1;
31794 next_offset += envelope_size;
31795 }
31796
31797 let next_out_of_line = decoder.next_out_of_line();
31798 let handles_before = decoder.remaining_handles();
31799 if let Some((inlined, num_bytes, num_handles)) =
31800 fidl::encoding::decode_envelope_header(decoder, next_offset)?
31801 {
31802 let member_inline_size = <fidl::encoding::Vector<ThreadNetDataRouteInfoEntry, 32> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
31803 if inlined != (member_inline_size <= 4) {
31804 return Err(fidl::Error::InvalidInlineBitInEnvelope);
31805 }
31806 let inner_offset;
31807 let mut inner_depth = depth.clone();
31808 if inlined {
31809 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
31810 inner_offset = next_offset;
31811 } else {
31812 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
31813 inner_depth.increment()?;
31814 }
31815 let val_ref = self.route_info_history.get_or_insert_with(
31816 || fidl::new_empty!(fidl::encoding::Vector<ThreadNetDataRouteInfoEntry, 32>, D),
31817 );
31818 fidl::decode!(fidl::encoding::Vector<ThreadNetDataRouteInfoEntry, 32>, D, val_ref, decoder, inner_offset, inner_depth)?;
31819 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
31820 {
31821 return Err(fidl::Error::InvalidNumBytesInEnvelope);
31822 }
31823 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
31824 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
31825 }
31826 }
31827
31828 next_offset += envelope_size;
31829
31830 while next_offset < end_offset {
31832 _next_ordinal_to_read += 1;
31833 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
31834 next_offset += envelope_size;
31835 }
31836
31837 Ok(())
31838 }
31839 }
31840
31841 impl ThreadLinkMode {
31842 #[inline(always)]
31843 fn max_ordinal_present(&self) -> u64 {
31844 if let Some(_) = self.network_data {
31845 return 3;
31846 }
31847 if let Some(_) = self.device_type {
31848 return 2;
31849 }
31850 if let Some(_) = self.rx_on_when_idle {
31851 return 1;
31852 }
31853 0
31854 }
31855 }
31856
31857 impl fidl::encoding::ValueTypeMarker for ThreadLinkMode {
31858 type Borrowed<'a> = &'a Self;
31859 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
31860 value
31861 }
31862 }
31863
31864 unsafe impl fidl::encoding::TypeMarker for ThreadLinkMode {
31865 type Owned = Self;
31866
31867 #[inline(always)]
31868 fn inline_align(_context: fidl::encoding::Context) -> usize {
31869 8
31870 }
31871
31872 #[inline(always)]
31873 fn inline_size(_context: fidl::encoding::Context) -> usize {
31874 16
31875 }
31876 }
31877
31878 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ThreadLinkMode, D>
31879 for &ThreadLinkMode
31880 {
31881 unsafe fn encode(
31882 self,
31883 encoder: &mut fidl::encoding::Encoder<'_, D>,
31884 offset: usize,
31885 mut depth: fidl::encoding::Depth,
31886 ) -> fidl::Result<()> {
31887 encoder.debug_check_bounds::<ThreadLinkMode>(offset);
31888 let max_ordinal: u64 = self.max_ordinal_present();
31890 encoder.write_num(max_ordinal, offset);
31891 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
31892 if max_ordinal == 0 {
31894 return Ok(());
31895 }
31896 depth.increment()?;
31897 let envelope_size = 8;
31898 let bytes_len = max_ordinal as usize * envelope_size;
31899 #[allow(unused_variables)]
31900 let offset = encoder.out_of_line_offset(bytes_len);
31901 let mut _prev_end_offset: usize = 0;
31902 if 1 > max_ordinal {
31903 return Ok(());
31904 }
31905
31906 let cur_offset: usize = (1 - 1) * envelope_size;
31909
31910 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
31912
31913 fidl::encoding::encode_in_envelope_optional::<bool, D>(
31918 self.rx_on_when_idle
31919 .as_ref()
31920 .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
31921 encoder,
31922 offset + cur_offset,
31923 depth,
31924 )?;
31925
31926 _prev_end_offset = cur_offset + envelope_size;
31927 if 2 > max_ordinal {
31928 return Ok(());
31929 }
31930
31931 let cur_offset: usize = (2 - 1) * envelope_size;
31934
31935 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
31937
31938 fidl::encoding::encode_in_envelope_optional::<bool, D>(
31943 self.device_type.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
31944 encoder,
31945 offset + cur_offset,
31946 depth,
31947 )?;
31948
31949 _prev_end_offset = cur_offset + envelope_size;
31950 if 3 > max_ordinal {
31951 return Ok(());
31952 }
31953
31954 let cur_offset: usize = (3 - 1) * envelope_size;
31957
31958 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
31960
31961 fidl::encoding::encode_in_envelope_optional::<bool, D>(
31966 self.network_data.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
31967 encoder,
31968 offset + cur_offset,
31969 depth,
31970 )?;
31971
31972 _prev_end_offset = cur_offset + envelope_size;
31973
31974 Ok(())
31975 }
31976 }
31977
31978 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ThreadLinkMode {
31979 #[inline(always)]
31980 fn new_empty() -> Self {
31981 Self::default()
31982 }
31983
31984 unsafe fn decode(
31985 &mut self,
31986 decoder: &mut fidl::encoding::Decoder<'_, D>,
31987 offset: usize,
31988 mut depth: fidl::encoding::Depth,
31989 ) -> fidl::Result<()> {
31990 decoder.debug_check_bounds::<Self>(offset);
31991 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
31992 None => return Err(fidl::Error::NotNullable),
31993 Some(len) => len,
31994 };
31995 if len == 0 {
31997 return Ok(());
31998 };
31999 depth.increment()?;
32000 let envelope_size = 8;
32001 let bytes_len = len * envelope_size;
32002 let offset = decoder.out_of_line_offset(bytes_len)?;
32003 let mut _next_ordinal_to_read = 0;
32005 let mut next_offset = offset;
32006 let end_offset = offset + bytes_len;
32007 _next_ordinal_to_read += 1;
32008 if next_offset >= end_offset {
32009 return Ok(());
32010 }
32011
32012 while _next_ordinal_to_read < 1 {
32014 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
32015 _next_ordinal_to_read += 1;
32016 next_offset += envelope_size;
32017 }
32018
32019 let next_out_of_line = decoder.next_out_of_line();
32020 let handles_before = decoder.remaining_handles();
32021 if let Some((inlined, num_bytes, num_handles)) =
32022 fidl::encoding::decode_envelope_header(decoder, next_offset)?
32023 {
32024 let member_inline_size =
32025 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
32026 if inlined != (member_inline_size <= 4) {
32027 return Err(fidl::Error::InvalidInlineBitInEnvelope);
32028 }
32029 let inner_offset;
32030 let mut inner_depth = depth.clone();
32031 if inlined {
32032 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
32033 inner_offset = next_offset;
32034 } else {
32035 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
32036 inner_depth.increment()?;
32037 }
32038 let val_ref = self.rx_on_when_idle.get_or_insert_with(|| fidl::new_empty!(bool, D));
32039 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
32040 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
32041 {
32042 return Err(fidl::Error::InvalidNumBytesInEnvelope);
32043 }
32044 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
32045 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
32046 }
32047 }
32048
32049 next_offset += envelope_size;
32050 _next_ordinal_to_read += 1;
32051 if next_offset >= end_offset {
32052 return Ok(());
32053 }
32054
32055 while _next_ordinal_to_read < 2 {
32057 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
32058 _next_ordinal_to_read += 1;
32059 next_offset += envelope_size;
32060 }
32061
32062 let next_out_of_line = decoder.next_out_of_line();
32063 let handles_before = decoder.remaining_handles();
32064 if let Some((inlined, num_bytes, num_handles)) =
32065 fidl::encoding::decode_envelope_header(decoder, next_offset)?
32066 {
32067 let member_inline_size =
32068 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
32069 if inlined != (member_inline_size <= 4) {
32070 return Err(fidl::Error::InvalidInlineBitInEnvelope);
32071 }
32072 let inner_offset;
32073 let mut inner_depth = depth.clone();
32074 if inlined {
32075 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
32076 inner_offset = next_offset;
32077 } else {
32078 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
32079 inner_depth.increment()?;
32080 }
32081 let val_ref = self.device_type.get_or_insert_with(|| fidl::new_empty!(bool, D));
32082 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
32083 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
32084 {
32085 return Err(fidl::Error::InvalidNumBytesInEnvelope);
32086 }
32087 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
32088 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
32089 }
32090 }
32091
32092 next_offset += envelope_size;
32093 _next_ordinal_to_read += 1;
32094 if next_offset >= end_offset {
32095 return Ok(());
32096 }
32097
32098 while _next_ordinal_to_read < 3 {
32100 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
32101 _next_ordinal_to_read += 1;
32102 next_offset += envelope_size;
32103 }
32104
32105 let next_out_of_line = decoder.next_out_of_line();
32106 let handles_before = decoder.remaining_handles();
32107 if let Some((inlined, num_bytes, num_handles)) =
32108 fidl::encoding::decode_envelope_header(decoder, next_offset)?
32109 {
32110 let member_inline_size =
32111 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
32112 if inlined != (member_inline_size <= 4) {
32113 return Err(fidl::Error::InvalidInlineBitInEnvelope);
32114 }
32115 let inner_offset;
32116 let mut inner_depth = depth.clone();
32117 if inlined {
32118 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
32119 inner_offset = next_offset;
32120 } else {
32121 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
32122 inner_depth.increment()?;
32123 }
32124 let val_ref = self.network_data.get_or_insert_with(|| fidl::new_empty!(bool, D));
32125 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
32126 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
32127 {
32128 return Err(fidl::Error::InvalidNumBytesInEnvelope);
32129 }
32130 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
32131 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
32132 }
32133 }
32134
32135 next_offset += envelope_size;
32136
32137 while next_offset < end_offset {
32139 _next_ordinal_to_read += 1;
32140 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
32141 next_offset += envelope_size;
32142 }
32143
32144 Ok(())
32145 }
32146 }
32147
32148 impl ThreadNeighborInfoEntry {
32149 #[inline(always)]
32150 fn max_ordinal_present(&self) -> u64 {
32151 if let Some(_) = self.avg_rssi {
32152 return 7;
32153 }
32154 if let Some(_) = self.mode {
32155 return 6;
32156 }
32157 if let Some(_) = self.rloc16 {
32158 return 5;
32159 }
32160 if let Some(_) = self.extended_address {
32161 return 4;
32162 }
32163 if let Some(_) = self.event {
32164 return 3;
32165 }
32166 if let Some(_) = self.is_child {
32167 return 2;
32168 }
32169 if let Some(_) = self.age {
32170 return 1;
32171 }
32172 0
32173 }
32174 }
32175
32176 impl fidl::encoding::ValueTypeMarker for ThreadNeighborInfoEntry {
32177 type Borrowed<'a> = &'a Self;
32178 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
32179 value
32180 }
32181 }
32182
32183 unsafe impl fidl::encoding::TypeMarker for ThreadNeighborInfoEntry {
32184 type Owned = Self;
32185
32186 #[inline(always)]
32187 fn inline_align(_context: fidl::encoding::Context) -> usize {
32188 8
32189 }
32190
32191 #[inline(always)]
32192 fn inline_size(_context: fidl::encoding::Context) -> usize {
32193 16
32194 }
32195 }
32196
32197 unsafe impl<D: fidl::encoding::ResourceDialect>
32198 fidl::encoding::Encode<ThreadNeighborInfoEntry, D> for &ThreadNeighborInfoEntry
32199 {
32200 unsafe fn encode(
32201 self,
32202 encoder: &mut fidl::encoding::Encoder<'_, D>,
32203 offset: usize,
32204 mut depth: fidl::encoding::Depth,
32205 ) -> fidl::Result<()> {
32206 encoder.debug_check_bounds::<ThreadNeighborInfoEntry>(offset);
32207 let max_ordinal: u64 = self.max_ordinal_present();
32209 encoder.write_num(max_ordinal, offset);
32210 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
32211 if max_ordinal == 0 {
32213 return Ok(());
32214 }
32215 depth.increment()?;
32216 let envelope_size = 8;
32217 let bytes_len = max_ordinal as usize * envelope_size;
32218 #[allow(unused_variables)]
32219 let offset = encoder.out_of_line_offset(bytes_len);
32220 let mut _prev_end_offset: usize = 0;
32221 if 1 > max_ordinal {
32222 return Ok(());
32223 }
32224
32225 let cur_offset: usize = (1 - 1) * envelope_size;
32228
32229 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
32231
32232 fidl::encoding::encode_in_envelope_optional::<i64, D>(
32237 self.age.as_ref().map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
32238 encoder,
32239 offset + cur_offset,
32240 depth,
32241 )?;
32242
32243 _prev_end_offset = cur_offset + envelope_size;
32244 if 2 > max_ordinal {
32245 return Ok(());
32246 }
32247
32248 let cur_offset: usize = (2 - 1) * envelope_size;
32251
32252 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
32254
32255 fidl::encoding::encode_in_envelope_optional::<bool, D>(
32260 self.is_child.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
32261 encoder,
32262 offset + cur_offset,
32263 depth,
32264 )?;
32265
32266 _prev_end_offset = cur_offset + envelope_size;
32267 if 3 > max_ordinal {
32268 return Ok(());
32269 }
32270
32271 let cur_offset: usize = (3 - 1) * envelope_size;
32274
32275 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
32277
32278 fidl::encoding::encode_in_envelope_optional::<HistoryTrackerNeighborEvent, D>(
32283 self.event
32284 .as_ref()
32285 .map(<HistoryTrackerNeighborEvent as fidl::encoding::ValueTypeMarker>::borrow),
32286 encoder,
32287 offset + cur_offset,
32288 depth,
32289 )?;
32290
32291 _prev_end_offset = cur_offset + envelope_size;
32292 if 4 > max_ordinal {
32293 return Ok(());
32294 }
32295
32296 let cur_offset: usize = (4 - 1) * envelope_size;
32299
32300 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
32302
32303 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<u8, 8>, D>(
32308 self.extended_address.as_ref().map(
32309 <fidl::encoding::Vector<u8, 8> as fidl::encoding::ValueTypeMarker>::borrow,
32310 ),
32311 encoder,
32312 offset + cur_offset,
32313 depth,
32314 )?;
32315
32316 _prev_end_offset = cur_offset + envelope_size;
32317 if 5 > max_ordinal {
32318 return Ok(());
32319 }
32320
32321 let cur_offset: usize = (5 - 1) * envelope_size;
32324
32325 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
32327
32328 fidl::encoding::encode_in_envelope_optional::<u16, D>(
32333 self.rloc16.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
32334 encoder,
32335 offset + cur_offset,
32336 depth,
32337 )?;
32338
32339 _prev_end_offset = cur_offset + envelope_size;
32340 if 6 > max_ordinal {
32341 return Ok(());
32342 }
32343
32344 let cur_offset: usize = (6 - 1) * envelope_size;
32347
32348 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
32350
32351 fidl::encoding::encode_in_envelope_optional::<ThreadLinkMode, D>(
32356 self.mode.as_ref().map(<ThreadLinkMode as fidl::encoding::ValueTypeMarker>::borrow),
32357 encoder,
32358 offset + cur_offset,
32359 depth,
32360 )?;
32361
32362 _prev_end_offset = cur_offset + envelope_size;
32363 if 7 > max_ordinal {
32364 return Ok(());
32365 }
32366
32367 let cur_offset: usize = (7 - 1) * envelope_size;
32370
32371 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
32373
32374 fidl::encoding::encode_in_envelope_optional::<i32, D>(
32379 self.avg_rssi.as_ref().map(<i32 as fidl::encoding::ValueTypeMarker>::borrow),
32380 encoder,
32381 offset + cur_offset,
32382 depth,
32383 )?;
32384
32385 _prev_end_offset = cur_offset + envelope_size;
32386
32387 Ok(())
32388 }
32389 }
32390
32391 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
32392 for ThreadNeighborInfoEntry
32393 {
32394 #[inline(always)]
32395 fn new_empty() -> Self {
32396 Self::default()
32397 }
32398
32399 unsafe fn decode(
32400 &mut self,
32401 decoder: &mut fidl::encoding::Decoder<'_, D>,
32402 offset: usize,
32403 mut depth: fidl::encoding::Depth,
32404 ) -> fidl::Result<()> {
32405 decoder.debug_check_bounds::<Self>(offset);
32406 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
32407 None => return Err(fidl::Error::NotNullable),
32408 Some(len) => len,
32409 };
32410 if len == 0 {
32412 return Ok(());
32413 };
32414 depth.increment()?;
32415 let envelope_size = 8;
32416 let bytes_len = len * envelope_size;
32417 let offset = decoder.out_of_line_offset(bytes_len)?;
32418 let mut _next_ordinal_to_read = 0;
32420 let mut next_offset = offset;
32421 let end_offset = offset + bytes_len;
32422 _next_ordinal_to_read += 1;
32423 if next_offset >= end_offset {
32424 return Ok(());
32425 }
32426
32427 while _next_ordinal_to_read < 1 {
32429 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
32430 _next_ordinal_to_read += 1;
32431 next_offset += envelope_size;
32432 }
32433
32434 let next_out_of_line = decoder.next_out_of_line();
32435 let handles_before = decoder.remaining_handles();
32436 if let Some((inlined, num_bytes, num_handles)) =
32437 fidl::encoding::decode_envelope_header(decoder, next_offset)?
32438 {
32439 let member_inline_size =
32440 <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
32441 if inlined != (member_inline_size <= 4) {
32442 return Err(fidl::Error::InvalidInlineBitInEnvelope);
32443 }
32444 let inner_offset;
32445 let mut inner_depth = depth.clone();
32446 if inlined {
32447 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
32448 inner_offset = next_offset;
32449 } else {
32450 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
32451 inner_depth.increment()?;
32452 }
32453 let val_ref = self.age.get_or_insert_with(|| fidl::new_empty!(i64, D));
32454 fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
32455 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
32456 {
32457 return Err(fidl::Error::InvalidNumBytesInEnvelope);
32458 }
32459 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
32460 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
32461 }
32462 }
32463
32464 next_offset += envelope_size;
32465 _next_ordinal_to_read += 1;
32466 if next_offset >= end_offset {
32467 return Ok(());
32468 }
32469
32470 while _next_ordinal_to_read < 2 {
32472 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
32473 _next_ordinal_to_read += 1;
32474 next_offset += envelope_size;
32475 }
32476
32477 let next_out_of_line = decoder.next_out_of_line();
32478 let handles_before = decoder.remaining_handles();
32479 if let Some((inlined, num_bytes, num_handles)) =
32480 fidl::encoding::decode_envelope_header(decoder, next_offset)?
32481 {
32482 let member_inline_size =
32483 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
32484 if inlined != (member_inline_size <= 4) {
32485 return Err(fidl::Error::InvalidInlineBitInEnvelope);
32486 }
32487 let inner_offset;
32488 let mut inner_depth = depth.clone();
32489 if inlined {
32490 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
32491 inner_offset = next_offset;
32492 } else {
32493 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
32494 inner_depth.increment()?;
32495 }
32496 let val_ref = self.is_child.get_or_insert_with(|| fidl::new_empty!(bool, D));
32497 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
32498 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
32499 {
32500 return Err(fidl::Error::InvalidNumBytesInEnvelope);
32501 }
32502 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
32503 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
32504 }
32505 }
32506
32507 next_offset += envelope_size;
32508 _next_ordinal_to_read += 1;
32509 if next_offset >= end_offset {
32510 return Ok(());
32511 }
32512
32513 while _next_ordinal_to_read < 3 {
32515 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
32516 _next_ordinal_to_read += 1;
32517 next_offset += envelope_size;
32518 }
32519
32520 let next_out_of_line = decoder.next_out_of_line();
32521 let handles_before = decoder.remaining_handles();
32522 if let Some((inlined, num_bytes, num_handles)) =
32523 fidl::encoding::decode_envelope_header(decoder, next_offset)?
32524 {
32525 let member_inline_size =
32526 <HistoryTrackerNeighborEvent as fidl::encoding::TypeMarker>::inline_size(
32527 decoder.context,
32528 );
32529 if inlined != (member_inline_size <= 4) {
32530 return Err(fidl::Error::InvalidInlineBitInEnvelope);
32531 }
32532 let inner_offset;
32533 let mut inner_depth = depth.clone();
32534 if inlined {
32535 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
32536 inner_offset = next_offset;
32537 } else {
32538 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
32539 inner_depth.increment()?;
32540 }
32541 let val_ref = self
32542 .event
32543 .get_or_insert_with(|| fidl::new_empty!(HistoryTrackerNeighborEvent, D));
32544 fidl::decode!(
32545 HistoryTrackerNeighborEvent,
32546 D,
32547 val_ref,
32548 decoder,
32549 inner_offset,
32550 inner_depth
32551 )?;
32552 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
32553 {
32554 return Err(fidl::Error::InvalidNumBytesInEnvelope);
32555 }
32556 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
32557 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
32558 }
32559 }
32560
32561 next_offset += envelope_size;
32562 _next_ordinal_to_read += 1;
32563 if next_offset >= end_offset {
32564 return Ok(());
32565 }
32566
32567 while _next_ordinal_to_read < 4 {
32569 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
32570 _next_ordinal_to_read += 1;
32571 next_offset += envelope_size;
32572 }
32573
32574 let next_out_of_line = decoder.next_out_of_line();
32575 let handles_before = decoder.remaining_handles();
32576 if let Some((inlined, num_bytes, num_handles)) =
32577 fidl::encoding::decode_envelope_header(decoder, next_offset)?
32578 {
32579 let member_inline_size =
32580 <fidl::encoding::Vector<u8, 8> as fidl::encoding::TypeMarker>::inline_size(
32581 decoder.context,
32582 );
32583 if inlined != (member_inline_size <= 4) {
32584 return Err(fidl::Error::InvalidInlineBitInEnvelope);
32585 }
32586 let inner_offset;
32587 let mut inner_depth = depth.clone();
32588 if inlined {
32589 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
32590 inner_offset = next_offset;
32591 } else {
32592 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
32593 inner_depth.increment()?;
32594 }
32595 let val_ref = self
32596 .extended_address
32597 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u8, 8>, D));
32598 fidl::decode!(fidl::encoding::Vector<u8, 8>, D, val_ref, decoder, inner_offset, inner_depth)?;
32599 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
32600 {
32601 return Err(fidl::Error::InvalidNumBytesInEnvelope);
32602 }
32603 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
32604 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
32605 }
32606 }
32607
32608 next_offset += envelope_size;
32609 _next_ordinal_to_read += 1;
32610 if next_offset >= end_offset {
32611 return Ok(());
32612 }
32613
32614 while _next_ordinal_to_read < 5 {
32616 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
32617 _next_ordinal_to_read += 1;
32618 next_offset += envelope_size;
32619 }
32620
32621 let next_out_of_line = decoder.next_out_of_line();
32622 let handles_before = decoder.remaining_handles();
32623 if let Some((inlined, num_bytes, num_handles)) =
32624 fidl::encoding::decode_envelope_header(decoder, next_offset)?
32625 {
32626 let member_inline_size =
32627 <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
32628 if inlined != (member_inline_size <= 4) {
32629 return Err(fidl::Error::InvalidInlineBitInEnvelope);
32630 }
32631 let inner_offset;
32632 let mut inner_depth = depth.clone();
32633 if inlined {
32634 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
32635 inner_offset = next_offset;
32636 } else {
32637 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
32638 inner_depth.increment()?;
32639 }
32640 let val_ref = self.rloc16.get_or_insert_with(|| fidl::new_empty!(u16, D));
32641 fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
32642 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
32643 {
32644 return Err(fidl::Error::InvalidNumBytesInEnvelope);
32645 }
32646 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
32647 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
32648 }
32649 }
32650
32651 next_offset += envelope_size;
32652 _next_ordinal_to_read += 1;
32653 if next_offset >= end_offset {
32654 return Ok(());
32655 }
32656
32657 while _next_ordinal_to_read < 6 {
32659 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
32660 _next_ordinal_to_read += 1;
32661 next_offset += envelope_size;
32662 }
32663
32664 let next_out_of_line = decoder.next_out_of_line();
32665 let handles_before = decoder.remaining_handles();
32666 if let Some((inlined, num_bytes, num_handles)) =
32667 fidl::encoding::decode_envelope_header(decoder, next_offset)?
32668 {
32669 let member_inline_size =
32670 <ThreadLinkMode as fidl::encoding::TypeMarker>::inline_size(decoder.context);
32671 if inlined != (member_inline_size <= 4) {
32672 return Err(fidl::Error::InvalidInlineBitInEnvelope);
32673 }
32674 let inner_offset;
32675 let mut inner_depth = depth.clone();
32676 if inlined {
32677 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
32678 inner_offset = next_offset;
32679 } else {
32680 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
32681 inner_depth.increment()?;
32682 }
32683 let val_ref = self.mode.get_or_insert_with(|| fidl::new_empty!(ThreadLinkMode, D));
32684 fidl::decode!(ThreadLinkMode, D, val_ref, decoder, inner_offset, inner_depth)?;
32685 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
32686 {
32687 return Err(fidl::Error::InvalidNumBytesInEnvelope);
32688 }
32689 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
32690 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
32691 }
32692 }
32693
32694 next_offset += envelope_size;
32695 _next_ordinal_to_read += 1;
32696 if next_offset >= end_offset {
32697 return Ok(());
32698 }
32699
32700 while _next_ordinal_to_read < 7 {
32702 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
32703 _next_ordinal_to_read += 1;
32704 next_offset += envelope_size;
32705 }
32706
32707 let next_out_of_line = decoder.next_out_of_line();
32708 let handles_before = decoder.remaining_handles();
32709 if let Some((inlined, num_bytes, num_handles)) =
32710 fidl::encoding::decode_envelope_header(decoder, next_offset)?
32711 {
32712 let member_inline_size =
32713 <i32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
32714 if inlined != (member_inline_size <= 4) {
32715 return Err(fidl::Error::InvalidInlineBitInEnvelope);
32716 }
32717 let inner_offset;
32718 let mut inner_depth = depth.clone();
32719 if inlined {
32720 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
32721 inner_offset = next_offset;
32722 } else {
32723 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
32724 inner_depth.increment()?;
32725 }
32726 let val_ref = self.avg_rssi.get_or_insert_with(|| fidl::new_empty!(i32, D));
32727 fidl::decode!(i32, D, val_ref, decoder, inner_offset, inner_depth)?;
32728 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
32729 {
32730 return Err(fidl::Error::InvalidNumBytesInEnvelope);
32731 }
32732 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
32733 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
32734 }
32735 }
32736
32737 next_offset += envelope_size;
32738
32739 while next_offset < end_offset {
32741 _next_ordinal_to_read += 1;
32742 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
32743 next_offset += envelope_size;
32744 }
32745
32746 Ok(())
32747 }
32748 }
32749
32750 impl ThreadNetDataPrefixInfoEntry {
32751 #[inline(always)]
32752 fn max_ordinal_present(&self) -> u64 {
32753 if let Some(_) = self.on_mesh_prefix {
32754 return 3;
32755 }
32756 if let Some(_) = self.event {
32757 return 2;
32758 }
32759 if let Some(_) = self.age {
32760 return 1;
32761 }
32762 0
32763 }
32764 }
32765
32766 impl fidl::encoding::ValueTypeMarker for ThreadNetDataPrefixInfoEntry {
32767 type Borrowed<'a> = &'a Self;
32768 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
32769 value
32770 }
32771 }
32772
32773 unsafe impl fidl::encoding::TypeMarker for ThreadNetDataPrefixInfoEntry {
32774 type Owned = Self;
32775
32776 #[inline(always)]
32777 fn inline_align(_context: fidl::encoding::Context) -> usize {
32778 8
32779 }
32780
32781 #[inline(always)]
32782 fn inline_size(_context: fidl::encoding::Context) -> usize {
32783 16
32784 }
32785 }
32786
32787 unsafe impl<D: fidl::encoding::ResourceDialect>
32788 fidl::encoding::Encode<ThreadNetDataPrefixInfoEntry, D> for &ThreadNetDataPrefixInfoEntry
32789 {
32790 unsafe fn encode(
32791 self,
32792 encoder: &mut fidl::encoding::Encoder<'_, D>,
32793 offset: usize,
32794 mut depth: fidl::encoding::Depth,
32795 ) -> fidl::Result<()> {
32796 encoder.debug_check_bounds::<ThreadNetDataPrefixInfoEntry>(offset);
32797 let max_ordinal: u64 = self.max_ordinal_present();
32799 encoder.write_num(max_ordinal, offset);
32800 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
32801 if max_ordinal == 0 {
32803 return Ok(());
32804 }
32805 depth.increment()?;
32806 let envelope_size = 8;
32807 let bytes_len = max_ordinal as usize * envelope_size;
32808 #[allow(unused_variables)]
32809 let offset = encoder.out_of_line_offset(bytes_len);
32810 let mut _prev_end_offset: usize = 0;
32811 if 1 > max_ordinal {
32812 return Ok(());
32813 }
32814
32815 let cur_offset: usize = (1 - 1) * envelope_size;
32818
32819 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
32821
32822 fidl::encoding::encode_in_envelope_optional::<i64, D>(
32827 self.age.as_ref().map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
32828 encoder,
32829 offset + cur_offset,
32830 depth,
32831 )?;
32832
32833 _prev_end_offset = cur_offset + envelope_size;
32834 if 2 > max_ordinal {
32835 return Ok(());
32836 }
32837
32838 let cur_offset: usize = (2 - 1) * envelope_size;
32841
32842 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
32844
32845 fidl::encoding::encode_in_envelope_optional::<HistoryTrackerNetDataEvent, D>(
32850 self.event
32851 .as_ref()
32852 .map(<HistoryTrackerNetDataEvent as fidl::encoding::ValueTypeMarker>::borrow),
32853 encoder,
32854 offset + cur_offset,
32855 depth,
32856 )?;
32857
32858 _prev_end_offset = cur_offset + envelope_size;
32859 if 3 > max_ordinal {
32860 return Ok(());
32861 }
32862
32863 let cur_offset: usize = (3 - 1) * envelope_size;
32866
32867 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
32869
32870 fidl::encoding::encode_in_envelope_optional::<BorderRouterConfig, D>(
32875 self.on_mesh_prefix
32876 .as_ref()
32877 .map(<BorderRouterConfig as fidl::encoding::ValueTypeMarker>::borrow),
32878 encoder,
32879 offset + cur_offset,
32880 depth,
32881 )?;
32882
32883 _prev_end_offset = cur_offset + envelope_size;
32884
32885 Ok(())
32886 }
32887 }
32888
32889 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
32890 for ThreadNetDataPrefixInfoEntry
32891 {
32892 #[inline(always)]
32893 fn new_empty() -> Self {
32894 Self::default()
32895 }
32896
32897 unsafe fn decode(
32898 &mut self,
32899 decoder: &mut fidl::encoding::Decoder<'_, D>,
32900 offset: usize,
32901 mut depth: fidl::encoding::Depth,
32902 ) -> fidl::Result<()> {
32903 decoder.debug_check_bounds::<Self>(offset);
32904 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
32905 None => return Err(fidl::Error::NotNullable),
32906 Some(len) => len,
32907 };
32908 if len == 0 {
32910 return Ok(());
32911 };
32912 depth.increment()?;
32913 let envelope_size = 8;
32914 let bytes_len = len * envelope_size;
32915 let offset = decoder.out_of_line_offset(bytes_len)?;
32916 let mut _next_ordinal_to_read = 0;
32918 let mut next_offset = offset;
32919 let end_offset = offset + bytes_len;
32920 _next_ordinal_to_read += 1;
32921 if next_offset >= end_offset {
32922 return Ok(());
32923 }
32924
32925 while _next_ordinal_to_read < 1 {
32927 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
32928 _next_ordinal_to_read += 1;
32929 next_offset += envelope_size;
32930 }
32931
32932 let next_out_of_line = decoder.next_out_of_line();
32933 let handles_before = decoder.remaining_handles();
32934 if let Some((inlined, num_bytes, num_handles)) =
32935 fidl::encoding::decode_envelope_header(decoder, next_offset)?
32936 {
32937 let member_inline_size =
32938 <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
32939 if inlined != (member_inline_size <= 4) {
32940 return Err(fidl::Error::InvalidInlineBitInEnvelope);
32941 }
32942 let inner_offset;
32943 let mut inner_depth = depth.clone();
32944 if inlined {
32945 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
32946 inner_offset = next_offset;
32947 } else {
32948 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
32949 inner_depth.increment()?;
32950 }
32951 let val_ref = self.age.get_or_insert_with(|| fidl::new_empty!(i64, D));
32952 fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
32953 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
32954 {
32955 return Err(fidl::Error::InvalidNumBytesInEnvelope);
32956 }
32957 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
32958 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
32959 }
32960 }
32961
32962 next_offset += envelope_size;
32963 _next_ordinal_to_read += 1;
32964 if next_offset >= end_offset {
32965 return Ok(());
32966 }
32967
32968 while _next_ordinal_to_read < 2 {
32970 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
32971 _next_ordinal_to_read += 1;
32972 next_offset += envelope_size;
32973 }
32974
32975 let next_out_of_line = decoder.next_out_of_line();
32976 let handles_before = decoder.remaining_handles();
32977 if let Some((inlined, num_bytes, num_handles)) =
32978 fidl::encoding::decode_envelope_header(decoder, next_offset)?
32979 {
32980 let member_inline_size =
32981 <HistoryTrackerNetDataEvent as fidl::encoding::TypeMarker>::inline_size(
32982 decoder.context,
32983 );
32984 if inlined != (member_inline_size <= 4) {
32985 return Err(fidl::Error::InvalidInlineBitInEnvelope);
32986 }
32987 let inner_offset;
32988 let mut inner_depth = depth.clone();
32989 if inlined {
32990 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
32991 inner_offset = next_offset;
32992 } else {
32993 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
32994 inner_depth.increment()?;
32995 }
32996 let val_ref = self
32997 .event
32998 .get_or_insert_with(|| fidl::new_empty!(HistoryTrackerNetDataEvent, D));
32999 fidl::decode!(
33000 HistoryTrackerNetDataEvent,
33001 D,
33002 val_ref,
33003 decoder,
33004 inner_offset,
33005 inner_depth
33006 )?;
33007 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
33008 {
33009 return Err(fidl::Error::InvalidNumBytesInEnvelope);
33010 }
33011 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
33012 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
33013 }
33014 }
33015
33016 next_offset += envelope_size;
33017 _next_ordinal_to_read += 1;
33018 if next_offset >= end_offset {
33019 return Ok(());
33020 }
33021
33022 while _next_ordinal_to_read < 3 {
33024 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
33025 _next_ordinal_to_read += 1;
33026 next_offset += envelope_size;
33027 }
33028
33029 let next_out_of_line = decoder.next_out_of_line();
33030 let handles_before = decoder.remaining_handles();
33031 if let Some((inlined, num_bytes, num_handles)) =
33032 fidl::encoding::decode_envelope_header(decoder, next_offset)?
33033 {
33034 let member_inline_size =
33035 <BorderRouterConfig as fidl::encoding::TypeMarker>::inline_size(
33036 decoder.context,
33037 );
33038 if inlined != (member_inline_size <= 4) {
33039 return Err(fidl::Error::InvalidInlineBitInEnvelope);
33040 }
33041 let inner_offset;
33042 let mut inner_depth = depth.clone();
33043 if inlined {
33044 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
33045 inner_offset = next_offset;
33046 } else {
33047 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
33048 inner_depth.increment()?;
33049 }
33050 let val_ref = self
33051 .on_mesh_prefix
33052 .get_or_insert_with(|| fidl::new_empty!(BorderRouterConfig, D));
33053 fidl::decode!(BorderRouterConfig, D, val_ref, decoder, inner_offset, inner_depth)?;
33054 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
33055 {
33056 return Err(fidl::Error::InvalidNumBytesInEnvelope);
33057 }
33058 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
33059 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
33060 }
33061 }
33062
33063 next_offset += envelope_size;
33064
33065 while next_offset < end_offset {
33067 _next_ordinal_to_read += 1;
33068 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
33069 next_offset += envelope_size;
33070 }
33071
33072 Ok(())
33073 }
33074 }
33075
33076 impl ThreadNetDataRouteInfoEntry {
33077 #[inline(always)]
33078 fn max_ordinal_present(&self) -> u64 {
33079 if let Some(_) = self.external_route {
33080 return 3;
33081 }
33082 if let Some(_) = self.event {
33083 return 2;
33084 }
33085 if let Some(_) = self.age {
33086 return 1;
33087 }
33088 0
33089 }
33090 }
33091
33092 impl fidl::encoding::ValueTypeMarker for ThreadNetDataRouteInfoEntry {
33093 type Borrowed<'a> = &'a Self;
33094 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
33095 value
33096 }
33097 }
33098
33099 unsafe impl fidl::encoding::TypeMarker for ThreadNetDataRouteInfoEntry {
33100 type Owned = Self;
33101
33102 #[inline(always)]
33103 fn inline_align(_context: fidl::encoding::Context) -> usize {
33104 8
33105 }
33106
33107 #[inline(always)]
33108 fn inline_size(_context: fidl::encoding::Context) -> usize {
33109 16
33110 }
33111 }
33112
33113 unsafe impl<D: fidl::encoding::ResourceDialect>
33114 fidl::encoding::Encode<ThreadNetDataRouteInfoEntry, D> for &ThreadNetDataRouteInfoEntry
33115 {
33116 unsafe fn encode(
33117 self,
33118 encoder: &mut fidl::encoding::Encoder<'_, D>,
33119 offset: usize,
33120 mut depth: fidl::encoding::Depth,
33121 ) -> fidl::Result<()> {
33122 encoder.debug_check_bounds::<ThreadNetDataRouteInfoEntry>(offset);
33123 let max_ordinal: u64 = self.max_ordinal_present();
33125 encoder.write_num(max_ordinal, offset);
33126 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
33127 if max_ordinal == 0 {
33129 return Ok(());
33130 }
33131 depth.increment()?;
33132 let envelope_size = 8;
33133 let bytes_len = max_ordinal as usize * envelope_size;
33134 #[allow(unused_variables)]
33135 let offset = encoder.out_of_line_offset(bytes_len);
33136 let mut _prev_end_offset: usize = 0;
33137 if 1 > max_ordinal {
33138 return Ok(());
33139 }
33140
33141 let cur_offset: usize = (1 - 1) * envelope_size;
33144
33145 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
33147
33148 fidl::encoding::encode_in_envelope_optional::<i64, D>(
33153 self.age.as_ref().map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
33154 encoder,
33155 offset + cur_offset,
33156 depth,
33157 )?;
33158
33159 _prev_end_offset = cur_offset + envelope_size;
33160 if 2 > max_ordinal {
33161 return Ok(());
33162 }
33163
33164 let cur_offset: usize = (2 - 1) * envelope_size;
33167
33168 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
33170
33171 fidl::encoding::encode_in_envelope_optional::<HistoryTrackerNetDataEvent, D>(
33176 self.event
33177 .as_ref()
33178 .map(<HistoryTrackerNetDataEvent as fidl::encoding::ValueTypeMarker>::borrow),
33179 encoder,
33180 offset + cur_offset,
33181 depth,
33182 )?;
33183
33184 _prev_end_offset = cur_offset + envelope_size;
33185 if 3 > max_ordinal {
33186 return Ok(());
33187 }
33188
33189 let cur_offset: usize = (3 - 1) * envelope_size;
33192
33193 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
33195
33196 fidl::encoding::encode_in_envelope_optional::<ExternalRouteConfig, D>(
33201 self.external_route
33202 .as_ref()
33203 .map(<ExternalRouteConfig as fidl::encoding::ValueTypeMarker>::borrow),
33204 encoder,
33205 offset + cur_offset,
33206 depth,
33207 )?;
33208
33209 _prev_end_offset = cur_offset + envelope_size;
33210
33211 Ok(())
33212 }
33213 }
33214
33215 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
33216 for ThreadNetDataRouteInfoEntry
33217 {
33218 #[inline(always)]
33219 fn new_empty() -> Self {
33220 Self::default()
33221 }
33222
33223 unsafe fn decode(
33224 &mut self,
33225 decoder: &mut fidl::encoding::Decoder<'_, D>,
33226 offset: usize,
33227 mut depth: fidl::encoding::Depth,
33228 ) -> fidl::Result<()> {
33229 decoder.debug_check_bounds::<Self>(offset);
33230 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
33231 None => return Err(fidl::Error::NotNullable),
33232 Some(len) => len,
33233 };
33234 if len == 0 {
33236 return Ok(());
33237 };
33238 depth.increment()?;
33239 let envelope_size = 8;
33240 let bytes_len = len * envelope_size;
33241 let offset = decoder.out_of_line_offset(bytes_len)?;
33242 let mut _next_ordinal_to_read = 0;
33244 let mut next_offset = offset;
33245 let end_offset = offset + bytes_len;
33246 _next_ordinal_to_read += 1;
33247 if next_offset >= end_offset {
33248 return Ok(());
33249 }
33250
33251 while _next_ordinal_to_read < 1 {
33253 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
33254 _next_ordinal_to_read += 1;
33255 next_offset += envelope_size;
33256 }
33257
33258 let next_out_of_line = decoder.next_out_of_line();
33259 let handles_before = decoder.remaining_handles();
33260 if let Some((inlined, num_bytes, num_handles)) =
33261 fidl::encoding::decode_envelope_header(decoder, next_offset)?
33262 {
33263 let member_inline_size =
33264 <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
33265 if inlined != (member_inline_size <= 4) {
33266 return Err(fidl::Error::InvalidInlineBitInEnvelope);
33267 }
33268 let inner_offset;
33269 let mut inner_depth = depth.clone();
33270 if inlined {
33271 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
33272 inner_offset = next_offset;
33273 } else {
33274 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
33275 inner_depth.increment()?;
33276 }
33277 let val_ref = self.age.get_or_insert_with(|| fidl::new_empty!(i64, D));
33278 fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
33279 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
33280 {
33281 return Err(fidl::Error::InvalidNumBytesInEnvelope);
33282 }
33283 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
33284 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
33285 }
33286 }
33287
33288 next_offset += envelope_size;
33289 _next_ordinal_to_read += 1;
33290 if next_offset >= end_offset {
33291 return Ok(());
33292 }
33293
33294 while _next_ordinal_to_read < 2 {
33296 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
33297 _next_ordinal_to_read += 1;
33298 next_offset += envelope_size;
33299 }
33300
33301 let next_out_of_line = decoder.next_out_of_line();
33302 let handles_before = decoder.remaining_handles();
33303 if let Some((inlined, num_bytes, num_handles)) =
33304 fidl::encoding::decode_envelope_header(decoder, next_offset)?
33305 {
33306 let member_inline_size =
33307 <HistoryTrackerNetDataEvent as fidl::encoding::TypeMarker>::inline_size(
33308 decoder.context,
33309 );
33310 if inlined != (member_inline_size <= 4) {
33311 return Err(fidl::Error::InvalidInlineBitInEnvelope);
33312 }
33313 let inner_offset;
33314 let mut inner_depth = depth.clone();
33315 if inlined {
33316 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
33317 inner_offset = next_offset;
33318 } else {
33319 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
33320 inner_depth.increment()?;
33321 }
33322 let val_ref = self
33323 .event
33324 .get_or_insert_with(|| fidl::new_empty!(HistoryTrackerNetDataEvent, D));
33325 fidl::decode!(
33326 HistoryTrackerNetDataEvent,
33327 D,
33328 val_ref,
33329 decoder,
33330 inner_offset,
33331 inner_depth
33332 )?;
33333 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
33334 {
33335 return Err(fidl::Error::InvalidNumBytesInEnvelope);
33336 }
33337 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
33338 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
33339 }
33340 }
33341
33342 next_offset += envelope_size;
33343 _next_ordinal_to_read += 1;
33344 if next_offset >= end_offset {
33345 return Ok(());
33346 }
33347
33348 while _next_ordinal_to_read < 3 {
33350 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
33351 _next_ordinal_to_read += 1;
33352 next_offset += envelope_size;
33353 }
33354
33355 let next_out_of_line = decoder.next_out_of_line();
33356 let handles_before = decoder.remaining_handles();
33357 if let Some((inlined, num_bytes, num_handles)) =
33358 fidl::encoding::decode_envelope_header(decoder, next_offset)?
33359 {
33360 let member_inline_size =
33361 <ExternalRouteConfig as fidl::encoding::TypeMarker>::inline_size(
33362 decoder.context,
33363 );
33364 if inlined != (member_inline_size <= 4) {
33365 return Err(fidl::Error::InvalidInlineBitInEnvelope);
33366 }
33367 let inner_offset;
33368 let mut inner_depth = depth.clone();
33369 if inlined {
33370 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
33371 inner_offset = next_offset;
33372 } else {
33373 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
33374 inner_depth.increment()?;
33375 }
33376 let val_ref = self
33377 .external_route
33378 .get_or_insert_with(|| fidl::new_empty!(ExternalRouteConfig, D));
33379 fidl::decode!(ExternalRouteConfig, D, val_ref, decoder, inner_offset, inner_depth)?;
33380 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
33381 {
33382 return Err(fidl::Error::InvalidNumBytesInEnvelope);
33383 }
33384 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
33385 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
33386 }
33387 }
33388
33389 next_offset += envelope_size;
33390
33391 while next_offset < end_offset {
33393 _next_ordinal_to_read += 1;
33394 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
33395 next_offset += envelope_size;
33396 }
33397
33398 Ok(())
33399 }
33400 }
33401
33402 impl ThreadNetworkInfoEntry {
33403 #[inline(always)]
33404 fn max_ordinal_present(&self) -> u64 {
33405 if let Some(_) = self.partition_id {
33406 return 5;
33407 }
33408 if let Some(_) = self.rloc16 {
33409 return 4;
33410 }
33411 if let Some(_) = self.mode {
33412 return 3;
33413 }
33414 if let Some(_) = self.role {
33415 return 2;
33416 }
33417 if let Some(_) = self.age {
33418 return 1;
33419 }
33420 0
33421 }
33422 }
33423
33424 impl fidl::encoding::ValueTypeMarker for ThreadNetworkInfoEntry {
33425 type Borrowed<'a> = &'a Self;
33426 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
33427 value
33428 }
33429 }
33430
33431 unsafe impl fidl::encoding::TypeMarker for ThreadNetworkInfoEntry {
33432 type Owned = Self;
33433
33434 #[inline(always)]
33435 fn inline_align(_context: fidl::encoding::Context) -> usize {
33436 8
33437 }
33438
33439 #[inline(always)]
33440 fn inline_size(_context: fidl::encoding::Context) -> usize {
33441 16
33442 }
33443 }
33444
33445 unsafe impl<D: fidl::encoding::ResourceDialect>
33446 fidl::encoding::Encode<ThreadNetworkInfoEntry, D> for &ThreadNetworkInfoEntry
33447 {
33448 unsafe fn encode(
33449 self,
33450 encoder: &mut fidl::encoding::Encoder<'_, D>,
33451 offset: usize,
33452 mut depth: fidl::encoding::Depth,
33453 ) -> fidl::Result<()> {
33454 encoder.debug_check_bounds::<ThreadNetworkInfoEntry>(offset);
33455 let max_ordinal: u64 = self.max_ordinal_present();
33457 encoder.write_num(max_ordinal, offset);
33458 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
33459 if max_ordinal == 0 {
33461 return Ok(());
33462 }
33463 depth.increment()?;
33464 let envelope_size = 8;
33465 let bytes_len = max_ordinal as usize * envelope_size;
33466 #[allow(unused_variables)]
33467 let offset = encoder.out_of_line_offset(bytes_len);
33468 let mut _prev_end_offset: usize = 0;
33469 if 1 > max_ordinal {
33470 return Ok(());
33471 }
33472
33473 let cur_offset: usize = (1 - 1) * envelope_size;
33476
33477 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
33479
33480 fidl::encoding::encode_in_envelope_optional::<i64, D>(
33485 self.age.as_ref().map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
33486 encoder,
33487 offset + cur_offset,
33488 depth,
33489 )?;
33490
33491 _prev_end_offset = cur_offset + envelope_size;
33492 if 2 > max_ordinal {
33493 return Ok(());
33494 }
33495
33496 let cur_offset: usize = (2 - 1) * envelope_size;
33499
33500 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
33502
33503 fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_lowpan_device_common::Role, D>(
33508 self.role.as_ref().map(<fidl_fuchsia_lowpan_device_common::Role as fidl::encoding::ValueTypeMarker>::borrow),
33509 encoder, offset + cur_offset, depth
33510 )?;
33511
33512 _prev_end_offset = cur_offset + envelope_size;
33513 if 3 > max_ordinal {
33514 return Ok(());
33515 }
33516
33517 let cur_offset: usize = (3 - 1) * envelope_size;
33520
33521 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
33523
33524 fidl::encoding::encode_in_envelope_optional::<ThreadLinkMode, D>(
33529 self.mode.as_ref().map(<ThreadLinkMode as fidl::encoding::ValueTypeMarker>::borrow),
33530 encoder,
33531 offset + cur_offset,
33532 depth,
33533 )?;
33534
33535 _prev_end_offset = cur_offset + envelope_size;
33536 if 4 > max_ordinal {
33537 return Ok(());
33538 }
33539
33540 let cur_offset: usize = (4 - 1) * envelope_size;
33543
33544 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
33546
33547 fidl::encoding::encode_in_envelope_optional::<u16, D>(
33552 self.rloc16.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
33553 encoder,
33554 offset + cur_offset,
33555 depth,
33556 )?;
33557
33558 _prev_end_offset = cur_offset + envelope_size;
33559 if 5 > max_ordinal {
33560 return Ok(());
33561 }
33562
33563 let cur_offset: usize = (5 - 1) * envelope_size;
33566
33567 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
33569
33570 fidl::encoding::encode_in_envelope_optional::<u32, D>(
33575 self.partition_id.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
33576 encoder,
33577 offset + cur_offset,
33578 depth,
33579 )?;
33580
33581 _prev_end_offset = cur_offset + envelope_size;
33582
33583 Ok(())
33584 }
33585 }
33586
33587 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
33588 for ThreadNetworkInfoEntry
33589 {
33590 #[inline(always)]
33591 fn new_empty() -> Self {
33592 Self::default()
33593 }
33594
33595 unsafe fn decode(
33596 &mut self,
33597 decoder: &mut fidl::encoding::Decoder<'_, D>,
33598 offset: usize,
33599 mut depth: fidl::encoding::Depth,
33600 ) -> fidl::Result<()> {
33601 decoder.debug_check_bounds::<Self>(offset);
33602 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
33603 None => return Err(fidl::Error::NotNullable),
33604 Some(len) => len,
33605 };
33606 if len == 0 {
33608 return Ok(());
33609 };
33610 depth.increment()?;
33611 let envelope_size = 8;
33612 let bytes_len = len * envelope_size;
33613 let offset = decoder.out_of_line_offset(bytes_len)?;
33614 let mut _next_ordinal_to_read = 0;
33616 let mut next_offset = offset;
33617 let end_offset = offset + bytes_len;
33618 _next_ordinal_to_read += 1;
33619 if next_offset >= end_offset {
33620 return Ok(());
33621 }
33622
33623 while _next_ordinal_to_read < 1 {
33625 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
33626 _next_ordinal_to_read += 1;
33627 next_offset += envelope_size;
33628 }
33629
33630 let next_out_of_line = decoder.next_out_of_line();
33631 let handles_before = decoder.remaining_handles();
33632 if let Some((inlined, num_bytes, num_handles)) =
33633 fidl::encoding::decode_envelope_header(decoder, next_offset)?
33634 {
33635 let member_inline_size =
33636 <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
33637 if inlined != (member_inline_size <= 4) {
33638 return Err(fidl::Error::InvalidInlineBitInEnvelope);
33639 }
33640 let inner_offset;
33641 let mut inner_depth = depth.clone();
33642 if inlined {
33643 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
33644 inner_offset = next_offset;
33645 } else {
33646 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
33647 inner_depth.increment()?;
33648 }
33649 let val_ref = self.age.get_or_insert_with(|| fidl::new_empty!(i64, D));
33650 fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
33651 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
33652 {
33653 return Err(fidl::Error::InvalidNumBytesInEnvelope);
33654 }
33655 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
33656 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
33657 }
33658 }
33659
33660 next_offset += envelope_size;
33661 _next_ordinal_to_read += 1;
33662 if next_offset >= end_offset {
33663 return Ok(());
33664 }
33665
33666 while _next_ordinal_to_read < 2 {
33668 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
33669 _next_ordinal_to_read += 1;
33670 next_offset += envelope_size;
33671 }
33672
33673 let next_out_of_line = decoder.next_out_of_line();
33674 let handles_before = decoder.remaining_handles();
33675 if let Some((inlined, num_bytes, num_handles)) =
33676 fidl::encoding::decode_envelope_header(decoder, next_offset)?
33677 {
33678 let member_inline_size = <fidl_fuchsia_lowpan_device_common::Role as fidl::encoding::TypeMarker>::inline_size(decoder.context);
33679 if inlined != (member_inline_size <= 4) {
33680 return Err(fidl::Error::InvalidInlineBitInEnvelope);
33681 }
33682 let inner_offset;
33683 let mut inner_depth = depth.clone();
33684 if inlined {
33685 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
33686 inner_offset = next_offset;
33687 } else {
33688 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
33689 inner_depth.increment()?;
33690 }
33691 let val_ref = self.role.get_or_insert_with(|| {
33692 fidl::new_empty!(fidl_fuchsia_lowpan_device_common::Role, D)
33693 });
33694 fidl::decode!(
33695 fidl_fuchsia_lowpan_device_common::Role,
33696 D,
33697 val_ref,
33698 decoder,
33699 inner_offset,
33700 inner_depth
33701 )?;
33702 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
33703 {
33704 return Err(fidl::Error::InvalidNumBytesInEnvelope);
33705 }
33706 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
33707 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
33708 }
33709 }
33710
33711 next_offset += envelope_size;
33712 _next_ordinal_to_read += 1;
33713 if next_offset >= end_offset {
33714 return Ok(());
33715 }
33716
33717 while _next_ordinal_to_read < 3 {
33719 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
33720 _next_ordinal_to_read += 1;
33721 next_offset += envelope_size;
33722 }
33723
33724 let next_out_of_line = decoder.next_out_of_line();
33725 let handles_before = decoder.remaining_handles();
33726 if let Some((inlined, num_bytes, num_handles)) =
33727 fidl::encoding::decode_envelope_header(decoder, next_offset)?
33728 {
33729 let member_inline_size =
33730 <ThreadLinkMode as fidl::encoding::TypeMarker>::inline_size(decoder.context);
33731 if inlined != (member_inline_size <= 4) {
33732 return Err(fidl::Error::InvalidInlineBitInEnvelope);
33733 }
33734 let inner_offset;
33735 let mut inner_depth = depth.clone();
33736 if inlined {
33737 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
33738 inner_offset = next_offset;
33739 } else {
33740 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
33741 inner_depth.increment()?;
33742 }
33743 let val_ref = self.mode.get_or_insert_with(|| fidl::new_empty!(ThreadLinkMode, D));
33744 fidl::decode!(ThreadLinkMode, D, val_ref, decoder, inner_offset, inner_depth)?;
33745 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
33746 {
33747 return Err(fidl::Error::InvalidNumBytesInEnvelope);
33748 }
33749 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
33750 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
33751 }
33752 }
33753
33754 next_offset += envelope_size;
33755 _next_ordinal_to_read += 1;
33756 if next_offset >= end_offset {
33757 return Ok(());
33758 }
33759
33760 while _next_ordinal_to_read < 4 {
33762 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
33763 _next_ordinal_to_read += 1;
33764 next_offset += envelope_size;
33765 }
33766
33767 let next_out_of_line = decoder.next_out_of_line();
33768 let handles_before = decoder.remaining_handles();
33769 if let Some((inlined, num_bytes, num_handles)) =
33770 fidl::encoding::decode_envelope_header(decoder, next_offset)?
33771 {
33772 let member_inline_size =
33773 <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
33774 if inlined != (member_inline_size <= 4) {
33775 return Err(fidl::Error::InvalidInlineBitInEnvelope);
33776 }
33777 let inner_offset;
33778 let mut inner_depth = depth.clone();
33779 if inlined {
33780 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
33781 inner_offset = next_offset;
33782 } else {
33783 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
33784 inner_depth.increment()?;
33785 }
33786 let val_ref = self.rloc16.get_or_insert_with(|| fidl::new_empty!(u16, D));
33787 fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
33788 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
33789 {
33790 return Err(fidl::Error::InvalidNumBytesInEnvelope);
33791 }
33792 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
33793 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
33794 }
33795 }
33796
33797 next_offset += envelope_size;
33798 _next_ordinal_to_read += 1;
33799 if next_offset >= end_offset {
33800 return Ok(());
33801 }
33802
33803 while _next_ordinal_to_read < 5 {
33805 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
33806 _next_ordinal_to_read += 1;
33807 next_offset += envelope_size;
33808 }
33809
33810 let next_out_of_line = decoder.next_out_of_line();
33811 let handles_before = decoder.remaining_handles();
33812 if let Some((inlined, num_bytes, num_handles)) =
33813 fidl::encoding::decode_envelope_header(decoder, next_offset)?
33814 {
33815 let member_inline_size =
33816 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
33817 if inlined != (member_inline_size <= 4) {
33818 return Err(fidl::Error::InvalidInlineBitInEnvelope);
33819 }
33820 let inner_offset;
33821 let mut inner_depth = depth.clone();
33822 if inlined {
33823 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
33824 inner_offset = next_offset;
33825 } else {
33826 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
33827 inner_depth.increment()?;
33828 }
33829 let val_ref = self.partition_id.get_or_insert_with(|| fidl::new_empty!(u32, D));
33830 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
33831 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
33832 {
33833 return Err(fidl::Error::InvalidNumBytesInEnvelope);
33834 }
33835 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
33836 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
33837 }
33838 }
33839
33840 next_offset += envelope_size;
33841
33842 while next_offset < end_offset {
33844 _next_ordinal_to_read += 1;
33845 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
33846 next_offset += envelope_size;
33847 }
33848
33849 Ok(())
33850 }
33851 }
33852
33853 impl ThreadRouterInfoEntry {
33854 #[inline(always)]
33855 fn max_ordinal_present(&self) -> u64 {
33856 if let Some(_) = self.new_path_cost {
33857 return 8;
33858 }
33859 if let Some(_) = self.old_path_cost {
33860 return 7;
33861 }
33862 if let Some(_) = self.next_hop_rloc16 {
33863 return 6;
33864 }
33865 if let Some(_) = self.next_hop_id {
33866 return 5;
33867 }
33868 if let Some(_) = self.router_rloc16 {
33869 return 4;
33870 }
33871 if let Some(_) = self.router_id {
33872 return 3;
33873 }
33874 if let Some(_) = self.event {
33875 return 2;
33876 }
33877 if let Some(_) = self.age {
33878 return 1;
33879 }
33880 0
33881 }
33882 }
33883
33884 impl fidl::encoding::ValueTypeMarker for ThreadRouterInfoEntry {
33885 type Borrowed<'a> = &'a Self;
33886 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
33887 value
33888 }
33889 }
33890
33891 unsafe impl fidl::encoding::TypeMarker for ThreadRouterInfoEntry {
33892 type Owned = Self;
33893
33894 #[inline(always)]
33895 fn inline_align(_context: fidl::encoding::Context) -> usize {
33896 8
33897 }
33898
33899 #[inline(always)]
33900 fn inline_size(_context: fidl::encoding::Context) -> usize {
33901 16
33902 }
33903 }
33904
33905 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ThreadRouterInfoEntry, D>
33906 for &ThreadRouterInfoEntry
33907 {
33908 unsafe fn encode(
33909 self,
33910 encoder: &mut fidl::encoding::Encoder<'_, D>,
33911 offset: usize,
33912 mut depth: fidl::encoding::Depth,
33913 ) -> fidl::Result<()> {
33914 encoder.debug_check_bounds::<ThreadRouterInfoEntry>(offset);
33915 let max_ordinal: u64 = self.max_ordinal_present();
33917 encoder.write_num(max_ordinal, offset);
33918 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
33919 if max_ordinal == 0 {
33921 return Ok(());
33922 }
33923 depth.increment()?;
33924 let envelope_size = 8;
33925 let bytes_len = max_ordinal as usize * envelope_size;
33926 #[allow(unused_variables)]
33927 let offset = encoder.out_of_line_offset(bytes_len);
33928 let mut _prev_end_offset: usize = 0;
33929 if 1 > max_ordinal {
33930 return Ok(());
33931 }
33932
33933 let cur_offset: usize = (1 - 1) * envelope_size;
33936
33937 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
33939
33940 fidl::encoding::encode_in_envelope_optional::<i64, D>(
33945 self.age.as_ref().map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
33946 encoder,
33947 offset + cur_offset,
33948 depth,
33949 )?;
33950
33951 _prev_end_offset = cur_offset + envelope_size;
33952 if 2 > max_ordinal {
33953 return Ok(());
33954 }
33955
33956 let cur_offset: usize = (2 - 1) * envelope_size;
33959
33960 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
33962
33963 fidl::encoding::encode_in_envelope_optional::<HistoryTrackerRouterEvent, D>(
33968 self.event
33969 .as_ref()
33970 .map(<HistoryTrackerRouterEvent as fidl::encoding::ValueTypeMarker>::borrow),
33971 encoder,
33972 offset + cur_offset,
33973 depth,
33974 )?;
33975
33976 _prev_end_offset = cur_offset + envelope_size;
33977 if 3 > max_ordinal {
33978 return Ok(());
33979 }
33980
33981 let cur_offset: usize = (3 - 1) * envelope_size;
33984
33985 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
33987
33988 fidl::encoding::encode_in_envelope_optional::<u8, D>(
33993 self.router_id.as_ref().map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
33994 encoder,
33995 offset + cur_offset,
33996 depth,
33997 )?;
33998
33999 _prev_end_offset = cur_offset + envelope_size;
34000 if 4 > max_ordinal {
34001 return Ok(());
34002 }
34003
34004 let cur_offset: usize = (4 - 1) * envelope_size;
34007
34008 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
34010
34011 fidl::encoding::encode_in_envelope_optional::<u16, D>(
34016 self.router_rloc16.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
34017 encoder,
34018 offset + cur_offset,
34019 depth,
34020 )?;
34021
34022 _prev_end_offset = cur_offset + envelope_size;
34023 if 5 > max_ordinal {
34024 return Ok(());
34025 }
34026
34027 let cur_offset: usize = (5 - 1) * envelope_size;
34030
34031 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
34033
34034 fidl::encoding::encode_in_envelope_optional::<u8, D>(
34039 self.next_hop_id.as_ref().map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
34040 encoder,
34041 offset + cur_offset,
34042 depth,
34043 )?;
34044
34045 _prev_end_offset = cur_offset + envelope_size;
34046 if 6 > max_ordinal {
34047 return Ok(());
34048 }
34049
34050 let cur_offset: usize = (6 - 1) * envelope_size;
34053
34054 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
34056
34057 fidl::encoding::encode_in_envelope_optional::<u16, D>(
34062 self.next_hop_rloc16.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
34063 encoder,
34064 offset + cur_offset,
34065 depth,
34066 )?;
34067
34068 _prev_end_offset = cur_offset + envelope_size;
34069 if 7 > max_ordinal {
34070 return Ok(());
34071 }
34072
34073 let cur_offset: usize = (7 - 1) * envelope_size;
34076
34077 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
34079
34080 fidl::encoding::encode_in_envelope_optional::<u8, D>(
34085 self.old_path_cost.as_ref().map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
34086 encoder,
34087 offset + cur_offset,
34088 depth,
34089 )?;
34090
34091 _prev_end_offset = cur_offset + envelope_size;
34092 if 8 > max_ordinal {
34093 return Ok(());
34094 }
34095
34096 let cur_offset: usize = (8 - 1) * envelope_size;
34099
34100 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
34102
34103 fidl::encoding::encode_in_envelope_optional::<u8, D>(
34108 self.new_path_cost.as_ref().map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
34109 encoder,
34110 offset + cur_offset,
34111 depth,
34112 )?;
34113
34114 _prev_end_offset = cur_offset + envelope_size;
34115
34116 Ok(())
34117 }
34118 }
34119
34120 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ThreadRouterInfoEntry {
34121 #[inline(always)]
34122 fn new_empty() -> Self {
34123 Self::default()
34124 }
34125
34126 unsafe fn decode(
34127 &mut self,
34128 decoder: &mut fidl::encoding::Decoder<'_, D>,
34129 offset: usize,
34130 mut depth: fidl::encoding::Depth,
34131 ) -> fidl::Result<()> {
34132 decoder.debug_check_bounds::<Self>(offset);
34133 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
34134 None => return Err(fidl::Error::NotNullable),
34135 Some(len) => len,
34136 };
34137 if len == 0 {
34139 return Ok(());
34140 };
34141 depth.increment()?;
34142 let envelope_size = 8;
34143 let bytes_len = len * envelope_size;
34144 let offset = decoder.out_of_line_offset(bytes_len)?;
34145 let mut _next_ordinal_to_read = 0;
34147 let mut next_offset = offset;
34148 let end_offset = offset + bytes_len;
34149 _next_ordinal_to_read += 1;
34150 if next_offset >= end_offset {
34151 return Ok(());
34152 }
34153
34154 while _next_ordinal_to_read < 1 {
34156 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
34157 _next_ordinal_to_read += 1;
34158 next_offset += envelope_size;
34159 }
34160
34161 let next_out_of_line = decoder.next_out_of_line();
34162 let handles_before = decoder.remaining_handles();
34163 if let Some((inlined, num_bytes, num_handles)) =
34164 fidl::encoding::decode_envelope_header(decoder, next_offset)?
34165 {
34166 let member_inline_size =
34167 <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
34168 if inlined != (member_inline_size <= 4) {
34169 return Err(fidl::Error::InvalidInlineBitInEnvelope);
34170 }
34171 let inner_offset;
34172 let mut inner_depth = depth.clone();
34173 if inlined {
34174 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
34175 inner_offset = next_offset;
34176 } else {
34177 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
34178 inner_depth.increment()?;
34179 }
34180 let val_ref = self.age.get_or_insert_with(|| fidl::new_empty!(i64, D));
34181 fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
34182 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
34183 {
34184 return Err(fidl::Error::InvalidNumBytesInEnvelope);
34185 }
34186 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
34187 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
34188 }
34189 }
34190
34191 next_offset += envelope_size;
34192 _next_ordinal_to_read += 1;
34193 if next_offset >= end_offset {
34194 return Ok(());
34195 }
34196
34197 while _next_ordinal_to_read < 2 {
34199 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
34200 _next_ordinal_to_read += 1;
34201 next_offset += envelope_size;
34202 }
34203
34204 let next_out_of_line = decoder.next_out_of_line();
34205 let handles_before = decoder.remaining_handles();
34206 if let Some((inlined, num_bytes, num_handles)) =
34207 fidl::encoding::decode_envelope_header(decoder, next_offset)?
34208 {
34209 let member_inline_size =
34210 <HistoryTrackerRouterEvent as fidl::encoding::TypeMarker>::inline_size(
34211 decoder.context,
34212 );
34213 if inlined != (member_inline_size <= 4) {
34214 return Err(fidl::Error::InvalidInlineBitInEnvelope);
34215 }
34216 let inner_offset;
34217 let mut inner_depth = depth.clone();
34218 if inlined {
34219 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
34220 inner_offset = next_offset;
34221 } else {
34222 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
34223 inner_depth.increment()?;
34224 }
34225 let val_ref = self
34226 .event
34227 .get_or_insert_with(|| fidl::new_empty!(HistoryTrackerRouterEvent, D));
34228 fidl::decode!(
34229 HistoryTrackerRouterEvent,
34230 D,
34231 val_ref,
34232 decoder,
34233 inner_offset,
34234 inner_depth
34235 )?;
34236 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
34237 {
34238 return Err(fidl::Error::InvalidNumBytesInEnvelope);
34239 }
34240 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
34241 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
34242 }
34243 }
34244
34245 next_offset += envelope_size;
34246 _next_ordinal_to_read += 1;
34247 if next_offset >= end_offset {
34248 return Ok(());
34249 }
34250
34251 while _next_ordinal_to_read < 3 {
34253 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
34254 _next_ordinal_to_read += 1;
34255 next_offset += envelope_size;
34256 }
34257
34258 let next_out_of_line = decoder.next_out_of_line();
34259 let handles_before = decoder.remaining_handles();
34260 if let Some((inlined, num_bytes, num_handles)) =
34261 fidl::encoding::decode_envelope_header(decoder, next_offset)?
34262 {
34263 let member_inline_size =
34264 <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
34265 if inlined != (member_inline_size <= 4) {
34266 return Err(fidl::Error::InvalidInlineBitInEnvelope);
34267 }
34268 let inner_offset;
34269 let mut inner_depth = depth.clone();
34270 if inlined {
34271 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
34272 inner_offset = next_offset;
34273 } else {
34274 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
34275 inner_depth.increment()?;
34276 }
34277 let val_ref = self.router_id.get_or_insert_with(|| fidl::new_empty!(u8, D));
34278 fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
34279 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
34280 {
34281 return Err(fidl::Error::InvalidNumBytesInEnvelope);
34282 }
34283 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
34284 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
34285 }
34286 }
34287
34288 next_offset += envelope_size;
34289 _next_ordinal_to_read += 1;
34290 if next_offset >= end_offset {
34291 return Ok(());
34292 }
34293
34294 while _next_ordinal_to_read < 4 {
34296 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
34297 _next_ordinal_to_read += 1;
34298 next_offset += envelope_size;
34299 }
34300
34301 let next_out_of_line = decoder.next_out_of_line();
34302 let handles_before = decoder.remaining_handles();
34303 if let Some((inlined, num_bytes, num_handles)) =
34304 fidl::encoding::decode_envelope_header(decoder, next_offset)?
34305 {
34306 let member_inline_size =
34307 <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
34308 if inlined != (member_inline_size <= 4) {
34309 return Err(fidl::Error::InvalidInlineBitInEnvelope);
34310 }
34311 let inner_offset;
34312 let mut inner_depth = depth.clone();
34313 if inlined {
34314 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
34315 inner_offset = next_offset;
34316 } else {
34317 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
34318 inner_depth.increment()?;
34319 }
34320 let val_ref = self.router_rloc16.get_or_insert_with(|| fidl::new_empty!(u16, D));
34321 fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
34322 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
34323 {
34324 return Err(fidl::Error::InvalidNumBytesInEnvelope);
34325 }
34326 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
34327 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
34328 }
34329 }
34330
34331 next_offset += envelope_size;
34332 _next_ordinal_to_read += 1;
34333 if next_offset >= end_offset {
34334 return Ok(());
34335 }
34336
34337 while _next_ordinal_to_read < 5 {
34339 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
34340 _next_ordinal_to_read += 1;
34341 next_offset += envelope_size;
34342 }
34343
34344 let next_out_of_line = decoder.next_out_of_line();
34345 let handles_before = decoder.remaining_handles();
34346 if let Some((inlined, num_bytes, num_handles)) =
34347 fidl::encoding::decode_envelope_header(decoder, next_offset)?
34348 {
34349 let member_inline_size =
34350 <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
34351 if inlined != (member_inline_size <= 4) {
34352 return Err(fidl::Error::InvalidInlineBitInEnvelope);
34353 }
34354 let inner_offset;
34355 let mut inner_depth = depth.clone();
34356 if inlined {
34357 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
34358 inner_offset = next_offset;
34359 } else {
34360 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
34361 inner_depth.increment()?;
34362 }
34363 let val_ref = self.next_hop_id.get_or_insert_with(|| fidl::new_empty!(u8, D));
34364 fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
34365 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
34366 {
34367 return Err(fidl::Error::InvalidNumBytesInEnvelope);
34368 }
34369 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
34370 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
34371 }
34372 }
34373
34374 next_offset += envelope_size;
34375 _next_ordinal_to_read += 1;
34376 if next_offset >= end_offset {
34377 return Ok(());
34378 }
34379
34380 while _next_ordinal_to_read < 6 {
34382 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
34383 _next_ordinal_to_read += 1;
34384 next_offset += envelope_size;
34385 }
34386
34387 let next_out_of_line = decoder.next_out_of_line();
34388 let handles_before = decoder.remaining_handles();
34389 if let Some((inlined, num_bytes, num_handles)) =
34390 fidl::encoding::decode_envelope_header(decoder, next_offset)?
34391 {
34392 let member_inline_size =
34393 <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
34394 if inlined != (member_inline_size <= 4) {
34395 return Err(fidl::Error::InvalidInlineBitInEnvelope);
34396 }
34397 let inner_offset;
34398 let mut inner_depth = depth.clone();
34399 if inlined {
34400 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
34401 inner_offset = next_offset;
34402 } else {
34403 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
34404 inner_depth.increment()?;
34405 }
34406 let val_ref = self.next_hop_rloc16.get_or_insert_with(|| fidl::new_empty!(u16, D));
34407 fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
34408 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
34409 {
34410 return Err(fidl::Error::InvalidNumBytesInEnvelope);
34411 }
34412 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
34413 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
34414 }
34415 }
34416
34417 next_offset += envelope_size;
34418 _next_ordinal_to_read += 1;
34419 if next_offset >= end_offset {
34420 return Ok(());
34421 }
34422
34423 while _next_ordinal_to_read < 7 {
34425 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
34426 _next_ordinal_to_read += 1;
34427 next_offset += envelope_size;
34428 }
34429
34430 let next_out_of_line = decoder.next_out_of_line();
34431 let handles_before = decoder.remaining_handles();
34432 if let Some((inlined, num_bytes, num_handles)) =
34433 fidl::encoding::decode_envelope_header(decoder, next_offset)?
34434 {
34435 let member_inline_size =
34436 <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
34437 if inlined != (member_inline_size <= 4) {
34438 return Err(fidl::Error::InvalidInlineBitInEnvelope);
34439 }
34440 let inner_offset;
34441 let mut inner_depth = depth.clone();
34442 if inlined {
34443 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
34444 inner_offset = next_offset;
34445 } else {
34446 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
34447 inner_depth.increment()?;
34448 }
34449 let val_ref = self.old_path_cost.get_or_insert_with(|| fidl::new_empty!(u8, D));
34450 fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
34451 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
34452 {
34453 return Err(fidl::Error::InvalidNumBytesInEnvelope);
34454 }
34455 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
34456 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
34457 }
34458 }
34459
34460 next_offset += envelope_size;
34461 _next_ordinal_to_read += 1;
34462 if next_offset >= end_offset {
34463 return Ok(());
34464 }
34465
34466 while _next_ordinal_to_read < 8 {
34468 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
34469 _next_ordinal_to_read += 1;
34470 next_offset += envelope_size;
34471 }
34472
34473 let next_out_of_line = decoder.next_out_of_line();
34474 let handles_before = decoder.remaining_handles();
34475 if let Some((inlined, num_bytes, num_handles)) =
34476 fidl::encoding::decode_envelope_header(decoder, next_offset)?
34477 {
34478 let member_inline_size =
34479 <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
34480 if inlined != (member_inline_size <= 4) {
34481 return Err(fidl::Error::InvalidInlineBitInEnvelope);
34482 }
34483 let inner_offset;
34484 let mut inner_depth = depth.clone();
34485 if inlined {
34486 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
34487 inner_offset = next_offset;
34488 } else {
34489 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
34490 inner_depth.increment()?;
34491 }
34492 let val_ref = self.new_path_cost.get_or_insert_with(|| fidl::new_empty!(u8, D));
34493 fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
34494 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
34495 {
34496 return Err(fidl::Error::InvalidNumBytesInEnvelope);
34497 }
34498 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
34499 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
34500 }
34501 }
34502
34503 next_offset += envelope_size;
34504
34505 while next_offset < end_offset {
34507 _next_ordinal_to_read += 1;
34508 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
34509 next_offset += envelope_size;
34510 }
34511
34512 Ok(())
34513 }
34514 }
34515
34516 impl TrelCounters {
34517 #[inline(always)]
34518 fn max_ordinal_present(&self) -> u64 {
34519 if let Some(_) = self.tx_packets {
34520 return 5;
34521 }
34522 if let Some(_) = self.tx_failure {
34523 return 4;
34524 }
34525 if let Some(_) = self.tx_bytes {
34526 return 3;
34527 }
34528 if let Some(_) = self.rx_packets {
34529 return 2;
34530 }
34531 if let Some(_) = self.rx_bytes {
34532 return 1;
34533 }
34534 0
34535 }
34536 }
34537
34538 impl fidl::encoding::ValueTypeMarker for TrelCounters {
34539 type Borrowed<'a> = &'a Self;
34540 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
34541 value
34542 }
34543 }
34544
34545 unsafe impl fidl::encoding::TypeMarker for TrelCounters {
34546 type Owned = Self;
34547
34548 #[inline(always)]
34549 fn inline_align(_context: fidl::encoding::Context) -> usize {
34550 8
34551 }
34552
34553 #[inline(always)]
34554 fn inline_size(_context: fidl::encoding::Context) -> usize {
34555 16
34556 }
34557 }
34558
34559 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<TrelCounters, D>
34560 for &TrelCounters
34561 {
34562 unsafe fn encode(
34563 self,
34564 encoder: &mut fidl::encoding::Encoder<'_, D>,
34565 offset: usize,
34566 mut depth: fidl::encoding::Depth,
34567 ) -> fidl::Result<()> {
34568 encoder.debug_check_bounds::<TrelCounters>(offset);
34569 let max_ordinal: u64 = self.max_ordinal_present();
34571 encoder.write_num(max_ordinal, offset);
34572 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
34573 if max_ordinal == 0 {
34575 return Ok(());
34576 }
34577 depth.increment()?;
34578 let envelope_size = 8;
34579 let bytes_len = max_ordinal as usize * envelope_size;
34580 #[allow(unused_variables)]
34581 let offset = encoder.out_of_line_offset(bytes_len);
34582 let mut _prev_end_offset: usize = 0;
34583 if 1 > max_ordinal {
34584 return Ok(());
34585 }
34586
34587 let cur_offset: usize = (1 - 1) * envelope_size;
34590
34591 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
34593
34594 fidl::encoding::encode_in_envelope_optional::<u64, D>(
34599 self.rx_bytes.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
34600 encoder,
34601 offset + cur_offset,
34602 depth,
34603 )?;
34604
34605 _prev_end_offset = cur_offset + envelope_size;
34606 if 2 > max_ordinal {
34607 return Ok(());
34608 }
34609
34610 let cur_offset: usize = (2 - 1) * envelope_size;
34613
34614 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
34616
34617 fidl::encoding::encode_in_envelope_optional::<u64, D>(
34622 self.rx_packets.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
34623 encoder,
34624 offset + cur_offset,
34625 depth,
34626 )?;
34627
34628 _prev_end_offset = cur_offset + envelope_size;
34629 if 3 > max_ordinal {
34630 return Ok(());
34631 }
34632
34633 let cur_offset: usize = (3 - 1) * envelope_size;
34636
34637 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
34639
34640 fidl::encoding::encode_in_envelope_optional::<u64, D>(
34645 self.tx_bytes.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
34646 encoder,
34647 offset + cur_offset,
34648 depth,
34649 )?;
34650
34651 _prev_end_offset = cur_offset + envelope_size;
34652 if 4 > max_ordinal {
34653 return Ok(());
34654 }
34655
34656 let cur_offset: usize = (4 - 1) * envelope_size;
34659
34660 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
34662
34663 fidl::encoding::encode_in_envelope_optional::<u64, D>(
34668 self.tx_failure.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
34669 encoder,
34670 offset + cur_offset,
34671 depth,
34672 )?;
34673
34674 _prev_end_offset = cur_offset + envelope_size;
34675 if 5 > max_ordinal {
34676 return Ok(());
34677 }
34678
34679 let cur_offset: usize = (5 - 1) * envelope_size;
34682
34683 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
34685
34686 fidl::encoding::encode_in_envelope_optional::<u64, D>(
34691 self.tx_packets.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
34692 encoder,
34693 offset + cur_offset,
34694 depth,
34695 )?;
34696
34697 _prev_end_offset = cur_offset + envelope_size;
34698
34699 Ok(())
34700 }
34701 }
34702
34703 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for TrelCounters {
34704 #[inline(always)]
34705 fn new_empty() -> Self {
34706 Self::default()
34707 }
34708
34709 unsafe fn decode(
34710 &mut self,
34711 decoder: &mut fidl::encoding::Decoder<'_, D>,
34712 offset: usize,
34713 mut depth: fidl::encoding::Depth,
34714 ) -> fidl::Result<()> {
34715 decoder.debug_check_bounds::<Self>(offset);
34716 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
34717 None => return Err(fidl::Error::NotNullable),
34718 Some(len) => len,
34719 };
34720 if len == 0 {
34722 return Ok(());
34723 };
34724 depth.increment()?;
34725 let envelope_size = 8;
34726 let bytes_len = len * envelope_size;
34727 let offset = decoder.out_of_line_offset(bytes_len)?;
34728 let mut _next_ordinal_to_read = 0;
34730 let mut next_offset = offset;
34731 let end_offset = offset + bytes_len;
34732 _next_ordinal_to_read += 1;
34733 if next_offset >= end_offset {
34734 return Ok(());
34735 }
34736
34737 while _next_ordinal_to_read < 1 {
34739 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
34740 _next_ordinal_to_read += 1;
34741 next_offset += envelope_size;
34742 }
34743
34744 let next_out_of_line = decoder.next_out_of_line();
34745 let handles_before = decoder.remaining_handles();
34746 if let Some((inlined, num_bytes, num_handles)) =
34747 fidl::encoding::decode_envelope_header(decoder, next_offset)?
34748 {
34749 let member_inline_size =
34750 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
34751 if inlined != (member_inline_size <= 4) {
34752 return Err(fidl::Error::InvalidInlineBitInEnvelope);
34753 }
34754 let inner_offset;
34755 let mut inner_depth = depth.clone();
34756 if inlined {
34757 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
34758 inner_offset = next_offset;
34759 } else {
34760 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
34761 inner_depth.increment()?;
34762 }
34763 let val_ref = self.rx_bytes.get_or_insert_with(|| fidl::new_empty!(u64, D));
34764 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
34765 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
34766 {
34767 return Err(fidl::Error::InvalidNumBytesInEnvelope);
34768 }
34769 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
34770 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
34771 }
34772 }
34773
34774 next_offset += envelope_size;
34775 _next_ordinal_to_read += 1;
34776 if next_offset >= end_offset {
34777 return Ok(());
34778 }
34779
34780 while _next_ordinal_to_read < 2 {
34782 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
34783 _next_ordinal_to_read += 1;
34784 next_offset += envelope_size;
34785 }
34786
34787 let next_out_of_line = decoder.next_out_of_line();
34788 let handles_before = decoder.remaining_handles();
34789 if let Some((inlined, num_bytes, num_handles)) =
34790 fidl::encoding::decode_envelope_header(decoder, next_offset)?
34791 {
34792 let member_inline_size =
34793 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
34794 if inlined != (member_inline_size <= 4) {
34795 return Err(fidl::Error::InvalidInlineBitInEnvelope);
34796 }
34797 let inner_offset;
34798 let mut inner_depth = depth.clone();
34799 if inlined {
34800 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
34801 inner_offset = next_offset;
34802 } else {
34803 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
34804 inner_depth.increment()?;
34805 }
34806 let val_ref = self.rx_packets.get_or_insert_with(|| fidl::new_empty!(u64, D));
34807 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
34808 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
34809 {
34810 return Err(fidl::Error::InvalidNumBytesInEnvelope);
34811 }
34812 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
34813 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
34814 }
34815 }
34816
34817 next_offset += envelope_size;
34818 _next_ordinal_to_read += 1;
34819 if next_offset >= end_offset {
34820 return Ok(());
34821 }
34822
34823 while _next_ordinal_to_read < 3 {
34825 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
34826 _next_ordinal_to_read += 1;
34827 next_offset += envelope_size;
34828 }
34829
34830 let next_out_of_line = decoder.next_out_of_line();
34831 let handles_before = decoder.remaining_handles();
34832 if let Some((inlined, num_bytes, num_handles)) =
34833 fidl::encoding::decode_envelope_header(decoder, next_offset)?
34834 {
34835 let member_inline_size =
34836 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
34837 if inlined != (member_inline_size <= 4) {
34838 return Err(fidl::Error::InvalidInlineBitInEnvelope);
34839 }
34840 let inner_offset;
34841 let mut inner_depth = depth.clone();
34842 if inlined {
34843 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
34844 inner_offset = next_offset;
34845 } else {
34846 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
34847 inner_depth.increment()?;
34848 }
34849 let val_ref = self.tx_bytes.get_or_insert_with(|| fidl::new_empty!(u64, D));
34850 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
34851 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
34852 {
34853 return Err(fidl::Error::InvalidNumBytesInEnvelope);
34854 }
34855 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
34856 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
34857 }
34858 }
34859
34860 next_offset += envelope_size;
34861 _next_ordinal_to_read += 1;
34862 if next_offset >= end_offset {
34863 return Ok(());
34864 }
34865
34866 while _next_ordinal_to_read < 4 {
34868 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
34869 _next_ordinal_to_read += 1;
34870 next_offset += envelope_size;
34871 }
34872
34873 let next_out_of_line = decoder.next_out_of_line();
34874 let handles_before = decoder.remaining_handles();
34875 if let Some((inlined, num_bytes, num_handles)) =
34876 fidl::encoding::decode_envelope_header(decoder, next_offset)?
34877 {
34878 let member_inline_size =
34879 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
34880 if inlined != (member_inline_size <= 4) {
34881 return Err(fidl::Error::InvalidInlineBitInEnvelope);
34882 }
34883 let inner_offset;
34884 let mut inner_depth = depth.clone();
34885 if inlined {
34886 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
34887 inner_offset = next_offset;
34888 } else {
34889 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
34890 inner_depth.increment()?;
34891 }
34892 let val_ref = self.tx_failure.get_or_insert_with(|| fidl::new_empty!(u64, D));
34893 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
34894 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
34895 {
34896 return Err(fidl::Error::InvalidNumBytesInEnvelope);
34897 }
34898 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
34899 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
34900 }
34901 }
34902
34903 next_offset += envelope_size;
34904 _next_ordinal_to_read += 1;
34905 if next_offset >= end_offset {
34906 return Ok(());
34907 }
34908
34909 while _next_ordinal_to_read < 5 {
34911 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
34912 _next_ordinal_to_read += 1;
34913 next_offset += envelope_size;
34914 }
34915
34916 let next_out_of_line = decoder.next_out_of_line();
34917 let handles_before = decoder.remaining_handles();
34918 if let Some((inlined, num_bytes, num_handles)) =
34919 fidl::encoding::decode_envelope_header(decoder, next_offset)?
34920 {
34921 let member_inline_size =
34922 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
34923 if inlined != (member_inline_size <= 4) {
34924 return Err(fidl::Error::InvalidInlineBitInEnvelope);
34925 }
34926 let inner_offset;
34927 let mut inner_depth = depth.clone();
34928 if inlined {
34929 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
34930 inner_offset = next_offset;
34931 } else {
34932 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
34933 inner_depth.increment()?;
34934 }
34935 let val_ref = self.tx_packets.get_or_insert_with(|| fidl::new_empty!(u64, D));
34936 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
34937 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
34938 {
34939 return Err(fidl::Error::InvalidNumBytesInEnvelope);
34940 }
34941 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
34942 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
34943 }
34944 }
34945
34946 next_offset += envelope_size;
34947
34948 while next_offset < end_offset {
34950 _next_ordinal_to_read += 1;
34951 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
34952 next_offset += envelope_size;
34953 }
34954
34955 Ok(())
34956 }
34957 }
34958
34959 impl TrelPeer {
34960 #[inline(always)]
34961 fn max_ordinal_present(&self) -> u64 {
34962 if let Some(_) = self.sock_address {
34963 return 3;
34964 }
34965 if let Some(_) = self.extended_pan_id {
34966 return 2;
34967 }
34968 if let Some(_) = self.extended_address {
34969 return 1;
34970 }
34971 0
34972 }
34973 }
34974
34975 impl fidl::encoding::ValueTypeMarker for TrelPeer {
34976 type Borrowed<'a> = &'a Self;
34977 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
34978 value
34979 }
34980 }
34981
34982 unsafe impl fidl::encoding::TypeMarker for TrelPeer {
34983 type Owned = Self;
34984
34985 #[inline(always)]
34986 fn inline_align(_context: fidl::encoding::Context) -> usize {
34987 8
34988 }
34989
34990 #[inline(always)]
34991 fn inline_size(_context: fidl::encoding::Context) -> usize {
34992 16
34993 }
34994 }
34995
34996 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<TrelPeer, D> for &TrelPeer {
34997 unsafe fn encode(
34998 self,
34999 encoder: &mut fidl::encoding::Encoder<'_, D>,
35000 offset: usize,
35001 mut depth: fidl::encoding::Depth,
35002 ) -> fidl::Result<()> {
35003 encoder.debug_check_bounds::<TrelPeer>(offset);
35004 let max_ordinal: u64 = self.max_ordinal_present();
35006 encoder.write_num(max_ordinal, offset);
35007 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
35008 if max_ordinal == 0 {
35010 return Ok(());
35011 }
35012 depth.increment()?;
35013 let envelope_size = 8;
35014 let bytes_len = max_ordinal as usize * envelope_size;
35015 #[allow(unused_variables)]
35016 let offset = encoder.out_of_line_offset(bytes_len);
35017 let mut _prev_end_offset: usize = 0;
35018 if 1 > max_ordinal {
35019 return Ok(());
35020 }
35021
35022 let cur_offset: usize = (1 - 1) * envelope_size;
35025
35026 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
35028
35029 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<u8, 8>, D>(
35034 self.extended_address.as_ref().map(
35035 <fidl::encoding::Vector<u8, 8> as fidl::encoding::ValueTypeMarker>::borrow,
35036 ),
35037 encoder,
35038 offset + cur_offset,
35039 depth,
35040 )?;
35041
35042 _prev_end_offset = cur_offset + envelope_size;
35043 if 2 > max_ordinal {
35044 return Ok(());
35045 }
35046
35047 let cur_offset: usize = (2 - 1) * envelope_size;
35050
35051 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
35053
35054 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<u8, 8>, D>(
35059 self.extended_pan_id.as_ref().map(
35060 <fidl::encoding::Vector<u8, 8> as fidl::encoding::ValueTypeMarker>::borrow,
35061 ),
35062 encoder,
35063 offset + cur_offset,
35064 depth,
35065 )?;
35066
35067 _prev_end_offset = cur_offset + envelope_size;
35068 if 3 > max_ordinal {
35069 return Ok(());
35070 }
35071
35072 let cur_offset: usize = (3 - 1) * envelope_size;
35075
35076 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
35078
35079 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<48>, D>(
35084 self.sock_address.as_ref().map(
35085 <fidl::encoding::BoundedString<48> as fidl::encoding::ValueTypeMarker>::borrow,
35086 ),
35087 encoder,
35088 offset + cur_offset,
35089 depth,
35090 )?;
35091
35092 _prev_end_offset = cur_offset + envelope_size;
35093
35094 Ok(())
35095 }
35096 }
35097
35098 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for TrelPeer {
35099 #[inline(always)]
35100 fn new_empty() -> Self {
35101 Self::default()
35102 }
35103
35104 unsafe fn decode(
35105 &mut self,
35106 decoder: &mut fidl::encoding::Decoder<'_, D>,
35107 offset: usize,
35108 mut depth: fidl::encoding::Depth,
35109 ) -> fidl::Result<()> {
35110 decoder.debug_check_bounds::<Self>(offset);
35111 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
35112 None => return Err(fidl::Error::NotNullable),
35113 Some(len) => len,
35114 };
35115 if len == 0 {
35117 return Ok(());
35118 };
35119 depth.increment()?;
35120 let envelope_size = 8;
35121 let bytes_len = len * envelope_size;
35122 let offset = decoder.out_of_line_offset(bytes_len)?;
35123 let mut _next_ordinal_to_read = 0;
35125 let mut next_offset = offset;
35126 let end_offset = offset + bytes_len;
35127 _next_ordinal_to_read += 1;
35128 if next_offset >= end_offset {
35129 return Ok(());
35130 }
35131
35132 while _next_ordinal_to_read < 1 {
35134 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
35135 _next_ordinal_to_read += 1;
35136 next_offset += envelope_size;
35137 }
35138
35139 let next_out_of_line = decoder.next_out_of_line();
35140 let handles_before = decoder.remaining_handles();
35141 if let Some((inlined, num_bytes, num_handles)) =
35142 fidl::encoding::decode_envelope_header(decoder, next_offset)?
35143 {
35144 let member_inline_size =
35145 <fidl::encoding::Vector<u8, 8> as fidl::encoding::TypeMarker>::inline_size(
35146 decoder.context,
35147 );
35148 if inlined != (member_inline_size <= 4) {
35149 return Err(fidl::Error::InvalidInlineBitInEnvelope);
35150 }
35151 let inner_offset;
35152 let mut inner_depth = depth.clone();
35153 if inlined {
35154 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
35155 inner_offset = next_offset;
35156 } else {
35157 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
35158 inner_depth.increment()?;
35159 }
35160 let val_ref = self
35161 .extended_address
35162 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u8, 8>, D));
35163 fidl::decode!(fidl::encoding::Vector<u8, 8>, D, val_ref, decoder, inner_offset, inner_depth)?;
35164 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
35165 {
35166 return Err(fidl::Error::InvalidNumBytesInEnvelope);
35167 }
35168 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
35169 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
35170 }
35171 }
35172
35173 next_offset += envelope_size;
35174 _next_ordinal_to_read += 1;
35175 if next_offset >= end_offset {
35176 return Ok(());
35177 }
35178
35179 while _next_ordinal_to_read < 2 {
35181 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
35182 _next_ordinal_to_read += 1;
35183 next_offset += envelope_size;
35184 }
35185
35186 let next_out_of_line = decoder.next_out_of_line();
35187 let handles_before = decoder.remaining_handles();
35188 if let Some((inlined, num_bytes, num_handles)) =
35189 fidl::encoding::decode_envelope_header(decoder, next_offset)?
35190 {
35191 let member_inline_size =
35192 <fidl::encoding::Vector<u8, 8> as fidl::encoding::TypeMarker>::inline_size(
35193 decoder.context,
35194 );
35195 if inlined != (member_inline_size <= 4) {
35196 return Err(fidl::Error::InvalidInlineBitInEnvelope);
35197 }
35198 let inner_offset;
35199 let mut inner_depth = depth.clone();
35200 if inlined {
35201 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
35202 inner_offset = next_offset;
35203 } else {
35204 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
35205 inner_depth.increment()?;
35206 }
35207 let val_ref = self
35208 .extended_pan_id
35209 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u8, 8>, D));
35210 fidl::decode!(fidl::encoding::Vector<u8, 8>, D, val_ref, decoder, inner_offset, inner_depth)?;
35211 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
35212 {
35213 return Err(fidl::Error::InvalidNumBytesInEnvelope);
35214 }
35215 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
35216 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
35217 }
35218 }
35219
35220 next_offset += envelope_size;
35221 _next_ordinal_to_read += 1;
35222 if next_offset >= end_offset {
35223 return Ok(());
35224 }
35225
35226 while _next_ordinal_to_read < 3 {
35228 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
35229 _next_ordinal_to_read += 1;
35230 next_offset += envelope_size;
35231 }
35232
35233 let next_out_of_line = decoder.next_out_of_line();
35234 let handles_before = decoder.remaining_handles();
35235 if let Some((inlined, num_bytes, num_handles)) =
35236 fidl::encoding::decode_envelope_header(decoder, next_offset)?
35237 {
35238 let member_inline_size =
35239 <fidl::encoding::BoundedString<48> as fidl::encoding::TypeMarker>::inline_size(
35240 decoder.context,
35241 );
35242 if inlined != (member_inline_size <= 4) {
35243 return Err(fidl::Error::InvalidInlineBitInEnvelope);
35244 }
35245 let inner_offset;
35246 let mut inner_depth = depth.clone();
35247 if inlined {
35248 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
35249 inner_offset = next_offset;
35250 } else {
35251 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
35252 inner_depth.increment()?;
35253 }
35254 let val_ref = self
35255 .sock_address
35256 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<48>, D));
35257 fidl::decode!(
35258 fidl::encoding::BoundedString<48>,
35259 D,
35260 val_ref,
35261 decoder,
35262 inner_offset,
35263 inner_depth
35264 )?;
35265 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
35266 {
35267 return Err(fidl::Error::InvalidNumBytesInEnvelope);
35268 }
35269 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
35270 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
35271 }
35272 }
35273
35274 next_offset += envelope_size;
35275
35276 while next_offset < end_offset {
35278 _next_ordinal_to_read += 1;
35279 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
35280 next_offset += envelope_size;
35281 }
35282
35283 Ok(())
35284 }
35285 }
35286
35287 impl TrelPeersInfo {
35288 #[inline(always)]
35289 fn max_ordinal_present(&self) -> u64 {
35290 if let Some(_) = self.trel_peers {
35291 return 2;
35292 }
35293 if let Some(_) = self.num_trel_peers {
35294 return 1;
35295 }
35296 0
35297 }
35298 }
35299
35300 impl fidl::encoding::ValueTypeMarker for TrelPeersInfo {
35301 type Borrowed<'a> = &'a Self;
35302 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
35303 value
35304 }
35305 }
35306
35307 unsafe impl fidl::encoding::TypeMarker for TrelPeersInfo {
35308 type Owned = Self;
35309
35310 #[inline(always)]
35311 fn inline_align(_context: fidl::encoding::Context) -> usize {
35312 8
35313 }
35314
35315 #[inline(always)]
35316 fn inline_size(_context: fidl::encoding::Context) -> usize {
35317 16
35318 }
35319 }
35320
35321 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<TrelPeersInfo, D>
35322 for &TrelPeersInfo
35323 {
35324 unsafe fn encode(
35325 self,
35326 encoder: &mut fidl::encoding::Encoder<'_, D>,
35327 offset: usize,
35328 mut depth: fidl::encoding::Depth,
35329 ) -> fidl::Result<()> {
35330 encoder.debug_check_bounds::<TrelPeersInfo>(offset);
35331 let max_ordinal: u64 = self.max_ordinal_present();
35333 encoder.write_num(max_ordinal, offset);
35334 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
35335 if max_ordinal == 0 {
35337 return Ok(());
35338 }
35339 depth.increment()?;
35340 let envelope_size = 8;
35341 let bytes_len = max_ordinal as usize * envelope_size;
35342 #[allow(unused_variables)]
35343 let offset = encoder.out_of_line_offset(bytes_len);
35344 let mut _prev_end_offset: usize = 0;
35345 if 1 > max_ordinal {
35346 return Ok(());
35347 }
35348
35349 let cur_offset: usize = (1 - 1) * envelope_size;
35352
35353 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
35355
35356 fidl::encoding::encode_in_envelope_optional::<u16, D>(
35361 self.num_trel_peers.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
35362 encoder,
35363 offset + cur_offset,
35364 depth,
35365 )?;
35366
35367 _prev_end_offset = cur_offset + envelope_size;
35368 if 2 > max_ordinal {
35369 return Ok(());
35370 }
35371
35372 let cur_offset: usize = (2 - 1) * envelope_size;
35375
35376 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
35378
35379 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<TrelPeer, 64>, D>(
35384 self.trel_peers.as_ref().map(<fidl::encoding::Vector<TrelPeer, 64> as fidl::encoding::ValueTypeMarker>::borrow),
35385 encoder, offset + cur_offset, depth
35386 )?;
35387
35388 _prev_end_offset = cur_offset + envelope_size;
35389
35390 Ok(())
35391 }
35392 }
35393
35394 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for TrelPeersInfo {
35395 #[inline(always)]
35396 fn new_empty() -> Self {
35397 Self::default()
35398 }
35399
35400 unsafe fn decode(
35401 &mut self,
35402 decoder: &mut fidl::encoding::Decoder<'_, D>,
35403 offset: usize,
35404 mut depth: fidl::encoding::Depth,
35405 ) -> fidl::Result<()> {
35406 decoder.debug_check_bounds::<Self>(offset);
35407 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
35408 None => return Err(fidl::Error::NotNullable),
35409 Some(len) => len,
35410 };
35411 if len == 0 {
35413 return Ok(());
35414 };
35415 depth.increment()?;
35416 let envelope_size = 8;
35417 let bytes_len = len * envelope_size;
35418 let offset = decoder.out_of_line_offset(bytes_len)?;
35419 let mut _next_ordinal_to_read = 0;
35421 let mut next_offset = offset;
35422 let end_offset = offset + bytes_len;
35423 _next_ordinal_to_read += 1;
35424 if next_offset >= end_offset {
35425 return Ok(());
35426 }
35427
35428 while _next_ordinal_to_read < 1 {
35430 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
35431 _next_ordinal_to_read += 1;
35432 next_offset += envelope_size;
35433 }
35434
35435 let next_out_of_line = decoder.next_out_of_line();
35436 let handles_before = decoder.remaining_handles();
35437 if let Some((inlined, num_bytes, num_handles)) =
35438 fidl::encoding::decode_envelope_header(decoder, next_offset)?
35439 {
35440 let member_inline_size =
35441 <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
35442 if inlined != (member_inline_size <= 4) {
35443 return Err(fidl::Error::InvalidInlineBitInEnvelope);
35444 }
35445 let inner_offset;
35446 let mut inner_depth = depth.clone();
35447 if inlined {
35448 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
35449 inner_offset = next_offset;
35450 } else {
35451 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
35452 inner_depth.increment()?;
35453 }
35454 let val_ref = self.num_trel_peers.get_or_insert_with(|| fidl::new_empty!(u16, D));
35455 fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
35456 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
35457 {
35458 return Err(fidl::Error::InvalidNumBytesInEnvelope);
35459 }
35460 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
35461 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
35462 }
35463 }
35464
35465 next_offset += envelope_size;
35466 _next_ordinal_to_read += 1;
35467 if next_offset >= end_offset {
35468 return Ok(());
35469 }
35470
35471 while _next_ordinal_to_read < 2 {
35473 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
35474 _next_ordinal_to_read += 1;
35475 next_offset += envelope_size;
35476 }
35477
35478 let next_out_of_line = decoder.next_out_of_line();
35479 let handles_before = decoder.remaining_handles();
35480 if let Some((inlined, num_bytes, num_handles)) =
35481 fidl::encoding::decode_envelope_header(decoder, next_offset)?
35482 {
35483 let member_inline_size = <fidl::encoding::Vector<TrelPeer, 64> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
35484 if inlined != (member_inline_size <= 4) {
35485 return Err(fidl::Error::InvalidInlineBitInEnvelope);
35486 }
35487 let inner_offset;
35488 let mut inner_depth = depth.clone();
35489 if inlined {
35490 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
35491 inner_offset = next_offset;
35492 } else {
35493 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
35494 inner_depth.increment()?;
35495 }
35496 let val_ref = self.trel_peers.get_or_insert_with(
35497 || fidl::new_empty!(fidl::encoding::Vector<TrelPeer, 64>, D),
35498 );
35499 fidl::decode!(fidl::encoding::Vector<TrelPeer, 64>, D, val_ref, decoder, inner_offset, inner_depth)?;
35500 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
35501 {
35502 return Err(fidl::Error::InvalidNumBytesInEnvelope);
35503 }
35504 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
35505 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
35506 }
35507 }
35508
35509 next_offset += envelope_size;
35510
35511 while next_offset < end_offset {
35513 _next_ordinal_to_read += 1;
35514 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
35515 next_offset += envelope_size;
35516 }
35517
35518 Ok(())
35519 }
35520 }
35521
35522 impl UdpSocket {
35523 #[inline(always)]
35524 fn max_ordinal_present(&self) -> u64 {
35525 if let Some(_) = self.peer_name {
35526 return 2;
35527 }
35528 if let Some(_) = self.sock_name {
35529 return 1;
35530 }
35531 0
35532 }
35533 }
35534
35535 impl fidl::encoding::ValueTypeMarker for UdpSocket {
35536 type Borrowed<'a> = &'a Self;
35537 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
35538 value
35539 }
35540 }
35541
35542 unsafe impl fidl::encoding::TypeMarker for UdpSocket {
35543 type Owned = Self;
35544
35545 #[inline(always)]
35546 fn inline_align(_context: fidl::encoding::Context) -> usize {
35547 8
35548 }
35549
35550 #[inline(always)]
35551 fn inline_size(_context: fidl::encoding::Context) -> usize {
35552 16
35553 }
35554 }
35555
35556 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<UdpSocket, D>
35557 for &UdpSocket
35558 {
35559 unsafe fn encode(
35560 self,
35561 encoder: &mut fidl::encoding::Encoder<'_, D>,
35562 offset: usize,
35563 mut depth: fidl::encoding::Depth,
35564 ) -> fidl::Result<()> {
35565 encoder.debug_check_bounds::<UdpSocket>(offset);
35566 let max_ordinal: u64 = self.max_ordinal_present();
35568 encoder.write_num(max_ordinal, offset);
35569 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
35570 if max_ordinal == 0 {
35572 return Ok(());
35573 }
35574 depth.increment()?;
35575 let envelope_size = 8;
35576 let bytes_len = max_ordinal as usize * envelope_size;
35577 #[allow(unused_variables)]
35578 let offset = encoder.out_of_line_offset(bytes_len);
35579 let mut _prev_end_offset: usize = 0;
35580 if 1 > max_ordinal {
35581 return Ok(());
35582 }
35583
35584 let cur_offset: usize = (1 - 1) * envelope_size;
35587
35588 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
35590
35591 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<48>, D>(
35596 self.sock_name.as_ref().map(
35597 <fidl::encoding::BoundedString<48> as fidl::encoding::ValueTypeMarker>::borrow,
35598 ),
35599 encoder,
35600 offset + cur_offset,
35601 depth,
35602 )?;
35603
35604 _prev_end_offset = cur_offset + envelope_size;
35605 if 2 > max_ordinal {
35606 return Ok(());
35607 }
35608
35609 let cur_offset: usize = (2 - 1) * envelope_size;
35612
35613 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
35615
35616 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<48>, D>(
35621 self.peer_name.as_ref().map(
35622 <fidl::encoding::BoundedString<48> as fidl::encoding::ValueTypeMarker>::borrow,
35623 ),
35624 encoder,
35625 offset + cur_offset,
35626 depth,
35627 )?;
35628
35629 _prev_end_offset = cur_offset + envelope_size;
35630
35631 Ok(())
35632 }
35633 }
35634
35635 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for UdpSocket {
35636 #[inline(always)]
35637 fn new_empty() -> Self {
35638 Self::default()
35639 }
35640
35641 unsafe fn decode(
35642 &mut self,
35643 decoder: &mut fidl::encoding::Decoder<'_, D>,
35644 offset: usize,
35645 mut depth: fidl::encoding::Depth,
35646 ) -> fidl::Result<()> {
35647 decoder.debug_check_bounds::<Self>(offset);
35648 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
35649 None => return Err(fidl::Error::NotNullable),
35650 Some(len) => len,
35651 };
35652 if len == 0 {
35654 return Ok(());
35655 };
35656 depth.increment()?;
35657 let envelope_size = 8;
35658 let bytes_len = len * envelope_size;
35659 let offset = decoder.out_of_line_offset(bytes_len)?;
35660 let mut _next_ordinal_to_read = 0;
35662 let mut next_offset = offset;
35663 let end_offset = offset + bytes_len;
35664 _next_ordinal_to_read += 1;
35665 if next_offset >= end_offset {
35666 return Ok(());
35667 }
35668
35669 while _next_ordinal_to_read < 1 {
35671 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
35672 _next_ordinal_to_read += 1;
35673 next_offset += envelope_size;
35674 }
35675
35676 let next_out_of_line = decoder.next_out_of_line();
35677 let handles_before = decoder.remaining_handles();
35678 if let Some((inlined, num_bytes, num_handles)) =
35679 fidl::encoding::decode_envelope_header(decoder, next_offset)?
35680 {
35681 let member_inline_size =
35682 <fidl::encoding::BoundedString<48> as fidl::encoding::TypeMarker>::inline_size(
35683 decoder.context,
35684 );
35685 if inlined != (member_inline_size <= 4) {
35686 return Err(fidl::Error::InvalidInlineBitInEnvelope);
35687 }
35688 let inner_offset;
35689 let mut inner_depth = depth.clone();
35690 if inlined {
35691 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
35692 inner_offset = next_offset;
35693 } else {
35694 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
35695 inner_depth.increment()?;
35696 }
35697 let val_ref = self
35698 .sock_name
35699 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<48>, D));
35700 fidl::decode!(
35701 fidl::encoding::BoundedString<48>,
35702 D,
35703 val_ref,
35704 decoder,
35705 inner_offset,
35706 inner_depth
35707 )?;
35708 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
35709 {
35710 return Err(fidl::Error::InvalidNumBytesInEnvelope);
35711 }
35712 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
35713 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
35714 }
35715 }
35716
35717 next_offset += envelope_size;
35718 _next_ordinal_to_read += 1;
35719 if next_offset >= end_offset {
35720 return Ok(());
35721 }
35722
35723 while _next_ordinal_to_read < 2 {
35725 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
35726 _next_ordinal_to_read += 1;
35727 next_offset += envelope_size;
35728 }
35729
35730 let next_out_of_line = decoder.next_out_of_line();
35731 let handles_before = decoder.remaining_handles();
35732 if let Some((inlined, num_bytes, num_handles)) =
35733 fidl::encoding::decode_envelope_header(decoder, next_offset)?
35734 {
35735 let member_inline_size =
35736 <fidl::encoding::BoundedString<48> as fidl::encoding::TypeMarker>::inline_size(
35737 decoder.context,
35738 );
35739 if inlined != (member_inline_size <= 4) {
35740 return Err(fidl::Error::InvalidInlineBitInEnvelope);
35741 }
35742 let inner_offset;
35743 let mut inner_depth = depth.clone();
35744 if inlined {
35745 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
35746 inner_offset = next_offset;
35747 } else {
35748 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
35749 inner_depth.increment()?;
35750 }
35751 let val_ref = self
35752 .peer_name
35753 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<48>, D));
35754 fidl::decode!(
35755 fidl::encoding::BoundedString<48>,
35756 D,
35757 val_ref,
35758 decoder,
35759 inner_offset,
35760 inner_depth
35761 )?;
35762 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
35763 {
35764 return Err(fidl::Error::InvalidNumBytesInEnvelope);
35765 }
35766 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
35767 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
35768 }
35769 }
35770
35771 next_offset += envelope_size;
35772
35773 while next_offset < end_offset {
35775 _next_ordinal_to_read += 1;
35776 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
35777 next_offset += envelope_size;
35778 }
35779
35780 Ok(())
35781 }
35782 }
35783
35784 impl UpstreamDnsCounters {
35785 #[inline(always)]
35786 fn max_ordinal_present(&self) -> u64 {
35787 if let Some(_) = self.failures {
35788 return 3;
35789 }
35790 if let Some(_) = self.responses {
35791 return 2;
35792 }
35793 if let Some(_) = self.queries {
35794 return 1;
35795 }
35796 0
35797 }
35798 }
35799
35800 impl fidl::encoding::ValueTypeMarker for UpstreamDnsCounters {
35801 type Borrowed<'a> = &'a Self;
35802 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
35803 value
35804 }
35805 }
35806
35807 unsafe impl fidl::encoding::TypeMarker for UpstreamDnsCounters {
35808 type Owned = Self;
35809
35810 #[inline(always)]
35811 fn inline_align(_context: fidl::encoding::Context) -> usize {
35812 8
35813 }
35814
35815 #[inline(always)]
35816 fn inline_size(_context: fidl::encoding::Context) -> usize {
35817 16
35818 }
35819 }
35820
35821 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<UpstreamDnsCounters, D>
35822 for &UpstreamDnsCounters
35823 {
35824 unsafe fn encode(
35825 self,
35826 encoder: &mut fidl::encoding::Encoder<'_, D>,
35827 offset: usize,
35828 mut depth: fidl::encoding::Depth,
35829 ) -> fidl::Result<()> {
35830 encoder.debug_check_bounds::<UpstreamDnsCounters>(offset);
35831 let max_ordinal: u64 = self.max_ordinal_present();
35833 encoder.write_num(max_ordinal, offset);
35834 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
35835 if max_ordinal == 0 {
35837 return Ok(());
35838 }
35839 depth.increment()?;
35840 let envelope_size = 8;
35841 let bytes_len = max_ordinal as usize * envelope_size;
35842 #[allow(unused_variables)]
35843 let offset = encoder.out_of_line_offset(bytes_len);
35844 let mut _prev_end_offset: usize = 0;
35845 if 1 > max_ordinal {
35846 return Ok(());
35847 }
35848
35849 let cur_offset: usize = (1 - 1) * envelope_size;
35852
35853 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
35855
35856 fidl::encoding::encode_in_envelope_optional::<u32, D>(
35861 self.queries.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
35862 encoder,
35863 offset + cur_offset,
35864 depth,
35865 )?;
35866
35867 _prev_end_offset = cur_offset + envelope_size;
35868 if 2 > max_ordinal {
35869 return Ok(());
35870 }
35871
35872 let cur_offset: usize = (2 - 1) * envelope_size;
35875
35876 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
35878
35879 fidl::encoding::encode_in_envelope_optional::<u32, D>(
35884 self.responses.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
35885 encoder,
35886 offset + cur_offset,
35887 depth,
35888 )?;
35889
35890 _prev_end_offset = cur_offset + envelope_size;
35891 if 3 > max_ordinal {
35892 return Ok(());
35893 }
35894
35895 let cur_offset: usize = (3 - 1) * envelope_size;
35898
35899 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
35901
35902 fidl::encoding::encode_in_envelope_optional::<u32, D>(
35907 self.failures.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
35908 encoder,
35909 offset + cur_offset,
35910 depth,
35911 )?;
35912
35913 _prev_end_offset = cur_offset + envelope_size;
35914
35915 Ok(())
35916 }
35917 }
35918
35919 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for UpstreamDnsCounters {
35920 #[inline(always)]
35921 fn new_empty() -> Self {
35922 Self::default()
35923 }
35924
35925 unsafe fn decode(
35926 &mut self,
35927 decoder: &mut fidl::encoding::Decoder<'_, D>,
35928 offset: usize,
35929 mut depth: fidl::encoding::Depth,
35930 ) -> fidl::Result<()> {
35931 decoder.debug_check_bounds::<Self>(offset);
35932 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
35933 None => return Err(fidl::Error::NotNullable),
35934 Some(len) => len,
35935 };
35936 if len == 0 {
35938 return Ok(());
35939 };
35940 depth.increment()?;
35941 let envelope_size = 8;
35942 let bytes_len = len * envelope_size;
35943 let offset = decoder.out_of_line_offset(bytes_len)?;
35944 let mut _next_ordinal_to_read = 0;
35946 let mut next_offset = offset;
35947 let end_offset = offset + bytes_len;
35948 _next_ordinal_to_read += 1;
35949 if next_offset >= end_offset {
35950 return Ok(());
35951 }
35952
35953 while _next_ordinal_to_read < 1 {
35955 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
35956 _next_ordinal_to_read += 1;
35957 next_offset += envelope_size;
35958 }
35959
35960 let next_out_of_line = decoder.next_out_of_line();
35961 let handles_before = decoder.remaining_handles();
35962 if let Some((inlined, num_bytes, num_handles)) =
35963 fidl::encoding::decode_envelope_header(decoder, next_offset)?
35964 {
35965 let member_inline_size =
35966 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
35967 if inlined != (member_inline_size <= 4) {
35968 return Err(fidl::Error::InvalidInlineBitInEnvelope);
35969 }
35970 let inner_offset;
35971 let mut inner_depth = depth.clone();
35972 if inlined {
35973 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
35974 inner_offset = next_offset;
35975 } else {
35976 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
35977 inner_depth.increment()?;
35978 }
35979 let val_ref = self.queries.get_or_insert_with(|| fidl::new_empty!(u32, D));
35980 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
35981 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
35982 {
35983 return Err(fidl::Error::InvalidNumBytesInEnvelope);
35984 }
35985 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
35986 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
35987 }
35988 }
35989
35990 next_offset += envelope_size;
35991 _next_ordinal_to_read += 1;
35992 if next_offset >= end_offset {
35993 return Ok(());
35994 }
35995
35996 while _next_ordinal_to_read < 2 {
35998 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
35999 _next_ordinal_to_read += 1;
36000 next_offset += envelope_size;
36001 }
36002
36003 let next_out_of_line = decoder.next_out_of_line();
36004 let handles_before = decoder.remaining_handles();
36005 if let Some((inlined, num_bytes, num_handles)) =
36006 fidl::encoding::decode_envelope_header(decoder, next_offset)?
36007 {
36008 let member_inline_size =
36009 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
36010 if inlined != (member_inline_size <= 4) {
36011 return Err(fidl::Error::InvalidInlineBitInEnvelope);
36012 }
36013 let inner_offset;
36014 let mut inner_depth = depth.clone();
36015 if inlined {
36016 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
36017 inner_offset = next_offset;
36018 } else {
36019 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
36020 inner_depth.increment()?;
36021 }
36022 let val_ref = self.responses.get_or_insert_with(|| fidl::new_empty!(u32, D));
36023 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
36024 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
36025 {
36026 return Err(fidl::Error::InvalidNumBytesInEnvelope);
36027 }
36028 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
36029 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
36030 }
36031 }
36032
36033 next_offset += envelope_size;
36034 _next_ordinal_to_read += 1;
36035 if next_offset >= end_offset {
36036 return Ok(());
36037 }
36038
36039 while _next_ordinal_to_read < 3 {
36041 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
36042 _next_ordinal_to_read += 1;
36043 next_offset += envelope_size;
36044 }
36045
36046 let next_out_of_line = decoder.next_out_of_line();
36047 let handles_before = decoder.remaining_handles();
36048 if let Some((inlined, num_bytes, num_handles)) =
36049 fidl::encoding::decode_envelope_header(decoder, next_offset)?
36050 {
36051 let member_inline_size =
36052 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
36053 if inlined != (member_inline_size <= 4) {
36054 return Err(fidl::Error::InvalidInlineBitInEnvelope);
36055 }
36056 let inner_offset;
36057 let mut inner_depth = depth.clone();
36058 if inlined {
36059 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
36060 inner_offset = next_offset;
36061 } else {
36062 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
36063 inner_depth.increment()?;
36064 }
36065 let val_ref = self.failures.get_or_insert_with(|| fidl::new_empty!(u32, D));
36066 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
36067 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
36068 {
36069 return Err(fidl::Error::InvalidNumBytesInEnvelope);
36070 }
36071 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
36072 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
36073 }
36074 }
36075
36076 next_offset += envelope_size;
36077
36078 while next_offset < end_offset {
36080 _next_ordinal_to_read += 1;
36081 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
36082 next_offset += envelope_size;
36083 }
36084
36085 Ok(())
36086 }
36087 }
36088
36089 impl UpstreamDnsInfo {
36090 #[inline(always)]
36091 fn max_ordinal_present(&self) -> u64 {
36092 if let Some(_) = self.upstream_dns_query_state {
36093 return 1;
36094 }
36095 0
36096 }
36097 }
36098
36099 impl fidl::encoding::ValueTypeMarker for UpstreamDnsInfo {
36100 type Borrowed<'a> = &'a Self;
36101 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
36102 value
36103 }
36104 }
36105
36106 unsafe impl fidl::encoding::TypeMarker for UpstreamDnsInfo {
36107 type Owned = Self;
36108
36109 #[inline(always)]
36110 fn inline_align(_context: fidl::encoding::Context) -> usize {
36111 8
36112 }
36113
36114 #[inline(always)]
36115 fn inline_size(_context: fidl::encoding::Context) -> usize {
36116 16
36117 }
36118 }
36119
36120 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<UpstreamDnsInfo, D>
36121 for &UpstreamDnsInfo
36122 {
36123 unsafe fn encode(
36124 self,
36125 encoder: &mut fidl::encoding::Encoder<'_, D>,
36126 offset: usize,
36127 mut depth: fidl::encoding::Depth,
36128 ) -> fidl::Result<()> {
36129 encoder.debug_check_bounds::<UpstreamDnsInfo>(offset);
36130 let max_ordinal: u64 = self.max_ordinal_present();
36132 encoder.write_num(max_ordinal, offset);
36133 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
36134 if max_ordinal == 0 {
36136 return Ok(());
36137 }
36138 depth.increment()?;
36139 let envelope_size = 8;
36140 let bytes_len = max_ordinal as usize * envelope_size;
36141 #[allow(unused_variables)]
36142 let offset = encoder.out_of_line_offset(bytes_len);
36143 let mut _prev_end_offset: usize = 0;
36144 if 1 > max_ordinal {
36145 return Ok(());
36146 }
36147
36148 let cur_offset: usize = (1 - 1) * envelope_size;
36151
36152 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
36154
36155 fidl::encoding::encode_in_envelope_optional::<UpstreamDnsQueryState, D>(
36160 self.upstream_dns_query_state
36161 .as_ref()
36162 .map(<UpstreamDnsQueryState as fidl::encoding::ValueTypeMarker>::borrow),
36163 encoder,
36164 offset + cur_offset,
36165 depth,
36166 )?;
36167
36168 _prev_end_offset = cur_offset + envelope_size;
36169
36170 Ok(())
36171 }
36172 }
36173
36174 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for UpstreamDnsInfo {
36175 #[inline(always)]
36176 fn new_empty() -> Self {
36177 Self::default()
36178 }
36179
36180 unsafe fn decode(
36181 &mut self,
36182 decoder: &mut fidl::encoding::Decoder<'_, D>,
36183 offset: usize,
36184 mut depth: fidl::encoding::Depth,
36185 ) -> fidl::Result<()> {
36186 decoder.debug_check_bounds::<Self>(offset);
36187 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
36188 None => return Err(fidl::Error::NotNullable),
36189 Some(len) => len,
36190 };
36191 if len == 0 {
36193 return Ok(());
36194 };
36195 depth.increment()?;
36196 let envelope_size = 8;
36197 let bytes_len = len * envelope_size;
36198 let offset = decoder.out_of_line_offset(bytes_len)?;
36199 let mut _next_ordinal_to_read = 0;
36201 let mut next_offset = offset;
36202 let end_offset = offset + bytes_len;
36203 _next_ordinal_to_read += 1;
36204 if next_offset >= end_offset {
36205 return Ok(());
36206 }
36207
36208 while _next_ordinal_to_read < 1 {
36210 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
36211 _next_ordinal_to_read += 1;
36212 next_offset += envelope_size;
36213 }
36214
36215 let next_out_of_line = decoder.next_out_of_line();
36216 let handles_before = decoder.remaining_handles();
36217 if let Some((inlined, num_bytes, num_handles)) =
36218 fidl::encoding::decode_envelope_header(decoder, next_offset)?
36219 {
36220 let member_inline_size =
36221 <UpstreamDnsQueryState as fidl::encoding::TypeMarker>::inline_size(
36222 decoder.context,
36223 );
36224 if inlined != (member_inline_size <= 4) {
36225 return Err(fidl::Error::InvalidInlineBitInEnvelope);
36226 }
36227 let inner_offset;
36228 let mut inner_depth = depth.clone();
36229 if inlined {
36230 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
36231 inner_offset = next_offset;
36232 } else {
36233 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
36234 inner_depth.increment()?;
36235 }
36236 let val_ref = self
36237 .upstream_dns_query_state
36238 .get_or_insert_with(|| fidl::new_empty!(UpstreamDnsQueryState, D));
36239 fidl::decode!(
36240 UpstreamDnsQueryState,
36241 D,
36242 val_ref,
36243 decoder,
36244 inner_offset,
36245 inner_depth
36246 )?;
36247 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
36248 {
36249 return Err(fidl::Error::InvalidNumBytesInEnvelope);
36250 }
36251 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
36252 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
36253 }
36254 }
36255
36256 next_offset += envelope_size;
36257
36258 while next_offset < end_offset {
36260 _next_ordinal_to_read += 1;
36261 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
36262 next_offset += envelope_size;
36263 }
36264
36265 Ok(())
36266 }
36267 }
36268
36269 impl fidl::encoding::ValueTypeMarker for JoinParams {
36270 type Borrowed<'a> = &'a Self;
36271 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
36272 value
36273 }
36274 }
36275
36276 unsafe impl fidl::encoding::TypeMarker for JoinParams {
36277 type Owned = Self;
36278
36279 #[inline(always)]
36280 fn inline_align(_context: fidl::encoding::Context) -> usize {
36281 8
36282 }
36283
36284 #[inline(always)]
36285 fn inline_size(_context: fidl::encoding::Context) -> usize {
36286 16
36287 }
36288 }
36289
36290 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<JoinParams, D>
36291 for &JoinParams
36292 {
36293 #[inline]
36294 unsafe fn encode(
36295 self,
36296 encoder: &mut fidl::encoding::Encoder<'_, D>,
36297 offset: usize,
36298 _depth: fidl::encoding::Depth,
36299 ) -> fidl::Result<()> {
36300 encoder.debug_check_bounds::<JoinParams>(offset);
36301 encoder.write_num::<u64>(self.ordinal(), offset);
36302 match self {
36303 JoinParams::ProvisioningParameter(ref val) => {
36304 fidl::encoding::encode_in_envelope::<fidl_fuchsia_lowpan_device_common::ProvisioningParams, D>(
36305 <fidl_fuchsia_lowpan_device_common::ProvisioningParams as fidl::encoding::ValueTypeMarker>::borrow(val),
36306 encoder, offset + 8, _depth
36307 )
36308 }
36309 JoinParams::JoinerParameter(ref val) => {
36310 fidl::encoding::encode_in_envelope::<JoinerCommissioningParams, D>(
36311 <JoinerCommissioningParams as fidl::encoding::ValueTypeMarker>::borrow(val),
36312 encoder, offset + 8, _depth
36313 )
36314 }
36315 JoinParams::__SourceBreaking { .. } => Err(fidl::Error::UnknownUnionTag),
36316 }
36317 }
36318 }
36319
36320 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for JoinParams {
36321 #[inline(always)]
36322 fn new_empty() -> Self {
36323 Self::__SourceBreaking { unknown_ordinal: 0 }
36324 }
36325
36326 #[inline]
36327 unsafe fn decode(
36328 &mut self,
36329 decoder: &mut fidl::encoding::Decoder<'_, D>,
36330 offset: usize,
36331 mut depth: fidl::encoding::Depth,
36332 ) -> fidl::Result<()> {
36333 decoder.debug_check_bounds::<Self>(offset);
36334 #[allow(unused_variables)]
36335 let next_out_of_line = decoder.next_out_of_line();
36336 let handles_before = decoder.remaining_handles();
36337 let (ordinal, inlined, num_bytes, num_handles) =
36338 fidl::encoding::decode_union_inline_portion(decoder, offset)?;
36339
36340 let member_inline_size = match ordinal {
36341 1 => <fidl_fuchsia_lowpan_device_common::ProvisioningParams as fidl::encoding::TypeMarker>::inline_size(decoder.context),
36342 2 => <JoinerCommissioningParams as fidl::encoding::TypeMarker>::inline_size(decoder.context),
36343 0 => return Err(fidl::Error::UnknownUnionTag),
36344 _ => num_bytes as usize,
36345 };
36346
36347 if inlined != (member_inline_size <= 4) {
36348 return Err(fidl::Error::InvalidInlineBitInEnvelope);
36349 }
36350 let _inner_offset;
36351 if inlined {
36352 decoder.check_inline_envelope_padding(offset + 8, member_inline_size)?;
36353 _inner_offset = offset + 8;
36354 } else {
36355 depth.increment()?;
36356 _inner_offset = decoder.out_of_line_offset(member_inline_size)?;
36357 }
36358 match ordinal {
36359 1 => {
36360 #[allow(irrefutable_let_patterns)]
36361 if let JoinParams::ProvisioningParameter(_) = self {
36362 } else {
36364 *self = JoinParams::ProvisioningParameter(fidl::new_empty!(
36366 fidl_fuchsia_lowpan_device_common::ProvisioningParams,
36367 D
36368 ));
36369 }
36370 #[allow(irrefutable_let_patterns)]
36371 if let JoinParams::ProvisioningParameter(ref mut val) = self {
36372 fidl::decode!(
36373 fidl_fuchsia_lowpan_device_common::ProvisioningParams,
36374 D,
36375 val,
36376 decoder,
36377 _inner_offset,
36378 depth
36379 )?;
36380 } else {
36381 unreachable!()
36382 }
36383 }
36384 2 => {
36385 #[allow(irrefutable_let_patterns)]
36386 if let JoinParams::JoinerParameter(_) = self {
36387 } else {
36389 *self = JoinParams::JoinerParameter(fidl::new_empty!(
36391 JoinerCommissioningParams,
36392 D
36393 ));
36394 }
36395 #[allow(irrefutable_let_patterns)]
36396 if let JoinParams::JoinerParameter(ref mut val) = self {
36397 fidl::decode!(
36398 JoinerCommissioningParams,
36399 D,
36400 val,
36401 decoder,
36402 _inner_offset,
36403 depth
36404 )?;
36405 } else {
36406 unreachable!()
36407 }
36408 }
36409 #[allow(deprecated)]
36410 ordinal => {
36411 for _ in 0..num_handles {
36412 decoder.drop_next_handle()?;
36413 }
36414 *self = JoinParams::__SourceBreaking { unknown_ordinal: ordinal };
36415 }
36416 }
36417 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize) {
36418 return Err(fidl::Error::InvalidNumBytesInEnvelope);
36419 }
36420 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
36421 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
36422 }
36423 Ok(())
36424 }
36425 }
36426
36427 impl fidl::encoding::ValueTypeMarker for ProvisioningProgress {
36428 type Borrowed<'a> = &'a Self;
36429 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
36430 value
36431 }
36432 }
36433
36434 unsafe impl fidl::encoding::TypeMarker for ProvisioningProgress {
36435 type Owned = Self;
36436
36437 #[inline(always)]
36438 fn inline_align(_context: fidl::encoding::Context) -> usize {
36439 8
36440 }
36441
36442 #[inline(always)]
36443 fn inline_size(_context: fidl::encoding::Context) -> usize {
36444 16
36445 }
36446 }
36447
36448 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ProvisioningProgress, D>
36449 for &ProvisioningProgress
36450 {
36451 #[inline]
36452 unsafe fn encode(
36453 self,
36454 encoder: &mut fidl::encoding::Encoder<'_, D>,
36455 offset: usize,
36456 _depth: fidl::encoding::Depth,
36457 ) -> fidl::Result<()> {
36458 encoder.debug_check_bounds::<ProvisioningProgress>(offset);
36459 encoder.write_num::<u64>(self.ordinal(), offset);
36460 match self {
36461 ProvisioningProgress::Progress(ref val) => {
36462 fidl::encoding::encode_in_envelope::<f32, D>(
36463 <f32 as fidl::encoding::ValueTypeMarker>::borrow(val),
36464 encoder, offset + 8, _depth
36465 )
36466 }
36467 ProvisioningProgress::Identity(ref val) => {
36468 fidl::encoding::encode_in_envelope::<fidl_fuchsia_lowpan_device_common::Identity, D>(
36469 <fidl_fuchsia_lowpan_device_common::Identity as fidl::encoding::ValueTypeMarker>::borrow(val),
36470 encoder, offset + 8, _depth
36471 )
36472 }
36473 ProvisioningProgress::__SourceBreaking { .. } => Err(fidl::Error::UnknownUnionTag),
36474 }
36475 }
36476 }
36477
36478 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ProvisioningProgress {
36479 #[inline(always)]
36480 fn new_empty() -> Self {
36481 Self::__SourceBreaking { unknown_ordinal: 0 }
36482 }
36483
36484 #[inline]
36485 unsafe fn decode(
36486 &mut self,
36487 decoder: &mut fidl::encoding::Decoder<'_, D>,
36488 offset: usize,
36489 mut depth: fidl::encoding::Depth,
36490 ) -> fidl::Result<()> {
36491 decoder.debug_check_bounds::<Self>(offset);
36492 #[allow(unused_variables)]
36493 let next_out_of_line = decoder.next_out_of_line();
36494 let handles_before = decoder.remaining_handles();
36495 let (ordinal, inlined, num_bytes, num_handles) =
36496 fidl::encoding::decode_union_inline_portion(decoder, offset)?;
36497
36498 let member_inline_size = match ordinal {
36499 1 => <f32 as fidl::encoding::TypeMarker>::inline_size(decoder.context),
36500 2 => <fidl_fuchsia_lowpan_device_common::Identity as fidl::encoding::TypeMarker>::inline_size(decoder.context),
36501 0 => return Err(fidl::Error::UnknownUnionTag),
36502 _ => num_bytes as usize,
36503 };
36504
36505 if inlined != (member_inline_size <= 4) {
36506 return Err(fidl::Error::InvalidInlineBitInEnvelope);
36507 }
36508 let _inner_offset;
36509 if inlined {
36510 decoder.check_inline_envelope_padding(offset + 8, member_inline_size)?;
36511 _inner_offset = offset + 8;
36512 } else {
36513 depth.increment()?;
36514 _inner_offset = decoder.out_of_line_offset(member_inline_size)?;
36515 }
36516 match ordinal {
36517 1 => {
36518 #[allow(irrefutable_let_patterns)]
36519 if let ProvisioningProgress::Progress(_) = self {
36520 } else {
36522 *self = ProvisioningProgress::Progress(fidl::new_empty!(f32, D));
36524 }
36525 #[allow(irrefutable_let_patterns)]
36526 if let ProvisioningProgress::Progress(ref mut val) = self {
36527 fidl::decode!(f32, D, val, decoder, _inner_offset, depth)?;
36528 } else {
36529 unreachable!()
36530 }
36531 }
36532 2 => {
36533 #[allow(irrefutable_let_patterns)]
36534 if let ProvisioningProgress::Identity(_) = self {
36535 } else {
36537 *self = ProvisioningProgress::Identity(fidl::new_empty!(
36539 fidl_fuchsia_lowpan_device_common::Identity,
36540 D
36541 ));
36542 }
36543 #[allow(irrefutable_let_patterns)]
36544 if let ProvisioningProgress::Identity(ref mut val) = self {
36545 fidl::decode!(
36546 fidl_fuchsia_lowpan_device_common::Identity,
36547 D,
36548 val,
36549 decoder,
36550 _inner_offset,
36551 depth
36552 )?;
36553 } else {
36554 unreachable!()
36555 }
36556 }
36557 #[allow(deprecated)]
36558 ordinal => {
36559 for _ in 0..num_handles {
36560 decoder.drop_next_handle()?;
36561 }
36562 *self = ProvisioningProgress::__SourceBreaking { unknown_ordinal: ordinal };
36563 }
36564 }
36565 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize) {
36566 return Err(fidl::Error::InvalidNumBytesInEnvelope);
36567 }
36568 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
36569 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
36570 }
36571 Ok(())
36572 }
36573 }
36574}