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 DEFAULT_GUEST_CID: u32 = 3;
13
14pub const HOST_CID: u32 = 2;
16
17pub const MAX_BLOCK_DEVICES: u8 = 32;
18
19pub const MAX_BLOCK_DEVICE_ID: u8 = 20;
20
21pub const MAX_MEMORY: u8 = 32;
22
23pub const MAX_NET_DEVICES: u8 = 32;
24
25#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
26#[repr(u32)]
27pub enum BlockMode {
28 ReadWrite = 0,
30 ReadOnly = 1,
32 VolatileWrite = 2,
34}
35
36impl BlockMode {
37 #[inline]
38 pub fn from_primitive(prim: u32) -> Option<Self> {
39 match prim {
40 0 => Some(Self::ReadWrite),
41 1 => Some(Self::ReadOnly),
42 2 => Some(Self::VolatileWrite),
43 _ => None,
44 }
45 }
46
47 #[inline]
48 pub const fn into_primitive(self) -> u32 {
49 self as u32
50 }
51}
52
53#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
55#[repr(u32)]
56pub enum ContainerStatus {
57 Transient = 1,
58 LaunchingGuest = 2,
59 StartingVm = 3,
60 Downloading = 4,
61 Extracting = 5,
62 Starting = 6,
63 Ready = 7,
64 Failed = 8,
65}
66
67impl ContainerStatus {
68 #[inline]
69 pub fn from_primitive(prim: u32) -> Option<Self> {
70 match prim {
71 1 => Some(Self::Transient),
72 2 => Some(Self::LaunchingGuest),
73 3 => Some(Self::StartingVm),
74 4 => Some(Self::Downloading),
75 5 => Some(Self::Extracting),
76 6 => Some(Self::Starting),
77 7 => Some(Self::Ready),
78 8 => Some(Self::Failed),
79 _ => None,
80 }
81 }
82
83 #[inline]
84 pub const fn into_primitive(self) -> u32 {
85 self as u32
86 }
87}
88
89#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
90#[repr(u32)]
91pub enum GuestError {
92 InternalError = 1,
94 DeviceNotPresent = 2,
96 BadConfig = 3,
98 GuestInitializationFailure = 4,
101 DeviceInitializationFailure = 5,
103 DeviceStartFailure = 6,
105 DeviceMemoryOverlap = 7,
107 FailedServiceConnect = 8,
109 DuplicatePublicServices = 9,
111 KernelLoadFailure = 10,
113 VcpuStartFailure = 11,
115 VcpuRuntimeFailure = 12,
117 NotCreated = 13,
119 AlreadyRunning = 14,
122 ControllerForcedHalt = 15,
124}
125
126impl GuestError {
127 #[inline]
128 pub fn from_primitive(prim: u32) -> Option<Self> {
129 match prim {
130 1 => Some(Self::InternalError),
131 2 => Some(Self::DeviceNotPresent),
132 3 => Some(Self::BadConfig),
133 4 => Some(Self::GuestInitializationFailure),
134 5 => Some(Self::DeviceInitializationFailure),
135 6 => Some(Self::DeviceStartFailure),
136 7 => Some(Self::DeviceMemoryOverlap),
137 8 => Some(Self::FailedServiceConnect),
138 9 => Some(Self::DuplicatePublicServices),
139 10 => Some(Self::KernelLoadFailure),
140 11 => Some(Self::VcpuStartFailure),
141 12 => Some(Self::VcpuRuntimeFailure),
142 13 => Some(Self::NotCreated),
143 14 => Some(Self::AlreadyRunning),
144 15 => Some(Self::ControllerForcedHalt),
145 _ => None,
146 }
147 }
148
149 #[inline]
150 pub const fn into_primitive(self) -> u32 {
151 self as u32
152 }
153}
154
155#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
156#[repr(u32)]
157pub enum GuestManagerError {
158 BadConfig = 1,
161 AlreadyRunning = 2,
163 NotRunning = 3,
165 StartFailure = 4,
167 NoStorage = 5,
170}
171
172impl GuestManagerError {
173 #[inline]
174 pub fn from_primitive(prim: u32) -> Option<Self> {
175 match prim {
176 1 => Some(Self::BadConfig),
177 2 => Some(Self::AlreadyRunning),
178 3 => Some(Self::NotRunning),
179 4 => Some(Self::StartFailure),
180 5 => Some(Self::NoStorage),
181 _ => None,
182 }
183 }
184
185 #[inline]
186 pub const fn into_primitive(self) -> u32 {
187 self as u32
188 }
189}
190
191#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
192#[repr(u32)]
193pub enum GuestStatus {
194 NotStarted = 1,
196 Starting = 2,
198 Running = 3,
200 Stopping = 4,
203 Stopped = 5,
206 VmmUnexpectedTermination = 6,
209}
210
211impl GuestStatus {
212 #[inline]
213 pub fn from_primitive(prim: u32) -> Option<Self> {
214 match prim {
215 1 => Some(Self::NotStarted),
216 2 => Some(Self::Starting),
217 3 => Some(Self::Running),
218 4 => Some(Self::Stopping),
219 5 => Some(Self::Stopped),
220 6 => Some(Self::VmmUnexpectedTermination),
221 _ => None,
222 }
223 }
224
225 #[inline]
226 pub const fn into_primitive(self) -> u32 {
227 self as u32
228 }
229}
230
231#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
233#[repr(u32)]
234pub enum KernelType {
235 Zircon = 0,
236 Linux = 1,
237}
238
239impl KernelType {
240 #[inline]
241 pub fn from_primitive(prim: u32) -> Option<Self> {
242 match prim {
243 0 => Some(Self::Zircon),
244 1 => Some(Self::Linux),
245 _ => None,
246 }
247 }
248
249 #[inline]
250 pub const fn into_primitive(self) -> u32 {
251 self as u32
252 }
253}
254
255#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
256#[repr(C)]
257pub struct BalloonControllerGetBalloonSizeResponse {
258 pub current_num_pages: u32,
259 pub requested_num_pages: u32,
260}
261
262impl fidl::Persistable for BalloonControllerGetBalloonSizeResponse {}
263
264#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
265pub struct BalloonControllerGetMemStatsResponse {
266 pub status: i32,
267 pub mem_stats: Option<Vec<MemStat>>,
268}
269
270impl fidl::Persistable for BalloonControllerGetMemStatsResponse {}
271
272#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
273#[repr(C)]
274pub struct BalloonControllerRequestNumPagesRequest {
275 pub requested_num_pages: u32,
276}
277
278impl fidl::Persistable for BalloonControllerRequestNumPagesRequest {}
279
280#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
281#[repr(C)]
282pub struct HostVsockAcceptorAcceptRequest {
283 pub src_cid: u32,
284 pub src_port: u32,
285 pub port: u32,
286}
287
288impl fidl::Persistable for HostVsockAcceptorAcceptRequest {}
289
290#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
291#[repr(C)]
292pub struct HostVsockEndpointConnectRequest {
293 pub guest_port: u32,
294}
295
296impl fidl::Persistable for HostVsockEndpointConnectRequest {}
297
298#[derive(Clone, Debug, PartialEq)]
299pub struct LinuxManagerOnGuestInfoChangedRequest {
300 pub label: String,
301 pub info: LinuxGuestInfo,
302}
303
304impl fidl::Persistable for LinuxManagerOnGuestInfoChangedRequest {}
305
306#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
307pub struct LinuxManagerStartAndGetLinuxGuestInfoRequest {
308 pub label: String,
309}
310
311impl fidl::Persistable for LinuxManagerStartAndGetLinuxGuestInfoRequest {}
312
313#[derive(Clone, Debug, PartialEq)]
314pub struct LinuxManagerStartAndGetLinuxGuestInfoResponse {
315 pub info: LinuxGuestInfo,
316}
317
318impl fidl::Persistable for LinuxManagerStartAndGetLinuxGuestInfoResponse {}
319
320#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
322#[repr(C)]
323pub struct MagmaDevice {
324 pub memory: u64,
329}
330
331impl fidl::Persistable for MagmaDevice {}
332
333#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
334#[repr(C)]
335pub struct MemControllerGetMemSizeResponse {
336 pub block_size: u64,
337 pub region_size: u64,
338 pub usable_region_size: u64,
339 pub plugged_size: u64,
340 pub requested_size: u64,
341}
342
343impl fidl::Persistable for MemControllerGetMemSizeResponse {}
344
345#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
346#[repr(C)]
347pub struct MemControllerRequestSizeRequest {
348 pub requested_size: u64,
349}
350
351impl fidl::Persistable for MemControllerRequestSizeRequest {}
352
353#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
355#[repr(C)]
356pub struct MemStat {
357 pub tag: u16,
358 pub val: u64,
359}
360
361impl fidl::Persistable for MemStat {}
362
363#[derive(Clone, Debug, PartialEq)]
365pub struct NetSpec {
366 pub mac_address: fidl_fuchsia_net__common::MacAddress,
368 pub enable_bridge: bool,
370}
371
372impl fidl::Persistable for NetSpec {}
373
374#[derive(Clone, Debug, Default, PartialEq)]
377pub struct GuestDescriptor {
378 pub num_cpus: Option<u8>,
380 pub guest_memory: Option<u64>,
382 pub balloon: Option<bool>,
386 pub console: Option<bool>,
387 pub gpu: Option<bool>,
388 pub rng: Option<bool>,
389 pub vsock: Option<bool>,
390 pub sound: Option<bool>,
391 pub networks: Option<Vec<NetSpec>>,
394 pub mem: Option<bool>,
395 #[doc(hidden)]
396 pub __source_breaking: fidl::marker::SourceBreaking,
397}
398
399impl fidl::Persistable for GuestDescriptor {}
400
401#[derive(Clone, Debug, Default, PartialEq)]
402pub struct GuestInfo {
403 pub guest_status: Option<GuestStatus>,
405 pub uptime: Option<i64>,
407 pub guest_descriptor: Option<GuestDescriptor>,
409 pub stop_error: Option<GuestError>,
411 pub detected_problems: Option<Vec<String>>,
417 #[doc(hidden)]
418 pub __source_breaking: fidl::marker::SourceBreaking,
419}
420
421impl fidl::Persistable for GuestInfo {}
422
423#[derive(Clone, Debug, Default, PartialEq)]
425pub struct LinuxGuestInfo {
426 pub cid: Option<u32>,
428 pub container_status: Option<ContainerStatus>,
430 pub download_percent: Option<i32>,
433 pub failure_reason: Option<String>,
436 #[doc(hidden)]
437 pub __source_breaking: fidl::marker::SourceBreaking,
438}
439
440impl fidl::Persistable for LinuxGuestInfo {}
441
442pub mod balloon_controller_ordinals {
443 pub const GET_BALLOON_SIZE: u64 = 0x2bb2ebaa6ff64d0b;
444 pub const REQUEST_NUM_PAGES: u64 = 0x55c444d65e1df1e8;
445 pub const GET_MEM_STATS: u64 = 0x676199795cc01142;
446}
447
448pub mod debian_guest_manager_ordinals {
449 pub const LAUNCH: u64 = 0x394a2e29f750323e;
450 pub const FORCE_SHUTDOWN: u64 = 0x3ad9a012982f872d;
451 pub const CONNECT: u64 = 0x4e489076e3bb15b4;
452 pub const GET_INFO: u64 = 0x76892614aea695dc;
453}
454
455pub mod guest_ordinals {
456 pub const GET_CONSOLE: u64 = 0x48cbcecb7793806e;
457 pub const GET_SERIAL: u64 = 0xcdd541a160d7044;
458 pub const GET_HOST_VSOCK_ENDPOINT: u64 = 0x766e96aeb9c28ed1;
459 pub const GET_BALLOON_CONTROLLER: u64 = 0x7b210bff219ac84e;
460 pub const GET_MEM_CONTROLLER: u64 = 0x170b19f4b867a01c;
461}
462
463pub mod guest_lifecycle_ordinals {
464 pub const CREATE: u64 = 0x152719eed416ed41;
465 pub const BIND: u64 = 0x57dd3e245f9598ed;
466 pub const RUN: u64 = 0x2907fef2ac775657;
467 pub const STOP: u64 = 0x27eef9c535ac8eb4;
468}
469
470pub mod guest_manager_ordinals {
471 pub const LAUNCH: u64 = 0x394a2e29f750323e;
472 pub const FORCE_SHUTDOWN: u64 = 0x3ad9a012982f872d;
473 pub const CONNECT: u64 = 0x4e489076e3bb15b4;
474 pub const GET_INFO: u64 = 0x76892614aea695dc;
475}
476
477pub mod host_vsock_acceptor_ordinals {
478 pub const ACCEPT: u64 = 0x6996ed935beaa2d7;
479}
480
481pub mod host_vsock_endpoint_ordinals {
482 pub const LISTEN: u64 = 0xfd88f3b4767f2c7;
483 pub const CONNECT: u64 = 0x4d12e10e946b43e4;
484}
485
486pub mod linux_manager_ordinals {
487 pub const START_AND_GET_LINUX_GUEST_INFO: u64 = 0x11809ced100a2bea;
488 pub const ON_GUEST_INFO_CHANGED: u64 = 0x30a9be4c43d6a2d6;
489 pub const WIPE_DATA: u64 = 0x732c69394548a76a;
490 pub const GRACEFUL_SHUTDOWN: u64 = 0x5dab12b50bc9909d;
491}
492
493pub mod mem_controller_ordinals {
494 pub const GET_MEM_SIZE: u64 = 0x6e9d496f9b66ea56;
495 pub const REQUEST_SIZE: u64 = 0x12f8e2cc21ee8102;
496}
497
498pub mod termina_guest_manager_ordinals {
499 pub const LAUNCH: u64 = 0x394a2e29f750323e;
500 pub const FORCE_SHUTDOWN: u64 = 0x3ad9a012982f872d;
501 pub const CONNECT: u64 = 0x4e489076e3bb15b4;
502 pub const GET_INFO: u64 = 0x76892614aea695dc;
503}
504
505pub mod zircon_guest_manager_ordinals {
506 pub const LAUNCH: u64 = 0x394a2e29f750323e;
507 pub const FORCE_SHUTDOWN: u64 = 0x3ad9a012982f872d;
508 pub const CONNECT: u64 = 0x4e489076e3bb15b4;
509 pub const GET_INFO: u64 = 0x76892614aea695dc;
510}
511
512mod internal {
513 use super::*;
514 unsafe impl fidl::encoding::TypeMarker for BlockMode {
515 type Owned = Self;
516
517 #[inline(always)]
518 fn inline_align(_context: fidl::encoding::Context) -> usize {
519 std::mem::align_of::<u32>()
520 }
521
522 #[inline(always)]
523 fn inline_size(_context: fidl::encoding::Context) -> usize {
524 std::mem::size_of::<u32>()
525 }
526
527 #[inline(always)]
528 fn encode_is_copy() -> bool {
529 true
530 }
531
532 #[inline(always)]
533 fn decode_is_copy() -> bool {
534 false
535 }
536 }
537
538 impl fidl::encoding::ValueTypeMarker for BlockMode {
539 type Borrowed<'a> = Self;
540 #[inline(always)]
541 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
542 *value
543 }
544 }
545
546 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for BlockMode {
547 #[inline]
548 unsafe fn encode(
549 self,
550 encoder: &mut fidl::encoding::Encoder<'_, D>,
551 offset: usize,
552 _depth: fidl::encoding::Depth,
553 ) -> fidl::Result<()> {
554 encoder.debug_check_bounds::<Self>(offset);
555 encoder.write_num(self.into_primitive(), offset);
556 Ok(())
557 }
558 }
559
560 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for BlockMode {
561 #[inline(always)]
562 fn new_empty() -> Self {
563 Self::ReadWrite
564 }
565
566 #[inline]
567 unsafe fn decode(
568 &mut self,
569 decoder: &mut fidl::encoding::Decoder<'_, D>,
570 offset: usize,
571 _depth: fidl::encoding::Depth,
572 ) -> fidl::Result<()> {
573 decoder.debug_check_bounds::<Self>(offset);
574 let prim = decoder.read_num::<u32>(offset);
575
576 *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
577 Ok(())
578 }
579 }
580 unsafe impl fidl::encoding::TypeMarker for ContainerStatus {
581 type Owned = Self;
582
583 #[inline(always)]
584 fn inline_align(_context: fidl::encoding::Context) -> usize {
585 std::mem::align_of::<u32>()
586 }
587
588 #[inline(always)]
589 fn inline_size(_context: fidl::encoding::Context) -> usize {
590 std::mem::size_of::<u32>()
591 }
592
593 #[inline(always)]
594 fn encode_is_copy() -> bool {
595 true
596 }
597
598 #[inline(always)]
599 fn decode_is_copy() -> bool {
600 false
601 }
602 }
603
604 impl fidl::encoding::ValueTypeMarker for ContainerStatus {
605 type Borrowed<'a> = Self;
606 #[inline(always)]
607 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
608 *value
609 }
610 }
611
612 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
613 for ContainerStatus
614 {
615 #[inline]
616 unsafe fn encode(
617 self,
618 encoder: &mut fidl::encoding::Encoder<'_, D>,
619 offset: usize,
620 _depth: fidl::encoding::Depth,
621 ) -> fidl::Result<()> {
622 encoder.debug_check_bounds::<Self>(offset);
623 encoder.write_num(self.into_primitive(), offset);
624 Ok(())
625 }
626 }
627
628 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ContainerStatus {
629 #[inline(always)]
630 fn new_empty() -> Self {
631 Self::Transient
632 }
633
634 #[inline]
635 unsafe fn decode(
636 &mut self,
637 decoder: &mut fidl::encoding::Decoder<'_, D>,
638 offset: usize,
639 _depth: fidl::encoding::Depth,
640 ) -> fidl::Result<()> {
641 decoder.debug_check_bounds::<Self>(offset);
642 let prim = decoder.read_num::<u32>(offset);
643
644 *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
645 Ok(())
646 }
647 }
648 unsafe impl fidl::encoding::TypeMarker for GuestError {
649 type Owned = Self;
650
651 #[inline(always)]
652 fn inline_align(_context: fidl::encoding::Context) -> usize {
653 std::mem::align_of::<u32>()
654 }
655
656 #[inline(always)]
657 fn inline_size(_context: fidl::encoding::Context) -> usize {
658 std::mem::size_of::<u32>()
659 }
660
661 #[inline(always)]
662 fn encode_is_copy() -> bool {
663 true
664 }
665
666 #[inline(always)]
667 fn decode_is_copy() -> bool {
668 false
669 }
670 }
671
672 impl fidl::encoding::ValueTypeMarker for GuestError {
673 type Borrowed<'a> = Self;
674 #[inline(always)]
675 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
676 *value
677 }
678 }
679
680 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for GuestError {
681 #[inline]
682 unsafe fn encode(
683 self,
684 encoder: &mut fidl::encoding::Encoder<'_, D>,
685 offset: usize,
686 _depth: fidl::encoding::Depth,
687 ) -> fidl::Result<()> {
688 encoder.debug_check_bounds::<Self>(offset);
689 encoder.write_num(self.into_primitive(), offset);
690 Ok(())
691 }
692 }
693
694 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for GuestError {
695 #[inline(always)]
696 fn new_empty() -> Self {
697 Self::InternalError
698 }
699
700 #[inline]
701 unsafe fn decode(
702 &mut self,
703 decoder: &mut fidl::encoding::Decoder<'_, D>,
704 offset: usize,
705 _depth: fidl::encoding::Depth,
706 ) -> fidl::Result<()> {
707 decoder.debug_check_bounds::<Self>(offset);
708 let prim = decoder.read_num::<u32>(offset);
709
710 *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
711 Ok(())
712 }
713 }
714 unsafe impl fidl::encoding::TypeMarker for GuestManagerError {
715 type Owned = Self;
716
717 #[inline(always)]
718 fn inline_align(_context: fidl::encoding::Context) -> usize {
719 std::mem::align_of::<u32>()
720 }
721
722 #[inline(always)]
723 fn inline_size(_context: fidl::encoding::Context) -> usize {
724 std::mem::size_of::<u32>()
725 }
726
727 #[inline(always)]
728 fn encode_is_copy() -> bool {
729 true
730 }
731
732 #[inline(always)]
733 fn decode_is_copy() -> bool {
734 false
735 }
736 }
737
738 impl fidl::encoding::ValueTypeMarker for GuestManagerError {
739 type Borrowed<'a> = Self;
740 #[inline(always)]
741 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
742 *value
743 }
744 }
745
746 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
747 for GuestManagerError
748 {
749 #[inline]
750 unsafe fn encode(
751 self,
752 encoder: &mut fidl::encoding::Encoder<'_, D>,
753 offset: usize,
754 _depth: fidl::encoding::Depth,
755 ) -> fidl::Result<()> {
756 encoder.debug_check_bounds::<Self>(offset);
757 encoder.write_num(self.into_primitive(), offset);
758 Ok(())
759 }
760 }
761
762 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for GuestManagerError {
763 #[inline(always)]
764 fn new_empty() -> Self {
765 Self::BadConfig
766 }
767
768 #[inline]
769 unsafe fn decode(
770 &mut self,
771 decoder: &mut fidl::encoding::Decoder<'_, D>,
772 offset: usize,
773 _depth: fidl::encoding::Depth,
774 ) -> fidl::Result<()> {
775 decoder.debug_check_bounds::<Self>(offset);
776 let prim = decoder.read_num::<u32>(offset);
777
778 *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
779 Ok(())
780 }
781 }
782 unsafe impl fidl::encoding::TypeMarker for GuestStatus {
783 type Owned = Self;
784
785 #[inline(always)]
786 fn inline_align(_context: fidl::encoding::Context) -> usize {
787 std::mem::align_of::<u32>()
788 }
789
790 #[inline(always)]
791 fn inline_size(_context: fidl::encoding::Context) -> usize {
792 std::mem::size_of::<u32>()
793 }
794
795 #[inline(always)]
796 fn encode_is_copy() -> bool {
797 true
798 }
799
800 #[inline(always)]
801 fn decode_is_copy() -> bool {
802 false
803 }
804 }
805
806 impl fidl::encoding::ValueTypeMarker for GuestStatus {
807 type Borrowed<'a> = Self;
808 #[inline(always)]
809 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
810 *value
811 }
812 }
813
814 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for GuestStatus {
815 #[inline]
816 unsafe fn encode(
817 self,
818 encoder: &mut fidl::encoding::Encoder<'_, D>,
819 offset: usize,
820 _depth: fidl::encoding::Depth,
821 ) -> fidl::Result<()> {
822 encoder.debug_check_bounds::<Self>(offset);
823 encoder.write_num(self.into_primitive(), offset);
824 Ok(())
825 }
826 }
827
828 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for GuestStatus {
829 #[inline(always)]
830 fn new_empty() -> Self {
831 Self::NotStarted
832 }
833
834 #[inline]
835 unsafe fn decode(
836 &mut self,
837 decoder: &mut fidl::encoding::Decoder<'_, D>,
838 offset: usize,
839 _depth: fidl::encoding::Depth,
840 ) -> fidl::Result<()> {
841 decoder.debug_check_bounds::<Self>(offset);
842 let prim = decoder.read_num::<u32>(offset);
843
844 *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
845 Ok(())
846 }
847 }
848 unsafe impl fidl::encoding::TypeMarker for KernelType {
849 type Owned = Self;
850
851 #[inline(always)]
852 fn inline_align(_context: fidl::encoding::Context) -> usize {
853 std::mem::align_of::<u32>()
854 }
855
856 #[inline(always)]
857 fn inline_size(_context: fidl::encoding::Context) -> usize {
858 std::mem::size_of::<u32>()
859 }
860
861 #[inline(always)]
862 fn encode_is_copy() -> bool {
863 true
864 }
865
866 #[inline(always)]
867 fn decode_is_copy() -> bool {
868 false
869 }
870 }
871
872 impl fidl::encoding::ValueTypeMarker for KernelType {
873 type Borrowed<'a> = Self;
874 #[inline(always)]
875 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
876 *value
877 }
878 }
879
880 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for KernelType {
881 #[inline]
882 unsafe fn encode(
883 self,
884 encoder: &mut fidl::encoding::Encoder<'_, D>,
885 offset: usize,
886 _depth: fidl::encoding::Depth,
887 ) -> fidl::Result<()> {
888 encoder.debug_check_bounds::<Self>(offset);
889 encoder.write_num(self.into_primitive(), offset);
890 Ok(())
891 }
892 }
893
894 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for KernelType {
895 #[inline(always)]
896 fn new_empty() -> Self {
897 Self::Zircon
898 }
899
900 #[inline]
901 unsafe fn decode(
902 &mut self,
903 decoder: &mut fidl::encoding::Decoder<'_, D>,
904 offset: usize,
905 _depth: fidl::encoding::Depth,
906 ) -> fidl::Result<()> {
907 decoder.debug_check_bounds::<Self>(offset);
908 let prim = decoder.read_num::<u32>(offset);
909
910 *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
911 Ok(())
912 }
913 }
914
915 impl fidl::encoding::ValueTypeMarker for BalloonControllerGetBalloonSizeResponse {
916 type Borrowed<'a> = &'a Self;
917 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
918 value
919 }
920 }
921
922 unsafe impl fidl::encoding::TypeMarker for BalloonControllerGetBalloonSizeResponse {
923 type Owned = Self;
924
925 #[inline(always)]
926 fn inline_align(_context: fidl::encoding::Context) -> usize {
927 4
928 }
929
930 #[inline(always)]
931 fn inline_size(_context: fidl::encoding::Context) -> usize {
932 8
933 }
934 #[inline(always)]
935 fn encode_is_copy() -> bool {
936 true
937 }
938
939 #[inline(always)]
940 fn decode_is_copy() -> bool {
941 true
942 }
943 }
944
945 unsafe impl<D: fidl::encoding::ResourceDialect>
946 fidl::encoding::Encode<BalloonControllerGetBalloonSizeResponse, D>
947 for &BalloonControllerGetBalloonSizeResponse
948 {
949 #[inline]
950 unsafe fn encode(
951 self,
952 encoder: &mut fidl::encoding::Encoder<'_, D>,
953 offset: usize,
954 _depth: fidl::encoding::Depth,
955 ) -> fidl::Result<()> {
956 encoder.debug_check_bounds::<BalloonControllerGetBalloonSizeResponse>(offset);
957 unsafe {
958 let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
960 (buf_ptr as *mut BalloonControllerGetBalloonSizeResponse).write_unaligned(
961 (self as *const BalloonControllerGetBalloonSizeResponse).read(),
962 );
963 }
966 Ok(())
967 }
968 }
969 unsafe impl<
970 D: fidl::encoding::ResourceDialect,
971 T0: fidl::encoding::Encode<u32, D>,
972 T1: fidl::encoding::Encode<u32, D>,
973 > fidl::encoding::Encode<BalloonControllerGetBalloonSizeResponse, D> for (T0, T1)
974 {
975 #[inline]
976 unsafe fn encode(
977 self,
978 encoder: &mut fidl::encoding::Encoder<'_, D>,
979 offset: usize,
980 depth: fidl::encoding::Depth,
981 ) -> fidl::Result<()> {
982 encoder.debug_check_bounds::<BalloonControllerGetBalloonSizeResponse>(offset);
983 self.0.encode(encoder, offset + 0, depth)?;
987 self.1.encode(encoder, offset + 4, depth)?;
988 Ok(())
989 }
990 }
991
992 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
993 for BalloonControllerGetBalloonSizeResponse
994 {
995 #[inline(always)]
996 fn new_empty() -> Self {
997 Self {
998 current_num_pages: fidl::new_empty!(u32, D),
999 requested_num_pages: fidl::new_empty!(u32, D),
1000 }
1001 }
1002
1003 #[inline]
1004 unsafe fn decode(
1005 &mut self,
1006 decoder: &mut fidl::encoding::Decoder<'_, D>,
1007 offset: usize,
1008 _depth: fidl::encoding::Depth,
1009 ) -> fidl::Result<()> {
1010 decoder.debug_check_bounds::<Self>(offset);
1011 let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
1012 unsafe {
1015 std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 8);
1016 }
1017 Ok(())
1018 }
1019 }
1020
1021 impl fidl::encoding::ValueTypeMarker for BalloonControllerGetMemStatsResponse {
1022 type Borrowed<'a> = &'a Self;
1023 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1024 value
1025 }
1026 }
1027
1028 unsafe impl fidl::encoding::TypeMarker for BalloonControllerGetMemStatsResponse {
1029 type Owned = Self;
1030
1031 #[inline(always)]
1032 fn inline_align(_context: fidl::encoding::Context) -> usize {
1033 8
1034 }
1035
1036 #[inline(always)]
1037 fn inline_size(_context: fidl::encoding::Context) -> usize {
1038 24
1039 }
1040 }
1041
1042 unsafe impl<D: fidl::encoding::ResourceDialect>
1043 fidl::encoding::Encode<BalloonControllerGetMemStatsResponse, D>
1044 for &BalloonControllerGetMemStatsResponse
1045 {
1046 #[inline]
1047 unsafe fn encode(
1048 self,
1049 encoder: &mut fidl::encoding::Encoder<'_, D>,
1050 offset: usize,
1051 _depth: fidl::encoding::Depth,
1052 ) -> fidl::Result<()> {
1053 encoder.debug_check_bounds::<BalloonControllerGetMemStatsResponse>(offset);
1054 fidl::encoding::Encode::<BalloonControllerGetMemStatsResponse, D>::encode(
1056 (
1057 <i32 as fidl::encoding::ValueTypeMarker>::borrow(&self.status),
1058 <fidl::encoding::Optional<fidl::encoding::UnboundedVector<MemStat>> as fidl::encoding::ValueTypeMarker>::borrow(&self.mem_stats),
1059 ),
1060 encoder, offset, _depth
1061 )
1062 }
1063 }
1064 unsafe impl<
1065 D: fidl::encoding::ResourceDialect,
1066 T0: fidl::encoding::Encode<i32, D>,
1067 T1: fidl::encoding::Encode<
1068 fidl::encoding::Optional<fidl::encoding::UnboundedVector<MemStat>>,
1069 D,
1070 >,
1071 > fidl::encoding::Encode<BalloonControllerGetMemStatsResponse, D> for (T0, T1)
1072 {
1073 #[inline]
1074 unsafe fn encode(
1075 self,
1076 encoder: &mut fidl::encoding::Encoder<'_, D>,
1077 offset: usize,
1078 depth: fidl::encoding::Depth,
1079 ) -> fidl::Result<()> {
1080 encoder.debug_check_bounds::<BalloonControllerGetMemStatsResponse>(offset);
1081 unsafe {
1084 let ptr = encoder.buf.as_mut_ptr().add(offset).offset(0);
1085 (ptr as *mut u64).write_unaligned(0);
1086 }
1087 self.0.encode(encoder, offset + 0, depth)?;
1089 self.1.encode(encoder, offset + 8, depth)?;
1090 Ok(())
1091 }
1092 }
1093
1094 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1095 for BalloonControllerGetMemStatsResponse
1096 {
1097 #[inline(always)]
1098 fn new_empty() -> Self {
1099 Self {
1100 status: fidl::new_empty!(i32, D),
1101 mem_stats: fidl::new_empty!(
1102 fidl::encoding::Optional<fidl::encoding::UnboundedVector<MemStat>>,
1103 D
1104 ),
1105 }
1106 }
1107
1108 #[inline]
1109 unsafe fn decode(
1110 &mut self,
1111 decoder: &mut fidl::encoding::Decoder<'_, D>,
1112 offset: usize,
1113 _depth: fidl::encoding::Depth,
1114 ) -> fidl::Result<()> {
1115 decoder.debug_check_bounds::<Self>(offset);
1116 let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(0) };
1118 let padval = unsafe { (ptr as *const u64).read_unaligned() };
1119 let mask = 0xffffffff00000000u64;
1120 let maskedval = padval & mask;
1121 if maskedval != 0 {
1122 return Err(fidl::Error::NonZeroPadding {
1123 padding_start: offset + 0 + ((mask as u64).trailing_zeros() / 8) as usize,
1124 });
1125 }
1126 fidl::decode!(i32, D, &mut self.status, decoder, offset + 0, _depth)?;
1127 fidl::decode!(
1128 fidl::encoding::Optional<fidl::encoding::UnboundedVector<MemStat>>,
1129 D,
1130 &mut self.mem_stats,
1131 decoder,
1132 offset + 8,
1133 _depth
1134 )?;
1135 Ok(())
1136 }
1137 }
1138
1139 impl fidl::encoding::ValueTypeMarker for BalloonControllerRequestNumPagesRequest {
1140 type Borrowed<'a> = &'a Self;
1141 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1142 value
1143 }
1144 }
1145
1146 unsafe impl fidl::encoding::TypeMarker for BalloonControllerRequestNumPagesRequest {
1147 type Owned = Self;
1148
1149 #[inline(always)]
1150 fn inline_align(_context: fidl::encoding::Context) -> usize {
1151 4
1152 }
1153
1154 #[inline(always)]
1155 fn inline_size(_context: fidl::encoding::Context) -> usize {
1156 4
1157 }
1158 #[inline(always)]
1159 fn encode_is_copy() -> bool {
1160 true
1161 }
1162
1163 #[inline(always)]
1164 fn decode_is_copy() -> bool {
1165 true
1166 }
1167 }
1168
1169 unsafe impl<D: fidl::encoding::ResourceDialect>
1170 fidl::encoding::Encode<BalloonControllerRequestNumPagesRequest, D>
1171 for &BalloonControllerRequestNumPagesRequest
1172 {
1173 #[inline]
1174 unsafe fn encode(
1175 self,
1176 encoder: &mut fidl::encoding::Encoder<'_, D>,
1177 offset: usize,
1178 _depth: fidl::encoding::Depth,
1179 ) -> fidl::Result<()> {
1180 encoder.debug_check_bounds::<BalloonControllerRequestNumPagesRequest>(offset);
1181 unsafe {
1182 let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
1184 (buf_ptr as *mut BalloonControllerRequestNumPagesRequest).write_unaligned(
1185 (self as *const BalloonControllerRequestNumPagesRequest).read(),
1186 );
1187 }
1190 Ok(())
1191 }
1192 }
1193 unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<u32, D>>
1194 fidl::encoding::Encode<BalloonControllerRequestNumPagesRequest, D> for (T0,)
1195 {
1196 #[inline]
1197 unsafe fn encode(
1198 self,
1199 encoder: &mut fidl::encoding::Encoder<'_, D>,
1200 offset: usize,
1201 depth: fidl::encoding::Depth,
1202 ) -> fidl::Result<()> {
1203 encoder.debug_check_bounds::<BalloonControllerRequestNumPagesRequest>(offset);
1204 self.0.encode(encoder, offset + 0, depth)?;
1208 Ok(())
1209 }
1210 }
1211
1212 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1213 for BalloonControllerRequestNumPagesRequest
1214 {
1215 #[inline(always)]
1216 fn new_empty() -> Self {
1217 Self { requested_num_pages: fidl::new_empty!(u32, D) }
1218 }
1219
1220 #[inline]
1221 unsafe fn decode(
1222 &mut self,
1223 decoder: &mut fidl::encoding::Decoder<'_, D>,
1224 offset: usize,
1225 _depth: fidl::encoding::Depth,
1226 ) -> fidl::Result<()> {
1227 decoder.debug_check_bounds::<Self>(offset);
1228 let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
1229 unsafe {
1232 std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 4);
1233 }
1234 Ok(())
1235 }
1236 }
1237
1238 impl fidl::encoding::ValueTypeMarker for HostVsockAcceptorAcceptRequest {
1239 type Borrowed<'a> = &'a Self;
1240 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1241 value
1242 }
1243 }
1244
1245 unsafe impl fidl::encoding::TypeMarker for HostVsockAcceptorAcceptRequest {
1246 type Owned = Self;
1247
1248 #[inline(always)]
1249 fn inline_align(_context: fidl::encoding::Context) -> usize {
1250 4
1251 }
1252
1253 #[inline(always)]
1254 fn inline_size(_context: fidl::encoding::Context) -> usize {
1255 12
1256 }
1257 #[inline(always)]
1258 fn encode_is_copy() -> bool {
1259 true
1260 }
1261
1262 #[inline(always)]
1263 fn decode_is_copy() -> bool {
1264 true
1265 }
1266 }
1267
1268 unsafe impl<D: fidl::encoding::ResourceDialect>
1269 fidl::encoding::Encode<HostVsockAcceptorAcceptRequest, D>
1270 for &HostVsockAcceptorAcceptRequest
1271 {
1272 #[inline]
1273 unsafe fn encode(
1274 self,
1275 encoder: &mut fidl::encoding::Encoder<'_, D>,
1276 offset: usize,
1277 _depth: fidl::encoding::Depth,
1278 ) -> fidl::Result<()> {
1279 encoder.debug_check_bounds::<HostVsockAcceptorAcceptRequest>(offset);
1280 unsafe {
1281 let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
1283 (buf_ptr as *mut HostVsockAcceptorAcceptRequest)
1284 .write_unaligned((self as *const HostVsockAcceptorAcceptRequest).read());
1285 }
1288 Ok(())
1289 }
1290 }
1291 unsafe impl<
1292 D: fidl::encoding::ResourceDialect,
1293 T0: fidl::encoding::Encode<u32, D>,
1294 T1: fidl::encoding::Encode<u32, D>,
1295 T2: fidl::encoding::Encode<u32, D>,
1296 > fidl::encoding::Encode<HostVsockAcceptorAcceptRequest, D> for (T0, T1, T2)
1297 {
1298 #[inline]
1299 unsafe fn encode(
1300 self,
1301 encoder: &mut fidl::encoding::Encoder<'_, D>,
1302 offset: usize,
1303 depth: fidl::encoding::Depth,
1304 ) -> fidl::Result<()> {
1305 encoder.debug_check_bounds::<HostVsockAcceptorAcceptRequest>(offset);
1306 self.0.encode(encoder, offset + 0, depth)?;
1310 self.1.encode(encoder, offset + 4, depth)?;
1311 self.2.encode(encoder, offset + 8, depth)?;
1312 Ok(())
1313 }
1314 }
1315
1316 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1317 for HostVsockAcceptorAcceptRequest
1318 {
1319 #[inline(always)]
1320 fn new_empty() -> Self {
1321 Self {
1322 src_cid: fidl::new_empty!(u32, D),
1323 src_port: fidl::new_empty!(u32, D),
1324 port: fidl::new_empty!(u32, D),
1325 }
1326 }
1327
1328 #[inline]
1329 unsafe fn decode(
1330 &mut self,
1331 decoder: &mut fidl::encoding::Decoder<'_, D>,
1332 offset: usize,
1333 _depth: fidl::encoding::Depth,
1334 ) -> fidl::Result<()> {
1335 decoder.debug_check_bounds::<Self>(offset);
1336 let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
1337 unsafe {
1340 std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 12);
1341 }
1342 Ok(())
1343 }
1344 }
1345
1346 impl fidl::encoding::ValueTypeMarker for HostVsockEndpointConnectRequest {
1347 type Borrowed<'a> = &'a Self;
1348 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1349 value
1350 }
1351 }
1352
1353 unsafe impl fidl::encoding::TypeMarker for HostVsockEndpointConnectRequest {
1354 type Owned = Self;
1355
1356 #[inline(always)]
1357 fn inline_align(_context: fidl::encoding::Context) -> usize {
1358 4
1359 }
1360
1361 #[inline(always)]
1362 fn inline_size(_context: fidl::encoding::Context) -> usize {
1363 4
1364 }
1365 #[inline(always)]
1366 fn encode_is_copy() -> bool {
1367 true
1368 }
1369
1370 #[inline(always)]
1371 fn decode_is_copy() -> bool {
1372 true
1373 }
1374 }
1375
1376 unsafe impl<D: fidl::encoding::ResourceDialect>
1377 fidl::encoding::Encode<HostVsockEndpointConnectRequest, D>
1378 for &HostVsockEndpointConnectRequest
1379 {
1380 #[inline]
1381 unsafe fn encode(
1382 self,
1383 encoder: &mut fidl::encoding::Encoder<'_, D>,
1384 offset: usize,
1385 _depth: fidl::encoding::Depth,
1386 ) -> fidl::Result<()> {
1387 encoder.debug_check_bounds::<HostVsockEndpointConnectRequest>(offset);
1388 unsafe {
1389 let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
1391 (buf_ptr as *mut HostVsockEndpointConnectRequest)
1392 .write_unaligned((self as *const HostVsockEndpointConnectRequest).read());
1393 }
1396 Ok(())
1397 }
1398 }
1399 unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<u32, D>>
1400 fidl::encoding::Encode<HostVsockEndpointConnectRequest, D> for (T0,)
1401 {
1402 #[inline]
1403 unsafe fn encode(
1404 self,
1405 encoder: &mut fidl::encoding::Encoder<'_, D>,
1406 offset: usize,
1407 depth: fidl::encoding::Depth,
1408 ) -> fidl::Result<()> {
1409 encoder.debug_check_bounds::<HostVsockEndpointConnectRequest>(offset);
1410 self.0.encode(encoder, offset + 0, depth)?;
1414 Ok(())
1415 }
1416 }
1417
1418 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1419 for HostVsockEndpointConnectRequest
1420 {
1421 #[inline(always)]
1422 fn new_empty() -> Self {
1423 Self { guest_port: fidl::new_empty!(u32, D) }
1424 }
1425
1426 #[inline]
1427 unsafe fn decode(
1428 &mut self,
1429 decoder: &mut fidl::encoding::Decoder<'_, D>,
1430 offset: usize,
1431 _depth: fidl::encoding::Depth,
1432 ) -> fidl::Result<()> {
1433 decoder.debug_check_bounds::<Self>(offset);
1434 let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
1435 unsafe {
1438 std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 4);
1439 }
1440 Ok(())
1441 }
1442 }
1443
1444 impl fidl::encoding::ValueTypeMarker for LinuxManagerOnGuestInfoChangedRequest {
1445 type Borrowed<'a> = &'a Self;
1446 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1447 value
1448 }
1449 }
1450
1451 unsafe impl fidl::encoding::TypeMarker for LinuxManagerOnGuestInfoChangedRequest {
1452 type Owned = Self;
1453
1454 #[inline(always)]
1455 fn inline_align(_context: fidl::encoding::Context) -> usize {
1456 8
1457 }
1458
1459 #[inline(always)]
1460 fn inline_size(_context: fidl::encoding::Context) -> usize {
1461 32
1462 }
1463 }
1464
1465 unsafe impl<D: fidl::encoding::ResourceDialect>
1466 fidl::encoding::Encode<LinuxManagerOnGuestInfoChangedRequest, D>
1467 for &LinuxManagerOnGuestInfoChangedRequest
1468 {
1469 #[inline]
1470 unsafe fn encode(
1471 self,
1472 encoder: &mut fidl::encoding::Encoder<'_, D>,
1473 offset: usize,
1474 _depth: fidl::encoding::Depth,
1475 ) -> fidl::Result<()> {
1476 encoder.debug_check_bounds::<LinuxManagerOnGuestInfoChangedRequest>(offset);
1477 fidl::encoding::Encode::<LinuxManagerOnGuestInfoChangedRequest, D>::encode(
1479 (
1480 <fidl::encoding::UnboundedString as fidl::encoding::ValueTypeMarker>::borrow(
1481 &self.label,
1482 ),
1483 <LinuxGuestInfo as fidl::encoding::ValueTypeMarker>::borrow(&self.info),
1484 ),
1485 encoder,
1486 offset,
1487 _depth,
1488 )
1489 }
1490 }
1491 unsafe impl<
1492 D: fidl::encoding::ResourceDialect,
1493 T0: fidl::encoding::Encode<fidl::encoding::UnboundedString, D>,
1494 T1: fidl::encoding::Encode<LinuxGuestInfo, D>,
1495 > fidl::encoding::Encode<LinuxManagerOnGuestInfoChangedRequest, D> for (T0, T1)
1496 {
1497 #[inline]
1498 unsafe fn encode(
1499 self,
1500 encoder: &mut fidl::encoding::Encoder<'_, D>,
1501 offset: usize,
1502 depth: fidl::encoding::Depth,
1503 ) -> fidl::Result<()> {
1504 encoder.debug_check_bounds::<LinuxManagerOnGuestInfoChangedRequest>(offset);
1505 self.0.encode(encoder, offset + 0, depth)?;
1509 self.1.encode(encoder, offset + 16, depth)?;
1510 Ok(())
1511 }
1512 }
1513
1514 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1515 for LinuxManagerOnGuestInfoChangedRequest
1516 {
1517 #[inline(always)]
1518 fn new_empty() -> Self {
1519 Self {
1520 label: fidl::new_empty!(fidl::encoding::UnboundedString, D),
1521 info: fidl::new_empty!(LinuxGuestInfo, D),
1522 }
1523 }
1524
1525 #[inline]
1526 unsafe fn decode(
1527 &mut self,
1528 decoder: &mut fidl::encoding::Decoder<'_, D>,
1529 offset: usize,
1530 _depth: fidl::encoding::Depth,
1531 ) -> fidl::Result<()> {
1532 decoder.debug_check_bounds::<Self>(offset);
1533 fidl::decode!(
1535 fidl::encoding::UnboundedString,
1536 D,
1537 &mut self.label,
1538 decoder,
1539 offset + 0,
1540 _depth
1541 )?;
1542 fidl::decode!(LinuxGuestInfo, D, &mut self.info, decoder, offset + 16, _depth)?;
1543 Ok(())
1544 }
1545 }
1546
1547 impl fidl::encoding::ValueTypeMarker for LinuxManagerStartAndGetLinuxGuestInfoRequest {
1548 type Borrowed<'a> = &'a Self;
1549 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1550 value
1551 }
1552 }
1553
1554 unsafe impl fidl::encoding::TypeMarker for LinuxManagerStartAndGetLinuxGuestInfoRequest {
1555 type Owned = Self;
1556
1557 #[inline(always)]
1558 fn inline_align(_context: fidl::encoding::Context) -> usize {
1559 8
1560 }
1561
1562 #[inline(always)]
1563 fn inline_size(_context: fidl::encoding::Context) -> usize {
1564 16
1565 }
1566 }
1567
1568 unsafe impl<D: fidl::encoding::ResourceDialect>
1569 fidl::encoding::Encode<LinuxManagerStartAndGetLinuxGuestInfoRequest, D>
1570 for &LinuxManagerStartAndGetLinuxGuestInfoRequest
1571 {
1572 #[inline]
1573 unsafe fn encode(
1574 self,
1575 encoder: &mut fidl::encoding::Encoder<'_, D>,
1576 offset: usize,
1577 _depth: fidl::encoding::Depth,
1578 ) -> fidl::Result<()> {
1579 encoder.debug_check_bounds::<LinuxManagerStartAndGetLinuxGuestInfoRequest>(offset);
1580 fidl::encoding::Encode::<LinuxManagerStartAndGetLinuxGuestInfoRequest, D>::encode(
1582 (<fidl::encoding::UnboundedString as fidl::encoding::ValueTypeMarker>::borrow(
1583 &self.label,
1584 ),),
1585 encoder,
1586 offset,
1587 _depth,
1588 )
1589 }
1590 }
1591 unsafe impl<
1592 D: fidl::encoding::ResourceDialect,
1593 T0: fidl::encoding::Encode<fidl::encoding::UnboundedString, D>,
1594 > fidl::encoding::Encode<LinuxManagerStartAndGetLinuxGuestInfoRequest, D> for (T0,)
1595 {
1596 #[inline]
1597 unsafe fn encode(
1598 self,
1599 encoder: &mut fidl::encoding::Encoder<'_, D>,
1600 offset: usize,
1601 depth: fidl::encoding::Depth,
1602 ) -> fidl::Result<()> {
1603 encoder.debug_check_bounds::<LinuxManagerStartAndGetLinuxGuestInfoRequest>(offset);
1604 self.0.encode(encoder, offset + 0, depth)?;
1608 Ok(())
1609 }
1610 }
1611
1612 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1613 for LinuxManagerStartAndGetLinuxGuestInfoRequest
1614 {
1615 #[inline(always)]
1616 fn new_empty() -> Self {
1617 Self { label: fidl::new_empty!(fidl::encoding::UnboundedString, D) }
1618 }
1619
1620 #[inline]
1621 unsafe fn decode(
1622 &mut self,
1623 decoder: &mut fidl::encoding::Decoder<'_, D>,
1624 offset: usize,
1625 _depth: fidl::encoding::Depth,
1626 ) -> fidl::Result<()> {
1627 decoder.debug_check_bounds::<Self>(offset);
1628 fidl::decode!(
1630 fidl::encoding::UnboundedString,
1631 D,
1632 &mut self.label,
1633 decoder,
1634 offset + 0,
1635 _depth
1636 )?;
1637 Ok(())
1638 }
1639 }
1640
1641 impl fidl::encoding::ValueTypeMarker for LinuxManagerStartAndGetLinuxGuestInfoResponse {
1642 type Borrowed<'a> = &'a Self;
1643 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1644 value
1645 }
1646 }
1647
1648 unsafe impl fidl::encoding::TypeMarker for LinuxManagerStartAndGetLinuxGuestInfoResponse {
1649 type Owned = Self;
1650
1651 #[inline(always)]
1652 fn inline_align(_context: fidl::encoding::Context) -> usize {
1653 8
1654 }
1655
1656 #[inline(always)]
1657 fn inline_size(_context: fidl::encoding::Context) -> usize {
1658 16
1659 }
1660 }
1661
1662 unsafe impl<D: fidl::encoding::ResourceDialect>
1663 fidl::encoding::Encode<LinuxManagerStartAndGetLinuxGuestInfoResponse, D>
1664 for &LinuxManagerStartAndGetLinuxGuestInfoResponse
1665 {
1666 #[inline]
1667 unsafe fn encode(
1668 self,
1669 encoder: &mut fidl::encoding::Encoder<'_, D>,
1670 offset: usize,
1671 _depth: fidl::encoding::Depth,
1672 ) -> fidl::Result<()> {
1673 encoder.debug_check_bounds::<LinuxManagerStartAndGetLinuxGuestInfoResponse>(offset);
1674 fidl::encoding::Encode::<LinuxManagerStartAndGetLinuxGuestInfoResponse, D>::encode(
1676 (<LinuxGuestInfo as fidl::encoding::ValueTypeMarker>::borrow(&self.info),),
1677 encoder,
1678 offset,
1679 _depth,
1680 )
1681 }
1682 }
1683 unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<LinuxGuestInfo, D>>
1684 fidl::encoding::Encode<LinuxManagerStartAndGetLinuxGuestInfoResponse, D> for (T0,)
1685 {
1686 #[inline]
1687 unsafe fn encode(
1688 self,
1689 encoder: &mut fidl::encoding::Encoder<'_, D>,
1690 offset: usize,
1691 depth: fidl::encoding::Depth,
1692 ) -> fidl::Result<()> {
1693 encoder.debug_check_bounds::<LinuxManagerStartAndGetLinuxGuestInfoResponse>(offset);
1694 self.0.encode(encoder, offset + 0, depth)?;
1698 Ok(())
1699 }
1700 }
1701
1702 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1703 for LinuxManagerStartAndGetLinuxGuestInfoResponse
1704 {
1705 #[inline(always)]
1706 fn new_empty() -> Self {
1707 Self { info: fidl::new_empty!(LinuxGuestInfo, D) }
1708 }
1709
1710 #[inline]
1711 unsafe fn decode(
1712 &mut self,
1713 decoder: &mut fidl::encoding::Decoder<'_, D>,
1714 offset: usize,
1715 _depth: fidl::encoding::Depth,
1716 ) -> fidl::Result<()> {
1717 decoder.debug_check_bounds::<Self>(offset);
1718 fidl::decode!(LinuxGuestInfo, D, &mut self.info, decoder, offset + 0, _depth)?;
1720 Ok(())
1721 }
1722 }
1723
1724 impl fidl::encoding::ValueTypeMarker for MagmaDevice {
1725 type Borrowed<'a> = &'a Self;
1726 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1727 value
1728 }
1729 }
1730
1731 unsafe impl fidl::encoding::TypeMarker for MagmaDevice {
1732 type Owned = Self;
1733
1734 #[inline(always)]
1735 fn inline_align(_context: fidl::encoding::Context) -> usize {
1736 8
1737 }
1738
1739 #[inline(always)]
1740 fn inline_size(_context: fidl::encoding::Context) -> usize {
1741 8
1742 }
1743 #[inline(always)]
1744 fn encode_is_copy() -> bool {
1745 true
1746 }
1747
1748 #[inline(always)]
1749 fn decode_is_copy() -> bool {
1750 true
1751 }
1752 }
1753
1754 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<MagmaDevice, D>
1755 for &MagmaDevice
1756 {
1757 #[inline]
1758 unsafe fn encode(
1759 self,
1760 encoder: &mut fidl::encoding::Encoder<'_, D>,
1761 offset: usize,
1762 _depth: fidl::encoding::Depth,
1763 ) -> fidl::Result<()> {
1764 encoder.debug_check_bounds::<MagmaDevice>(offset);
1765 unsafe {
1766 let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
1768 (buf_ptr as *mut MagmaDevice).write_unaligned((self as *const MagmaDevice).read());
1769 }
1772 Ok(())
1773 }
1774 }
1775 unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<u64, D>>
1776 fidl::encoding::Encode<MagmaDevice, D> for (T0,)
1777 {
1778 #[inline]
1779 unsafe fn encode(
1780 self,
1781 encoder: &mut fidl::encoding::Encoder<'_, D>,
1782 offset: usize,
1783 depth: fidl::encoding::Depth,
1784 ) -> fidl::Result<()> {
1785 encoder.debug_check_bounds::<MagmaDevice>(offset);
1786 self.0.encode(encoder, offset + 0, depth)?;
1790 Ok(())
1791 }
1792 }
1793
1794 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for MagmaDevice {
1795 #[inline(always)]
1796 fn new_empty() -> Self {
1797 Self { memory: fidl::new_empty!(u64, D) }
1798 }
1799
1800 #[inline]
1801 unsafe fn decode(
1802 &mut self,
1803 decoder: &mut fidl::encoding::Decoder<'_, D>,
1804 offset: usize,
1805 _depth: fidl::encoding::Depth,
1806 ) -> fidl::Result<()> {
1807 decoder.debug_check_bounds::<Self>(offset);
1808 let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
1809 unsafe {
1812 std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 8);
1813 }
1814 Ok(())
1815 }
1816 }
1817
1818 impl fidl::encoding::ValueTypeMarker for MemControllerGetMemSizeResponse {
1819 type Borrowed<'a> = &'a Self;
1820 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1821 value
1822 }
1823 }
1824
1825 unsafe impl fidl::encoding::TypeMarker for MemControllerGetMemSizeResponse {
1826 type Owned = Self;
1827
1828 #[inline(always)]
1829 fn inline_align(_context: fidl::encoding::Context) -> usize {
1830 8
1831 }
1832
1833 #[inline(always)]
1834 fn inline_size(_context: fidl::encoding::Context) -> usize {
1835 40
1836 }
1837 #[inline(always)]
1838 fn encode_is_copy() -> bool {
1839 true
1840 }
1841
1842 #[inline(always)]
1843 fn decode_is_copy() -> bool {
1844 true
1845 }
1846 }
1847
1848 unsafe impl<D: fidl::encoding::ResourceDialect>
1849 fidl::encoding::Encode<MemControllerGetMemSizeResponse, D>
1850 for &MemControllerGetMemSizeResponse
1851 {
1852 #[inline]
1853 unsafe fn encode(
1854 self,
1855 encoder: &mut fidl::encoding::Encoder<'_, D>,
1856 offset: usize,
1857 _depth: fidl::encoding::Depth,
1858 ) -> fidl::Result<()> {
1859 encoder.debug_check_bounds::<MemControllerGetMemSizeResponse>(offset);
1860 unsafe {
1861 let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
1863 (buf_ptr as *mut MemControllerGetMemSizeResponse)
1864 .write_unaligned((self as *const MemControllerGetMemSizeResponse).read());
1865 }
1868 Ok(())
1869 }
1870 }
1871 unsafe impl<
1872 D: fidl::encoding::ResourceDialect,
1873 T0: fidl::encoding::Encode<u64, D>,
1874 T1: fidl::encoding::Encode<u64, D>,
1875 T2: fidl::encoding::Encode<u64, D>,
1876 T3: fidl::encoding::Encode<u64, D>,
1877 T4: fidl::encoding::Encode<u64, D>,
1878 > fidl::encoding::Encode<MemControllerGetMemSizeResponse, D> for (T0, T1, T2, T3, T4)
1879 {
1880 #[inline]
1881 unsafe fn encode(
1882 self,
1883 encoder: &mut fidl::encoding::Encoder<'_, D>,
1884 offset: usize,
1885 depth: fidl::encoding::Depth,
1886 ) -> fidl::Result<()> {
1887 encoder.debug_check_bounds::<MemControllerGetMemSizeResponse>(offset);
1888 self.0.encode(encoder, offset + 0, depth)?;
1892 self.1.encode(encoder, offset + 8, depth)?;
1893 self.2.encode(encoder, offset + 16, depth)?;
1894 self.3.encode(encoder, offset + 24, depth)?;
1895 self.4.encode(encoder, offset + 32, depth)?;
1896 Ok(())
1897 }
1898 }
1899
1900 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1901 for MemControllerGetMemSizeResponse
1902 {
1903 #[inline(always)]
1904 fn new_empty() -> Self {
1905 Self {
1906 block_size: fidl::new_empty!(u64, D),
1907 region_size: fidl::new_empty!(u64, D),
1908 usable_region_size: fidl::new_empty!(u64, D),
1909 plugged_size: fidl::new_empty!(u64, D),
1910 requested_size: fidl::new_empty!(u64, D),
1911 }
1912 }
1913
1914 #[inline]
1915 unsafe fn decode(
1916 &mut self,
1917 decoder: &mut fidl::encoding::Decoder<'_, D>,
1918 offset: usize,
1919 _depth: fidl::encoding::Depth,
1920 ) -> fidl::Result<()> {
1921 decoder.debug_check_bounds::<Self>(offset);
1922 let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
1923 unsafe {
1926 std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 40);
1927 }
1928 Ok(())
1929 }
1930 }
1931
1932 impl fidl::encoding::ValueTypeMarker for MemControllerRequestSizeRequest {
1933 type Borrowed<'a> = &'a Self;
1934 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1935 value
1936 }
1937 }
1938
1939 unsafe impl fidl::encoding::TypeMarker for MemControllerRequestSizeRequest {
1940 type Owned = Self;
1941
1942 #[inline(always)]
1943 fn inline_align(_context: fidl::encoding::Context) -> usize {
1944 8
1945 }
1946
1947 #[inline(always)]
1948 fn inline_size(_context: fidl::encoding::Context) -> usize {
1949 8
1950 }
1951 #[inline(always)]
1952 fn encode_is_copy() -> bool {
1953 true
1954 }
1955
1956 #[inline(always)]
1957 fn decode_is_copy() -> bool {
1958 true
1959 }
1960 }
1961
1962 unsafe impl<D: fidl::encoding::ResourceDialect>
1963 fidl::encoding::Encode<MemControllerRequestSizeRequest, D>
1964 for &MemControllerRequestSizeRequest
1965 {
1966 #[inline]
1967 unsafe fn encode(
1968 self,
1969 encoder: &mut fidl::encoding::Encoder<'_, D>,
1970 offset: usize,
1971 _depth: fidl::encoding::Depth,
1972 ) -> fidl::Result<()> {
1973 encoder.debug_check_bounds::<MemControllerRequestSizeRequest>(offset);
1974 unsafe {
1975 let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
1977 (buf_ptr as *mut MemControllerRequestSizeRequest)
1978 .write_unaligned((self as *const MemControllerRequestSizeRequest).read());
1979 }
1982 Ok(())
1983 }
1984 }
1985 unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<u64, D>>
1986 fidl::encoding::Encode<MemControllerRequestSizeRequest, D> for (T0,)
1987 {
1988 #[inline]
1989 unsafe fn encode(
1990 self,
1991 encoder: &mut fidl::encoding::Encoder<'_, D>,
1992 offset: usize,
1993 depth: fidl::encoding::Depth,
1994 ) -> fidl::Result<()> {
1995 encoder.debug_check_bounds::<MemControllerRequestSizeRequest>(offset);
1996 self.0.encode(encoder, offset + 0, depth)?;
2000 Ok(())
2001 }
2002 }
2003
2004 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2005 for MemControllerRequestSizeRequest
2006 {
2007 #[inline(always)]
2008 fn new_empty() -> Self {
2009 Self { requested_size: fidl::new_empty!(u64, D) }
2010 }
2011
2012 #[inline]
2013 unsafe fn decode(
2014 &mut self,
2015 decoder: &mut fidl::encoding::Decoder<'_, D>,
2016 offset: usize,
2017 _depth: fidl::encoding::Depth,
2018 ) -> fidl::Result<()> {
2019 decoder.debug_check_bounds::<Self>(offset);
2020 let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
2021 unsafe {
2024 std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 8);
2025 }
2026 Ok(())
2027 }
2028 }
2029
2030 impl fidl::encoding::ValueTypeMarker for MemStat {
2031 type Borrowed<'a> = &'a Self;
2032 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2033 value
2034 }
2035 }
2036
2037 unsafe impl fidl::encoding::TypeMarker for MemStat {
2038 type Owned = Self;
2039
2040 #[inline(always)]
2041 fn inline_align(_context: fidl::encoding::Context) -> usize {
2042 8
2043 }
2044
2045 #[inline(always)]
2046 fn inline_size(_context: fidl::encoding::Context) -> usize {
2047 16
2048 }
2049 }
2050
2051 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<MemStat, D> for &MemStat {
2052 #[inline]
2053 unsafe fn encode(
2054 self,
2055 encoder: &mut fidl::encoding::Encoder<'_, D>,
2056 offset: usize,
2057 _depth: fidl::encoding::Depth,
2058 ) -> fidl::Result<()> {
2059 encoder.debug_check_bounds::<MemStat>(offset);
2060 unsafe {
2061 let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
2063 (buf_ptr as *mut MemStat).write_unaligned((self as *const MemStat).read());
2064 let padding_ptr = buf_ptr.offset(0) as *mut u64;
2067 let padding_mask = 0xffffffffffff0000u64;
2068 padding_ptr.write_unaligned(padding_ptr.read_unaligned() & !padding_mask);
2069 }
2070 Ok(())
2071 }
2072 }
2073 unsafe impl<
2074 D: fidl::encoding::ResourceDialect,
2075 T0: fidl::encoding::Encode<u16, D>,
2076 T1: fidl::encoding::Encode<u64, D>,
2077 > fidl::encoding::Encode<MemStat, D> for (T0, T1)
2078 {
2079 #[inline]
2080 unsafe fn encode(
2081 self,
2082 encoder: &mut fidl::encoding::Encoder<'_, D>,
2083 offset: usize,
2084 depth: fidl::encoding::Depth,
2085 ) -> fidl::Result<()> {
2086 encoder.debug_check_bounds::<MemStat>(offset);
2087 unsafe {
2090 let ptr = encoder.buf.as_mut_ptr().add(offset).offset(0);
2091 (ptr as *mut u64).write_unaligned(0);
2092 }
2093 self.0.encode(encoder, offset + 0, depth)?;
2095 self.1.encode(encoder, offset + 8, depth)?;
2096 Ok(())
2097 }
2098 }
2099
2100 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for MemStat {
2101 #[inline(always)]
2102 fn new_empty() -> Self {
2103 Self { tag: fidl::new_empty!(u16, D), val: fidl::new_empty!(u64, D) }
2104 }
2105
2106 #[inline]
2107 unsafe fn decode(
2108 &mut self,
2109 decoder: &mut fidl::encoding::Decoder<'_, D>,
2110 offset: usize,
2111 _depth: fidl::encoding::Depth,
2112 ) -> fidl::Result<()> {
2113 decoder.debug_check_bounds::<Self>(offset);
2114 let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
2115 let ptr = unsafe { buf_ptr.offset(0) };
2117 let padval = unsafe { (ptr as *const u64).read_unaligned() };
2118 let mask = 0xffffffffffff0000u64;
2119 let maskedval = padval & mask;
2120 if maskedval != 0 {
2121 return Err(fidl::Error::NonZeroPadding {
2122 padding_start: offset + 0 + ((mask as u64).trailing_zeros() / 8) as usize,
2123 });
2124 }
2125 unsafe {
2127 std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 16);
2128 }
2129 Ok(())
2130 }
2131 }
2132
2133 impl fidl::encoding::ValueTypeMarker for NetSpec {
2134 type Borrowed<'a> = &'a Self;
2135 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2136 value
2137 }
2138 }
2139
2140 unsafe impl fidl::encoding::TypeMarker for NetSpec {
2141 type Owned = Self;
2142
2143 #[inline(always)]
2144 fn inline_align(_context: fidl::encoding::Context) -> usize {
2145 1
2146 }
2147
2148 #[inline(always)]
2149 fn inline_size(_context: fidl::encoding::Context) -> usize {
2150 7
2151 }
2152 }
2153
2154 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<NetSpec, D> for &NetSpec {
2155 #[inline]
2156 unsafe fn encode(
2157 self,
2158 encoder: &mut fidl::encoding::Encoder<'_, D>,
2159 offset: usize,
2160 _depth: fidl::encoding::Depth,
2161 ) -> fidl::Result<()> {
2162 encoder.debug_check_bounds::<NetSpec>(offset);
2163 fidl::encoding::Encode::<NetSpec, D>::encode(
2165 (
2166 <fidl_fuchsia_net__common::MacAddress as fidl::encoding::ValueTypeMarker>::borrow(&self.mac_address),
2167 <bool as fidl::encoding::ValueTypeMarker>::borrow(&self.enable_bridge),
2168 ),
2169 encoder, offset, _depth
2170 )
2171 }
2172 }
2173 unsafe impl<
2174 D: fidl::encoding::ResourceDialect,
2175 T0: fidl::encoding::Encode<fidl_fuchsia_net__common::MacAddress, D>,
2176 T1: fidl::encoding::Encode<bool, D>,
2177 > fidl::encoding::Encode<NetSpec, D> for (T0, T1)
2178 {
2179 #[inline]
2180 unsafe fn encode(
2181 self,
2182 encoder: &mut fidl::encoding::Encoder<'_, D>,
2183 offset: usize,
2184 depth: fidl::encoding::Depth,
2185 ) -> fidl::Result<()> {
2186 encoder.debug_check_bounds::<NetSpec>(offset);
2187 self.0.encode(encoder, offset + 0, depth)?;
2191 self.1.encode(encoder, offset + 6, depth)?;
2192 Ok(())
2193 }
2194 }
2195
2196 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for NetSpec {
2197 #[inline(always)]
2198 fn new_empty() -> Self {
2199 Self {
2200 mac_address: fidl::new_empty!(fidl_fuchsia_net__common::MacAddress, D),
2201 enable_bridge: fidl::new_empty!(bool, D),
2202 }
2203 }
2204
2205 #[inline]
2206 unsafe fn decode(
2207 &mut self,
2208 decoder: &mut fidl::encoding::Decoder<'_, D>,
2209 offset: usize,
2210 _depth: fidl::encoding::Depth,
2211 ) -> fidl::Result<()> {
2212 decoder.debug_check_bounds::<Self>(offset);
2213 fidl::decode!(
2215 fidl_fuchsia_net__common::MacAddress,
2216 D,
2217 &mut self.mac_address,
2218 decoder,
2219 offset + 0,
2220 _depth
2221 )?;
2222 fidl::decode!(bool, D, &mut self.enable_bridge, decoder, offset + 6, _depth)?;
2223 Ok(())
2224 }
2225 }
2226
2227 impl GuestDescriptor {
2228 #[inline(always)]
2229 fn max_ordinal_present(&self) -> u64 {
2230 if let Some(_) = self.mem {
2231 return 12;
2232 }
2233 if let Some(_) = self.networks {
2234 return 11;
2235 }
2236 if let Some(_) = self.sound {
2237 return 10;
2238 }
2239 if let Some(_) = self.vsock {
2240 return 9;
2241 }
2242 if let Some(_) = self.rng {
2243 return 8;
2244 }
2245 if let Some(_) = self.gpu {
2246 return 7;
2247 }
2248 if let Some(_) = self.console {
2249 return 6;
2250 }
2251 if let Some(_) = self.balloon {
2252 return 5;
2253 }
2254 if let Some(_) = self.guest_memory {
2255 return 2;
2256 }
2257 if let Some(_) = self.num_cpus {
2258 return 1;
2259 }
2260 0
2261 }
2262 }
2263
2264 impl fidl::encoding::ValueTypeMarker for GuestDescriptor {
2265 type Borrowed<'a> = &'a Self;
2266 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2267 value
2268 }
2269 }
2270
2271 unsafe impl fidl::encoding::TypeMarker for GuestDescriptor {
2272 type Owned = Self;
2273
2274 #[inline(always)]
2275 fn inline_align(_context: fidl::encoding::Context) -> usize {
2276 8
2277 }
2278
2279 #[inline(always)]
2280 fn inline_size(_context: fidl::encoding::Context) -> usize {
2281 16
2282 }
2283 }
2284
2285 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<GuestDescriptor, D>
2286 for &GuestDescriptor
2287 {
2288 unsafe fn encode(
2289 self,
2290 encoder: &mut fidl::encoding::Encoder<'_, D>,
2291 offset: usize,
2292 mut depth: fidl::encoding::Depth,
2293 ) -> fidl::Result<()> {
2294 encoder.debug_check_bounds::<GuestDescriptor>(offset);
2295 let max_ordinal: u64 = self.max_ordinal_present();
2297 encoder.write_num(max_ordinal, offset);
2298 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
2299 if max_ordinal == 0 {
2301 return Ok(());
2302 }
2303 depth.increment()?;
2304 let envelope_size = 8;
2305 let bytes_len = max_ordinal as usize * envelope_size;
2306 #[allow(unused_variables)]
2307 let offset = encoder.out_of_line_offset(bytes_len);
2308 let mut _prev_end_offset: usize = 0;
2309 if 1 > max_ordinal {
2310 return Ok(());
2311 }
2312
2313 let cur_offset: usize = (1 - 1) * envelope_size;
2316
2317 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2319
2320 fidl::encoding::encode_in_envelope_optional::<u8, D>(
2325 self.num_cpus.as_ref().map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
2326 encoder,
2327 offset + cur_offset,
2328 depth,
2329 )?;
2330
2331 _prev_end_offset = cur_offset + envelope_size;
2332 if 2 > max_ordinal {
2333 return Ok(());
2334 }
2335
2336 let cur_offset: usize = (2 - 1) * envelope_size;
2339
2340 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2342
2343 fidl::encoding::encode_in_envelope_optional::<u64, D>(
2348 self.guest_memory.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
2349 encoder,
2350 offset + cur_offset,
2351 depth,
2352 )?;
2353
2354 _prev_end_offset = cur_offset + envelope_size;
2355 if 5 > max_ordinal {
2356 return Ok(());
2357 }
2358
2359 let cur_offset: usize = (5 - 1) * envelope_size;
2362
2363 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2365
2366 fidl::encoding::encode_in_envelope_optional::<bool, D>(
2371 self.balloon.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
2372 encoder,
2373 offset + cur_offset,
2374 depth,
2375 )?;
2376
2377 _prev_end_offset = cur_offset + envelope_size;
2378 if 6 > max_ordinal {
2379 return Ok(());
2380 }
2381
2382 let cur_offset: usize = (6 - 1) * envelope_size;
2385
2386 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2388
2389 fidl::encoding::encode_in_envelope_optional::<bool, D>(
2394 self.console.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
2395 encoder,
2396 offset + cur_offset,
2397 depth,
2398 )?;
2399
2400 _prev_end_offset = cur_offset + envelope_size;
2401 if 7 > max_ordinal {
2402 return Ok(());
2403 }
2404
2405 let cur_offset: usize = (7 - 1) * envelope_size;
2408
2409 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2411
2412 fidl::encoding::encode_in_envelope_optional::<bool, D>(
2417 self.gpu.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
2418 encoder,
2419 offset + cur_offset,
2420 depth,
2421 )?;
2422
2423 _prev_end_offset = cur_offset + envelope_size;
2424 if 8 > max_ordinal {
2425 return Ok(());
2426 }
2427
2428 let cur_offset: usize = (8 - 1) * envelope_size;
2431
2432 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2434
2435 fidl::encoding::encode_in_envelope_optional::<bool, D>(
2440 self.rng.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
2441 encoder,
2442 offset + cur_offset,
2443 depth,
2444 )?;
2445
2446 _prev_end_offset = cur_offset + envelope_size;
2447 if 9 > max_ordinal {
2448 return Ok(());
2449 }
2450
2451 let cur_offset: usize = (9 - 1) * envelope_size;
2454
2455 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2457
2458 fidl::encoding::encode_in_envelope_optional::<bool, D>(
2463 self.vsock.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
2464 encoder,
2465 offset + cur_offset,
2466 depth,
2467 )?;
2468
2469 _prev_end_offset = cur_offset + envelope_size;
2470 if 10 > max_ordinal {
2471 return Ok(());
2472 }
2473
2474 let cur_offset: usize = (10 - 1) * envelope_size;
2477
2478 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2480
2481 fidl::encoding::encode_in_envelope_optional::<bool, D>(
2486 self.sound.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
2487 encoder,
2488 offset + cur_offset,
2489 depth,
2490 )?;
2491
2492 _prev_end_offset = cur_offset + envelope_size;
2493 if 11 > max_ordinal {
2494 return Ok(());
2495 }
2496
2497 let cur_offset: usize = (11 - 1) * envelope_size;
2500
2501 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2503
2504 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<NetSpec, 32>, D>(
2509 self.networks.as_ref().map(<fidl::encoding::Vector<NetSpec, 32> as fidl::encoding::ValueTypeMarker>::borrow),
2510 encoder, offset + cur_offset, depth
2511 )?;
2512
2513 _prev_end_offset = cur_offset + envelope_size;
2514 if 12 > max_ordinal {
2515 return Ok(());
2516 }
2517
2518 let cur_offset: usize = (12 - 1) * envelope_size;
2521
2522 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2524
2525 fidl::encoding::encode_in_envelope_optional::<bool, D>(
2530 self.mem.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
2531 encoder,
2532 offset + cur_offset,
2533 depth,
2534 )?;
2535
2536 _prev_end_offset = cur_offset + envelope_size;
2537
2538 Ok(())
2539 }
2540 }
2541
2542 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for GuestDescriptor {
2543 #[inline(always)]
2544 fn new_empty() -> Self {
2545 Self::default()
2546 }
2547
2548 unsafe fn decode(
2549 &mut self,
2550 decoder: &mut fidl::encoding::Decoder<'_, D>,
2551 offset: usize,
2552 mut depth: fidl::encoding::Depth,
2553 ) -> fidl::Result<()> {
2554 decoder.debug_check_bounds::<Self>(offset);
2555 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
2556 None => return Err(fidl::Error::NotNullable),
2557 Some(len) => len,
2558 };
2559 if len == 0 {
2561 return Ok(());
2562 };
2563 depth.increment()?;
2564 let envelope_size = 8;
2565 let bytes_len = len * envelope_size;
2566 let offset = decoder.out_of_line_offset(bytes_len)?;
2567 let mut _next_ordinal_to_read = 0;
2569 let mut next_offset = offset;
2570 let end_offset = offset + bytes_len;
2571 _next_ordinal_to_read += 1;
2572 if next_offset >= end_offset {
2573 return Ok(());
2574 }
2575
2576 while _next_ordinal_to_read < 1 {
2578 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2579 _next_ordinal_to_read += 1;
2580 next_offset += envelope_size;
2581 }
2582
2583 let next_out_of_line = decoder.next_out_of_line();
2584 let handles_before = decoder.remaining_handles();
2585 if let Some((inlined, num_bytes, num_handles)) =
2586 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2587 {
2588 let member_inline_size =
2589 <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2590 if inlined != (member_inline_size <= 4) {
2591 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2592 }
2593 let inner_offset;
2594 let mut inner_depth = depth.clone();
2595 if inlined {
2596 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2597 inner_offset = next_offset;
2598 } else {
2599 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2600 inner_depth.increment()?;
2601 }
2602 let val_ref = self.num_cpus.get_or_insert_with(|| fidl::new_empty!(u8, D));
2603 fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
2604 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2605 {
2606 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2607 }
2608 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2609 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2610 }
2611 }
2612
2613 next_offset += envelope_size;
2614 _next_ordinal_to_read += 1;
2615 if next_offset >= end_offset {
2616 return Ok(());
2617 }
2618
2619 while _next_ordinal_to_read < 2 {
2621 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2622 _next_ordinal_to_read += 1;
2623 next_offset += envelope_size;
2624 }
2625
2626 let next_out_of_line = decoder.next_out_of_line();
2627 let handles_before = decoder.remaining_handles();
2628 if let Some((inlined, num_bytes, num_handles)) =
2629 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2630 {
2631 let member_inline_size =
2632 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2633 if inlined != (member_inline_size <= 4) {
2634 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2635 }
2636 let inner_offset;
2637 let mut inner_depth = depth.clone();
2638 if inlined {
2639 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2640 inner_offset = next_offset;
2641 } else {
2642 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2643 inner_depth.increment()?;
2644 }
2645 let val_ref = self.guest_memory.get_or_insert_with(|| fidl::new_empty!(u64, D));
2646 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
2647 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2648 {
2649 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2650 }
2651 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2652 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2653 }
2654 }
2655
2656 next_offset += envelope_size;
2657 _next_ordinal_to_read += 1;
2658 if next_offset >= end_offset {
2659 return Ok(());
2660 }
2661
2662 while _next_ordinal_to_read < 5 {
2664 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2665 _next_ordinal_to_read += 1;
2666 next_offset += envelope_size;
2667 }
2668
2669 let next_out_of_line = decoder.next_out_of_line();
2670 let handles_before = decoder.remaining_handles();
2671 if let Some((inlined, num_bytes, num_handles)) =
2672 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2673 {
2674 let member_inline_size =
2675 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2676 if inlined != (member_inline_size <= 4) {
2677 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2678 }
2679 let inner_offset;
2680 let mut inner_depth = depth.clone();
2681 if inlined {
2682 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2683 inner_offset = next_offset;
2684 } else {
2685 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2686 inner_depth.increment()?;
2687 }
2688 let val_ref = self.balloon.get_or_insert_with(|| fidl::new_empty!(bool, D));
2689 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
2690 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2691 {
2692 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2693 }
2694 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2695 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2696 }
2697 }
2698
2699 next_offset += envelope_size;
2700 _next_ordinal_to_read += 1;
2701 if next_offset >= end_offset {
2702 return Ok(());
2703 }
2704
2705 while _next_ordinal_to_read < 6 {
2707 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2708 _next_ordinal_to_read += 1;
2709 next_offset += envelope_size;
2710 }
2711
2712 let next_out_of_line = decoder.next_out_of_line();
2713 let handles_before = decoder.remaining_handles();
2714 if let Some((inlined, num_bytes, num_handles)) =
2715 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2716 {
2717 let member_inline_size =
2718 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2719 if inlined != (member_inline_size <= 4) {
2720 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2721 }
2722 let inner_offset;
2723 let mut inner_depth = depth.clone();
2724 if inlined {
2725 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2726 inner_offset = next_offset;
2727 } else {
2728 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2729 inner_depth.increment()?;
2730 }
2731 let val_ref = self.console.get_or_insert_with(|| fidl::new_empty!(bool, D));
2732 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
2733 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2734 {
2735 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2736 }
2737 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2738 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2739 }
2740 }
2741
2742 next_offset += envelope_size;
2743 _next_ordinal_to_read += 1;
2744 if next_offset >= end_offset {
2745 return Ok(());
2746 }
2747
2748 while _next_ordinal_to_read < 7 {
2750 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2751 _next_ordinal_to_read += 1;
2752 next_offset += envelope_size;
2753 }
2754
2755 let next_out_of_line = decoder.next_out_of_line();
2756 let handles_before = decoder.remaining_handles();
2757 if let Some((inlined, num_bytes, num_handles)) =
2758 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2759 {
2760 let member_inline_size =
2761 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2762 if inlined != (member_inline_size <= 4) {
2763 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2764 }
2765 let inner_offset;
2766 let mut inner_depth = depth.clone();
2767 if inlined {
2768 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2769 inner_offset = next_offset;
2770 } else {
2771 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2772 inner_depth.increment()?;
2773 }
2774 let val_ref = self.gpu.get_or_insert_with(|| fidl::new_empty!(bool, D));
2775 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
2776 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2777 {
2778 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2779 }
2780 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2781 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2782 }
2783 }
2784
2785 next_offset += envelope_size;
2786 _next_ordinal_to_read += 1;
2787 if next_offset >= end_offset {
2788 return Ok(());
2789 }
2790
2791 while _next_ordinal_to_read < 8 {
2793 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2794 _next_ordinal_to_read += 1;
2795 next_offset += envelope_size;
2796 }
2797
2798 let next_out_of_line = decoder.next_out_of_line();
2799 let handles_before = decoder.remaining_handles();
2800 if let Some((inlined, num_bytes, num_handles)) =
2801 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2802 {
2803 let member_inline_size =
2804 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2805 if inlined != (member_inline_size <= 4) {
2806 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2807 }
2808 let inner_offset;
2809 let mut inner_depth = depth.clone();
2810 if inlined {
2811 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2812 inner_offset = next_offset;
2813 } else {
2814 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2815 inner_depth.increment()?;
2816 }
2817 let val_ref = self.rng.get_or_insert_with(|| fidl::new_empty!(bool, D));
2818 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
2819 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2820 {
2821 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2822 }
2823 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2824 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2825 }
2826 }
2827
2828 next_offset += envelope_size;
2829 _next_ordinal_to_read += 1;
2830 if next_offset >= end_offset {
2831 return Ok(());
2832 }
2833
2834 while _next_ordinal_to_read < 9 {
2836 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2837 _next_ordinal_to_read += 1;
2838 next_offset += envelope_size;
2839 }
2840
2841 let next_out_of_line = decoder.next_out_of_line();
2842 let handles_before = decoder.remaining_handles();
2843 if let Some((inlined, num_bytes, num_handles)) =
2844 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2845 {
2846 let member_inline_size =
2847 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2848 if inlined != (member_inline_size <= 4) {
2849 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2850 }
2851 let inner_offset;
2852 let mut inner_depth = depth.clone();
2853 if inlined {
2854 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2855 inner_offset = next_offset;
2856 } else {
2857 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2858 inner_depth.increment()?;
2859 }
2860 let val_ref = self.vsock.get_or_insert_with(|| fidl::new_empty!(bool, D));
2861 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
2862 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2863 {
2864 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2865 }
2866 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2867 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2868 }
2869 }
2870
2871 next_offset += envelope_size;
2872 _next_ordinal_to_read += 1;
2873 if next_offset >= end_offset {
2874 return Ok(());
2875 }
2876
2877 while _next_ordinal_to_read < 10 {
2879 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2880 _next_ordinal_to_read += 1;
2881 next_offset += envelope_size;
2882 }
2883
2884 let next_out_of_line = decoder.next_out_of_line();
2885 let handles_before = decoder.remaining_handles();
2886 if let Some((inlined, num_bytes, num_handles)) =
2887 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2888 {
2889 let member_inline_size =
2890 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2891 if inlined != (member_inline_size <= 4) {
2892 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2893 }
2894 let inner_offset;
2895 let mut inner_depth = depth.clone();
2896 if inlined {
2897 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2898 inner_offset = next_offset;
2899 } else {
2900 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2901 inner_depth.increment()?;
2902 }
2903 let val_ref = self.sound.get_or_insert_with(|| fidl::new_empty!(bool, D));
2904 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
2905 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2906 {
2907 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2908 }
2909 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2910 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2911 }
2912 }
2913
2914 next_offset += envelope_size;
2915 _next_ordinal_to_read += 1;
2916 if next_offset >= end_offset {
2917 return Ok(());
2918 }
2919
2920 while _next_ordinal_to_read < 11 {
2922 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2923 _next_ordinal_to_read += 1;
2924 next_offset += envelope_size;
2925 }
2926
2927 let next_out_of_line = decoder.next_out_of_line();
2928 let handles_before = decoder.remaining_handles();
2929 if let Some((inlined, num_bytes, num_handles)) =
2930 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2931 {
2932 let member_inline_size = <fidl::encoding::Vector<NetSpec, 32> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2933 if inlined != (member_inline_size <= 4) {
2934 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2935 }
2936 let inner_offset;
2937 let mut inner_depth = depth.clone();
2938 if inlined {
2939 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2940 inner_offset = next_offset;
2941 } else {
2942 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2943 inner_depth.increment()?;
2944 }
2945 let val_ref = self.networks.get_or_insert_with(
2946 || fidl::new_empty!(fidl::encoding::Vector<NetSpec, 32>, D),
2947 );
2948 fidl::decode!(fidl::encoding::Vector<NetSpec, 32>, D, val_ref, decoder, inner_offset, inner_depth)?;
2949 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2950 {
2951 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2952 }
2953 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2954 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2955 }
2956 }
2957
2958 next_offset += envelope_size;
2959 _next_ordinal_to_read += 1;
2960 if next_offset >= end_offset {
2961 return Ok(());
2962 }
2963
2964 while _next_ordinal_to_read < 12 {
2966 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2967 _next_ordinal_to_read += 1;
2968 next_offset += envelope_size;
2969 }
2970
2971 let next_out_of_line = decoder.next_out_of_line();
2972 let handles_before = decoder.remaining_handles();
2973 if let Some((inlined, num_bytes, num_handles)) =
2974 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2975 {
2976 let member_inline_size =
2977 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2978 if inlined != (member_inline_size <= 4) {
2979 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2980 }
2981 let inner_offset;
2982 let mut inner_depth = depth.clone();
2983 if inlined {
2984 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2985 inner_offset = next_offset;
2986 } else {
2987 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2988 inner_depth.increment()?;
2989 }
2990 let val_ref = self.mem.get_or_insert_with(|| fidl::new_empty!(bool, D));
2991 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
2992 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2993 {
2994 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2995 }
2996 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2997 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2998 }
2999 }
3000
3001 next_offset += envelope_size;
3002
3003 while next_offset < end_offset {
3005 _next_ordinal_to_read += 1;
3006 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3007 next_offset += envelope_size;
3008 }
3009
3010 Ok(())
3011 }
3012 }
3013
3014 impl GuestInfo {
3015 #[inline(always)]
3016 fn max_ordinal_present(&self) -> u64 {
3017 if let Some(_) = self.detected_problems {
3018 return 5;
3019 }
3020 if let Some(_) = self.stop_error {
3021 return 4;
3022 }
3023 if let Some(_) = self.guest_descriptor {
3024 return 3;
3025 }
3026 if let Some(_) = self.uptime {
3027 return 2;
3028 }
3029 if let Some(_) = self.guest_status {
3030 return 1;
3031 }
3032 0
3033 }
3034 }
3035
3036 impl fidl::encoding::ValueTypeMarker for GuestInfo {
3037 type Borrowed<'a> = &'a Self;
3038 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3039 value
3040 }
3041 }
3042
3043 unsafe impl fidl::encoding::TypeMarker for GuestInfo {
3044 type Owned = Self;
3045
3046 #[inline(always)]
3047 fn inline_align(_context: fidl::encoding::Context) -> usize {
3048 8
3049 }
3050
3051 #[inline(always)]
3052 fn inline_size(_context: fidl::encoding::Context) -> usize {
3053 16
3054 }
3055 }
3056
3057 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<GuestInfo, D>
3058 for &GuestInfo
3059 {
3060 unsafe fn encode(
3061 self,
3062 encoder: &mut fidl::encoding::Encoder<'_, D>,
3063 offset: usize,
3064 mut depth: fidl::encoding::Depth,
3065 ) -> fidl::Result<()> {
3066 encoder.debug_check_bounds::<GuestInfo>(offset);
3067 let max_ordinal: u64 = self.max_ordinal_present();
3069 encoder.write_num(max_ordinal, offset);
3070 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
3071 if max_ordinal == 0 {
3073 return Ok(());
3074 }
3075 depth.increment()?;
3076 let envelope_size = 8;
3077 let bytes_len = max_ordinal as usize * envelope_size;
3078 #[allow(unused_variables)]
3079 let offset = encoder.out_of_line_offset(bytes_len);
3080 let mut _prev_end_offset: usize = 0;
3081 if 1 > max_ordinal {
3082 return Ok(());
3083 }
3084
3085 let cur_offset: usize = (1 - 1) * envelope_size;
3088
3089 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3091
3092 fidl::encoding::encode_in_envelope_optional::<GuestStatus, D>(
3097 self.guest_status
3098 .as_ref()
3099 .map(<GuestStatus as fidl::encoding::ValueTypeMarker>::borrow),
3100 encoder,
3101 offset + cur_offset,
3102 depth,
3103 )?;
3104
3105 _prev_end_offset = cur_offset + envelope_size;
3106 if 2 > max_ordinal {
3107 return Ok(());
3108 }
3109
3110 let cur_offset: usize = (2 - 1) * envelope_size;
3113
3114 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3116
3117 fidl::encoding::encode_in_envelope_optional::<i64, D>(
3122 self.uptime.as_ref().map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
3123 encoder,
3124 offset + cur_offset,
3125 depth,
3126 )?;
3127
3128 _prev_end_offset = cur_offset + envelope_size;
3129 if 3 > max_ordinal {
3130 return Ok(());
3131 }
3132
3133 let cur_offset: usize = (3 - 1) * envelope_size;
3136
3137 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3139
3140 fidl::encoding::encode_in_envelope_optional::<GuestDescriptor, D>(
3145 self.guest_descriptor
3146 .as_ref()
3147 .map(<GuestDescriptor as fidl::encoding::ValueTypeMarker>::borrow),
3148 encoder,
3149 offset + cur_offset,
3150 depth,
3151 )?;
3152
3153 _prev_end_offset = cur_offset + envelope_size;
3154 if 4 > max_ordinal {
3155 return Ok(());
3156 }
3157
3158 let cur_offset: usize = (4 - 1) * envelope_size;
3161
3162 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3164
3165 fidl::encoding::encode_in_envelope_optional::<GuestError, D>(
3170 self.stop_error
3171 .as_ref()
3172 .map(<GuestError as fidl::encoding::ValueTypeMarker>::borrow),
3173 encoder,
3174 offset + cur_offset,
3175 depth,
3176 )?;
3177
3178 _prev_end_offset = cur_offset + envelope_size;
3179 if 5 > max_ordinal {
3180 return Ok(());
3181 }
3182
3183 let cur_offset: usize = (5 - 1) * envelope_size;
3186
3187 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3189
3190 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<fidl::encoding::UnboundedString, 8>, D>(
3195 self.detected_problems.as_ref().map(<fidl::encoding::Vector<fidl::encoding::UnboundedString, 8> as fidl::encoding::ValueTypeMarker>::borrow),
3196 encoder, offset + cur_offset, depth
3197 )?;
3198
3199 _prev_end_offset = cur_offset + envelope_size;
3200
3201 Ok(())
3202 }
3203 }
3204
3205 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for GuestInfo {
3206 #[inline(always)]
3207 fn new_empty() -> Self {
3208 Self::default()
3209 }
3210
3211 unsafe fn decode(
3212 &mut self,
3213 decoder: &mut fidl::encoding::Decoder<'_, D>,
3214 offset: usize,
3215 mut depth: fidl::encoding::Depth,
3216 ) -> fidl::Result<()> {
3217 decoder.debug_check_bounds::<Self>(offset);
3218 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
3219 None => return Err(fidl::Error::NotNullable),
3220 Some(len) => len,
3221 };
3222 if len == 0 {
3224 return Ok(());
3225 };
3226 depth.increment()?;
3227 let envelope_size = 8;
3228 let bytes_len = len * envelope_size;
3229 let offset = decoder.out_of_line_offset(bytes_len)?;
3230 let mut _next_ordinal_to_read = 0;
3232 let mut next_offset = offset;
3233 let end_offset = offset + bytes_len;
3234 _next_ordinal_to_read += 1;
3235 if next_offset >= end_offset {
3236 return Ok(());
3237 }
3238
3239 while _next_ordinal_to_read < 1 {
3241 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3242 _next_ordinal_to_read += 1;
3243 next_offset += envelope_size;
3244 }
3245
3246 let next_out_of_line = decoder.next_out_of_line();
3247 let handles_before = decoder.remaining_handles();
3248 if let Some((inlined, num_bytes, num_handles)) =
3249 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3250 {
3251 let member_inline_size =
3252 <GuestStatus as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3253 if inlined != (member_inline_size <= 4) {
3254 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3255 }
3256 let inner_offset;
3257 let mut inner_depth = depth.clone();
3258 if inlined {
3259 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3260 inner_offset = next_offset;
3261 } else {
3262 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3263 inner_depth.increment()?;
3264 }
3265 let val_ref =
3266 self.guest_status.get_or_insert_with(|| fidl::new_empty!(GuestStatus, D));
3267 fidl::decode!(GuestStatus, D, val_ref, decoder, inner_offset, inner_depth)?;
3268 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3269 {
3270 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3271 }
3272 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3273 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3274 }
3275 }
3276
3277 next_offset += envelope_size;
3278 _next_ordinal_to_read += 1;
3279 if next_offset >= end_offset {
3280 return Ok(());
3281 }
3282
3283 while _next_ordinal_to_read < 2 {
3285 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3286 _next_ordinal_to_read += 1;
3287 next_offset += envelope_size;
3288 }
3289
3290 let next_out_of_line = decoder.next_out_of_line();
3291 let handles_before = decoder.remaining_handles();
3292 if let Some((inlined, num_bytes, num_handles)) =
3293 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3294 {
3295 let member_inline_size =
3296 <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3297 if inlined != (member_inline_size <= 4) {
3298 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3299 }
3300 let inner_offset;
3301 let mut inner_depth = depth.clone();
3302 if inlined {
3303 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3304 inner_offset = next_offset;
3305 } else {
3306 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3307 inner_depth.increment()?;
3308 }
3309 let val_ref = self.uptime.get_or_insert_with(|| fidl::new_empty!(i64, D));
3310 fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
3311 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3312 {
3313 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3314 }
3315 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3316 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3317 }
3318 }
3319
3320 next_offset += envelope_size;
3321 _next_ordinal_to_read += 1;
3322 if next_offset >= end_offset {
3323 return Ok(());
3324 }
3325
3326 while _next_ordinal_to_read < 3 {
3328 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3329 _next_ordinal_to_read += 1;
3330 next_offset += envelope_size;
3331 }
3332
3333 let next_out_of_line = decoder.next_out_of_line();
3334 let handles_before = decoder.remaining_handles();
3335 if let Some((inlined, num_bytes, num_handles)) =
3336 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3337 {
3338 let member_inline_size =
3339 <GuestDescriptor as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3340 if inlined != (member_inline_size <= 4) {
3341 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3342 }
3343 let inner_offset;
3344 let mut inner_depth = depth.clone();
3345 if inlined {
3346 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3347 inner_offset = next_offset;
3348 } else {
3349 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3350 inner_depth.increment()?;
3351 }
3352 let val_ref = self
3353 .guest_descriptor
3354 .get_or_insert_with(|| fidl::new_empty!(GuestDescriptor, D));
3355 fidl::decode!(GuestDescriptor, D, val_ref, decoder, inner_offset, inner_depth)?;
3356 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3357 {
3358 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3359 }
3360 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3361 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3362 }
3363 }
3364
3365 next_offset += envelope_size;
3366 _next_ordinal_to_read += 1;
3367 if next_offset >= end_offset {
3368 return Ok(());
3369 }
3370
3371 while _next_ordinal_to_read < 4 {
3373 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3374 _next_ordinal_to_read += 1;
3375 next_offset += envelope_size;
3376 }
3377
3378 let next_out_of_line = decoder.next_out_of_line();
3379 let handles_before = decoder.remaining_handles();
3380 if let Some((inlined, num_bytes, num_handles)) =
3381 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3382 {
3383 let member_inline_size =
3384 <GuestError as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3385 if inlined != (member_inline_size <= 4) {
3386 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3387 }
3388 let inner_offset;
3389 let mut inner_depth = depth.clone();
3390 if inlined {
3391 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3392 inner_offset = next_offset;
3393 } else {
3394 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3395 inner_depth.increment()?;
3396 }
3397 let val_ref =
3398 self.stop_error.get_or_insert_with(|| fidl::new_empty!(GuestError, D));
3399 fidl::decode!(GuestError, D, val_ref, decoder, inner_offset, inner_depth)?;
3400 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3401 {
3402 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3403 }
3404 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3405 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3406 }
3407 }
3408
3409 next_offset += envelope_size;
3410 _next_ordinal_to_read += 1;
3411 if next_offset >= end_offset {
3412 return Ok(());
3413 }
3414
3415 while _next_ordinal_to_read < 5 {
3417 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3418 _next_ordinal_to_read += 1;
3419 next_offset += envelope_size;
3420 }
3421
3422 let next_out_of_line = decoder.next_out_of_line();
3423 let handles_before = decoder.remaining_handles();
3424 if let Some((inlined, num_bytes, num_handles)) =
3425 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3426 {
3427 let member_inline_size = <fidl::encoding::Vector<fidl::encoding::UnboundedString, 8> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3428 if inlined != (member_inline_size <= 4) {
3429 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3430 }
3431 let inner_offset;
3432 let mut inner_depth = depth.clone();
3433 if inlined {
3434 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3435 inner_offset = next_offset;
3436 } else {
3437 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3438 inner_depth.increment()?;
3439 }
3440 let val_ref =
3441 self.detected_problems.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<fidl::encoding::UnboundedString, 8>, D));
3442 fidl::decode!(fidl::encoding::Vector<fidl::encoding::UnboundedString, 8>, D, val_ref, decoder, inner_offset, inner_depth)?;
3443 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3444 {
3445 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3446 }
3447 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3448 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3449 }
3450 }
3451
3452 next_offset += envelope_size;
3453
3454 while next_offset < end_offset {
3456 _next_ordinal_to_read += 1;
3457 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3458 next_offset += envelope_size;
3459 }
3460
3461 Ok(())
3462 }
3463 }
3464
3465 impl LinuxGuestInfo {
3466 #[inline(always)]
3467 fn max_ordinal_present(&self) -> u64 {
3468 if let Some(_) = self.failure_reason {
3469 return 4;
3470 }
3471 if let Some(_) = self.download_percent {
3472 return 3;
3473 }
3474 if let Some(_) = self.container_status {
3475 return 2;
3476 }
3477 if let Some(_) = self.cid {
3478 return 1;
3479 }
3480 0
3481 }
3482 }
3483
3484 impl fidl::encoding::ValueTypeMarker for LinuxGuestInfo {
3485 type Borrowed<'a> = &'a Self;
3486 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3487 value
3488 }
3489 }
3490
3491 unsafe impl fidl::encoding::TypeMarker for LinuxGuestInfo {
3492 type Owned = Self;
3493
3494 #[inline(always)]
3495 fn inline_align(_context: fidl::encoding::Context) -> usize {
3496 8
3497 }
3498
3499 #[inline(always)]
3500 fn inline_size(_context: fidl::encoding::Context) -> usize {
3501 16
3502 }
3503 }
3504
3505 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<LinuxGuestInfo, D>
3506 for &LinuxGuestInfo
3507 {
3508 unsafe fn encode(
3509 self,
3510 encoder: &mut fidl::encoding::Encoder<'_, D>,
3511 offset: usize,
3512 mut depth: fidl::encoding::Depth,
3513 ) -> fidl::Result<()> {
3514 encoder.debug_check_bounds::<LinuxGuestInfo>(offset);
3515 let max_ordinal: u64 = self.max_ordinal_present();
3517 encoder.write_num(max_ordinal, offset);
3518 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
3519 if max_ordinal == 0 {
3521 return Ok(());
3522 }
3523 depth.increment()?;
3524 let envelope_size = 8;
3525 let bytes_len = max_ordinal as usize * envelope_size;
3526 #[allow(unused_variables)]
3527 let offset = encoder.out_of_line_offset(bytes_len);
3528 let mut _prev_end_offset: usize = 0;
3529 if 1 > max_ordinal {
3530 return Ok(());
3531 }
3532
3533 let cur_offset: usize = (1 - 1) * envelope_size;
3536
3537 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3539
3540 fidl::encoding::encode_in_envelope_optional::<u32, D>(
3545 self.cid.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
3546 encoder,
3547 offset + cur_offset,
3548 depth,
3549 )?;
3550
3551 _prev_end_offset = cur_offset + envelope_size;
3552 if 2 > max_ordinal {
3553 return Ok(());
3554 }
3555
3556 let cur_offset: usize = (2 - 1) * envelope_size;
3559
3560 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3562
3563 fidl::encoding::encode_in_envelope_optional::<ContainerStatus, D>(
3568 self.container_status
3569 .as_ref()
3570 .map(<ContainerStatus as fidl::encoding::ValueTypeMarker>::borrow),
3571 encoder,
3572 offset + cur_offset,
3573 depth,
3574 )?;
3575
3576 _prev_end_offset = cur_offset + envelope_size;
3577 if 3 > max_ordinal {
3578 return Ok(());
3579 }
3580
3581 let cur_offset: usize = (3 - 1) * envelope_size;
3584
3585 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3587
3588 fidl::encoding::encode_in_envelope_optional::<i32, D>(
3593 self.download_percent
3594 .as_ref()
3595 .map(<i32 as fidl::encoding::ValueTypeMarker>::borrow),
3596 encoder,
3597 offset + cur_offset,
3598 depth,
3599 )?;
3600
3601 _prev_end_offset = cur_offset + envelope_size;
3602 if 4 > max_ordinal {
3603 return Ok(());
3604 }
3605
3606 let cur_offset: usize = (4 - 1) * envelope_size;
3609
3610 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3612
3613 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedString, D>(
3618 self.failure_reason.as_ref().map(
3619 <fidl::encoding::UnboundedString as fidl::encoding::ValueTypeMarker>::borrow,
3620 ),
3621 encoder,
3622 offset + cur_offset,
3623 depth,
3624 )?;
3625
3626 _prev_end_offset = cur_offset + envelope_size;
3627
3628 Ok(())
3629 }
3630 }
3631
3632 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for LinuxGuestInfo {
3633 #[inline(always)]
3634 fn new_empty() -> Self {
3635 Self::default()
3636 }
3637
3638 unsafe fn decode(
3639 &mut self,
3640 decoder: &mut fidl::encoding::Decoder<'_, D>,
3641 offset: usize,
3642 mut depth: fidl::encoding::Depth,
3643 ) -> fidl::Result<()> {
3644 decoder.debug_check_bounds::<Self>(offset);
3645 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
3646 None => return Err(fidl::Error::NotNullable),
3647 Some(len) => len,
3648 };
3649 if len == 0 {
3651 return Ok(());
3652 };
3653 depth.increment()?;
3654 let envelope_size = 8;
3655 let bytes_len = len * envelope_size;
3656 let offset = decoder.out_of_line_offset(bytes_len)?;
3657 let mut _next_ordinal_to_read = 0;
3659 let mut next_offset = offset;
3660 let end_offset = offset + bytes_len;
3661 _next_ordinal_to_read += 1;
3662 if next_offset >= end_offset {
3663 return Ok(());
3664 }
3665
3666 while _next_ordinal_to_read < 1 {
3668 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3669 _next_ordinal_to_read += 1;
3670 next_offset += envelope_size;
3671 }
3672
3673 let next_out_of_line = decoder.next_out_of_line();
3674 let handles_before = decoder.remaining_handles();
3675 if let Some((inlined, num_bytes, num_handles)) =
3676 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3677 {
3678 let member_inline_size =
3679 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3680 if inlined != (member_inline_size <= 4) {
3681 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3682 }
3683 let inner_offset;
3684 let mut inner_depth = depth.clone();
3685 if inlined {
3686 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3687 inner_offset = next_offset;
3688 } else {
3689 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3690 inner_depth.increment()?;
3691 }
3692 let val_ref = self.cid.get_or_insert_with(|| fidl::new_empty!(u32, D));
3693 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
3694 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3695 {
3696 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3697 }
3698 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3699 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3700 }
3701 }
3702
3703 next_offset += envelope_size;
3704 _next_ordinal_to_read += 1;
3705 if next_offset >= end_offset {
3706 return Ok(());
3707 }
3708
3709 while _next_ordinal_to_read < 2 {
3711 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3712 _next_ordinal_to_read += 1;
3713 next_offset += envelope_size;
3714 }
3715
3716 let next_out_of_line = decoder.next_out_of_line();
3717 let handles_before = decoder.remaining_handles();
3718 if let Some((inlined, num_bytes, num_handles)) =
3719 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3720 {
3721 let member_inline_size =
3722 <ContainerStatus as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3723 if inlined != (member_inline_size <= 4) {
3724 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3725 }
3726 let inner_offset;
3727 let mut inner_depth = depth.clone();
3728 if inlined {
3729 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3730 inner_offset = next_offset;
3731 } else {
3732 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3733 inner_depth.increment()?;
3734 }
3735 let val_ref = self
3736 .container_status
3737 .get_or_insert_with(|| fidl::new_empty!(ContainerStatus, D));
3738 fidl::decode!(ContainerStatus, D, val_ref, decoder, inner_offset, inner_depth)?;
3739 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3740 {
3741 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3742 }
3743 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3744 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3745 }
3746 }
3747
3748 next_offset += envelope_size;
3749 _next_ordinal_to_read += 1;
3750 if next_offset >= end_offset {
3751 return Ok(());
3752 }
3753
3754 while _next_ordinal_to_read < 3 {
3756 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3757 _next_ordinal_to_read += 1;
3758 next_offset += envelope_size;
3759 }
3760
3761 let next_out_of_line = decoder.next_out_of_line();
3762 let handles_before = decoder.remaining_handles();
3763 if let Some((inlined, num_bytes, num_handles)) =
3764 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3765 {
3766 let member_inline_size =
3767 <i32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3768 if inlined != (member_inline_size <= 4) {
3769 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3770 }
3771 let inner_offset;
3772 let mut inner_depth = depth.clone();
3773 if inlined {
3774 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3775 inner_offset = next_offset;
3776 } else {
3777 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3778 inner_depth.increment()?;
3779 }
3780 let val_ref = self.download_percent.get_or_insert_with(|| fidl::new_empty!(i32, D));
3781 fidl::decode!(i32, D, val_ref, decoder, inner_offset, inner_depth)?;
3782 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3783 {
3784 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3785 }
3786 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3787 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3788 }
3789 }
3790
3791 next_offset += envelope_size;
3792 _next_ordinal_to_read += 1;
3793 if next_offset >= end_offset {
3794 return Ok(());
3795 }
3796
3797 while _next_ordinal_to_read < 4 {
3799 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3800 _next_ordinal_to_read += 1;
3801 next_offset += envelope_size;
3802 }
3803
3804 let next_out_of_line = decoder.next_out_of_line();
3805 let handles_before = decoder.remaining_handles();
3806 if let Some((inlined, num_bytes, num_handles)) =
3807 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3808 {
3809 let member_inline_size =
3810 <fidl::encoding::UnboundedString as fidl::encoding::TypeMarker>::inline_size(
3811 decoder.context,
3812 );
3813 if inlined != (member_inline_size <= 4) {
3814 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3815 }
3816 let inner_offset;
3817 let mut inner_depth = depth.clone();
3818 if inlined {
3819 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3820 inner_offset = next_offset;
3821 } else {
3822 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3823 inner_depth.increment()?;
3824 }
3825 let val_ref = self
3826 .failure_reason
3827 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::UnboundedString, D));
3828 fidl::decode!(
3829 fidl::encoding::UnboundedString,
3830 D,
3831 val_ref,
3832 decoder,
3833 inner_offset,
3834 inner_depth
3835 )?;
3836 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3837 {
3838 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3839 }
3840 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3841 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3842 }
3843 }
3844
3845 next_offset += envelope_size;
3846
3847 while next_offset < end_offset {
3849 _next_ordinal_to_read += 1;
3850 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3851 next_offset += envelope_size;
3852 }
3853
3854 Ok(())
3855 }
3856 }
3857}