1#![warn(clippy::all)]
4#![allow(unused_parens, unused_mut, unused_imports, nonstandard_style)]
5
6use bitflags::bitflags;
7use fidl::encoding::{MessageBufFor, ProxyChannelBox, ResourceDialect};
8use futures::future::{self, MaybeDone, TryFutureExt};
9use zx_status;
10
11pub const FIFO_DEPTH: u16 = 128;
13
14pub const MAX_MTU: u32 = 16384;
16
17pub const MAX_MULTICAST_FILTERS: u32 = 64;
19
20pub const MAX_PENDING_OPERATIONS: u32 = 32;
23
24bitflags! {
25 #[derive(Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Hash)]
28 pub struct Signals: u32 {
29 const WRITABLE = 16777216;
32 const READABLE = 33554432;
35 }
36}
37
38impl Signals {}
39
40#[derive(Clone, Debug, PartialEq)]
41pub struct DevicePairAddPortRequest {
42 pub config: DevicePairPortConfig,
43}
44
45impl fidl::Persistable for DevicePairAddPortRequest {}
46
47#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
48#[repr(C)]
49pub struct DevicePairRemovePortRequest {
50 pub id: u8,
51}
52
53impl fidl::Persistable for DevicePairRemovePortRequest {}
54
55#[derive(Clone, Debug, PartialEq)]
56pub struct DeviceWriteFrameRequest {
57 pub frame: Frame,
58}
59
60impl fidl::Persistable for DeviceWriteFrameRequest {}
61
62#[derive(Clone, Debug, PartialEq)]
63pub struct DeviceReadFrameResponse {
64 pub frame: Frame,
65}
66
67impl fidl::Persistable for DeviceReadFrameResponse {}
68
69#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
70#[repr(C)]
71pub struct FrameMetadata {
72 pub flags: u32,
77}
78
79impl fidl::Persistable for FrameMetadata {}
80
81#[derive(Clone, Debug, PartialEq)]
82pub struct PortGetStateResponse {
83 pub state: InternalState,
84}
85
86impl fidl::Persistable for PortGetStateResponse {}
87
88#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
89pub struct PortSetOnlineRequest {
90 pub online: bool,
91}
92
93impl fidl::Persistable for PortSetOnlineRequest {}
94
95#[derive(Clone, Debug, PartialEq)]
96pub struct PortWatchStateResponse {
97 pub state: InternalState,
98}
99
100impl fidl::Persistable for PortWatchStateResponse {}
101
102#[derive(Clone, Debug, Default, PartialEq)]
104pub struct BaseDeviceConfig {
105 pub report_metadata: Option<bool>,
109 pub min_tx_buffer_length: Option<u32>,
113 pub min_rx_buffer_length: Option<u32>,
117 #[doc(hidden)]
118 pub __source_breaking: fidl::marker::SourceBreaking,
119}
120
121impl fidl::Persistable for BaseDeviceConfig {}
122
123#[derive(Clone, Debug, Default, PartialEq)]
125pub struct BasePortConfig {
126 pub id: Option<u8>,
130 pub mtu: Option<u32>,
136 pub rx_types: Option<Vec<fidl_fuchsia_hardware_network_common::FrameType>>,
142 pub tx_types: Option<Vec<fidl_fuchsia_hardware_network_common::FrameTypeSupport>>,
148 pub port_class: Option<fidl_fuchsia_hardware_network_common::PortClass>,
152 pub rx_checksum_offload: Option<bool>,
157 #[doc(hidden)]
158 pub __source_breaking: fidl::marker::SourceBreaking,
159}
160
161impl fidl::Persistable for BasePortConfig {}
162
163#[derive(Clone, Debug, Default, PartialEq)]
164pub struct DeviceConfig {
165 pub base: Option<BaseDeviceConfig>,
169 pub blocking: Option<bool>,
175 #[doc(hidden)]
176 pub __source_breaking: fidl::marker::SourceBreaking,
177}
178
179impl fidl::Persistable for DeviceConfig {}
180
181#[derive(Clone, Debug, Default, PartialEq)]
182pub struct DevicePairConfig {
183 pub base: Option<BaseDeviceConfig>,
187 pub fallible_transmit_left: Option<bool>,
194 pub fallible_transmit_right: Option<bool>,
199 #[doc(hidden)]
200 pub __source_breaking: fidl::marker::SourceBreaking,
201}
202
203impl fidl::Persistable for DevicePairConfig {}
204
205#[derive(Clone, Debug, Default, PartialEq)]
206pub struct DevicePairPortConfig {
207 pub base: Option<BasePortConfig>,
211 pub mac_left: Option<fidl_fuchsia_net_common::MacAddress>,
217 pub mac_right: Option<fidl_fuchsia_net_common::MacAddress>,
223 #[doc(hidden)]
224 pub __source_breaking: fidl::marker::SourceBreaking,
225}
226
227impl fidl::Persistable for DevicePairPortConfig {}
228
229#[derive(Clone, Debug, Default, PartialEq)]
230pub struct DevicePortConfig {
231 pub base: Option<BasePortConfig>,
235 pub online: Option<bool>,
239 pub mac: Option<fidl_fuchsia_net_common::MacAddress>,
245 #[doc(hidden)]
246 pub __source_breaking: fidl::marker::SourceBreaking,
247}
248
249impl fidl::Persistable for DevicePortConfig {}
250
251#[derive(Clone, Debug, Default, PartialEq)]
257pub struct Frame {
258 pub frame_type: Option<fidl_fuchsia_hardware_network_common::FrameType>,
262 pub data: Option<Vec<u8>>,
268 pub meta: Option<FrameMetadata>,
275 pub port: Option<u8>,
279 #[doc(hidden)]
280 pub __source_breaking: fidl::marker::SourceBreaking,
281}
282
283impl fidl::Persistable for Frame {}
284
285#[derive(Clone, Debug, Default, PartialEq)]
287pub struct InternalState {
288 pub mac: Option<MacState>,
298 pub has_session: Option<bool>,
302 #[doc(hidden)]
303 pub __source_breaking: fidl::marker::SourceBreaking,
304}
305
306impl fidl::Persistable for InternalState {}
307
308#[derive(Clone, Debug, Default, PartialEq)]
309pub struct MacState {
310 pub mode: Option<fidl_fuchsia_hardware_network_common::MacFilterMode>,
314 pub multicast_filters: Option<Vec<fidl_fuchsia_net_common::MacAddress>>,
318 #[doc(hidden)]
319 pub __source_breaking: fidl::marker::SourceBreaking,
320}
321
322impl fidl::Persistable for MacState {}
323
324pub mod control_ordinals {
325 pub const CREATE_DEVICE: u64 = 0x2aace38c0c1cd187;
326 pub const CREATE_PAIR: u64 = 0x2c8884060cc29d18;
327}
328
329pub mod device_ordinals {
330 pub const WRITE_FRAME: u64 = 0x2d19e24e149bf6db;
331 pub const READ_FRAME: u64 = 0x6ebc56b8427e1571;
332 pub const GET_SIGNALS: u64 = 0x4d1ca50fc53606b9;
333 pub const ADD_PORT: u64 = 0x6b56b238f04ee3d4;
334 pub const GET_DEVICE: u64 = 0x2e8c81fdcdd99d26;
335 pub const DELEGATE_RX_LEASE: u64 = 0x660137a0e680b4c0;
336}
337
338pub mod device_pair_ordinals {
339 pub const ADD_PORT: u64 = 0x362f4856a075e1f8;
340 pub const REMOVE_PORT: u64 = 0x33bb45cc1d3fbe1e;
341 pub const GET_LEFT: u64 = 0x1357a771a6ccb303;
342 pub const GET_RIGHT: u64 = 0x45ebce063223b60f;
343 pub const GET_LEFT_PORT: u64 = 0x6e3038d75096ab77;
344 pub const GET_RIGHT_PORT: u64 = 0x7fc4716601eb987c;
345}
346
347pub mod port_ordinals {
348 pub const GET_STATE: u64 = 0x5022630816212ed;
349 pub const WATCH_STATE: u64 = 0x74d3c94c96e2b605;
350 pub const SET_ONLINE: u64 = 0x734f83793ce86e6c;
351 pub const GET_PORT: u64 = 0x1998638c1d97eed2;
352 pub const REMOVE: u64 = 0x4f45201ed5719261;
353}
354
355mod internal {
356 use super::*;
357 unsafe impl fidl::encoding::TypeMarker for Signals {
358 type Owned = Self;
359
360 #[inline(always)]
361 fn inline_align(_context: fidl::encoding::Context) -> usize {
362 4
363 }
364
365 #[inline(always)]
366 fn inline_size(_context: fidl::encoding::Context) -> usize {
367 4
368 }
369 }
370
371 impl fidl::encoding::ValueTypeMarker for Signals {
372 type Borrowed<'a> = Self;
373 #[inline(always)]
374 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
375 *value
376 }
377 }
378
379 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for Signals {
380 #[inline]
381 unsafe fn encode(
382 self,
383 encoder: &mut fidl::encoding::Encoder<'_, D>,
384 offset: usize,
385 _depth: fidl::encoding::Depth,
386 ) -> fidl::Result<()> {
387 encoder.debug_check_bounds::<Self>(offset);
388 if self.bits() & Self::all().bits() != self.bits() {
389 return Err(fidl::Error::InvalidBitsValue);
390 }
391 encoder.write_num(self.bits(), offset);
392 Ok(())
393 }
394 }
395
396 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Signals {
397 #[inline(always)]
398 fn new_empty() -> Self {
399 Self::empty()
400 }
401
402 #[inline]
403 unsafe fn decode(
404 &mut self,
405 decoder: &mut fidl::encoding::Decoder<'_, D>,
406 offset: usize,
407 _depth: fidl::encoding::Depth,
408 ) -> fidl::Result<()> {
409 decoder.debug_check_bounds::<Self>(offset);
410 let prim = decoder.read_num::<u32>(offset);
411 *self = Self::from_bits(prim).ok_or(fidl::Error::InvalidBitsValue)?;
412 Ok(())
413 }
414 }
415
416 impl fidl::encoding::ValueTypeMarker for DevicePairAddPortRequest {
417 type Borrowed<'a> = &'a Self;
418 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
419 value
420 }
421 }
422
423 unsafe impl fidl::encoding::TypeMarker for DevicePairAddPortRequest {
424 type Owned = Self;
425
426 #[inline(always)]
427 fn inline_align(_context: fidl::encoding::Context) -> usize {
428 8
429 }
430
431 #[inline(always)]
432 fn inline_size(_context: fidl::encoding::Context) -> usize {
433 16
434 }
435 }
436
437 unsafe impl<D: fidl::encoding::ResourceDialect>
438 fidl::encoding::Encode<DevicePairAddPortRequest, D> for &DevicePairAddPortRequest
439 {
440 #[inline]
441 unsafe fn encode(
442 self,
443 encoder: &mut fidl::encoding::Encoder<'_, D>,
444 offset: usize,
445 _depth: fidl::encoding::Depth,
446 ) -> fidl::Result<()> {
447 encoder.debug_check_bounds::<DevicePairAddPortRequest>(offset);
448 fidl::encoding::Encode::<DevicePairAddPortRequest, D>::encode(
450 (<DevicePairPortConfig as fidl::encoding::ValueTypeMarker>::borrow(&self.config),),
451 encoder,
452 offset,
453 _depth,
454 )
455 }
456 }
457 unsafe impl<
458 D: fidl::encoding::ResourceDialect,
459 T0: fidl::encoding::Encode<DevicePairPortConfig, D>,
460 > fidl::encoding::Encode<DevicePairAddPortRequest, D> for (T0,)
461 {
462 #[inline]
463 unsafe fn encode(
464 self,
465 encoder: &mut fidl::encoding::Encoder<'_, D>,
466 offset: usize,
467 depth: fidl::encoding::Depth,
468 ) -> fidl::Result<()> {
469 encoder.debug_check_bounds::<DevicePairAddPortRequest>(offset);
470 self.0.encode(encoder, offset + 0, depth)?;
474 Ok(())
475 }
476 }
477
478 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
479 for DevicePairAddPortRequest
480 {
481 #[inline(always)]
482 fn new_empty() -> Self {
483 Self { config: fidl::new_empty!(DevicePairPortConfig, D) }
484 }
485
486 #[inline]
487 unsafe fn decode(
488 &mut self,
489 decoder: &mut fidl::encoding::Decoder<'_, D>,
490 offset: usize,
491 _depth: fidl::encoding::Depth,
492 ) -> fidl::Result<()> {
493 decoder.debug_check_bounds::<Self>(offset);
494 fidl::decode!(DevicePairPortConfig, D, &mut self.config, decoder, offset + 0, _depth)?;
496 Ok(())
497 }
498 }
499
500 impl fidl::encoding::ValueTypeMarker for DevicePairRemovePortRequest {
501 type Borrowed<'a> = &'a Self;
502 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
503 value
504 }
505 }
506
507 unsafe impl fidl::encoding::TypeMarker for DevicePairRemovePortRequest {
508 type Owned = Self;
509
510 #[inline(always)]
511 fn inline_align(_context: fidl::encoding::Context) -> usize {
512 1
513 }
514
515 #[inline(always)]
516 fn inline_size(_context: fidl::encoding::Context) -> usize {
517 1
518 }
519 #[inline(always)]
520 fn encode_is_copy() -> bool {
521 true
522 }
523
524 #[inline(always)]
525 fn decode_is_copy() -> bool {
526 true
527 }
528 }
529
530 unsafe impl<D: fidl::encoding::ResourceDialect>
531 fidl::encoding::Encode<DevicePairRemovePortRequest, D> for &DevicePairRemovePortRequest
532 {
533 #[inline]
534 unsafe fn encode(
535 self,
536 encoder: &mut fidl::encoding::Encoder<'_, D>,
537 offset: usize,
538 _depth: fidl::encoding::Depth,
539 ) -> fidl::Result<()> {
540 encoder.debug_check_bounds::<DevicePairRemovePortRequest>(offset);
541 unsafe {
542 let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
544 (buf_ptr as *mut DevicePairRemovePortRequest)
545 .write_unaligned((self as *const DevicePairRemovePortRequest).read());
546 }
549 Ok(())
550 }
551 }
552 unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<u8, D>>
553 fidl::encoding::Encode<DevicePairRemovePortRequest, D> for (T0,)
554 {
555 #[inline]
556 unsafe fn encode(
557 self,
558 encoder: &mut fidl::encoding::Encoder<'_, D>,
559 offset: usize,
560 depth: fidl::encoding::Depth,
561 ) -> fidl::Result<()> {
562 encoder.debug_check_bounds::<DevicePairRemovePortRequest>(offset);
563 self.0.encode(encoder, offset + 0, depth)?;
567 Ok(())
568 }
569 }
570
571 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
572 for DevicePairRemovePortRequest
573 {
574 #[inline(always)]
575 fn new_empty() -> Self {
576 Self { id: fidl::new_empty!(u8, D) }
577 }
578
579 #[inline]
580 unsafe fn decode(
581 &mut self,
582 decoder: &mut fidl::encoding::Decoder<'_, D>,
583 offset: usize,
584 _depth: fidl::encoding::Depth,
585 ) -> fidl::Result<()> {
586 decoder.debug_check_bounds::<Self>(offset);
587 let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
588 unsafe {
591 std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 1);
592 }
593 Ok(())
594 }
595 }
596
597 impl fidl::encoding::ValueTypeMarker for DeviceWriteFrameRequest {
598 type Borrowed<'a> = &'a Self;
599 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
600 value
601 }
602 }
603
604 unsafe impl fidl::encoding::TypeMarker for DeviceWriteFrameRequest {
605 type Owned = Self;
606
607 #[inline(always)]
608 fn inline_align(_context: fidl::encoding::Context) -> usize {
609 8
610 }
611
612 #[inline(always)]
613 fn inline_size(_context: fidl::encoding::Context) -> usize {
614 16
615 }
616 }
617
618 unsafe impl<D: fidl::encoding::ResourceDialect>
619 fidl::encoding::Encode<DeviceWriteFrameRequest, D> for &DeviceWriteFrameRequest
620 {
621 #[inline]
622 unsafe fn encode(
623 self,
624 encoder: &mut fidl::encoding::Encoder<'_, D>,
625 offset: usize,
626 _depth: fidl::encoding::Depth,
627 ) -> fidl::Result<()> {
628 encoder.debug_check_bounds::<DeviceWriteFrameRequest>(offset);
629 fidl::encoding::Encode::<DeviceWriteFrameRequest, D>::encode(
631 (<Frame as fidl::encoding::ValueTypeMarker>::borrow(&self.frame),),
632 encoder,
633 offset,
634 _depth,
635 )
636 }
637 }
638 unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<Frame, D>>
639 fidl::encoding::Encode<DeviceWriteFrameRequest, D> for (T0,)
640 {
641 #[inline]
642 unsafe fn encode(
643 self,
644 encoder: &mut fidl::encoding::Encoder<'_, D>,
645 offset: usize,
646 depth: fidl::encoding::Depth,
647 ) -> fidl::Result<()> {
648 encoder.debug_check_bounds::<DeviceWriteFrameRequest>(offset);
649 self.0.encode(encoder, offset + 0, depth)?;
653 Ok(())
654 }
655 }
656
657 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
658 for DeviceWriteFrameRequest
659 {
660 #[inline(always)]
661 fn new_empty() -> Self {
662 Self { frame: fidl::new_empty!(Frame, D) }
663 }
664
665 #[inline]
666 unsafe fn decode(
667 &mut self,
668 decoder: &mut fidl::encoding::Decoder<'_, D>,
669 offset: usize,
670 _depth: fidl::encoding::Depth,
671 ) -> fidl::Result<()> {
672 decoder.debug_check_bounds::<Self>(offset);
673 fidl::decode!(Frame, D, &mut self.frame, decoder, offset + 0, _depth)?;
675 Ok(())
676 }
677 }
678
679 impl fidl::encoding::ValueTypeMarker for DeviceReadFrameResponse {
680 type Borrowed<'a> = &'a Self;
681 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
682 value
683 }
684 }
685
686 unsafe impl fidl::encoding::TypeMarker for DeviceReadFrameResponse {
687 type Owned = Self;
688
689 #[inline(always)]
690 fn inline_align(_context: fidl::encoding::Context) -> usize {
691 8
692 }
693
694 #[inline(always)]
695 fn inline_size(_context: fidl::encoding::Context) -> usize {
696 16
697 }
698 }
699
700 unsafe impl<D: fidl::encoding::ResourceDialect>
701 fidl::encoding::Encode<DeviceReadFrameResponse, D> for &DeviceReadFrameResponse
702 {
703 #[inline]
704 unsafe fn encode(
705 self,
706 encoder: &mut fidl::encoding::Encoder<'_, D>,
707 offset: usize,
708 _depth: fidl::encoding::Depth,
709 ) -> fidl::Result<()> {
710 encoder.debug_check_bounds::<DeviceReadFrameResponse>(offset);
711 fidl::encoding::Encode::<DeviceReadFrameResponse, D>::encode(
713 (<Frame as fidl::encoding::ValueTypeMarker>::borrow(&self.frame),),
714 encoder,
715 offset,
716 _depth,
717 )
718 }
719 }
720 unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<Frame, D>>
721 fidl::encoding::Encode<DeviceReadFrameResponse, D> for (T0,)
722 {
723 #[inline]
724 unsafe fn encode(
725 self,
726 encoder: &mut fidl::encoding::Encoder<'_, D>,
727 offset: usize,
728 depth: fidl::encoding::Depth,
729 ) -> fidl::Result<()> {
730 encoder.debug_check_bounds::<DeviceReadFrameResponse>(offset);
731 self.0.encode(encoder, offset + 0, depth)?;
735 Ok(())
736 }
737 }
738
739 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
740 for DeviceReadFrameResponse
741 {
742 #[inline(always)]
743 fn new_empty() -> Self {
744 Self { frame: fidl::new_empty!(Frame, D) }
745 }
746
747 #[inline]
748 unsafe fn decode(
749 &mut self,
750 decoder: &mut fidl::encoding::Decoder<'_, D>,
751 offset: usize,
752 _depth: fidl::encoding::Depth,
753 ) -> fidl::Result<()> {
754 decoder.debug_check_bounds::<Self>(offset);
755 fidl::decode!(Frame, D, &mut self.frame, decoder, offset + 0, _depth)?;
757 Ok(())
758 }
759 }
760
761 impl fidl::encoding::ValueTypeMarker for FrameMetadata {
762 type Borrowed<'a> = &'a Self;
763 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
764 value
765 }
766 }
767
768 unsafe impl fidl::encoding::TypeMarker for FrameMetadata {
769 type Owned = Self;
770
771 #[inline(always)]
772 fn inline_align(_context: fidl::encoding::Context) -> usize {
773 4
774 }
775
776 #[inline(always)]
777 fn inline_size(_context: fidl::encoding::Context) -> usize {
778 4
779 }
780 #[inline(always)]
781 fn encode_is_copy() -> bool {
782 true
783 }
784
785 #[inline(always)]
786 fn decode_is_copy() -> bool {
787 true
788 }
789 }
790
791 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<FrameMetadata, D>
792 for &FrameMetadata
793 {
794 #[inline]
795 unsafe fn encode(
796 self,
797 encoder: &mut fidl::encoding::Encoder<'_, D>,
798 offset: usize,
799 _depth: fidl::encoding::Depth,
800 ) -> fidl::Result<()> {
801 encoder.debug_check_bounds::<FrameMetadata>(offset);
802 unsafe {
803 let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
805 (buf_ptr as *mut FrameMetadata)
806 .write_unaligned((self as *const FrameMetadata).read());
807 }
810 Ok(())
811 }
812 }
813 unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<u32, D>>
814 fidl::encoding::Encode<FrameMetadata, D> for (T0,)
815 {
816 #[inline]
817 unsafe fn encode(
818 self,
819 encoder: &mut fidl::encoding::Encoder<'_, D>,
820 offset: usize,
821 depth: fidl::encoding::Depth,
822 ) -> fidl::Result<()> {
823 encoder.debug_check_bounds::<FrameMetadata>(offset);
824 self.0.encode(encoder, offset + 0, depth)?;
828 Ok(())
829 }
830 }
831
832 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for FrameMetadata {
833 #[inline(always)]
834 fn new_empty() -> Self {
835 Self { flags: fidl::new_empty!(u32, D) }
836 }
837
838 #[inline]
839 unsafe fn decode(
840 &mut self,
841 decoder: &mut fidl::encoding::Decoder<'_, D>,
842 offset: usize,
843 _depth: fidl::encoding::Depth,
844 ) -> fidl::Result<()> {
845 decoder.debug_check_bounds::<Self>(offset);
846 let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
847 unsafe {
850 std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 4);
851 }
852 Ok(())
853 }
854 }
855
856 impl fidl::encoding::ValueTypeMarker for PortGetStateResponse {
857 type Borrowed<'a> = &'a Self;
858 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
859 value
860 }
861 }
862
863 unsafe impl fidl::encoding::TypeMarker for PortGetStateResponse {
864 type Owned = Self;
865
866 #[inline(always)]
867 fn inline_align(_context: fidl::encoding::Context) -> usize {
868 8
869 }
870
871 #[inline(always)]
872 fn inline_size(_context: fidl::encoding::Context) -> usize {
873 16
874 }
875 }
876
877 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<PortGetStateResponse, D>
878 for &PortGetStateResponse
879 {
880 #[inline]
881 unsafe fn encode(
882 self,
883 encoder: &mut fidl::encoding::Encoder<'_, D>,
884 offset: usize,
885 _depth: fidl::encoding::Depth,
886 ) -> fidl::Result<()> {
887 encoder.debug_check_bounds::<PortGetStateResponse>(offset);
888 fidl::encoding::Encode::<PortGetStateResponse, D>::encode(
890 (<InternalState as fidl::encoding::ValueTypeMarker>::borrow(&self.state),),
891 encoder,
892 offset,
893 _depth,
894 )
895 }
896 }
897 unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<InternalState, D>>
898 fidl::encoding::Encode<PortGetStateResponse, D> for (T0,)
899 {
900 #[inline]
901 unsafe fn encode(
902 self,
903 encoder: &mut fidl::encoding::Encoder<'_, D>,
904 offset: usize,
905 depth: fidl::encoding::Depth,
906 ) -> fidl::Result<()> {
907 encoder.debug_check_bounds::<PortGetStateResponse>(offset);
908 self.0.encode(encoder, offset + 0, depth)?;
912 Ok(())
913 }
914 }
915
916 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for PortGetStateResponse {
917 #[inline(always)]
918 fn new_empty() -> Self {
919 Self { state: fidl::new_empty!(InternalState, D) }
920 }
921
922 #[inline]
923 unsafe fn decode(
924 &mut self,
925 decoder: &mut fidl::encoding::Decoder<'_, D>,
926 offset: usize,
927 _depth: fidl::encoding::Depth,
928 ) -> fidl::Result<()> {
929 decoder.debug_check_bounds::<Self>(offset);
930 fidl::decode!(InternalState, D, &mut self.state, decoder, offset + 0, _depth)?;
932 Ok(())
933 }
934 }
935
936 impl fidl::encoding::ValueTypeMarker for PortSetOnlineRequest {
937 type Borrowed<'a> = &'a Self;
938 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
939 value
940 }
941 }
942
943 unsafe impl fidl::encoding::TypeMarker for PortSetOnlineRequest {
944 type Owned = Self;
945
946 #[inline(always)]
947 fn inline_align(_context: fidl::encoding::Context) -> usize {
948 1
949 }
950
951 #[inline(always)]
952 fn inline_size(_context: fidl::encoding::Context) -> usize {
953 1
954 }
955 }
956
957 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<PortSetOnlineRequest, D>
958 for &PortSetOnlineRequest
959 {
960 #[inline]
961 unsafe fn encode(
962 self,
963 encoder: &mut fidl::encoding::Encoder<'_, D>,
964 offset: usize,
965 _depth: fidl::encoding::Depth,
966 ) -> fidl::Result<()> {
967 encoder.debug_check_bounds::<PortSetOnlineRequest>(offset);
968 fidl::encoding::Encode::<PortSetOnlineRequest, D>::encode(
970 (<bool as fidl::encoding::ValueTypeMarker>::borrow(&self.online),),
971 encoder,
972 offset,
973 _depth,
974 )
975 }
976 }
977 unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<bool, D>>
978 fidl::encoding::Encode<PortSetOnlineRequest, D> for (T0,)
979 {
980 #[inline]
981 unsafe fn encode(
982 self,
983 encoder: &mut fidl::encoding::Encoder<'_, D>,
984 offset: usize,
985 depth: fidl::encoding::Depth,
986 ) -> fidl::Result<()> {
987 encoder.debug_check_bounds::<PortSetOnlineRequest>(offset);
988 self.0.encode(encoder, offset + 0, depth)?;
992 Ok(())
993 }
994 }
995
996 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for PortSetOnlineRequest {
997 #[inline(always)]
998 fn new_empty() -> Self {
999 Self { online: fidl::new_empty!(bool, D) }
1000 }
1001
1002 #[inline]
1003 unsafe fn decode(
1004 &mut self,
1005 decoder: &mut fidl::encoding::Decoder<'_, D>,
1006 offset: usize,
1007 _depth: fidl::encoding::Depth,
1008 ) -> fidl::Result<()> {
1009 decoder.debug_check_bounds::<Self>(offset);
1010 fidl::decode!(bool, D, &mut self.online, decoder, offset + 0, _depth)?;
1012 Ok(())
1013 }
1014 }
1015
1016 impl fidl::encoding::ValueTypeMarker for PortWatchStateResponse {
1017 type Borrowed<'a> = &'a Self;
1018 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1019 value
1020 }
1021 }
1022
1023 unsafe impl fidl::encoding::TypeMarker for PortWatchStateResponse {
1024 type Owned = Self;
1025
1026 #[inline(always)]
1027 fn inline_align(_context: fidl::encoding::Context) -> usize {
1028 8
1029 }
1030
1031 #[inline(always)]
1032 fn inline_size(_context: fidl::encoding::Context) -> usize {
1033 16
1034 }
1035 }
1036
1037 unsafe impl<D: fidl::encoding::ResourceDialect>
1038 fidl::encoding::Encode<PortWatchStateResponse, D> for &PortWatchStateResponse
1039 {
1040 #[inline]
1041 unsafe fn encode(
1042 self,
1043 encoder: &mut fidl::encoding::Encoder<'_, D>,
1044 offset: usize,
1045 _depth: fidl::encoding::Depth,
1046 ) -> fidl::Result<()> {
1047 encoder.debug_check_bounds::<PortWatchStateResponse>(offset);
1048 fidl::encoding::Encode::<PortWatchStateResponse, D>::encode(
1050 (<InternalState as fidl::encoding::ValueTypeMarker>::borrow(&self.state),),
1051 encoder,
1052 offset,
1053 _depth,
1054 )
1055 }
1056 }
1057 unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<InternalState, D>>
1058 fidl::encoding::Encode<PortWatchStateResponse, D> for (T0,)
1059 {
1060 #[inline]
1061 unsafe fn encode(
1062 self,
1063 encoder: &mut fidl::encoding::Encoder<'_, D>,
1064 offset: usize,
1065 depth: fidl::encoding::Depth,
1066 ) -> fidl::Result<()> {
1067 encoder.debug_check_bounds::<PortWatchStateResponse>(offset);
1068 self.0.encode(encoder, offset + 0, depth)?;
1072 Ok(())
1073 }
1074 }
1075
1076 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1077 for PortWatchStateResponse
1078 {
1079 #[inline(always)]
1080 fn new_empty() -> Self {
1081 Self { state: fidl::new_empty!(InternalState, D) }
1082 }
1083
1084 #[inline]
1085 unsafe fn decode(
1086 &mut self,
1087 decoder: &mut fidl::encoding::Decoder<'_, D>,
1088 offset: usize,
1089 _depth: fidl::encoding::Depth,
1090 ) -> fidl::Result<()> {
1091 decoder.debug_check_bounds::<Self>(offset);
1092 fidl::decode!(InternalState, D, &mut self.state, decoder, offset + 0, _depth)?;
1094 Ok(())
1095 }
1096 }
1097
1098 impl BaseDeviceConfig {
1099 #[inline(always)]
1100 fn max_ordinal_present(&self) -> u64 {
1101 if let Some(_) = self.min_rx_buffer_length {
1102 return 3;
1103 }
1104 if let Some(_) = self.min_tx_buffer_length {
1105 return 2;
1106 }
1107 if let Some(_) = self.report_metadata {
1108 return 1;
1109 }
1110 0
1111 }
1112 }
1113
1114 impl fidl::encoding::ValueTypeMarker for BaseDeviceConfig {
1115 type Borrowed<'a> = &'a Self;
1116 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1117 value
1118 }
1119 }
1120
1121 unsafe impl fidl::encoding::TypeMarker for BaseDeviceConfig {
1122 type Owned = Self;
1123
1124 #[inline(always)]
1125 fn inline_align(_context: fidl::encoding::Context) -> usize {
1126 8
1127 }
1128
1129 #[inline(always)]
1130 fn inline_size(_context: fidl::encoding::Context) -> usize {
1131 16
1132 }
1133 }
1134
1135 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<BaseDeviceConfig, D>
1136 for &BaseDeviceConfig
1137 {
1138 unsafe fn encode(
1139 self,
1140 encoder: &mut fidl::encoding::Encoder<'_, D>,
1141 offset: usize,
1142 mut depth: fidl::encoding::Depth,
1143 ) -> fidl::Result<()> {
1144 encoder.debug_check_bounds::<BaseDeviceConfig>(offset);
1145 let max_ordinal: u64 = self.max_ordinal_present();
1147 encoder.write_num(max_ordinal, offset);
1148 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
1149 if max_ordinal == 0 {
1151 return Ok(());
1152 }
1153 depth.increment()?;
1154 let envelope_size = 8;
1155 let bytes_len = max_ordinal as usize * envelope_size;
1156 #[allow(unused_variables)]
1157 let offset = encoder.out_of_line_offset(bytes_len);
1158 let mut _prev_end_offset: usize = 0;
1159 if 1 > max_ordinal {
1160 return Ok(());
1161 }
1162
1163 let cur_offset: usize = (1 - 1) * envelope_size;
1166
1167 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1169
1170 fidl::encoding::encode_in_envelope_optional::<bool, D>(
1175 self.report_metadata
1176 .as_ref()
1177 .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
1178 encoder,
1179 offset + cur_offset,
1180 depth,
1181 )?;
1182
1183 _prev_end_offset = cur_offset + envelope_size;
1184 if 2 > max_ordinal {
1185 return Ok(());
1186 }
1187
1188 let cur_offset: usize = (2 - 1) * envelope_size;
1191
1192 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1194
1195 fidl::encoding::encode_in_envelope_optional::<u32, D>(
1200 self.min_tx_buffer_length
1201 .as_ref()
1202 .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
1203 encoder,
1204 offset + cur_offset,
1205 depth,
1206 )?;
1207
1208 _prev_end_offset = cur_offset + envelope_size;
1209 if 3 > max_ordinal {
1210 return Ok(());
1211 }
1212
1213 let cur_offset: usize = (3 - 1) * envelope_size;
1216
1217 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1219
1220 fidl::encoding::encode_in_envelope_optional::<u32, D>(
1225 self.min_rx_buffer_length
1226 .as_ref()
1227 .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
1228 encoder,
1229 offset + cur_offset,
1230 depth,
1231 )?;
1232
1233 _prev_end_offset = cur_offset + envelope_size;
1234
1235 Ok(())
1236 }
1237 }
1238
1239 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for BaseDeviceConfig {
1240 #[inline(always)]
1241 fn new_empty() -> Self {
1242 Self::default()
1243 }
1244
1245 unsafe fn decode(
1246 &mut self,
1247 decoder: &mut fidl::encoding::Decoder<'_, D>,
1248 offset: usize,
1249 mut depth: fidl::encoding::Depth,
1250 ) -> fidl::Result<()> {
1251 decoder.debug_check_bounds::<Self>(offset);
1252 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
1253 None => return Err(fidl::Error::NotNullable),
1254 Some(len) => len,
1255 };
1256 if len == 0 {
1258 return Ok(());
1259 };
1260 depth.increment()?;
1261 let envelope_size = 8;
1262 let bytes_len = len * envelope_size;
1263 let offset = decoder.out_of_line_offset(bytes_len)?;
1264 let mut _next_ordinal_to_read = 0;
1266 let mut next_offset = offset;
1267 let end_offset = offset + bytes_len;
1268 _next_ordinal_to_read += 1;
1269 if next_offset >= end_offset {
1270 return Ok(());
1271 }
1272
1273 while _next_ordinal_to_read < 1 {
1275 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1276 _next_ordinal_to_read += 1;
1277 next_offset += envelope_size;
1278 }
1279
1280 let next_out_of_line = decoder.next_out_of_line();
1281 let handles_before = decoder.remaining_handles();
1282 if let Some((inlined, num_bytes, num_handles)) =
1283 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1284 {
1285 let member_inline_size =
1286 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1287 if inlined != (member_inline_size <= 4) {
1288 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1289 }
1290 let inner_offset;
1291 let mut inner_depth = depth.clone();
1292 if inlined {
1293 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1294 inner_offset = next_offset;
1295 } else {
1296 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1297 inner_depth.increment()?;
1298 }
1299 let val_ref = self.report_metadata.get_or_insert_with(|| fidl::new_empty!(bool, D));
1300 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
1301 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1302 {
1303 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1304 }
1305 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1306 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1307 }
1308 }
1309
1310 next_offset += envelope_size;
1311 _next_ordinal_to_read += 1;
1312 if next_offset >= end_offset {
1313 return Ok(());
1314 }
1315
1316 while _next_ordinal_to_read < 2 {
1318 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1319 _next_ordinal_to_read += 1;
1320 next_offset += envelope_size;
1321 }
1322
1323 let next_out_of_line = decoder.next_out_of_line();
1324 let handles_before = decoder.remaining_handles();
1325 if let Some((inlined, num_bytes, num_handles)) =
1326 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1327 {
1328 let member_inline_size =
1329 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1330 if inlined != (member_inline_size <= 4) {
1331 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1332 }
1333 let inner_offset;
1334 let mut inner_depth = depth.clone();
1335 if inlined {
1336 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1337 inner_offset = next_offset;
1338 } else {
1339 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1340 inner_depth.increment()?;
1341 }
1342 let val_ref =
1343 self.min_tx_buffer_length.get_or_insert_with(|| fidl::new_empty!(u32, D));
1344 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
1345 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1346 {
1347 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1348 }
1349 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1350 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1351 }
1352 }
1353
1354 next_offset += envelope_size;
1355 _next_ordinal_to_read += 1;
1356 if next_offset >= end_offset {
1357 return Ok(());
1358 }
1359
1360 while _next_ordinal_to_read < 3 {
1362 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1363 _next_ordinal_to_read += 1;
1364 next_offset += envelope_size;
1365 }
1366
1367 let next_out_of_line = decoder.next_out_of_line();
1368 let handles_before = decoder.remaining_handles();
1369 if let Some((inlined, num_bytes, num_handles)) =
1370 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1371 {
1372 let member_inline_size =
1373 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1374 if inlined != (member_inline_size <= 4) {
1375 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1376 }
1377 let inner_offset;
1378 let mut inner_depth = depth.clone();
1379 if inlined {
1380 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1381 inner_offset = next_offset;
1382 } else {
1383 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1384 inner_depth.increment()?;
1385 }
1386 let val_ref =
1387 self.min_rx_buffer_length.get_or_insert_with(|| fidl::new_empty!(u32, D));
1388 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
1389 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1390 {
1391 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1392 }
1393 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1394 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1395 }
1396 }
1397
1398 next_offset += envelope_size;
1399
1400 while next_offset < end_offset {
1402 _next_ordinal_to_read += 1;
1403 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1404 next_offset += envelope_size;
1405 }
1406
1407 Ok(())
1408 }
1409 }
1410
1411 impl BasePortConfig {
1412 #[inline(always)]
1413 fn max_ordinal_present(&self) -> u64 {
1414 if let Some(_) = self.rx_checksum_offload {
1415 return 6;
1416 }
1417 if let Some(_) = self.port_class {
1418 return 5;
1419 }
1420 if let Some(_) = self.tx_types {
1421 return 4;
1422 }
1423 if let Some(_) = self.rx_types {
1424 return 3;
1425 }
1426 if let Some(_) = self.mtu {
1427 return 2;
1428 }
1429 if let Some(_) = self.id {
1430 return 1;
1431 }
1432 0
1433 }
1434 }
1435
1436 impl fidl::encoding::ValueTypeMarker for BasePortConfig {
1437 type Borrowed<'a> = &'a Self;
1438 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1439 value
1440 }
1441 }
1442
1443 unsafe impl fidl::encoding::TypeMarker for BasePortConfig {
1444 type Owned = Self;
1445
1446 #[inline(always)]
1447 fn inline_align(_context: fidl::encoding::Context) -> usize {
1448 8
1449 }
1450
1451 #[inline(always)]
1452 fn inline_size(_context: fidl::encoding::Context) -> usize {
1453 16
1454 }
1455 }
1456
1457 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<BasePortConfig, D>
1458 for &BasePortConfig
1459 {
1460 unsafe fn encode(
1461 self,
1462 encoder: &mut fidl::encoding::Encoder<'_, D>,
1463 offset: usize,
1464 mut depth: fidl::encoding::Depth,
1465 ) -> fidl::Result<()> {
1466 encoder.debug_check_bounds::<BasePortConfig>(offset);
1467 let max_ordinal: u64 = self.max_ordinal_present();
1469 encoder.write_num(max_ordinal, offset);
1470 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
1471 if max_ordinal == 0 {
1473 return Ok(());
1474 }
1475 depth.increment()?;
1476 let envelope_size = 8;
1477 let bytes_len = max_ordinal as usize * envelope_size;
1478 #[allow(unused_variables)]
1479 let offset = encoder.out_of_line_offset(bytes_len);
1480 let mut _prev_end_offset: usize = 0;
1481 if 1 > max_ordinal {
1482 return Ok(());
1483 }
1484
1485 let cur_offset: usize = (1 - 1) * envelope_size;
1488
1489 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1491
1492 fidl::encoding::encode_in_envelope_optional::<u8, D>(
1497 self.id.as_ref().map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
1498 encoder,
1499 offset + cur_offset,
1500 depth,
1501 )?;
1502
1503 _prev_end_offset = cur_offset + envelope_size;
1504 if 2 > max_ordinal {
1505 return Ok(());
1506 }
1507
1508 let cur_offset: usize = (2 - 1) * envelope_size;
1511
1512 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1514
1515 fidl::encoding::encode_in_envelope_optional::<u32, D>(
1520 self.mtu.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
1521 encoder,
1522 offset + cur_offset,
1523 depth,
1524 )?;
1525
1526 _prev_end_offset = cur_offset + envelope_size;
1527 if 3 > max_ordinal {
1528 return Ok(());
1529 }
1530
1531 let cur_offset: usize = (3 - 1) * envelope_size;
1534
1535 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1537
1538 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<fidl_fuchsia_hardware_network_common::FrameType, 4>, D>(
1543 self.rx_types.as_ref().map(<fidl::encoding::Vector<fidl_fuchsia_hardware_network_common::FrameType, 4> as fidl::encoding::ValueTypeMarker>::borrow),
1544 encoder, offset + cur_offset, depth
1545 )?;
1546
1547 _prev_end_offset = cur_offset + envelope_size;
1548 if 4 > max_ordinal {
1549 return Ok(());
1550 }
1551
1552 let cur_offset: usize = (4 - 1) * envelope_size;
1555
1556 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1558
1559 fidl::encoding::encode_in_envelope_optional::<
1564 fidl::encoding::Vector<fidl_fuchsia_hardware_network_common::FrameTypeSupport, 4>,
1565 D,
1566 >(
1567 self.tx_types.as_ref().map(
1568 <fidl::encoding::Vector<
1569 fidl_fuchsia_hardware_network_common::FrameTypeSupport,
1570 4,
1571 > as fidl::encoding::ValueTypeMarker>::borrow,
1572 ),
1573 encoder,
1574 offset + cur_offset,
1575 depth,
1576 )?;
1577
1578 _prev_end_offset = cur_offset + envelope_size;
1579 if 5 > max_ordinal {
1580 return Ok(());
1581 }
1582
1583 let cur_offset: usize = (5 - 1) * envelope_size;
1586
1587 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1589
1590 fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_hardware_network_common::PortClass, D>(
1595 self.port_class.as_ref().map(<fidl_fuchsia_hardware_network_common::PortClass as fidl::encoding::ValueTypeMarker>::borrow),
1596 encoder, offset + cur_offset, depth
1597 )?;
1598
1599 _prev_end_offset = cur_offset + envelope_size;
1600 if 6 > max_ordinal {
1601 return Ok(());
1602 }
1603
1604 let cur_offset: usize = (6 - 1) * envelope_size;
1607
1608 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1610
1611 fidl::encoding::encode_in_envelope_optional::<bool, D>(
1616 self.rx_checksum_offload
1617 .as_ref()
1618 .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
1619 encoder,
1620 offset + cur_offset,
1621 depth,
1622 )?;
1623
1624 _prev_end_offset = cur_offset + envelope_size;
1625
1626 Ok(())
1627 }
1628 }
1629
1630 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for BasePortConfig {
1631 #[inline(always)]
1632 fn new_empty() -> Self {
1633 Self::default()
1634 }
1635
1636 unsafe fn decode(
1637 &mut self,
1638 decoder: &mut fidl::encoding::Decoder<'_, D>,
1639 offset: usize,
1640 mut depth: fidl::encoding::Depth,
1641 ) -> fidl::Result<()> {
1642 decoder.debug_check_bounds::<Self>(offset);
1643 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
1644 None => return Err(fidl::Error::NotNullable),
1645 Some(len) => len,
1646 };
1647 if len == 0 {
1649 return Ok(());
1650 };
1651 depth.increment()?;
1652 let envelope_size = 8;
1653 let bytes_len = len * envelope_size;
1654 let offset = decoder.out_of_line_offset(bytes_len)?;
1655 let mut _next_ordinal_to_read = 0;
1657 let mut next_offset = offset;
1658 let end_offset = offset + bytes_len;
1659 _next_ordinal_to_read += 1;
1660 if next_offset >= end_offset {
1661 return Ok(());
1662 }
1663
1664 while _next_ordinal_to_read < 1 {
1666 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1667 _next_ordinal_to_read += 1;
1668 next_offset += envelope_size;
1669 }
1670
1671 let next_out_of_line = decoder.next_out_of_line();
1672 let handles_before = decoder.remaining_handles();
1673 if let Some((inlined, num_bytes, num_handles)) =
1674 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1675 {
1676 let member_inline_size =
1677 <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1678 if inlined != (member_inline_size <= 4) {
1679 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1680 }
1681 let inner_offset;
1682 let mut inner_depth = depth.clone();
1683 if inlined {
1684 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1685 inner_offset = next_offset;
1686 } else {
1687 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1688 inner_depth.increment()?;
1689 }
1690 let val_ref = self.id.get_or_insert_with(|| fidl::new_empty!(u8, D));
1691 fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
1692 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1693 {
1694 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1695 }
1696 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1697 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1698 }
1699 }
1700
1701 next_offset += envelope_size;
1702 _next_ordinal_to_read += 1;
1703 if next_offset >= end_offset {
1704 return Ok(());
1705 }
1706
1707 while _next_ordinal_to_read < 2 {
1709 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1710 _next_ordinal_to_read += 1;
1711 next_offset += envelope_size;
1712 }
1713
1714 let next_out_of_line = decoder.next_out_of_line();
1715 let handles_before = decoder.remaining_handles();
1716 if let Some((inlined, num_bytes, num_handles)) =
1717 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1718 {
1719 let member_inline_size =
1720 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1721 if inlined != (member_inline_size <= 4) {
1722 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1723 }
1724 let inner_offset;
1725 let mut inner_depth = depth.clone();
1726 if inlined {
1727 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1728 inner_offset = next_offset;
1729 } else {
1730 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1731 inner_depth.increment()?;
1732 }
1733 let val_ref = self.mtu.get_or_insert_with(|| fidl::new_empty!(u32, D));
1734 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
1735 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1736 {
1737 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1738 }
1739 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1740 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1741 }
1742 }
1743
1744 next_offset += envelope_size;
1745 _next_ordinal_to_read += 1;
1746 if next_offset >= end_offset {
1747 return Ok(());
1748 }
1749
1750 while _next_ordinal_to_read < 3 {
1752 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1753 _next_ordinal_to_read += 1;
1754 next_offset += envelope_size;
1755 }
1756
1757 let next_out_of_line = decoder.next_out_of_line();
1758 let handles_before = decoder.remaining_handles();
1759 if let Some((inlined, num_bytes, num_handles)) =
1760 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1761 {
1762 let member_inline_size = <fidl::encoding::Vector<
1763 fidl_fuchsia_hardware_network_common::FrameType,
1764 4,
1765 > as fidl::encoding::TypeMarker>::inline_size(
1766 decoder.context
1767 );
1768 if inlined != (member_inline_size <= 4) {
1769 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1770 }
1771 let inner_offset;
1772 let mut inner_depth = depth.clone();
1773 if inlined {
1774 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1775 inner_offset = next_offset;
1776 } else {
1777 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1778 inner_depth.increment()?;
1779 }
1780 let val_ref =
1781 self.rx_types.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<fidl_fuchsia_hardware_network_common::FrameType, 4>, D));
1782 fidl::decode!(fidl::encoding::Vector<fidl_fuchsia_hardware_network_common::FrameType, 4>, D, val_ref, decoder, inner_offset, inner_depth)?;
1783 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1784 {
1785 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1786 }
1787 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1788 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1789 }
1790 }
1791
1792 next_offset += envelope_size;
1793 _next_ordinal_to_read += 1;
1794 if next_offset >= end_offset {
1795 return Ok(());
1796 }
1797
1798 while _next_ordinal_to_read < 4 {
1800 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1801 _next_ordinal_to_read += 1;
1802 next_offset += envelope_size;
1803 }
1804
1805 let next_out_of_line = decoder.next_out_of_line();
1806 let handles_before = decoder.remaining_handles();
1807 if let Some((inlined, num_bytes, num_handles)) =
1808 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1809 {
1810 let member_inline_size = <fidl::encoding::Vector<
1811 fidl_fuchsia_hardware_network_common::FrameTypeSupport,
1812 4,
1813 > as fidl::encoding::TypeMarker>::inline_size(
1814 decoder.context
1815 );
1816 if inlined != (member_inline_size <= 4) {
1817 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1818 }
1819 let inner_offset;
1820 let mut inner_depth = depth.clone();
1821 if inlined {
1822 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1823 inner_offset = next_offset;
1824 } else {
1825 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1826 inner_depth.increment()?;
1827 }
1828 let val_ref =
1829 self.tx_types.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<fidl_fuchsia_hardware_network_common::FrameTypeSupport, 4>, D));
1830 fidl::decode!(fidl::encoding::Vector<fidl_fuchsia_hardware_network_common::FrameTypeSupport, 4>, D, val_ref, decoder, inner_offset, inner_depth)?;
1831 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1832 {
1833 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1834 }
1835 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1836 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1837 }
1838 }
1839
1840 next_offset += envelope_size;
1841 _next_ordinal_to_read += 1;
1842 if next_offset >= end_offset {
1843 return Ok(());
1844 }
1845
1846 while _next_ordinal_to_read < 5 {
1848 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1849 _next_ordinal_to_read += 1;
1850 next_offset += envelope_size;
1851 }
1852
1853 let next_out_of_line = decoder.next_out_of_line();
1854 let handles_before = decoder.remaining_handles();
1855 if let Some((inlined, num_bytes, num_handles)) =
1856 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1857 {
1858 let member_inline_size = <fidl_fuchsia_hardware_network_common::PortClass as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1859 if inlined != (member_inline_size <= 4) {
1860 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1861 }
1862 let inner_offset;
1863 let mut inner_depth = depth.clone();
1864 if inlined {
1865 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1866 inner_offset = next_offset;
1867 } else {
1868 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1869 inner_depth.increment()?;
1870 }
1871 let val_ref = self.port_class.get_or_insert_with(|| {
1872 fidl::new_empty!(fidl_fuchsia_hardware_network_common::PortClass, D)
1873 });
1874 fidl::decode!(
1875 fidl_fuchsia_hardware_network_common::PortClass,
1876 D,
1877 val_ref,
1878 decoder,
1879 inner_offset,
1880 inner_depth
1881 )?;
1882 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1883 {
1884 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1885 }
1886 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1887 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1888 }
1889 }
1890
1891 next_offset += envelope_size;
1892 _next_ordinal_to_read += 1;
1893 if next_offset >= end_offset {
1894 return Ok(());
1895 }
1896
1897 while _next_ordinal_to_read < 6 {
1899 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1900 _next_ordinal_to_read += 1;
1901 next_offset += envelope_size;
1902 }
1903
1904 let next_out_of_line = decoder.next_out_of_line();
1905 let handles_before = decoder.remaining_handles();
1906 if let Some((inlined, num_bytes, num_handles)) =
1907 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1908 {
1909 let member_inline_size =
1910 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1911 if inlined != (member_inline_size <= 4) {
1912 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1913 }
1914 let inner_offset;
1915 let mut inner_depth = depth.clone();
1916 if inlined {
1917 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1918 inner_offset = next_offset;
1919 } else {
1920 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1921 inner_depth.increment()?;
1922 }
1923 let val_ref =
1924 self.rx_checksum_offload.get_or_insert_with(|| fidl::new_empty!(bool, D));
1925 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
1926 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1927 {
1928 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1929 }
1930 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1931 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1932 }
1933 }
1934
1935 next_offset += envelope_size;
1936
1937 while next_offset < end_offset {
1939 _next_ordinal_to_read += 1;
1940 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1941 next_offset += envelope_size;
1942 }
1943
1944 Ok(())
1945 }
1946 }
1947
1948 impl DeviceConfig {
1949 #[inline(always)]
1950 fn max_ordinal_present(&self) -> u64 {
1951 if let Some(_) = self.blocking {
1952 return 2;
1953 }
1954 if let Some(_) = self.base {
1955 return 1;
1956 }
1957 0
1958 }
1959 }
1960
1961 impl fidl::encoding::ValueTypeMarker for DeviceConfig {
1962 type Borrowed<'a> = &'a Self;
1963 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1964 value
1965 }
1966 }
1967
1968 unsafe impl fidl::encoding::TypeMarker for DeviceConfig {
1969 type Owned = Self;
1970
1971 #[inline(always)]
1972 fn inline_align(_context: fidl::encoding::Context) -> usize {
1973 8
1974 }
1975
1976 #[inline(always)]
1977 fn inline_size(_context: fidl::encoding::Context) -> usize {
1978 16
1979 }
1980 }
1981
1982 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<DeviceConfig, D>
1983 for &DeviceConfig
1984 {
1985 unsafe fn encode(
1986 self,
1987 encoder: &mut fidl::encoding::Encoder<'_, D>,
1988 offset: usize,
1989 mut depth: fidl::encoding::Depth,
1990 ) -> fidl::Result<()> {
1991 encoder.debug_check_bounds::<DeviceConfig>(offset);
1992 let max_ordinal: u64 = self.max_ordinal_present();
1994 encoder.write_num(max_ordinal, offset);
1995 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
1996 if max_ordinal == 0 {
1998 return Ok(());
1999 }
2000 depth.increment()?;
2001 let envelope_size = 8;
2002 let bytes_len = max_ordinal as usize * envelope_size;
2003 #[allow(unused_variables)]
2004 let offset = encoder.out_of_line_offset(bytes_len);
2005 let mut _prev_end_offset: usize = 0;
2006 if 1 > max_ordinal {
2007 return Ok(());
2008 }
2009
2010 let cur_offset: usize = (1 - 1) * envelope_size;
2013
2014 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2016
2017 fidl::encoding::encode_in_envelope_optional::<BaseDeviceConfig, D>(
2022 self.base
2023 .as_ref()
2024 .map(<BaseDeviceConfig as fidl::encoding::ValueTypeMarker>::borrow),
2025 encoder,
2026 offset + cur_offset,
2027 depth,
2028 )?;
2029
2030 _prev_end_offset = cur_offset + envelope_size;
2031 if 2 > max_ordinal {
2032 return Ok(());
2033 }
2034
2035 let cur_offset: usize = (2 - 1) * envelope_size;
2038
2039 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2041
2042 fidl::encoding::encode_in_envelope_optional::<bool, D>(
2047 self.blocking.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
2048 encoder,
2049 offset + cur_offset,
2050 depth,
2051 )?;
2052
2053 _prev_end_offset = cur_offset + envelope_size;
2054
2055 Ok(())
2056 }
2057 }
2058
2059 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for DeviceConfig {
2060 #[inline(always)]
2061 fn new_empty() -> Self {
2062 Self::default()
2063 }
2064
2065 unsafe fn decode(
2066 &mut self,
2067 decoder: &mut fidl::encoding::Decoder<'_, D>,
2068 offset: usize,
2069 mut depth: fidl::encoding::Depth,
2070 ) -> fidl::Result<()> {
2071 decoder.debug_check_bounds::<Self>(offset);
2072 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
2073 None => return Err(fidl::Error::NotNullable),
2074 Some(len) => len,
2075 };
2076 if len == 0 {
2078 return Ok(());
2079 };
2080 depth.increment()?;
2081 let envelope_size = 8;
2082 let bytes_len = len * envelope_size;
2083 let offset = decoder.out_of_line_offset(bytes_len)?;
2084 let mut _next_ordinal_to_read = 0;
2086 let mut next_offset = offset;
2087 let end_offset = offset + bytes_len;
2088 _next_ordinal_to_read += 1;
2089 if next_offset >= end_offset {
2090 return Ok(());
2091 }
2092
2093 while _next_ordinal_to_read < 1 {
2095 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2096 _next_ordinal_to_read += 1;
2097 next_offset += envelope_size;
2098 }
2099
2100 let next_out_of_line = decoder.next_out_of_line();
2101 let handles_before = decoder.remaining_handles();
2102 if let Some((inlined, num_bytes, num_handles)) =
2103 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2104 {
2105 let member_inline_size =
2106 <BaseDeviceConfig as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2107 if inlined != (member_inline_size <= 4) {
2108 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2109 }
2110 let inner_offset;
2111 let mut inner_depth = depth.clone();
2112 if inlined {
2113 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2114 inner_offset = next_offset;
2115 } else {
2116 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2117 inner_depth.increment()?;
2118 }
2119 let val_ref =
2120 self.base.get_or_insert_with(|| fidl::new_empty!(BaseDeviceConfig, D));
2121 fidl::decode!(BaseDeviceConfig, D, val_ref, decoder, inner_offset, inner_depth)?;
2122 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2123 {
2124 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2125 }
2126 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2127 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2128 }
2129 }
2130
2131 next_offset += envelope_size;
2132 _next_ordinal_to_read += 1;
2133 if next_offset >= end_offset {
2134 return Ok(());
2135 }
2136
2137 while _next_ordinal_to_read < 2 {
2139 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2140 _next_ordinal_to_read += 1;
2141 next_offset += envelope_size;
2142 }
2143
2144 let next_out_of_line = decoder.next_out_of_line();
2145 let handles_before = decoder.remaining_handles();
2146 if let Some((inlined, num_bytes, num_handles)) =
2147 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2148 {
2149 let member_inline_size =
2150 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2151 if inlined != (member_inline_size <= 4) {
2152 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2153 }
2154 let inner_offset;
2155 let mut inner_depth = depth.clone();
2156 if inlined {
2157 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2158 inner_offset = next_offset;
2159 } else {
2160 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2161 inner_depth.increment()?;
2162 }
2163 let val_ref = self.blocking.get_or_insert_with(|| fidl::new_empty!(bool, D));
2164 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
2165 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2166 {
2167 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2168 }
2169 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2170 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2171 }
2172 }
2173
2174 next_offset += envelope_size;
2175
2176 while next_offset < end_offset {
2178 _next_ordinal_to_read += 1;
2179 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2180 next_offset += envelope_size;
2181 }
2182
2183 Ok(())
2184 }
2185 }
2186
2187 impl DevicePairConfig {
2188 #[inline(always)]
2189 fn max_ordinal_present(&self) -> u64 {
2190 if let Some(_) = self.fallible_transmit_right {
2191 return 3;
2192 }
2193 if let Some(_) = self.fallible_transmit_left {
2194 return 2;
2195 }
2196 if let Some(_) = self.base {
2197 return 1;
2198 }
2199 0
2200 }
2201 }
2202
2203 impl fidl::encoding::ValueTypeMarker for DevicePairConfig {
2204 type Borrowed<'a> = &'a Self;
2205 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2206 value
2207 }
2208 }
2209
2210 unsafe impl fidl::encoding::TypeMarker for DevicePairConfig {
2211 type Owned = Self;
2212
2213 #[inline(always)]
2214 fn inline_align(_context: fidl::encoding::Context) -> usize {
2215 8
2216 }
2217
2218 #[inline(always)]
2219 fn inline_size(_context: fidl::encoding::Context) -> usize {
2220 16
2221 }
2222 }
2223
2224 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<DevicePairConfig, D>
2225 for &DevicePairConfig
2226 {
2227 unsafe fn encode(
2228 self,
2229 encoder: &mut fidl::encoding::Encoder<'_, D>,
2230 offset: usize,
2231 mut depth: fidl::encoding::Depth,
2232 ) -> fidl::Result<()> {
2233 encoder.debug_check_bounds::<DevicePairConfig>(offset);
2234 let max_ordinal: u64 = self.max_ordinal_present();
2236 encoder.write_num(max_ordinal, offset);
2237 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
2238 if max_ordinal == 0 {
2240 return Ok(());
2241 }
2242 depth.increment()?;
2243 let envelope_size = 8;
2244 let bytes_len = max_ordinal as usize * envelope_size;
2245 #[allow(unused_variables)]
2246 let offset = encoder.out_of_line_offset(bytes_len);
2247 let mut _prev_end_offset: usize = 0;
2248 if 1 > max_ordinal {
2249 return Ok(());
2250 }
2251
2252 let cur_offset: usize = (1 - 1) * envelope_size;
2255
2256 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2258
2259 fidl::encoding::encode_in_envelope_optional::<BaseDeviceConfig, D>(
2264 self.base
2265 .as_ref()
2266 .map(<BaseDeviceConfig as fidl::encoding::ValueTypeMarker>::borrow),
2267 encoder,
2268 offset + cur_offset,
2269 depth,
2270 )?;
2271
2272 _prev_end_offset = cur_offset + envelope_size;
2273 if 2 > max_ordinal {
2274 return Ok(());
2275 }
2276
2277 let cur_offset: usize = (2 - 1) * envelope_size;
2280
2281 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2283
2284 fidl::encoding::encode_in_envelope_optional::<bool, D>(
2289 self.fallible_transmit_left
2290 .as_ref()
2291 .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
2292 encoder,
2293 offset + cur_offset,
2294 depth,
2295 )?;
2296
2297 _prev_end_offset = cur_offset + envelope_size;
2298 if 3 > max_ordinal {
2299 return Ok(());
2300 }
2301
2302 let cur_offset: usize = (3 - 1) * envelope_size;
2305
2306 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2308
2309 fidl::encoding::encode_in_envelope_optional::<bool, D>(
2314 self.fallible_transmit_right
2315 .as_ref()
2316 .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
2317 encoder,
2318 offset + cur_offset,
2319 depth,
2320 )?;
2321
2322 _prev_end_offset = cur_offset + envelope_size;
2323
2324 Ok(())
2325 }
2326 }
2327
2328 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for DevicePairConfig {
2329 #[inline(always)]
2330 fn new_empty() -> Self {
2331 Self::default()
2332 }
2333
2334 unsafe fn decode(
2335 &mut self,
2336 decoder: &mut fidl::encoding::Decoder<'_, D>,
2337 offset: usize,
2338 mut depth: fidl::encoding::Depth,
2339 ) -> fidl::Result<()> {
2340 decoder.debug_check_bounds::<Self>(offset);
2341 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
2342 None => return Err(fidl::Error::NotNullable),
2343 Some(len) => len,
2344 };
2345 if len == 0 {
2347 return Ok(());
2348 };
2349 depth.increment()?;
2350 let envelope_size = 8;
2351 let bytes_len = len * envelope_size;
2352 let offset = decoder.out_of_line_offset(bytes_len)?;
2353 let mut _next_ordinal_to_read = 0;
2355 let mut next_offset = offset;
2356 let end_offset = offset + bytes_len;
2357 _next_ordinal_to_read += 1;
2358 if next_offset >= end_offset {
2359 return Ok(());
2360 }
2361
2362 while _next_ordinal_to_read < 1 {
2364 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2365 _next_ordinal_to_read += 1;
2366 next_offset += envelope_size;
2367 }
2368
2369 let next_out_of_line = decoder.next_out_of_line();
2370 let handles_before = decoder.remaining_handles();
2371 if let Some((inlined, num_bytes, num_handles)) =
2372 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2373 {
2374 let member_inline_size =
2375 <BaseDeviceConfig as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2376 if inlined != (member_inline_size <= 4) {
2377 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2378 }
2379 let inner_offset;
2380 let mut inner_depth = depth.clone();
2381 if inlined {
2382 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2383 inner_offset = next_offset;
2384 } else {
2385 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2386 inner_depth.increment()?;
2387 }
2388 let val_ref =
2389 self.base.get_or_insert_with(|| fidl::new_empty!(BaseDeviceConfig, D));
2390 fidl::decode!(BaseDeviceConfig, D, val_ref, decoder, inner_offset, inner_depth)?;
2391 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2392 {
2393 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2394 }
2395 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2396 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2397 }
2398 }
2399
2400 next_offset += envelope_size;
2401 _next_ordinal_to_read += 1;
2402 if next_offset >= end_offset {
2403 return Ok(());
2404 }
2405
2406 while _next_ordinal_to_read < 2 {
2408 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2409 _next_ordinal_to_read += 1;
2410 next_offset += envelope_size;
2411 }
2412
2413 let next_out_of_line = decoder.next_out_of_line();
2414 let handles_before = decoder.remaining_handles();
2415 if let Some((inlined, num_bytes, num_handles)) =
2416 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2417 {
2418 let member_inline_size =
2419 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2420 if inlined != (member_inline_size <= 4) {
2421 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2422 }
2423 let inner_offset;
2424 let mut inner_depth = depth.clone();
2425 if inlined {
2426 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2427 inner_offset = next_offset;
2428 } else {
2429 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2430 inner_depth.increment()?;
2431 }
2432 let val_ref =
2433 self.fallible_transmit_left.get_or_insert_with(|| fidl::new_empty!(bool, D));
2434 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
2435 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2436 {
2437 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2438 }
2439 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2440 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2441 }
2442 }
2443
2444 next_offset += envelope_size;
2445 _next_ordinal_to_read += 1;
2446 if next_offset >= end_offset {
2447 return Ok(());
2448 }
2449
2450 while _next_ordinal_to_read < 3 {
2452 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2453 _next_ordinal_to_read += 1;
2454 next_offset += envelope_size;
2455 }
2456
2457 let next_out_of_line = decoder.next_out_of_line();
2458 let handles_before = decoder.remaining_handles();
2459 if let Some((inlined, num_bytes, num_handles)) =
2460 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2461 {
2462 let member_inline_size =
2463 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2464 if inlined != (member_inline_size <= 4) {
2465 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2466 }
2467 let inner_offset;
2468 let mut inner_depth = depth.clone();
2469 if inlined {
2470 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2471 inner_offset = next_offset;
2472 } else {
2473 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2474 inner_depth.increment()?;
2475 }
2476 let val_ref =
2477 self.fallible_transmit_right.get_or_insert_with(|| fidl::new_empty!(bool, D));
2478 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
2479 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2480 {
2481 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2482 }
2483 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2484 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2485 }
2486 }
2487
2488 next_offset += envelope_size;
2489
2490 while next_offset < end_offset {
2492 _next_ordinal_to_read += 1;
2493 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2494 next_offset += envelope_size;
2495 }
2496
2497 Ok(())
2498 }
2499 }
2500
2501 impl DevicePairPortConfig {
2502 #[inline(always)]
2503 fn max_ordinal_present(&self) -> u64 {
2504 if let Some(_) = self.mac_right {
2505 return 3;
2506 }
2507 if let Some(_) = self.mac_left {
2508 return 2;
2509 }
2510 if let Some(_) = self.base {
2511 return 1;
2512 }
2513 0
2514 }
2515 }
2516
2517 impl fidl::encoding::ValueTypeMarker for DevicePairPortConfig {
2518 type Borrowed<'a> = &'a Self;
2519 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2520 value
2521 }
2522 }
2523
2524 unsafe impl fidl::encoding::TypeMarker for DevicePairPortConfig {
2525 type Owned = Self;
2526
2527 #[inline(always)]
2528 fn inline_align(_context: fidl::encoding::Context) -> usize {
2529 8
2530 }
2531
2532 #[inline(always)]
2533 fn inline_size(_context: fidl::encoding::Context) -> usize {
2534 16
2535 }
2536 }
2537
2538 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<DevicePairPortConfig, D>
2539 for &DevicePairPortConfig
2540 {
2541 unsafe fn encode(
2542 self,
2543 encoder: &mut fidl::encoding::Encoder<'_, D>,
2544 offset: usize,
2545 mut depth: fidl::encoding::Depth,
2546 ) -> fidl::Result<()> {
2547 encoder.debug_check_bounds::<DevicePairPortConfig>(offset);
2548 let max_ordinal: u64 = self.max_ordinal_present();
2550 encoder.write_num(max_ordinal, offset);
2551 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
2552 if max_ordinal == 0 {
2554 return Ok(());
2555 }
2556 depth.increment()?;
2557 let envelope_size = 8;
2558 let bytes_len = max_ordinal as usize * envelope_size;
2559 #[allow(unused_variables)]
2560 let offset = encoder.out_of_line_offset(bytes_len);
2561 let mut _prev_end_offset: usize = 0;
2562 if 1 > max_ordinal {
2563 return Ok(());
2564 }
2565
2566 let cur_offset: usize = (1 - 1) * envelope_size;
2569
2570 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2572
2573 fidl::encoding::encode_in_envelope_optional::<BasePortConfig, D>(
2578 self.base.as_ref().map(<BasePortConfig as fidl::encoding::ValueTypeMarker>::borrow),
2579 encoder,
2580 offset + cur_offset,
2581 depth,
2582 )?;
2583
2584 _prev_end_offset = cur_offset + envelope_size;
2585 if 2 > max_ordinal {
2586 return Ok(());
2587 }
2588
2589 let cur_offset: usize = (2 - 1) * envelope_size;
2592
2593 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2595
2596 fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_net_common::MacAddress, D>(
2601 self.mac_left.as_ref().map(<fidl_fuchsia_net_common::MacAddress as fidl::encoding::ValueTypeMarker>::borrow),
2602 encoder, offset + cur_offset, depth
2603 )?;
2604
2605 _prev_end_offset = cur_offset + envelope_size;
2606 if 3 > max_ordinal {
2607 return Ok(());
2608 }
2609
2610 let cur_offset: usize = (3 - 1) * envelope_size;
2613
2614 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2616
2617 fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_net_common::MacAddress, D>(
2622 self.mac_right.as_ref().map(<fidl_fuchsia_net_common::MacAddress as fidl::encoding::ValueTypeMarker>::borrow),
2623 encoder, offset + cur_offset, depth
2624 )?;
2625
2626 _prev_end_offset = cur_offset + envelope_size;
2627
2628 Ok(())
2629 }
2630 }
2631
2632 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for DevicePairPortConfig {
2633 #[inline(always)]
2634 fn new_empty() -> Self {
2635 Self::default()
2636 }
2637
2638 unsafe fn decode(
2639 &mut self,
2640 decoder: &mut fidl::encoding::Decoder<'_, D>,
2641 offset: usize,
2642 mut depth: fidl::encoding::Depth,
2643 ) -> fidl::Result<()> {
2644 decoder.debug_check_bounds::<Self>(offset);
2645 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
2646 None => return Err(fidl::Error::NotNullable),
2647 Some(len) => len,
2648 };
2649 if len == 0 {
2651 return Ok(());
2652 };
2653 depth.increment()?;
2654 let envelope_size = 8;
2655 let bytes_len = len * envelope_size;
2656 let offset = decoder.out_of_line_offset(bytes_len)?;
2657 let mut _next_ordinal_to_read = 0;
2659 let mut next_offset = offset;
2660 let end_offset = offset + bytes_len;
2661 _next_ordinal_to_read += 1;
2662 if next_offset >= end_offset {
2663 return Ok(());
2664 }
2665
2666 while _next_ordinal_to_read < 1 {
2668 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2669 _next_ordinal_to_read += 1;
2670 next_offset += envelope_size;
2671 }
2672
2673 let next_out_of_line = decoder.next_out_of_line();
2674 let handles_before = decoder.remaining_handles();
2675 if let Some((inlined, num_bytes, num_handles)) =
2676 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2677 {
2678 let member_inline_size =
2679 <BasePortConfig as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2680 if inlined != (member_inline_size <= 4) {
2681 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2682 }
2683 let inner_offset;
2684 let mut inner_depth = depth.clone();
2685 if inlined {
2686 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2687 inner_offset = next_offset;
2688 } else {
2689 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2690 inner_depth.increment()?;
2691 }
2692 let val_ref = self.base.get_or_insert_with(|| fidl::new_empty!(BasePortConfig, D));
2693 fidl::decode!(BasePortConfig, D, val_ref, decoder, inner_offset, inner_depth)?;
2694 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2695 {
2696 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2697 }
2698 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2699 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2700 }
2701 }
2702
2703 next_offset += envelope_size;
2704 _next_ordinal_to_read += 1;
2705 if next_offset >= end_offset {
2706 return Ok(());
2707 }
2708
2709 while _next_ordinal_to_read < 2 {
2711 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2712 _next_ordinal_to_read += 1;
2713 next_offset += envelope_size;
2714 }
2715
2716 let next_out_of_line = decoder.next_out_of_line();
2717 let handles_before = decoder.remaining_handles();
2718 if let Some((inlined, num_bytes, num_handles)) =
2719 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2720 {
2721 let member_inline_size = <fidl_fuchsia_net_common::MacAddress as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2722 if inlined != (member_inline_size <= 4) {
2723 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2724 }
2725 let inner_offset;
2726 let mut inner_depth = depth.clone();
2727 if inlined {
2728 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2729 inner_offset = next_offset;
2730 } else {
2731 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2732 inner_depth.increment()?;
2733 }
2734 let val_ref = self.mac_left.get_or_insert_with(|| {
2735 fidl::new_empty!(fidl_fuchsia_net_common::MacAddress, D)
2736 });
2737 fidl::decode!(
2738 fidl_fuchsia_net_common::MacAddress,
2739 D,
2740 val_ref,
2741 decoder,
2742 inner_offset,
2743 inner_depth
2744 )?;
2745 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2746 {
2747 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2748 }
2749 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2750 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2751 }
2752 }
2753
2754 next_offset += envelope_size;
2755 _next_ordinal_to_read += 1;
2756 if next_offset >= end_offset {
2757 return Ok(());
2758 }
2759
2760 while _next_ordinal_to_read < 3 {
2762 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2763 _next_ordinal_to_read += 1;
2764 next_offset += envelope_size;
2765 }
2766
2767 let next_out_of_line = decoder.next_out_of_line();
2768 let handles_before = decoder.remaining_handles();
2769 if let Some((inlined, num_bytes, num_handles)) =
2770 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2771 {
2772 let member_inline_size = <fidl_fuchsia_net_common::MacAddress as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2773 if inlined != (member_inline_size <= 4) {
2774 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2775 }
2776 let inner_offset;
2777 let mut inner_depth = depth.clone();
2778 if inlined {
2779 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2780 inner_offset = next_offset;
2781 } else {
2782 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2783 inner_depth.increment()?;
2784 }
2785 let val_ref = self.mac_right.get_or_insert_with(|| {
2786 fidl::new_empty!(fidl_fuchsia_net_common::MacAddress, D)
2787 });
2788 fidl::decode!(
2789 fidl_fuchsia_net_common::MacAddress,
2790 D,
2791 val_ref,
2792 decoder,
2793 inner_offset,
2794 inner_depth
2795 )?;
2796 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2797 {
2798 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2799 }
2800 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2801 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2802 }
2803 }
2804
2805 next_offset += envelope_size;
2806
2807 while next_offset < end_offset {
2809 _next_ordinal_to_read += 1;
2810 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2811 next_offset += envelope_size;
2812 }
2813
2814 Ok(())
2815 }
2816 }
2817
2818 impl DevicePortConfig {
2819 #[inline(always)]
2820 fn max_ordinal_present(&self) -> u64 {
2821 if let Some(_) = self.mac {
2822 return 3;
2823 }
2824 if let Some(_) = self.online {
2825 return 2;
2826 }
2827 if let Some(_) = self.base {
2828 return 1;
2829 }
2830 0
2831 }
2832 }
2833
2834 impl fidl::encoding::ValueTypeMarker for DevicePortConfig {
2835 type Borrowed<'a> = &'a Self;
2836 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2837 value
2838 }
2839 }
2840
2841 unsafe impl fidl::encoding::TypeMarker for DevicePortConfig {
2842 type Owned = Self;
2843
2844 #[inline(always)]
2845 fn inline_align(_context: fidl::encoding::Context) -> usize {
2846 8
2847 }
2848
2849 #[inline(always)]
2850 fn inline_size(_context: fidl::encoding::Context) -> usize {
2851 16
2852 }
2853 }
2854
2855 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<DevicePortConfig, D>
2856 for &DevicePortConfig
2857 {
2858 unsafe fn encode(
2859 self,
2860 encoder: &mut fidl::encoding::Encoder<'_, D>,
2861 offset: usize,
2862 mut depth: fidl::encoding::Depth,
2863 ) -> fidl::Result<()> {
2864 encoder.debug_check_bounds::<DevicePortConfig>(offset);
2865 let max_ordinal: u64 = self.max_ordinal_present();
2867 encoder.write_num(max_ordinal, offset);
2868 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
2869 if max_ordinal == 0 {
2871 return Ok(());
2872 }
2873 depth.increment()?;
2874 let envelope_size = 8;
2875 let bytes_len = max_ordinal as usize * envelope_size;
2876 #[allow(unused_variables)]
2877 let offset = encoder.out_of_line_offset(bytes_len);
2878 let mut _prev_end_offset: usize = 0;
2879 if 1 > max_ordinal {
2880 return Ok(());
2881 }
2882
2883 let cur_offset: usize = (1 - 1) * envelope_size;
2886
2887 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2889
2890 fidl::encoding::encode_in_envelope_optional::<BasePortConfig, D>(
2895 self.base.as_ref().map(<BasePortConfig as fidl::encoding::ValueTypeMarker>::borrow),
2896 encoder,
2897 offset + cur_offset,
2898 depth,
2899 )?;
2900
2901 _prev_end_offset = cur_offset + envelope_size;
2902 if 2 > max_ordinal {
2903 return Ok(());
2904 }
2905
2906 let cur_offset: usize = (2 - 1) * envelope_size;
2909
2910 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2912
2913 fidl::encoding::encode_in_envelope_optional::<bool, D>(
2918 self.online.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
2919 encoder,
2920 offset + cur_offset,
2921 depth,
2922 )?;
2923
2924 _prev_end_offset = cur_offset + envelope_size;
2925 if 3 > max_ordinal {
2926 return Ok(());
2927 }
2928
2929 let cur_offset: usize = (3 - 1) * envelope_size;
2932
2933 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2935
2936 fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_net_common::MacAddress, D>(
2941 self.mac.as_ref().map(<fidl_fuchsia_net_common::MacAddress as fidl::encoding::ValueTypeMarker>::borrow),
2942 encoder, offset + cur_offset, depth
2943 )?;
2944
2945 _prev_end_offset = cur_offset + envelope_size;
2946
2947 Ok(())
2948 }
2949 }
2950
2951 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for DevicePortConfig {
2952 #[inline(always)]
2953 fn new_empty() -> Self {
2954 Self::default()
2955 }
2956
2957 unsafe fn decode(
2958 &mut self,
2959 decoder: &mut fidl::encoding::Decoder<'_, D>,
2960 offset: usize,
2961 mut depth: fidl::encoding::Depth,
2962 ) -> fidl::Result<()> {
2963 decoder.debug_check_bounds::<Self>(offset);
2964 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
2965 None => return Err(fidl::Error::NotNullable),
2966 Some(len) => len,
2967 };
2968 if len == 0 {
2970 return Ok(());
2971 };
2972 depth.increment()?;
2973 let envelope_size = 8;
2974 let bytes_len = len * envelope_size;
2975 let offset = decoder.out_of_line_offset(bytes_len)?;
2976 let mut _next_ordinal_to_read = 0;
2978 let mut next_offset = offset;
2979 let end_offset = offset + bytes_len;
2980 _next_ordinal_to_read += 1;
2981 if next_offset >= end_offset {
2982 return Ok(());
2983 }
2984
2985 while _next_ordinal_to_read < 1 {
2987 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2988 _next_ordinal_to_read += 1;
2989 next_offset += envelope_size;
2990 }
2991
2992 let next_out_of_line = decoder.next_out_of_line();
2993 let handles_before = decoder.remaining_handles();
2994 if let Some((inlined, num_bytes, num_handles)) =
2995 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2996 {
2997 let member_inline_size =
2998 <BasePortConfig as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2999 if inlined != (member_inline_size <= 4) {
3000 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3001 }
3002 let inner_offset;
3003 let mut inner_depth = depth.clone();
3004 if inlined {
3005 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3006 inner_offset = next_offset;
3007 } else {
3008 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3009 inner_depth.increment()?;
3010 }
3011 let val_ref = self.base.get_or_insert_with(|| fidl::new_empty!(BasePortConfig, D));
3012 fidl::decode!(BasePortConfig, D, val_ref, decoder, inner_offset, inner_depth)?;
3013 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3014 {
3015 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3016 }
3017 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3018 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3019 }
3020 }
3021
3022 next_offset += envelope_size;
3023 _next_ordinal_to_read += 1;
3024 if next_offset >= end_offset {
3025 return Ok(());
3026 }
3027
3028 while _next_ordinal_to_read < 2 {
3030 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3031 _next_ordinal_to_read += 1;
3032 next_offset += envelope_size;
3033 }
3034
3035 let next_out_of_line = decoder.next_out_of_line();
3036 let handles_before = decoder.remaining_handles();
3037 if let Some((inlined, num_bytes, num_handles)) =
3038 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3039 {
3040 let member_inline_size =
3041 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3042 if inlined != (member_inline_size <= 4) {
3043 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3044 }
3045 let inner_offset;
3046 let mut inner_depth = depth.clone();
3047 if inlined {
3048 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3049 inner_offset = next_offset;
3050 } else {
3051 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3052 inner_depth.increment()?;
3053 }
3054 let val_ref = self.online.get_or_insert_with(|| fidl::new_empty!(bool, D));
3055 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
3056 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3057 {
3058 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3059 }
3060 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3061 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3062 }
3063 }
3064
3065 next_offset += envelope_size;
3066 _next_ordinal_to_read += 1;
3067 if next_offset >= end_offset {
3068 return Ok(());
3069 }
3070
3071 while _next_ordinal_to_read < 3 {
3073 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3074 _next_ordinal_to_read += 1;
3075 next_offset += envelope_size;
3076 }
3077
3078 let next_out_of_line = decoder.next_out_of_line();
3079 let handles_before = decoder.remaining_handles();
3080 if let Some((inlined, num_bytes, num_handles)) =
3081 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3082 {
3083 let member_inline_size = <fidl_fuchsia_net_common::MacAddress as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3084 if inlined != (member_inline_size <= 4) {
3085 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3086 }
3087 let inner_offset;
3088 let mut inner_depth = depth.clone();
3089 if inlined {
3090 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3091 inner_offset = next_offset;
3092 } else {
3093 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3094 inner_depth.increment()?;
3095 }
3096 let val_ref = self.mac.get_or_insert_with(|| {
3097 fidl::new_empty!(fidl_fuchsia_net_common::MacAddress, D)
3098 });
3099 fidl::decode!(
3100 fidl_fuchsia_net_common::MacAddress,
3101 D,
3102 val_ref,
3103 decoder,
3104 inner_offset,
3105 inner_depth
3106 )?;
3107 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3108 {
3109 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3110 }
3111 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3112 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3113 }
3114 }
3115
3116 next_offset += envelope_size;
3117
3118 while next_offset < end_offset {
3120 _next_ordinal_to_read += 1;
3121 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3122 next_offset += envelope_size;
3123 }
3124
3125 Ok(())
3126 }
3127 }
3128
3129 impl Frame {
3130 #[inline(always)]
3131 fn max_ordinal_present(&self) -> u64 {
3132 if let Some(_) = self.port {
3133 return 4;
3134 }
3135 if let Some(_) = self.meta {
3136 return 3;
3137 }
3138 if let Some(_) = self.data {
3139 return 2;
3140 }
3141 if let Some(_) = self.frame_type {
3142 return 1;
3143 }
3144 0
3145 }
3146 }
3147
3148 impl fidl::encoding::ValueTypeMarker for Frame {
3149 type Borrowed<'a> = &'a Self;
3150 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3151 value
3152 }
3153 }
3154
3155 unsafe impl fidl::encoding::TypeMarker for Frame {
3156 type Owned = Self;
3157
3158 #[inline(always)]
3159 fn inline_align(_context: fidl::encoding::Context) -> usize {
3160 8
3161 }
3162
3163 #[inline(always)]
3164 fn inline_size(_context: fidl::encoding::Context) -> usize {
3165 16
3166 }
3167 }
3168
3169 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Frame, D> for &Frame {
3170 unsafe fn encode(
3171 self,
3172 encoder: &mut fidl::encoding::Encoder<'_, D>,
3173 offset: usize,
3174 mut depth: fidl::encoding::Depth,
3175 ) -> fidl::Result<()> {
3176 encoder.debug_check_bounds::<Frame>(offset);
3177 let max_ordinal: u64 = self.max_ordinal_present();
3179 encoder.write_num(max_ordinal, offset);
3180 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
3181 if max_ordinal == 0 {
3183 return Ok(());
3184 }
3185 depth.increment()?;
3186 let envelope_size = 8;
3187 let bytes_len = max_ordinal as usize * envelope_size;
3188 #[allow(unused_variables)]
3189 let offset = encoder.out_of_line_offset(bytes_len);
3190 let mut _prev_end_offset: usize = 0;
3191 if 1 > max_ordinal {
3192 return Ok(());
3193 }
3194
3195 let cur_offset: usize = (1 - 1) * envelope_size;
3198
3199 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3201
3202 fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_hardware_network_common::FrameType, D>(
3207 self.frame_type.as_ref().map(<fidl_fuchsia_hardware_network_common::FrameType as fidl::encoding::ValueTypeMarker>::borrow),
3208 encoder, offset + cur_offset, depth
3209 )?;
3210
3211 _prev_end_offset = cur_offset + envelope_size;
3212 if 2 > max_ordinal {
3213 return Ok(());
3214 }
3215
3216 let cur_offset: usize = (2 - 1) * envelope_size;
3219
3220 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3222
3223 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<u8, 16384>, D>(
3228 self.data.as_ref().map(
3229 <fidl::encoding::Vector<u8, 16384> as fidl::encoding::ValueTypeMarker>::borrow,
3230 ),
3231 encoder,
3232 offset + cur_offset,
3233 depth,
3234 )?;
3235
3236 _prev_end_offset = cur_offset + envelope_size;
3237 if 3 > max_ordinal {
3238 return Ok(());
3239 }
3240
3241 let cur_offset: usize = (3 - 1) * envelope_size;
3244
3245 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3247
3248 fidl::encoding::encode_in_envelope_optional::<FrameMetadata, D>(
3253 self.meta.as_ref().map(<FrameMetadata as fidl::encoding::ValueTypeMarker>::borrow),
3254 encoder,
3255 offset + cur_offset,
3256 depth,
3257 )?;
3258
3259 _prev_end_offset = cur_offset + envelope_size;
3260 if 4 > max_ordinal {
3261 return Ok(());
3262 }
3263
3264 let cur_offset: usize = (4 - 1) * envelope_size;
3267
3268 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3270
3271 fidl::encoding::encode_in_envelope_optional::<u8, D>(
3276 self.port.as_ref().map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
3277 encoder,
3278 offset + cur_offset,
3279 depth,
3280 )?;
3281
3282 _prev_end_offset = cur_offset + envelope_size;
3283
3284 Ok(())
3285 }
3286 }
3287
3288 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Frame {
3289 #[inline(always)]
3290 fn new_empty() -> Self {
3291 Self::default()
3292 }
3293
3294 unsafe fn decode(
3295 &mut self,
3296 decoder: &mut fidl::encoding::Decoder<'_, D>,
3297 offset: usize,
3298 mut depth: fidl::encoding::Depth,
3299 ) -> fidl::Result<()> {
3300 decoder.debug_check_bounds::<Self>(offset);
3301 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
3302 None => return Err(fidl::Error::NotNullable),
3303 Some(len) => len,
3304 };
3305 if len == 0 {
3307 return Ok(());
3308 };
3309 depth.increment()?;
3310 let envelope_size = 8;
3311 let bytes_len = len * envelope_size;
3312 let offset = decoder.out_of_line_offset(bytes_len)?;
3313 let mut _next_ordinal_to_read = 0;
3315 let mut next_offset = offset;
3316 let end_offset = offset + bytes_len;
3317 _next_ordinal_to_read += 1;
3318 if next_offset >= end_offset {
3319 return Ok(());
3320 }
3321
3322 while _next_ordinal_to_read < 1 {
3324 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3325 _next_ordinal_to_read += 1;
3326 next_offset += envelope_size;
3327 }
3328
3329 let next_out_of_line = decoder.next_out_of_line();
3330 let handles_before = decoder.remaining_handles();
3331 if let Some((inlined, num_bytes, num_handles)) =
3332 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3333 {
3334 let member_inline_size = <fidl_fuchsia_hardware_network_common::FrameType as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3335 if inlined != (member_inline_size <= 4) {
3336 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3337 }
3338 let inner_offset;
3339 let mut inner_depth = depth.clone();
3340 if inlined {
3341 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3342 inner_offset = next_offset;
3343 } else {
3344 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3345 inner_depth.increment()?;
3346 }
3347 let val_ref = self.frame_type.get_or_insert_with(|| {
3348 fidl::new_empty!(fidl_fuchsia_hardware_network_common::FrameType, D)
3349 });
3350 fidl::decode!(
3351 fidl_fuchsia_hardware_network_common::FrameType,
3352 D,
3353 val_ref,
3354 decoder,
3355 inner_offset,
3356 inner_depth
3357 )?;
3358 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3359 {
3360 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3361 }
3362 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3363 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3364 }
3365 }
3366
3367 next_offset += envelope_size;
3368 _next_ordinal_to_read += 1;
3369 if next_offset >= end_offset {
3370 return Ok(());
3371 }
3372
3373 while _next_ordinal_to_read < 2 {
3375 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3376 _next_ordinal_to_read += 1;
3377 next_offset += envelope_size;
3378 }
3379
3380 let next_out_of_line = decoder.next_out_of_line();
3381 let handles_before = decoder.remaining_handles();
3382 if let Some((inlined, num_bytes, num_handles)) =
3383 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3384 {
3385 let member_inline_size =
3386 <fidl::encoding::Vector<u8, 16384> as fidl::encoding::TypeMarker>::inline_size(
3387 decoder.context,
3388 );
3389 if inlined != (member_inline_size <= 4) {
3390 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3391 }
3392 let inner_offset;
3393 let mut inner_depth = depth.clone();
3394 if inlined {
3395 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3396 inner_offset = next_offset;
3397 } else {
3398 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3399 inner_depth.increment()?;
3400 }
3401 let val_ref = self
3402 .data
3403 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u8, 16384>, D));
3404 fidl::decode!(fidl::encoding::Vector<u8, 16384>, D, val_ref, decoder, inner_offset, inner_depth)?;
3405 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3406 {
3407 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3408 }
3409 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3410 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3411 }
3412 }
3413
3414 next_offset += envelope_size;
3415 _next_ordinal_to_read += 1;
3416 if next_offset >= end_offset {
3417 return Ok(());
3418 }
3419
3420 while _next_ordinal_to_read < 3 {
3422 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3423 _next_ordinal_to_read += 1;
3424 next_offset += envelope_size;
3425 }
3426
3427 let next_out_of_line = decoder.next_out_of_line();
3428 let handles_before = decoder.remaining_handles();
3429 if let Some((inlined, num_bytes, num_handles)) =
3430 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3431 {
3432 let member_inline_size =
3433 <FrameMetadata as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3434 if inlined != (member_inline_size <= 4) {
3435 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3436 }
3437 let inner_offset;
3438 let mut inner_depth = depth.clone();
3439 if inlined {
3440 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3441 inner_offset = next_offset;
3442 } else {
3443 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3444 inner_depth.increment()?;
3445 }
3446 let val_ref = self.meta.get_or_insert_with(|| fidl::new_empty!(FrameMetadata, D));
3447 fidl::decode!(FrameMetadata, D, val_ref, decoder, inner_offset, inner_depth)?;
3448 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3449 {
3450 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3451 }
3452 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3453 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3454 }
3455 }
3456
3457 next_offset += envelope_size;
3458 _next_ordinal_to_read += 1;
3459 if next_offset >= end_offset {
3460 return Ok(());
3461 }
3462
3463 while _next_ordinal_to_read < 4 {
3465 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3466 _next_ordinal_to_read += 1;
3467 next_offset += envelope_size;
3468 }
3469
3470 let next_out_of_line = decoder.next_out_of_line();
3471 let handles_before = decoder.remaining_handles();
3472 if let Some((inlined, num_bytes, num_handles)) =
3473 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3474 {
3475 let member_inline_size =
3476 <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3477 if inlined != (member_inline_size <= 4) {
3478 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3479 }
3480 let inner_offset;
3481 let mut inner_depth = depth.clone();
3482 if inlined {
3483 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3484 inner_offset = next_offset;
3485 } else {
3486 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3487 inner_depth.increment()?;
3488 }
3489 let val_ref = self.port.get_or_insert_with(|| fidl::new_empty!(u8, D));
3490 fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
3491 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3492 {
3493 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3494 }
3495 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3496 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3497 }
3498 }
3499
3500 next_offset += envelope_size;
3501
3502 while next_offset < end_offset {
3504 _next_ordinal_to_read += 1;
3505 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3506 next_offset += envelope_size;
3507 }
3508
3509 Ok(())
3510 }
3511 }
3512
3513 impl InternalState {
3514 #[inline(always)]
3515 fn max_ordinal_present(&self) -> u64 {
3516 if let Some(_) = self.has_session {
3517 return 2;
3518 }
3519 if let Some(_) = self.mac {
3520 return 1;
3521 }
3522 0
3523 }
3524 }
3525
3526 impl fidl::encoding::ValueTypeMarker for InternalState {
3527 type Borrowed<'a> = &'a Self;
3528 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3529 value
3530 }
3531 }
3532
3533 unsafe impl fidl::encoding::TypeMarker for InternalState {
3534 type Owned = Self;
3535
3536 #[inline(always)]
3537 fn inline_align(_context: fidl::encoding::Context) -> usize {
3538 8
3539 }
3540
3541 #[inline(always)]
3542 fn inline_size(_context: fidl::encoding::Context) -> usize {
3543 16
3544 }
3545 }
3546
3547 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<InternalState, D>
3548 for &InternalState
3549 {
3550 unsafe fn encode(
3551 self,
3552 encoder: &mut fidl::encoding::Encoder<'_, D>,
3553 offset: usize,
3554 mut depth: fidl::encoding::Depth,
3555 ) -> fidl::Result<()> {
3556 encoder.debug_check_bounds::<InternalState>(offset);
3557 let max_ordinal: u64 = self.max_ordinal_present();
3559 encoder.write_num(max_ordinal, offset);
3560 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
3561 if max_ordinal == 0 {
3563 return Ok(());
3564 }
3565 depth.increment()?;
3566 let envelope_size = 8;
3567 let bytes_len = max_ordinal as usize * envelope_size;
3568 #[allow(unused_variables)]
3569 let offset = encoder.out_of_line_offset(bytes_len);
3570 let mut _prev_end_offset: usize = 0;
3571 if 1 > max_ordinal {
3572 return Ok(());
3573 }
3574
3575 let cur_offset: usize = (1 - 1) * envelope_size;
3578
3579 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3581
3582 fidl::encoding::encode_in_envelope_optional::<MacState, D>(
3587 self.mac.as_ref().map(<MacState as fidl::encoding::ValueTypeMarker>::borrow),
3588 encoder,
3589 offset + cur_offset,
3590 depth,
3591 )?;
3592
3593 _prev_end_offset = cur_offset + envelope_size;
3594 if 2 > max_ordinal {
3595 return Ok(());
3596 }
3597
3598 let cur_offset: usize = (2 - 1) * envelope_size;
3601
3602 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3604
3605 fidl::encoding::encode_in_envelope_optional::<bool, D>(
3610 self.has_session.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
3611 encoder,
3612 offset + cur_offset,
3613 depth,
3614 )?;
3615
3616 _prev_end_offset = cur_offset + envelope_size;
3617
3618 Ok(())
3619 }
3620 }
3621
3622 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for InternalState {
3623 #[inline(always)]
3624 fn new_empty() -> Self {
3625 Self::default()
3626 }
3627
3628 unsafe fn decode(
3629 &mut self,
3630 decoder: &mut fidl::encoding::Decoder<'_, D>,
3631 offset: usize,
3632 mut depth: fidl::encoding::Depth,
3633 ) -> fidl::Result<()> {
3634 decoder.debug_check_bounds::<Self>(offset);
3635 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
3636 None => return Err(fidl::Error::NotNullable),
3637 Some(len) => len,
3638 };
3639 if len == 0 {
3641 return Ok(());
3642 };
3643 depth.increment()?;
3644 let envelope_size = 8;
3645 let bytes_len = len * envelope_size;
3646 let offset = decoder.out_of_line_offset(bytes_len)?;
3647 let mut _next_ordinal_to_read = 0;
3649 let mut next_offset = offset;
3650 let end_offset = offset + bytes_len;
3651 _next_ordinal_to_read += 1;
3652 if next_offset >= end_offset {
3653 return Ok(());
3654 }
3655
3656 while _next_ordinal_to_read < 1 {
3658 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3659 _next_ordinal_to_read += 1;
3660 next_offset += envelope_size;
3661 }
3662
3663 let next_out_of_line = decoder.next_out_of_line();
3664 let handles_before = decoder.remaining_handles();
3665 if let Some((inlined, num_bytes, num_handles)) =
3666 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3667 {
3668 let member_inline_size =
3669 <MacState as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3670 if inlined != (member_inline_size <= 4) {
3671 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3672 }
3673 let inner_offset;
3674 let mut inner_depth = depth.clone();
3675 if inlined {
3676 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3677 inner_offset = next_offset;
3678 } else {
3679 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3680 inner_depth.increment()?;
3681 }
3682 let val_ref = self.mac.get_or_insert_with(|| fidl::new_empty!(MacState, D));
3683 fidl::decode!(MacState, D, val_ref, decoder, inner_offset, inner_depth)?;
3684 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3685 {
3686 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3687 }
3688 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3689 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3690 }
3691 }
3692
3693 next_offset += envelope_size;
3694 _next_ordinal_to_read += 1;
3695 if next_offset >= end_offset {
3696 return Ok(());
3697 }
3698
3699 while _next_ordinal_to_read < 2 {
3701 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3702 _next_ordinal_to_read += 1;
3703 next_offset += envelope_size;
3704 }
3705
3706 let next_out_of_line = decoder.next_out_of_line();
3707 let handles_before = decoder.remaining_handles();
3708 if let Some((inlined, num_bytes, num_handles)) =
3709 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3710 {
3711 let member_inline_size =
3712 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3713 if inlined != (member_inline_size <= 4) {
3714 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3715 }
3716 let inner_offset;
3717 let mut inner_depth = depth.clone();
3718 if inlined {
3719 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3720 inner_offset = next_offset;
3721 } else {
3722 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3723 inner_depth.increment()?;
3724 }
3725 let val_ref = self.has_session.get_or_insert_with(|| fidl::new_empty!(bool, D));
3726 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
3727 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3728 {
3729 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3730 }
3731 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3732 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3733 }
3734 }
3735
3736 next_offset += envelope_size;
3737
3738 while next_offset < end_offset {
3740 _next_ordinal_to_read += 1;
3741 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3742 next_offset += envelope_size;
3743 }
3744
3745 Ok(())
3746 }
3747 }
3748
3749 impl MacState {
3750 #[inline(always)]
3751 fn max_ordinal_present(&self) -> u64 {
3752 if let Some(_) = self.multicast_filters {
3753 return 2;
3754 }
3755 if let Some(_) = self.mode {
3756 return 1;
3757 }
3758 0
3759 }
3760 }
3761
3762 impl fidl::encoding::ValueTypeMarker for MacState {
3763 type Borrowed<'a> = &'a Self;
3764 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3765 value
3766 }
3767 }
3768
3769 unsafe impl fidl::encoding::TypeMarker for MacState {
3770 type Owned = Self;
3771
3772 #[inline(always)]
3773 fn inline_align(_context: fidl::encoding::Context) -> usize {
3774 8
3775 }
3776
3777 #[inline(always)]
3778 fn inline_size(_context: fidl::encoding::Context) -> usize {
3779 16
3780 }
3781 }
3782
3783 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<MacState, D> for &MacState {
3784 unsafe fn encode(
3785 self,
3786 encoder: &mut fidl::encoding::Encoder<'_, D>,
3787 offset: usize,
3788 mut depth: fidl::encoding::Depth,
3789 ) -> fidl::Result<()> {
3790 encoder.debug_check_bounds::<MacState>(offset);
3791 let max_ordinal: u64 = self.max_ordinal_present();
3793 encoder.write_num(max_ordinal, offset);
3794 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
3795 if max_ordinal == 0 {
3797 return Ok(());
3798 }
3799 depth.increment()?;
3800 let envelope_size = 8;
3801 let bytes_len = max_ordinal as usize * envelope_size;
3802 #[allow(unused_variables)]
3803 let offset = encoder.out_of_line_offset(bytes_len);
3804 let mut _prev_end_offset: usize = 0;
3805 if 1 > max_ordinal {
3806 return Ok(());
3807 }
3808
3809 let cur_offset: usize = (1 - 1) * envelope_size;
3812
3813 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3815
3816 fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_hardware_network_common::MacFilterMode, D>(
3821 self.mode.as_ref().map(<fidl_fuchsia_hardware_network_common::MacFilterMode as fidl::encoding::ValueTypeMarker>::borrow),
3822 encoder, offset + cur_offset, depth
3823 )?;
3824
3825 _prev_end_offset = cur_offset + envelope_size;
3826 if 2 > max_ordinal {
3827 return Ok(());
3828 }
3829
3830 let cur_offset: usize = (2 - 1) * envelope_size;
3833
3834 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3836
3837 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<fidl_fuchsia_net_common::MacAddress, 64>, D>(
3842 self.multicast_filters.as_ref().map(<fidl::encoding::Vector<fidl_fuchsia_net_common::MacAddress, 64> as fidl::encoding::ValueTypeMarker>::borrow),
3843 encoder, offset + cur_offset, depth
3844 )?;
3845
3846 _prev_end_offset = cur_offset + envelope_size;
3847
3848 Ok(())
3849 }
3850 }
3851
3852 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for MacState {
3853 #[inline(always)]
3854 fn new_empty() -> Self {
3855 Self::default()
3856 }
3857
3858 unsafe fn decode(
3859 &mut self,
3860 decoder: &mut fidl::encoding::Decoder<'_, D>,
3861 offset: usize,
3862 mut depth: fidl::encoding::Depth,
3863 ) -> fidl::Result<()> {
3864 decoder.debug_check_bounds::<Self>(offset);
3865 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
3866 None => return Err(fidl::Error::NotNullable),
3867 Some(len) => len,
3868 };
3869 if len == 0 {
3871 return Ok(());
3872 };
3873 depth.increment()?;
3874 let envelope_size = 8;
3875 let bytes_len = len * envelope_size;
3876 let offset = decoder.out_of_line_offset(bytes_len)?;
3877 let mut _next_ordinal_to_read = 0;
3879 let mut next_offset = offset;
3880 let end_offset = offset + bytes_len;
3881 _next_ordinal_to_read += 1;
3882 if next_offset >= end_offset {
3883 return Ok(());
3884 }
3885
3886 while _next_ordinal_to_read < 1 {
3888 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3889 _next_ordinal_to_read += 1;
3890 next_offset += envelope_size;
3891 }
3892
3893 let next_out_of_line = decoder.next_out_of_line();
3894 let handles_before = decoder.remaining_handles();
3895 if let Some((inlined, num_bytes, num_handles)) =
3896 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3897 {
3898 let member_inline_size = <fidl_fuchsia_hardware_network_common::MacFilterMode as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3899 if inlined != (member_inline_size <= 4) {
3900 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3901 }
3902 let inner_offset;
3903 let mut inner_depth = depth.clone();
3904 if inlined {
3905 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3906 inner_offset = next_offset;
3907 } else {
3908 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3909 inner_depth.increment()?;
3910 }
3911 let val_ref = self.mode.get_or_insert_with(|| {
3912 fidl::new_empty!(fidl_fuchsia_hardware_network_common::MacFilterMode, D)
3913 });
3914 fidl::decode!(
3915 fidl_fuchsia_hardware_network_common::MacFilterMode,
3916 D,
3917 val_ref,
3918 decoder,
3919 inner_offset,
3920 inner_depth
3921 )?;
3922 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3923 {
3924 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3925 }
3926 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3927 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3928 }
3929 }
3930
3931 next_offset += envelope_size;
3932 _next_ordinal_to_read += 1;
3933 if next_offset >= end_offset {
3934 return Ok(());
3935 }
3936
3937 while _next_ordinal_to_read < 2 {
3939 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3940 _next_ordinal_to_read += 1;
3941 next_offset += envelope_size;
3942 }
3943
3944 let next_out_of_line = decoder.next_out_of_line();
3945 let handles_before = decoder.remaining_handles();
3946 if let Some((inlined, num_bytes, num_handles)) =
3947 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3948 {
3949 let member_inline_size = <fidl::encoding::Vector<
3950 fidl_fuchsia_net_common::MacAddress,
3951 64,
3952 > as fidl::encoding::TypeMarker>::inline_size(
3953 decoder.context
3954 );
3955 if inlined != (member_inline_size <= 4) {
3956 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3957 }
3958 let inner_offset;
3959 let mut inner_depth = depth.clone();
3960 if inlined {
3961 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3962 inner_offset = next_offset;
3963 } else {
3964 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3965 inner_depth.increment()?;
3966 }
3967 let val_ref =
3968 self.multicast_filters.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<fidl_fuchsia_net_common::MacAddress, 64>, D));
3969 fidl::decode!(fidl::encoding::Vector<fidl_fuchsia_net_common::MacAddress, 64>, D, val_ref, decoder, inner_offset, inner_depth)?;
3970 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3971 {
3972 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3973 }
3974 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3975 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3976 }
3977 }
3978
3979 next_offset += envelope_size;
3980
3981 while next_offset < end_offset {
3983 _next_ordinal_to_read += 1;
3984 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3985 next_offset += envelope_size;
3986 }
3987
3988 Ok(())
3989 }
3990 }
3991}