fidl_fuchsia_reloaddriver_test__common/
fidl_fuchsia_reloaddriver_test__common.rs

1// WARNING: This file is machine generated by fidlgen.
2
3#![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 MAX_FROM_LENGTH: u64 = 32;
12
13#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
14pub struct WaiterAckRequest {
15    pub from_node: String,
16    pub from_name: String,
17    pub status: i32,
18}
19
20impl fidl::Persistable for WaiterAckRequest {}
21
22pub mod waiter_ordinals {
23    pub const ACK: u64 = 0x7e80870431180046;
24}
25
26mod internal {
27    use super::*;
28
29    impl fidl::encoding::ValueTypeMarker for WaiterAckRequest {
30        type Borrowed<'a> = &'a Self;
31        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
32            value
33        }
34    }
35
36    unsafe impl fidl::encoding::TypeMarker for WaiterAckRequest {
37        type Owned = Self;
38
39        #[inline(always)]
40        fn inline_align(_context: fidl::encoding::Context) -> usize {
41            8
42        }
43
44        #[inline(always)]
45        fn inline_size(_context: fidl::encoding::Context) -> usize {
46            40
47        }
48    }
49
50    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<WaiterAckRequest, D>
51        for &WaiterAckRequest
52    {
53        #[inline]
54        unsafe fn encode(
55            self,
56            encoder: &mut fidl::encoding::Encoder<'_, D>,
57            offset: usize,
58            _depth: fidl::encoding::Depth,
59        ) -> fidl::Result<()> {
60            encoder.debug_check_bounds::<WaiterAckRequest>(offset);
61            // Delegate to tuple encoding.
62            fidl::encoding::Encode::<WaiterAckRequest, D>::encode(
63                (
64                    <fidl::encoding::BoundedString<32> as fidl::encoding::ValueTypeMarker>::borrow(
65                        &self.from_node,
66                    ),
67                    <fidl::encoding::BoundedString<32> as fidl::encoding::ValueTypeMarker>::borrow(
68                        &self.from_name,
69                    ),
70                    <i32 as fidl::encoding::ValueTypeMarker>::borrow(&self.status),
71                ),
72                encoder,
73                offset,
74                _depth,
75            )
76        }
77    }
78    unsafe impl<
79            D: fidl::encoding::ResourceDialect,
80            T0: fidl::encoding::Encode<fidl::encoding::BoundedString<32>, D>,
81            T1: fidl::encoding::Encode<fidl::encoding::BoundedString<32>, D>,
82            T2: fidl::encoding::Encode<i32, D>,
83        > fidl::encoding::Encode<WaiterAckRequest, D> for (T0, T1, T2)
84    {
85        #[inline]
86        unsafe fn encode(
87            self,
88            encoder: &mut fidl::encoding::Encoder<'_, D>,
89            offset: usize,
90            depth: fidl::encoding::Depth,
91        ) -> fidl::Result<()> {
92            encoder.debug_check_bounds::<WaiterAckRequest>(offset);
93            // Zero out padding regions. There's no need to apply masks
94            // because the unmasked parts will be overwritten by fields.
95            unsafe {
96                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(32);
97                (ptr as *mut u64).write_unaligned(0);
98            }
99            // Write the fields.
100            self.0.encode(encoder, offset + 0, depth)?;
101            self.1.encode(encoder, offset + 16, depth)?;
102            self.2.encode(encoder, offset + 32, depth)?;
103            Ok(())
104        }
105    }
106
107    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for WaiterAckRequest {
108        #[inline(always)]
109        fn new_empty() -> Self {
110            Self {
111                from_node: fidl::new_empty!(fidl::encoding::BoundedString<32>, D),
112                from_name: fidl::new_empty!(fidl::encoding::BoundedString<32>, D),
113                status: fidl::new_empty!(i32, D),
114            }
115        }
116
117        #[inline]
118        unsafe fn decode(
119            &mut self,
120            decoder: &mut fidl::encoding::Decoder<'_, D>,
121            offset: usize,
122            _depth: fidl::encoding::Depth,
123        ) -> fidl::Result<()> {
124            decoder.debug_check_bounds::<Self>(offset);
125            // Verify that padding bytes are zero.
126            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(32) };
127            let padval = unsafe { (ptr as *const u64).read_unaligned() };
128            let mask = 0xffffffff00000000u64;
129            let maskedval = padval & mask;
130            if maskedval != 0 {
131                return Err(fidl::Error::NonZeroPadding {
132                    padding_start: offset + 32 + ((mask as u64).trailing_zeros() / 8) as usize,
133                });
134            }
135            fidl::decode!(
136                fidl::encoding::BoundedString<32>,
137                D,
138                &mut self.from_node,
139                decoder,
140                offset + 0,
141                _depth
142            )?;
143            fidl::decode!(
144                fidl::encoding::BoundedString<32>,
145                D,
146                &mut self.from_name,
147                decoder,
148                offset + 16,
149                _depth
150            )?;
151            fidl::decode!(i32, D, &mut self.status, decoder, offset + 32, _depth)?;
152            Ok(())
153        }
154    }
155}