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