1#![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)]
14pub enum PacketFormat {
15 Command,
17 AclData,
19 SynchronousData,
21 Event,
23 IsoData,
25 #[doc(hidden)]
26 __SourceBreaking { unknown_ordinal: u32 },
27}
28
29#[macro_export]
31macro_rules! PacketFormatUnknown {
32 () => {
33 _
34 };
35}
36
37impl PacketFormat {
38 #[inline]
39 pub fn from_primitive(prim: u32) -> Option<Self> {
40 match prim {
41 1 => Some(Self::Command),
42 2 => Some(Self::AclData),
43 3 => Some(Self::SynchronousData),
44 4 => Some(Self::Event),
45 5 => Some(Self::IsoData),
46 _ => None,
47 }
48 }
49
50 #[inline]
51 pub fn from_primitive_allow_unknown(prim: u32) -> Self {
52 match prim {
53 1 => Self::Command,
54 2 => Self::AclData,
55 3 => Self::SynchronousData,
56 4 => Self::Event,
57 5 => Self::IsoData,
58 unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
59 }
60 }
61
62 #[inline]
63 pub fn unknown() -> Self {
64 Self::__SourceBreaking { unknown_ordinal: 0xffffffff }
65 }
66
67 #[inline]
68 pub const fn into_primitive(self) -> u32 {
69 match self {
70 Self::Command => 1,
71 Self::AclData => 2,
72 Self::SynchronousData => 3,
73 Self::Event => 4,
74 Self::IsoData => 5,
75 Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
76 }
77 }
78
79 #[inline]
80 pub fn is_unknown(&self) -> bool {
81 match self {
82 Self::__SourceBreaking { unknown_ordinal: _ } => true,
83 _ => false,
84 }
85 }
86}
87
88#[derive(Clone, Debug, Default, PartialEq)]
89pub struct DevicePackets {
90 pub host_device: Option<String>,
93 pub packets: Option<Vec<SnoopPacket>>,
96 #[doc(hidden)]
97 pub __source_breaking: fidl::marker::SourceBreaking,
98}
99
100impl fidl::Persistable for DevicePackets {}
101
102#[derive(Clone, Debug, Default, PartialEq)]
103pub struct SnoopPacket {
104 pub is_received: Option<bool>,
107 pub format: Option<PacketFormat>,
110 pub timestamp: Option<i64>,
113 pub length: Option<u32>,
116 pub data: Option<Vec<u8>>,
119 #[doc(hidden)]
120 pub __source_breaking: fidl::marker::SourceBreaking,
121}
122
123impl fidl::Persistable for SnoopPacket {}
124
125#[derive(Clone, Debug, Default, PartialEq)]
126pub struct UnrecognizedDeviceName {
127 #[doc(hidden)]
128 pub __source_breaking: fidl::marker::SourceBreaking,
129}
130
131impl fidl::Persistable for UnrecognizedDeviceName {}
132
133#[derive(Clone, Debug)]
134pub enum CaptureError {
135 UnrecognizedDeviceName(UnrecognizedDeviceName),
137 #[doc(hidden)]
138 __SourceBreaking { unknown_ordinal: u64 },
139}
140
141#[macro_export]
143macro_rules! CaptureErrorUnknown {
144 () => {
145 _
146 };
147}
148
149impl PartialEq for CaptureError {
151 fn eq(&self, other: &Self) -> bool {
152 match (self, other) {
153 (Self::UnrecognizedDeviceName(x), Self::UnrecognizedDeviceName(y)) => *x == *y,
154 _ => false,
155 }
156 }
157}
158
159impl CaptureError {
160 #[inline]
161 pub fn ordinal(&self) -> u64 {
162 match *self {
163 Self::UnrecognizedDeviceName(_) => 1,
164 Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
165 }
166 }
167
168 #[inline]
169 pub fn unknown_variant_for_testing() -> Self {
170 Self::__SourceBreaking { unknown_ordinal: 0 }
171 }
172
173 #[inline]
174 pub fn is_unknown(&self) -> bool {
175 match self {
176 Self::__SourceBreaking { .. } => true,
177 _ => false,
178 }
179 }
180}
181
182impl fidl::Persistable for CaptureError {}
183
184pub mod packet_observer_ordinals {
185 pub const OBSERVE: u64 = 0x2a82a5a9a18b79c9;
186 pub const ERROR: u64 = 0x6596e43f4f0761e4;
187}
188
189pub mod snoop_ordinals {
190 pub const START: u64 = 0xa520491a4a82f24;
191}
192
193mod internal {
194 use super::*;
195 unsafe impl fidl::encoding::TypeMarker for PacketFormat {
196 type Owned = Self;
197
198 #[inline(always)]
199 fn inline_align(_context: fidl::encoding::Context) -> usize {
200 std::mem::align_of::<u32>()
201 }
202
203 #[inline(always)]
204 fn inline_size(_context: fidl::encoding::Context) -> usize {
205 std::mem::size_of::<u32>()
206 }
207
208 #[inline(always)]
209 fn encode_is_copy() -> bool {
210 false
211 }
212
213 #[inline(always)]
214 fn decode_is_copy() -> bool {
215 false
216 }
217 }
218
219 impl fidl::encoding::ValueTypeMarker for PacketFormat {
220 type Borrowed<'a> = Self;
221 #[inline(always)]
222 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
223 *value
224 }
225 }
226
227 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for PacketFormat {
228 #[inline]
229 unsafe fn encode(
230 self,
231 encoder: &mut fidl::encoding::Encoder<'_, D>,
232 offset: usize,
233 _depth: fidl::encoding::Depth,
234 ) -> fidl::Result<()> {
235 encoder.debug_check_bounds::<Self>(offset);
236 encoder.write_num(self.into_primitive(), offset);
237 Ok(())
238 }
239 }
240
241 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for PacketFormat {
242 #[inline(always)]
243 fn new_empty() -> Self {
244 Self::unknown()
245 }
246
247 #[inline]
248 unsafe fn decode(
249 &mut self,
250 decoder: &mut fidl::encoding::Decoder<'_, D>,
251 offset: usize,
252 _depth: fidl::encoding::Depth,
253 ) -> fidl::Result<()> {
254 decoder.debug_check_bounds::<Self>(offset);
255 let prim = decoder.read_num::<u32>(offset);
256
257 *self = Self::from_primitive_allow_unknown(prim);
258 Ok(())
259 }
260 }
261
262 impl DevicePackets {
263 #[inline(always)]
264 fn max_ordinal_present(&self) -> u64 {
265 if let Some(_) = self.packets {
266 return 2;
267 }
268 if let Some(_) = self.host_device {
269 return 1;
270 }
271 0
272 }
273 }
274
275 impl fidl::encoding::ValueTypeMarker for DevicePackets {
276 type Borrowed<'a> = &'a Self;
277 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
278 value
279 }
280 }
281
282 unsafe impl fidl::encoding::TypeMarker for DevicePackets {
283 type Owned = Self;
284
285 #[inline(always)]
286 fn inline_align(_context: fidl::encoding::Context) -> usize {
287 8
288 }
289
290 #[inline(always)]
291 fn inline_size(_context: fidl::encoding::Context) -> usize {
292 16
293 }
294 }
295
296 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<DevicePackets, D>
297 for &DevicePackets
298 {
299 unsafe fn encode(
300 self,
301 encoder: &mut fidl::encoding::Encoder<'_, D>,
302 offset: usize,
303 mut depth: fidl::encoding::Depth,
304 ) -> fidl::Result<()> {
305 encoder.debug_check_bounds::<DevicePackets>(offset);
306 let max_ordinal: u64 = self.max_ordinal_present();
308 encoder.write_num(max_ordinal, offset);
309 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
310 if max_ordinal == 0 {
312 return Ok(());
313 }
314 depth.increment()?;
315 let envelope_size = 8;
316 let bytes_len = max_ordinal as usize * envelope_size;
317 #[allow(unused_variables)]
318 let offset = encoder.out_of_line_offset(bytes_len);
319 let mut _prev_end_offset: usize = 0;
320 if 1 > max_ordinal {
321 return Ok(());
322 }
323
324 let cur_offset: usize = (1 - 1) * envelope_size;
327
328 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
330
331 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<255>, D>(
336 self.host_device.as_ref().map(
337 <fidl::encoding::BoundedString<255> as fidl::encoding::ValueTypeMarker>::borrow,
338 ),
339 encoder,
340 offset + cur_offset,
341 depth,
342 )?;
343
344 _prev_end_offset = cur_offset + envelope_size;
345 if 2 > max_ordinal {
346 return Ok(());
347 }
348
349 let cur_offset: usize = (2 - 1) * envelope_size;
352
353 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
355
356 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<SnoopPacket>, D>(
361 self.packets.as_ref().map(<fidl::encoding::UnboundedVector<SnoopPacket> as fidl::encoding::ValueTypeMarker>::borrow),
362 encoder, offset + cur_offset, depth
363 )?;
364
365 _prev_end_offset = cur_offset + envelope_size;
366
367 Ok(())
368 }
369 }
370
371 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for DevicePackets {
372 #[inline(always)]
373 fn new_empty() -> Self {
374 Self::default()
375 }
376
377 unsafe fn decode(
378 &mut self,
379 decoder: &mut fidl::encoding::Decoder<'_, D>,
380 offset: usize,
381 mut depth: fidl::encoding::Depth,
382 ) -> fidl::Result<()> {
383 decoder.debug_check_bounds::<Self>(offset);
384 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
385 None => return Err(fidl::Error::NotNullable),
386 Some(len) => len,
387 };
388 if len == 0 {
390 return Ok(());
391 };
392 depth.increment()?;
393 let envelope_size = 8;
394 let bytes_len = len * envelope_size;
395 let offset = decoder.out_of_line_offset(bytes_len)?;
396 let mut _next_ordinal_to_read = 0;
398 let mut next_offset = offset;
399 let end_offset = offset + bytes_len;
400 _next_ordinal_to_read += 1;
401 if next_offset >= end_offset {
402 return Ok(());
403 }
404
405 while _next_ordinal_to_read < 1 {
407 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
408 _next_ordinal_to_read += 1;
409 next_offset += envelope_size;
410 }
411
412 let next_out_of_line = decoder.next_out_of_line();
413 let handles_before = decoder.remaining_handles();
414 if let Some((inlined, num_bytes, num_handles)) =
415 fidl::encoding::decode_envelope_header(decoder, next_offset)?
416 {
417 let member_inline_size =
418 <fidl::encoding::BoundedString<255> as fidl::encoding::TypeMarker>::inline_size(
419 decoder.context,
420 );
421 if inlined != (member_inline_size <= 4) {
422 return Err(fidl::Error::InvalidInlineBitInEnvelope);
423 }
424 let inner_offset;
425 let mut inner_depth = depth.clone();
426 if inlined {
427 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
428 inner_offset = next_offset;
429 } else {
430 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
431 inner_depth.increment()?;
432 }
433 let val_ref = self
434 .host_device
435 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<255>, D));
436 fidl::decode!(
437 fidl::encoding::BoundedString<255>,
438 D,
439 val_ref,
440 decoder,
441 inner_offset,
442 inner_depth
443 )?;
444 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
445 {
446 return Err(fidl::Error::InvalidNumBytesInEnvelope);
447 }
448 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
449 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
450 }
451 }
452
453 next_offset += envelope_size;
454 _next_ordinal_to_read += 1;
455 if next_offset >= end_offset {
456 return Ok(());
457 }
458
459 while _next_ordinal_to_read < 2 {
461 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
462 _next_ordinal_to_read += 1;
463 next_offset += envelope_size;
464 }
465
466 let next_out_of_line = decoder.next_out_of_line();
467 let handles_before = decoder.remaining_handles();
468 if let Some((inlined, num_bytes, num_handles)) =
469 fidl::encoding::decode_envelope_header(decoder, next_offset)?
470 {
471 let member_inline_size = <fidl::encoding::UnboundedVector<SnoopPacket> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
472 if inlined != (member_inline_size <= 4) {
473 return Err(fidl::Error::InvalidInlineBitInEnvelope);
474 }
475 let inner_offset;
476 let mut inner_depth = depth.clone();
477 if inlined {
478 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
479 inner_offset = next_offset;
480 } else {
481 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
482 inner_depth.increment()?;
483 }
484 let val_ref = self.packets.get_or_insert_with(|| {
485 fidl::new_empty!(fidl::encoding::UnboundedVector<SnoopPacket>, D)
486 });
487 fidl::decode!(
488 fidl::encoding::UnboundedVector<SnoopPacket>,
489 D,
490 val_ref,
491 decoder,
492 inner_offset,
493 inner_depth
494 )?;
495 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
496 {
497 return Err(fidl::Error::InvalidNumBytesInEnvelope);
498 }
499 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
500 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
501 }
502 }
503
504 next_offset += envelope_size;
505
506 while next_offset < end_offset {
508 _next_ordinal_to_read += 1;
509 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
510 next_offset += envelope_size;
511 }
512
513 Ok(())
514 }
515 }
516
517 impl SnoopPacket {
518 #[inline(always)]
519 fn max_ordinal_present(&self) -> u64 {
520 if let Some(_) = self.data {
521 return 5;
522 }
523 if let Some(_) = self.length {
524 return 4;
525 }
526 if let Some(_) = self.timestamp {
527 return 3;
528 }
529 if let Some(_) = self.format {
530 return 2;
531 }
532 if let Some(_) = self.is_received {
533 return 1;
534 }
535 0
536 }
537 }
538
539 impl fidl::encoding::ValueTypeMarker for SnoopPacket {
540 type Borrowed<'a> = &'a Self;
541 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
542 value
543 }
544 }
545
546 unsafe impl fidl::encoding::TypeMarker for SnoopPacket {
547 type Owned = Self;
548
549 #[inline(always)]
550 fn inline_align(_context: fidl::encoding::Context) -> usize {
551 8
552 }
553
554 #[inline(always)]
555 fn inline_size(_context: fidl::encoding::Context) -> usize {
556 16
557 }
558 }
559
560 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<SnoopPacket, D>
561 for &SnoopPacket
562 {
563 unsafe fn encode(
564 self,
565 encoder: &mut fidl::encoding::Encoder<'_, D>,
566 offset: usize,
567 mut depth: fidl::encoding::Depth,
568 ) -> fidl::Result<()> {
569 encoder.debug_check_bounds::<SnoopPacket>(offset);
570 let max_ordinal: u64 = self.max_ordinal_present();
572 encoder.write_num(max_ordinal, offset);
573 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
574 if max_ordinal == 0 {
576 return Ok(());
577 }
578 depth.increment()?;
579 let envelope_size = 8;
580 let bytes_len = max_ordinal as usize * envelope_size;
581 #[allow(unused_variables)]
582 let offset = encoder.out_of_line_offset(bytes_len);
583 let mut _prev_end_offset: usize = 0;
584 if 1 > max_ordinal {
585 return Ok(());
586 }
587
588 let cur_offset: usize = (1 - 1) * envelope_size;
591
592 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
594
595 fidl::encoding::encode_in_envelope_optional::<bool, D>(
600 self.is_received.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
601 encoder,
602 offset + cur_offset,
603 depth,
604 )?;
605
606 _prev_end_offset = cur_offset + envelope_size;
607 if 2 > max_ordinal {
608 return Ok(());
609 }
610
611 let cur_offset: usize = (2 - 1) * envelope_size;
614
615 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
617
618 fidl::encoding::encode_in_envelope_optional::<PacketFormat, D>(
623 self.format.as_ref().map(<PacketFormat as fidl::encoding::ValueTypeMarker>::borrow),
624 encoder,
625 offset + cur_offset,
626 depth,
627 )?;
628
629 _prev_end_offset = cur_offset + envelope_size;
630 if 3 > max_ordinal {
631 return Ok(());
632 }
633
634 let cur_offset: usize = (3 - 1) * envelope_size;
637
638 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
640
641 fidl::encoding::encode_in_envelope_optional::<i64, D>(
646 self.timestamp.as_ref().map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
647 encoder,
648 offset + cur_offset,
649 depth,
650 )?;
651
652 _prev_end_offset = cur_offset + envelope_size;
653 if 4 > max_ordinal {
654 return Ok(());
655 }
656
657 let cur_offset: usize = (4 - 1) * envelope_size;
660
661 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
663
664 fidl::encoding::encode_in_envelope_optional::<u32, D>(
669 self.length.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
670 encoder,
671 offset + cur_offset,
672 depth,
673 )?;
674
675 _prev_end_offset = cur_offset + envelope_size;
676 if 5 > max_ordinal {
677 return Ok(());
678 }
679
680 let cur_offset: usize = (5 - 1) * envelope_size;
683
684 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
686
687 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<u8>, D>(
692 self.data.as_ref().map(<fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow),
693 encoder, offset + cur_offset, depth
694 )?;
695
696 _prev_end_offset = cur_offset + envelope_size;
697
698 Ok(())
699 }
700 }
701
702 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for SnoopPacket {
703 #[inline(always)]
704 fn new_empty() -> Self {
705 Self::default()
706 }
707
708 unsafe fn decode(
709 &mut self,
710 decoder: &mut fidl::encoding::Decoder<'_, D>,
711 offset: usize,
712 mut depth: fidl::encoding::Depth,
713 ) -> fidl::Result<()> {
714 decoder.debug_check_bounds::<Self>(offset);
715 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
716 None => return Err(fidl::Error::NotNullable),
717 Some(len) => len,
718 };
719 if len == 0 {
721 return Ok(());
722 };
723 depth.increment()?;
724 let envelope_size = 8;
725 let bytes_len = len * envelope_size;
726 let offset = decoder.out_of_line_offset(bytes_len)?;
727 let mut _next_ordinal_to_read = 0;
729 let mut next_offset = offset;
730 let end_offset = offset + bytes_len;
731 _next_ordinal_to_read += 1;
732 if next_offset >= end_offset {
733 return Ok(());
734 }
735
736 while _next_ordinal_to_read < 1 {
738 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
739 _next_ordinal_to_read += 1;
740 next_offset += envelope_size;
741 }
742
743 let next_out_of_line = decoder.next_out_of_line();
744 let handles_before = decoder.remaining_handles();
745 if let Some((inlined, num_bytes, num_handles)) =
746 fidl::encoding::decode_envelope_header(decoder, next_offset)?
747 {
748 let member_inline_size =
749 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
750 if inlined != (member_inline_size <= 4) {
751 return Err(fidl::Error::InvalidInlineBitInEnvelope);
752 }
753 let inner_offset;
754 let mut inner_depth = depth.clone();
755 if inlined {
756 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
757 inner_offset = next_offset;
758 } else {
759 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
760 inner_depth.increment()?;
761 }
762 let val_ref = self.is_received.get_or_insert_with(|| fidl::new_empty!(bool, D));
763 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
764 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
765 {
766 return Err(fidl::Error::InvalidNumBytesInEnvelope);
767 }
768 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
769 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
770 }
771 }
772
773 next_offset += envelope_size;
774 _next_ordinal_to_read += 1;
775 if next_offset >= end_offset {
776 return Ok(());
777 }
778
779 while _next_ordinal_to_read < 2 {
781 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
782 _next_ordinal_to_read += 1;
783 next_offset += envelope_size;
784 }
785
786 let next_out_of_line = decoder.next_out_of_line();
787 let handles_before = decoder.remaining_handles();
788 if let Some((inlined, num_bytes, num_handles)) =
789 fidl::encoding::decode_envelope_header(decoder, next_offset)?
790 {
791 let member_inline_size =
792 <PacketFormat as fidl::encoding::TypeMarker>::inline_size(decoder.context);
793 if inlined != (member_inline_size <= 4) {
794 return Err(fidl::Error::InvalidInlineBitInEnvelope);
795 }
796 let inner_offset;
797 let mut inner_depth = depth.clone();
798 if inlined {
799 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
800 inner_offset = next_offset;
801 } else {
802 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
803 inner_depth.increment()?;
804 }
805 let val_ref = self.format.get_or_insert_with(|| fidl::new_empty!(PacketFormat, D));
806 fidl::decode!(PacketFormat, D, val_ref, decoder, inner_offset, inner_depth)?;
807 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
808 {
809 return Err(fidl::Error::InvalidNumBytesInEnvelope);
810 }
811 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
812 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
813 }
814 }
815
816 next_offset += envelope_size;
817 _next_ordinal_to_read += 1;
818 if next_offset >= end_offset {
819 return Ok(());
820 }
821
822 while _next_ordinal_to_read < 3 {
824 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
825 _next_ordinal_to_read += 1;
826 next_offset += envelope_size;
827 }
828
829 let next_out_of_line = decoder.next_out_of_line();
830 let handles_before = decoder.remaining_handles();
831 if let Some((inlined, num_bytes, num_handles)) =
832 fidl::encoding::decode_envelope_header(decoder, next_offset)?
833 {
834 let member_inline_size =
835 <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
836 if inlined != (member_inline_size <= 4) {
837 return Err(fidl::Error::InvalidInlineBitInEnvelope);
838 }
839 let inner_offset;
840 let mut inner_depth = depth.clone();
841 if inlined {
842 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
843 inner_offset = next_offset;
844 } else {
845 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
846 inner_depth.increment()?;
847 }
848 let val_ref = self.timestamp.get_or_insert_with(|| fidl::new_empty!(i64, D));
849 fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
850 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
851 {
852 return Err(fidl::Error::InvalidNumBytesInEnvelope);
853 }
854 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
855 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
856 }
857 }
858
859 next_offset += envelope_size;
860 _next_ordinal_to_read += 1;
861 if next_offset >= end_offset {
862 return Ok(());
863 }
864
865 while _next_ordinal_to_read < 4 {
867 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
868 _next_ordinal_to_read += 1;
869 next_offset += envelope_size;
870 }
871
872 let next_out_of_line = decoder.next_out_of_line();
873 let handles_before = decoder.remaining_handles();
874 if let Some((inlined, num_bytes, num_handles)) =
875 fidl::encoding::decode_envelope_header(decoder, next_offset)?
876 {
877 let member_inline_size =
878 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
879 if inlined != (member_inline_size <= 4) {
880 return Err(fidl::Error::InvalidInlineBitInEnvelope);
881 }
882 let inner_offset;
883 let mut inner_depth = depth.clone();
884 if inlined {
885 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
886 inner_offset = next_offset;
887 } else {
888 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
889 inner_depth.increment()?;
890 }
891 let val_ref = self.length.get_or_insert_with(|| fidl::new_empty!(u32, D));
892 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
893 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
894 {
895 return Err(fidl::Error::InvalidNumBytesInEnvelope);
896 }
897 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
898 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
899 }
900 }
901
902 next_offset += envelope_size;
903 _next_ordinal_to_read += 1;
904 if next_offset >= end_offset {
905 return Ok(());
906 }
907
908 while _next_ordinal_to_read < 5 {
910 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
911 _next_ordinal_to_read += 1;
912 next_offset += envelope_size;
913 }
914
915 let next_out_of_line = decoder.next_out_of_line();
916 let handles_before = decoder.remaining_handles();
917 if let Some((inlined, num_bytes, num_handles)) =
918 fidl::encoding::decode_envelope_header(decoder, next_offset)?
919 {
920 let member_inline_size = <fidl::encoding::UnboundedVector<u8> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
921 if inlined != (member_inline_size <= 4) {
922 return Err(fidl::Error::InvalidInlineBitInEnvelope);
923 }
924 let inner_offset;
925 let mut inner_depth = depth.clone();
926 if inlined {
927 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
928 inner_offset = next_offset;
929 } else {
930 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
931 inner_depth.increment()?;
932 }
933 let val_ref = self.data.get_or_insert_with(|| {
934 fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D)
935 });
936 fidl::decode!(
937 fidl::encoding::UnboundedVector<u8>,
938 D,
939 val_ref,
940 decoder,
941 inner_offset,
942 inner_depth
943 )?;
944 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
945 {
946 return Err(fidl::Error::InvalidNumBytesInEnvelope);
947 }
948 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
949 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
950 }
951 }
952
953 next_offset += envelope_size;
954
955 while next_offset < end_offset {
957 _next_ordinal_to_read += 1;
958 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
959 next_offset += envelope_size;
960 }
961
962 Ok(())
963 }
964 }
965
966 impl UnrecognizedDeviceName {
967 #[inline(always)]
968 fn max_ordinal_present(&self) -> u64 {
969 0
970 }
971 }
972
973 impl fidl::encoding::ValueTypeMarker for UnrecognizedDeviceName {
974 type Borrowed<'a> = &'a Self;
975 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
976 value
977 }
978 }
979
980 unsafe impl fidl::encoding::TypeMarker for UnrecognizedDeviceName {
981 type Owned = Self;
982
983 #[inline(always)]
984 fn inline_align(_context: fidl::encoding::Context) -> usize {
985 8
986 }
987
988 #[inline(always)]
989 fn inline_size(_context: fidl::encoding::Context) -> usize {
990 16
991 }
992 }
993
994 unsafe impl<D: fidl::encoding::ResourceDialect>
995 fidl::encoding::Encode<UnrecognizedDeviceName, D> for &UnrecognizedDeviceName
996 {
997 unsafe fn encode(
998 self,
999 encoder: &mut fidl::encoding::Encoder<'_, D>,
1000 offset: usize,
1001 mut depth: fidl::encoding::Depth,
1002 ) -> fidl::Result<()> {
1003 encoder.debug_check_bounds::<UnrecognizedDeviceName>(offset);
1004 let max_ordinal: u64 = self.max_ordinal_present();
1006 encoder.write_num(max_ordinal, offset);
1007 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
1008 if max_ordinal == 0 {
1010 return Ok(());
1011 }
1012 depth.increment()?;
1013 let envelope_size = 8;
1014 let bytes_len = max_ordinal as usize * envelope_size;
1015 #[allow(unused_variables)]
1016 let offset = encoder.out_of_line_offset(bytes_len);
1017 let mut _prev_end_offset: usize = 0;
1018
1019 Ok(())
1020 }
1021 }
1022
1023 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1024 for UnrecognizedDeviceName
1025 {
1026 #[inline(always)]
1027 fn new_empty() -> Self {
1028 Self::default()
1029 }
1030
1031 unsafe fn decode(
1032 &mut self,
1033 decoder: &mut fidl::encoding::Decoder<'_, D>,
1034 offset: usize,
1035 mut depth: fidl::encoding::Depth,
1036 ) -> fidl::Result<()> {
1037 decoder.debug_check_bounds::<Self>(offset);
1038 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
1039 None => return Err(fidl::Error::NotNullable),
1040 Some(len) => len,
1041 };
1042 if len == 0 {
1044 return Ok(());
1045 };
1046 depth.increment()?;
1047 let envelope_size = 8;
1048 let bytes_len = len * envelope_size;
1049 let offset = decoder.out_of_line_offset(bytes_len)?;
1050 let mut _next_ordinal_to_read = 0;
1052 let mut next_offset = offset;
1053 let end_offset = offset + bytes_len;
1054
1055 while next_offset < end_offset {
1057 _next_ordinal_to_read += 1;
1058 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1059 next_offset += envelope_size;
1060 }
1061
1062 Ok(())
1063 }
1064 }
1065
1066 impl fidl::encoding::ValueTypeMarker for CaptureError {
1067 type Borrowed<'a> = &'a Self;
1068 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1069 value
1070 }
1071 }
1072
1073 unsafe impl fidl::encoding::TypeMarker for CaptureError {
1074 type Owned = Self;
1075
1076 #[inline(always)]
1077 fn inline_align(_context: fidl::encoding::Context) -> usize {
1078 8
1079 }
1080
1081 #[inline(always)]
1082 fn inline_size(_context: fidl::encoding::Context) -> usize {
1083 16
1084 }
1085 }
1086
1087 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<CaptureError, D>
1088 for &CaptureError
1089 {
1090 #[inline]
1091 unsafe fn encode(
1092 self,
1093 encoder: &mut fidl::encoding::Encoder<'_, D>,
1094 offset: usize,
1095 _depth: fidl::encoding::Depth,
1096 ) -> fidl::Result<()> {
1097 encoder.debug_check_bounds::<CaptureError>(offset);
1098 encoder.write_num::<u64>(self.ordinal(), offset);
1099 match self {
1100 CaptureError::UnrecognizedDeviceName(ref val) => {
1101 fidl::encoding::encode_in_envelope::<UnrecognizedDeviceName, D>(
1102 <UnrecognizedDeviceName as fidl::encoding::ValueTypeMarker>::borrow(val),
1103 encoder,
1104 offset + 8,
1105 _depth,
1106 )
1107 }
1108 CaptureError::__SourceBreaking { .. } => Err(fidl::Error::UnknownUnionTag),
1109 }
1110 }
1111 }
1112
1113 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for CaptureError {
1114 #[inline(always)]
1115 fn new_empty() -> Self {
1116 Self::__SourceBreaking { unknown_ordinal: 0 }
1117 }
1118
1119 #[inline]
1120 unsafe fn decode(
1121 &mut self,
1122 decoder: &mut fidl::encoding::Decoder<'_, D>,
1123 offset: usize,
1124 mut depth: fidl::encoding::Depth,
1125 ) -> fidl::Result<()> {
1126 decoder.debug_check_bounds::<Self>(offset);
1127 #[allow(unused_variables)]
1128 let next_out_of_line = decoder.next_out_of_line();
1129 let handles_before = decoder.remaining_handles();
1130 let (ordinal, inlined, num_bytes, num_handles) =
1131 fidl::encoding::decode_union_inline_portion(decoder, offset)?;
1132
1133 let member_inline_size = match ordinal {
1134 1 => <UnrecognizedDeviceName as fidl::encoding::TypeMarker>::inline_size(
1135 decoder.context,
1136 ),
1137 0 => return Err(fidl::Error::UnknownUnionTag),
1138 _ => num_bytes as usize,
1139 };
1140
1141 if inlined != (member_inline_size <= 4) {
1142 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1143 }
1144 let _inner_offset;
1145 if inlined {
1146 decoder.check_inline_envelope_padding(offset + 8, member_inline_size)?;
1147 _inner_offset = offset + 8;
1148 } else {
1149 depth.increment()?;
1150 _inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1151 }
1152 match ordinal {
1153 1 => {
1154 #[allow(irrefutable_let_patterns)]
1155 if let CaptureError::UnrecognizedDeviceName(_) = self {
1156 } else {
1158 *self = CaptureError::UnrecognizedDeviceName(fidl::new_empty!(
1160 UnrecognizedDeviceName,
1161 D
1162 ));
1163 }
1164 #[allow(irrefutable_let_patterns)]
1165 if let CaptureError::UnrecognizedDeviceName(ref mut val) = self {
1166 fidl::decode!(
1167 UnrecognizedDeviceName,
1168 D,
1169 val,
1170 decoder,
1171 _inner_offset,
1172 depth
1173 )?;
1174 } else {
1175 unreachable!()
1176 }
1177 }
1178 #[allow(deprecated)]
1179 ordinal => {
1180 for _ in 0..num_handles {
1181 decoder.drop_next_handle()?;
1182 }
1183 *self = CaptureError::__SourceBreaking { unknown_ordinal: ordinal };
1184 }
1185 }
1186 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize) {
1187 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1188 }
1189 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1190 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1191 }
1192 Ok(())
1193 }
1194 }
1195}