Skip to main content

fidl_test_wlan_realm_common/
fidl_test_wlan_realm_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(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
12#[repr(u32)]
13pub enum TraceManagerHermeticity {
14    Hermetic = 0,
15    NonHermetic = 1,
16}
17
18impl TraceManagerHermeticity {
19    #[inline]
20    pub fn from_primitive(prim: u32) -> Option<Self> {
21        match prim {
22            0 => Some(Self::Hermetic),
23            1 => Some(Self::NonHermetic),
24            _ => None,
25        }
26    }
27
28    #[inline]
29    pub const fn into_primitive(self) -> u32 {
30        self as u32
31    }
32}
33
34#[derive(Clone, Debug, Default, PartialEq)]
35pub struct CreateRealmResponse {
36    pub wlan_policy_moniker: Option<String>,
37    pub wlandevicemonitor_moniker: Option<String>,
38    #[doc(hidden)]
39    pub __source_breaking: fidl::marker::SourceBreaking,
40}
41
42impl fidl::Persistable for CreateRealmResponse {}
43
44pub mod realm_factory_ordinals {
45    pub const CREATE_REALM: u64 = 0x51aac08d328c3ae4;
46}
47
48mod internal {
49    use super::*;
50    unsafe impl fidl::encoding::TypeMarker for TraceManagerHermeticity {
51        type Owned = Self;
52
53        #[inline(always)]
54        fn inline_align(_context: fidl::encoding::Context) -> usize {
55            std::mem::align_of::<u32>()
56        }
57
58        #[inline(always)]
59        fn inline_size(_context: fidl::encoding::Context) -> usize {
60            std::mem::size_of::<u32>()
61        }
62
63        #[inline(always)]
64        fn encode_is_copy() -> bool {
65            true
66        }
67
68        #[inline(always)]
69        fn decode_is_copy() -> bool {
70            false
71        }
72    }
73
74    impl fidl::encoding::ValueTypeMarker for TraceManagerHermeticity {
75        type Borrowed<'a> = Self;
76        #[inline(always)]
77        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
78            *value
79        }
80    }
81
82    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
83        for TraceManagerHermeticity
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::<Self>(offset);
93            encoder.write_num(self.into_primitive(), offset);
94            Ok(())
95        }
96    }
97
98    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
99        for TraceManagerHermeticity
100    {
101        #[inline(always)]
102        fn new_empty() -> Self {
103            Self::Hermetic
104        }
105
106        #[inline]
107        unsafe fn decode(
108            &mut self,
109            decoder: &mut fidl::encoding::Decoder<'_, D>,
110            offset: usize,
111            _depth: fidl::encoding::Depth,
112        ) -> fidl::Result<()> {
113            decoder.debug_check_bounds::<Self>(offset);
114            let prim = decoder.read_num::<u32>(offset);
115
116            *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
117            Ok(())
118        }
119    }
120
121    impl CreateRealmResponse {
122        #[inline(always)]
123        fn max_ordinal_present(&self) -> u64 {
124            if let Some(_) = self.wlandevicemonitor_moniker {
125                return 2;
126            }
127            if let Some(_) = self.wlan_policy_moniker {
128                return 1;
129            }
130            0
131        }
132    }
133
134    impl fidl::encoding::ValueTypeMarker for CreateRealmResponse {
135        type Borrowed<'a> = &'a Self;
136        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
137            value
138        }
139    }
140
141    unsafe impl fidl::encoding::TypeMarker for CreateRealmResponse {
142        type Owned = Self;
143
144        #[inline(always)]
145        fn inline_align(_context: fidl::encoding::Context) -> usize {
146            8
147        }
148
149        #[inline(always)]
150        fn inline_size(_context: fidl::encoding::Context) -> usize {
151            16
152        }
153    }
154
155    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<CreateRealmResponse, D>
156        for &CreateRealmResponse
157    {
158        unsafe fn encode(
159            self,
160            encoder: &mut fidl::encoding::Encoder<'_, D>,
161            offset: usize,
162            mut depth: fidl::encoding::Depth,
163        ) -> fidl::Result<()> {
164            encoder.debug_check_bounds::<CreateRealmResponse>(offset);
165            // Vector header
166            let max_ordinal: u64 = self.max_ordinal_present();
167            encoder.write_num(max_ordinal, offset);
168            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
169            // Calling encoder.out_of_line_offset(0) is not allowed.
170            if max_ordinal == 0 {
171                return Ok(());
172            }
173            depth.increment()?;
174            let envelope_size = 8;
175            let bytes_len = max_ordinal as usize * envelope_size;
176            #[allow(unused_variables)]
177            let offset = encoder.out_of_line_offset(bytes_len);
178            let mut _prev_end_offset: usize = 0;
179            if 1 > max_ordinal {
180                return Ok(());
181            }
182
183            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
184            // are envelope_size bytes.
185            let cur_offset: usize = (1 - 1) * envelope_size;
186
187            // Zero reserved fields.
188            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
189
190            // Safety:
191            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
192            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
193            //   envelope_size bytes, there is always sufficient room.
194            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedString, D>(
195                self.wlan_policy_moniker.as_ref().map(
196                    <fidl::encoding::UnboundedString as fidl::encoding::ValueTypeMarker>::borrow,
197                ),
198                encoder,
199                offset + cur_offset,
200                depth,
201            )?;
202
203            _prev_end_offset = cur_offset + envelope_size;
204            if 2 > max_ordinal {
205                return Ok(());
206            }
207
208            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
209            // are envelope_size bytes.
210            let cur_offset: usize = (2 - 1) * envelope_size;
211
212            // Zero reserved fields.
213            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
214
215            // Safety:
216            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
217            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
218            //   envelope_size bytes, there is always sufficient room.
219            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedString, D>(
220                self.wlandevicemonitor_moniker.as_ref().map(
221                    <fidl::encoding::UnboundedString as fidl::encoding::ValueTypeMarker>::borrow,
222                ),
223                encoder,
224                offset + cur_offset,
225                depth,
226            )?;
227
228            _prev_end_offset = cur_offset + envelope_size;
229
230            Ok(())
231        }
232    }
233
234    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for CreateRealmResponse {
235        #[inline(always)]
236        fn new_empty() -> Self {
237            Self::default()
238        }
239
240        unsafe fn decode(
241            &mut self,
242            decoder: &mut fidl::encoding::Decoder<'_, D>,
243            offset: usize,
244            mut depth: fidl::encoding::Depth,
245        ) -> fidl::Result<()> {
246            decoder.debug_check_bounds::<Self>(offset);
247            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
248                None => return Err(fidl::Error::NotNullable),
249                Some(len) => len,
250            };
251            // Calling decoder.out_of_line_offset(0) is not allowed.
252            if len == 0 {
253                return Ok(());
254            };
255            depth.increment()?;
256            let envelope_size = 8;
257            let bytes_len = len * envelope_size;
258            let offset = decoder.out_of_line_offset(bytes_len)?;
259            // Decode the envelope for each type.
260            let mut _next_ordinal_to_read = 0;
261            let mut next_offset = offset;
262            let end_offset = offset + bytes_len;
263            _next_ordinal_to_read += 1;
264            if next_offset >= end_offset {
265                return Ok(());
266            }
267
268            // Decode unknown envelopes for gaps in ordinals.
269            while _next_ordinal_to_read < 1 {
270                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
271                _next_ordinal_to_read += 1;
272                next_offset += envelope_size;
273            }
274
275            let next_out_of_line = decoder.next_out_of_line();
276            let handles_before = decoder.remaining_handles();
277            if let Some((inlined, num_bytes, num_handles)) =
278                fidl::encoding::decode_envelope_header(decoder, next_offset)?
279            {
280                let member_inline_size =
281                    <fidl::encoding::UnboundedString as fidl::encoding::TypeMarker>::inline_size(
282                        decoder.context,
283                    );
284                if inlined != (member_inline_size <= 4) {
285                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
286                }
287                let inner_offset;
288                let mut inner_depth = depth.clone();
289                if inlined {
290                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
291                    inner_offset = next_offset;
292                } else {
293                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
294                    inner_depth.increment()?;
295                }
296                let val_ref = self
297                    .wlan_policy_moniker
298                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::UnboundedString, D));
299                fidl::decode!(
300                    fidl::encoding::UnboundedString,
301                    D,
302                    val_ref,
303                    decoder,
304                    inner_offset,
305                    inner_depth
306                )?;
307                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
308                {
309                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
310                }
311                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
312                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
313                }
314            }
315
316            next_offset += envelope_size;
317            _next_ordinal_to_read += 1;
318            if next_offset >= end_offset {
319                return Ok(());
320            }
321
322            // Decode unknown envelopes for gaps in ordinals.
323            while _next_ordinal_to_read < 2 {
324                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
325                _next_ordinal_to_read += 1;
326                next_offset += envelope_size;
327            }
328
329            let next_out_of_line = decoder.next_out_of_line();
330            let handles_before = decoder.remaining_handles();
331            if let Some((inlined, num_bytes, num_handles)) =
332                fidl::encoding::decode_envelope_header(decoder, next_offset)?
333            {
334                let member_inline_size =
335                    <fidl::encoding::UnboundedString as fidl::encoding::TypeMarker>::inline_size(
336                        decoder.context,
337                    );
338                if inlined != (member_inline_size <= 4) {
339                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
340                }
341                let inner_offset;
342                let mut inner_depth = depth.clone();
343                if inlined {
344                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
345                    inner_offset = next_offset;
346                } else {
347                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
348                    inner_depth.increment()?;
349                }
350                let val_ref = self
351                    .wlandevicemonitor_moniker
352                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::UnboundedString, D));
353                fidl::decode!(
354                    fidl::encoding::UnboundedString,
355                    D,
356                    val_ref,
357                    decoder,
358                    inner_offset,
359                    inner_depth
360                )?;
361                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
362                {
363                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
364                }
365                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
366                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
367                }
368            }
369
370            next_offset += envelope_size;
371
372            // Decode the remaining unknown envelopes.
373            while next_offset < end_offset {
374                _next_ordinal_to_read += 1;
375                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
376                next_offset += envelope_size;
377            }
378
379            Ok(())
380        }
381    }
382}