fidl_cf_sc_internal_driverindexconfig__common/
fidl_cf_sc_internal_driverindexconfig__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
11#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
12pub struct Config {
13    pub base_drivers: Vec<String>,
14    pub bind_eager: Vec<String>,
15    pub boot_drivers: Vec<String>,
16    pub delay_fallback_until_base_drivers_indexed: bool,
17    pub disabled_drivers: Vec<String>,
18    pub driver_load_fuzzer_max_delay_ms: i64,
19    pub enable_driver_load_fuzzer: bool,
20    pub enable_ephemeral_drivers: bool,
21    pub stop_on_idle_timeout_millis: i64,
22}
23
24impl fidl::Persistable for Config {}
25
26mod internal {
27    use super::*;
28
29    impl fidl::encoding::ValueTypeMarker for Config {
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 Config {
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            96
47        }
48    }
49
50    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Config, D> for &Config {
51        #[inline]
52        unsafe fn encode(
53            self,
54            encoder: &mut fidl::encoding::Encoder<'_, D>,
55            offset: usize,
56            _depth: fidl::encoding::Depth,
57        ) -> fidl::Result<()> {
58            encoder.debug_check_bounds::<Config>(offset);
59            // Delegate to tuple encoding.
60            fidl::encoding::Encode::<Config, D>::encode(
61                (
62                    <fidl::encoding::Vector<fidl::encoding::BoundedString<150>, 200> as fidl::encoding::ValueTypeMarker>::borrow(&self.base_drivers),
63                    <fidl::encoding::Vector<fidl::encoding::BoundedString<100>, 20> as fidl::encoding::ValueTypeMarker>::borrow(&self.bind_eager),
64                    <fidl::encoding::Vector<fidl::encoding::BoundedString<150>, 200> as fidl::encoding::ValueTypeMarker>::borrow(&self.boot_drivers),
65                    <bool as fidl::encoding::ValueTypeMarker>::borrow(&self.delay_fallback_until_base_drivers_indexed),
66                    <fidl::encoding::Vector<fidl::encoding::BoundedString<100>, 20> as fidl::encoding::ValueTypeMarker>::borrow(&self.disabled_drivers),
67                    <i64 as fidl::encoding::ValueTypeMarker>::borrow(&self.driver_load_fuzzer_max_delay_ms),
68                    <bool as fidl::encoding::ValueTypeMarker>::borrow(&self.enable_driver_load_fuzzer),
69                    <bool as fidl::encoding::ValueTypeMarker>::borrow(&self.enable_ephemeral_drivers),
70                    <i64 as fidl::encoding::ValueTypeMarker>::borrow(&self.stop_on_idle_timeout_millis),
71                ),
72                encoder, offset, _depth
73            )
74        }
75    }
76    unsafe impl<
77        D: fidl::encoding::ResourceDialect,
78        T0: fidl::encoding::Encode<fidl::encoding::Vector<fidl::encoding::BoundedString<150>, 200>, D>,
79        T1: fidl::encoding::Encode<fidl::encoding::Vector<fidl::encoding::BoundedString<100>, 20>, D>,
80        T2: fidl::encoding::Encode<fidl::encoding::Vector<fidl::encoding::BoundedString<150>, 200>, D>,
81        T3: fidl::encoding::Encode<bool, D>,
82        T4: fidl::encoding::Encode<fidl::encoding::Vector<fidl::encoding::BoundedString<100>, 20>, D>,
83        T5: fidl::encoding::Encode<i64, D>,
84        T6: fidl::encoding::Encode<bool, D>,
85        T7: fidl::encoding::Encode<bool, D>,
86        T8: fidl::encoding::Encode<i64, D>,
87    > fidl::encoding::Encode<Config, D> for (T0, T1, T2, T3, T4, T5, T6, T7, T8)
88    {
89        #[inline]
90        unsafe fn encode(
91            self,
92            encoder: &mut fidl::encoding::Encoder<'_, D>,
93            offset: usize,
94            depth: fidl::encoding::Depth,
95        ) -> fidl::Result<()> {
96            encoder.debug_check_bounds::<Config>(offset);
97            // Zero out padding regions. There's no need to apply masks
98            // because the unmasked parts will be overwritten by fields.
99            unsafe {
100                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(48);
101                (ptr as *mut u64).write_unaligned(0);
102            }
103            unsafe {
104                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(80);
105                (ptr as *mut u64).write_unaligned(0);
106            }
107            // Write the fields.
108            self.0.encode(encoder, offset + 0, depth)?;
109            self.1.encode(encoder, offset + 16, depth)?;
110            self.2.encode(encoder, offset + 32, depth)?;
111            self.3.encode(encoder, offset + 48, depth)?;
112            self.4.encode(encoder, offset + 56, depth)?;
113            self.5.encode(encoder, offset + 72, depth)?;
114            self.6.encode(encoder, offset + 80, depth)?;
115            self.7.encode(encoder, offset + 81, depth)?;
116            self.8.encode(encoder, offset + 88, depth)?;
117            Ok(())
118        }
119    }
120
121    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Config {
122        #[inline(always)]
123        fn new_empty() -> Self {
124            Self {
125                base_drivers: fidl::new_empty!(
126                    fidl::encoding::Vector<fidl::encoding::BoundedString<150>, 200>,
127                    D
128                ),
129                bind_eager: fidl::new_empty!(
130                    fidl::encoding::Vector<fidl::encoding::BoundedString<100>, 20>,
131                    D
132                ),
133                boot_drivers: fidl::new_empty!(
134                    fidl::encoding::Vector<fidl::encoding::BoundedString<150>, 200>,
135                    D
136                ),
137                delay_fallback_until_base_drivers_indexed: fidl::new_empty!(bool, D),
138                disabled_drivers: fidl::new_empty!(
139                    fidl::encoding::Vector<fidl::encoding::BoundedString<100>, 20>,
140                    D
141                ),
142                driver_load_fuzzer_max_delay_ms: fidl::new_empty!(i64, D),
143                enable_driver_load_fuzzer: fidl::new_empty!(bool, D),
144                enable_ephemeral_drivers: fidl::new_empty!(bool, D),
145                stop_on_idle_timeout_millis: fidl::new_empty!(i64, D),
146            }
147        }
148
149        #[inline]
150        unsafe fn decode(
151            &mut self,
152            decoder: &mut fidl::encoding::Decoder<'_, D>,
153            offset: usize,
154            _depth: fidl::encoding::Depth,
155        ) -> fidl::Result<()> {
156            decoder.debug_check_bounds::<Self>(offset);
157            // Verify that padding bytes are zero.
158            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(48) };
159            let padval = unsafe { (ptr as *const u64).read_unaligned() };
160            let mask = 0xffffffffffffff00u64;
161            let maskedval = padval & mask;
162            if maskedval != 0 {
163                return Err(fidl::Error::NonZeroPadding {
164                    padding_start: offset + 48 + ((mask as u64).trailing_zeros() / 8) as usize,
165                });
166            }
167            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(80) };
168            let padval = unsafe { (ptr as *const u64).read_unaligned() };
169            let mask = 0xffffffffffff0000u64;
170            let maskedval = padval & mask;
171            if maskedval != 0 {
172                return Err(fidl::Error::NonZeroPadding {
173                    padding_start: offset + 80 + ((mask as u64).trailing_zeros() / 8) as usize,
174                });
175            }
176            fidl::decode!(
177                fidl::encoding::Vector<fidl::encoding::BoundedString<150>, 200>,
178                D,
179                &mut self.base_drivers,
180                decoder,
181                offset + 0,
182                _depth
183            )?;
184            fidl::decode!(
185                fidl::encoding::Vector<fidl::encoding::BoundedString<100>, 20>,
186                D,
187                &mut self.bind_eager,
188                decoder,
189                offset + 16,
190                _depth
191            )?;
192            fidl::decode!(
193                fidl::encoding::Vector<fidl::encoding::BoundedString<150>, 200>,
194                D,
195                &mut self.boot_drivers,
196                decoder,
197                offset + 32,
198                _depth
199            )?;
200            fidl::decode!(
201                bool,
202                D,
203                &mut self.delay_fallback_until_base_drivers_indexed,
204                decoder,
205                offset + 48,
206                _depth
207            )?;
208            fidl::decode!(
209                fidl::encoding::Vector<fidl::encoding::BoundedString<100>, 20>,
210                D,
211                &mut self.disabled_drivers,
212                decoder,
213                offset + 56,
214                _depth
215            )?;
216            fidl::decode!(
217                i64,
218                D,
219                &mut self.driver_load_fuzzer_max_delay_ms,
220                decoder,
221                offset + 72,
222                _depth
223            )?;
224            fidl::decode!(
225                bool,
226                D,
227                &mut self.enable_driver_load_fuzzer,
228                decoder,
229                offset + 80,
230                _depth
231            )?;
232            fidl::decode!(
233                bool,
234                D,
235                &mut self.enable_ephemeral_drivers,
236                decoder,
237                offset + 81,
238                _depth
239            )?;
240            fidl::decode!(
241                i64,
242                D,
243                &mut self.stop_on_idle_timeout_millis,
244                decoder,
245                offset + 88,
246                _depth
247            )?;
248            Ok(())
249        }
250    }
251}