fidl_fuchsia_power__common/
fidl_fuchsia_power__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, Default, PartialEq)]
12pub struct CollaborativeRebootInitiatorPerformPendingRebootResponse {
13 pub rebooting: Option<bool>,
14 #[doc(hidden)]
15 pub __source_breaking: fidl::marker::SourceBreaking,
16}
17
18impl fidl::Persistable for CollaborativeRebootInitiatorPerformPendingRebootResponse {}
19
20pub mod collaborative_reboot_initiator_ordinals {
21 pub const PERFORM_PENDING_REBOOT: u64 = 0x6114c8f94a98f492;
22}
23
24mod internal {
25 use super::*;
26
27 impl CollaborativeRebootInitiatorPerformPendingRebootResponse {
28 #[inline(always)]
29 fn max_ordinal_present(&self) -> u64 {
30 if let Some(_) = self.rebooting {
31 return 1;
32 }
33 0
34 }
35 }
36
37 impl fidl::encoding::ValueTypeMarker for CollaborativeRebootInitiatorPerformPendingRebootResponse {
38 type Borrowed<'a> = &'a Self;
39 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
40 value
41 }
42 }
43
44 unsafe impl fidl::encoding::TypeMarker
45 for CollaborativeRebootInitiatorPerformPendingRebootResponse
46 {
47 type Owned = Self;
48
49 #[inline(always)]
50 fn inline_align(_context: fidl::encoding::Context) -> usize {
51 8
52 }
53
54 #[inline(always)]
55 fn inline_size(_context: fidl::encoding::Context) -> usize {
56 16
57 }
58 }
59
60 unsafe impl<D: fidl::encoding::ResourceDialect>
61 fidl::encoding::Encode<CollaborativeRebootInitiatorPerformPendingRebootResponse, D>
62 for &CollaborativeRebootInitiatorPerformPendingRebootResponse
63 {
64 unsafe fn encode(
65 self,
66 encoder: &mut fidl::encoding::Encoder<'_, D>,
67 offset: usize,
68 mut depth: fidl::encoding::Depth,
69 ) -> fidl::Result<()> {
70 encoder.debug_check_bounds::<CollaborativeRebootInitiatorPerformPendingRebootResponse>(
71 offset,
72 );
73 let max_ordinal: u64 = self.max_ordinal_present();
75 encoder.write_num(max_ordinal, offset);
76 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
77 if max_ordinal == 0 {
79 return Ok(());
80 }
81 depth.increment()?;
82 let envelope_size = 8;
83 let bytes_len = max_ordinal as usize * envelope_size;
84 #[allow(unused_variables)]
85 let offset = encoder.out_of_line_offset(bytes_len);
86 let mut _prev_end_offset: usize = 0;
87 if 1 > max_ordinal {
88 return Ok(());
89 }
90
91 let cur_offset: usize = (1 - 1) * envelope_size;
94
95 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
97
98 fidl::encoding::encode_in_envelope_optional::<bool, D>(
103 self.rebooting.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
104 encoder,
105 offset + cur_offset,
106 depth,
107 )?;
108
109 _prev_end_offset = cur_offset + envelope_size;
110
111 Ok(())
112 }
113 }
114
115 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
116 for CollaborativeRebootInitiatorPerformPendingRebootResponse
117 {
118 #[inline(always)]
119 fn new_empty() -> Self {
120 Self::default()
121 }
122
123 unsafe fn decode(
124 &mut self,
125 decoder: &mut fidl::encoding::Decoder<'_, D>,
126 offset: usize,
127 mut depth: fidl::encoding::Depth,
128 ) -> fidl::Result<()> {
129 decoder.debug_check_bounds::<Self>(offset);
130 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
131 None => return Err(fidl::Error::NotNullable),
132 Some(len) => len,
133 };
134 if len == 0 {
136 return Ok(());
137 };
138 depth.increment()?;
139 let envelope_size = 8;
140 let bytes_len = len * envelope_size;
141 let offset = decoder.out_of_line_offset(bytes_len)?;
142 let mut _next_ordinal_to_read = 0;
144 let mut next_offset = offset;
145 let end_offset = offset + bytes_len;
146 _next_ordinal_to_read += 1;
147 if next_offset >= end_offset {
148 return Ok(());
149 }
150
151 while _next_ordinal_to_read < 1 {
153 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
154 _next_ordinal_to_read += 1;
155 next_offset += envelope_size;
156 }
157
158 let next_out_of_line = decoder.next_out_of_line();
159 let handles_before = decoder.remaining_handles();
160 if let Some((inlined, num_bytes, num_handles)) =
161 fidl::encoding::decode_envelope_header(decoder, next_offset)?
162 {
163 let member_inline_size =
164 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
165 if inlined != (member_inline_size <= 4) {
166 return Err(fidl::Error::InvalidInlineBitInEnvelope);
167 }
168 let inner_offset;
169 let mut inner_depth = depth.clone();
170 if inlined {
171 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
172 inner_offset = next_offset;
173 } else {
174 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
175 inner_depth.increment()?;
176 }
177 let val_ref = self.rebooting.get_or_insert_with(|| fidl::new_empty!(bool, D));
178 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
179 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
180 {
181 return Err(fidl::Error::InvalidNumBytesInEnvelope);
182 }
183 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
184 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
185 }
186 }
187
188 next_offset += envelope_size;
189
190 while next_offset < end_offset {
192 _next_ordinal_to_read += 1;
193 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
194 next_offset += envelope_size;
195 }
196
197 Ok(())
198 }
199 }
200}