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