fidl_cf_sc_internal_powermanagerconfiglib/
fidl_cf_sc_internal_powermanagerconfiglib.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 disable_temperature_filter: bool,
16    pub enable_debug_service: bool,
17    pub node_config_path: 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            24
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(
59                        &self.disable_temperature_filter,
60                    ),
61                    <bool as fidl::encoding::ValueTypeMarker>::borrow(&self.enable_debug_service),
62                    <fidl::encoding::BoundedString<128> as fidl::encoding::ValueTypeMarker>::borrow(
63                        &self.node_config_path,
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<bool, D>,
76            T2: fidl::encoding::Encode<fidl::encoding::BoundedString<128>, 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 + 1, depth)?;
96            self.2.encode(encoder, offset + 8, 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                disable_temperature_filter: fidl::new_empty!(bool, D),
106                enable_debug_service: fidl::new_empty!(bool, D),
107                node_config_path: fidl::new_empty!(fidl::encoding::BoundedString<128>, 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 = 0xffffffffffff0000u64;
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!(
130                bool,
131                D,
132                &mut self.disable_temperature_filter,
133                decoder,
134                offset + 0,
135                _depth
136            )?;
137            fidl::decode!(bool, D, &mut self.enable_debug_service, decoder, offset + 1, _depth)?;
138            fidl::decode!(
139                fidl::encoding::BoundedString<128>,
140                D,
141                &mut self.node_config_path,
142                decoder,
143                offset + 8,
144                _depth
145            )?;
146            Ok(())
147        }
148    }
149}