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 type BasePortId = u8;
14
15pub type VmoId = u8;
22
23pub const FRAME_FEATURES_RAW: u32 = 1;
28
29pub const MAX_DATA_VMOS: u8 = 32;
31
32pub const MAX_DESCRIPTOR_CHAIN: u8 = 4;
34
35pub const MAX_FRAME_TYPES: u32 = 4;
37
38pub const MAX_PORTS: u8 = 32;
40
41pub const MAX_SESSION_NAME: u32 = 64;
43
44pub const MAX_STATUS_BUFFER: u32 = 50;
47
48bitflags! {
49 #[derive(Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Hash)]
51 pub struct EthernetFeatures: u32 {
52 const RAW = 1;
57 const ETHERNET_II = 2;
59 const E_802_1_Q = 4;
61 const E_802_1_Q_IN_Q = 8;
65 const E_802_3_LLC_SNAP = 16;
67 }
68}
69
70impl EthernetFeatures {}
71
72bitflags! {
73 #[derive(Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Hash)]
77 pub struct RxFlags: u32 {
78 const FULL_CHECKSUMS_VERIFIED = 1;
85 const RX_OVERRUN = 536870912;
92 const RX_VALIDATION_ERROR = 1073741824;
101 }
102}
103
104impl RxFlags {}
105
106bitflags! {
107 #[derive(Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Hash)]
109 pub struct SessionFlags: u16 {
110 const REPORT_INVALID_RX = 1;
121 const RECEIVE_RX_POWER_LEASES = 2;
126 }
127}
128
129impl SessionFlags {}
130
131bitflags! {
132 #[derive(Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Hash)]
134 pub struct StatusFlags: u32 {
135 const ONLINE = 1;
138 }
139}
140
141impl StatusFlags {}
142
143bitflags! {
144 #[derive(Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Hash)]
148 pub struct TxFlags: u32 {
149 const COMPUTE_GENERIC_CHECKSUM = 1;
158 }
159}
160
161impl TxFlags {
162 #[inline(always)]
163 pub fn from_bits_allow_unknown(bits: u32) -> Self {
164 Self::from_bits_retain(bits)
165 }
166
167 #[inline(always)]
168 pub fn has_unknown_bits(&self) -> bool {
169 self.get_unknown_bits() != 0
170 }
171
172 #[inline(always)]
173 pub fn get_unknown_bits(&self) -> u32 {
174 self.bits() & !Self::all().bits()
175 }
176}
177
178bitflags! {
179 #[derive(Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Hash)]
183 pub struct TxReturnFlags: u32 {
184 const TX_RET_NOT_SUPPORTED = 1;
189 const TX_RET_OUT_OF_RESOURCES = 2;
193 const TX_RET_NOT_AVAILABLE = 4;
198 const TX_RET_ERROR = 2147483648;
200 }
201}
202
203impl TxReturnFlags {
204 #[inline(always)]
205 pub fn from_bits_allow_unknown(bits: u32) -> Self {
206 Self::from_bits_retain(bits)
207 }
208
209 #[inline(always)]
210 pub fn has_unknown_bits(&self) -> bool {
211 self.get_unknown_bits() != 0
212 }
213
214 #[inline(always)]
215 pub fn get_unknown_bits(&self) -> u32 {
216 self.bits() & !Self::all().bits()
217 }
218}
219
220#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
222pub enum FrameType {
223 Ethernet,
224 Ipv4,
225 Ipv6,
226 #[doc(hidden)]
227 __SourceBreaking {
228 unknown_ordinal: u8,
229 },
230}
231
232#[macro_export]
234macro_rules! FrameTypeUnknown {
235 () => {
236 _
237 };
238}
239
240impl FrameType {
241 #[inline]
242 pub fn from_primitive(prim: u8) -> Option<Self> {
243 match prim {
244 1 => Some(Self::Ethernet),
245 2 => Some(Self::Ipv4),
246 3 => Some(Self::Ipv6),
247 _ => None,
248 }
249 }
250
251 #[inline]
252 pub fn from_primitive_allow_unknown(prim: u8) -> Self {
253 match prim {
254 1 => Self::Ethernet,
255 2 => Self::Ipv4,
256 3 => Self::Ipv6,
257 unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
258 }
259 }
260
261 #[inline]
262 pub fn unknown() -> Self {
263 Self::__SourceBreaking { unknown_ordinal: 0xff }
264 }
265
266 #[inline]
267 pub const fn into_primitive(self) -> u8 {
268 match self {
269 Self::Ethernet => 1,
270 Self::Ipv4 => 2,
271 Self::Ipv6 => 3,
272 Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
273 }
274 }
275
276 #[inline]
277 pub fn is_unknown(&self) -> bool {
278 match self {
279 Self::__SourceBreaking { unknown_ordinal: _ } => true,
280 _ => false,
281 }
282 }
283}
284
285#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
287pub enum MacFilterMode {
288 MulticastFilter,
291 MulticastPromiscuous,
294 Promiscuous,
296 #[doc(hidden)]
297 __SourceBreaking { unknown_ordinal: u32 },
298}
299
300#[macro_export]
302macro_rules! MacFilterModeUnknown {
303 () => {
304 _
305 };
306}
307
308impl MacFilterMode {
309 #[inline]
310 pub fn from_primitive(prim: u32) -> Option<Self> {
311 match prim {
312 0 => Some(Self::MulticastFilter),
313 1 => Some(Self::MulticastPromiscuous),
314 2 => Some(Self::Promiscuous),
315 _ => None,
316 }
317 }
318
319 #[inline]
320 pub fn from_primitive_allow_unknown(prim: u32) -> Self {
321 match prim {
322 0 => Self::MulticastFilter,
323 1 => Self::MulticastPromiscuous,
324 2 => Self::Promiscuous,
325 unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
326 }
327 }
328
329 #[inline]
330 pub fn unknown() -> Self {
331 Self::__SourceBreaking { unknown_ordinal: 0xffffffff }
332 }
333
334 #[inline]
335 pub const fn into_primitive(self) -> u32 {
336 match self {
337 Self::MulticastFilter => 0,
338 Self::MulticastPromiscuous => 1,
339 Self::Promiscuous => 2,
340 Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
341 }
342 }
343
344 #[inline]
345 pub fn is_unknown(&self) -> bool {
346 match self {
347 Self::__SourceBreaking { unknown_ordinal: _ } => true,
348 _ => false,
349 }
350 }
351}
352
353#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
359pub enum PortClass {
360 Ethernet,
361 WlanClient,
362 Ppp,
363 Bridge,
364 WlanAp,
365 Virtual,
366 Lowpan,
367 #[doc(hidden)]
368 __SourceBreaking {
369 unknown_ordinal: u16,
370 },
371}
372
373#[macro_export]
375macro_rules! PortClassUnknown {
376 () => {
377 _
378 };
379}
380
381impl PortClass {
382 #[inline]
383 pub fn from_primitive(prim: u16) -> Option<Self> {
384 match prim {
385 1 => Some(Self::Ethernet),
386 2 => Some(Self::WlanClient),
387 3 => Some(Self::Ppp),
388 4 => Some(Self::Bridge),
389 5 => Some(Self::WlanAp),
390 6 => Some(Self::Virtual),
391 7 => Some(Self::Lowpan),
392 _ => None,
393 }
394 }
395
396 #[inline]
397 pub fn from_primitive_allow_unknown(prim: u16) -> Self {
398 match prim {
399 1 => Self::Ethernet,
400 2 => Self::WlanClient,
401 3 => Self::Ppp,
402 4 => Self::Bridge,
403 5 => Self::WlanAp,
404 6 => Self::Virtual,
405 7 => Self::Lowpan,
406 unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
407 }
408 }
409
410 #[inline]
411 pub fn unknown() -> Self {
412 Self::__SourceBreaking { unknown_ordinal: 0xffff }
413 }
414
415 #[inline]
416 pub const fn into_primitive(self) -> u16 {
417 match self {
418 Self::Ethernet => 1,
419 Self::WlanClient => 2,
420 Self::Ppp => 3,
421 Self::Bridge => 4,
422 Self::WlanAp => 5,
423 Self::Virtual => 6,
424 Self::Lowpan => 7,
425 Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
426 }
427 }
428
429 #[inline]
430 pub fn is_unknown(&self) -> bool {
431 match self {
432 Self::__SourceBreaking { unknown_ordinal: _ } => true,
433 _ => false,
434 }
435 }
436}
437
438#[derive(Clone, Debug, PartialEq)]
439pub struct DeviceGetInfoResponse {
440 pub info: DeviceInfo,
441}
442
443impl fidl::Persistable for DeviceGetInfoResponse {}
444
445#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
446pub struct Empty;
447
448impl fidl::Persistable for Empty {}
449
450#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
464pub struct FrameTypeSupport {
465 pub type_: FrameType,
467 pub features: u32,
469 pub supported_flags: TxFlags,
471}
472
473impl fidl::Persistable for FrameTypeSupport {}
474
475#[derive(Clone, Debug, PartialEq)]
476pub struct MacAddressingAddMulticastAddressRequest {
477 pub address: fidl_fuchsia_net_common::MacAddress,
478}
479
480impl fidl::Persistable for MacAddressingAddMulticastAddressRequest {}
481
482#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
483#[repr(C)]
484pub struct MacAddressingAddMulticastAddressResponse {
485 pub status: i32,
486}
487
488impl fidl::Persistable for MacAddressingAddMulticastAddressResponse {}
489
490#[derive(Clone, Debug, PartialEq)]
491pub struct MacAddressingGetUnicastAddressResponse {
492 pub address: fidl_fuchsia_net_common::MacAddress,
493}
494
495impl fidl::Persistable for MacAddressingGetUnicastAddressResponse {}
496
497#[derive(Clone, Debug, PartialEq)]
498pub struct MacAddressingRemoveMulticastAddressRequest {
499 pub address: fidl_fuchsia_net_common::MacAddress,
500}
501
502impl fidl::Persistable for MacAddressingRemoveMulticastAddressRequest {}
503
504#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
505#[repr(C)]
506pub struct MacAddressingRemoveMulticastAddressResponse {
507 pub status: i32,
508}
509
510impl fidl::Persistable for MacAddressingRemoveMulticastAddressResponse {}
511
512#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
513pub struct MacAddressingSetModeRequest {
514 pub mode: MacFilterMode,
515}
516
517impl fidl::Persistable for MacAddressingSetModeRequest {}
518
519#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
520#[repr(C)]
521pub struct MacAddressingSetModeResponse {
522 pub status: i32,
523}
524
525impl fidl::Persistable for MacAddressingSetModeResponse {}
526
527#[derive(Clone, Debug, PartialEq)]
528pub struct PortGetInfoResponse {
529 pub info: PortInfo,
530}
531
532impl fidl::Persistable for PortGetInfoResponse {}
533
534#[derive(Clone, Debug, PartialEq)]
535pub struct PortGetStatusResponse {
536 pub status: PortStatus,
537}
538
539impl fidl::Persistable for PortGetStatusResponse {}
540
541#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
543#[repr(C)]
544pub struct PortId {
545 pub base: u8,
549 pub salt: u8,
552}
553
554impl fidl::Persistable for PortId {}
555
556#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
557pub struct PortWatcherWatchResponse {
558 pub event: DevicePortEvent,
559}
560
561impl fidl::Persistable for PortWatcherWatchResponse {}
562
563#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
564pub struct SessionAttachRequest {
565 pub port: PortId,
566 pub rx_frames: Vec<FrameType>,
567}
568
569impl fidl::Persistable for SessionAttachRequest {}
570
571#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
572#[repr(C)]
573pub struct SessionDetachRequest {
574 pub port: PortId,
575}
576
577impl fidl::Persistable for SessionDetachRequest {}
578
579#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
580#[repr(C)]
581pub struct SessionRegisterForTxResponse {
582 pub successful: u8,
583 pub status: i32,
584}
585
586impl fidl::Persistable for SessionRegisterForTxResponse {}
587
588#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
589#[repr(C)]
590pub struct SessionUnregisterForTxResponse {
591 pub successful: u8,
592 pub status: i32,
593}
594
595impl fidl::Persistable for SessionUnregisterForTxResponse {}
596
597#[derive(Clone, Debug, PartialEq)]
598pub struct StatusWatcherWatchStatusResponse {
599 pub port_status: PortStatus,
600}
601
602impl fidl::Persistable for StatusWatcherWatchStatusResponse {}
603
604#[derive(Clone, Debug, Default, PartialEq)]
606pub struct DeviceBaseInfo {
607 pub rx_depth: Option<u16>,
612 pub tx_depth: Option<u16>,
617 pub buffer_alignment: Option<u32>,
623 pub max_buffer_length: Option<u32>,
627 pub min_rx_buffer_length: Option<u32>,
629 pub min_tx_buffer_length: Option<u32>,
637 pub min_tx_buffer_head: Option<u16>,
640 pub min_tx_buffer_tail: Option<u16>,
643 pub max_buffer_parts: Option<u8>,
645 pub min_rx_buffers: Option<u16>,
649 #[doc(hidden)]
650 pub __source_breaking: fidl::marker::SourceBreaking,
651}
652
653impl fidl::Persistable for DeviceBaseInfo {}
654
655#[derive(Clone, Debug, Default, PartialEq)]
657pub struct DeviceInfo {
658 pub min_descriptor_length: Option<u8>,
665 pub descriptor_version: Option<u8>,
667 pub base_info: Option<DeviceBaseInfo>,
669 #[doc(hidden)]
670 pub __source_breaking: fidl::marker::SourceBreaking,
671}
672
673impl fidl::Persistable for DeviceInfo {}
674
675#[derive(Clone, Debug, Default, PartialEq)]
677pub struct PortBaseInfo {
678 pub port_class: Option<PortClass>,
680 pub rx_types: Option<Vec<FrameType>>,
685 pub tx_types: Option<Vec<FrameTypeSupport>>,
697 #[doc(hidden)]
698 pub __source_breaking: fidl::marker::SourceBreaking,
699}
700
701impl fidl::Persistable for PortBaseInfo {}
702
703#[derive(Clone, Debug, Default, PartialEq)]
704pub struct PortGetCountersResponse {
705 pub rx_frames: Option<u64>,
707 pub rx_bytes: Option<u64>,
709 pub tx_frames: Option<u64>,
711 pub tx_bytes: Option<u64>,
713 #[doc(hidden)]
714 pub __source_breaking: fidl::marker::SourceBreaking,
715}
716
717impl fidl::Persistable for PortGetCountersResponse {}
718
719#[derive(Clone, Debug, Default, PartialEq)]
721pub struct PortInfo {
722 pub id: Option<PortId>,
724 pub base_info: Option<PortBaseInfo>,
725 #[doc(hidden)]
726 pub __source_breaking: fidl::marker::SourceBreaking,
727}
728
729impl fidl::Persistable for PortInfo {}
730
731#[derive(Clone, Debug, Default, PartialEq)]
733pub struct PortStatus {
734 pub flags: Option<StatusFlags>,
736 pub mtu: Option<u32>,
741 #[doc(hidden)]
742 pub __source_breaking: fidl::marker::SourceBreaking,
743}
744
745impl fidl::Persistable for PortStatus {}
746
747#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
749pub enum DevicePortEvent {
750 Existing(PortId),
752 Added(PortId),
754 Removed(PortId),
756 Idle(Empty),
758}
759
760impl DevicePortEvent {
761 #[inline]
762 pub fn ordinal(&self) -> u64 {
763 match *self {
764 Self::Existing(_) => 1,
765 Self::Added(_) => 2,
766 Self::Removed(_) => 3,
767 Self::Idle(_) => 4,
768 }
769 }
770}
771
772impl fidl::Persistable for DevicePortEvent {}
773
774pub mod device_ordinals {
775 pub const GET_INFO: u64 = 0x3c500ca9341e8f56;
776 pub const OPEN_SESSION: u64 = 0x25940b82146dcf67;
777 pub const GET_PORT: u64 = 0x340a852c955ba2a6;
778 pub const GET_PORT_WATCHER: u64 = 0x104f43c937c39f0c;
779 pub const CLONE: u64 = 0x5882ea09b3809af4;
780}
781
782pub mod diagnostics_ordinals {
783 pub const LOG_DEBUG_INFO_TO_SYSLOG: u64 = 0x4222897dfe1f4b4a;
784}
785
786pub mod mac_addressing_ordinals {
787 pub const GET_UNICAST_ADDRESS: u64 = 0x2c60b82a4ecfaebe;
788 pub const SET_MODE: u64 = 0x6297b8dbf03c58c;
789 pub const ADD_MULTICAST_ADDRESS: u64 = 0xf5637ff11cf0c25;
790 pub const REMOVE_MULTICAST_ADDRESS: u64 = 0x5dddf4e3ba4e2560;
791}
792
793pub mod port_ordinals {
794 pub const GET_INFO: u64 = 0x276cf65feb554ebd;
795 pub const GET_STATUS: u64 = 0x4235650aacca60b2;
796 pub const GET_STATUS_WATCHER: u64 = 0x65511ab81c1bd8d4;
797 pub const GET_MAC: u64 = 0x2c6ec2988aefc0f6;
798 pub const GET_DEVICE: u64 = 0x7de34747235d2d80;
799 pub const CLONE: u64 = 0x4e4764150b4942d3;
800 pub const GET_COUNTERS: u64 = 0x6a213b03c4fcbbac;
801 pub const GET_DIAGNOSTICS: u64 = 0x381faa4ed75e399c;
802 pub const GET_IDENTITY: u64 = 0x75134ce0bc114e5a;
803 pub const GET_POWER_DEPENDENCY_TOKEN: u64 = 0x7bec1da6ec2476ed;
804}
805
806pub mod port_watcher_ordinals {
807 pub const WATCH: u64 = 0x3e87244b74fff55e;
808}
809
810pub mod session_ordinals {
811 pub const ATTACH: u64 = 0x1e89c9013e201379;
812 pub const DETACH: u64 = 0x68c40cf8fb549867;
813 pub const CLOSE: u64 = 0x393d5070394a92f6;
814 pub const WATCH_DELEGATED_RX_LEASE: u64 = 0x764d823ee64803b5;
815 pub const REGISTER_FOR_TX: u64 = 0x36321799ce2a081a;
816 pub const UNREGISTER_FOR_TX: u64 = 0x3e76b16030d62796;
817}
818
819pub mod status_watcher_ordinals {
820 pub const WATCH_STATUS: u64 = 0x1369a8125c0862b9;
821}
822
823mod internal {
824 use super::*;
825 unsafe impl fidl::encoding::TypeMarker for EthernetFeatures {
826 type Owned = Self;
827
828 #[inline(always)]
829 fn inline_align(_context: fidl::encoding::Context) -> usize {
830 4
831 }
832
833 #[inline(always)]
834 fn inline_size(_context: fidl::encoding::Context) -> usize {
835 4
836 }
837 }
838
839 impl fidl::encoding::ValueTypeMarker for EthernetFeatures {
840 type Borrowed<'a> = Self;
841 #[inline(always)]
842 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
843 *value
844 }
845 }
846
847 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
848 for EthernetFeatures
849 {
850 #[inline]
851 unsafe fn encode(
852 self,
853 encoder: &mut fidl::encoding::Encoder<'_, D>,
854 offset: usize,
855 _depth: fidl::encoding::Depth,
856 ) -> fidl::Result<()> {
857 encoder.debug_check_bounds::<Self>(offset);
858 if self.bits() & Self::all().bits() != self.bits() {
859 return Err(fidl::Error::InvalidBitsValue);
860 }
861 encoder.write_num(self.bits(), offset);
862 Ok(())
863 }
864 }
865
866 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for EthernetFeatures {
867 #[inline(always)]
868 fn new_empty() -> Self {
869 Self::empty()
870 }
871
872 #[inline]
873 unsafe fn decode(
874 &mut self,
875 decoder: &mut fidl::encoding::Decoder<'_, D>,
876 offset: usize,
877 _depth: fidl::encoding::Depth,
878 ) -> fidl::Result<()> {
879 decoder.debug_check_bounds::<Self>(offset);
880 let prim = decoder.read_num::<u32>(offset);
881 *self = Self::from_bits(prim).ok_or(fidl::Error::InvalidBitsValue)?;
882 Ok(())
883 }
884 }
885 unsafe impl fidl::encoding::TypeMarker for RxFlags {
886 type Owned = Self;
887
888 #[inline(always)]
889 fn inline_align(_context: fidl::encoding::Context) -> usize {
890 4
891 }
892
893 #[inline(always)]
894 fn inline_size(_context: fidl::encoding::Context) -> usize {
895 4
896 }
897 }
898
899 impl fidl::encoding::ValueTypeMarker for RxFlags {
900 type Borrowed<'a> = Self;
901 #[inline(always)]
902 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
903 *value
904 }
905 }
906
907 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for RxFlags {
908 #[inline]
909 unsafe fn encode(
910 self,
911 encoder: &mut fidl::encoding::Encoder<'_, D>,
912 offset: usize,
913 _depth: fidl::encoding::Depth,
914 ) -> fidl::Result<()> {
915 encoder.debug_check_bounds::<Self>(offset);
916 if self.bits() & Self::all().bits() != self.bits() {
917 return Err(fidl::Error::InvalidBitsValue);
918 }
919 encoder.write_num(self.bits(), offset);
920 Ok(())
921 }
922 }
923
924 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for RxFlags {
925 #[inline(always)]
926 fn new_empty() -> Self {
927 Self::empty()
928 }
929
930 #[inline]
931 unsafe fn decode(
932 &mut self,
933 decoder: &mut fidl::encoding::Decoder<'_, D>,
934 offset: usize,
935 _depth: fidl::encoding::Depth,
936 ) -> fidl::Result<()> {
937 decoder.debug_check_bounds::<Self>(offset);
938 let prim = decoder.read_num::<u32>(offset);
939 *self = Self::from_bits(prim).ok_or(fidl::Error::InvalidBitsValue)?;
940 Ok(())
941 }
942 }
943 unsafe impl fidl::encoding::TypeMarker for SessionFlags {
944 type Owned = Self;
945
946 #[inline(always)]
947 fn inline_align(_context: fidl::encoding::Context) -> usize {
948 2
949 }
950
951 #[inline(always)]
952 fn inline_size(_context: fidl::encoding::Context) -> usize {
953 2
954 }
955 }
956
957 impl fidl::encoding::ValueTypeMarker for SessionFlags {
958 type Borrowed<'a> = Self;
959 #[inline(always)]
960 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
961 *value
962 }
963 }
964
965 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for SessionFlags {
966 #[inline]
967 unsafe fn encode(
968 self,
969 encoder: &mut fidl::encoding::Encoder<'_, D>,
970 offset: usize,
971 _depth: fidl::encoding::Depth,
972 ) -> fidl::Result<()> {
973 encoder.debug_check_bounds::<Self>(offset);
974 if self.bits() & Self::all().bits() != self.bits() {
975 return Err(fidl::Error::InvalidBitsValue);
976 }
977 encoder.write_num(self.bits(), offset);
978 Ok(())
979 }
980 }
981
982 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for SessionFlags {
983 #[inline(always)]
984 fn new_empty() -> Self {
985 Self::empty()
986 }
987
988 #[inline]
989 unsafe fn decode(
990 &mut self,
991 decoder: &mut fidl::encoding::Decoder<'_, D>,
992 offset: usize,
993 _depth: fidl::encoding::Depth,
994 ) -> fidl::Result<()> {
995 decoder.debug_check_bounds::<Self>(offset);
996 let prim = decoder.read_num::<u16>(offset);
997 *self = Self::from_bits(prim).ok_or(fidl::Error::InvalidBitsValue)?;
998 Ok(())
999 }
1000 }
1001 unsafe impl fidl::encoding::TypeMarker for StatusFlags {
1002 type Owned = Self;
1003
1004 #[inline(always)]
1005 fn inline_align(_context: fidl::encoding::Context) -> usize {
1006 4
1007 }
1008
1009 #[inline(always)]
1010 fn inline_size(_context: fidl::encoding::Context) -> usize {
1011 4
1012 }
1013 }
1014
1015 impl fidl::encoding::ValueTypeMarker for StatusFlags {
1016 type Borrowed<'a> = Self;
1017 #[inline(always)]
1018 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1019 *value
1020 }
1021 }
1022
1023 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for StatusFlags {
1024 #[inline]
1025 unsafe fn encode(
1026 self,
1027 encoder: &mut fidl::encoding::Encoder<'_, D>,
1028 offset: usize,
1029 _depth: fidl::encoding::Depth,
1030 ) -> fidl::Result<()> {
1031 encoder.debug_check_bounds::<Self>(offset);
1032 if self.bits() & Self::all().bits() != self.bits() {
1033 return Err(fidl::Error::InvalidBitsValue);
1034 }
1035 encoder.write_num(self.bits(), offset);
1036 Ok(())
1037 }
1038 }
1039
1040 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for StatusFlags {
1041 #[inline(always)]
1042 fn new_empty() -> Self {
1043 Self::empty()
1044 }
1045
1046 #[inline]
1047 unsafe fn decode(
1048 &mut self,
1049 decoder: &mut fidl::encoding::Decoder<'_, D>,
1050 offset: usize,
1051 _depth: fidl::encoding::Depth,
1052 ) -> fidl::Result<()> {
1053 decoder.debug_check_bounds::<Self>(offset);
1054 let prim = decoder.read_num::<u32>(offset);
1055 *self = Self::from_bits(prim).ok_or(fidl::Error::InvalidBitsValue)?;
1056 Ok(())
1057 }
1058 }
1059 unsafe impl fidl::encoding::TypeMarker for TxFlags {
1060 type Owned = Self;
1061
1062 #[inline(always)]
1063 fn inline_align(_context: fidl::encoding::Context) -> usize {
1064 4
1065 }
1066
1067 #[inline(always)]
1068 fn inline_size(_context: fidl::encoding::Context) -> usize {
1069 4
1070 }
1071 }
1072
1073 impl fidl::encoding::ValueTypeMarker for TxFlags {
1074 type Borrowed<'a> = Self;
1075 #[inline(always)]
1076 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1077 *value
1078 }
1079 }
1080
1081 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for TxFlags {
1082 #[inline]
1083 unsafe fn encode(
1084 self,
1085 encoder: &mut fidl::encoding::Encoder<'_, D>,
1086 offset: usize,
1087 _depth: fidl::encoding::Depth,
1088 ) -> fidl::Result<()> {
1089 encoder.debug_check_bounds::<Self>(offset);
1090 encoder.write_num(self.bits(), offset);
1091 Ok(())
1092 }
1093 }
1094
1095 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for TxFlags {
1096 #[inline(always)]
1097 fn new_empty() -> Self {
1098 Self::empty()
1099 }
1100
1101 #[inline]
1102 unsafe fn decode(
1103 &mut self,
1104 decoder: &mut fidl::encoding::Decoder<'_, D>,
1105 offset: usize,
1106 _depth: fidl::encoding::Depth,
1107 ) -> fidl::Result<()> {
1108 decoder.debug_check_bounds::<Self>(offset);
1109 let prim = decoder.read_num::<u32>(offset);
1110 *self = Self::from_bits_allow_unknown(prim);
1111 Ok(())
1112 }
1113 }
1114 unsafe impl fidl::encoding::TypeMarker for TxReturnFlags {
1115 type Owned = Self;
1116
1117 #[inline(always)]
1118 fn inline_align(_context: fidl::encoding::Context) -> usize {
1119 4
1120 }
1121
1122 #[inline(always)]
1123 fn inline_size(_context: fidl::encoding::Context) -> usize {
1124 4
1125 }
1126 }
1127
1128 impl fidl::encoding::ValueTypeMarker for TxReturnFlags {
1129 type Borrowed<'a> = Self;
1130 #[inline(always)]
1131 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1132 *value
1133 }
1134 }
1135
1136 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for TxReturnFlags {
1137 #[inline]
1138 unsafe fn encode(
1139 self,
1140 encoder: &mut fidl::encoding::Encoder<'_, D>,
1141 offset: usize,
1142 _depth: fidl::encoding::Depth,
1143 ) -> fidl::Result<()> {
1144 encoder.debug_check_bounds::<Self>(offset);
1145 encoder.write_num(self.bits(), offset);
1146 Ok(())
1147 }
1148 }
1149
1150 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for TxReturnFlags {
1151 #[inline(always)]
1152 fn new_empty() -> Self {
1153 Self::empty()
1154 }
1155
1156 #[inline]
1157 unsafe fn decode(
1158 &mut self,
1159 decoder: &mut fidl::encoding::Decoder<'_, D>,
1160 offset: usize,
1161 _depth: fidl::encoding::Depth,
1162 ) -> fidl::Result<()> {
1163 decoder.debug_check_bounds::<Self>(offset);
1164 let prim = decoder.read_num::<u32>(offset);
1165 *self = Self::from_bits_allow_unknown(prim);
1166 Ok(())
1167 }
1168 }
1169 unsafe impl fidl::encoding::TypeMarker for FrameType {
1170 type Owned = Self;
1171
1172 #[inline(always)]
1173 fn inline_align(_context: fidl::encoding::Context) -> usize {
1174 std::mem::align_of::<u8>()
1175 }
1176
1177 #[inline(always)]
1178 fn inline_size(_context: fidl::encoding::Context) -> usize {
1179 std::mem::size_of::<u8>()
1180 }
1181
1182 #[inline(always)]
1183 fn encode_is_copy() -> bool {
1184 false
1185 }
1186
1187 #[inline(always)]
1188 fn decode_is_copy() -> bool {
1189 false
1190 }
1191 }
1192
1193 impl fidl::encoding::ValueTypeMarker for FrameType {
1194 type Borrowed<'a> = Self;
1195 #[inline(always)]
1196 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1197 *value
1198 }
1199 }
1200
1201 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for FrameType {
1202 #[inline]
1203 unsafe fn encode(
1204 self,
1205 encoder: &mut fidl::encoding::Encoder<'_, D>,
1206 offset: usize,
1207 _depth: fidl::encoding::Depth,
1208 ) -> fidl::Result<()> {
1209 encoder.debug_check_bounds::<Self>(offset);
1210 encoder.write_num(self.into_primitive(), offset);
1211 Ok(())
1212 }
1213 }
1214
1215 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for FrameType {
1216 #[inline(always)]
1217 fn new_empty() -> Self {
1218 Self::unknown()
1219 }
1220
1221 #[inline]
1222 unsafe fn decode(
1223 &mut self,
1224 decoder: &mut fidl::encoding::Decoder<'_, D>,
1225 offset: usize,
1226 _depth: fidl::encoding::Depth,
1227 ) -> fidl::Result<()> {
1228 decoder.debug_check_bounds::<Self>(offset);
1229 let prim = decoder.read_num::<u8>(offset);
1230
1231 *self = Self::from_primitive_allow_unknown(prim);
1232 Ok(())
1233 }
1234 }
1235 unsafe impl fidl::encoding::TypeMarker for MacFilterMode {
1236 type Owned = Self;
1237
1238 #[inline(always)]
1239 fn inline_align(_context: fidl::encoding::Context) -> usize {
1240 std::mem::align_of::<u32>()
1241 }
1242
1243 #[inline(always)]
1244 fn inline_size(_context: fidl::encoding::Context) -> usize {
1245 std::mem::size_of::<u32>()
1246 }
1247
1248 #[inline(always)]
1249 fn encode_is_copy() -> bool {
1250 false
1251 }
1252
1253 #[inline(always)]
1254 fn decode_is_copy() -> bool {
1255 false
1256 }
1257 }
1258
1259 impl fidl::encoding::ValueTypeMarker for MacFilterMode {
1260 type Borrowed<'a> = Self;
1261 #[inline(always)]
1262 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1263 *value
1264 }
1265 }
1266
1267 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for MacFilterMode {
1268 #[inline]
1269 unsafe fn encode(
1270 self,
1271 encoder: &mut fidl::encoding::Encoder<'_, D>,
1272 offset: usize,
1273 _depth: fidl::encoding::Depth,
1274 ) -> fidl::Result<()> {
1275 encoder.debug_check_bounds::<Self>(offset);
1276 encoder.write_num(self.into_primitive(), offset);
1277 Ok(())
1278 }
1279 }
1280
1281 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for MacFilterMode {
1282 #[inline(always)]
1283 fn new_empty() -> Self {
1284 Self::unknown()
1285 }
1286
1287 #[inline]
1288 unsafe fn decode(
1289 &mut self,
1290 decoder: &mut fidl::encoding::Decoder<'_, D>,
1291 offset: usize,
1292 _depth: fidl::encoding::Depth,
1293 ) -> fidl::Result<()> {
1294 decoder.debug_check_bounds::<Self>(offset);
1295 let prim = decoder.read_num::<u32>(offset);
1296
1297 *self = Self::from_primitive_allow_unknown(prim);
1298 Ok(())
1299 }
1300 }
1301 unsafe impl fidl::encoding::TypeMarker for PortClass {
1302 type Owned = Self;
1303
1304 #[inline(always)]
1305 fn inline_align(_context: fidl::encoding::Context) -> usize {
1306 std::mem::align_of::<u16>()
1307 }
1308
1309 #[inline(always)]
1310 fn inline_size(_context: fidl::encoding::Context) -> usize {
1311 std::mem::size_of::<u16>()
1312 }
1313
1314 #[inline(always)]
1315 fn encode_is_copy() -> bool {
1316 false
1317 }
1318
1319 #[inline(always)]
1320 fn decode_is_copy() -> bool {
1321 false
1322 }
1323 }
1324
1325 impl fidl::encoding::ValueTypeMarker for PortClass {
1326 type Borrowed<'a> = Self;
1327 #[inline(always)]
1328 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1329 *value
1330 }
1331 }
1332
1333 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for PortClass {
1334 #[inline]
1335 unsafe fn encode(
1336 self,
1337 encoder: &mut fidl::encoding::Encoder<'_, D>,
1338 offset: usize,
1339 _depth: fidl::encoding::Depth,
1340 ) -> fidl::Result<()> {
1341 encoder.debug_check_bounds::<Self>(offset);
1342 encoder.write_num(self.into_primitive(), offset);
1343 Ok(())
1344 }
1345 }
1346
1347 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for PortClass {
1348 #[inline(always)]
1349 fn new_empty() -> Self {
1350 Self::unknown()
1351 }
1352
1353 #[inline]
1354 unsafe fn decode(
1355 &mut self,
1356 decoder: &mut fidl::encoding::Decoder<'_, D>,
1357 offset: usize,
1358 _depth: fidl::encoding::Depth,
1359 ) -> fidl::Result<()> {
1360 decoder.debug_check_bounds::<Self>(offset);
1361 let prim = decoder.read_num::<u16>(offset);
1362
1363 *self = Self::from_primitive_allow_unknown(prim);
1364 Ok(())
1365 }
1366 }
1367
1368 impl fidl::encoding::ValueTypeMarker for DeviceGetInfoResponse {
1369 type Borrowed<'a> = &'a Self;
1370 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1371 value
1372 }
1373 }
1374
1375 unsafe impl fidl::encoding::TypeMarker for DeviceGetInfoResponse {
1376 type Owned = Self;
1377
1378 #[inline(always)]
1379 fn inline_align(_context: fidl::encoding::Context) -> usize {
1380 8
1381 }
1382
1383 #[inline(always)]
1384 fn inline_size(_context: fidl::encoding::Context) -> usize {
1385 16
1386 }
1387 }
1388
1389 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<DeviceGetInfoResponse, D>
1390 for &DeviceGetInfoResponse
1391 {
1392 #[inline]
1393 unsafe fn encode(
1394 self,
1395 encoder: &mut fidl::encoding::Encoder<'_, D>,
1396 offset: usize,
1397 _depth: fidl::encoding::Depth,
1398 ) -> fidl::Result<()> {
1399 encoder.debug_check_bounds::<DeviceGetInfoResponse>(offset);
1400 fidl::encoding::Encode::<DeviceGetInfoResponse, D>::encode(
1402 (<DeviceInfo as fidl::encoding::ValueTypeMarker>::borrow(&self.info),),
1403 encoder,
1404 offset,
1405 _depth,
1406 )
1407 }
1408 }
1409 unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<DeviceInfo, D>>
1410 fidl::encoding::Encode<DeviceGetInfoResponse, D> for (T0,)
1411 {
1412 #[inline]
1413 unsafe fn encode(
1414 self,
1415 encoder: &mut fidl::encoding::Encoder<'_, D>,
1416 offset: usize,
1417 depth: fidl::encoding::Depth,
1418 ) -> fidl::Result<()> {
1419 encoder.debug_check_bounds::<DeviceGetInfoResponse>(offset);
1420 self.0.encode(encoder, offset + 0, depth)?;
1424 Ok(())
1425 }
1426 }
1427
1428 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for DeviceGetInfoResponse {
1429 #[inline(always)]
1430 fn new_empty() -> Self {
1431 Self { info: fidl::new_empty!(DeviceInfo, D) }
1432 }
1433
1434 #[inline]
1435 unsafe fn decode(
1436 &mut self,
1437 decoder: &mut fidl::encoding::Decoder<'_, D>,
1438 offset: usize,
1439 _depth: fidl::encoding::Depth,
1440 ) -> fidl::Result<()> {
1441 decoder.debug_check_bounds::<Self>(offset);
1442 fidl::decode!(DeviceInfo, D, &mut self.info, decoder, offset + 0, _depth)?;
1444 Ok(())
1445 }
1446 }
1447
1448 impl fidl::encoding::ValueTypeMarker for Empty {
1449 type Borrowed<'a> = &'a Self;
1450 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1451 value
1452 }
1453 }
1454
1455 unsafe impl fidl::encoding::TypeMarker for Empty {
1456 type Owned = Self;
1457
1458 #[inline(always)]
1459 fn inline_align(_context: fidl::encoding::Context) -> usize {
1460 1
1461 }
1462
1463 #[inline(always)]
1464 fn inline_size(_context: fidl::encoding::Context) -> usize {
1465 1
1466 }
1467 }
1468
1469 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Empty, D> for &Empty {
1470 #[inline]
1471 unsafe fn encode(
1472 self,
1473 encoder: &mut fidl::encoding::Encoder<'_, D>,
1474 offset: usize,
1475 _depth: fidl::encoding::Depth,
1476 ) -> fidl::Result<()> {
1477 encoder.debug_check_bounds::<Empty>(offset);
1478 encoder.write_num(0u8, offset);
1479 Ok(())
1480 }
1481 }
1482
1483 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Empty {
1484 #[inline(always)]
1485 fn new_empty() -> Self {
1486 Self
1487 }
1488
1489 #[inline]
1490 unsafe fn decode(
1491 &mut self,
1492 decoder: &mut fidl::encoding::Decoder<'_, D>,
1493 offset: usize,
1494 _depth: fidl::encoding::Depth,
1495 ) -> fidl::Result<()> {
1496 decoder.debug_check_bounds::<Self>(offset);
1497 match decoder.read_num::<u8>(offset) {
1498 0 => Ok(()),
1499 _ => Err(fidl::Error::Invalid),
1500 }
1501 }
1502 }
1503
1504 impl fidl::encoding::ValueTypeMarker for FrameTypeSupport {
1505 type Borrowed<'a> = &'a Self;
1506 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1507 value
1508 }
1509 }
1510
1511 unsafe impl fidl::encoding::TypeMarker for FrameTypeSupport {
1512 type Owned = Self;
1513
1514 #[inline(always)]
1515 fn inline_align(_context: fidl::encoding::Context) -> usize {
1516 4
1517 }
1518
1519 #[inline(always)]
1520 fn inline_size(_context: fidl::encoding::Context) -> usize {
1521 12
1522 }
1523 }
1524
1525 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<FrameTypeSupport, D>
1526 for &FrameTypeSupport
1527 {
1528 #[inline]
1529 unsafe fn encode(
1530 self,
1531 encoder: &mut fidl::encoding::Encoder<'_, D>,
1532 offset: usize,
1533 _depth: fidl::encoding::Depth,
1534 ) -> fidl::Result<()> {
1535 encoder.debug_check_bounds::<FrameTypeSupport>(offset);
1536 fidl::encoding::Encode::<FrameTypeSupport, D>::encode(
1538 (
1539 <FrameType as fidl::encoding::ValueTypeMarker>::borrow(&self.type_),
1540 <u32 as fidl::encoding::ValueTypeMarker>::borrow(&self.features),
1541 <TxFlags as fidl::encoding::ValueTypeMarker>::borrow(&self.supported_flags),
1542 ),
1543 encoder,
1544 offset,
1545 _depth,
1546 )
1547 }
1548 }
1549 unsafe impl<
1550 D: fidl::encoding::ResourceDialect,
1551 T0: fidl::encoding::Encode<FrameType, D>,
1552 T1: fidl::encoding::Encode<u32, D>,
1553 T2: fidl::encoding::Encode<TxFlags, D>,
1554 > fidl::encoding::Encode<FrameTypeSupport, D> for (T0, T1, T2)
1555 {
1556 #[inline]
1557 unsafe fn encode(
1558 self,
1559 encoder: &mut fidl::encoding::Encoder<'_, D>,
1560 offset: usize,
1561 depth: fidl::encoding::Depth,
1562 ) -> fidl::Result<()> {
1563 encoder.debug_check_bounds::<FrameTypeSupport>(offset);
1564 unsafe {
1567 let ptr = encoder.buf.as_mut_ptr().add(offset).offset(0);
1568 (ptr as *mut u32).write_unaligned(0);
1569 }
1570 self.0.encode(encoder, offset + 0, depth)?;
1572 self.1.encode(encoder, offset + 4, depth)?;
1573 self.2.encode(encoder, offset + 8, depth)?;
1574 Ok(())
1575 }
1576 }
1577
1578 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for FrameTypeSupport {
1579 #[inline(always)]
1580 fn new_empty() -> Self {
1581 Self {
1582 type_: fidl::new_empty!(FrameType, D),
1583 features: fidl::new_empty!(u32, D),
1584 supported_flags: fidl::new_empty!(TxFlags, D),
1585 }
1586 }
1587
1588 #[inline]
1589 unsafe fn decode(
1590 &mut self,
1591 decoder: &mut fidl::encoding::Decoder<'_, D>,
1592 offset: usize,
1593 _depth: fidl::encoding::Depth,
1594 ) -> fidl::Result<()> {
1595 decoder.debug_check_bounds::<Self>(offset);
1596 let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(0) };
1598 let padval = unsafe { (ptr as *const u32).read_unaligned() };
1599 let mask = 0xffffff00u32;
1600 let maskedval = padval & mask;
1601 if maskedval != 0 {
1602 return Err(fidl::Error::NonZeroPadding {
1603 padding_start: offset + 0 + ((mask as u64).trailing_zeros() / 8) as usize,
1604 });
1605 }
1606 fidl::decode!(FrameType, D, &mut self.type_, decoder, offset + 0, _depth)?;
1607 fidl::decode!(u32, D, &mut self.features, decoder, offset + 4, _depth)?;
1608 fidl::decode!(TxFlags, D, &mut self.supported_flags, decoder, offset + 8, _depth)?;
1609 Ok(())
1610 }
1611 }
1612
1613 impl fidl::encoding::ValueTypeMarker for MacAddressingAddMulticastAddressRequest {
1614 type Borrowed<'a> = &'a Self;
1615 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1616 value
1617 }
1618 }
1619
1620 unsafe impl fidl::encoding::TypeMarker for MacAddressingAddMulticastAddressRequest {
1621 type Owned = Self;
1622
1623 #[inline(always)]
1624 fn inline_align(_context: fidl::encoding::Context) -> usize {
1625 1
1626 }
1627
1628 #[inline(always)]
1629 fn inline_size(_context: fidl::encoding::Context) -> usize {
1630 6
1631 }
1632 }
1633
1634 unsafe impl<D: fidl::encoding::ResourceDialect>
1635 fidl::encoding::Encode<MacAddressingAddMulticastAddressRequest, D>
1636 for &MacAddressingAddMulticastAddressRequest
1637 {
1638 #[inline]
1639 unsafe fn encode(
1640 self,
1641 encoder: &mut fidl::encoding::Encoder<'_, D>,
1642 offset: usize,
1643 _depth: fidl::encoding::Depth,
1644 ) -> fidl::Result<()> {
1645 encoder.debug_check_bounds::<MacAddressingAddMulticastAddressRequest>(offset);
1646 fidl::encoding::Encode::<MacAddressingAddMulticastAddressRequest, D>::encode(
1648 (<fidl_fuchsia_net_common::MacAddress as fidl::encoding::ValueTypeMarker>::borrow(
1649 &self.address,
1650 ),),
1651 encoder,
1652 offset,
1653 _depth,
1654 )
1655 }
1656 }
1657 unsafe impl<
1658 D: fidl::encoding::ResourceDialect,
1659 T0: fidl::encoding::Encode<fidl_fuchsia_net_common::MacAddress, D>,
1660 > fidl::encoding::Encode<MacAddressingAddMulticastAddressRequest, D> for (T0,)
1661 {
1662 #[inline]
1663 unsafe fn encode(
1664 self,
1665 encoder: &mut fidl::encoding::Encoder<'_, D>,
1666 offset: usize,
1667 depth: fidl::encoding::Depth,
1668 ) -> fidl::Result<()> {
1669 encoder.debug_check_bounds::<MacAddressingAddMulticastAddressRequest>(offset);
1670 self.0.encode(encoder, offset + 0, depth)?;
1674 Ok(())
1675 }
1676 }
1677
1678 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1679 for MacAddressingAddMulticastAddressRequest
1680 {
1681 #[inline(always)]
1682 fn new_empty() -> Self {
1683 Self { address: fidl::new_empty!(fidl_fuchsia_net_common::MacAddress, D) }
1684 }
1685
1686 #[inline]
1687 unsafe fn decode(
1688 &mut self,
1689 decoder: &mut fidl::encoding::Decoder<'_, D>,
1690 offset: usize,
1691 _depth: fidl::encoding::Depth,
1692 ) -> fidl::Result<()> {
1693 decoder.debug_check_bounds::<Self>(offset);
1694 fidl::decode!(
1696 fidl_fuchsia_net_common::MacAddress,
1697 D,
1698 &mut self.address,
1699 decoder,
1700 offset + 0,
1701 _depth
1702 )?;
1703 Ok(())
1704 }
1705 }
1706
1707 impl fidl::encoding::ValueTypeMarker for MacAddressingAddMulticastAddressResponse {
1708 type Borrowed<'a> = &'a Self;
1709 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1710 value
1711 }
1712 }
1713
1714 unsafe impl fidl::encoding::TypeMarker for MacAddressingAddMulticastAddressResponse {
1715 type Owned = Self;
1716
1717 #[inline(always)]
1718 fn inline_align(_context: fidl::encoding::Context) -> usize {
1719 4
1720 }
1721
1722 #[inline(always)]
1723 fn inline_size(_context: fidl::encoding::Context) -> usize {
1724 4
1725 }
1726 #[inline(always)]
1727 fn encode_is_copy() -> bool {
1728 true
1729 }
1730
1731 #[inline(always)]
1732 fn decode_is_copy() -> bool {
1733 true
1734 }
1735 }
1736
1737 unsafe impl<D: fidl::encoding::ResourceDialect>
1738 fidl::encoding::Encode<MacAddressingAddMulticastAddressResponse, D>
1739 for &MacAddressingAddMulticastAddressResponse
1740 {
1741 #[inline]
1742 unsafe fn encode(
1743 self,
1744 encoder: &mut fidl::encoding::Encoder<'_, D>,
1745 offset: usize,
1746 _depth: fidl::encoding::Depth,
1747 ) -> fidl::Result<()> {
1748 encoder.debug_check_bounds::<MacAddressingAddMulticastAddressResponse>(offset);
1749 unsafe {
1750 let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
1752 (buf_ptr as *mut MacAddressingAddMulticastAddressResponse).write_unaligned(
1753 (self as *const MacAddressingAddMulticastAddressResponse).read(),
1754 );
1755 }
1758 Ok(())
1759 }
1760 }
1761 unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<i32, D>>
1762 fidl::encoding::Encode<MacAddressingAddMulticastAddressResponse, D> for (T0,)
1763 {
1764 #[inline]
1765 unsafe fn encode(
1766 self,
1767 encoder: &mut fidl::encoding::Encoder<'_, D>,
1768 offset: usize,
1769 depth: fidl::encoding::Depth,
1770 ) -> fidl::Result<()> {
1771 encoder.debug_check_bounds::<MacAddressingAddMulticastAddressResponse>(offset);
1772 self.0.encode(encoder, offset + 0, depth)?;
1776 Ok(())
1777 }
1778 }
1779
1780 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1781 for MacAddressingAddMulticastAddressResponse
1782 {
1783 #[inline(always)]
1784 fn new_empty() -> Self {
1785 Self { status: fidl::new_empty!(i32, D) }
1786 }
1787
1788 #[inline]
1789 unsafe fn decode(
1790 &mut self,
1791 decoder: &mut fidl::encoding::Decoder<'_, D>,
1792 offset: usize,
1793 _depth: fidl::encoding::Depth,
1794 ) -> fidl::Result<()> {
1795 decoder.debug_check_bounds::<Self>(offset);
1796 let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
1797 unsafe {
1800 std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 4);
1801 }
1802 Ok(())
1803 }
1804 }
1805
1806 impl fidl::encoding::ValueTypeMarker for MacAddressingGetUnicastAddressResponse {
1807 type Borrowed<'a> = &'a Self;
1808 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1809 value
1810 }
1811 }
1812
1813 unsafe impl fidl::encoding::TypeMarker for MacAddressingGetUnicastAddressResponse {
1814 type Owned = Self;
1815
1816 #[inline(always)]
1817 fn inline_align(_context: fidl::encoding::Context) -> usize {
1818 1
1819 }
1820
1821 #[inline(always)]
1822 fn inline_size(_context: fidl::encoding::Context) -> usize {
1823 6
1824 }
1825 }
1826
1827 unsafe impl<D: fidl::encoding::ResourceDialect>
1828 fidl::encoding::Encode<MacAddressingGetUnicastAddressResponse, D>
1829 for &MacAddressingGetUnicastAddressResponse
1830 {
1831 #[inline]
1832 unsafe fn encode(
1833 self,
1834 encoder: &mut fidl::encoding::Encoder<'_, D>,
1835 offset: usize,
1836 _depth: fidl::encoding::Depth,
1837 ) -> fidl::Result<()> {
1838 encoder.debug_check_bounds::<MacAddressingGetUnicastAddressResponse>(offset);
1839 fidl::encoding::Encode::<MacAddressingGetUnicastAddressResponse, D>::encode(
1841 (<fidl_fuchsia_net_common::MacAddress as fidl::encoding::ValueTypeMarker>::borrow(
1842 &self.address,
1843 ),),
1844 encoder,
1845 offset,
1846 _depth,
1847 )
1848 }
1849 }
1850 unsafe impl<
1851 D: fidl::encoding::ResourceDialect,
1852 T0: fidl::encoding::Encode<fidl_fuchsia_net_common::MacAddress, D>,
1853 > fidl::encoding::Encode<MacAddressingGetUnicastAddressResponse, D> for (T0,)
1854 {
1855 #[inline]
1856 unsafe fn encode(
1857 self,
1858 encoder: &mut fidl::encoding::Encoder<'_, D>,
1859 offset: usize,
1860 depth: fidl::encoding::Depth,
1861 ) -> fidl::Result<()> {
1862 encoder.debug_check_bounds::<MacAddressingGetUnicastAddressResponse>(offset);
1863 self.0.encode(encoder, offset + 0, depth)?;
1867 Ok(())
1868 }
1869 }
1870
1871 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1872 for MacAddressingGetUnicastAddressResponse
1873 {
1874 #[inline(always)]
1875 fn new_empty() -> Self {
1876 Self { address: fidl::new_empty!(fidl_fuchsia_net_common::MacAddress, D) }
1877 }
1878
1879 #[inline]
1880 unsafe fn decode(
1881 &mut self,
1882 decoder: &mut fidl::encoding::Decoder<'_, D>,
1883 offset: usize,
1884 _depth: fidl::encoding::Depth,
1885 ) -> fidl::Result<()> {
1886 decoder.debug_check_bounds::<Self>(offset);
1887 fidl::decode!(
1889 fidl_fuchsia_net_common::MacAddress,
1890 D,
1891 &mut self.address,
1892 decoder,
1893 offset + 0,
1894 _depth
1895 )?;
1896 Ok(())
1897 }
1898 }
1899
1900 impl fidl::encoding::ValueTypeMarker for MacAddressingRemoveMulticastAddressRequest {
1901 type Borrowed<'a> = &'a Self;
1902 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1903 value
1904 }
1905 }
1906
1907 unsafe impl fidl::encoding::TypeMarker for MacAddressingRemoveMulticastAddressRequest {
1908 type Owned = Self;
1909
1910 #[inline(always)]
1911 fn inline_align(_context: fidl::encoding::Context) -> usize {
1912 1
1913 }
1914
1915 #[inline(always)]
1916 fn inline_size(_context: fidl::encoding::Context) -> usize {
1917 6
1918 }
1919 }
1920
1921 unsafe impl<D: fidl::encoding::ResourceDialect>
1922 fidl::encoding::Encode<MacAddressingRemoveMulticastAddressRequest, D>
1923 for &MacAddressingRemoveMulticastAddressRequest
1924 {
1925 #[inline]
1926 unsafe fn encode(
1927 self,
1928 encoder: &mut fidl::encoding::Encoder<'_, D>,
1929 offset: usize,
1930 _depth: fidl::encoding::Depth,
1931 ) -> fidl::Result<()> {
1932 encoder.debug_check_bounds::<MacAddressingRemoveMulticastAddressRequest>(offset);
1933 fidl::encoding::Encode::<MacAddressingRemoveMulticastAddressRequest, D>::encode(
1935 (<fidl_fuchsia_net_common::MacAddress as fidl::encoding::ValueTypeMarker>::borrow(
1936 &self.address,
1937 ),),
1938 encoder,
1939 offset,
1940 _depth,
1941 )
1942 }
1943 }
1944 unsafe impl<
1945 D: fidl::encoding::ResourceDialect,
1946 T0: fidl::encoding::Encode<fidl_fuchsia_net_common::MacAddress, D>,
1947 > fidl::encoding::Encode<MacAddressingRemoveMulticastAddressRequest, D> for (T0,)
1948 {
1949 #[inline]
1950 unsafe fn encode(
1951 self,
1952 encoder: &mut fidl::encoding::Encoder<'_, D>,
1953 offset: usize,
1954 depth: fidl::encoding::Depth,
1955 ) -> fidl::Result<()> {
1956 encoder.debug_check_bounds::<MacAddressingRemoveMulticastAddressRequest>(offset);
1957 self.0.encode(encoder, offset + 0, depth)?;
1961 Ok(())
1962 }
1963 }
1964
1965 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1966 for MacAddressingRemoveMulticastAddressRequest
1967 {
1968 #[inline(always)]
1969 fn new_empty() -> Self {
1970 Self { address: fidl::new_empty!(fidl_fuchsia_net_common::MacAddress, D) }
1971 }
1972
1973 #[inline]
1974 unsafe fn decode(
1975 &mut self,
1976 decoder: &mut fidl::encoding::Decoder<'_, D>,
1977 offset: usize,
1978 _depth: fidl::encoding::Depth,
1979 ) -> fidl::Result<()> {
1980 decoder.debug_check_bounds::<Self>(offset);
1981 fidl::decode!(
1983 fidl_fuchsia_net_common::MacAddress,
1984 D,
1985 &mut self.address,
1986 decoder,
1987 offset + 0,
1988 _depth
1989 )?;
1990 Ok(())
1991 }
1992 }
1993
1994 impl fidl::encoding::ValueTypeMarker for MacAddressingRemoveMulticastAddressResponse {
1995 type Borrowed<'a> = &'a Self;
1996 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1997 value
1998 }
1999 }
2000
2001 unsafe impl fidl::encoding::TypeMarker for MacAddressingRemoveMulticastAddressResponse {
2002 type Owned = Self;
2003
2004 #[inline(always)]
2005 fn inline_align(_context: fidl::encoding::Context) -> usize {
2006 4
2007 }
2008
2009 #[inline(always)]
2010 fn inline_size(_context: fidl::encoding::Context) -> usize {
2011 4
2012 }
2013 #[inline(always)]
2014 fn encode_is_copy() -> bool {
2015 true
2016 }
2017
2018 #[inline(always)]
2019 fn decode_is_copy() -> bool {
2020 true
2021 }
2022 }
2023
2024 unsafe impl<D: fidl::encoding::ResourceDialect>
2025 fidl::encoding::Encode<MacAddressingRemoveMulticastAddressResponse, D>
2026 for &MacAddressingRemoveMulticastAddressResponse
2027 {
2028 #[inline]
2029 unsafe fn encode(
2030 self,
2031 encoder: &mut fidl::encoding::Encoder<'_, D>,
2032 offset: usize,
2033 _depth: fidl::encoding::Depth,
2034 ) -> fidl::Result<()> {
2035 encoder.debug_check_bounds::<MacAddressingRemoveMulticastAddressResponse>(offset);
2036 unsafe {
2037 let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
2039 (buf_ptr as *mut MacAddressingRemoveMulticastAddressResponse).write_unaligned(
2040 (self as *const MacAddressingRemoveMulticastAddressResponse).read(),
2041 );
2042 }
2045 Ok(())
2046 }
2047 }
2048 unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<i32, D>>
2049 fidl::encoding::Encode<MacAddressingRemoveMulticastAddressResponse, D> for (T0,)
2050 {
2051 #[inline]
2052 unsafe fn encode(
2053 self,
2054 encoder: &mut fidl::encoding::Encoder<'_, D>,
2055 offset: usize,
2056 depth: fidl::encoding::Depth,
2057 ) -> fidl::Result<()> {
2058 encoder.debug_check_bounds::<MacAddressingRemoveMulticastAddressResponse>(offset);
2059 self.0.encode(encoder, offset + 0, depth)?;
2063 Ok(())
2064 }
2065 }
2066
2067 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2068 for MacAddressingRemoveMulticastAddressResponse
2069 {
2070 #[inline(always)]
2071 fn new_empty() -> Self {
2072 Self { status: fidl::new_empty!(i32, D) }
2073 }
2074
2075 #[inline]
2076 unsafe fn decode(
2077 &mut self,
2078 decoder: &mut fidl::encoding::Decoder<'_, D>,
2079 offset: usize,
2080 _depth: fidl::encoding::Depth,
2081 ) -> fidl::Result<()> {
2082 decoder.debug_check_bounds::<Self>(offset);
2083 let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
2084 unsafe {
2087 std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 4);
2088 }
2089 Ok(())
2090 }
2091 }
2092
2093 impl fidl::encoding::ValueTypeMarker for MacAddressingSetModeRequest {
2094 type Borrowed<'a> = &'a Self;
2095 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2096 value
2097 }
2098 }
2099
2100 unsafe impl fidl::encoding::TypeMarker for MacAddressingSetModeRequest {
2101 type Owned = Self;
2102
2103 #[inline(always)]
2104 fn inline_align(_context: fidl::encoding::Context) -> usize {
2105 4
2106 }
2107
2108 #[inline(always)]
2109 fn inline_size(_context: fidl::encoding::Context) -> usize {
2110 4
2111 }
2112 }
2113
2114 unsafe impl<D: fidl::encoding::ResourceDialect>
2115 fidl::encoding::Encode<MacAddressingSetModeRequest, D> for &MacAddressingSetModeRequest
2116 {
2117 #[inline]
2118 unsafe fn encode(
2119 self,
2120 encoder: &mut fidl::encoding::Encoder<'_, D>,
2121 offset: usize,
2122 _depth: fidl::encoding::Depth,
2123 ) -> fidl::Result<()> {
2124 encoder.debug_check_bounds::<MacAddressingSetModeRequest>(offset);
2125 fidl::encoding::Encode::<MacAddressingSetModeRequest, D>::encode(
2127 (<MacFilterMode as fidl::encoding::ValueTypeMarker>::borrow(&self.mode),),
2128 encoder,
2129 offset,
2130 _depth,
2131 )
2132 }
2133 }
2134 unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<MacFilterMode, D>>
2135 fidl::encoding::Encode<MacAddressingSetModeRequest, D> for (T0,)
2136 {
2137 #[inline]
2138 unsafe fn encode(
2139 self,
2140 encoder: &mut fidl::encoding::Encoder<'_, D>,
2141 offset: usize,
2142 depth: fidl::encoding::Depth,
2143 ) -> fidl::Result<()> {
2144 encoder.debug_check_bounds::<MacAddressingSetModeRequest>(offset);
2145 self.0.encode(encoder, offset + 0, depth)?;
2149 Ok(())
2150 }
2151 }
2152
2153 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2154 for MacAddressingSetModeRequest
2155 {
2156 #[inline(always)]
2157 fn new_empty() -> Self {
2158 Self { mode: fidl::new_empty!(MacFilterMode, D) }
2159 }
2160
2161 #[inline]
2162 unsafe fn decode(
2163 &mut self,
2164 decoder: &mut fidl::encoding::Decoder<'_, D>,
2165 offset: usize,
2166 _depth: fidl::encoding::Depth,
2167 ) -> fidl::Result<()> {
2168 decoder.debug_check_bounds::<Self>(offset);
2169 fidl::decode!(MacFilterMode, D, &mut self.mode, decoder, offset + 0, _depth)?;
2171 Ok(())
2172 }
2173 }
2174
2175 impl fidl::encoding::ValueTypeMarker for MacAddressingSetModeResponse {
2176 type Borrowed<'a> = &'a Self;
2177 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2178 value
2179 }
2180 }
2181
2182 unsafe impl fidl::encoding::TypeMarker for MacAddressingSetModeResponse {
2183 type Owned = Self;
2184
2185 #[inline(always)]
2186 fn inline_align(_context: fidl::encoding::Context) -> usize {
2187 4
2188 }
2189
2190 #[inline(always)]
2191 fn inline_size(_context: fidl::encoding::Context) -> usize {
2192 4
2193 }
2194 #[inline(always)]
2195 fn encode_is_copy() -> bool {
2196 true
2197 }
2198
2199 #[inline(always)]
2200 fn decode_is_copy() -> bool {
2201 true
2202 }
2203 }
2204
2205 unsafe impl<D: fidl::encoding::ResourceDialect>
2206 fidl::encoding::Encode<MacAddressingSetModeResponse, D> for &MacAddressingSetModeResponse
2207 {
2208 #[inline]
2209 unsafe fn encode(
2210 self,
2211 encoder: &mut fidl::encoding::Encoder<'_, D>,
2212 offset: usize,
2213 _depth: fidl::encoding::Depth,
2214 ) -> fidl::Result<()> {
2215 encoder.debug_check_bounds::<MacAddressingSetModeResponse>(offset);
2216 unsafe {
2217 let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
2219 (buf_ptr as *mut MacAddressingSetModeResponse)
2220 .write_unaligned((self as *const MacAddressingSetModeResponse).read());
2221 }
2224 Ok(())
2225 }
2226 }
2227 unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<i32, D>>
2228 fidl::encoding::Encode<MacAddressingSetModeResponse, D> for (T0,)
2229 {
2230 #[inline]
2231 unsafe fn encode(
2232 self,
2233 encoder: &mut fidl::encoding::Encoder<'_, D>,
2234 offset: usize,
2235 depth: fidl::encoding::Depth,
2236 ) -> fidl::Result<()> {
2237 encoder.debug_check_bounds::<MacAddressingSetModeResponse>(offset);
2238 self.0.encode(encoder, offset + 0, depth)?;
2242 Ok(())
2243 }
2244 }
2245
2246 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2247 for MacAddressingSetModeResponse
2248 {
2249 #[inline(always)]
2250 fn new_empty() -> Self {
2251 Self { status: fidl::new_empty!(i32, D) }
2252 }
2253
2254 #[inline]
2255 unsafe fn decode(
2256 &mut self,
2257 decoder: &mut fidl::encoding::Decoder<'_, D>,
2258 offset: usize,
2259 _depth: fidl::encoding::Depth,
2260 ) -> fidl::Result<()> {
2261 decoder.debug_check_bounds::<Self>(offset);
2262 let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
2263 unsafe {
2266 std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 4);
2267 }
2268 Ok(())
2269 }
2270 }
2271
2272 impl fidl::encoding::ValueTypeMarker for PortGetInfoResponse {
2273 type Borrowed<'a> = &'a Self;
2274 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2275 value
2276 }
2277 }
2278
2279 unsafe impl fidl::encoding::TypeMarker for PortGetInfoResponse {
2280 type Owned = Self;
2281
2282 #[inline(always)]
2283 fn inline_align(_context: fidl::encoding::Context) -> usize {
2284 8
2285 }
2286
2287 #[inline(always)]
2288 fn inline_size(_context: fidl::encoding::Context) -> usize {
2289 16
2290 }
2291 }
2292
2293 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<PortGetInfoResponse, D>
2294 for &PortGetInfoResponse
2295 {
2296 #[inline]
2297 unsafe fn encode(
2298 self,
2299 encoder: &mut fidl::encoding::Encoder<'_, D>,
2300 offset: usize,
2301 _depth: fidl::encoding::Depth,
2302 ) -> fidl::Result<()> {
2303 encoder.debug_check_bounds::<PortGetInfoResponse>(offset);
2304 fidl::encoding::Encode::<PortGetInfoResponse, D>::encode(
2306 (<PortInfo as fidl::encoding::ValueTypeMarker>::borrow(&self.info),),
2307 encoder,
2308 offset,
2309 _depth,
2310 )
2311 }
2312 }
2313 unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<PortInfo, D>>
2314 fidl::encoding::Encode<PortGetInfoResponse, D> for (T0,)
2315 {
2316 #[inline]
2317 unsafe fn encode(
2318 self,
2319 encoder: &mut fidl::encoding::Encoder<'_, D>,
2320 offset: usize,
2321 depth: fidl::encoding::Depth,
2322 ) -> fidl::Result<()> {
2323 encoder.debug_check_bounds::<PortGetInfoResponse>(offset);
2324 self.0.encode(encoder, offset + 0, depth)?;
2328 Ok(())
2329 }
2330 }
2331
2332 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for PortGetInfoResponse {
2333 #[inline(always)]
2334 fn new_empty() -> Self {
2335 Self { info: fidl::new_empty!(PortInfo, D) }
2336 }
2337
2338 #[inline]
2339 unsafe fn decode(
2340 &mut self,
2341 decoder: &mut fidl::encoding::Decoder<'_, D>,
2342 offset: usize,
2343 _depth: fidl::encoding::Depth,
2344 ) -> fidl::Result<()> {
2345 decoder.debug_check_bounds::<Self>(offset);
2346 fidl::decode!(PortInfo, D, &mut self.info, decoder, offset + 0, _depth)?;
2348 Ok(())
2349 }
2350 }
2351
2352 impl fidl::encoding::ValueTypeMarker for PortGetStatusResponse {
2353 type Borrowed<'a> = &'a Self;
2354 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2355 value
2356 }
2357 }
2358
2359 unsafe impl fidl::encoding::TypeMarker for PortGetStatusResponse {
2360 type Owned = Self;
2361
2362 #[inline(always)]
2363 fn inline_align(_context: fidl::encoding::Context) -> usize {
2364 8
2365 }
2366
2367 #[inline(always)]
2368 fn inline_size(_context: fidl::encoding::Context) -> usize {
2369 16
2370 }
2371 }
2372
2373 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<PortGetStatusResponse, D>
2374 for &PortGetStatusResponse
2375 {
2376 #[inline]
2377 unsafe fn encode(
2378 self,
2379 encoder: &mut fidl::encoding::Encoder<'_, D>,
2380 offset: usize,
2381 _depth: fidl::encoding::Depth,
2382 ) -> fidl::Result<()> {
2383 encoder.debug_check_bounds::<PortGetStatusResponse>(offset);
2384 fidl::encoding::Encode::<PortGetStatusResponse, D>::encode(
2386 (<PortStatus as fidl::encoding::ValueTypeMarker>::borrow(&self.status),),
2387 encoder,
2388 offset,
2389 _depth,
2390 )
2391 }
2392 }
2393 unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<PortStatus, D>>
2394 fidl::encoding::Encode<PortGetStatusResponse, D> for (T0,)
2395 {
2396 #[inline]
2397 unsafe fn encode(
2398 self,
2399 encoder: &mut fidl::encoding::Encoder<'_, D>,
2400 offset: usize,
2401 depth: fidl::encoding::Depth,
2402 ) -> fidl::Result<()> {
2403 encoder.debug_check_bounds::<PortGetStatusResponse>(offset);
2404 self.0.encode(encoder, offset + 0, depth)?;
2408 Ok(())
2409 }
2410 }
2411
2412 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for PortGetStatusResponse {
2413 #[inline(always)]
2414 fn new_empty() -> Self {
2415 Self { status: fidl::new_empty!(PortStatus, D) }
2416 }
2417
2418 #[inline]
2419 unsafe fn decode(
2420 &mut self,
2421 decoder: &mut fidl::encoding::Decoder<'_, D>,
2422 offset: usize,
2423 _depth: fidl::encoding::Depth,
2424 ) -> fidl::Result<()> {
2425 decoder.debug_check_bounds::<Self>(offset);
2426 fidl::decode!(PortStatus, D, &mut self.status, decoder, offset + 0, _depth)?;
2428 Ok(())
2429 }
2430 }
2431
2432 impl fidl::encoding::ValueTypeMarker for PortId {
2433 type Borrowed<'a> = &'a Self;
2434 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2435 value
2436 }
2437 }
2438
2439 unsafe impl fidl::encoding::TypeMarker for PortId {
2440 type Owned = Self;
2441
2442 #[inline(always)]
2443 fn inline_align(_context: fidl::encoding::Context) -> usize {
2444 1
2445 }
2446
2447 #[inline(always)]
2448 fn inline_size(_context: fidl::encoding::Context) -> usize {
2449 2
2450 }
2451 #[inline(always)]
2452 fn encode_is_copy() -> bool {
2453 true
2454 }
2455
2456 #[inline(always)]
2457 fn decode_is_copy() -> bool {
2458 true
2459 }
2460 }
2461
2462 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<PortId, D> for &PortId {
2463 #[inline]
2464 unsafe fn encode(
2465 self,
2466 encoder: &mut fidl::encoding::Encoder<'_, D>,
2467 offset: usize,
2468 _depth: fidl::encoding::Depth,
2469 ) -> fidl::Result<()> {
2470 encoder.debug_check_bounds::<PortId>(offset);
2471 unsafe {
2472 let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
2474 (buf_ptr as *mut PortId).write_unaligned((self as *const PortId).read());
2475 }
2478 Ok(())
2479 }
2480 }
2481 unsafe impl<
2482 D: fidl::encoding::ResourceDialect,
2483 T0: fidl::encoding::Encode<u8, D>,
2484 T1: fidl::encoding::Encode<u8, D>,
2485 > fidl::encoding::Encode<PortId, D> for (T0, T1)
2486 {
2487 #[inline]
2488 unsafe fn encode(
2489 self,
2490 encoder: &mut fidl::encoding::Encoder<'_, D>,
2491 offset: usize,
2492 depth: fidl::encoding::Depth,
2493 ) -> fidl::Result<()> {
2494 encoder.debug_check_bounds::<PortId>(offset);
2495 self.0.encode(encoder, offset + 0, depth)?;
2499 self.1.encode(encoder, offset + 1, depth)?;
2500 Ok(())
2501 }
2502 }
2503
2504 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for PortId {
2505 #[inline(always)]
2506 fn new_empty() -> Self {
2507 Self { base: fidl::new_empty!(u8, D), salt: fidl::new_empty!(u8, D) }
2508 }
2509
2510 #[inline]
2511 unsafe fn decode(
2512 &mut self,
2513 decoder: &mut fidl::encoding::Decoder<'_, D>,
2514 offset: usize,
2515 _depth: fidl::encoding::Depth,
2516 ) -> fidl::Result<()> {
2517 decoder.debug_check_bounds::<Self>(offset);
2518 let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
2519 unsafe {
2522 std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 2);
2523 }
2524 Ok(())
2525 }
2526 }
2527
2528 impl fidl::encoding::ValueTypeMarker for PortWatcherWatchResponse {
2529 type Borrowed<'a> = &'a Self;
2530 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2531 value
2532 }
2533 }
2534
2535 unsafe impl fidl::encoding::TypeMarker for PortWatcherWatchResponse {
2536 type Owned = Self;
2537
2538 #[inline(always)]
2539 fn inline_align(_context: fidl::encoding::Context) -> usize {
2540 8
2541 }
2542
2543 #[inline(always)]
2544 fn inline_size(_context: fidl::encoding::Context) -> usize {
2545 16
2546 }
2547 }
2548
2549 unsafe impl<D: fidl::encoding::ResourceDialect>
2550 fidl::encoding::Encode<PortWatcherWatchResponse, D> for &PortWatcherWatchResponse
2551 {
2552 #[inline]
2553 unsafe fn encode(
2554 self,
2555 encoder: &mut fidl::encoding::Encoder<'_, D>,
2556 offset: usize,
2557 _depth: fidl::encoding::Depth,
2558 ) -> fidl::Result<()> {
2559 encoder.debug_check_bounds::<PortWatcherWatchResponse>(offset);
2560 fidl::encoding::Encode::<PortWatcherWatchResponse, D>::encode(
2562 (<DevicePortEvent as fidl::encoding::ValueTypeMarker>::borrow(&self.event),),
2563 encoder,
2564 offset,
2565 _depth,
2566 )
2567 }
2568 }
2569 unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<DevicePortEvent, D>>
2570 fidl::encoding::Encode<PortWatcherWatchResponse, D> for (T0,)
2571 {
2572 #[inline]
2573 unsafe fn encode(
2574 self,
2575 encoder: &mut fidl::encoding::Encoder<'_, D>,
2576 offset: usize,
2577 depth: fidl::encoding::Depth,
2578 ) -> fidl::Result<()> {
2579 encoder.debug_check_bounds::<PortWatcherWatchResponse>(offset);
2580 self.0.encode(encoder, offset + 0, depth)?;
2584 Ok(())
2585 }
2586 }
2587
2588 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2589 for PortWatcherWatchResponse
2590 {
2591 #[inline(always)]
2592 fn new_empty() -> Self {
2593 Self { event: fidl::new_empty!(DevicePortEvent, D) }
2594 }
2595
2596 #[inline]
2597 unsafe fn decode(
2598 &mut self,
2599 decoder: &mut fidl::encoding::Decoder<'_, D>,
2600 offset: usize,
2601 _depth: fidl::encoding::Depth,
2602 ) -> fidl::Result<()> {
2603 decoder.debug_check_bounds::<Self>(offset);
2604 fidl::decode!(DevicePortEvent, D, &mut self.event, decoder, offset + 0, _depth)?;
2606 Ok(())
2607 }
2608 }
2609
2610 impl fidl::encoding::ValueTypeMarker for SessionAttachRequest {
2611 type Borrowed<'a> = &'a Self;
2612 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2613 value
2614 }
2615 }
2616
2617 unsafe impl fidl::encoding::TypeMarker for SessionAttachRequest {
2618 type Owned = Self;
2619
2620 #[inline(always)]
2621 fn inline_align(_context: fidl::encoding::Context) -> usize {
2622 8
2623 }
2624
2625 #[inline(always)]
2626 fn inline_size(_context: fidl::encoding::Context) -> usize {
2627 24
2628 }
2629 }
2630
2631 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<SessionAttachRequest, D>
2632 for &SessionAttachRequest
2633 {
2634 #[inline]
2635 unsafe fn encode(
2636 self,
2637 encoder: &mut fidl::encoding::Encoder<'_, D>,
2638 offset: usize,
2639 _depth: fidl::encoding::Depth,
2640 ) -> fidl::Result<()> {
2641 encoder.debug_check_bounds::<SessionAttachRequest>(offset);
2642 fidl::encoding::Encode::<SessionAttachRequest, D>::encode(
2644 (
2645 <PortId as fidl::encoding::ValueTypeMarker>::borrow(&self.port),
2646 <fidl::encoding::Vector<FrameType, 4> as fidl::encoding::ValueTypeMarker>::borrow(&self.rx_frames),
2647 ),
2648 encoder, offset, _depth
2649 )
2650 }
2651 }
2652 unsafe impl<
2653 D: fidl::encoding::ResourceDialect,
2654 T0: fidl::encoding::Encode<PortId, D>,
2655 T1: fidl::encoding::Encode<fidl::encoding::Vector<FrameType, 4>, D>,
2656 > fidl::encoding::Encode<SessionAttachRequest, D> for (T0, T1)
2657 {
2658 #[inline]
2659 unsafe fn encode(
2660 self,
2661 encoder: &mut fidl::encoding::Encoder<'_, D>,
2662 offset: usize,
2663 depth: fidl::encoding::Depth,
2664 ) -> fidl::Result<()> {
2665 encoder.debug_check_bounds::<SessionAttachRequest>(offset);
2666 unsafe {
2669 let ptr = encoder.buf.as_mut_ptr().add(offset).offset(0);
2670 (ptr as *mut u64).write_unaligned(0);
2671 }
2672 self.0.encode(encoder, offset + 0, depth)?;
2674 self.1.encode(encoder, offset + 8, depth)?;
2675 Ok(())
2676 }
2677 }
2678
2679 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for SessionAttachRequest {
2680 #[inline(always)]
2681 fn new_empty() -> Self {
2682 Self {
2683 port: fidl::new_empty!(PortId, D),
2684 rx_frames: fidl::new_empty!(fidl::encoding::Vector<FrameType, 4>, D),
2685 }
2686 }
2687
2688 #[inline]
2689 unsafe fn decode(
2690 &mut self,
2691 decoder: &mut fidl::encoding::Decoder<'_, D>,
2692 offset: usize,
2693 _depth: fidl::encoding::Depth,
2694 ) -> fidl::Result<()> {
2695 decoder.debug_check_bounds::<Self>(offset);
2696 let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(0) };
2698 let padval = unsafe { (ptr as *const u64).read_unaligned() };
2699 let mask = 0xffffffffffff0000u64;
2700 let maskedval = padval & mask;
2701 if maskedval != 0 {
2702 return Err(fidl::Error::NonZeroPadding {
2703 padding_start: offset + 0 + ((mask as u64).trailing_zeros() / 8) as usize,
2704 });
2705 }
2706 fidl::decode!(PortId, D, &mut self.port, decoder, offset + 0, _depth)?;
2707 fidl::decode!(fidl::encoding::Vector<FrameType, 4>, D, &mut self.rx_frames, decoder, offset + 8, _depth)?;
2708 Ok(())
2709 }
2710 }
2711
2712 impl fidl::encoding::ValueTypeMarker for SessionDetachRequest {
2713 type Borrowed<'a> = &'a Self;
2714 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2715 value
2716 }
2717 }
2718
2719 unsafe impl fidl::encoding::TypeMarker for SessionDetachRequest {
2720 type Owned = Self;
2721
2722 #[inline(always)]
2723 fn inline_align(_context: fidl::encoding::Context) -> usize {
2724 1
2725 }
2726
2727 #[inline(always)]
2728 fn inline_size(_context: fidl::encoding::Context) -> usize {
2729 2
2730 }
2731 #[inline(always)]
2732 fn encode_is_copy() -> bool {
2733 true
2734 }
2735
2736 #[inline(always)]
2737 fn decode_is_copy() -> bool {
2738 true
2739 }
2740 }
2741
2742 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<SessionDetachRequest, D>
2743 for &SessionDetachRequest
2744 {
2745 #[inline]
2746 unsafe fn encode(
2747 self,
2748 encoder: &mut fidl::encoding::Encoder<'_, D>,
2749 offset: usize,
2750 _depth: fidl::encoding::Depth,
2751 ) -> fidl::Result<()> {
2752 encoder.debug_check_bounds::<SessionDetachRequest>(offset);
2753 unsafe {
2754 let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
2756 (buf_ptr as *mut SessionDetachRequest)
2757 .write_unaligned((self as *const SessionDetachRequest).read());
2758 }
2761 Ok(())
2762 }
2763 }
2764 unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<PortId, D>>
2765 fidl::encoding::Encode<SessionDetachRequest, D> for (T0,)
2766 {
2767 #[inline]
2768 unsafe fn encode(
2769 self,
2770 encoder: &mut fidl::encoding::Encoder<'_, D>,
2771 offset: usize,
2772 depth: fidl::encoding::Depth,
2773 ) -> fidl::Result<()> {
2774 encoder.debug_check_bounds::<SessionDetachRequest>(offset);
2775 self.0.encode(encoder, offset + 0, depth)?;
2779 Ok(())
2780 }
2781 }
2782
2783 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for SessionDetachRequest {
2784 #[inline(always)]
2785 fn new_empty() -> Self {
2786 Self { port: fidl::new_empty!(PortId, D) }
2787 }
2788
2789 #[inline]
2790 unsafe fn decode(
2791 &mut self,
2792 decoder: &mut fidl::encoding::Decoder<'_, D>,
2793 offset: usize,
2794 _depth: fidl::encoding::Depth,
2795 ) -> fidl::Result<()> {
2796 decoder.debug_check_bounds::<Self>(offset);
2797 let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
2798 unsafe {
2801 std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 2);
2802 }
2803 Ok(())
2804 }
2805 }
2806
2807 impl fidl::encoding::ValueTypeMarker for SessionRegisterForTxResponse {
2808 type Borrowed<'a> = &'a Self;
2809 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2810 value
2811 }
2812 }
2813
2814 unsafe impl fidl::encoding::TypeMarker for SessionRegisterForTxResponse {
2815 type Owned = Self;
2816
2817 #[inline(always)]
2818 fn inline_align(_context: fidl::encoding::Context) -> usize {
2819 4
2820 }
2821
2822 #[inline(always)]
2823 fn inline_size(_context: fidl::encoding::Context) -> usize {
2824 8
2825 }
2826 }
2827
2828 unsafe impl<D: fidl::encoding::ResourceDialect>
2829 fidl::encoding::Encode<SessionRegisterForTxResponse, D> for &SessionRegisterForTxResponse
2830 {
2831 #[inline]
2832 unsafe fn encode(
2833 self,
2834 encoder: &mut fidl::encoding::Encoder<'_, D>,
2835 offset: usize,
2836 _depth: fidl::encoding::Depth,
2837 ) -> fidl::Result<()> {
2838 encoder.debug_check_bounds::<SessionRegisterForTxResponse>(offset);
2839 unsafe {
2840 let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
2842 (buf_ptr as *mut SessionRegisterForTxResponse)
2843 .write_unaligned((self as *const SessionRegisterForTxResponse).read());
2844 let padding_ptr = buf_ptr.offset(0) as *mut u32;
2847 let padding_mask = 0xffffff00u32;
2848 padding_ptr.write_unaligned(padding_ptr.read_unaligned() & !padding_mask);
2849 }
2850 Ok(())
2851 }
2852 }
2853 unsafe impl<
2854 D: fidl::encoding::ResourceDialect,
2855 T0: fidl::encoding::Encode<u8, D>,
2856 T1: fidl::encoding::Encode<i32, D>,
2857 > fidl::encoding::Encode<SessionRegisterForTxResponse, D> for (T0, T1)
2858 {
2859 #[inline]
2860 unsafe fn encode(
2861 self,
2862 encoder: &mut fidl::encoding::Encoder<'_, D>,
2863 offset: usize,
2864 depth: fidl::encoding::Depth,
2865 ) -> fidl::Result<()> {
2866 encoder.debug_check_bounds::<SessionRegisterForTxResponse>(offset);
2867 unsafe {
2870 let ptr = encoder.buf.as_mut_ptr().add(offset).offset(0);
2871 (ptr as *mut u32).write_unaligned(0);
2872 }
2873 self.0.encode(encoder, offset + 0, depth)?;
2875 self.1.encode(encoder, offset + 4, depth)?;
2876 Ok(())
2877 }
2878 }
2879
2880 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2881 for SessionRegisterForTxResponse
2882 {
2883 #[inline(always)]
2884 fn new_empty() -> Self {
2885 Self { successful: fidl::new_empty!(u8, D), status: fidl::new_empty!(i32, D) }
2886 }
2887
2888 #[inline]
2889 unsafe fn decode(
2890 &mut self,
2891 decoder: &mut fidl::encoding::Decoder<'_, D>,
2892 offset: usize,
2893 _depth: fidl::encoding::Depth,
2894 ) -> fidl::Result<()> {
2895 decoder.debug_check_bounds::<Self>(offset);
2896 let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
2897 let ptr = unsafe { buf_ptr.offset(0) };
2899 let padval = unsafe { (ptr as *const u32).read_unaligned() };
2900 let mask = 0xffffff00u32;
2901 let maskedval = padval & mask;
2902 if maskedval != 0 {
2903 return Err(fidl::Error::NonZeroPadding {
2904 padding_start: offset + 0 + ((mask as u64).trailing_zeros() / 8) as usize,
2905 });
2906 }
2907 unsafe {
2909 std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 8);
2910 }
2911 Ok(())
2912 }
2913 }
2914
2915 impl fidl::encoding::ValueTypeMarker for SessionUnregisterForTxResponse {
2916 type Borrowed<'a> = &'a Self;
2917 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2918 value
2919 }
2920 }
2921
2922 unsafe impl fidl::encoding::TypeMarker for SessionUnregisterForTxResponse {
2923 type Owned = Self;
2924
2925 #[inline(always)]
2926 fn inline_align(_context: fidl::encoding::Context) -> usize {
2927 4
2928 }
2929
2930 #[inline(always)]
2931 fn inline_size(_context: fidl::encoding::Context) -> usize {
2932 8
2933 }
2934 }
2935
2936 unsafe impl<D: fidl::encoding::ResourceDialect>
2937 fidl::encoding::Encode<SessionUnregisterForTxResponse, D>
2938 for &SessionUnregisterForTxResponse
2939 {
2940 #[inline]
2941 unsafe fn encode(
2942 self,
2943 encoder: &mut fidl::encoding::Encoder<'_, D>,
2944 offset: usize,
2945 _depth: fidl::encoding::Depth,
2946 ) -> fidl::Result<()> {
2947 encoder.debug_check_bounds::<SessionUnregisterForTxResponse>(offset);
2948 unsafe {
2949 let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
2951 (buf_ptr as *mut SessionUnregisterForTxResponse)
2952 .write_unaligned((self as *const SessionUnregisterForTxResponse).read());
2953 let padding_ptr = buf_ptr.offset(0) as *mut u32;
2956 let padding_mask = 0xffffff00u32;
2957 padding_ptr.write_unaligned(padding_ptr.read_unaligned() & !padding_mask);
2958 }
2959 Ok(())
2960 }
2961 }
2962 unsafe impl<
2963 D: fidl::encoding::ResourceDialect,
2964 T0: fidl::encoding::Encode<u8, D>,
2965 T1: fidl::encoding::Encode<i32, D>,
2966 > fidl::encoding::Encode<SessionUnregisterForTxResponse, D> for (T0, T1)
2967 {
2968 #[inline]
2969 unsafe fn encode(
2970 self,
2971 encoder: &mut fidl::encoding::Encoder<'_, D>,
2972 offset: usize,
2973 depth: fidl::encoding::Depth,
2974 ) -> fidl::Result<()> {
2975 encoder.debug_check_bounds::<SessionUnregisterForTxResponse>(offset);
2976 unsafe {
2979 let ptr = encoder.buf.as_mut_ptr().add(offset).offset(0);
2980 (ptr as *mut u32).write_unaligned(0);
2981 }
2982 self.0.encode(encoder, offset + 0, depth)?;
2984 self.1.encode(encoder, offset + 4, depth)?;
2985 Ok(())
2986 }
2987 }
2988
2989 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2990 for SessionUnregisterForTxResponse
2991 {
2992 #[inline(always)]
2993 fn new_empty() -> Self {
2994 Self { successful: fidl::new_empty!(u8, D), status: fidl::new_empty!(i32, D) }
2995 }
2996
2997 #[inline]
2998 unsafe fn decode(
2999 &mut self,
3000 decoder: &mut fidl::encoding::Decoder<'_, D>,
3001 offset: usize,
3002 _depth: fidl::encoding::Depth,
3003 ) -> fidl::Result<()> {
3004 decoder.debug_check_bounds::<Self>(offset);
3005 let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
3006 let ptr = unsafe { buf_ptr.offset(0) };
3008 let padval = unsafe { (ptr as *const u32).read_unaligned() };
3009 let mask = 0xffffff00u32;
3010 let maskedval = padval & mask;
3011 if maskedval != 0 {
3012 return Err(fidl::Error::NonZeroPadding {
3013 padding_start: offset + 0 + ((mask as u64).trailing_zeros() / 8) as usize,
3014 });
3015 }
3016 unsafe {
3018 std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 8);
3019 }
3020 Ok(())
3021 }
3022 }
3023
3024 impl fidl::encoding::ValueTypeMarker for StatusWatcherWatchStatusResponse {
3025 type Borrowed<'a> = &'a Self;
3026 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3027 value
3028 }
3029 }
3030
3031 unsafe impl fidl::encoding::TypeMarker for StatusWatcherWatchStatusResponse {
3032 type Owned = Self;
3033
3034 #[inline(always)]
3035 fn inline_align(_context: fidl::encoding::Context) -> usize {
3036 8
3037 }
3038
3039 #[inline(always)]
3040 fn inline_size(_context: fidl::encoding::Context) -> usize {
3041 16
3042 }
3043 }
3044
3045 unsafe impl<D: fidl::encoding::ResourceDialect>
3046 fidl::encoding::Encode<StatusWatcherWatchStatusResponse, D>
3047 for &StatusWatcherWatchStatusResponse
3048 {
3049 #[inline]
3050 unsafe fn encode(
3051 self,
3052 encoder: &mut fidl::encoding::Encoder<'_, D>,
3053 offset: usize,
3054 _depth: fidl::encoding::Depth,
3055 ) -> fidl::Result<()> {
3056 encoder.debug_check_bounds::<StatusWatcherWatchStatusResponse>(offset);
3057 fidl::encoding::Encode::<StatusWatcherWatchStatusResponse, D>::encode(
3059 (<PortStatus as fidl::encoding::ValueTypeMarker>::borrow(&self.port_status),),
3060 encoder,
3061 offset,
3062 _depth,
3063 )
3064 }
3065 }
3066 unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<PortStatus, D>>
3067 fidl::encoding::Encode<StatusWatcherWatchStatusResponse, D> for (T0,)
3068 {
3069 #[inline]
3070 unsafe fn encode(
3071 self,
3072 encoder: &mut fidl::encoding::Encoder<'_, D>,
3073 offset: usize,
3074 depth: fidl::encoding::Depth,
3075 ) -> fidl::Result<()> {
3076 encoder.debug_check_bounds::<StatusWatcherWatchStatusResponse>(offset);
3077 self.0.encode(encoder, offset + 0, depth)?;
3081 Ok(())
3082 }
3083 }
3084
3085 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
3086 for StatusWatcherWatchStatusResponse
3087 {
3088 #[inline(always)]
3089 fn new_empty() -> Self {
3090 Self { port_status: fidl::new_empty!(PortStatus, D) }
3091 }
3092
3093 #[inline]
3094 unsafe fn decode(
3095 &mut self,
3096 decoder: &mut fidl::encoding::Decoder<'_, D>,
3097 offset: usize,
3098 _depth: fidl::encoding::Depth,
3099 ) -> fidl::Result<()> {
3100 decoder.debug_check_bounds::<Self>(offset);
3101 fidl::decode!(PortStatus, D, &mut self.port_status, decoder, offset + 0, _depth)?;
3103 Ok(())
3104 }
3105 }
3106
3107 impl DeviceBaseInfo {
3108 #[inline(always)]
3109 fn max_ordinal_present(&self) -> u64 {
3110 if let Some(_) = self.min_rx_buffers {
3111 return 12;
3112 }
3113 if let Some(_) = self.max_buffer_parts {
3114 return 9;
3115 }
3116 if let Some(_) = self.min_tx_buffer_tail {
3117 return 8;
3118 }
3119 if let Some(_) = self.min_tx_buffer_head {
3120 return 7;
3121 }
3122 if let Some(_) = self.min_tx_buffer_length {
3123 return 6;
3124 }
3125 if let Some(_) = self.min_rx_buffer_length {
3126 return 5;
3127 }
3128 if let Some(_) = self.max_buffer_length {
3129 return 4;
3130 }
3131 if let Some(_) = self.buffer_alignment {
3132 return 3;
3133 }
3134 if let Some(_) = self.tx_depth {
3135 return 2;
3136 }
3137 if let Some(_) = self.rx_depth {
3138 return 1;
3139 }
3140 0
3141 }
3142 }
3143
3144 impl fidl::encoding::ValueTypeMarker for DeviceBaseInfo {
3145 type Borrowed<'a> = &'a Self;
3146 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3147 value
3148 }
3149 }
3150
3151 unsafe impl fidl::encoding::TypeMarker for DeviceBaseInfo {
3152 type Owned = Self;
3153
3154 #[inline(always)]
3155 fn inline_align(_context: fidl::encoding::Context) -> usize {
3156 8
3157 }
3158
3159 #[inline(always)]
3160 fn inline_size(_context: fidl::encoding::Context) -> usize {
3161 16
3162 }
3163 }
3164
3165 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<DeviceBaseInfo, D>
3166 for &DeviceBaseInfo
3167 {
3168 unsafe fn encode(
3169 self,
3170 encoder: &mut fidl::encoding::Encoder<'_, D>,
3171 offset: usize,
3172 mut depth: fidl::encoding::Depth,
3173 ) -> fidl::Result<()> {
3174 encoder.debug_check_bounds::<DeviceBaseInfo>(offset);
3175 let max_ordinal: u64 = self.max_ordinal_present();
3177 encoder.write_num(max_ordinal, offset);
3178 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
3179 if max_ordinal == 0 {
3181 return Ok(());
3182 }
3183 depth.increment()?;
3184 let envelope_size = 8;
3185 let bytes_len = max_ordinal as usize * envelope_size;
3186 #[allow(unused_variables)]
3187 let offset = encoder.out_of_line_offset(bytes_len);
3188 let mut _prev_end_offset: usize = 0;
3189 if 1 > max_ordinal {
3190 return Ok(());
3191 }
3192
3193 let cur_offset: usize = (1 - 1) * envelope_size;
3196
3197 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3199
3200 fidl::encoding::encode_in_envelope_optional::<u16, D>(
3205 self.rx_depth.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
3206 encoder,
3207 offset + cur_offset,
3208 depth,
3209 )?;
3210
3211 _prev_end_offset = cur_offset + envelope_size;
3212 if 2 > max_ordinal {
3213 return Ok(());
3214 }
3215
3216 let cur_offset: usize = (2 - 1) * envelope_size;
3219
3220 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3222
3223 fidl::encoding::encode_in_envelope_optional::<u16, D>(
3228 self.tx_depth.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
3229 encoder,
3230 offset + cur_offset,
3231 depth,
3232 )?;
3233
3234 _prev_end_offset = cur_offset + envelope_size;
3235 if 3 > max_ordinal {
3236 return Ok(());
3237 }
3238
3239 let cur_offset: usize = (3 - 1) * envelope_size;
3242
3243 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3245
3246 fidl::encoding::encode_in_envelope_optional::<u32, D>(
3251 self.buffer_alignment
3252 .as_ref()
3253 .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
3254 encoder,
3255 offset + cur_offset,
3256 depth,
3257 )?;
3258
3259 _prev_end_offset = cur_offset + envelope_size;
3260 if 4 > max_ordinal {
3261 return Ok(());
3262 }
3263
3264 let cur_offset: usize = (4 - 1) * envelope_size;
3267
3268 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3270
3271 fidl::encoding::encode_in_envelope_optional::<u32, D>(
3276 self.max_buffer_length
3277 .as_ref()
3278 .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
3279 encoder,
3280 offset + cur_offset,
3281 depth,
3282 )?;
3283
3284 _prev_end_offset = cur_offset + envelope_size;
3285 if 5 > max_ordinal {
3286 return Ok(());
3287 }
3288
3289 let cur_offset: usize = (5 - 1) * envelope_size;
3292
3293 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3295
3296 fidl::encoding::encode_in_envelope_optional::<u32, D>(
3301 self.min_rx_buffer_length
3302 .as_ref()
3303 .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
3304 encoder,
3305 offset + cur_offset,
3306 depth,
3307 )?;
3308
3309 _prev_end_offset = cur_offset + envelope_size;
3310 if 6 > max_ordinal {
3311 return Ok(());
3312 }
3313
3314 let cur_offset: usize = (6 - 1) * envelope_size;
3317
3318 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3320
3321 fidl::encoding::encode_in_envelope_optional::<u32, D>(
3326 self.min_tx_buffer_length
3327 .as_ref()
3328 .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
3329 encoder,
3330 offset + cur_offset,
3331 depth,
3332 )?;
3333
3334 _prev_end_offset = cur_offset + envelope_size;
3335 if 7 > max_ordinal {
3336 return Ok(());
3337 }
3338
3339 let cur_offset: usize = (7 - 1) * envelope_size;
3342
3343 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3345
3346 fidl::encoding::encode_in_envelope_optional::<u16, D>(
3351 self.min_tx_buffer_head
3352 .as_ref()
3353 .map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
3354 encoder,
3355 offset + cur_offset,
3356 depth,
3357 )?;
3358
3359 _prev_end_offset = cur_offset + envelope_size;
3360 if 8 > max_ordinal {
3361 return Ok(());
3362 }
3363
3364 let cur_offset: usize = (8 - 1) * envelope_size;
3367
3368 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3370
3371 fidl::encoding::encode_in_envelope_optional::<u16, D>(
3376 self.min_tx_buffer_tail
3377 .as_ref()
3378 .map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
3379 encoder,
3380 offset + cur_offset,
3381 depth,
3382 )?;
3383
3384 _prev_end_offset = cur_offset + envelope_size;
3385 if 9 > max_ordinal {
3386 return Ok(());
3387 }
3388
3389 let cur_offset: usize = (9 - 1) * envelope_size;
3392
3393 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3395
3396 fidl::encoding::encode_in_envelope_optional::<u8, D>(
3401 self.max_buffer_parts.as_ref().map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
3402 encoder,
3403 offset + cur_offset,
3404 depth,
3405 )?;
3406
3407 _prev_end_offset = cur_offset + envelope_size;
3408 if 12 > max_ordinal {
3409 return Ok(());
3410 }
3411
3412 let cur_offset: usize = (12 - 1) * envelope_size;
3415
3416 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3418
3419 fidl::encoding::encode_in_envelope_optional::<u16, D>(
3424 self.min_rx_buffers.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
3425 encoder,
3426 offset + cur_offset,
3427 depth,
3428 )?;
3429
3430 _prev_end_offset = cur_offset + envelope_size;
3431
3432 Ok(())
3433 }
3434 }
3435
3436 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for DeviceBaseInfo {
3437 #[inline(always)]
3438 fn new_empty() -> Self {
3439 Self::default()
3440 }
3441
3442 unsafe fn decode(
3443 &mut self,
3444 decoder: &mut fidl::encoding::Decoder<'_, D>,
3445 offset: usize,
3446 mut depth: fidl::encoding::Depth,
3447 ) -> fidl::Result<()> {
3448 decoder.debug_check_bounds::<Self>(offset);
3449 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
3450 None => return Err(fidl::Error::NotNullable),
3451 Some(len) => len,
3452 };
3453 if len == 0 {
3455 return Ok(());
3456 };
3457 depth.increment()?;
3458 let envelope_size = 8;
3459 let bytes_len = len * envelope_size;
3460 let offset = decoder.out_of_line_offset(bytes_len)?;
3461 let mut _next_ordinal_to_read = 0;
3463 let mut next_offset = offset;
3464 let end_offset = offset + bytes_len;
3465 _next_ordinal_to_read += 1;
3466 if next_offset >= end_offset {
3467 return Ok(());
3468 }
3469
3470 while _next_ordinal_to_read < 1 {
3472 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3473 _next_ordinal_to_read += 1;
3474 next_offset += envelope_size;
3475 }
3476
3477 let next_out_of_line = decoder.next_out_of_line();
3478 let handles_before = decoder.remaining_handles();
3479 if let Some((inlined, num_bytes, num_handles)) =
3480 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3481 {
3482 let member_inline_size =
3483 <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3484 if inlined != (member_inline_size <= 4) {
3485 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3486 }
3487 let inner_offset;
3488 let mut inner_depth = depth.clone();
3489 if inlined {
3490 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3491 inner_offset = next_offset;
3492 } else {
3493 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3494 inner_depth.increment()?;
3495 }
3496 let val_ref = self.rx_depth.get_or_insert_with(|| fidl::new_empty!(u16, D));
3497 fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
3498 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3499 {
3500 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3501 }
3502 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3503 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3504 }
3505 }
3506
3507 next_offset += envelope_size;
3508 _next_ordinal_to_read += 1;
3509 if next_offset >= end_offset {
3510 return Ok(());
3511 }
3512
3513 while _next_ordinal_to_read < 2 {
3515 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3516 _next_ordinal_to_read += 1;
3517 next_offset += envelope_size;
3518 }
3519
3520 let next_out_of_line = decoder.next_out_of_line();
3521 let handles_before = decoder.remaining_handles();
3522 if let Some((inlined, num_bytes, num_handles)) =
3523 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3524 {
3525 let member_inline_size =
3526 <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3527 if inlined != (member_inline_size <= 4) {
3528 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3529 }
3530 let inner_offset;
3531 let mut inner_depth = depth.clone();
3532 if inlined {
3533 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3534 inner_offset = next_offset;
3535 } else {
3536 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3537 inner_depth.increment()?;
3538 }
3539 let val_ref = self.tx_depth.get_or_insert_with(|| fidl::new_empty!(u16, D));
3540 fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
3541 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3542 {
3543 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3544 }
3545 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3546 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3547 }
3548 }
3549
3550 next_offset += envelope_size;
3551 _next_ordinal_to_read += 1;
3552 if next_offset >= end_offset {
3553 return Ok(());
3554 }
3555
3556 while _next_ordinal_to_read < 3 {
3558 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3559 _next_ordinal_to_read += 1;
3560 next_offset += envelope_size;
3561 }
3562
3563 let next_out_of_line = decoder.next_out_of_line();
3564 let handles_before = decoder.remaining_handles();
3565 if let Some((inlined, num_bytes, num_handles)) =
3566 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3567 {
3568 let member_inline_size =
3569 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3570 if inlined != (member_inline_size <= 4) {
3571 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3572 }
3573 let inner_offset;
3574 let mut inner_depth = depth.clone();
3575 if inlined {
3576 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3577 inner_offset = next_offset;
3578 } else {
3579 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3580 inner_depth.increment()?;
3581 }
3582 let val_ref = self.buffer_alignment.get_or_insert_with(|| fidl::new_empty!(u32, D));
3583 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
3584 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3585 {
3586 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3587 }
3588 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3589 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3590 }
3591 }
3592
3593 next_offset += envelope_size;
3594 _next_ordinal_to_read += 1;
3595 if next_offset >= end_offset {
3596 return Ok(());
3597 }
3598
3599 while _next_ordinal_to_read < 4 {
3601 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3602 _next_ordinal_to_read += 1;
3603 next_offset += envelope_size;
3604 }
3605
3606 let next_out_of_line = decoder.next_out_of_line();
3607 let handles_before = decoder.remaining_handles();
3608 if let Some((inlined, num_bytes, num_handles)) =
3609 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3610 {
3611 let member_inline_size =
3612 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3613 if inlined != (member_inline_size <= 4) {
3614 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3615 }
3616 let inner_offset;
3617 let mut inner_depth = depth.clone();
3618 if inlined {
3619 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3620 inner_offset = next_offset;
3621 } else {
3622 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3623 inner_depth.increment()?;
3624 }
3625 let val_ref =
3626 self.max_buffer_length.get_or_insert_with(|| fidl::new_empty!(u32, D));
3627 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
3628 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3629 {
3630 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3631 }
3632 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3633 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3634 }
3635 }
3636
3637 next_offset += envelope_size;
3638 _next_ordinal_to_read += 1;
3639 if next_offset >= end_offset {
3640 return Ok(());
3641 }
3642
3643 while _next_ordinal_to_read < 5 {
3645 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3646 _next_ordinal_to_read += 1;
3647 next_offset += envelope_size;
3648 }
3649
3650 let next_out_of_line = decoder.next_out_of_line();
3651 let handles_before = decoder.remaining_handles();
3652 if let Some((inlined, num_bytes, num_handles)) =
3653 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3654 {
3655 let member_inline_size =
3656 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3657 if inlined != (member_inline_size <= 4) {
3658 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3659 }
3660 let inner_offset;
3661 let mut inner_depth = depth.clone();
3662 if inlined {
3663 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3664 inner_offset = next_offset;
3665 } else {
3666 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3667 inner_depth.increment()?;
3668 }
3669 let val_ref =
3670 self.min_rx_buffer_length.get_or_insert_with(|| fidl::new_empty!(u32, D));
3671 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
3672 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3673 {
3674 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3675 }
3676 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3677 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3678 }
3679 }
3680
3681 next_offset += envelope_size;
3682 _next_ordinal_to_read += 1;
3683 if next_offset >= end_offset {
3684 return Ok(());
3685 }
3686
3687 while _next_ordinal_to_read < 6 {
3689 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3690 _next_ordinal_to_read += 1;
3691 next_offset += envelope_size;
3692 }
3693
3694 let next_out_of_line = decoder.next_out_of_line();
3695 let handles_before = decoder.remaining_handles();
3696 if let Some((inlined, num_bytes, num_handles)) =
3697 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3698 {
3699 let member_inline_size =
3700 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3701 if inlined != (member_inline_size <= 4) {
3702 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3703 }
3704 let inner_offset;
3705 let mut inner_depth = depth.clone();
3706 if inlined {
3707 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3708 inner_offset = next_offset;
3709 } else {
3710 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3711 inner_depth.increment()?;
3712 }
3713 let val_ref =
3714 self.min_tx_buffer_length.get_or_insert_with(|| fidl::new_empty!(u32, D));
3715 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
3716 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3717 {
3718 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3719 }
3720 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3721 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3722 }
3723 }
3724
3725 next_offset += envelope_size;
3726 _next_ordinal_to_read += 1;
3727 if next_offset >= end_offset {
3728 return Ok(());
3729 }
3730
3731 while _next_ordinal_to_read < 7 {
3733 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3734 _next_ordinal_to_read += 1;
3735 next_offset += envelope_size;
3736 }
3737
3738 let next_out_of_line = decoder.next_out_of_line();
3739 let handles_before = decoder.remaining_handles();
3740 if let Some((inlined, num_bytes, num_handles)) =
3741 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3742 {
3743 let member_inline_size =
3744 <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3745 if inlined != (member_inline_size <= 4) {
3746 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3747 }
3748 let inner_offset;
3749 let mut inner_depth = depth.clone();
3750 if inlined {
3751 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3752 inner_offset = next_offset;
3753 } else {
3754 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3755 inner_depth.increment()?;
3756 }
3757 let val_ref =
3758 self.min_tx_buffer_head.get_or_insert_with(|| fidl::new_empty!(u16, D));
3759 fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
3760 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3761 {
3762 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3763 }
3764 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3765 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3766 }
3767 }
3768
3769 next_offset += envelope_size;
3770 _next_ordinal_to_read += 1;
3771 if next_offset >= end_offset {
3772 return Ok(());
3773 }
3774
3775 while _next_ordinal_to_read < 8 {
3777 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3778 _next_ordinal_to_read += 1;
3779 next_offset += envelope_size;
3780 }
3781
3782 let next_out_of_line = decoder.next_out_of_line();
3783 let handles_before = decoder.remaining_handles();
3784 if let Some((inlined, num_bytes, num_handles)) =
3785 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3786 {
3787 let member_inline_size =
3788 <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3789 if inlined != (member_inline_size <= 4) {
3790 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3791 }
3792 let inner_offset;
3793 let mut inner_depth = depth.clone();
3794 if inlined {
3795 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3796 inner_offset = next_offset;
3797 } else {
3798 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3799 inner_depth.increment()?;
3800 }
3801 let val_ref =
3802 self.min_tx_buffer_tail.get_or_insert_with(|| fidl::new_empty!(u16, D));
3803 fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
3804 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3805 {
3806 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3807 }
3808 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3809 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3810 }
3811 }
3812
3813 next_offset += envelope_size;
3814 _next_ordinal_to_read += 1;
3815 if next_offset >= end_offset {
3816 return Ok(());
3817 }
3818
3819 while _next_ordinal_to_read < 9 {
3821 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3822 _next_ordinal_to_read += 1;
3823 next_offset += envelope_size;
3824 }
3825
3826 let next_out_of_line = decoder.next_out_of_line();
3827 let handles_before = decoder.remaining_handles();
3828 if let Some((inlined, num_bytes, num_handles)) =
3829 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3830 {
3831 let member_inline_size =
3832 <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3833 if inlined != (member_inline_size <= 4) {
3834 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3835 }
3836 let inner_offset;
3837 let mut inner_depth = depth.clone();
3838 if inlined {
3839 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3840 inner_offset = next_offset;
3841 } else {
3842 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3843 inner_depth.increment()?;
3844 }
3845 let val_ref = self.max_buffer_parts.get_or_insert_with(|| fidl::new_empty!(u8, D));
3846 fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
3847 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3848 {
3849 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3850 }
3851 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3852 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3853 }
3854 }
3855
3856 next_offset += envelope_size;
3857 _next_ordinal_to_read += 1;
3858 if next_offset >= end_offset {
3859 return Ok(());
3860 }
3861
3862 while _next_ordinal_to_read < 12 {
3864 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3865 _next_ordinal_to_read += 1;
3866 next_offset += envelope_size;
3867 }
3868
3869 let next_out_of_line = decoder.next_out_of_line();
3870 let handles_before = decoder.remaining_handles();
3871 if let Some((inlined, num_bytes, num_handles)) =
3872 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3873 {
3874 let member_inline_size =
3875 <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3876 if inlined != (member_inline_size <= 4) {
3877 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3878 }
3879 let inner_offset;
3880 let mut inner_depth = depth.clone();
3881 if inlined {
3882 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3883 inner_offset = next_offset;
3884 } else {
3885 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3886 inner_depth.increment()?;
3887 }
3888 let val_ref = self.min_rx_buffers.get_or_insert_with(|| fidl::new_empty!(u16, D));
3889 fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
3890 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3891 {
3892 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3893 }
3894 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3895 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3896 }
3897 }
3898
3899 next_offset += envelope_size;
3900
3901 while next_offset < end_offset {
3903 _next_ordinal_to_read += 1;
3904 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3905 next_offset += envelope_size;
3906 }
3907
3908 Ok(())
3909 }
3910 }
3911
3912 impl DeviceInfo {
3913 #[inline(always)]
3914 fn max_ordinal_present(&self) -> u64 {
3915 if let Some(_) = self.base_info {
3916 return 3;
3917 }
3918 if let Some(_) = self.descriptor_version {
3919 return 2;
3920 }
3921 if let Some(_) = self.min_descriptor_length {
3922 return 1;
3923 }
3924 0
3925 }
3926 }
3927
3928 impl fidl::encoding::ValueTypeMarker for DeviceInfo {
3929 type Borrowed<'a> = &'a Self;
3930 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3931 value
3932 }
3933 }
3934
3935 unsafe impl fidl::encoding::TypeMarker for DeviceInfo {
3936 type Owned = Self;
3937
3938 #[inline(always)]
3939 fn inline_align(_context: fidl::encoding::Context) -> usize {
3940 8
3941 }
3942
3943 #[inline(always)]
3944 fn inline_size(_context: fidl::encoding::Context) -> usize {
3945 16
3946 }
3947 }
3948
3949 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<DeviceInfo, D>
3950 for &DeviceInfo
3951 {
3952 unsafe fn encode(
3953 self,
3954 encoder: &mut fidl::encoding::Encoder<'_, D>,
3955 offset: usize,
3956 mut depth: fidl::encoding::Depth,
3957 ) -> fidl::Result<()> {
3958 encoder.debug_check_bounds::<DeviceInfo>(offset);
3959 let max_ordinal: u64 = self.max_ordinal_present();
3961 encoder.write_num(max_ordinal, offset);
3962 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
3963 if max_ordinal == 0 {
3965 return Ok(());
3966 }
3967 depth.increment()?;
3968 let envelope_size = 8;
3969 let bytes_len = max_ordinal as usize * envelope_size;
3970 #[allow(unused_variables)]
3971 let offset = encoder.out_of_line_offset(bytes_len);
3972 let mut _prev_end_offset: usize = 0;
3973 if 1 > max_ordinal {
3974 return Ok(());
3975 }
3976
3977 let cur_offset: usize = (1 - 1) * envelope_size;
3980
3981 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3983
3984 fidl::encoding::encode_in_envelope_optional::<u8, D>(
3989 self.min_descriptor_length
3990 .as_ref()
3991 .map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
3992 encoder,
3993 offset + cur_offset,
3994 depth,
3995 )?;
3996
3997 _prev_end_offset = cur_offset + envelope_size;
3998 if 2 > max_ordinal {
3999 return Ok(());
4000 }
4001
4002 let cur_offset: usize = (2 - 1) * envelope_size;
4005
4006 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4008
4009 fidl::encoding::encode_in_envelope_optional::<u8, D>(
4014 self.descriptor_version
4015 .as_ref()
4016 .map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
4017 encoder,
4018 offset + cur_offset,
4019 depth,
4020 )?;
4021
4022 _prev_end_offset = cur_offset + envelope_size;
4023 if 3 > max_ordinal {
4024 return Ok(());
4025 }
4026
4027 let cur_offset: usize = (3 - 1) * envelope_size;
4030
4031 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4033
4034 fidl::encoding::encode_in_envelope_optional::<DeviceBaseInfo, D>(
4039 self.base_info
4040 .as_ref()
4041 .map(<DeviceBaseInfo as fidl::encoding::ValueTypeMarker>::borrow),
4042 encoder,
4043 offset + cur_offset,
4044 depth,
4045 )?;
4046
4047 _prev_end_offset = cur_offset + envelope_size;
4048
4049 Ok(())
4050 }
4051 }
4052
4053 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for DeviceInfo {
4054 #[inline(always)]
4055 fn new_empty() -> Self {
4056 Self::default()
4057 }
4058
4059 unsafe fn decode(
4060 &mut self,
4061 decoder: &mut fidl::encoding::Decoder<'_, D>,
4062 offset: usize,
4063 mut depth: fidl::encoding::Depth,
4064 ) -> fidl::Result<()> {
4065 decoder.debug_check_bounds::<Self>(offset);
4066 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
4067 None => return Err(fidl::Error::NotNullable),
4068 Some(len) => len,
4069 };
4070 if len == 0 {
4072 return Ok(());
4073 };
4074 depth.increment()?;
4075 let envelope_size = 8;
4076 let bytes_len = len * envelope_size;
4077 let offset = decoder.out_of_line_offset(bytes_len)?;
4078 let mut _next_ordinal_to_read = 0;
4080 let mut next_offset = offset;
4081 let end_offset = offset + bytes_len;
4082 _next_ordinal_to_read += 1;
4083 if next_offset >= end_offset {
4084 return Ok(());
4085 }
4086
4087 while _next_ordinal_to_read < 1 {
4089 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4090 _next_ordinal_to_read += 1;
4091 next_offset += envelope_size;
4092 }
4093
4094 let next_out_of_line = decoder.next_out_of_line();
4095 let handles_before = decoder.remaining_handles();
4096 if let Some((inlined, num_bytes, num_handles)) =
4097 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4098 {
4099 let member_inline_size =
4100 <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4101 if inlined != (member_inline_size <= 4) {
4102 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4103 }
4104 let inner_offset;
4105 let mut inner_depth = depth.clone();
4106 if inlined {
4107 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4108 inner_offset = next_offset;
4109 } else {
4110 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4111 inner_depth.increment()?;
4112 }
4113 let val_ref =
4114 self.min_descriptor_length.get_or_insert_with(|| fidl::new_empty!(u8, D));
4115 fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
4116 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4117 {
4118 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4119 }
4120 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4121 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4122 }
4123 }
4124
4125 next_offset += envelope_size;
4126 _next_ordinal_to_read += 1;
4127 if next_offset >= end_offset {
4128 return Ok(());
4129 }
4130
4131 while _next_ordinal_to_read < 2 {
4133 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4134 _next_ordinal_to_read += 1;
4135 next_offset += envelope_size;
4136 }
4137
4138 let next_out_of_line = decoder.next_out_of_line();
4139 let handles_before = decoder.remaining_handles();
4140 if let Some((inlined, num_bytes, num_handles)) =
4141 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4142 {
4143 let member_inline_size =
4144 <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4145 if inlined != (member_inline_size <= 4) {
4146 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4147 }
4148 let inner_offset;
4149 let mut inner_depth = depth.clone();
4150 if inlined {
4151 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4152 inner_offset = next_offset;
4153 } else {
4154 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4155 inner_depth.increment()?;
4156 }
4157 let val_ref =
4158 self.descriptor_version.get_or_insert_with(|| fidl::new_empty!(u8, D));
4159 fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
4160 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4161 {
4162 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4163 }
4164 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4165 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4166 }
4167 }
4168
4169 next_offset += envelope_size;
4170 _next_ordinal_to_read += 1;
4171 if next_offset >= end_offset {
4172 return Ok(());
4173 }
4174
4175 while _next_ordinal_to_read < 3 {
4177 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4178 _next_ordinal_to_read += 1;
4179 next_offset += envelope_size;
4180 }
4181
4182 let next_out_of_line = decoder.next_out_of_line();
4183 let handles_before = decoder.remaining_handles();
4184 if let Some((inlined, num_bytes, num_handles)) =
4185 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4186 {
4187 let member_inline_size =
4188 <DeviceBaseInfo as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4189 if inlined != (member_inline_size <= 4) {
4190 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4191 }
4192 let inner_offset;
4193 let mut inner_depth = depth.clone();
4194 if inlined {
4195 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4196 inner_offset = next_offset;
4197 } else {
4198 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4199 inner_depth.increment()?;
4200 }
4201 let val_ref =
4202 self.base_info.get_or_insert_with(|| fidl::new_empty!(DeviceBaseInfo, D));
4203 fidl::decode!(DeviceBaseInfo, D, val_ref, decoder, inner_offset, inner_depth)?;
4204 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4205 {
4206 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4207 }
4208 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4209 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4210 }
4211 }
4212
4213 next_offset += envelope_size;
4214
4215 while next_offset < end_offset {
4217 _next_ordinal_to_read += 1;
4218 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4219 next_offset += envelope_size;
4220 }
4221
4222 Ok(())
4223 }
4224 }
4225
4226 impl PortBaseInfo {
4227 #[inline(always)]
4228 fn max_ordinal_present(&self) -> u64 {
4229 if let Some(_) = self.tx_types {
4230 return 3;
4231 }
4232 if let Some(_) = self.rx_types {
4233 return 2;
4234 }
4235 if let Some(_) = self.port_class {
4236 return 1;
4237 }
4238 0
4239 }
4240 }
4241
4242 impl fidl::encoding::ValueTypeMarker for PortBaseInfo {
4243 type Borrowed<'a> = &'a Self;
4244 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4245 value
4246 }
4247 }
4248
4249 unsafe impl fidl::encoding::TypeMarker for PortBaseInfo {
4250 type Owned = Self;
4251
4252 #[inline(always)]
4253 fn inline_align(_context: fidl::encoding::Context) -> usize {
4254 8
4255 }
4256
4257 #[inline(always)]
4258 fn inline_size(_context: fidl::encoding::Context) -> usize {
4259 16
4260 }
4261 }
4262
4263 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<PortBaseInfo, D>
4264 for &PortBaseInfo
4265 {
4266 unsafe fn encode(
4267 self,
4268 encoder: &mut fidl::encoding::Encoder<'_, D>,
4269 offset: usize,
4270 mut depth: fidl::encoding::Depth,
4271 ) -> fidl::Result<()> {
4272 encoder.debug_check_bounds::<PortBaseInfo>(offset);
4273 let max_ordinal: u64 = self.max_ordinal_present();
4275 encoder.write_num(max_ordinal, offset);
4276 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
4277 if max_ordinal == 0 {
4279 return Ok(());
4280 }
4281 depth.increment()?;
4282 let envelope_size = 8;
4283 let bytes_len = max_ordinal as usize * envelope_size;
4284 #[allow(unused_variables)]
4285 let offset = encoder.out_of_line_offset(bytes_len);
4286 let mut _prev_end_offset: usize = 0;
4287 if 1 > max_ordinal {
4288 return Ok(());
4289 }
4290
4291 let cur_offset: usize = (1 - 1) * envelope_size;
4294
4295 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4297
4298 fidl::encoding::encode_in_envelope_optional::<PortClass, D>(
4303 self.port_class
4304 .as_ref()
4305 .map(<PortClass as fidl::encoding::ValueTypeMarker>::borrow),
4306 encoder,
4307 offset + cur_offset,
4308 depth,
4309 )?;
4310
4311 _prev_end_offset = cur_offset + envelope_size;
4312 if 2 > max_ordinal {
4313 return Ok(());
4314 }
4315
4316 let cur_offset: usize = (2 - 1) * envelope_size;
4319
4320 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4322
4323 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<FrameType, 4>, D>(
4328 self.rx_types.as_ref().map(<fidl::encoding::Vector<FrameType, 4> as fidl::encoding::ValueTypeMarker>::borrow),
4329 encoder, offset + cur_offset, depth
4330 )?;
4331
4332 _prev_end_offset = cur_offset + envelope_size;
4333 if 3 > max_ordinal {
4334 return Ok(());
4335 }
4336
4337 let cur_offset: usize = (3 - 1) * envelope_size;
4340
4341 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4343
4344 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<FrameTypeSupport, 4>, D>(
4349 self.tx_types.as_ref().map(<fidl::encoding::Vector<FrameTypeSupport, 4> as fidl::encoding::ValueTypeMarker>::borrow),
4350 encoder, offset + cur_offset, depth
4351 )?;
4352
4353 _prev_end_offset = cur_offset + envelope_size;
4354
4355 Ok(())
4356 }
4357 }
4358
4359 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for PortBaseInfo {
4360 #[inline(always)]
4361 fn new_empty() -> Self {
4362 Self::default()
4363 }
4364
4365 unsafe fn decode(
4366 &mut self,
4367 decoder: &mut fidl::encoding::Decoder<'_, D>,
4368 offset: usize,
4369 mut depth: fidl::encoding::Depth,
4370 ) -> fidl::Result<()> {
4371 decoder.debug_check_bounds::<Self>(offset);
4372 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
4373 None => return Err(fidl::Error::NotNullable),
4374 Some(len) => len,
4375 };
4376 if len == 0 {
4378 return Ok(());
4379 };
4380 depth.increment()?;
4381 let envelope_size = 8;
4382 let bytes_len = len * envelope_size;
4383 let offset = decoder.out_of_line_offset(bytes_len)?;
4384 let mut _next_ordinal_to_read = 0;
4386 let mut next_offset = offset;
4387 let end_offset = offset + bytes_len;
4388 _next_ordinal_to_read += 1;
4389 if next_offset >= end_offset {
4390 return Ok(());
4391 }
4392
4393 while _next_ordinal_to_read < 1 {
4395 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4396 _next_ordinal_to_read += 1;
4397 next_offset += envelope_size;
4398 }
4399
4400 let next_out_of_line = decoder.next_out_of_line();
4401 let handles_before = decoder.remaining_handles();
4402 if let Some((inlined, num_bytes, num_handles)) =
4403 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4404 {
4405 let member_inline_size =
4406 <PortClass as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4407 if inlined != (member_inline_size <= 4) {
4408 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4409 }
4410 let inner_offset;
4411 let mut inner_depth = depth.clone();
4412 if inlined {
4413 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4414 inner_offset = next_offset;
4415 } else {
4416 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4417 inner_depth.increment()?;
4418 }
4419 let val_ref = self.port_class.get_or_insert_with(|| fidl::new_empty!(PortClass, D));
4420 fidl::decode!(PortClass, D, val_ref, decoder, inner_offset, inner_depth)?;
4421 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4422 {
4423 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4424 }
4425 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4426 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4427 }
4428 }
4429
4430 next_offset += envelope_size;
4431 _next_ordinal_to_read += 1;
4432 if next_offset >= end_offset {
4433 return Ok(());
4434 }
4435
4436 while _next_ordinal_to_read < 2 {
4438 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4439 _next_ordinal_to_read += 1;
4440 next_offset += envelope_size;
4441 }
4442
4443 let next_out_of_line = decoder.next_out_of_line();
4444 let handles_before = decoder.remaining_handles();
4445 if let Some((inlined, num_bytes, num_handles)) =
4446 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4447 {
4448 let member_inline_size = <fidl::encoding::Vector<FrameType, 4> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4449 if inlined != (member_inline_size <= 4) {
4450 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4451 }
4452 let inner_offset;
4453 let mut inner_depth = depth.clone();
4454 if inlined {
4455 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4456 inner_offset = next_offset;
4457 } else {
4458 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4459 inner_depth.increment()?;
4460 }
4461 let val_ref = self.rx_types.get_or_insert_with(
4462 || fidl::new_empty!(fidl::encoding::Vector<FrameType, 4>, D),
4463 );
4464 fidl::decode!(fidl::encoding::Vector<FrameType, 4>, D, val_ref, decoder, inner_offset, inner_depth)?;
4465 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4466 {
4467 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4468 }
4469 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4470 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4471 }
4472 }
4473
4474 next_offset += envelope_size;
4475 _next_ordinal_to_read += 1;
4476 if next_offset >= end_offset {
4477 return Ok(());
4478 }
4479
4480 while _next_ordinal_to_read < 3 {
4482 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4483 _next_ordinal_to_read += 1;
4484 next_offset += envelope_size;
4485 }
4486
4487 let next_out_of_line = decoder.next_out_of_line();
4488 let handles_before = decoder.remaining_handles();
4489 if let Some((inlined, num_bytes, num_handles)) =
4490 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4491 {
4492 let member_inline_size = <fidl::encoding::Vector<FrameTypeSupport, 4> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4493 if inlined != (member_inline_size <= 4) {
4494 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4495 }
4496 let inner_offset;
4497 let mut inner_depth = depth.clone();
4498 if inlined {
4499 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4500 inner_offset = next_offset;
4501 } else {
4502 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4503 inner_depth.increment()?;
4504 }
4505 let val_ref = self.tx_types.get_or_insert_with(
4506 || fidl::new_empty!(fidl::encoding::Vector<FrameTypeSupport, 4>, D),
4507 );
4508 fidl::decode!(fidl::encoding::Vector<FrameTypeSupport, 4>, D, val_ref, decoder, inner_offset, inner_depth)?;
4509 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4510 {
4511 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4512 }
4513 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4514 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4515 }
4516 }
4517
4518 next_offset += envelope_size;
4519
4520 while next_offset < end_offset {
4522 _next_ordinal_to_read += 1;
4523 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4524 next_offset += envelope_size;
4525 }
4526
4527 Ok(())
4528 }
4529 }
4530
4531 impl PortGetCountersResponse {
4532 #[inline(always)]
4533 fn max_ordinal_present(&self) -> u64 {
4534 if let Some(_) = self.tx_bytes {
4535 return 4;
4536 }
4537 if let Some(_) = self.tx_frames {
4538 return 3;
4539 }
4540 if let Some(_) = self.rx_bytes {
4541 return 2;
4542 }
4543 if let Some(_) = self.rx_frames {
4544 return 1;
4545 }
4546 0
4547 }
4548 }
4549
4550 impl fidl::encoding::ValueTypeMarker for PortGetCountersResponse {
4551 type Borrowed<'a> = &'a Self;
4552 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4553 value
4554 }
4555 }
4556
4557 unsafe impl fidl::encoding::TypeMarker for PortGetCountersResponse {
4558 type Owned = Self;
4559
4560 #[inline(always)]
4561 fn inline_align(_context: fidl::encoding::Context) -> usize {
4562 8
4563 }
4564
4565 #[inline(always)]
4566 fn inline_size(_context: fidl::encoding::Context) -> usize {
4567 16
4568 }
4569 }
4570
4571 unsafe impl<D: fidl::encoding::ResourceDialect>
4572 fidl::encoding::Encode<PortGetCountersResponse, D> for &PortGetCountersResponse
4573 {
4574 unsafe fn encode(
4575 self,
4576 encoder: &mut fidl::encoding::Encoder<'_, D>,
4577 offset: usize,
4578 mut depth: fidl::encoding::Depth,
4579 ) -> fidl::Result<()> {
4580 encoder.debug_check_bounds::<PortGetCountersResponse>(offset);
4581 let max_ordinal: u64 = self.max_ordinal_present();
4583 encoder.write_num(max_ordinal, offset);
4584 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
4585 if max_ordinal == 0 {
4587 return Ok(());
4588 }
4589 depth.increment()?;
4590 let envelope_size = 8;
4591 let bytes_len = max_ordinal as usize * envelope_size;
4592 #[allow(unused_variables)]
4593 let offset = encoder.out_of_line_offset(bytes_len);
4594 let mut _prev_end_offset: usize = 0;
4595 if 1 > max_ordinal {
4596 return Ok(());
4597 }
4598
4599 let cur_offset: usize = (1 - 1) * envelope_size;
4602
4603 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4605
4606 fidl::encoding::encode_in_envelope_optional::<u64, D>(
4611 self.rx_frames.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
4612 encoder,
4613 offset + cur_offset,
4614 depth,
4615 )?;
4616
4617 _prev_end_offset = cur_offset + envelope_size;
4618 if 2 > max_ordinal {
4619 return Ok(());
4620 }
4621
4622 let cur_offset: usize = (2 - 1) * envelope_size;
4625
4626 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4628
4629 fidl::encoding::encode_in_envelope_optional::<u64, D>(
4634 self.rx_bytes.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
4635 encoder,
4636 offset + cur_offset,
4637 depth,
4638 )?;
4639
4640 _prev_end_offset = cur_offset + envelope_size;
4641 if 3 > max_ordinal {
4642 return Ok(());
4643 }
4644
4645 let cur_offset: usize = (3 - 1) * envelope_size;
4648
4649 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4651
4652 fidl::encoding::encode_in_envelope_optional::<u64, D>(
4657 self.tx_frames.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
4658 encoder,
4659 offset + cur_offset,
4660 depth,
4661 )?;
4662
4663 _prev_end_offset = cur_offset + envelope_size;
4664 if 4 > max_ordinal {
4665 return Ok(());
4666 }
4667
4668 let cur_offset: usize = (4 - 1) * envelope_size;
4671
4672 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4674
4675 fidl::encoding::encode_in_envelope_optional::<u64, D>(
4680 self.tx_bytes.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
4681 encoder,
4682 offset + cur_offset,
4683 depth,
4684 )?;
4685
4686 _prev_end_offset = cur_offset + envelope_size;
4687
4688 Ok(())
4689 }
4690 }
4691
4692 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
4693 for PortGetCountersResponse
4694 {
4695 #[inline(always)]
4696 fn new_empty() -> Self {
4697 Self::default()
4698 }
4699
4700 unsafe fn decode(
4701 &mut self,
4702 decoder: &mut fidl::encoding::Decoder<'_, D>,
4703 offset: usize,
4704 mut depth: fidl::encoding::Depth,
4705 ) -> fidl::Result<()> {
4706 decoder.debug_check_bounds::<Self>(offset);
4707 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
4708 None => return Err(fidl::Error::NotNullable),
4709 Some(len) => len,
4710 };
4711 if len == 0 {
4713 return Ok(());
4714 };
4715 depth.increment()?;
4716 let envelope_size = 8;
4717 let bytes_len = len * envelope_size;
4718 let offset = decoder.out_of_line_offset(bytes_len)?;
4719 let mut _next_ordinal_to_read = 0;
4721 let mut next_offset = offset;
4722 let end_offset = offset + bytes_len;
4723 _next_ordinal_to_read += 1;
4724 if next_offset >= end_offset {
4725 return Ok(());
4726 }
4727
4728 while _next_ordinal_to_read < 1 {
4730 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4731 _next_ordinal_to_read += 1;
4732 next_offset += envelope_size;
4733 }
4734
4735 let next_out_of_line = decoder.next_out_of_line();
4736 let handles_before = decoder.remaining_handles();
4737 if let Some((inlined, num_bytes, num_handles)) =
4738 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4739 {
4740 let member_inline_size =
4741 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4742 if inlined != (member_inline_size <= 4) {
4743 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4744 }
4745 let inner_offset;
4746 let mut inner_depth = depth.clone();
4747 if inlined {
4748 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4749 inner_offset = next_offset;
4750 } else {
4751 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4752 inner_depth.increment()?;
4753 }
4754 let val_ref = self.rx_frames.get_or_insert_with(|| fidl::new_empty!(u64, D));
4755 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
4756 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4757 {
4758 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4759 }
4760 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4761 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4762 }
4763 }
4764
4765 next_offset += envelope_size;
4766 _next_ordinal_to_read += 1;
4767 if next_offset >= end_offset {
4768 return Ok(());
4769 }
4770
4771 while _next_ordinal_to_read < 2 {
4773 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4774 _next_ordinal_to_read += 1;
4775 next_offset += envelope_size;
4776 }
4777
4778 let next_out_of_line = decoder.next_out_of_line();
4779 let handles_before = decoder.remaining_handles();
4780 if let Some((inlined, num_bytes, num_handles)) =
4781 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4782 {
4783 let member_inline_size =
4784 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4785 if inlined != (member_inline_size <= 4) {
4786 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4787 }
4788 let inner_offset;
4789 let mut inner_depth = depth.clone();
4790 if inlined {
4791 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4792 inner_offset = next_offset;
4793 } else {
4794 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4795 inner_depth.increment()?;
4796 }
4797 let val_ref = self.rx_bytes.get_or_insert_with(|| fidl::new_empty!(u64, D));
4798 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
4799 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4800 {
4801 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4802 }
4803 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4804 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4805 }
4806 }
4807
4808 next_offset += envelope_size;
4809 _next_ordinal_to_read += 1;
4810 if next_offset >= end_offset {
4811 return Ok(());
4812 }
4813
4814 while _next_ordinal_to_read < 3 {
4816 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4817 _next_ordinal_to_read += 1;
4818 next_offset += envelope_size;
4819 }
4820
4821 let next_out_of_line = decoder.next_out_of_line();
4822 let handles_before = decoder.remaining_handles();
4823 if let Some((inlined, num_bytes, num_handles)) =
4824 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4825 {
4826 let member_inline_size =
4827 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4828 if inlined != (member_inline_size <= 4) {
4829 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4830 }
4831 let inner_offset;
4832 let mut inner_depth = depth.clone();
4833 if inlined {
4834 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4835 inner_offset = next_offset;
4836 } else {
4837 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4838 inner_depth.increment()?;
4839 }
4840 let val_ref = self.tx_frames.get_or_insert_with(|| fidl::new_empty!(u64, D));
4841 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
4842 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4843 {
4844 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4845 }
4846 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4847 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4848 }
4849 }
4850
4851 next_offset += envelope_size;
4852 _next_ordinal_to_read += 1;
4853 if next_offset >= end_offset {
4854 return Ok(());
4855 }
4856
4857 while _next_ordinal_to_read < 4 {
4859 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4860 _next_ordinal_to_read += 1;
4861 next_offset += envelope_size;
4862 }
4863
4864 let next_out_of_line = decoder.next_out_of_line();
4865 let handles_before = decoder.remaining_handles();
4866 if let Some((inlined, num_bytes, num_handles)) =
4867 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4868 {
4869 let member_inline_size =
4870 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4871 if inlined != (member_inline_size <= 4) {
4872 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4873 }
4874 let inner_offset;
4875 let mut inner_depth = depth.clone();
4876 if inlined {
4877 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4878 inner_offset = next_offset;
4879 } else {
4880 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4881 inner_depth.increment()?;
4882 }
4883 let val_ref = self.tx_bytes.get_or_insert_with(|| fidl::new_empty!(u64, D));
4884 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
4885 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4886 {
4887 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4888 }
4889 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4890 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4891 }
4892 }
4893
4894 next_offset += envelope_size;
4895
4896 while next_offset < end_offset {
4898 _next_ordinal_to_read += 1;
4899 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4900 next_offset += envelope_size;
4901 }
4902
4903 Ok(())
4904 }
4905 }
4906
4907 impl PortInfo {
4908 #[inline(always)]
4909 fn max_ordinal_present(&self) -> u64 {
4910 if let Some(_) = self.base_info {
4911 return 2;
4912 }
4913 if let Some(_) = self.id {
4914 return 1;
4915 }
4916 0
4917 }
4918 }
4919
4920 impl fidl::encoding::ValueTypeMarker for PortInfo {
4921 type Borrowed<'a> = &'a Self;
4922 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4923 value
4924 }
4925 }
4926
4927 unsafe impl fidl::encoding::TypeMarker for PortInfo {
4928 type Owned = Self;
4929
4930 #[inline(always)]
4931 fn inline_align(_context: fidl::encoding::Context) -> usize {
4932 8
4933 }
4934
4935 #[inline(always)]
4936 fn inline_size(_context: fidl::encoding::Context) -> usize {
4937 16
4938 }
4939 }
4940
4941 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<PortInfo, D> for &PortInfo {
4942 unsafe fn encode(
4943 self,
4944 encoder: &mut fidl::encoding::Encoder<'_, D>,
4945 offset: usize,
4946 mut depth: fidl::encoding::Depth,
4947 ) -> fidl::Result<()> {
4948 encoder.debug_check_bounds::<PortInfo>(offset);
4949 let max_ordinal: u64 = self.max_ordinal_present();
4951 encoder.write_num(max_ordinal, offset);
4952 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
4953 if max_ordinal == 0 {
4955 return Ok(());
4956 }
4957 depth.increment()?;
4958 let envelope_size = 8;
4959 let bytes_len = max_ordinal as usize * envelope_size;
4960 #[allow(unused_variables)]
4961 let offset = encoder.out_of_line_offset(bytes_len);
4962 let mut _prev_end_offset: usize = 0;
4963 if 1 > max_ordinal {
4964 return Ok(());
4965 }
4966
4967 let cur_offset: usize = (1 - 1) * envelope_size;
4970
4971 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4973
4974 fidl::encoding::encode_in_envelope_optional::<PortId, D>(
4979 self.id.as_ref().map(<PortId as fidl::encoding::ValueTypeMarker>::borrow),
4980 encoder,
4981 offset + cur_offset,
4982 depth,
4983 )?;
4984
4985 _prev_end_offset = cur_offset + envelope_size;
4986 if 2 > max_ordinal {
4987 return Ok(());
4988 }
4989
4990 let cur_offset: usize = (2 - 1) * envelope_size;
4993
4994 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4996
4997 fidl::encoding::encode_in_envelope_optional::<PortBaseInfo, D>(
5002 self.base_info
5003 .as_ref()
5004 .map(<PortBaseInfo as fidl::encoding::ValueTypeMarker>::borrow),
5005 encoder,
5006 offset + cur_offset,
5007 depth,
5008 )?;
5009
5010 _prev_end_offset = cur_offset + envelope_size;
5011
5012 Ok(())
5013 }
5014 }
5015
5016 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for PortInfo {
5017 #[inline(always)]
5018 fn new_empty() -> Self {
5019 Self::default()
5020 }
5021
5022 unsafe fn decode(
5023 &mut self,
5024 decoder: &mut fidl::encoding::Decoder<'_, D>,
5025 offset: usize,
5026 mut depth: fidl::encoding::Depth,
5027 ) -> fidl::Result<()> {
5028 decoder.debug_check_bounds::<Self>(offset);
5029 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
5030 None => return Err(fidl::Error::NotNullable),
5031 Some(len) => len,
5032 };
5033 if len == 0 {
5035 return Ok(());
5036 };
5037 depth.increment()?;
5038 let envelope_size = 8;
5039 let bytes_len = len * envelope_size;
5040 let offset = decoder.out_of_line_offset(bytes_len)?;
5041 let mut _next_ordinal_to_read = 0;
5043 let mut next_offset = offset;
5044 let end_offset = offset + bytes_len;
5045 _next_ordinal_to_read += 1;
5046 if next_offset >= end_offset {
5047 return Ok(());
5048 }
5049
5050 while _next_ordinal_to_read < 1 {
5052 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5053 _next_ordinal_to_read += 1;
5054 next_offset += envelope_size;
5055 }
5056
5057 let next_out_of_line = decoder.next_out_of_line();
5058 let handles_before = decoder.remaining_handles();
5059 if let Some((inlined, num_bytes, num_handles)) =
5060 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5061 {
5062 let member_inline_size =
5063 <PortId as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5064 if inlined != (member_inline_size <= 4) {
5065 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5066 }
5067 let inner_offset;
5068 let mut inner_depth = depth.clone();
5069 if inlined {
5070 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5071 inner_offset = next_offset;
5072 } else {
5073 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5074 inner_depth.increment()?;
5075 }
5076 let val_ref = self.id.get_or_insert_with(|| fidl::new_empty!(PortId, D));
5077 fidl::decode!(PortId, D, val_ref, decoder, inner_offset, inner_depth)?;
5078 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5079 {
5080 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5081 }
5082 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5083 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5084 }
5085 }
5086
5087 next_offset += envelope_size;
5088 _next_ordinal_to_read += 1;
5089 if next_offset >= end_offset {
5090 return Ok(());
5091 }
5092
5093 while _next_ordinal_to_read < 2 {
5095 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5096 _next_ordinal_to_read += 1;
5097 next_offset += envelope_size;
5098 }
5099
5100 let next_out_of_line = decoder.next_out_of_line();
5101 let handles_before = decoder.remaining_handles();
5102 if let Some((inlined, num_bytes, num_handles)) =
5103 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5104 {
5105 let member_inline_size =
5106 <PortBaseInfo as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5107 if inlined != (member_inline_size <= 4) {
5108 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5109 }
5110 let inner_offset;
5111 let mut inner_depth = depth.clone();
5112 if inlined {
5113 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5114 inner_offset = next_offset;
5115 } else {
5116 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5117 inner_depth.increment()?;
5118 }
5119 let val_ref =
5120 self.base_info.get_or_insert_with(|| fidl::new_empty!(PortBaseInfo, D));
5121 fidl::decode!(PortBaseInfo, D, val_ref, decoder, inner_offset, inner_depth)?;
5122 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5123 {
5124 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5125 }
5126 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5127 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5128 }
5129 }
5130
5131 next_offset += envelope_size;
5132
5133 while next_offset < end_offset {
5135 _next_ordinal_to_read += 1;
5136 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5137 next_offset += envelope_size;
5138 }
5139
5140 Ok(())
5141 }
5142 }
5143
5144 impl PortStatus {
5145 #[inline(always)]
5146 fn max_ordinal_present(&self) -> u64 {
5147 if let Some(_) = self.mtu {
5148 return 2;
5149 }
5150 if let Some(_) = self.flags {
5151 return 1;
5152 }
5153 0
5154 }
5155 }
5156
5157 impl fidl::encoding::ValueTypeMarker for PortStatus {
5158 type Borrowed<'a> = &'a Self;
5159 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5160 value
5161 }
5162 }
5163
5164 unsafe impl fidl::encoding::TypeMarker for PortStatus {
5165 type Owned = Self;
5166
5167 #[inline(always)]
5168 fn inline_align(_context: fidl::encoding::Context) -> usize {
5169 8
5170 }
5171
5172 #[inline(always)]
5173 fn inline_size(_context: fidl::encoding::Context) -> usize {
5174 16
5175 }
5176 }
5177
5178 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<PortStatus, D>
5179 for &PortStatus
5180 {
5181 unsafe fn encode(
5182 self,
5183 encoder: &mut fidl::encoding::Encoder<'_, D>,
5184 offset: usize,
5185 mut depth: fidl::encoding::Depth,
5186 ) -> fidl::Result<()> {
5187 encoder.debug_check_bounds::<PortStatus>(offset);
5188 let max_ordinal: u64 = self.max_ordinal_present();
5190 encoder.write_num(max_ordinal, offset);
5191 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
5192 if max_ordinal == 0 {
5194 return Ok(());
5195 }
5196 depth.increment()?;
5197 let envelope_size = 8;
5198 let bytes_len = max_ordinal as usize * envelope_size;
5199 #[allow(unused_variables)]
5200 let offset = encoder.out_of_line_offset(bytes_len);
5201 let mut _prev_end_offset: usize = 0;
5202 if 1 > max_ordinal {
5203 return Ok(());
5204 }
5205
5206 let cur_offset: usize = (1 - 1) * envelope_size;
5209
5210 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5212
5213 fidl::encoding::encode_in_envelope_optional::<StatusFlags, D>(
5218 self.flags.as_ref().map(<StatusFlags as fidl::encoding::ValueTypeMarker>::borrow),
5219 encoder,
5220 offset + cur_offset,
5221 depth,
5222 )?;
5223
5224 _prev_end_offset = cur_offset + envelope_size;
5225 if 2 > max_ordinal {
5226 return Ok(());
5227 }
5228
5229 let cur_offset: usize = (2 - 1) * envelope_size;
5232
5233 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5235
5236 fidl::encoding::encode_in_envelope_optional::<u32, D>(
5241 self.mtu.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
5242 encoder,
5243 offset + cur_offset,
5244 depth,
5245 )?;
5246
5247 _prev_end_offset = cur_offset + envelope_size;
5248
5249 Ok(())
5250 }
5251 }
5252
5253 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for PortStatus {
5254 #[inline(always)]
5255 fn new_empty() -> Self {
5256 Self::default()
5257 }
5258
5259 unsafe fn decode(
5260 &mut self,
5261 decoder: &mut fidl::encoding::Decoder<'_, D>,
5262 offset: usize,
5263 mut depth: fidl::encoding::Depth,
5264 ) -> fidl::Result<()> {
5265 decoder.debug_check_bounds::<Self>(offset);
5266 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
5267 None => return Err(fidl::Error::NotNullable),
5268 Some(len) => len,
5269 };
5270 if len == 0 {
5272 return Ok(());
5273 };
5274 depth.increment()?;
5275 let envelope_size = 8;
5276 let bytes_len = len * envelope_size;
5277 let offset = decoder.out_of_line_offset(bytes_len)?;
5278 let mut _next_ordinal_to_read = 0;
5280 let mut next_offset = offset;
5281 let end_offset = offset + bytes_len;
5282 _next_ordinal_to_read += 1;
5283 if next_offset >= end_offset {
5284 return Ok(());
5285 }
5286
5287 while _next_ordinal_to_read < 1 {
5289 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5290 _next_ordinal_to_read += 1;
5291 next_offset += envelope_size;
5292 }
5293
5294 let next_out_of_line = decoder.next_out_of_line();
5295 let handles_before = decoder.remaining_handles();
5296 if let Some((inlined, num_bytes, num_handles)) =
5297 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5298 {
5299 let member_inline_size =
5300 <StatusFlags as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5301 if inlined != (member_inline_size <= 4) {
5302 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5303 }
5304 let inner_offset;
5305 let mut inner_depth = depth.clone();
5306 if inlined {
5307 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5308 inner_offset = next_offset;
5309 } else {
5310 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5311 inner_depth.increment()?;
5312 }
5313 let val_ref = self.flags.get_or_insert_with(|| fidl::new_empty!(StatusFlags, D));
5314 fidl::decode!(StatusFlags, D, val_ref, decoder, inner_offset, inner_depth)?;
5315 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5316 {
5317 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5318 }
5319 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5320 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5321 }
5322 }
5323
5324 next_offset += envelope_size;
5325 _next_ordinal_to_read += 1;
5326 if next_offset >= end_offset {
5327 return Ok(());
5328 }
5329
5330 while _next_ordinal_to_read < 2 {
5332 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5333 _next_ordinal_to_read += 1;
5334 next_offset += envelope_size;
5335 }
5336
5337 let next_out_of_line = decoder.next_out_of_line();
5338 let handles_before = decoder.remaining_handles();
5339 if let Some((inlined, num_bytes, num_handles)) =
5340 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5341 {
5342 let member_inline_size =
5343 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5344 if inlined != (member_inline_size <= 4) {
5345 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5346 }
5347 let inner_offset;
5348 let mut inner_depth = depth.clone();
5349 if inlined {
5350 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5351 inner_offset = next_offset;
5352 } else {
5353 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5354 inner_depth.increment()?;
5355 }
5356 let val_ref = self.mtu.get_or_insert_with(|| fidl::new_empty!(u32, D));
5357 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
5358 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5359 {
5360 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5361 }
5362 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5363 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5364 }
5365 }
5366
5367 next_offset += envelope_size;
5368
5369 while next_offset < end_offset {
5371 _next_ordinal_to_read += 1;
5372 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5373 next_offset += envelope_size;
5374 }
5375
5376 Ok(())
5377 }
5378 }
5379
5380 impl fidl::encoding::ValueTypeMarker for DevicePortEvent {
5381 type Borrowed<'a> = &'a Self;
5382 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5383 value
5384 }
5385 }
5386
5387 unsafe impl fidl::encoding::TypeMarker for DevicePortEvent {
5388 type Owned = Self;
5389
5390 #[inline(always)]
5391 fn inline_align(_context: fidl::encoding::Context) -> usize {
5392 8
5393 }
5394
5395 #[inline(always)]
5396 fn inline_size(_context: fidl::encoding::Context) -> usize {
5397 16
5398 }
5399 }
5400
5401 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<DevicePortEvent, D>
5402 for &DevicePortEvent
5403 {
5404 #[inline]
5405 unsafe fn encode(
5406 self,
5407 encoder: &mut fidl::encoding::Encoder<'_, D>,
5408 offset: usize,
5409 _depth: fidl::encoding::Depth,
5410 ) -> fidl::Result<()> {
5411 encoder.debug_check_bounds::<DevicePortEvent>(offset);
5412 encoder.write_num::<u64>(self.ordinal(), offset);
5413 match self {
5414 DevicePortEvent::Existing(ref val) => {
5415 fidl::encoding::encode_in_envelope::<PortId, D>(
5416 <PortId as fidl::encoding::ValueTypeMarker>::borrow(val),
5417 encoder,
5418 offset + 8,
5419 _depth,
5420 )
5421 }
5422 DevicePortEvent::Added(ref val) => fidl::encoding::encode_in_envelope::<PortId, D>(
5423 <PortId as fidl::encoding::ValueTypeMarker>::borrow(val),
5424 encoder,
5425 offset + 8,
5426 _depth,
5427 ),
5428 DevicePortEvent::Removed(ref val) => {
5429 fidl::encoding::encode_in_envelope::<PortId, D>(
5430 <PortId as fidl::encoding::ValueTypeMarker>::borrow(val),
5431 encoder,
5432 offset + 8,
5433 _depth,
5434 )
5435 }
5436 DevicePortEvent::Idle(ref val) => fidl::encoding::encode_in_envelope::<Empty, D>(
5437 <Empty as fidl::encoding::ValueTypeMarker>::borrow(val),
5438 encoder,
5439 offset + 8,
5440 _depth,
5441 ),
5442 }
5443 }
5444 }
5445
5446 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for DevicePortEvent {
5447 #[inline(always)]
5448 fn new_empty() -> Self {
5449 Self::Existing(fidl::new_empty!(PortId, D))
5450 }
5451
5452 #[inline]
5453 unsafe fn decode(
5454 &mut self,
5455 decoder: &mut fidl::encoding::Decoder<'_, D>,
5456 offset: usize,
5457 mut depth: fidl::encoding::Depth,
5458 ) -> fidl::Result<()> {
5459 decoder.debug_check_bounds::<Self>(offset);
5460 #[allow(unused_variables)]
5461 let next_out_of_line = decoder.next_out_of_line();
5462 let handles_before = decoder.remaining_handles();
5463 let (ordinal, inlined, num_bytes, num_handles) =
5464 fidl::encoding::decode_union_inline_portion(decoder, offset)?;
5465
5466 let member_inline_size = match ordinal {
5467 1 => <PortId as fidl::encoding::TypeMarker>::inline_size(decoder.context),
5468 2 => <PortId as fidl::encoding::TypeMarker>::inline_size(decoder.context),
5469 3 => <PortId as fidl::encoding::TypeMarker>::inline_size(decoder.context),
5470 4 => <Empty as fidl::encoding::TypeMarker>::inline_size(decoder.context),
5471 _ => return Err(fidl::Error::UnknownUnionTag),
5472 };
5473
5474 if inlined != (member_inline_size <= 4) {
5475 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5476 }
5477 let _inner_offset;
5478 if inlined {
5479 decoder.check_inline_envelope_padding(offset + 8, member_inline_size)?;
5480 _inner_offset = offset + 8;
5481 } else {
5482 depth.increment()?;
5483 _inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5484 }
5485 match ordinal {
5486 1 => {
5487 #[allow(irrefutable_let_patterns)]
5488 if let DevicePortEvent::Existing(_) = self {
5489 } else {
5491 *self = DevicePortEvent::Existing(fidl::new_empty!(PortId, D));
5493 }
5494 #[allow(irrefutable_let_patterns)]
5495 if let DevicePortEvent::Existing(ref mut val) = self {
5496 fidl::decode!(PortId, D, val, decoder, _inner_offset, depth)?;
5497 } else {
5498 unreachable!()
5499 }
5500 }
5501 2 => {
5502 #[allow(irrefutable_let_patterns)]
5503 if let DevicePortEvent::Added(_) = self {
5504 } else {
5506 *self = DevicePortEvent::Added(fidl::new_empty!(PortId, D));
5508 }
5509 #[allow(irrefutable_let_patterns)]
5510 if let DevicePortEvent::Added(ref mut val) = self {
5511 fidl::decode!(PortId, D, val, decoder, _inner_offset, depth)?;
5512 } else {
5513 unreachable!()
5514 }
5515 }
5516 3 => {
5517 #[allow(irrefutable_let_patterns)]
5518 if let DevicePortEvent::Removed(_) = self {
5519 } else {
5521 *self = DevicePortEvent::Removed(fidl::new_empty!(PortId, D));
5523 }
5524 #[allow(irrefutable_let_patterns)]
5525 if let DevicePortEvent::Removed(ref mut val) = self {
5526 fidl::decode!(PortId, D, val, decoder, _inner_offset, depth)?;
5527 } else {
5528 unreachable!()
5529 }
5530 }
5531 4 => {
5532 #[allow(irrefutable_let_patterns)]
5533 if let DevicePortEvent::Idle(_) = self {
5534 } else {
5536 *self = DevicePortEvent::Idle(fidl::new_empty!(Empty, D));
5538 }
5539 #[allow(irrefutable_let_patterns)]
5540 if let DevicePortEvent::Idle(ref mut val) = self {
5541 fidl::decode!(Empty, D, val, decoder, _inner_offset, depth)?;
5542 } else {
5543 unreachable!()
5544 }
5545 }
5546 ordinal => panic!("unexpected ordinal {:?}", ordinal),
5547 }
5548 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize) {
5549 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5550 }
5551 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5552 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5553 }
5554 Ok(())
5555 }
5556 }
5557}