fidl_cf_sc_internal_starnixcontainerstructuredconfig__common/
fidl_cf_sc_internal_starnixcontainerstructuredconfig__common.rs1#![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 enable_utc_time_adjustment: bool,
14 pub enable_wake_alarms: bool,
15 pub extra_features: Vec<String>,
16 pub mlock_always_onfault: bool,
17 pub mlock_pin_flavor: String,
18 pub selinux_exceptions: Vec<String>,
19 pub ui_visual_debugging_level: u8,
20}
21
22impl fidl::Persistable for Config {}
23
24mod internal {
25 use super::*;
26
27 impl fidl::encoding::ValueTypeMarker for Config {
28 type Borrowed<'a> = &'a Self;
29 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
30 value
31 }
32 }
33
34 unsafe impl fidl::encoding::TypeMarker for Config {
35 type Owned = Self;
36
37 #[inline(always)]
38 fn inline_align(_context: fidl::encoding::Context) -> usize {
39 8
40 }
41
42 #[inline(always)]
43 fn inline_size(_context: fidl::encoding::Context) -> usize {
44 72
45 }
46 }
47
48 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Config, D> for &Config {
49 #[inline]
50 unsafe fn encode(
51 self,
52 encoder: &mut fidl::encoding::Encoder<'_, D>,
53 offset: usize,
54 _depth: fidl::encoding::Depth,
55 ) -> fidl::Result<()> {
56 encoder.debug_check_bounds::<Config>(offset);
57 fidl::encoding::Encode::<Config, D>::encode(
59 (
60 <bool as fidl::encoding::ValueTypeMarker>::borrow(&self.enable_utc_time_adjustment),
61 <bool as fidl::encoding::ValueTypeMarker>::borrow(&self.enable_wake_alarms),
62 <fidl::encoding::Vector<fidl::encoding::BoundedString<1024>, 1024> as fidl::encoding::ValueTypeMarker>::borrow(&self.extra_features),
63 <bool as fidl::encoding::ValueTypeMarker>::borrow(&self.mlock_always_onfault),
64 <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow(&self.mlock_pin_flavor),
65 <fidl::encoding::Vector<fidl::encoding::BoundedString<1024>, 1024> as fidl::encoding::ValueTypeMarker>::borrow(&self.selinux_exceptions),
66 <u8 as fidl::encoding::ValueTypeMarker>::borrow(&self.ui_visual_debugging_level),
67 ),
68 encoder, offset, _depth
69 )
70 }
71 }
72 unsafe impl<
73 D: fidl::encoding::ResourceDialect,
74 T0: fidl::encoding::Encode<bool, D>,
75 T1: fidl::encoding::Encode<bool, D>,
76 T2: fidl::encoding::Encode<
77 fidl::encoding::Vector<fidl::encoding::BoundedString<1024>, 1024>,
78 D,
79 >,
80 T3: fidl::encoding::Encode<bool, D>,
81 T4: fidl::encoding::Encode<fidl::encoding::BoundedString<100>, D>,
82 T5: fidl::encoding::Encode<
83 fidl::encoding::Vector<fidl::encoding::BoundedString<1024>, 1024>,
84 D,
85 >,
86 T6: fidl::encoding::Encode<u8, D>,
87 > fidl::encoding::Encode<Config, D> for (T0, T1, T2, T3, T4, T5, T6)
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 unsafe {
100 let ptr = encoder.buf.as_mut_ptr().add(offset).offset(0);
101 (ptr as *mut u64).write_unaligned(0);
102 }
103 unsafe {
104 let ptr = encoder.buf.as_mut_ptr().add(offset).offset(24);
105 (ptr as *mut u64).write_unaligned(0);
106 }
107 unsafe {
108 let ptr = encoder.buf.as_mut_ptr().add(offset).offset(64);
109 (ptr as *mut u64).write_unaligned(0);
110 }
111 self.0.encode(encoder, offset + 0, depth)?;
113 self.1.encode(encoder, offset + 1, depth)?;
114 self.2.encode(encoder, offset + 8, depth)?;
115 self.3.encode(encoder, offset + 24, depth)?;
116 self.4.encode(encoder, offset + 32, depth)?;
117 self.5.encode(encoder, offset + 48, depth)?;
118 self.6.encode(encoder, offset + 64, depth)?;
119 Ok(())
120 }
121 }
122
123 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Config {
124 #[inline(always)]
125 fn new_empty() -> Self {
126 Self {
127 enable_utc_time_adjustment: fidl::new_empty!(bool, D),
128 enable_wake_alarms: fidl::new_empty!(bool, D),
129 extra_features: fidl::new_empty!(
130 fidl::encoding::Vector<fidl::encoding::BoundedString<1024>, 1024>,
131 D
132 ),
133 mlock_always_onfault: fidl::new_empty!(bool, D),
134 mlock_pin_flavor: fidl::new_empty!(fidl::encoding::BoundedString<100>, D),
135 selinux_exceptions: fidl::new_empty!(
136 fidl::encoding::Vector<fidl::encoding::BoundedString<1024>, 1024>,
137 D
138 ),
139 ui_visual_debugging_level: fidl::new_empty!(u8, D),
140 }
141 }
142
143 #[inline]
144 unsafe fn decode(
145 &mut self,
146 decoder: &mut fidl::encoding::Decoder<'_, D>,
147 offset: usize,
148 _depth: fidl::encoding::Depth,
149 ) -> fidl::Result<()> {
150 decoder.debug_check_bounds::<Self>(offset);
151 let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(0) };
153 let padval = unsafe { (ptr as *const u64).read_unaligned() };
154 let mask = 0xffffffffffff0000u64;
155 let maskedval = padval & mask;
156 if maskedval != 0 {
157 return Err(fidl::Error::NonZeroPadding {
158 padding_start: offset + 0 + ((mask as u64).trailing_zeros() / 8) as usize,
159 });
160 }
161 let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(24) };
162 let padval = unsafe { (ptr as *const u64).read_unaligned() };
163 let mask = 0xffffffffffffff00u64;
164 let maskedval = padval & mask;
165 if maskedval != 0 {
166 return Err(fidl::Error::NonZeroPadding {
167 padding_start: offset + 24 + ((mask as u64).trailing_zeros() / 8) as usize,
168 });
169 }
170 let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(64) };
171 let padval = unsafe { (ptr as *const u64).read_unaligned() };
172 let mask = 0xffffffffffffff00u64;
173 let maskedval = padval & mask;
174 if maskedval != 0 {
175 return Err(fidl::Error::NonZeroPadding {
176 padding_start: offset + 64 + ((mask as u64).trailing_zeros() / 8) as usize,
177 });
178 }
179 fidl::decode!(
180 bool,
181 D,
182 &mut self.enable_utc_time_adjustment,
183 decoder,
184 offset + 0,
185 _depth
186 )?;
187 fidl::decode!(bool, D, &mut self.enable_wake_alarms, decoder, offset + 1, _depth)?;
188 fidl::decode!(
189 fidl::encoding::Vector<fidl::encoding::BoundedString<1024>, 1024>,
190 D,
191 &mut self.extra_features,
192 decoder,
193 offset + 8,
194 _depth
195 )?;
196 fidl::decode!(bool, D, &mut self.mlock_always_onfault, decoder, offset + 24, _depth)?;
197 fidl::decode!(
198 fidl::encoding::BoundedString<100>,
199 D,
200 &mut self.mlock_pin_flavor,
201 decoder,
202 offset + 32,
203 _depth
204 )?;
205 fidl::decode!(
206 fidl::encoding::Vector<fidl::encoding::BoundedString<1024>, 1024>,
207 D,
208 &mut self.selinux_exceptions,
209 decoder,
210 offset + 48,
211 _depth
212 )?;
213 fidl::decode!(
214 u8,
215 D,
216 &mut self.ui_visual_debugging_level,
217 decoder,
218 offset + 64,
219 _depth
220 )?;
221 Ok(())
222 }
223 }
224}