fidl_fuchsia_camera_test_virtualcamera__common/
fidl_fuchsia_camera_test_virtualcamera__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(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
12#[repr(u32)]
13pub enum Error {
14 AlreadyAddedToDeviceWatcher = 1,
15}
16
17impl Error {
18 #[inline]
19 pub fn from_primitive(prim: u32) -> Option<Self> {
20 match prim {
21 1 => Some(Self::AlreadyAddedToDeviceWatcher),
22 _ => None,
23 }
24 }
25
26 #[inline]
27 pub const fn into_primitive(self) -> u32 {
28 self as u32
29 }
30}
31
32#[derive(Clone, Debug, PartialEq)]
33pub struct VirtualCameraDeviceAddStreamConfigRequest {
34 pub index: u64,
35 pub config: StreamConfig,
36}
37
38impl fidl::Persistable for VirtualCameraDeviceAddStreamConfigRequest {}
39
40#[derive(Clone, Debug, Default, PartialEq)]
41pub struct StreamConfig {
42 pub width: Option<u32>,
43 pub height: Option<u32>,
44 #[doc(hidden)]
45 pub __source_breaking: fidl::marker::SourceBreaking,
46}
47
48impl fidl::Persistable for StreamConfig {}
49
50pub mod virtual_camera_device_ordinals {
51 pub const ADD_TO_DEVICE_WATCHER: u64 = 0x40cd846939ee70b;
52 pub const ADD_STREAM_CONFIG: u64 = 0x523883f87dc7befd;
53}
54
55mod internal {
56 use super::*;
57 unsafe impl fidl::encoding::TypeMarker for Error {
58 type Owned = Self;
59
60 #[inline(always)]
61 fn inline_align(_context: fidl::encoding::Context) -> usize {
62 std::mem::align_of::<u32>()
63 }
64
65 #[inline(always)]
66 fn inline_size(_context: fidl::encoding::Context) -> usize {
67 std::mem::size_of::<u32>()
68 }
69
70 #[inline(always)]
71 fn encode_is_copy() -> bool {
72 true
73 }
74
75 #[inline(always)]
76 fn decode_is_copy() -> bool {
77 false
78 }
79 }
80
81 impl fidl::encoding::ValueTypeMarker for Error {
82 type Borrowed<'a> = Self;
83 #[inline(always)]
84 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
85 *value
86 }
87 }
88
89 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for Error {
90 #[inline]
91 unsafe fn encode(
92 self,
93 encoder: &mut fidl::encoding::Encoder<'_, D>,
94 offset: usize,
95 _depth: fidl::encoding::Depth,
96 ) -> fidl::Result<()> {
97 encoder.debug_check_bounds::<Self>(offset);
98 encoder.write_num(self.into_primitive(), offset);
99 Ok(())
100 }
101 }
102
103 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Error {
104 #[inline(always)]
105 fn new_empty() -> Self {
106 Self::AlreadyAddedToDeviceWatcher
107 }
108
109 #[inline]
110 unsafe fn decode(
111 &mut self,
112 decoder: &mut fidl::encoding::Decoder<'_, D>,
113 offset: usize,
114 _depth: fidl::encoding::Depth,
115 ) -> fidl::Result<()> {
116 decoder.debug_check_bounds::<Self>(offset);
117 let prim = decoder.read_num::<u32>(offset);
118
119 *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
120 Ok(())
121 }
122 }
123
124 impl fidl::encoding::ValueTypeMarker for VirtualCameraDeviceAddStreamConfigRequest {
125 type Borrowed<'a> = &'a Self;
126 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
127 value
128 }
129 }
130
131 unsafe impl fidl::encoding::TypeMarker for VirtualCameraDeviceAddStreamConfigRequest {
132 type Owned = Self;
133
134 #[inline(always)]
135 fn inline_align(_context: fidl::encoding::Context) -> usize {
136 8
137 }
138
139 #[inline(always)]
140 fn inline_size(_context: fidl::encoding::Context) -> usize {
141 24
142 }
143 }
144
145 unsafe impl<D: fidl::encoding::ResourceDialect>
146 fidl::encoding::Encode<VirtualCameraDeviceAddStreamConfigRequest, D>
147 for &VirtualCameraDeviceAddStreamConfigRequest
148 {
149 #[inline]
150 unsafe fn encode(
151 self,
152 encoder: &mut fidl::encoding::Encoder<'_, D>,
153 offset: usize,
154 _depth: fidl::encoding::Depth,
155 ) -> fidl::Result<()> {
156 encoder.debug_check_bounds::<VirtualCameraDeviceAddStreamConfigRequest>(offset);
157 fidl::encoding::Encode::<VirtualCameraDeviceAddStreamConfigRequest, D>::encode(
159 (
160 <u64 as fidl::encoding::ValueTypeMarker>::borrow(&self.index),
161 <StreamConfig as fidl::encoding::ValueTypeMarker>::borrow(&self.config),
162 ),
163 encoder,
164 offset,
165 _depth,
166 )
167 }
168 }
169 unsafe impl<
170 D: fidl::encoding::ResourceDialect,
171 T0: fidl::encoding::Encode<u64, D>,
172 T1: fidl::encoding::Encode<StreamConfig, D>,
173 > fidl::encoding::Encode<VirtualCameraDeviceAddStreamConfigRequest, D> for (T0, T1)
174 {
175 #[inline]
176 unsafe fn encode(
177 self,
178 encoder: &mut fidl::encoding::Encoder<'_, D>,
179 offset: usize,
180 depth: fidl::encoding::Depth,
181 ) -> fidl::Result<()> {
182 encoder.debug_check_bounds::<VirtualCameraDeviceAddStreamConfigRequest>(offset);
183 self.0.encode(encoder, offset + 0, depth)?;
187 self.1.encode(encoder, offset + 8, depth)?;
188 Ok(())
189 }
190 }
191
192 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
193 for VirtualCameraDeviceAddStreamConfigRequest
194 {
195 #[inline(always)]
196 fn new_empty() -> Self {
197 Self { index: fidl::new_empty!(u64, D), config: fidl::new_empty!(StreamConfig, D) }
198 }
199
200 #[inline]
201 unsafe fn decode(
202 &mut self,
203 decoder: &mut fidl::encoding::Decoder<'_, D>,
204 offset: usize,
205 _depth: fidl::encoding::Depth,
206 ) -> fidl::Result<()> {
207 decoder.debug_check_bounds::<Self>(offset);
208 fidl::decode!(u64, D, &mut self.index, decoder, offset + 0, _depth)?;
210 fidl::decode!(StreamConfig, D, &mut self.config, decoder, offset + 8, _depth)?;
211 Ok(())
212 }
213 }
214
215 impl StreamConfig {
216 #[inline(always)]
217 fn max_ordinal_present(&self) -> u64 {
218 if let Some(_) = self.height {
219 return 2;
220 }
221 if let Some(_) = self.width {
222 return 1;
223 }
224 0
225 }
226 }
227
228 impl fidl::encoding::ValueTypeMarker for StreamConfig {
229 type Borrowed<'a> = &'a Self;
230 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
231 value
232 }
233 }
234
235 unsafe impl fidl::encoding::TypeMarker for StreamConfig {
236 type Owned = Self;
237
238 #[inline(always)]
239 fn inline_align(_context: fidl::encoding::Context) -> usize {
240 8
241 }
242
243 #[inline(always)]
244 fn inline_size(_context: fidl::encoding::Context) -> usize {
245 16
246 }
247 }
248
249 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<StreamConfig, D>
250 for &StreamConfig
251 {
252 unsafe fn encode(
253 self,
254 encoder: &mut fidl::encoding::Encoder<'_, D>,
255 offset: usize,
256 mut depth: fidl::encoding::Depth,
257 ) -> fidl::Result<()> {
258 encoder.debug_check_bounds::<StreamConfig>(offset);
259 let max_ordinal: u64 = self.max_ordinal_present();
261 encoder.write_num(max_ordinal, offset);
262 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
263 if max_ordinal == 0 {
265 return Ok(());
266 }
267 depth.increment()?;
268 let envelope_size = 8;
269 let bytes_len = max_ordinal as usize * envelope_size;
270 #[allow(unused_variables)]
271 let offset = encoder.out_of_line_offset(bytes_len);
272 let mut _prev_end_offset: usize = 0;
273 if 1 > max_ordinal {
274 return Ok(());
275 }
276
277 let cur_offset: usize = (1 - 1) * envelope_size;
280
281 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
283
284 fidl::encoding::encode_in_envelope_optional::<u32, D>(
289 self.width.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
290 encoder,
291 offset + cur_offset,
292 depth,
293 )?;
294
295 _prev_end_offset = cur_offset + envelope_size;
296 if 2 > max_ordinal {
297 return Ok(());
298 }
299
300 let cur_offset: usize = (2 - 1) * envelope_size;
303
304 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
306
307 fidl::encoding::encode_in_envelope_optional::<u32, D>(
312 self.height.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
313 encoder,
314 offset + cur_offset,
315 depth,
316 )?;
317
318 _prev_end_offset = cur_offset + envelope_size;
319
320 Ok(())
321 }
322 }
323
324 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for StreamConfig {
325 #[inline(always)]
326 fn new_empty() -> Self {
327 Self::default()
328 }
329
330 unsafe fn decode(
331 &mut self,
332 decoder: &mut fidl::encoding::Decoder<'_, D>,
333 offset: usize,
334 mut depth: fidl::encoding::Depth,
335 ) -> fidl::Result<()> {
336 decoder.debug_check_bounds::<Self>(offset);
337 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
338 None => return Err(fidl::Error::NotNullable),
339 Some(len) => len,
340 };
341 if len == 0 {
343 return Ok(());
344 };
345 depth.increment()?;
346 let envelope_size = 8;
347 let bytes_len = len * envelope_size;
348 let offset = decoder.out_of_line_offset(bytes_len)?;
349 let mut _next_ordinal_to_read = 0;
351 let mut next_offset = offset;
352 let end_offset = offset + bytes_len;
353 _next_ordinal_to_read += 1;
354 if next_offset >= end_offset {
355 return Ok(());
356 }
357
358 while _next_ordinal_to_read < 1 {
360 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
361 _next_ordinal_to_read += 1;
362 next_offset += envelope_size;
363 }
364
365 let next_out_of_line = decoder.next_out_of_line();
366 let handles_before = decoder.remaining_handles();
367 if let Some((inlined, num_bytes, num_handles)) =
368 fidl::encoding::decode_envelope_header(decoder, next_offset)?
369 {
370 let member_inline_size =
371 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
372 if inlined != (member_inline_size <= 4) {
373 return Err(fidl::Error::InvalidInlineBitInEnvelope);
374 }
375 let inner_offset;
376 let mut inner_depth = depth.clone();
377 if inlined {
378 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
379 inner_offset = next_offset;
380 } else {
381 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
382 inner_depth.increment()?;
383 }
384 let val_ref = self.width.get_or_insert_with(|| fidl::new_empty!(u32, D));
385 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
386 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
387 {
388 return Err(fidl::Error::InvalidNumBytesInEnvelope);
389 }
390 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
391 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
392 }
393 }
394
395 next_offset += envelope_size;
396 _next_ordinal_to_read += 1;
397 if next_offset >= end_offset {
398 return Ok(());
399 }
400
401 while _next_ordinal_to_read < 2 {
403 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
404 _next_ordinal_to_read += 1;
405 next_offset += envelope_size;
406 }
407
408 let next_out_of_line = decoder.next_out_of_line();
409 let handles_before = decoder.remaining_handles();
410 if let Some((inlined, num_bytes, num_handles)) =
411 fidl::encoding::decode_envelope_header(decoder, next_offset)?
412 {
413 let member_inline_size =
414 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
415 if inlined != (member_inline_size <= 4) {
416 return Err(fidl::Error::InvalidInlineBitInEnvelope);
417 }
418 let inner_offset;
419 let mut inner_depth = depth.clone();
420 if inlined {
421 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
422 inner_offset = next_offset;
423 } else {
424 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
425 inner_depth.increment()?;
426 }
427 let val_ref = self.height.get_or_insert_with(|| fidl::new_empty!(u32, D));
428 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
429 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
430 {
431 return Err(fidl::Error::InvalidNumBytesInEnvelope);
432 }
433 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
434 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
435 }
436 }
437
438 next_offset += envelope_size;
439
440 while next_offset < end_offset {
442 _next_ordinal_to_read += 1;
443 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
444 next_offset += envelope_size;
445 }
446
447 Ok(())
448 }
449 }
450}