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 android_guest_manager_ordinals {
443 pub const LAUNCH: u64 = 0x394a2e29f750323e;
444 pub const FORCE_SHUTDOWN: u64 = 0x3ad9a012982f872d;
445 pub const CONNECT: u64 = 0x4e489076e3bb15b4;
446 pub const GET_INFO: u64 = 0x76892614aea695dc;
447}
448
449pub mod balloon_controller_ordinals {
450 pub const GET_BALLOON_SIZE: u64 = 0x2bb2ebaa6ff64d0b;
451 pub const REQUEST_NUM_PAGES: u64 = 0x55c444d65e1df1e8;
452 pub const GET_MEM_STATS: u64 = 0x676199795cc01142;
453}
454
455pub mod debian_guest_manager_ordinals {
456 pub const LAUNCH: u64 = 0x394a2e29f750323e;
457 pub const FORCE_SHUTDOWN: u64 = 0x3ad9a012982f872d;
458 pub const CONNECT: u64 = 0x4e489076e3bb15b4;
459 pub const GET_INFO: u64 = 0x76892614aea695dc;
460}
461
462pub mod guest_ordinals {
463 pub const GET_CONSOLE: u64 = 0x48cbcecb7793806e;
464 pub const GET_SERIAL: u64 = 0xcdd541a160d7044;
465 pub const GET_HOST_VSOCK_ENDPOINT: u64 = 0x766e96aeb9c28ed1;
466 pub const GET_BALLOON_CONTROLLER: u64 = 0x7b210bff219ac84e;
467 pub const GET_MEM_CONTROLLER: u64 = 0x170b19f4b867a01c;
468}
469
470pub mod guest_lifecycle_ordinals {
471 pub const CREATE: u64 = 0x152719eed416ed41;
472 pub const BIND: u64 = 0x57dd3e245f9598ed;
473 pub const RUN: u64 = 0x2907fef2ac775657;
474 pub const STOP: u64 = 0x27eef9c535ac8eb4;
475}
476
477pub mod guest_manager_ordinals {
478 pub const LAUNCH: u64 = 0x394a2e29f750323e;
479 pub const FORCE_SHUTDOWN: u64 = 0x3ad9a012982f872d;
480 pub const CONNECT: u64 = 0x4e489076e3bb15b4;
481 pub const GET_INFO: u64 = 0x76892614aea695dc;
482}
483
484pub mod host_vsock_acceptor_ordinals {
485 pub const ACCEPT: u64 = 0x6996ed935beaa2d7;
486}
487
488pub mod host_vsock_endpoint_ordinals {
489 pub const LISTEN: u64 = 0xfd88f3b4767f2c7;
490 pub const CONNECT: u64 = 0x4d12e10e946b43e4;
491}
492
493pub mod linux_manager_ordinals {
494 pub const START_AND_GET_LINUX_GUEST_INFO: u64 = 0x11809ced100a2bea;
495 pub const ON_GUEST_INFO_CHANGED: u64 = 0x30a9be4c43d6a2d6;
496 pub const WIPE_DATA: u64 = 0x732c69394548a76a;
497 pub const GRACEFUL_SHUTDOWN: u64 = 0x5dab12b50bc9909d;
498}
499
500pub mod mem_controller_ordinals {
501 pub const GET_MEM_SIZE: u64 = 0x6e9d496f9b66ea56;
502 pub const REQUEST_SIZE: u64 = 0x12f8e2cc21ee8102;
503}
504
505pub mod termina_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
512pub mod zircon_guest_manager_ordinals {
513 pub const LAUNCH: u64 = 0x394a2e29f750323e;
514 pub const FORCE_SHUTDOWN: u64 = 0x3ad9a012982f872d;
515 pub const CONNECT: u64 = 0x4e489076e3bb15b4;
516 pub const GET_INFO: u64 = 0x76892614aea695dc;
517}
518
519mod internal {
520 use super::*;
521 unsafe impl fidl::encoding::TypeMarker for BlockMode {
522 type Owned = Self;
523
524 #[inline(always)]
525 fn inline_align(_context: fidl::encoding::Context) -> usize {
526 std::mem::align_of::<u32>()
527 }
528
529 #[inline(always)]
530 fn inline_size(_context: fidl::encoding::Context) -> usize {
531 std::mem::size_of::<u32>()
532 }
533
534 #[inline(always)]
535 fn encode_is_copy() -> bool {
536 true
537 }
538
539 #[inline(always)]
540 fn decode_is_copy() -> bool {
541 false
542 }
543 }
544
545 impl fidl::encoding::ValueTypeMarker for BlockMode {
546 type Borrowed<'a> = Self;
547 #[inline(always)]
548 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
549 *value
550 }
551 }
552
553 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for BlockMode {
554 #[inline]
555 unsafe fn encode(
556 self,
557 encoder: &mut fidl::encoding::Encoder<'_, D>,
558 offset: usize,
559 _depth: fidl::encoding::Depth,
560 ) -> fidl::Result<()> {
561 encoder.debug_check_bounds::<Self>(offset);
562 encoder.write_num(self.into_primitive(), offset);
563 Ok(())
564 }
565 }
566
567 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for BlockMode {
568 #[inline(always)]
569 fn new_empty() -> Self {
570 Self::ReadWrite
571 }
572
573 #[inline]
574 unsafe fn decode(
575 &mut self,
576 decoder: &mut fidl::encoding::Decoder<'_, D>,
577 offset: usize,
578 _depth: fidl::encoding::Depth,
579 ) -> fidl::Result<()> {
580 decoder.debug_check_bounds::<Self>(offset);
581 let prim = decoder.read_num::<u32>(offset);
582
583 *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
584 Ok(())
585 }
586 }
587 unsafe impl fidl::encoding::TypeMarker for ContainerStatus {
588 type Owned = Self;
589
590 #[inline(always)]
591 fn inline_align(_context: fidl::encoding::Context) -> usize {
592 std::mem::align_of::<u32>()
593 }
594
595 #[inline(always)]
596 fn inline_size(_context: fidl::encoding::Context) -> usize {
597 std::mem::size_of::<u32>()
598 }
599
600 #[inline(always)]
601 fn encode_is_copy() -> bool {
602 true
603 }
604
605 #[inline(always)]
606 fn decode_is_copy() -> bool {
607 false
608 }
609 }
610
611 impl fidl::encoding::ValueTypeMarker for ContainerStatus {
612 type Borrowed<'a> = Self;
613 #[inline(always)]
614 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
615 *value
616 }
617 }
618
619 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
620 for ContainerStatus
621 {
622 #[inline]
623 unsafe fn encode(
624 self,
625 encoder: &mut fidl::encoding::Encoder<'_, D>,
626 offset: usize,
627 _depth: fidl::encoding::Depth,
628 ) -> fidl::Result<()> {
629 encoder.debug_check_bounds::<Self>(offset);
630 encoder.write_num(self.into_primitive(), offset);
631 Ok(())
632 }
633 }
634
635 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ContainerStatus {
636 #[inline(always)]
637 fn new_empty() -> Self {
638 Self::Transient
639 }
640
641 #[inline]
642 unsafe fn decode(
643 &mut self,
644 decoder: &mut fidl::encoding::Decoder<'_, D>,
645 offset: usize,
646 _depth: fidl::encoding::Depth,
647 ) -> fidl::Result<()> {
648 decoder.debug_check_bounds::<Self>(offset);
649 let prim = decoder.read_num::<u32>(offset);
650
651 *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
652 Ok(())
653 }
654 }
655 unsafe impl fidl::encoding::TypeMarker for GuestError {
656 type Owned = Self;
657
658 #[inline(always)]
659 fn inline_align(_context: fidl::encoding::Context) -> usize {
660 std::mem::align_of::<u32>()
661 }
662
663 #[inline(always)]
664 fn inline_size(_context: fidl::encoding::Context) -> usize {
665 std::mem::size_of::<u32>()
666 }
667
668 #[inline(always)]
669 fn encode_is_copy() -> bool {
670 true
671 }
672
673 #[inline(always)]
674 fn decode_is_copy() -> bool {
675 false
676 }
677 }
678
679 impl fidl::encoding::ValueTypeMarker for GuestError {
680 type Borrowed<'a> = Self;
681 #[inline(always)]
682 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
683 *value
684 }
685 }
686
687 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for GuestError {
688 #[inline]
689 unsafe fn encode(
690 self,
691 encoder: &mut fidl::encoding::Encoder<'_, D>,
692 offset: usize,
693 _depth: fidl::encoding::Depth,
694 ) -> fidl::Result<()> {
695 encoder.debug_check_bounds::<Self>(offset);
696 encoder.write_num(self.into_primitive(), offset);
697 Ok(())
698 }
699 }
700
701 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for GuestError {
702 #[inline(always)]
703 fn new_empty() -> Self {
704 Self::InternalError
705 }
706
707 #[inline]
708 unsafe fn decode(
709 &mut self,
710 decoder: &mut fidl::encoding::Decoder<'_, D>,
711 offset: usize,
712 _depth: fidl::encoding::Depth,
713 ) -> fidl::Result<()> {
714 decoder.debug_check_bounds::<Self>(offset);
715 let prim = decoder.read_num::<u32>(offset);
716
717 *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
718 Ok(())
719 }
720 }
721 unsafe impl fidl::encoding::TypeMarker for GuestManagerError {
722 type Owned = Self;
723
724 #[inline(always)]
725 fn inline_align(_context: fidl::encoding::Context) -> usize {
726 std::mem::align_of::<u32>()
727 }
728
729 #[inline(always)]
730 fn inline_size(_context: fidl::encoding::Context) -> usize {
731 std::mem::size_of::<u32>()
732 }
733
734 #[inline(always)]
735 fn encode_is_copy() -> bool {
736 true
737 }
738
739 #[inline(always)]
740 fn decode_is_copy() -> bool {
741 false
742 }
743 }
744
745 impl fidl::encoding::ValueTypeMarker for GuestManagerError {
746 type Borrowed<'a> = Self;
747 #[inline(always)]
748 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
749 *value
750 }
751 }
752
753 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
754 for GuestManagerError
755 {
756 #[inline]
757 unsafe fn encode(
758 self,
759 encoder: &mut fidl::encoding::Encoder<'_, D>,
760 offset: usize,
761 _depth: fidl::encoding::Depth,
762 ) -> fidl::Result<()> {
763 encoder.debug_check_bounds::<Self>(offset);
764 encoder.write_num(self.into_primitive(), offset);
765 Ok(())
766 }
767 }
768
769 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for GuestManagerError {
770 #[inline(always)]
771 fn new_empty() -> Self {
772 Self::BadConfig
773 }
774
775 #[inline]
776 unsafe fn decode(
777 &mut self,
778 decoder: &mut fidl::encoding::Decoder<'_, D>,
779 offset: usize,
780 _depth: fidl::encoding::Depth,
781 ) -> fidl::Result<()> {
782 decoder.debug_check_bounds::<Self>(offset);
783 let prim = decoder.read_num::<u32>(offset);
784
785 *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
786 Ok(())
787 }
788 }
789 unsafe impl fidl::encoding::TypeMarker for GuestStatus {
790 type Owned = Self;
791
792 #[inline(always)]
793 fn inline_align(_context: fidl::encoding::Context) -> usize {
794 std::mem::align_of::<u32>()
795 }
796
797 #[inline(always)]
798 fn inline_size(_context: fidl::encoding::Context) -> usize {
799 std::mem::size_of::<u32>()
800 }
801
802 #[inline(always)]
803 fn encode_is_copy() -> bool {
804 true
805 }
806
807 #[inline(always)]
808 fn decode_is_copy() -> bool {
809 false
810 }
811 }
812
813 impl fidl::encoding::ValueTypeMarker for GuestStatus {
814 type Borrowed<'a> = Self;
815 #[inline(always)]
816 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
817 *value
818 }
819 }
820
821 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for GuestStatus {
822 #[inline]
823 unsafe fn encode(
824 self,
825 encoder: &mut fidl::encoding::Encoder<'_, D>,
826 offset: usize,
827 _depth: fidl::encoding::Depth,
828 ) -> fidl::Result<()> {
829 encoder.debug_check_bounds::<Self>(offset);
830 encoder.write_num(self.into_primitive(), offset);
831 Ok(())
832 }
833 }
834
835 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for GuestStatus {
836 #[inline(always)]
837 fn new_empty() -> Self {
838 Self::NotStarted
839 }
840
841 #[inline]
842 unsafe fn decode(
843 &mut self,
844 decoder: &mut fidl::encoding::Decoder<'_, D>,
845 offset: usize,
846 _depth: fidl::encoding::Depth,
847 ) -> fidl::Result<()> {
848 decoder.debug_check_bounds::<Self>(offset);
849 let prim = decoder.read_num::<u32>(offset);
850
851 *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
852 Ok(())
853 }
854 }
855 unsafe impl fidl::encoding::TypeMarker for KernelType {
856 type Owned = Self;
857
858 #[inline(always)]
859 fn inline_align(_context: fidl::encoding::Context) -> usize {
860 std::mem::align_of::<u32>()
861 }
862
863 #[inline(always)]
864 fn inline_size(_context: fidl::encoding::Context) -> usize {
865 std::mem::size_of::<u32>()
866 }
867
868 #[inline(always)]
869 fn encode_is_copy() -> bool {
870 true
871 }
872
873 #[inline(always)]
874 fn decode_is_copy() -> bool {
875 false
876 }
877 }
878
879 impl fidl::encoding::ValueTypeMarker for KernelType {
880 type Borrowed<'a> = Self;
881 #[inline(always)]
882 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
883 *value
884 }
885 }
886
887 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for KernelType {
888 #[inline]
889 unsafe fn encode(
890 self,
891 encoder: &mut fidl::encoding::Encoder<'_, D>,
892 offset: usize,
893 _depth: fidl::encoding::Depth,
894 ) -> fidl::Result<()> {
895 encoder.debug_check_bounds::<Self>(offset);
896 encoder.write_num(self.into_primitive(), offset);
897 Ok(())
898 }
899 }
900
901 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for KernelType {
902 #[inline(always)]
903 fn new_empty() -> Self {
904 Self::Zircon
905 }
906
907 #[inline]
908 unsafe fn decode(
909 &mut self,
910 decoder: &mut fidl::encoding::Decoder<'_, D>,
911 offset: usize,
912 _depth: fidl::encoding::Depth,
913 ) -> fidl::Result<()> {
914 decoder.debug_check_bounds::<Self>(offset);
915 let prim = decoder.read_num::<u32>(offset);
916
917 *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
918 Ok(())
919 }
920 }
921
922 impl fidl::encoding::ValueTypeMarker for BalloonControllerGetBalloonSizeResponse {
923 type Borrowed<'a> = &'a Self;
924 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
925 value
926 }
927 }
928
929 unsafe impl fidl::encoding::TypeMarker for BalloonControllerGetBalloonSizeResponse {
930 type Owned = Self;
931
932 #[inline(always)]
933 fn inline_align(_context: fidl::encoding::Context) -> usize {
934 4
935 }
936
937 #[inline(always)]
938 fn inline_size(_context: fidl::encoding::Context) -> usize {
939 8
940 }
941 #[inline(always)]
942 fn encode_is_copy() -> bool {
943 true
944 }
945
946 #[inline(always)]
947 fn decode_is_copy() -> bool {
948 true
949 }
950 }
951
952 unsafe impl<D: fidl::encoding::ResourceDialect>
953 fidl::encoding::Encode<BalloonControllerGetBalloonSizeResponse, D>
954 for &BalloonControllerGetBalloonSizeResponse
955 {
956 #[inline]
957 unsafe fn encode(
958 self,
959 encoder: &mut fidl::encoding::Encoder<'_, D>,
960 offset: usize,
961 _depth: fidl::encoding::Depth,
962 ) -> fidl::Result<()> {
963 encoder.debug_check_bounds::<BalloonControllerGetBalloonSizeResponse>(offset);
964 unsafe {
965 let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
967 (buf_ptr as *mut BalloonControllerGetBalloonSizeResponse).write_unaligned(
968 (self as *const BalloonControllerGetBalloonSizeResponse).read(),
969 );
970 }
973 Ok(())
974 }
975 }
976 unsafe impl<
977 D: fidl::encoding::ResourceDialect,
978 T0: fidl::encoding::Encode<u32, D>,
979 T1: fidl::encoding::Encode<u32, D>,
980 > fidl::encoding::Encode<BalloonControllerGetBalloonSizeResponse, D> for (T0, T1)
981 {
982 #[inline]
983 unsafe fn encode(
984 self,
985 encoder: &mut fidl::encoding::Encoder<'_, D>,
986 offset: usize,
987 depth: fidl::encoding::Depth,
988 ) -> fidl::Result<()> {
989 encoder.debug_check_bounds::<BalloonControllerGetBalloonSizeResponse>(offset);
990 self.0.encode(encoder, offset + 0, depth)?;
994 self.1.encode(encoder, offset + 4, depth)?;
995 Ok(())
996 }
997 }
998
999 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1000 for BalloonControllerGetBalloonSizeResponse
1001 {
1002 #[inline(always)]
1003 fn new_empty() -> Self {
1004 Self {
1005 current_num_pages: fidl::new_empty!(u32, D),
1006 requested_num_pages: fidl::new_empty!(u32, D),
1007 }
1008 }
1009
1010 #[inline]
1011 unsafe fn decode(
1012 &mut self,
1013 decoder: &mut fidl::encoding::Decoder<'_, D>,
1014 offset: usize,
1015 _depth: fidl::encoding::Depth,
1016 ) -> fidl::Result<()> {
1017 decoder.debug_check_bounds::<Self>(offset);
1018 let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
1019 unsafe {
1022 std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 8);
1023 }
1024 Ok(())
1025 }
1026 }
1027
1028 impl fidl::encoding::ValueTypeMarker for BalloonControllerGetMemStatsResponse {
1029 type Borrowed<'a> = &'a Self;
1030 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1031 value
1032 }
1033 }
1034
1035 unsafe impl fidl::encoding::TypeMarker for BalloonControllerGetMemStatsResponse {
1036 type Owned = Self;
1037
1038 #[inline(always)]
1039 fn inline_align(_context: fidl::encoding::Context) -> usize {
1040 8
1041 }
1042
1043 #[inline(always)]
1044 fn inline_size(_context: fidl::encoding::Context) -> usize {
1045 24
1046 }
1047 }
1048
1049 unsafe impl<D: fidl::encoding::ResourceDialect>
1050 fidl::encoding::Encode<BalloonControllerGetMemStatsResponse, D>
1051 for &BalloonControllerGetMemStatsResponse
1052 {
1053 #[inline]
1054 unsafe fn encode(
1055 self,
1056 encoder: &mut fidl::encoding::Encoder<'_, D>,
1057 offset: usize,
1058 _depth: fidl::encoding::Depth,
1059 ) -> fidl::Result<()> {
1060 encoder.debug_check_bounds::<BalloonControllerGetMemStatsResponse>(offset);
1061 fidl::encoding::Encode::<BalloonControllerGetMemStatsResponse, D>::encode(
1063 (
1064 <i32 as fidl::encoding::ValueTypeMarker>::borrow(&self.status),
1065 <fidl::encoding::Optional<fidl::encoding::UnboundedVector<MemStat>> as fidl::encoding::ValueTypeMarker>::borrow(&self.mem_stats),
1066 ),
1067 encoder, offset, _depth
1068 )
1069 }
1070 }
1071 unsafe impl<
1072 D: fidl::encoding::ResourceDialect,
1073 T0: fidl::encoding::Encode<i32, D>,
1074 T1: fidl::encoding::Encode<
1075 fidl::encoding::Optional<fidl::encoding::UnboundedVector<MemStat>>,
1076 D,
1077 >,
1078 > fidl::encoding::Encode<BalloonControllerGetMemStatsResponse, D> for (T0, T1)
1079 {
1080 #[inline]
1081 unsafe fn encode(
1082 self,
1083 encoder: &mut fidl::encoding::Encoder<'_, D>,
1084 offset: usize,
1085 depth: fidl::encoding::Depth,
1086 ) -> fidl::Result<()> {
1087 encoder.debug_check_bounds::<BalloonControllerGetMemStatsResponse>(offset);
1088 unsafe {
1091 let ptr = encoder.buf.as_mut_ptr().add(offset).offset(0);
1092 (ptr as *mut u64).write_unaligned(0);
1093 }
1094 self.0.encode(encoder, offset + 0, depth)?;
1096 self.1.encode(encoder, offset + 8, depth)?;
1097 Ok(())
1098 }
1099 }
1100
1101 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1102 for BalloonControllerGetMemStatsResponse
1103 {
1104 #[inline(always)]
1105 fn new_empty() -> Self {
1106 Self {
1107 status: fidl::new_empty!(i32, D),
1108 mem_stats: fidl::new_empty!(
1109 fidl::encoding::Optional<fidl::encoding::UnboundedVector<MemStat>>,
1110 D
1111 ),
1112 }
1113 }
1114
1115 #[inline]
1116 unsafe fn decode(
1117 &mut self,
1118 decoder: &mut fidl::encoding::Decoder<'_, D>,
1119 offset: usize,
1120 _depth: fidl::encoding::Depth,
1121 ) -> fidl::Result<()> {
1122 decoder.debug_check_bounds::<Self>(offset);
1123 let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(0) };
1125 let padval = unsafe { (ptr as *const u64).read_unaligned() };
1126 let mask = 0xffffffff00000000u64;
1127 let maskedval = padval & mask;
1128 if maskedval != 0 {
1129 return Err(fidl::Error::NonZeroPadding {
1130 padding_start: offset + 0 + ((mask as u64).trailing_zeros() / 8) as usize,
1131 });
1132 }
1133 fidl::decode!(i32, D, &mut self.status, decoder, offset + 0, _depth)?;
1134 fidl::decode!(
1135 fidl::encoding::Optional<fidl::encoding::UnboundedVector<MemStat>>,
1136 D,
1137 &mut self.mem_stats,
1138 decoder,
1139 offset + 8,
1140 _depth
1141 )?;
1142 Ok(())
1143 }
1144 }
1145
1146 impl fidl::encoding::ValueTypeMarker for BalloonControllerRequestNumPagesRequest {
1147 type Borrowed<'a> = &'a Self;
1148 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1149 value
1150 }
1151 }
1152
1153 unsafe impl fidl::encoding::TypeMarker for BalloonControllerRequestNumPagesRequest {
1154 type Owned = Self;
1155
1156 #[inline(always)]
1157 fn inline_align(_context: fidl::encoding::Context) -> usize {
1158 4
1159 }
1160
1161 #[inline(always)]
1162 fn inline_size(_context: fidl::encoding::Context) -> usize {
1163 4
1164 }
1165 #[inline(always)]
1166 fn encode_is_copy() -> bool {
1167 true
1168 }
1169
1170 #[inline(always)]
1171 fn decode_is_copy() -> bool {
1172 true
1173 }
1174 }
1175
1176 unsafe impl<D: fidl::encoding::ResourceDialect>
1177 fidl::encoding::Encode<BalloonControllerRequestNumPagesRequest, D>
1178 for &BalloonControllerRequestNumPagesRequest
1179 {
1180 #[inline]
1181 unsafe fn encode(
1182 self,
1183 encoder: &mut fidl::encoding::Encoder<'_, D>,
1184 offset: usize,
1185 _depth: fidl::encoding::Depth,
1186 ) -> fidl::Result<()> {
1187 encoder.debug_check_bounds::<BalloonControllerRequestNumPagesRequest>(offset);
1188 unsafe {
1189 let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
1191 (buf_ptr as *mut BalloonControllerRequestNumPagesRequest).write_unaligned(
1192 (self as *const BalloonControllerRequestNumPagesRequest).read(),
1193 );
1194 }
1197 Ok(())
1198 }
1199 }
1200 unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<u32, D>>
1201 fidl::encoding::Encode<BalloonControllerRequestNumPagesRequest, D> for (T0,)
1202 {
1203 #[inline]
1204 unsafe fn encode(
1205 self,
1206 encoder: &mut fidl::encoding::Encoder<'_, D>,
1207 offset: usize,
1208 depth: fidl::encoding::Depth,
1209 ) -> fidl::Result<()> {
1210 encoder.debug_check_bounds::<BalloonControllerRequestNumPagesRequest>(offset);
1211 self.0.encode(encoder, offset + 0, depth)?;
1215 Ok(())
1216 }
1217 }
1218
1219 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1220 for BalloonControllerRequestNumPagesRequest
1221 {
1222 #[inline(always)]
1223 fn new_empty() -> Self {
1224 Self { requested_num_pages: fidl::new_empty!(u32, D) }
1225 }
1226
1227 #[inline]
1228 unsafe fn decode(
1229 &mut self,
1230 decoder: &mut fidl::encoding::Decoder<'_, D>,
1231 offset: usize,
1232 _depth: fidl::encoding::Depth,
1233 ) -> fidl::Result<()> {
1234 decoder.debug_check_bounds::<Self>(offset);
1235 let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
1236 unsafe {
1239 std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 4);
1240 }
1241 Ok(())
1242 }
1243 }
1244
1245 impl fidl::encoding::ValueTypeMarker for HostVsockAcceptorAcceptRequest {
1246 type Borrowed<'a> = &'a Self;
1247 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1248 value
1249 }
1250 }
1251
1252 unsafe impl fidl::encoding::TypeMarker for HostVsockAcceptorAcceptRequest {
1253 type Owned = Self;
1254
1255 #[inline(always)]
1256 fn inline_align(_context: fidl::encoding::Context) -> usize {
1257 4
1258 }
1259
1260 #[inline(always)]
1261 fn inline_size(_context: fidl::encoding::Context) -> usize {
1262 12
1263 }
1264 #[inline(always)]
1265 fn encode_is_copy() -> bool {
1266 true
1267 }
1268
1269 #[inline(always)]
1270 fn decode_is_copy() -> bool {
1271 true
1272 }
1273 }
1274
1275 unsafe impl<D: fidl::encoding::ResourceDialect>
1276 fidl::encoding::Encode<HostVsockAcceptorAcceptRequest, D>
1277 for &HostVsockAcceptorAcceptRequest
1278 {
1279 #[inline]
1280 unsafe fn encode(
1281 self,
1282 encoder: &mut fidl::encoding::Encoder<'_, D>,
1283 offset: usize,
1284 _depth: fidl::encoding::Depth,
1285 ) -> fidl::Result<()> {
1286 encoder.debug_check_bounds::<HostVsockAcceptorAcceptRequest>(offset);
1287 unsafe {
1288 let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
1290 (buf_ptr as *mut HostVsockAcceptorAcceptRequest)
1291 .write_unaligned((self as *const HostVsockAcceptorAcceptRequest).read());
1292 }
1295 Ok(())
1296 }
1297 }
1298 unsafe impl<
1299 D: fidl::encoding::ResourceDialect,
1300 T0: fidl::encoding::Encode<u32, D>,
1301 T1: fidl::encoding::Encode<u32, D>,
1302 T2: fidl::encoding::Encode<u32, D>,
1303 > fidl::encoding::Encode<HostVsockAcceptorAcceptRequest, D> for (T0, T1, T2)
1304 {
1305 #[inline]
1306 unsafe fn encode(
1307 self,
1308 encoder: &mut fidl::encoding::Encoder<'_, D>,
1309 offset: usize,
1310 depth: fidl::encoding::Depth,
1311 ) -> fidl::Result<()> {
1312 encoder.debug_check_bounds::<HostVsockAcceptorAcceptRequest>(offset);
1313 self.0.encode(encoder, offset + 0, depth)?;
1317 self.1.encode(encoder, offset + 4, depth)?;
1318 self.2.encode(encoder, offset + 8, depth)?;
1319 Ok(())
1320 }
1321 }
1322
1323 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1324 for HostVsockAcceptorAcceptRequest
1325 {
1326 #[inline(always)]
1327 fn new_empty() -> Self {
1328 Self {
1329 src_cid: fidl::new_empty!(u32, D),
1330 src_port: fidl::new_empty!(u32, D),
1331 port: fidl::new_empty!(u32, D),
1332 }
1333 }
1334
1335 #[inline]
1336 unsafe fn decode(
1337 &mut self,
1338 decoder: &mut fidl::encoding::Decoder<'_, D>,
1339 offset: usize,
1340 _depth: fidl::encoding::Depth,
1341 ) -> fidl::Result<()> {
1342 decoder.debug_check_bounds::<Self>(offset);
1343 let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
1344 unsafe {
1347 std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 12);
1348 }
1349 Ok(())
1350 }
1351 }
1352
1353 impl fidl::encoding::ValueTypeMarker for HostVsockEndpointConnectRequest {
1354 type Borrowed<'a> = &'a Self;
1355 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1356 value
1357 }
1358 }
1359
1360 unsafe impl fidl::encoding::TypeMarker for HostVsockEndpointConnectRequest {
1361 type Owned = Self;
1362
1363 #[inline(always)]
1364 fn inline_align(_context: fidl::encoding::Context) -> usize {
1365 4
1366 }
1367
1368 #[inline(always)]
1369 fn inline_size(_context: fidl::encoding::Context) -> usize {
1370 4
1371 }
1372 #[inline(always)]
1373 fn encode_is_copy() -> bool {
1374 true
1375 }
1376
1377 #[inline(always)]
1378 fn decode_is_copy() -> bool {
1379 true
1380 }
1381 }
1382
1383 unsafe impl<D: fidl::encoding::ResourceDialect>
1384 fidl::encoding::Encode<HostVsockEndpointConnectRequest, D>
1385 for &HostVsockEndpointConnectRequest
1386 {
1387 #[inline]
1388 unsafe fn encode(
1389 self,
1390 encoder: &mut fidl::encoding::Encoder<'_, D>,
1391 offset: usize,
1392 _depth: fidl::encoding::Depth,
1393 ) -> fidl::Result<()> {
1394 encoder.debug_check_bounds::<HostVsockEndpointConnectRequest>(offset);
1395 unsafe {
1396 let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
1398 (buf_ptr as *mut HostVsockEndpointConnectRequest)
1399 .write_unaligned((self as *const HostVsockEndpointConnectRequest).read());
1400 }
1403 Ok(())
1404 }
1405 }
1406 unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<u32, D>>
1407 fidl::encoding::Encode<HostVsockEndpointConnectRequest, D> for (T0,)
1408 {
1409 #[inline]
1410 unsafe fn encode(
1411 self,
1412 encoder: &mut fidl::encoding::Encoder<'_, D>,
1413 offset: usize,
1414 depth: fidl::encoding::Depth,
1415 ) -> fidl::Result<()> {
1416 encoder.debug_check_bounds::<HostVsockEndpointConnectRequest>(offset);
1417 self.0.encode(encoder, offset + 0, depth)?;
1421 Ok(())
1422 }
1423 }
1424
1425 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1426 for HostVsockEndpointConnectRequest
1427 {
1428 #[inline(always)]
1429 fn new_empty() -> Self {
1430 Self { guest_port: fidl::new_empty!(u32, D) }
1431 }
1432
1433 #[inline]
1434 unsafe fn decode(
1435 &mut self,
1436 decoder: &mut fidl::encoding::Decoder<'_, D>,
1437 offset: usize,
1438 _depth: fidl::encoding::Depth,
1439 ) -> fidl::Result<()> {
1440 decoder.debug_check_bounds::<Self>(offset);
1441 let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
1442 unsafe {
1445 std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 4);
1446 }
1447 Ok(())
1448 }
1449 }
1450
1451 impl fidl::encoding::ValueTypeMarker for LinuxManagerOnGuestInfoChangedRequest {
1452 type Borrowed<'a> = &'a Self;
1453 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1454 value
1455 }
1456 }
1457
1458 unsafe impl fidl::encoding::TypeMarker for LinuxManagerOnGuestInfoChangedRequest {
1459 type Owned = Self;
1460
1461 #[inline(always)]
1462 fn inline_align(_context: fidl::encoding::Context) -> usize {
1463 8
1464 }
1465
1466 #[inline(always)]
1467 fn inline_size(_context: fidl::encoding::Context) -> usize {
1468 32
1469 }
1470 }
1471
1472 unsafe impl<D: fidl::encoding::ResourceDialect>
1473 fidl::encoding::Encode<LinuxManagerOnGuestInfoChangedRequest, D>
1474 for &LinuxManagerOnGuestInfoChangedRequest
1475 {
1476 #[inline]
1477 unsafe fn encode(
1478 self,
1479 encoder: &mut fidl::encoding::Encoder<'_, D>,
1480 offset: usize,
1481 _depth: fidl::encoding::Depth,
1482 ) -> fidl::Result<()> {
1483 encoder.debug_check_bounds::<LinuxManagerOnGuestInfoChangedRequest>(offset);
1484 fidl::encoding::Encode::<LinuxManagerOnGuestInfoChangedRequest, D>::encode(
1486 (
1487 <fidl::encoding::UnboundedString as fidl::encoding::ValueTypeMarker>::borrow(
1488 &self.label,
1489 ),
1490 <LinuxGuestInfo as fidl::encoding::ValueTypeMarker>::borrow(&self.info),
1491 ),
1492 encoder,
1493 offset,
1494 _depth,
1495 )
1496 }
1497 }
1498 unsafe impl<
1499 D: fidl::encoding::ResourceDialect,
1500 T0: fidl::encoding::Encode<fidl::encoding::UnboundedString, D>,
1501 T1: fidl::encoding::Encode<LinuxGuestInfo, D>,
1502 > fidl::encoding::Encode<LinuxManagerOnGuestInfoChangedRequest, D> for (T0, T1)
1503 {
1504 #[inline]
1505 unsafe fn encode(
1506 self,
1507 encoder: &mut fidl::encoding::Encoder<'_, D>,
1508 offset: usize,
1509 depth: fidl::encoding::Depth,
1510 ) -> fidl::Result<()> {
1511 encoder.debug_check_bounds::<LinuxManagerOnGuestInfoChangedRequest>(offset);
1512 self.0.encode(encoder, offset + 0, depth)?;
1516 self.1.encode(encoder, offset + 16, depth)?;
1517 Ok(())
1518 }
1519 }
1520
1521 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1522 for LinuxManagerOnGuestInfoChangedRequest
1523 {
1524 #[inline(always)]
1525 fn new_empty() -> Self {
1526 Self {
1527 label: fidl::new_empty!(fidl::encoding::UnboundedString, D),
1528 info: fidl::new_empty!(LinuxGuestInfo, D),
1529 }
1530 }
1531
1532 #[inline]
1533 unsafe fn decode(
1534 &mut self,
1535 decoder: &mut fidl::encoding::Decoder<'_, D>,
1536 offset: usize,
1537 _depth: fidl::encoding::Depth,
1538 ) -> fidl::Result<()> {
1539 decoder.debug_check_bounds::<Self>(offset);
1540 fidl::decode!(
1542 fidl::encoding::UnboundedString,
1543 D,
1544 &mut self.label,
1545 decoder,
1546 offset + 0,
1547 _depth
1548 )?;
1549 fidl::decode!(LinuxGuestInfo, D, &mut self.info, decoder, offset + 16, _depth)?;
1550 Ok(())
1551 }
1552 }
1553
1554 impl fidl::encoding::ValueTypeMarker for LinuxManagerStartAndGetLinuxGuestInfoRequest {
1555 type Borrowed<'a> = &'a Self;
1556 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1557 value
1558 }
1559 }
1560
1561 unsafe impl fidl::encoding::TypeMarker for LinuxManagerStartAndGetLinuxGuestInfoRequest {
1562 type Owned = Self;
1563
1564 #[inline(always)]
1565 fn inline_align(_context: fidl::encoding::Context) -> usize {
1566 8
1567 }
1568
1569 #[inline(always)]
1570 fn inline_size(_context: fidl::encoding::Context) -> usize {
1571 16
1572 }
1573 }
1574
1575 unsafe impl<D: fidl::encoding::ResourceDialect>
1576 fidl::encoding::Encode<LinuxManagerStartAndGetLinuxGuestInfoRequest, D>
1577 for &LinuxManagerStartAndGetLinuxGuestInfoRequest
1578 {
1579 #[inline]
1580 unsafe fn encode(
1581 self,
1582 encoder: &mut fidl::encoding::Encoder<'_, D>,
1583 offset: usize,
1584 _depth: fidl::encoding::Depth,
1585 ) -> fidl::Result<()> {
1586 encoder.debug_check_bounds::<LinuxManagerStartAndGetLinuxGuestInfoRequest>(offset);
1587 fidl::encoding::Encode::<LinuxManagerStartAndGetLinuxGuestInfoRequest, D>::encode(
1589 (<fidl::encoding::UnboundedString as fidl::encoding::ValueTypeMarker>::borrow(
1590 &self.label,
1591 ),),
1592 encoder,
1593 offset,
1594 _depth,
1595 )
1596 }
1597 }
1598 unsafe impl<
1599 D: fidl::encoding::ResourceDialect,
1600 T0: fidl::encoding::Encode<fidl::encoding::UnboundedString, D>,
1601 > fidl::encoding::Encode<LinuxManagerStartAndGetLinuxGuestInfoRequest, D> for (T0,)
1602 {
1603 #[inline]
1604 unsafe fn encode(
1605 self,
1606 encoder: &mut fidl::encoding::Encoder<'_, D>,
1607 offset: usize,
1608 depth: fidl::encoding::Depth,
1609 ) -> fidl::Result<()> {
1610 encoder.debug_check_bounds::<LinuxManagerStartAndGetLinuxGuestInfoRequest>(offset);
1611 self.0.encode(encoder, offset + 0, depth)?;
1615 Ok(())
1616 }
1617 }
1618
1619 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1620 for LinuxManagerStartAndGetLinuxGuestInfoRequest
1621 {
1622 #[inline(always)]
1623 fn new_empty() -> Self {
1624 Self { label: fidl::new_empty!(fidl::encoding::UnboundedString, D) }
1625 }
1626
1627 #[inline]
1628 unsafe fn decode(
1629 &mut self,
1630 decoder: &mut fidl::encoding::Decoder<'_, D>,
1631 offset: usize,
1632 _depth: fidl::encoding::Depth,
1633 ) -> fidl::Result<()> {
1634 decoder.debug_check_bounds::<Self>(offset);
1635 fidl::decode!(
1637 fidl::encoding::UnboundedString,
1638 D,
1639 &mut self.label,
1640 decoder,
1641 offset + 0,
1642 _depth
1643 )?;
1644 Ok(())
1645 }
1646 }
1647
1648 impl fidl::encoding::ValueTypeMarker for LinuxManagerStartAndGetLinuxGuestInfoResponse {
1649 type Borrowed<'a> = &'a Self;
1650 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1651 value
1652 }
1653 }
1654
1655 unsafe impl fidl::encoding::TypeMarker for LinuxManagerStartAndGetLinuxGuestInfoResponse {
1656 type Owned = Self;
1657
1658 #[inline(always)]
1659 fn inline_align(_context: fidl::encoding::Context) -> usize {
1660 8
1661 }
1662
1663 #[inline(always)]
1664 fn inline_size(_context: fidl::encoding::Context) -> usize {
1665 16
1666 }
1667 }
1668
1669 unsafe impl<D: fidl::encoding::ResourceDialect>
1670 fidl::encoding::Encode<LinuxManagerStartAndGetLinuxGuestInfoResponse, D>
1671 for &LinuxManagerStartAndGetLinuxGuestInfoResponse
1672 {
1673 #[inline]
1674 unsafe fn encode(
1675 self,
1676 encoder: &mut fidl::encoding::Encoder<'_, D>,
1677 offset: usize,
1678 _depth: fidl::encoding::Depth,
1679 ) -> fidl::Result<()> {
1680 encoder.debug_check_bounds::<LinuxManagerStartAndGetLinuxGuestInfoResponse>(offset);
1681 fidl::encoding::Encode::<LinuxManagerStartAndGetLinuxGuestInfoResponse, D>::encode(
1683 (<LinuxGuestInfo as fidl::encoding::ValueTypeMarker>::borrow(&self.info),),
1684 encoder,
1685 offset,
1686 _depth,
1687 )
1688 }
1689 }
1690 unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<LinuxGuestInfo, D>>
1691 fidl::encoding::Encode<LinuxManagerStartAndGetLinuxGuestInfoResponse, D> for (T0,)
1692 {
1693 #[inline]
1694 unsafe fn encode(
1695 self,
1696 encoder: &mut fidl::encoding::Encoder<'_, D>,
1697 offset: usize,
1698 depth: fidl::encoding::Depth,
1699 ) -> fidl::Result<()> {
1700 encoder.debug_check_bounds::<LinuxManagerStartAndGetLinuxGuestInfoResponse>(offset);
1701 self.0.encode(encoder, offset + 0, depth)?;
1705 Ok(())
1706 }
1707 }
1708
1709 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1710 for LinuxManagerStartAndGetLinuxGuestInfoResponse
1711 {
1712 #[inline(always)]
1713 fn new_empty() -> Self {
1714 Self { info: fidl::new_empty!(LinuxGuestInfo, D) }
1715 }
1716
1717 #[inline]
1718 unsafe fn decode(
1719 &mut self,
1720 decoder: &mut fidl::encoding::Decoder<'_, D>,
1721 offset: usize,
1722 _depth: fidl::encoding::Depth,
1723 ) -> fidl::Result<()> {
1724 decoder.debug_check_bounds::<Self>(offset);
1725 fidl::decode!(LinuxGuestInfo, D, &mut self.info, decoder, offset + 0, _depth)?;
1727 Ok(())
1728 }
1729 }
1730
1731 impl fidl::encoding::ValueTypeMarker for MagmaDevice {
1732 type Borrowed<'a> = &'a Self;
1733 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1734 value
1735 }
1736 }
1737
1738 unsafe impl fidl::encoding::TypeMarker for MagmaDevice {
1739 type Owned = Self;
1740
1741 #[inline(always)]
1742 fn inline_align(_context: fidl::encoding::Context) -> usize {
1743 8
1744 }
1745
1746 #[inline(always)]
1747 fn inline_size(_context: fidl::encoding::Context) -> usize {
1748 8
1749 }
1750 #[inline(always)]
1751 fn encode_is_copy() -> bool {
1752 true
1753 }
1754
1755 #[inline(always)]
1756 fn decode_is_copy() -> bool {
1757 true
1758 }
1759 }
1760
1761 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<MagmaDevice, D>
1762 for &MagmaDevice
1763 {
1764 #[inline]
1765 unsafe fn encode(
1766 self,
1767 encoder: &mut fidl::encoding::Encoder<'_, D>,
1768 offset: usize,
1769 _depth: fidl::encoding::Depth,
1770 ) -> fidl::Result<()> {
1771 encoder.debug_check_bounds::<MagmaDevice>(offset);
1772 unsafe {
1773 let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
1775 (buf_ptr as *mut MagmaDevice).write_unaligned((self as *const MagmaDevice).read());
1776 }
1779 Ok(())
1780 }
1781 }
1782 unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<u64, D>>
1783 fidl::encoding::Encode<MagmaDevice, D> for (T0,)
1784 {
1785 #[inline]
1786 unsafe fn encode(
1787 self,
1788 encoder: &mut fidl::encoding::Encoder<'_, D>,
1789 offset: usize,
1790 depth: fidl::encoding::Depth,
1791 ) -> fidl::Result<()> {
1792 encoder.debug_check_bounds::<MagmaDevice>(offset);
1793 self.0.encode(encoder, offset + 0, depth)?;
1797 Ok(())
1798 }
1799 }
1800
1801 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for MagmaDevice {
1802 #[inline(always)]
1803 fn new_empty() -> Self {
1804 Self { memory: fidl::new_empty!(u64, D) }
1805 }
1806
1807 #[inline]
1808 unsafe fn decode(
1809 &mut self,
1810 decoder: &mut fidl::encoding::Decoder<'_, D>,
1811 offset: usize,
1812 _depth: fidl::encoding::Depth,
1813 ) -> fidl::Result<()> {
1814 decoder.debug_check_bounds::<Self>(offset);
1815 let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
1816 unsafe {
1819 std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 8);
1820 }
1821 Ok(())
1822 }
1823 }
1824
1825 impl fidl::encoding::ValueTypeMarker for MemControllerGetMemSizeResponse {
1826 type Borrowed<'a> = &'a Self;
1827 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1828 value
1829 }
1830 }
1831
1832 unsafe impl fidl::encoding::TypeMarker for MemControllerGetMemSizeResponse {
1833 type Owned = Self;
1834
1835 #[inline(always)]
1836 fn inline_align(_context: fidl::encoding::Context) -> usize {
1837 8
1838 }
1839
1840 #[inline(always)]
1841 fn inline_size(_context: fidl::encoding::Context) -> usize {
1842 40
1843 }
1844 #[inline(always)]
1845 fn encode_is_copy() -> bool {
1846 true
1847 }
1848
1849 #[inline(always)]
1850 fn decode_is_copy() -> bool {
1851 true
1852 }
1853 }
1854
1855 unsafe impl<D: fidl::encoding::ResourceDialect>
1856 fidl::encoding::Encode<MemControllerGetMemSizeResponse, D>
1857 for &MemControllerGetMemSizeResponse
1858 {
1859 #[inline]
1860 unsafe fn encode(
1861 self,
1862 encoder: &mut fidl::encoding::Encoder<'_, D>,
1863 offset: usize,
1864 _depth: fidl::encoding::Depth,
1865 ) -> fidl::Result<()> {
1866 encoder.debug_check_bounds::<MemControllerGetMemSizeResponse>(offset);
1867 unsafe {
1868 let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
1870 (buf_ptr as *mut MemControllerGetMemSizeResponse)
1871 .write_unaligned((self as *const MemControllerGetMemSizeResponse).read());
1872 }
1875 Ok(())
1876 }
1877 }
1878 unsafe impl<
1879 D: fidl::encoding::ResourceDialect,
1880 T0: fidl::encoding::Encode<u64, D>,
1881 T1: fidl::encoding::Encode<u64, D>,
1882 T2: fidl::encoding::Encode<u64, D>,
1883 T3: fidl::encoding::Encode<u64, D>,
1884 T4: fidl::encoding::Encode<u64, D>,
1885 > fidl::encoding::Encode<MemControllerGetMemSizeResponse, D> for (T0, T1, T2, T3, T4)
1886 {
1887 #[inline]
1888 unsafe fn encode(
1889 self,
1890 encoder: &mut fidl::encoding::Encoder<'_, D>,
1891 offset: usize,
1892 depth: fidl::encoding::Depth,
1893 ) -> fidl::Result<()> {
1894 encoder.debug_check_bounds::<MemControllerGetMemSizeResponse>(offset);
1895 self.0.encode(encoder, offset + 0, depth)?;
1899 self.1.encode(encoder, offset + 8, depth)?;
1900 self.2.encode(encoder, offset + 16, depth)?;
1901 self.3.encode(encoder, offset + 24, depth)?;
1902 self.4.encode(encoder, offset + 32, depth)?;
1903 Ok(())
1904 }
1905 }
1906
1907 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1908 for MemControllerGetMemSizeResponse
1909 {
1910 #[inline(always)]
1911 fn new_empty() -> Self {
1912 Self {
1913 block_size: fidl::new_empty!(u64, D),
1914 region_size: fidl::new_empty!(u64, D),
1915 usable_region_size: fidl::new_empty!(u64, D),
1916 plugged_size: fidl::new_empty!(u64, D),
1917 requested_size: fidl::new_empty!(u64, D),
1918 }
1919 }
1920
1921 #[inline]
1922 unsafe fn decode(
1923 &mut self,
1924 decoder: &mut fidl::encoding::Decoder<'_, D>,
1925 offset: usize,
1926 _depth: fidl::encoding::Depth,
1927 ) -> fidl::Result<()> {
1928 decoder.debug_check_bounds::<Self>(offset);
1929 let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
1930 unsafe {
1933 std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 40);
1934 }
1935 Ok(())
1936 }
1937 }
1938
1939 impl fidl::encoding::ValueTypeMarker for MemControllerRequestSizeRequest {
1940 type Borrowed<'a> = &'a Self;
1941 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1942 value
1943 }
1944 }
1945
1946 unsafe impl fidl::encoding::TypeMarker for MemControllerRequestSizeRequest {
1947 type Owned = Self;
1948
1949 #[inline(always)]
1950 fn inline_align(_context: fidl::encoding::Context) -> usize {
1951 8
1952 }
1953
1954 #[inline(always)]
1955 fn inline_size(_context: fidl::encoding::Context) -> usize {
1956 8
1957 }
1958 #[inline(always)]
1959 fn encode_is_copy() -> bool {
1960 true
1961 }
1962
1963 #[inline(always)]
1964 fn decode_is_copy() -> bool {
1965 true
1966 }
1967 }
1968
1969 unsafe impl<D: fidl::encoding::ResourceDialect>
1970 fidl::encoding::Encode<MemControllerRequestSizeRequest, D>
1971 for &MemControllerRequestSizeRequest
1972 {
1973 #[inline]
1974 unsafe fn encode(
1975 self,
1976 encoder: &mut fidl::encoding::Encoder<'_, D>,
1977 offset: usize,
1978 _depth: fidl::encoding::Depth,
1979 ) -> fidl::Result<()> {
1980 encoder.debug_check_bounds::<MemControllerRequestSizeRequest>(offset);
1981 unsafe {
1982 let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
1984 (buf_ptr as *mut MemControllerRequestSizeRequest)
1985 .write_unaligned((self as *const MemControllerRequestSizeRequest).read());
1986 }
1989 Ok(())
1990 }
1991 }
1992 unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<u64, D>>
1993 fidl::encoding::Encode<MemControllerRequestSizeRequest, D> for (T0,)
1994 {
1995 #[inline]
1996 unsafe fn encode(
1997 self,
1998 encoder: &mut fidl::encoding::Encoder<'_, D>,
1999 offset: usize,
2000 depth: fidl::encoding::Depth,
2001 ) -> fidl::Result<()> {
2002 encoder.debug_check_bounds::<MemControllerRequestSizeRequest>(offset);
2003 self.0.encode(encoder, offset + 0, depth)?;
2007 Ok(())
2008 }
2009 }
2010
2011 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2012 for MemControllerRequestSizeRequest
2013 {
2014 #[inline(always)]
2015 fn new_empty() -> Self {
2016 Self { requested_size: fidl::new_empty!(u64, D) }
2017 }
2018
2019 #[inline]
2020 unsafe fn decode(
2021 &mut self,
2022 decoder: &mut fidl::encoding::Decoder<'_, D>,
2023 offset: usize,
2024 _depth: fidl::encoding::Depth,
2025 ) -> fidl::Result<()> {
2026 decoder.debug_check_bounds::<Self>(offset);
2027 let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
2028 unsafe {
2031 std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 8);
2032 }
2033 Ok(())
2034 }
2035 }
2036
2037 impl fidl::encoding::ValueTypeMarker for MemStat {
2038 type Borrowed<'a> = &'a Self;
2039 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2040 value
2041 }
2042 }
2043
2044 unsafe impl fidl::encoding::TypeMarker for MemStat {
2045 type Owned = Self;
2046
2047 #[inline(always)]
2048 fn inline_align(_context: fidl::encoding::Context) -> usize {
2049 8
2050 }
2051
2052 #[inline(always)]
2053 fn inline_size(_context: fidl::encoding::Context) -> usize {
2054 16
2055 }
2056 }
2057
2058 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<MemStat, D> for &MemStat {
2059 #[inline]
2060 unsafe fn encode(
2061 self,
2062 encoder: &mut fidl::encoding::Encoder<'_, D>,
2063 offset: usize,
2064 _depth: fidl::encoding::Depth,
2065 ) -> fidl::Result<()> {
2066 encoder.debug_check_bounds::<MemStat>(offset);
2067 unsafe {
2068 let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
2070 (buf_ptr as *mut MemStat).write_unaligned((self as *const MemStat).read());
2071 let padding_ptr = buf_ptr.offset(0) as *mut u64;
2074 let padding_mask = 0xffffffffffff0000u64;
2075 padding_ptr.write_unaligned(padding_ptr.read_unaligned() & !padding_mask);
2076 }
2077 Ok(())
2078 }
2079 }
2080 unsafe impl<
2081 D: fidl::encoding::ResourceDialect,
2082 T0: fidl::encoding::Encode<u16, D>,
2083 T1: fidl::encoding::Encode<u64, D>,
2084 > fidl::encoding::Encode<MemStat, D> for (T0, T1)
2085 {
2086 #[inline]
2087 unsafe fn encode(
2088 self,
2089 encoder: &mut fidl::encoding::Encoder<'_, D>,
2090 offset: usize,
2091 depth: fidl::encoding::Depth,
2092 ) -> fidl::Result<()> {
2093 encoder.debug_check_bounds::<MemStat>(offset);
2094 unsafe {
2097 let ptr = encoder.buf.as_mut_ptr().add(offset).offset(0);
2098 (ptr as *mut u64).write_unaligned(0);
2099 }
2100 self.0.encode(encoder, offset + 0, depth)?;
2102 self.1.encode(encoder, offset + 8, depth)?;
2103 Ok(())
2104 }
2105 }
2106
2107 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for MemStat {
2108 #[inline(always)]
2109 fn new_empty() -> Self {
2110 Self { tag: fidl::new_empty!(u16, D), val: fidl::new_empty!(u64, D) }
2111 }
2112
2113 #[inline]
2114 unsafe fn decode(
2115 &mut self,
2116 decoder: &mut fidl::encoding::Decoder<'_, D>,
2117 offset: usize,
2118 _depth: fidl::encoding::Depth,
2119 ) -> fidl::Result<()> {
2120 decoder.debug_check_bounds::<Self>(offset);
2121 let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
2122 let ptr = unsafe { buf_ptr.offset(0) };
2124 let padval = unsafe { (ptr as *const u64).read_unaligned() };
2125 let mask = 0xffffffffffff0000u64;
2126 let maskedval = padval & mask;
2127 if maskedval != 0 {
2128 return Err(fidl::Error::NonZeroPadding {
2129 padding_start: offset + 0 + ((mask as u64).trailing_zeros() / 8) as usize,
2130 });
2131 }
2132 unsafe {
2134 std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 16);
2135 }
2136 Ok(())
2137 }
2138 }
2139
2140 impl fidl::encoding::ValueTypeMarker for NetSpec {
2141 type Borrowed<'a> = &'a Self;
2142 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2143 value
2144 }
2145 }
2146
2147 unsafe impl fidl::encoding::TypeMarker for NetSpec {
2148 type Owned = Self;
2149
2150 #[inline(always)]
2151 fn inline_align(_context: fidl::encoding::Context) -> usize {
2152 1
2153 }
2154
2155 #[inline(always)]
2156 fn inline_size(_context: fidl::encoding::Context) -> usize {
2157 7
2158 }
2159 }
2160
2161 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<NetSpec, D> for &NetSpec {
2162 #[inline]
2163 unsafe fn encode(
2164 self,
2165 encoder: &mut fidl::encoding::Encoder<'_, D>,
2166 offset: usize,
2167 _depth: fidl::encoding::Depth,
2168 ) -> fidl::Result<()> {
2169 encoder.debug_check_bounds::<NetSpec>(offset);
2170 fidl::encoding::Encode::<NetSpec, D>::encode(
2172 (
2173 <fidl_fuchsia_net__common::MacAddress as fidl::encoding::ValueTypeMarker>::borrow(&self.mac_address),
2174 <bool as fidl::encoding::ValueTypeMarker>::borrow(&self.enable_bridge),
2175 ),
2176 encoder, offset, _depth
2177 )
2178 }
2179 }
2180 unsafe impl<
2181 D: fidl::encoding::ResourceDialect,
2182 T0: fidl::encoding::Encode<fidl_fuchsia_net__common::MacAddress, D>,
2183 T1: fidl::encoding::Encode<bool, D>,
2184 > fidl::encoding::Encode<NetSpec, D> for (T0, T1)
2185 {
2186 #[inline]
2187 unsafe fn encode(
2188 self,
2189 encoder: &mut fidl::encoding::Encoder<'_, D>,
2190 offset: usize,
2191 depth: fidl::encoding::Depth,
2192 ) -> fidl::Result<()> {
2193 encoder.debug_check_bounds::<NetSpec>(offset);
2194 self.0.encode(encoder, offset + 0, depth)?;
2198 self.1.encode(encoder, offset + 6, depth)?;
2199 Ok(())
2200 }
2201 }
2202
2203 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for NetSpec {
2204 #[inline(always)]
2205 fn new_empty() -> Self {
2206 Self {
2207 mac_address: fidl::new_empty!(fidl_fuchsia_net__common::MacAddress, D),
2208 enable_bridge: fidl::new_empty!(bool, D),
2209 }
2210 }
2211
2212 #[inline]
2213 unsafe fn decode(
2214 &mut self,
2215 decoder: &mut fidl::encoding::Decoder<'_, D>,
2216 offset: usize,
2217 _depth: fidl::encoding::Depth,
2218 ) -> fidl::Result<()> {
2219 decoder.debug_check_bounds::<Self>(offset);
2220 fidl::decode!(
2222 fidl_fuchsia_net__common::MacAddress,
2223 D,
2224 &mut self.mac_address,
2225 decoder,
2226 offset + 0,
2227 _depth
2228 )?;
2229 fidl::decode!(bool, D, &mut self.enable_bridge, decoder, offset + 6, _depth)?;
2230 Ok(())
2231 }
2232 }
2233
2234 impl GuestDescriptor {
2235 #[inline(always)]
2236 fn max_ordinal_present(&self) -> u64 {
2237 if let Some(_) = self.mem {
2238 return 12;
2239 }
2240 if let Some(_) = self.networks {
2241 return 11;
2242 }
2243 if let Some(_) = self.sound {
2244 return 10;
2245 }
2246 if let Some(_) = self.vsock {
2247 return 9;
2248 }
2249 if let Some(_) = self.rng {
2250 return 8;
2251 }
2252 if let Some(_) = self.gpu {
2253 return 7;
2254 }
2255 if let Some(_) = self.console {
2256 return 6;
2257 }
2258 if let Some(_) = self.balloon {
2259 return 5;
2260 }
2261 if let Some(_) = self.guest_memory {
2262 return 2;
2263 }
2264 if let Some(_) = self.num_cpus {
2265 return 1;
2266 }
2267 0
2268 }
2269 }
2270
2271 impl fidl::encoding::ValueTypeMarker for GuestDescriptor {
2272 type Borrowed<'a> = &'a Self;
2273 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2274 value
2275 }
2276 }
2277
2278 unsafe impl fidl::encoding::TypeMarker for GuestDescriptor {
2279 type Owned = Self;
2280
2281 #[inline(always)]
2282 fn inline_align(_context: fidl::encoding::Context) -> usize {
2283 8
2284 }
2285
2286 #[inline(always)]
2287 fn inline_size(_context: fidl::encoding::Context) -> usize {
2288 16
2289 }
2290 }
2291
2292 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<GuestDescriptor, D>
2293 for &GuestDescriptor
2294 {
2295 unsafe fn encode(
2296 self,
2297 encoder: &mut fidl::encoding::Encoder<'_, D>,
2298 offset: usize,
2299 mut depth: fidl::encoding::Depth,
2300 ) -> fidl::Result<()> {
2301 encoder.debug_check_bounds::<GuestDescriptor>(offset);
2302 let max_ordinal: u64 = self.max_ordinal_present();
2304 encoder.write_num(max_ordinal, offset);
2305 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
2306 if max_ordinal == 0 {
2308 return Ok(());
2309 }
2310 depth.increment()?;
2311 let envelope_size = 8;
2312 let bytes_len = max_ordinal as usize * envelope_size;
2313 #[allow(unused_variables)]
2314 let offset = encoder.out_of_line_offset(bytes_len);
2315 let mut _prev_end_offset: usize = 0;
2316 if 1 > max_ordinal {
2317 return Ok(());
2318 }
2319
2320 let cur_offset: usize = (1 - 1) * envelope_size;
2323
2324 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2326
2327 fidl::encoding::encode_in_envelope_optional::<u8, D>(
2332 self.num_cpus.as_ref().map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
2333 encoder,
2334 offset + cur_offset,
2335 depth,
2336 )?;
2337
2338 _prev_end_offset = cur_offset + envelope_size;
2339 if 2 > max_ordinal {
2340 return Ok(());
2341 }
2342
2343 let cur_offset: usize = (2 - 1) * envelope_size;
2346
2347 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2349
2350 fidl::encoding::encode_in_envelope_optional::<u64, D>(
2355 self.guest_memory.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
2356 encoder,
2357 offset + cur_offset,
2358 depth,
2359 )?;
2360
2361 _prev_end_offset = cur_offset + envelope_size;
2362 if 5 > max_ordinal {
2363 return Ok(());
2364 }
2365
2366 let cur_offset: usize = (5 - 1) * envelope_size;
2369
2370 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2372
2373 fidl::encoding::encode_in_envelope_optional::<bool, D>(
2378 self.balloon.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
2379 encoder,
2380 offset + cur_offset,
2381 depth,
2382 )?;
2383
2384 _prev_end_offset = cur_offset + envelope_size;
2385 if 6 > max_ordinal {
2386 return Ok(());
2387 }
2388
2389 let cur_offset: usize = (6 - 1) * envelope_size;
2392
2393 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2395
2396 fidl::encoding::encode_in_envelope_optional::<bool, D>(
2401 self.console.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
2402 encoder,
2403 offset + cur_offset,
2404 depth,
2405 )?;
2406
2407 _prev_end_offset = cur_offset + envelope_size;
2408 if 7 > max_ordinal {
2409 return Ok(());
2410 }
2411
2412 let cur_offset: usize = (7 - 1) * envelope_size;
2415
2416 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2418
2419 fidl::encoding::encode_in_envelope_optional::<bool, D>(
2424 self.gpu.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
2425 encoder,
2426 offset + cur_offset,
2427 depth,
2428 )?;
2429
2430 _prev_end_offset = cur_offset + envelope_size;
2431 if 8 > max_ordinal {
2432 return Ok(());
2433 }
2434
2435 let cur_offset: usize = (8 - 1) * envelope_size;
2438
2439 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2441
2442 fidl::encoding::encode_in_envelope_optional::<bool, D>(
2447 self.rng.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
2448 encoder,
2449 offset + cur_offset,
2450 depth,
2451 )?;
2452
2453 _prev_end_offset = cur_offset + envelope_size;
2454 if 9 > max_ordinal {
2455 return Ok(());
2456 }
2457
2458 let cur_offset: usize = (9 - 1) * envelope_size;
2461
2462 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2464
2465 fidl::encoding::encode_in_envelope_optional::<bool, D>(
2470 self.vsock.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
2471 encoder,
2472 offset + cur_offset,
2473 depth,
2474 )?;
2475
2476 _prev_end_offset = cur_offset + envelope_size;
2477 if 10 > max_ordinal {
2478 return Ok(());
2479 }
2480
2481 let cur_offset: usize = (10 - 1) * envelope_size;
2484
2485 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2487
2488 fidl::encoding::encode_in_envelope_optional::<bool, D>(
2493 self.sound.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
2494 encoder,
2495 offset + cur_offset,
2496 depth,
2497 )?;
2498
2499 _prev_end_offset = cur_offset + envelope_size;
2500 if 11 > max_ordinal {
2501 return Ok(());
2502 }
2503
2504 let cur_offset: usize = (11 - 1) * envelope_size;
2507
2508 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2510
2511 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<NetSpec, 32>, D>(
2516 self.networks.as_ref().map(<fidl::encoding::Vector<NetSpec, 32> as fidl::encoding::ValueTypeMarker>::borrow),
2517 encoder, offset + cur_offset, depth
2518 )?;
2519
2520 _prev_end_offset = cur_offset + envelope_size;
2521 if 12 > max_ordinal {
2522 return Ok(());
2523 }
2524
2525 let cur_offset: usize = (12 - 1) * envelope_size;
2528
2529 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2531
2532 fidl::encoding::encode_in_envelope_optional::<bool, D>(
2537 self.mem.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
2538 encoder,
2539 offset + cur_offset,
2540 depth,
2541 )?;
2542
2543 _prev_end_offset = cur_offset + envelope_size;
2544
2545 Ok(())
2546 }
2547 }
2548
2549 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for GuestDescriptor {
2550 #[inline(always)]
2551 fn new_empty() -> Self {
2552 Self::default()
2553 }
2554
2555 unsafe fn decode(
2556 &mut self,
2557 decoder: &mut fidl::encoding::Decoder<'_, D>,
2558 offset: usize,
2559 mut depth: fidl::encoding::Depth,
2560 ) -> fidl::Result<()> {
2561 decoder.debug_check_bounds::<Self>(offset);
2562 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
2563 None => return Err(fidl::Error::NotNullable),
2564 Some(len) => len,
2565 };
2566 if len == 0 {
2568 return Ok(());
2569 };
2570 depth.increment()?;
2571 let envelope_size = 8;
2572 let bytes_len = len * envelope_size;
2573 let offset = decoder.out_of_line_offset(bytes_len)?;
2574 let mut _next_ordinal_to_read = 0;
2576 let mut next_offset = offset;
2577 let end_offset = offset + bytes_len;
2578 _next_ordinal_to_read += 1;
2579 if next_offset >= end_offset {
2580 return Ok(());
2581 }
2582
2583 while _next_ordinal_to_read < 1 {
2585 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2586 _next_ordinal_to_read += 1;
2587 next_offset += envelope_size;
2588 }
2589
2590 let next_out_of_line = decoder.next_out_of_line();
2591 let handles_before = decoder.remaining_handles();
2592 if let Some((inlined, num_bytes, num_handles)) =
2593 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2594 {
2595 let member_inline_size =
2596 <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2597 if inlined != (member_inline_size <= 4) {
2598 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2599 }
2600 let inner_offset;
2601 let mut inner_depth = depth.clone();
2602 if inlined {
2603 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2604 inner_offset = next_offset;
2605 } else {
2606 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2607 inner_depth.increment()?;
2608 }
2609 let val_ref = self.num_cpus.get_or_insert_with(|| fidl::new_empty!(u8, D));
2610 fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
2611 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2612 {
2613 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2614 }
2615 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2616 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2617 }
2618 }
2619
2620 next_offset += envelope_size;
2621 _next_ordinal_to_read += 1;
2622 if next_offset >= end_offset {
2623 return Ok(());
2624 }
2625
2626 while _next_ordinal_to_read < 2 {
2628 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2629 _next_ordinal_to_read += 1;
2630 next_offset += envelope_size;
2631 }
2632
2633 let next_out_of_line = decoder.next_out_of_line();
2634 let handles_before = decoder.remaining_handles();
2635 if let Some((inlined, num_bytes, num_handles)) =
2636 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2637 {
2638 let member_inline_size =
2639 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2640 if inlined != (member_inline_size <= 4) {
2641 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2642 }
2643 let inner_offset;
2644 let mut inner_depth = depth.clone();
2645 if inlined {
2646 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2647 inner_offset = next_offset;
2648 } else {
2649 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2650 inner_depth.increment()?;
2651 }
2652 let val_ref = self.guest_memory.get_or_insert_with(|| fidl::new_empty!(u64, D));
2653 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
2654 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2655 {
2656 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2657 }
2658 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2659 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2660 }
2661 }
2662
2663 next_offset += envelope_size;
2664 _next_ordinal_to_read += 1;
2665 if next_offset >= end_offset {
2666 return Ok(());
2667 }
2668
2669 while _next_ordinal_to_read < 5 {
2671 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2672 _next_ordinal_to_read += 1;
2673 next_offset += envelope_size;
2674 }
2675
2676 let next_out_of_line = decoder.next_out_of_line();
2677 let handles_before = decoder.remaining_handles();
2678 if let Some((inlined, num_bytes, num_handles)) =
2679 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2680 {
2681 let member_inline_size =
2682 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2683 if inlined != (member_inline_size <= 4) {
2684 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2685 }
2686 let inner_offset;
2687 let mut inner_depth = depth.clone();
2688 if inlined {
2689 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2690 inner_offset = next_offset;
2691 } else {
2692 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2693 inner_depth.increment()?;
2694 }
2695 let val_ref = self.balloon.get_or_insert_with(|| fidl::new_empty!(bool, D));
2696 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
2697 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2698 {
2699 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2700 }
2701 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2702 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2703 }
2704 }
2705
2706 next_offset += envelope_size;
2707 _next_ordinal_to_read += 1;
2708 if next_offset >= end_offset {
2709 return Ok(());
2710 }
2711
2712 while _next_ordinal_to_read < 6 {
2714 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2715 _next_ordinal_to_read += 1;
2716 next_offset += envelope_size;
2717 }
2718
2719 let next_out_of_line = decoder.next_out_of_line();
2720 let handles_before = decoder.remaining_handles();
2721 if let Some((inlined, num_bytes, num_handles)) =
2722 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2723 {
2724 let member_inline_size =
2725 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2726 if inlined != (member_inline_size <= 4) {
2727 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2728 }
2729 let inner_offset;
2730 let mut inner_depth = depth.clone();
2731 if inlined {
2732 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2733 inner_offset = next_offset;
2734 } else {
2735 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2736 inner_depth.increment()?;
2737 }
2738 let val_ref = self.console.get_or_insert_with(|| fidl::new_empty!(bool, D));
2739 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
2740 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2741 {
2742 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2743 }
2744 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2745 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2746 }
2747 }
2748
2749 next_offset += envelope_size;
2750 _next_ordinal_to_read += 1;
2751 if next_offset >= end_offset {
2752 return Ok(());
2753 }
2754
2755 while _next_ordinal_to_read < 7 {
2757 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2758 _next_ordinal_to_read += 1;
2759 next_offset += envelope_size;
2760 }
2761
2762 let next_out_of_line = decoder.next_out_of_line();
2763 let handles_before = decoder.remaining_handles();
2764 if let Some((inlined, num_bytes, num_handles)) =
2765 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2766 {
2767 let member_inline_size =
2768 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2769 if inlined != (member_inline_size <= 4) {
2770 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2771 }
2772 let inner_offset;
2773 let mut inner_depth = depth.clone();
2774 if inlined {
2775 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2776 inner_offset = next_offset;
2777 } else {
2778 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2779 inner_depth.increment()?;
2780 }
2781 let val_ref = self.gpu.get_or_insert_with(|| fidl::new_empty!(bool, D));
2782 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
2783 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2784 {
2785 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2786 }
2787 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2788 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2789 }
2790 }
2791
2792 next_offset += envelope_size;
2793 _next_ordinal_to_read += 1;
2794 if next_offset >= end_offset {
2795 return Ok(());
2796 }
2797
2798 while _next_ordinal_to_read < 8 {
2800 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2801 _next_ordinal_to_read += 1;
2802 next_offset += envelope_size;
2803 }
2804
2805 let next_out_of_line = decoder.next_out_of_line();
2806 let handles_before = decoder.remaining_handles();
2807 if let Some((inlined, num_bytes, num_handles)) =
2808 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2809 {
2810 let member_inline_size =
2811 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2812 if inlined != (member_inline_size <= 4) {
2813 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2814 }
2815 let inner_offset;
2816 let mut inner_depth = depth.clone();
2817 if inlined {
2818 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2819 inner_offset = next_offset;
2820 } else {
2821 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2822 inner_depth.increment()?;
2823 }
2824 let val_ref = self.rng.get_or_insert_with(|| fidl::new_empty!(bool, D));
2825 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
2826 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2827 {
2828 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2829 }
2830 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2831 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2832 }
2833 }
2834
2835 next_offset += envelope_size;
2836 _next_ordinal_to_read += 1;
2837 if next_offset >= end_offset {
2838 return Ok(());
2839 }
2840
2841 while _next_ordinal_to_read < 9 {
2843 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2844 _next_ordinal_to_read += 1;
2845 next_offset += envelope_size;
2846 }
2847
2848 let next_out_of_line = decoder.next_out_of_line();
2849 let handles_before = decoder.remaining_handles();
2850 if let Some((inlined, num_bytes, num_handles)) =
2851 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2852 {
2853 let member_inline_size =
2854 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2855 if inlined != (member_inline_size <= 4) {
2856 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2857 }
2858 let inner_offset;
2859 let mut inner_depth = depth.clone();
2860 if inlined {
2861 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2862 inner_offset = next_offset;
2863 } else {
2864 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2865 inner_depth.increment()?;
2866 }
2867 let val_ref = self.vsock.get_or_insert_with(|| fidl::new_empty!(bool, D));
2868 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
2869 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2870 {
2871 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2872 }
2873 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2874 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2875 }
2876 }
2877
2878 next_offset += envelope_size;
2879 _next_ordinal_to_read += 1;
2880 if next_offset >= end_offset {
2881 return Ok(());
2882 }
2883
2884 while _next_ordinal_to_read < 10 {
2886 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2887 _next_ordinal_to_read += 1;
2888 next_offset += envelope_size;
2889 }
2890
2891 let next_out_of_line = decoder.next_out_of_line();
2892 let handles_before = decoder.remaining_handles();
2893 if let Some((inlined, num_bytes, num_handles)) =
2894 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2895 {
2896 let member_inline_size =
2897 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2898 if inlined != (member_inline_size <= 4) {
2899 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2900 }
2901 let inner_offset;
2902 let mut inner_depth = depth.clone();
2903 if inlined {
2904 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2905 inner_offset = next_offset;
2906 } else {
2907 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2908 inner_depth.increment()?;
2909 }
2910 let val_ref = self.sound.get_or_insert_with(|| fidl::new_empty!(bool, D));
2911 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
2912 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2913 {
2914 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2915 }
2916 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2917 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2918 }
2919 }
2920
2921 next_offset += envelope_size;
2922 _next_ordinal_to_read += 1;
2923 if next_offset >= end_offset {
2924 return Ok(());
2925 }
2926
2927 while _next_ordinal_to_read < 11 {
2929 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2930 _next_ordinal_to_read += 1;
2931 next_offset += envelope_size;
2932 }
2933
2934 let next_out_of_line = decoder.next_out_of_line();
2935 let handles_before = decoder.remaining_handles();
2936 if let Some((inlined, num_bytes, num_handles)) =
2937 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2938 {
2939 let member_inline_size = <fidl::encoding::Vector<NetSpec, 32> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2940 if inlined != (member_inline_size <= 4) {
2941 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2942 }
2943 let inner_offset;
2944 let mut inner_depth = depth.clone();
2945 if inlined {
2946 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2947 inner_offset = next_offset;
2948 } else {
2949 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2950 inner_depth.increment()?;
2951 }
2952 let val_ref = self.networks.get_or_insert_with(
2953 || fidl::new_empty!(fidl::encoding::Vector<NetSpec, 32>, D),
2954 );
2955 fidl::decode!(fidl::encoding::Vector<NetSpec, 32>, D, val_ref, decoder, inner_offset, inner_depth)?;
2956 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2957 {
2958 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2959 }
2960 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2961 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2962 }
2963 }
2964
2965 next_offset += envelope_size;
2966 _next_ordinal_to_read += 1;
2967 if next_offset >= end_offset {
2968 return Ok(());
2969 }
2970
2971 while _next_ordinal_to_read < 12 {
2973 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2974 _next_ordinal_to_read += 1;
2975 next_offset += envelope_size;
2976 }
2977
2978 let next_out_of_line = decoder.next_out_of_line();
2979 let handles_before = decoder.remaining_handles();
2980 if let Some((inlined, num_bytes, num_handles)) =
2981 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2982 {
2983 let member_inline_size =
2984 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2985 if inlined != (member_inline_size <= 4) {
2986 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2987 }
2988 let inner_offset;
2989 let mut inner_depth = depth.clone();
2990 if inlined {
2991 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2992 inner_offset = next_offset;
2993 } else {
2994 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2995 inner_depth.increment()?;
2996 }
2997 let val_ref = self.mem.get_or_insert_with(|| fidl::new_empty!(bool, D));
2998 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
2999 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3000 {
3001 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3002 }
3003 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3004 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3005 }
3006 }
3007
3008 next_offset += envelope_size;
3009
3010 while next_offset < end_offset {
3012 _next_ordinal_to_read += 1;
3013 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3014 next_offset += envelope_size;
3015 }
3016
3017 Ok(())
3018 }
3019 }
3020
3021 impl GuestInfo {
3022 #[inline(always)]
3023 fn max_ordinal_present(&self) -> u64 {
3024 if let Some(_) = self.detected_problems {
3025 return 5;
3026 }
3027 if let Some(_) = self.stop_error {
3028 return 4;
3029 }
3030 if let Some(_) = self.guest_descriptor {
3031 return 3;
3032 }
3033 if let Some(_) = self.uptime {
3034 return 2;
3035 }
3036 if let Some(_) = self.guest_status {
3037 return 1;
3038 }
3039 0
3040 }
3041 }
3042
3043 impl fidl::encoding::ValueTypeMarker for GuestInfo {
3044 type Borrowed<'a> = &'a Self;
3045 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3046 value
3047 }
3048 }
3049
3050 unsafe impl fidl::encoding::TypeMarker for GuestInfo {
3051 type Owned = Self;
3052
3053 #[inline(always)]
3054 fn inline_align(_context: fidl::encoding::Context) -> usize {
3055 8
3056 }
3057
3058 #[inline(always)]
3059 fn inline_size(_context: fidl::encoding::Context) -> usize {
3060 16
3061 }
3062 }
3063
3064 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<GuestInfo, D>
3065 for &GuestInfo
3066 {
3067 unsafe fn encode(
3068 self,
3069 encoder: &mut fidl::encoding::Encoder<'_, D>,
3070 offset: usize,
3071 mut depth: fidl::encoding::Depth,
3072 ) -> fidl::Result<()> {
3073 encoder.debug_check_bounds::<GuestInfo>(offset);
3074 let max_ordinal: u64 = self.max_ordinal_present();
3076 encoder.write_num(max_ordinal, offset);
3077 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
3078 if max_ordinal == 0 {
3080 return Ok(());
3081 }
3082 depth.increment()?;
3083 let envelope_size = 8;
3084 let bytes_len = max_ordinal as usize * envelope_size;
3085 #[allow(unused_variables)]
3086 let offset = encoder.out_of_line_offset(bytes_len);
3087 let mut _prev_end_offset: usize = 0;
3088 if 1 > max_ordinal {
3089 return Ok(());
3090 }
3091
3092 let cur_offset: usize = (1 - 1) * envelope_size;
3095
3096 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3098
3099 fidl::encoding::encode_in_envelope_optional::<GuestStatus, D>(
3104 self.guest_status
3105 .as_ref()
3106 .map(<GuestStatus as fidl::encoding::ValueTypeMarker>::borrow),
3107 encoder,
3108 offset + cur_offset,
3109 depth,
3110 )?;
3111
3112 _prev_end_offset = cur_offset + envelope_size;
3113 if 2 > max_ordinal {
3114 return Ok(());
3115 }
3116
3117 let cur_offset: usize = (2 - 1) * envelope_size;
3120
3121 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3123
3124 fidl::encoding::encode_in_envelope_optional::<i64, D>(
3129 self.uptime.as_ref().map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
3130 encoder,
3131 offset + cur_offset,
3132 depth,
3133 )?;
3134
3135 _prev_end_offset = cur_offset + envelope_size;
3136 if 3 > max_ordinal {
3137 return Ok(());
3138 }
3139
3140 let cur_offset: usize = (3 - 1) * envelope_size;
3143
3144 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3146
3147 fidl::encoding::encode_in_envelope_optional::<GuestDescriptor, D>(
3152 self.guest_descriptor
3153 .as_ref()
3154 .map(<GuestDescriptor as fidl::encoding::ValueTypeMarker>::borrow),
3155 encoder,
3156 offset + cur_offset,
3157 depth,
3158 )?;
3159
3160 _prev_end_offset = cur_offset + envelope_size;
3161 if 4 > max_ordinal {
3162 return Ok(());
3163 }
3164
3165 let cur_offset: usize = (4 - 1) * envelope_size;
3168
3169 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3171
3172 fidl::encoding::encode_in_envelope_optional::<GuestError, D>(
3177 self.stop_error
3178 .as_ref()
3179 .map(<GuestError as fidl::encoding::ValueTypeMarker>::borrow),
3180 encoder,
3181 offset + cur_offset,
3182 depth,
3183 )?;
3184
3185 _prev_end_offset = cur_offset + envelope_size;
3186 if 5 > max_ordinal {
3187 return Ok(());
3188 }
3189
3190 let cur_offset: usize = (5 - 1) * envelope_size;
3193
3194 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3196
3197 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<fidl::encoding::UnboundedString, 8>, D>(
3202 self.detected_problems.as_ref().map(<fidl::encoding::Vector<fidl::encoding::UnboundedString, 8> as fidl::encoding::ValueTypeMarker>::borrow),
3203 encoder, offset + cur_offset, depth
3204 )?;
3205
3206 _prev_end_offset = cur_offset + envelope_size;
3207
3208 Ok(())
3209 }
3210 }
3211
3212 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for GuestInfo {
3213 #[inline(always)]
3214 fn new_empty() -> Self {
3215 Self::default()
3216 }
3217
3218 unsafe fn decode(
3219 &mut self,
3220 decoder: &mut fidl::encoding::Decoder<'_, D>,
3221 offset: usize,
3222 mut depth: fidl::encoding::Depth,
3223 ) -> fidl::Result<()> {
3224 decoder.debug_check_bounds::<Self>(offset);
3225 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
3226 None => return Err(fidl::Error::NotNullable),
3227 Some(len) => len,
3228 };
3229 if len == 0 {
3231 return Ok(());
3232 };
3233 depth.increment()?;
3234 let envelope_size = 8;
3235 let bytes_len = len * envelope_size;
3236 let offset = decoder.out_of_line_offset(bytes_len)?;
3237 let mut _next_ordinal_to_read = 0;
3239 let mut next_offset = offset;
3240 let end_offset = offset + bytes_len;
3241 _next_ordinal_to_read += 1;
3242 if next_offset >= end_offset {
3243 return Ok(());
3244 }
3245
3246 while _next_ordinal_to_read < 1 {
3248 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3249 _next_ordinal_to_read += 1;
3250 next_offset += envelope_size;
3251 }
3252
3253 let next_out_of_line = decoder.next_out_of_line();
3254 let handles_before = decoder.remaining_handles();
3255 if let Some((inlined, num_bytes, num_handles)) =
3256 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3257 {
3258 let member_inline_size =
3259 <GuestStatus as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3260 if inlined != (member_inline_size <= 4) {
3261 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3262 }
3263 let inner_offset;
3264 let mut inner_depth = depth.clone();
3265 if inlined {
3266 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3267 inner_offset = next_offset;
3268 } else {
3269 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3270 inner_depth.increment()?;
3271 }
3272 let val_ref =
3273 self.guest_status.get_or_insert_with(|| fidl::new_empty!(GuestStatus, D));
3274 fidl::decode!(GuestStatus, D, val_ref, decoder, inner_offset, inner_depth)?;
3275 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3276 {
3277 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3278 }
3279 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3280 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3281 }
3282 }
3283
3284 next_offset += envelope_size;
3285 _next_ordinal_to_read += 1;
3286 if next_offset >= end_offset {
3287 return Ok(());
3288 }
3289
3290 while _next_ordinal_to_read < 2 {
3292 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3293 _next_ordinal_to_read += 1;
3294 next_offset += envelope_size;
3295 }
3296
3297 let next_out_of_line = decoder.next_out_of_line();
3298 let handles_before = decoder.remaining_handles();
3299 if let Some((inlined, num_bytes, num_handles)) =
3300 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3301 {
3302 let member_inline_size =
3303 <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3304 if inlined != (member_inline_size <= 4) {
3305 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3306 }
3307 let inner_offset;
3308 let mut inner_depth = depth.clone();
3309 if inlined {
3310 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3311 inner_offset = next_offset;
3312 } else {
3313 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3314 inner_depth.increment()?;
3315 }
3316 let val_ref = self.uptime.get_or_insert_with(|| fidl::new_empty!(i64, D));
3317 fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
3318 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3319 {
3320 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3321 }
3322 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3323 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3324 }
3325 }
3326
3327 next_offset += envelope_size;
3328 _next_ordinal_to_read += 1;
3329 if next_offset >= end_offset {
3330 return Ok(());
3331 }
3332
3333 while _next_ordinal_to_read < 3 {
3335 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3336 _next_ordinal_to_read += 1;
3337 next_offset += envelope_size;
3338 }
3339
3340 let next_out_of_line = decoder.next_out_of_line();
3341 let handles_before = decoder.remaining_handles();
3342 if let Some((inlined, num_bytes, num_handles)) =
3343 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3344 {
3345 let member_inline_size =
3346 <GuestDescriptor as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3347 if inlined != (member_inline_size <= 4) {
3348 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3349 }
3350 let inner_offset;
3351 let mut inner_depth = depth.clone();
3352 if inlined {
3353 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3354 inner_offset = next_offset;
3355 } else {
3356 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3357 inner_depth.increment()?;
3358 }
3359 let val_ref = self
3360 .guest_descriptor
3361 .get_or_insert_with(|| fidl::new_empty!(GuestDescriptor, D));
3362 fidl::decode!(GuestDescriptor, D, val_ref, decoder, inner_offset, inner_depth)?;
3363 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3364 {
3365 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3366 }
3367 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3368 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3369 }
3370 }
3371
3372 next_offset += envelope_size;
3373 _next_ordinal_to_read += 1;
3374 if next_offset >= end_offset {
3375 return Ok(());
3376 }
3377
3378 while _next_ordinal_to_read < 4 {
3380 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3381 _next_ordinal_to_read += 1;
3382 next_offset += envelope_size;
3383 }
3384
3385 let next_out_of_line = decoder.next_out_of_line();
3386 let handles_before = decoder.remaining_handles();
3387 if let Some((inlined, num_bytes, num_handles)) =
3388 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3389 {
3390 let member_inline_size =
3391 <GuestError as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3392 if inlined != (member_inline_size <= 4) {
3393 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3394 }
3395 let inner_offset;
3396 let mut inner_depth = depth.clone();
3397 if inlined {
3398 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3399 inner_offset = next_offset;
3400 } else {
3401 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3402 inner_depth.increment()?;
3403 }
3404 let val_ref =
3405 self.stop_error.get_or_insert_with(|| fidl::new_empty!(GuestError, D));
3406 fidl::decode!(GuestError, D, val_ref, decoder, inner_offset, inner_depth)?;
3407 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3408 {
3409 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3410 }
3411 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3412 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3413 }
3414 }
3415
3416 next_offset += envelope_size;
3417 _next_ordinal_to_read += 1;
3418 if next_offset >= end_offset {
3419 return Ok(());
3420 }
3421
3422 while _next_ordinal_to_read < 5 {
3424 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3425 _next_ordinal_to_read += 1;
3426 next_offset += envelope_size;
3427 }
3428
3429 let next_out_of_line = decoder.next_out_of_line();
3430 let handles_before = decoder.remaining_handles();
3431 if let Some((inlined, num_bytes, num_handles)) =
3432 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3433 {
3434 let member_inline_size = <fidl::encoding::Vector<fidl::encoding::UnboundedString, 8> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3435 if inlined != (member_inline_size <= 4) {
3436 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3437 }
3438 let inner_offset;
3439 let mut inner_depth = depth.clone();
3440 if inlined {
3441 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3442 inner_offset = next_offset;
3443 } else {
3444 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3445 inner_depth.increment()?;
3446 }
3447 let val_ref =
3448 self.detected_problems.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<fidl::encoding::UnboundedString, 8>, D));
3449 fidl::decode!(fidl::encoding::Vector<fidl::encoding::UnboundedString, 8>, D, val_ref, decoder, inner_offset, inner_depth)?;
3450 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3451 {
3452 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3453 }
3454 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3455 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3456 }
3457 }
3458
3459 next_offset += envelope_size;
3460
3461 while next_offset < end_offset {
3463 _next_ordinal_to_read += 1;
3464 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3465 next_offset += envelope_size;
3466 }
3467
3468 Ok(())
3469 }
3470 }
3471
3472 impl LinuxGuestInfo {
3473 #[inline(always)]
3474 fn max_ordinal_present(&self) -> u64 {
3475 if let Some(_) = self.failure_reason {
3476 return 4;
3477 }
3478 if let Some(_) = self.download_percent {
3479 return 3;
3480 }
3481 if let Some(_) = self.container_status {
3482 return 2;
3483 }
3484 if let Some(_) = self.cid {
3485 return 1;
3486 }
3487 0
3488 }
3489 }
3490
3491 impl fidl::encoding::ValueTypeMarker for LinuxGuestInfo {
3492 type Borrowed<'a> = &'a Self;
3493 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3494 value
3495 }
3496 }
3497
3498 unsafe impl fidl::encoding::TypeMarker for LinuxGuestInfo {
3499 type Owned = Self;
3500
3501 #[inline(always)]
3502 fn inline_align(_context: fidl::encoding::Context) -> usize {
3503 8
3504 }
3505
3506 #[inline(always)]
3507 fn inline_size(_context: fidl::encoding::Context) -> usize {
3508 16
3509 }
3510 }
3511
3512 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<LinuxGuestInfo, D>
3513 for &LinuxGuestInfo
3514 {
3515 unsafe fn encode(
3516 self,
3517 encoder: &mut fidl::encoding::Encoder<'_, D>,
3518 offset: usize,
3519 mut depth: fidl::encoding::Depth,
3520 ) -> fidl::Result<()> {
3521 encoder.debug_check_bounds::<LinuxGuestInfo>(offset);
3522 let max_ordinal: u64 = self.max_ordinal_present();
3524 encoder.write_num(max_ordinal, offset);
3525 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
3526 if max_ordinal == 0 {
3528 return Ok(());
3529 }
3530 depth.increment()?;
3531 let envelope_size = 8;
3532 let bytes_len = max_ordinal as usize * envelope_size;
3533 #[allow(unused_variables)]
3534 let offset = encoder.out_of_line_offset(bytes_len);
3535 let mut _prev_end_offset: usize = 0;
3536 if 1 > max_ordinal {
3537 return Ok(());
3538 }
3539
3540 let cur_offset: usize = (1 - 1) * envelope_size;
3543
3544 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3546
3547 fidl::encoding::encode_in_envelope_optional::<u32, D>(
3552 self.cid.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
3553 encoder,
3554 offset + cur_offset,
3555 depth,
3556 )?;
3557
3558 _prev_end_offset = cur_offset + envelope_size;
3559 if 2 > max_ordinal {
3560 return Ok(());
3561 }
3562
3563 let cur_offset: usize = (2 - 1) * envelope_size;
3566
3567 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3569
3570 fidl::encoding::encode_in_envelope_optional::<ContainerStatus, D>(
3575 self.container_status
3576 .as_ref()
3577 .map(<ContainerStatus as fidl::encoding::ValueTypeMarker>::borrow),
3578 encoder,
3579 offset + cur_offset,
3580 depth,
3581 )?;
3582
3583 _prev_end_offset = cur_offset + envelope_size;
3584 if 3 > max_ordinal {
3585 return Ok(());
3586 }
3587
3588 let cur_offset: usize = (3 - 1) * envelope_size;
3591
3592 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3594
3595 fidl::encoding::encode_in_envelope_optional::<i32, D>(
3600 self.download_percent
3601 .as_ref()
3602 .map(<i32 as fidl::encoding::ValueTypeMarker>::borrow),
3603 encoder,
3604 offset + cur_offset,
3605 depth,
3606 )?;
3607
3608 _prev_end_offset = cur_offset + envelope_size;
3609 if 4 > max_ordinal {
3610 return Ok(());
3611 }
3612
3613 let cur_offset: usize = (4 - 1) * envelope_size;
3616
3617 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3619
3620 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedString, D>(
3625 self.failure_reason.as_ref().map(
3626 <fidl::encoding::UnboundedString as fidl::encoding::ValueTypeMarker>::borrow,
3627 ),
3628 encoder,
3629 offset + cur_offset,
3630 depth,
3631 )?;
3632
3633 _prev_end_offset = cur_offset + envelope_size;
3634
3635 Ok(())
3636 }
3637 }
3638
3639 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for LinuxGuestInfo {
3640 #[inline(always)]
3641 fn new_empty() -> Self {
3642 Self::default()
3643 }
3644
3645 unsafe fn decode(
3646 &mut self,
3647 decoder: &mut fidl::encoding::Decoder<'_, D>,
3648 offset: usize,
3649 mut depth: fidl::encoding::Depth,
3650 ) -> fidl::Result<()> {
3651 decoder.debug_check_bounds::<Self>(offset);
3652 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
3653 None => return Err(fidl::Error::NotNullable),
3654 Some(len) => len,
3655 };
3656 if len == 0 {
3658 return Ok(());
3659 };
3660 depth.increment()?;
3661 let envelope_size = 8;
3662 let bytes_len = len * envelope_size;
3663 let offset = decoder.out_of_line_offset(bytes_len)?;
3664 let mut _next_ordinal_to_read = 0;
3666 let mut next_offset = offset;
3667 let end_offset = offset + bytes_len;
3668 _next_ordinal_to_read += 1;
3669 if next_offset >= end_offset {
3670 return Ok(());
3671 }
3672
3673 while _next_ordinal_to_read < 1 {
3675 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3676 _next_ordinal_to_read += 1;
3677 next_offset += envelope_size;
3678 }
3679
3680 let next_out_of_line = decoder.next_out_of_line();
3681 let handles_before = decoder.remaining_handles();
3682 if let Some((inlined, num_bytes, num_handles)) =
3683 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3684 {
3685 let member_inline_size =
3686 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3687 if inlined != (member_inline_size <= 4) {
3688 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3689 }
3690 let inner_offset;
3691 let mut inner_depth = depth.clone();
3692 if inlined {
3693 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3694 inner_offset = next_offset;
3695 } else {
3696 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3697 inner_depth.increment()?;
3698 }
3699 let val_ref = self.cid.get_or_insert_with(|| fidl::new_empty!(u32, D));
3700 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
3701 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3702 {
3703 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3704 }
3705 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3706 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3707 }
3708 }
3709
3710 next_offset += envelope_size;
3711 _next_ordinal_to_read += 1;
3712 if next_offset >= end_offset {
3713 return Ok(());
3714 }
3715
3716 while _next_ordinal_to_read < 2 {
3718 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3719 _next_ordinal_to_read += 1;
3720 next_offset += envelope_size;
3721 }
3722
3723 let next_out_of_line = decoder.next_out_of_line();
3724 let handles_before = decoder.remaining_handles();
3725 if let Some((inlined, num_bytes, num_handles)) =
3726 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3727 {
3728 let member_inline_size =
3729 <ContainerStatus as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3730 if inlined != (member_inline_size <= 4) {
3731 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3732 }
3733 let inner_offset;
3734 let mut inner_depth = depth.clone();
3735 if inlined {
3736 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3737 inner_offset = next_offset;
3738 } else {
3739 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3740 inner_depth.increment()?;
3741 }
3742 let val_ref = self
3743 .container_status
3744 .get_or_insert_with(|| fidl::new_empty!(ContainerStatus, D));
3745 fidl::decode!(ContainerStatus, D, val_ref, decoder, inner_offset, inner_depth)?;
3746 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3747 {
3748 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3749 }
3750 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3751 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3752 }
3753 }
3754
3755 next_offset += envelope_size;
3756 _next_ordinal_to_read += 1;
3757 if next_offset >= end_offset {
3758 return Ok(());
3759 }
3760
3761 while _next_ordinal_to_read < 3 {
3763 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3764 _next_ordinal_to_read += 1;
3765 next_offset += envelope_size;
3766 }
3767
3768 let next_out_of_line = decoder.next_out_of_line();
3769 let handles_before = decoder.remaining_handles();
3770 if let Some((inlined, num_bytes, num_handles)) =
3771 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3772 {
3773 let member_inline_size =
3774 <i32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3775 if inlined != (member_inline_size <= 4) {
3776 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3777 }
3778 let inner_offset;
3779 let mut inner_depth = depth.clone();
3780 if inlined {
3781 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3782 inner_offset = next_offset;
3783 } else {
3784 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3785 inner_depth.increment()?;
3786 }
3787 let val_ref = self.download_percent.get_or_insert_with(|| fidl::new_empty!(i32, D));
3788 fidl::decode!(i32, D, val_ref, decoder, inner_offset, inner_depth)?;
3789 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3790 {
3791 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3792 }
3793 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3794 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3795 }
3796 }
3797
3798 next_offset += envelope_size;
3799 _next_ordinal_to_read += 1;
3800 if next_offset >= end_offset {
3801 return Ok(());
3802 }
3803
3804 while _next_ordinal_to_read < 4 {
3806 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3807 _next_ordinal_to_read += 1;
3808 next_offset += envelope_size;
3809 }
3810
3811 let next_out_of_line = decoder.next_out_of_line();
3812 let handles_before = decoder.remaining_handles();
3813 if let Some((inlined, num_bytes, num_handles)) =
3814 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3815 {
3816 let member_inline_size =
3817 <fidl::encoding::UnboundedString as fidl::encoding::TypeMarker>::inline_size(
3818 decoder.context,
3819 );
3820 if inlined != (member_inline_size <= 4) {
3821 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3822 }
3823 let inner_offset;
3824 let mut inner_depth = depth.clone();
3825 if inlined {
3826 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3827 inner_offset = next_offset;
3828 } else {
3829 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3830 inner_depth.increment()?;
3831 }
3832 let val_ref = self
3833 .failure_reason
3834 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::UnboundedString, D));
3835 fidl::decode!(
3836 fidl::encoding::UnboundedString,
3837 D,
3838 val_ref,
3839 decoder,
3840 inner_offset,
3841 inner_depth
3842 )?;
3843 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3844 {
3845 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3846 }
3847 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3848 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3849 }
3850 }
3851
3852 next_offset += envelope_size;
3853
3854 while next_offset < end_offset {
3856 _next_ordinal_to_read += 1;
3857 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3858 next_offset += envelope_size;
3859 }
3860
3861 Ok(())
3862 }
3863 }
3864}