1#![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 _};
10pub use fidl_fuchsia_diagnostics_types__common::*;
11use futures::future::{self, MaybeDone, TryFutureExt};
12use zx_status;
13
14#[derive(Debug, Default, PartialEq)]
15pub struct ComponentDiagnostics {
16 pub tasks: Option<ComponentTasks>,
17 #[doc(hidden)]
18 pub __source_breaking: fidl::marker::SourceBreaking,
19}
20
21impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect> for ComponentDiagnostics {}
22
23#[derive(Debug, Default, PartialEq)]
24pub struct ComponentTasks {
25 pub component_task: Option<Task>,
26 pub parent_task: Option<Task>,
27 #[doc(hidden)]
28 pub __source_breaking: fidl::marker::SourceBreaking,
29}
30
31impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect> for ComponentTasks {}
32
33#[derive(Debug)]
34pub enum Task {
35 Job(fidl::Job),
36 Process(fidl::Process),
37 Thread(fidl::Thread),
38 #[doc(hidden)]
39 __SourceBreaking {
40 unknown_ordinal: u64,
41 },
42}
43
44#[macro_export]
46macro_rules! TaskUnknown {
47 () => {
48 _
49 };
50}
51
52impl PartialEq for Task {
54 fn eq(&self, other: &Self) -> bool {
55 match (self, other) {
56 (Self::Job(x), Self::Job(y)) => *x == *y,
57 (Self::Process(x), Self::Process(y)) => *x == *y,
58 (Self::Thread(x), Self::Thread(y)) => *x == *y,
59 _ => false,
60 }
61 }
62}
63
64impl Task {
65 #[inline]
66 pub fn ordinal(&self) -> u64 {
67 match *self {
68 Self::Job(_) => 1,
69 Self::Process(_) => 2,
70 Self::Thread(_) => 3,
71 Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
72 }
73 }
74
75 #[inline]
76 pub fn unknown_variant_for_testing() -> Self {
77 Self::__SourceBreaking { unknown_ordinal: 0 }
78 }
79
80 #[inline]
81 pub fn is_unknown(&self) -> bool {
82 match self {
83 Self::__SourceBreaking { .. } => true,
84 _ => false,
85 }
86 }
87}
88
89impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect> for Task {}
90
91mod internal {
92 use super::*;
93
94 impl ComponentDiagnostics {
95 #[inline(always)]
96 fn max_ordinal_present(&self) -> u64 {
97 if let Some(_) = self.tasks {
98 return 1;
99 }
100 0
101 }
102 }
103
104 impl fidl::encoding::ResourceTypeMarker for ComponentDiagnostics {
105 type Borrowed<'a> = &'a mut Self;
106 fn take_or_borrow<'a>(
107 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
108 ) -> Self::Borrowed<'a> {
109 value
110 }
111 }
112
113 unsafe impl fidl::encoding::TypeMarker for ComponentDiagnostics {
114 type Owned = Self;
115
116 #[inline(always)]
117 fn inline_align(_context: fidl::encoding::Context) -> usize {
118 8
119 }
120
121 #[inline(always)]
122 fn inline_size(_context: fidl::encoding::Context) -> usize {
123 16
124 }
125 }
126
127 unsafe impl
128 fidl::encoding::Encode<ComponentDiagnostics, fidl::encoding::DefaultFuchsiaResourceDialect>
129 for &mut ComponentDiagnostics
130 {
131 unsafe fn encode(
132 self,
133 encoder: &mut fidl::encoding::Encoder<
134 '_,
135 fidl::encoding::DefaultFuchsiaResourceDialect,
136 >,
137 offset: usize,
138 mut depth: fidl::encoding::Depth,
139 ) -> fidl::Result<()> {
140 encoder.debug_check_bounds::<ComponentDiagnostics>(offset);
141 let max_ordinal: u64 = self.max_ordinal_present();
143 encoder.write_num(max_ordinal, offset);
144 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
145 if max_ordinal == 0 {
147 return Ok(());
148 }
149 depth.increment()?;
150 let envelope_size = 8;
151 let bytes_len = max_ordinal as usize * envelope_size;
152 #[allow(unused_variables)]
153 let offset = encoder.out_of_line_offset(bytes_len);
154 let mut _prev_end_offset: usize = 0;
155 if 1 > max_ordinal {
156 return Ok(());
157 }
158
159 let cur_offset: usize = (1 - 1) * envelope_size;
162
163 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
165
166 fidl::encoding::encode_in_envelope_optional::<
171 ComponentTasks,
172 fidl::encoding::DefaultFuchsiaResourceDialect,
173 >(
174 self.tasks
175 .as_mut()
176 .map(<ComponentTasks as fidl::encoding::ResourceTypeMarker>::take_or_borrow),
177 encoder,
178 offset + cur_offset,
179 depth,
180 )?;
181
182 _prev_end_offset = cur_offset + envelope_size;
183
184 Ok(())
185 }
186 }
187
188 impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
189 for ComponentDiagnostics
190 {
191 #[inline(always)]
192 fn new_empty() -> Self {
193 Self::default()
194 }
195
196 unsafe fn decode(
197 &mut self,
198 decoder: &mut fidl::encoding::Decoder<
199 '_,
200 fidl::encoding::DefaultFuchsiaResourceDialect,
201 >,
202 offset: usize,
203 mut depth: fidl::encoding::Depth,
204 ) -> fidl::Result<()> {
205 decoder.debug_check_bounds::<Self>(offset);
206 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
207 None => return Err(fidl::Error::NotNullable),
208 Some(len) => len,
209 };
210 if len == 0 {
212 return Ok(());
213 };
214 depth.increment()?;
215 let envelope_size = 8;
216 let bytes_len = len * envelope_size;
217 let offset = decoder.out_of_line_offset(bytes_len)?;
218 let mut _next_ordinal_to_read = 0;
220 let mut next_offset = offset;
221 let end_offset = offset + bytes_len;
222 _next_ordinal_to_read += 1;
223 if next_offset >= end_offset {
224 return Ok(());
225 }
226
227 while _next_ordinal_to_read < 1 {
229 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
230 _next_ordinal_to_read += 1;
231 next_offset += envelope_size;
232 }
233
234 let next_out_of_line = decoder.next_out_of_line();
235 let handles_before = decoder.remaining_handles();
236 if let Some((inlined, num_bytes, num_handles)) =
237 fidl::encoding::decode_envelope_header(decoder, next_offset)?
238 {
239 let member_inline_size =
240 <ComponentTasks as fidl::encoding::TypeMarker>::inline_size(decoder.context);
241 if inlined != (member_inline_size <= 4) {
242 return Err(fidl::Error::InvalidInlineBitInEnvelope);
243 }
244 let inner_offset;
245 let mut inner_depth = depth.clone();
246 if inlined {
247 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
248 inner_offset = next_offset;
249 } else {
250 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
251 inner_depth.increment()?;
252 }
253 let val_ref = self.tasks.get_or_insert_with(|| {
254 fidl::new_empty!(ComponentTasks, fidl::encoding::DefaultFuchsiaResourceDialect)
255 });
256 fidl::decode!(
257 ComponentTasks,
258 fidl::encoding::DefaultFuchsiaResourceDialect,
259 val_ref,
260 decoder,
261 inner_offset,
262 inner_depth
263 )?;
264 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
265 {
266 return Err(fidl::Error::InvalidNumBytesInEnvelope);
267 }
268 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
269 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
270 }
271 }
272
273 next_offset += envelope_size;
274
275 while next_offset < end_offset {
277 _next_ordinal_to_read += 1;
278 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
279 next_offset += envelope_size;
280 }
281
282 Ok(())
283 }
284 }
285
286 impl ComponentTasks {
287 #[inline(always)]
288 fn max_ordinal_present(&self) -> u64 {
289 if let Some(_) = self.parent_task {
290 return 2;
291 }
292 if let Some(_) = self.component_task {
293 return 1;
294 }
295 0
296 }
297 }
298
299 impl fidl::encoding::ResourceTypeMarker for ComponentTasks {
300 type Borrowed<'a> = &'a mut Self;
301 fn take_or_borrow<'a>(
302 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
303 ) -> Self::Borrowed<'a> {
304 value
305 }
306 }
307
308 unsafe impl fidl::encoding::TypeMarker for ComponentTasks {
309 type Owned = Self;
310
311 #[inline(always)]
312 fn inline_align(_context: fidl::encoding::Context) -> usize {
313 8
314 }
315
316 #[inline(always)]
317 fn inline_size(_context: fidl::encoding::Context) -> usize {
318 16
319 }
320 }
321
322 unsafe impl
323 fidl::encoding::Encode<ComponentTasks, fidl::encoding::DefaultFuchsiaResourceDialect>
324 for &mut ComponentTasks
325 {
326 unsafe fn encode(
327 self,
328 encoder: &mut fidl::encoding::Encoder<
329 '_,
330 fidl::encoding::DefaultFuchsiaResourceDialect,
331 >,
332 offset: usize,
333 mut depth: fidl::encoding::Depth,
334 ) -> fidl::Result<()> {
335 encoder.debug_check_bounds::<ComponentTasks>(offset);
336 let max_ordinal: u64 = self.max_ordinal_present();
338 encoder.write_num(max_ordinal, offset);
339 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
340 if max_ordinal == 0 {
342 return Ok(());
343 }
344 depth.increment()?;
345 let envelope_size = 8;
346 let bytes_len = max_ordinal as usize * envelope_size;
347 #[allow(unused_variables)]
348 let offset = encoder.out_of_line_offset(bytes_len);
349 let mut _prev_end_offset: usize = 0;
350 if 1 > max_ordinal {
351 return Ok(());
352 }
353
354 let cur_offset: usize = (1 - 1) * envelope_size;
357
358 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
360
361 fidl::encoding::encode_in_envelope_optional::<
366 Task,
367 fidl::encoding::DefaultFuchsiaResourceDialect,
368 >(
369 self.component_task
370 .as_mut()
371 .map(<Task as fidl::encoding::ResourceTypeMarker>::take_or_borrow),
372 encoder,
373 offset + cur_offset,
374 depth,
375 )?;
376
377 _prev_end_offset = cur_offset + envelope_size;
378 if 2 > max_ordinal {
379 return Ok(());
380 }
381
382 let cur_offset: usize = (2 - 1) * envelope_size;
385
386 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
388
389 fidl::encoding::encode_in_envelope_optional::<
394 Task,
395 fidl::encoding::DefaultFuchsiaResourceDialect,
396 >(
397 self.parent_task
398 .as_mut()
399 .map(<Task as fidl::encoding::ResourceTypeMarker>::take_or_borrow),
400 encoder,
401 offset + cur_offset,
402 depth,
403 )?;
404
405 _prev_end_offset = cur_offset + envelope_size;
406
407 Ok(())
408 }
409 }
410
411 impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
412 for ComponentTasks
413 {
414 #[inline(always)]
415 fn new_empty() -> Self {
416 Self::default()
417 }
418
419 unsafe fn decode(
420 &mut self,
421 decoder: &mut fidl::encoding::Decoder<
422 '_,
423 fidl::encoding::DefaultFuchsiaResourceDialect,
424 >,
425 offset: usize,
426 mut depth: fidl::encoding::Depth,
427 ) -> fidl::Result<()> {
428 decoder.debug_check_bounds::<Self>(offset);
429 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
430 None => return Err(fidl::Error::NotNullable),
431 Some(len) => len,
432 };
433 if len == 0 {
435 return Ok(());
436 };
437 depth.increment()?;
438 let envelope_size = 8;
439 let bytes_len = len * envelope_size;
440 let offset = decoder.out_of_line_offset(bytes_len)?;
441 let mut _next_ordinal_to_read = 0;
443 let mut next_offset = offset;
444 let end_offset = offset + bytes_len;
445 _next_ordinal_to_read += 1;
446 if next_offset >= end_offset {
447 return Ok(());
448 }
449
450 while _next_ordinal_to_read < 1 {
452 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
453 _next_ordinal_to_read += 1;
454 next_offset += envelope_size;
455 }
456
457 let next_out_of_line = decoder.next_out_of_line();
458 let handles_before = decoder.remaining_handles();
459 if let Some((inlined, num_bytes, num_handles)) =
460 fidl::encoding::decode_envelope_header(decoder, next_offset)?
461 {
462 let member_inline_size =
463 <Task as fidl::encoding::TypeMarker>::inline_size(decoder.context);
464 if inlined != (member_inline_size <= 4) {
465 return Err(fidl::Error::InvalidInlineBitInEnvelope);
466 }
467 let inner_offset;
468 let mut inner_depth = depth.clone();
469 if inlined {
470 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
471 inner_offset = next_offset;
472 } else {
473 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
474 inner_depth.increment()?;
475 }
476 let val_ref = self.component_task.get_or_insert_with(|| {
477 fidl::new_empty!(Task, fidl::encoding::DefaultFuchsiaResourceDialect)
478 });
479 fidl::decode!(
480 Task,
481 fidl::encoding::DefaultFuchsiaResourceDialect,
482 val_ref,
483 decoder,
484 inner_offset,
485 inner_depth
486 )?;
487 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
488 {
489 return Err(fidl::Error::InvalidNumBytesInEnvelope);
490 }
491 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
492 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
493 }
494 }
495
496 next_offset += envelope_size;
497 _next_ordinal_to_read += 1;
498 if next_offset >= end_offset {
499 return Ok(());
500 }
501
502 while _next_ordinal_to_read < 2 {
504 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
505 _next_ordinal_to_read += 1;
506 next_offset += envelope_size;
507 }
508
509 let next_out_of_line = decoder.next_out_of_line();
510 let handles_before = decoder.remaining_handles();
511 if let Some((inlined, num_bytes, num_handles)) =
512 fidl::encoding::decode_envelope_header(decoder, next_offset)?
513 {
514 let member_inline_size =
515 <Task as fidl::encoding::TypeMarker>::inline_size(decoder.context);
516 if inlined != (member_inline_size <= 4) {
517 return Err(fidl::Error::InvalidInlineBitInEnvelope);
518 }
519 let inner_offset;
520 let mut inner_depth = depth.clone();
521 if inlined {
522 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
523 inner_offset = next_offset;
524 } else {
525 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
526 inner_depth.increment()?;
527 }
528 let val_ref = self.parent_task.get_or_insert_with(|| {
529 fidl::new_empty!(Task, fidl::encoding::DefaultFuchsiaResourceDialect)
530 });
531 fidl::decode!(
532 Task,
533 fidl::encoding::DefaultFuchsiaResourceDialect,
534 val_ref,
535 decoder,
536 inner_offset,
537 inner_depth
538 )?;
539 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
540 {
541 return Err(fidl::Error::InvalidNumBytesInEnvelope);
542 }
543 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
544 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
545 }
546 }
547
548 next_offset += envelope_size;
549
550 while next_offset < end_offset {
552 _next_ordinal_to_read += 1;
553 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
554 next_offset += envelope_size;
555 }
556
557 Ok(())
558 }
559 }
560
561 impl fidl::encoding::ResourceTypeMarker for Task {
562 type Borrowed<'a> = &'a mut Self;
563 fn take_or_borrow<'a>(
564 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
565 ) -> Self::Borrowed<'a> {
566 value
567 }
568 }
569
570 unsafe impl fidl::encoding::TypeMarker for Task {
571 type Owned = Self;
572
573 #[inline(always)]
574 fn inline_align(_context: fidl::encoding::Context) -> usize {
575 8
576 }
577
578 #[inline(always)]
579 fn inline_size(_context: fidl::encoding::Context) -> usize {
580 16
581 }
582 }
583
584 unsafe impl fidl::encoding::Encode<Task, fidl::encoding::DefaultFuchsiaResourceDialect>
585 for &mut Task
586 {
587 #[inline]
588 unsafe fn encode(
589 self,
590 encoder: &mut fidl::encoding::Encoder<
591 '_,
592 fidl::encoding::DefaultFuchsiaResourceDialect,
593 >,
594 offset: usize,
595 _depth: fidl::encoding::Depth,
596 ) -> fidl::Result<()> {
597 encoder.debug_check_bounds::<Task>(offset);
598 encoder.write_num::<u64>(self.ordinal(), offset);
599 match self {
600 Task::Job(ref mut val) => fidl::encoding::encode_in_envelope::<
601 fidl::encoding::HandleType<
602 fidl::Job,
603 { fidl::ObjectType::JOB.into_raw() },
604 2147483648,
605 >,
606 fidl::encoding::DefaultFuchsiaResourceDialect,
607 >(
608 <fidl::encoding::HandleType<
609 fidl::Job,
610 { fidl::ObjectType::JOB.into_raw() },
611 2147483648,
612 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow(
613 val
614 ),
615 encoder,
616 offset + 8,
617 _depth,
618 ),
619 Task::Process(ref mut val) => fidl::encoding::encode_in_envelope::<
620 fidl::encoding::HandleType<
621 fidl::Process,
622 { fidl::ObjectType::PROCESS.into_raw() },
623 2147483648,
624 >,
625 fidl::encoding::DefaultFuchsiaResourceDialect,
626 >(
627 <fidl::encoding::HandleType<
628 fidl::Process,
629 { fidl::ObjectType::PROCESS.into_raw() },
630 2147483648,
631 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow(
632 val
633 ),
634 encoder,
635 offset + 8,
636 _depth,
637 ),
638 Task::Thread(ref mut val) => fidl::encoding::encode_in_envelope::<
639 fidl::encoding::HandleType<
640 fidl::Thread,
641 { fidl::ObjectType::THREAD.into_raw() },
642 2147483648,
643 >,
644 fidl::encoding::DefaultFuchsiaResourceDialect,
645 >(
646 <fidl::encoding::HandleType<
647 fidl::Thread,
648 { fidl::ObjectType::THREAD.into_raw() },
649 2147483648,
650 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow(
651 val
652 ),
653 encoder,
654 offset + 8,
655 _depth,
656 ),
657 Task::__SourceBreaking { .. } => Err(fidl::Error::UnknownUnionTag),
658 }
659 }
660 }
661
662 impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect> for Task {
663 #[inline(always)]
664 fn new_empty() -> Self {
665 Self::__SourceBreaking { unknown_ordinal: 0 }
666 }
667
668 #[inline]
669 unsafe fn decode(
670 &mut self,
671 decoder: &mut fidl::encoding::Decoder<
672 '_,
673 fidl::encoding::DefaultFuchsiaResourceDialect,
674 >,
675 offset: usize,
676 mut depth: fidl::encoding::Depth,
677 ) -> fidl::Result<()> {
678 decoder.debug_check_bounds::<Self>(offset);
679 #[allow(unused_variables)]
680 let next_out_of_line = decoder.next_out_of_line();
681 let handles_before = decoder.remaining_handles();
682 let (ordinal, inlined, num_bytes, num_handles) =
683 fidl::encoding::decode_union_inline_portion(decoder, offset)?;
684
685 let member_inline_size = match ordinal {
686 1 => <fidl::encoding::HandleType<
687 fidl::Job,
688 { fidl::ObjectType::JOB.into_raw() },
689 2147483648,
690 > as fidl::encoding::TypeMarker>::inline_size(decoder.context),
691 2 => <fidl::encoding::HandleType<
692 fidl::Process,
693 { fidl::ObjectType::PROCESS.into_raw() },
694 2147483648,
695 > as fidl::encoding::TypeMarker>::inline_size(decoder.context),
696 3 => <fidl::encoding::HandleType<
697 fidl::Thread,
698 { fidl::ObjectType::THREAD.into_raw() },
699 2147483648,
700 > as fidl::encoding::TypeMarker>::inline_size(decoder.context),
701 0 => return Err(fidl::Error::UnknownUnionTag),
702 _ => num_bytes as usize,
703 };
704
705 if inlined != (member_inline_size <= 4) {
706 return Err(fidl::Error::InvalidInlineBitInEnvelope);
707 }
708 let _inner_offset;
709 if inlined {
710 decoder.check_inline_envelope_padding(offset + 8, member_inline_size)?;
711 _inner_offset = offset + 8;
712 } else {
713 depth.increment()?;
714 _inner_offset = decoder.out_of_line_offset(member_inline_size)?;
715 }
716 match ordinal {
717 1 => {
718 #[allow(irrefutable_let_patterns)]
719 if let Task::Job(_) = self {
720 } else {
722 *self = Task::Job(
724 fidl::new_empty!(fidl::encoding::HandleType<fidl::Job, { fidl::ObjectType::JOB.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect),
725 );
726 }
727 #[allow(irrefutable_let_patterns)]
728 if let Task::Job(ref mut val) = self {
729 fidl::decode!(fidl::encoding::HandleType<fidl::Job, { fidl::ObjectType::JOB.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect, val, decoder, _inner_offset, depth)?;
730 } else {
731 unreachable!()
732 }
733 }
734 2 => {
735 #[allow(irrefutable_let_patterns)]
736 if let Task::Process(_) = self {
737 } else {
739 *self = Task::Process(
741 fidl::new_empty!(fidl::encoding::HandleType<fidl::Process, { fidl::ObjectType::PROCESS.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect),
742 );
743 }
744 #[allow(irrefutable_let_patterns)]
745 if let Task::Process(ref mut val) = self {
746 fidl::decode!(fidl::encoding::HandleType<fidl::Process, { fidl::ObjectType::PROCESS.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect, val, decoder, _inner_offset, depth)?;
747 } else {
748 unreachable!()
749 }
750 }
751 3 => {
752 #[allow(irrefutable_let_patterns)]
753 if let Task::Thread(_) = self {
754 } else {
756 *self = Task::Thread(
758 fidl::new_empty!(fidl::encoding::HandleType<fidl::Thread, { fidl::ObjectType::THREAD.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect),
759 );
760 }
761 #[allow(irrefutable_let_patterns)]
762 if let Task::Thread(ref mut val) = self {
763 fidl::decode!(fidl::encoding::HandleType<fidl::Thread, { fidl::ObjectType::THREAD.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect, val, decoder, _inner_offset, depth)?;
764 } else {
765 unreachable!()
766 }
767 }
768 #[allow(deprecated)]
769 ordinal => {
770 for _ in 0..num_handles {
771 decoder.drop_next_handle()?;
772 }
773 *self = Task::__SourceBreaking { unknown_ordinal: ordinal };
774 }
775 }
776 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize) {
777 return Err(fidl::Error::InvalidNumBytesInEnvelope);
778 }
779 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
780 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
781 }
782 Ok(())
783 }
784 }
785}