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)]
12pub enum SignalError {
13 InvalidTarget,
15 InvalidSignal,
17 #[doc(hidden)]
18 __SourceBreaking { unknown_ordinal: u32 },
19}
20
21#[macro_export]
23macro_rules! SignalErrorUnknown {
24 () => {
25 _
26 };
27}
28
29impl SignalError {
30 #[inline]
31 pub fn from_primitive(prim: u32) -> Option<Self> {
32 match prim {
33 1 => Some(Self::InvalidTarget),
34 2 => Some(Self::InvalidSignal),
35 _ => None,
36 }
37 }
38
39 #[inline]
40 pub fn from_primitive_allow_unknown(prim: u32) -> Self {
41 match prim {
42 1 => Self::InvalidTarget,
43 2 => Self::InvalidSignal,
44 unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
45 }
46 }
47
48 #[inline]
49 pub fn unknown() -> Self {
50 Self::__SourceBreaking { unknown_ordinal: 0xffffffff }
51 }
52
53 #[inline]
54 pub const fn into_primitive(self) -> u32 {
55 match self {
56 Self::InvalidTarget => 1,
57 Self::InvalidSignal => 2,
58 Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
59 }
60 }
61
62 #[inline]
63 pub fn is_unknown(&self) -> bool {
64 match self {
65 Self::__SourceBreaking { unknown_ordinal: _ } => true,
66 _ => false,
67 }
68 }
69}
70
71#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
72pub enum SpawnConsoleError {
73 InvalidArgs,
75 Canceled,
77 #[doc(hidden)]
78 __SourceBreaking { unknown_ordinal: u32 },
79}
80
81#[macro_export]
83macro_rules! SpawnConsoleErrorUnknown {
84 () => {
85 _
86 };
87}
88
89impl SpawnConsoleError {
90 #[inline]
91 pub fn from_primitive(prim: u32) -> Option<Self> {
92 match prim {
93 1 => Some(Self::InvalidArgs),
94 2 => Some(Self::Canceled),
95 _ => None,
96 }
97 }
98
99 #[inline]
100 pub fn from_primitive_allow_unknown(prim: u32) -> Self {
101 match prim {
102 1 => Self::InvalidArgs,
103 2 => Self::Canceled,
104 unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
105 }
106 }
107
108 #[inline]
109 pub fn unknown() -> Self {
110 Self::__SourceBreaking { unknown_ordinal: 0xffffffff }
111 }
112
113 #[inline]
114 pub const fn into_primitive(self) -> u32 {
115 match self {
116 Self::InvalidArgs => 1,
117 Self::Canceled => 2,
118 Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
119 }
120 }
121
122 #[inline]
123 pub fn is_unknown(&self) -> bool {
124 match self {
125 Self::__SourceBreaking { unknown_ordinal: _ } => true,
126 _ => false,
127 }
128 }
129}
130
131#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
132#[repr(C)]
133pub struct ConsoleWindowSize {
134 pub rows: u16,
135 pub cols: u16,
136 pub x_pixels: u16,
137 pub y_pixels: u16,
138}
139
140impl fidl::Persistable for ConsoleWindowSize {}
141
142#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
143#[repr(C)]
144pub struct ControllerSpawnConsoleResponse {
145 pub exit_code: u8,
146}
147
148impl fidl::Persistable for ControllerSpawnConsoleResponse {}
149
150#[derive(Clone, Debug, Default, PartialEq)]
151pub struct ControllerGetVmoReferencesRequest {
152 pub koid: Option<u64>,
153 #[doc(hidden)]
154 pub __source_breaking: fidl::marker::SourceBreaking,
155}
156
157impl fidl::Persistable for ControllerGetVmoReferencesRequest {}
158
159#[derive(Clone, Debug, Default, PartialEq)]
160pub struct ControllerSendSignalRequest {
161 pub pid: Option<i32>,
162 pub signal: Option<u64>,
163 #[doc(hidden)]
164 pub __source_breaking: fidl::marker::SourceBreaking,
165}
166
167impl fidl::Persistable for ControllerSendSignalRequest {}
168
169#[derive(Clone, Debug, Default, PartialEq)]
170pub struct ControllerGetVmoReferencesResponse {
171 pub references: Option<Vec<VmoReference>>,
172 #[doc(hidden)]
173 pub __source_breaking: fidl::marker::SourceBreaking,
174}
175
176impl fidl::Persistable for ControllerGetVmoReferencesResponse {}
177
178#[derive(Clone, Debug, Default, PartialEq)]
179pub struct VmoReference {
180 pub process_name: Option<String>,
182 pub pid: Option<u64>,
184 pub fd: Option<i32>,
186 pub koid: Option<u64>,
188 #[doc(hidden)]
189 pub __source_breaking: fidl::marker::SourceBreaking,
190}
191
192impl fidl::Persistable for VmoReference {}
193
194pub mod controller_ordinals {
195 pub const VSOCK_CONNECT: u64 = 0x494a469a8943213b;
196 pub const SPAWN_CONSOLE: u64 = 0x76eb46fdc63aa8b8;
197 pub const GET_VMO_REFERENCES: u64 = 0x47a7f039bb97f173;
198 pub const GET_JOB_HANDLE: u64 = 0x60a31a248576ffea;
199 pub const SEND_SIGNAL: u64 = 0x253b1a0d3b9639e3;
200}
201
202mod internal {
203 use super::*;
204 unsafe impl fidl::encoding::TypeMarker for SignalError {
205 type Owned = Self;
206
207 #[inline(always)]
208 fn inline_align(_context: fidl::encoding::Context) -> usize {
209 std::mem::align_of::<u32>()
210 }
211
212 #[inline(always)]
213 fn inline_size(_context: fidl::encoding::Context) -> usize {
214 std::mem::size_of::<u32>()
215 }
216
217 #[inline(always)]
218 fn encode_is_copy() -> bool {
219 false
220 }
221
222 #[inline(always)]
223 fn decode_is_copy() -> bool {
224 false
225 }
226 }
227
228 impl fidl::encoding::ValueTypeMarker for SignalError {
229 type Borrowed<'a> = Self;
230 #[inline(always)]
231 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
232 *value
233 }
234 }
235
236 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for SignalError {
237 #[inline]
238 unsafe fn encode(
239 self,
240 encoder: &mut fidl::encoding::Encoder<'_, D>,
241 offset: usize,
242 _depth: fidl::encoding::Depth,
243 ) -> fidl::Result<()> {
244 encoder.debug_check_bounds::<Self>(offset);
245 encoder.write_num(self.into_primitive(), offset);
246 Ok(())
247 }
248 }
249
250 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for SignalError {
251 #[inline(always)]
252 fn new_empty() -> Self {
253 Self::unknown()
254 }
255
256 #[inline]
257 unsafe fn decode(
258 &mut self,
259 decoder: &mut fidl::encoding::Decoder<'_, D>,
260 offset: usize,
261 _depth: fidl::encoding::Depth,
262 ) -> fidl::Result<()> {
263 decoder.debug_check_bounds::<Self>(offset);
264 let prim = decoder.read_num::<u32>(offset);
265
266 *self = Self::from_primitive_allow_unknown(prim);
267 Ok(())
268 }
269 }
270 unsafe impl fidl::encoding::TypeMarker for SpawnConsoleError {
271 type Owned = Self;
272
273 #[inline(always)]
274 fn inline_align(_context: fidl::encoding::Context) -> usize {
275 std::mem::align_of::<u32>()
276 }
277
278 #[inline(always)]
279 fn inline_size(_context: fidl::encoding::Context) -> usize {
280 std::mem::size_of::<u32>()
281 }
282
283 #[inline(always)]
284 fn encode_is_copy() -> bool {
285 false
286 }
287
288 #[inline(always)]
289 fn decode_is_copy() -> bool {
290 false
291 }
292 }
293
294 impl fidl::encoding::ValueTypeMarker for SpawnConsoleError {
295 type Borrowed<'a> = Self;
296 #[inline(always)]
297 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
298 *value
299 }
300 }
301
302 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
303 for SpawnConsoleError
304 {
305 #[inline]
306 unsafe fn encode(
307 self,
308 encoder: &mut fidl::encoding::Encoder<'_, D>,
309 offset: usize,
310 _depth: fidl::encoding::Depth,
311 ) -> fidl::Result<()> {
312 encoder.debug_check_bounds::<Self>(offset);
313 encoder.write_num(self.into_primitive(), offset);
314 Ok(())
315 }
316 }
317
318 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for SpawnConsoleError {
319 #[inline(always)]
320 fn new_empty() -> Self {
321 Self::unknown()
322 }
323
324 #[inline]
325 unsafe fn decode(
326 &mut self,
327 decoder: &mut fidl::encoding::Decoder<'_, D>,
328 offset: usize,
329 _depth: fidl::encoding::Depth,
330 ) -> fidl::Result<()> {
331 decoder.debug_check_bounds::<Self>(offset);
332 let prim = decoder.read_num::<u32>(offset);
333
334 *self = Self::from_primitive_allow_unknown(prim);
335 Ok(())
336 }
337 }
338
339 impl fidl::encoding::ValueTypeMarker for ConsoleWindowSize {
340 type Borrowed<'a> = &'a Self;
341 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
342 value
343 }
344 }
345
346 unsafe impl fidl::encoding::TypeMarker for ConsoleWindowSize {
347 type Owned = Self;
348
349 #[inline(always)]
350 fn inline_align(_context: fidl::encoding::Context) -> usize {
351 2
352 }
353
354 #[inline(always)]
355 fn inline_size(_context: fidl::encoding::Context) -> usize {
356 8
357 }
358 #[inline(always)]
359 fn encode_is_copy() -> bool {
360 true
361 }
362
363 #[inline(always)]
364 fn decode_is_copy() -> bool {
365 true
366 }
367 }
368
369 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ConsoleWindowSize, D>
370 for &ConsoleWindowSize
371 {
372 #[inline]
373 unsafe fn encode(
374 self,
375 encoder: &mut fidl::encoding::Encoder<'_, D>,
376 offset: usize,
377 _depth: fidl::encoding::Depth,
378 ) -> fidl::Result<()> {
379 encoder.debug_check_bounds::<ConsoleWindowSize>(offset);
380 unsafe {
381 let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
383 (buf_ptr as *mut ConsoleWindowSize)
384 .write_unaligned((self as *const ConsoleWindowSize).read());
385 }
388 Ok(())
389 }
390 }
391 unsafe impl<
392 D: fidl::encoding::ResourceDialect,
393 T0: fidl::encoding::Encode<u16, D>,
394 T1: fidl::encoding::Encode<u16, D>,
395 T2: fidl::encoding::Encode<u16, D>,
396 T3: fidl::encoding::Encode<u16, D>,
397 > fidl::encoding::Encode<ConsoleWindowSize, D> for (T0, T1, T2, T3)
398 {
399 #[inline]
400 unsafe fn encode(
401 self,
402 encoder: &mut fidl::encoding::Encoder<'_, D>,
403 offset: usize,
404 depth: fidl::encoding::Depth,
405 ) -> fidl::Result<()> {
406 encoder.debug_check_bounds::<ConsoleWindowSize>(offset);
407 self.0.encode(encoder, offset + 0, depth)?;
411 self.1.encode(encoder, offset + 2, depth)?;
412 self.2.encode(encoder, offset + 4, depth)?;
413 self.3.encode(encoder, offset + 6, depth)?;
414 Ok(())
415 }
416 }
417
418 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ConsoleWindowSize {
419 #[inline(always)]
420 fn new_empty() -> Self {
421 Self {
422 rows: fidl::new_empty!(u16, D),
423 cols: fidl::new_empty!(u16, D),
424 x_pixels: fidl::new_empty!(u16, D),
425 y_pixels: fidl::new_empty!(u16, D),
426 }
427 }
428
429 #[inline]
430 unsafe fn decode(
431 &mut self,
432 decoder: &mut fidl::encoding::Decoder<'_, D>,
433 offset: usize,
434 _depth: fidl::encoding::Depth,
435 ) -> fidl::Result<()> {
436 decoder.debug_check_bounds::<Self>(offset);
437 let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
438 unsafe {
441 std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 8);
442 }
443 Ok(())
444 }
445 }
446
447 impl fidl::encoding::ValueTypeMarker for ControllerSpawnConsoleResponse {
448 type Borrowed<'a> = &'a Self;
449 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
450 value
451 }
452 }
453
454 unsafe impl fidl::encoding::TypeMarker for ControllerSpawnConsoleResponse {
455 type Owned = Self;
456
457 #[inline(always)]
458 fn inline_align(_context: fidl::encoding::Context) -> usize {
459 1
460 }
461
462 #[inline(always)]
463 fn inline_size(_context: fidl::encoding::Context) -> usize {
464 1
465 }
466 #[inline(always)]
467 fn encode_is_copy() -> bool {
468 true
469 }
470
471 #[inline(always)]
472 fn decode_is_copy() -> bool {
473 true
474 }
475 }
476
477 unsafe impl<D: fidl::encoding::ResourceDialect>
478 fidl::encoding::Encode<ControllerSpawnConsoleResponse, D>
479 for &ControllerSpawnConsoleResponse
480 {
481 #[inline]
482 unsafe fn encode(
483 self,
484 encoder: &mut fidl::encoding::Encoder<'_, D>,
485 offset: usize,
486 _depth: fidl::encoding::Depth,
487 ) -> fidl::Result<()> {
488 encoder.debug_check_bounds::<ControllerSpawnConsoleResponse>(offset);
489 unsafe {
490 let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
492 (buf_ptr as *mut ControllerSpawnConsoleResponse)
493 .write_unaligned((self as *const ControllerSpawnConsoleResponse).read());
494 }
497 Ok(())
498 }
499 }
500 unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<u8, D>>
501 fidl::encoding::Encode<ControllerSpawnConsoleResponse, D> for (T0,)
502 {
503 #[inline]
504 unsafe fn encode(
505 self,
506 encoder: &mut fidl::encoding::Encoder<'_, D>,
507 offset: usize,
508 depth: fidl::encoding::Depth,
509 ) -> fidl::Result<()> {
510 encoder.debug_check_bounds::<ControllerSpawnConsoleResponse>(offset);
511 self.0.encode(encoder, offset + 0, depth)?;
515 Ok(())
516 }
517 }
518
519 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
520 for ControllerSpawnConsoleResponse
521 {
522 #[inline(always)]
523 fn new_empty() -> Self {
524 Self { exit_code: fidl::new_empty!(u8, D) }
525 }
526
527 #[inline]
528 unsafe fn decode(
529 &mut self,
530 decoder: &mut fidl::encoding::Decoder<'_, D>,
531 offset: usize,
532 _depth: fidl::encoding::Depth,
533 ) -> fidl::Result<()> {
534 decoder.debug_check_bounds::<Self>(offset);
535 let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
536 unsafe {
539 std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 1);
540 }
541 Ok(())
542 }
543 }
544
545 impl ControllerGetVmoReferencesRequest {
546 #[inline(always)]
547 fn max_ordinal_present(&self) -> u64 {
548 if let Some(_) = self.koid {
549 return 1;
550 }
551 0
552 }
553 }
554
555 impl fidl::encoding::ValueTypeMarker for ControllerGetVmoReferencesRequest {
556 type Borrowed<'a> = &'a Self;
557 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
558 value
559 }
560 }
561
562 unsafe impl fidl::encoding::TypeMarker for ControllerGetVmoReferencesRequest {
563 type Owned = Self;
564
565 #[inline(always)]
566 fn inline_align(_context: fidl::encoding::Context) -> usize {
567 8
568 }
569
570 #[inline(always)]
571 fn inline_size(_context: fidl::encoding::Context) -> usize {
572 16
573 }
574 }
575
576 unsafe impl<D: fidl::encoding::ResourceDialect>
577 fidl::encoding::Encode<ControllerGetVmoReferencesRequest, D>
578 for &ControllerGetVmoReferencesRequest
579 {
580 unsafe fn encode(
581 self,
582 encoder: &mut fidl::encoding::Encoder<'_, D>,
583 offset: usize,
584 mut depth: fidl::encoding::Depth,
585 ) -> fidl::Result<()> {
586 encoder.debug_check_bounds::<ControllerGetVmoReferencesRequest>(offset);
587 let max_ordinal: u64 = self.max_ordinal_present();
589 encoder.write_num(max_ordinal, offset);
590 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
591 if max_ordinal == 0 {
593 return Ok(());
594 }
595 depth.increment()?;
596 let envelope_size = 8;
597 let bytes_len = max_ordinal as usize * envelope_size;
598 #[allow(unused_variables)]
599 let offset = encoder.out_of_line_offset(bytes_len);
600 let mut _prev_end_offset: usize = 0;
601 if 1 > max_ordinal {
602 return Ok(());
603 }
604
605 let cur_offset: usize = (1 - 1) * envelope_size;
608
609 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
611
612 fidl::encoding::encode_in_envelope_optional::<u64, D>(
617 self.koid.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
618 encoder,
619 offset + cur_offset,
620 depth,
621 )?;
622
623 _prev_end_offset = cur_offset + envelope_size;
624
625 Ok(())
626 }
627 }
628
629 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
630 for ControllerGetVmoReferencesRequest
631 {
632 #[inline(always)]
633 fn new_empty() -> Self {
634 Self::default()
635 }
636
637 unsafe fn decode(
638 &mut self,
639 decoder: &mut fidl::encoding::Decoder<'_, D>,
640 offset: usize,
641 mut depth: fidl::encoding::Depth,
642 ) -> fidl::Result<()> {
643 decoder.debug_check_bounds::<Self>(offset);
644 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
645 None => return Err(fidl::Error::NotNullable),
646 Some(len) => len,
647 };
648 if len == 0 {
650 return Ok(());
651 };
652 depth.increment()?;
653 let envelope_size = 8;
654 let bytes_len = len * envelope_size;
655 let offset = decoder.out_of_line_offset(bytes_len)?;
656 let mut _next_ordinal_to_read = 0;
658 let mut next_offset = offset;
659 let end_offset = offset + bytes_len;
660 _next_ordinal_to_read += 1;
661 if next_offset >= end_offset {
662 return Ok(());
663 }
664
665 while _next_ordinal_to_read < 1 {
667 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
668 _next_ordinal_to_read += 1;
669 next_offset += envelope_size;
670 }
671
672 let next_out_of_line = decoder.next_out_of_line();
673 let handles_before = decoder.remaining_handles();
674 if let Some((inlined, num_bytes, num_handles)) =
675 fidl::encoding::decode_envelope_header(decoder, next_offset)?
676 {
677 let member_inline_size =
678 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
679 if inlined != (member_inline_size <= 4) {
680 return Err(fidl::Error::InvalidInlineBitInEnvelope);
681 }
682 let inner_offset;
683 let mut inner_depth = depth.clone();
684 if inlined {
685 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
686 inner_offset = next_offset;
687 } else {
688 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
689 inner_depth.increment()?;
690 }
691 let val_ref = self.koid.get_or_insert_with(|| fidl::new_empty!(u64, D));
692 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
693 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
694 {
695 return Err(fidl::Error::InvalidNumBytesInEnvelope);
696 }
697 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
698 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
699 }
700 }
701
702 next_offset += envelope_size;
703
704 while next_offset < end_offset {
706 _next_ordinal_to_read += 1;
707 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
708 next_offset += envelope_size;
709 }
710
711 Ok(())
712 }
713 }
714
715 impl ControllerSendSignalRequest {
716 #[inline(always)]
717 fn max_ordinal_present(&self) -> u64 {
718 if let Some(_) = self.signal {
719 return 2;
720 }
721 if let Some(_) = self.pid {
722 return 1;
723 }
724 0
725 }
726 }
727
728 impl fidl::encoding::ValueTypeMarker for ControllerSendSignalRequest {
729 type Borrowed<'a> = &'a Self;
730 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
731 value
732 }
733 }
734
735 unsafe impl fidl::encoding::TypeMarker for ControllerSendSignalRequest {
736 type Owned = Self;
737
738 #[inline(always)]
739 fn inline_align(_context: fidl::encoding::Context) -> usize {
740 8
741 }
742
743 #[inline(always)]
744 fn inline_size(_context: fidl::encoding::Context) -> usize {
745 16
746 }
747 }
748
749 unsafe impl<D: fidl::encoding::ResourceDialect>
750 fidl::encoding::Encode<ControllerSendSignalRequest, D> for &ControllerSendSignalRequest
751 {
752 unsafe fn encode(
753 self,
754 encoder: &mut fidl::encoding::Encoder<'_, D>,
755 offset: usize,
756 mut depth: fidl::encoding::Depth,
757 ) -> fidl::Result<()> {
758 encoder.debug_check_bounds::<ControllerSendSignalRequest>(offset);
759 let max_ordinal: u64 = self.max_ordinal_present();
761 encoder.write_num(max_ordinal, offset);
762 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
763 if max_ordinal == 0 {
765 return Ok(());
766 }
767 depth.increment()?;
768 let envelope_size = 8;
769 let bytes_len = max_ordinal as usize * envelope_size;
770 #[allow(unused_variables)]
771 let offset = encoder.out_of_line_offset(bytes_len);
772 let mut _prev_end_offset: usize = 0;
773 if 1 > max_ordinal {
774 return Ok(());
775 }
776
777 let cur_offset: usize = (1 - 1) * envelope_size;
780
781 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
783
784 fidl::encoding::encode_in_envelope_optional::<i32, D>(
789 self.pid.as_ref().map(<i32 as fidl::encoding::ValueTypeMarker>::borrow),
790 encoder,
791 offset + cur_offset,
792 depth,
793 )?;
794
795 _prev_end_offset = cur_offset + envelope_size;
796 if 2 > max_ordinal {
797 return Ok(());
798 }
799
800 let cur_offset: usize = (2 - 1) * envelope_size;
803
804 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
806
807 fidl::encoding::encode_in_envelope_optional::<u64, D>(
812 self.signal.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
813 encoder,
814 offset + cur_offset,
815 depth,
816 )?;
817
818 _prev_end_offset = cur_offset + envelope_size;
819
820 Ok(())
821 }
822 }
823
824 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
825 for ControllerSendSignalRequest
826 {
827 #[inline(always)]
828 fn new_empty() -> Self {
829 Self::default()
830 }
831
832 unsafe fn decode(
833 &mut self,
834 decoder: &mut fidl::encoding::Decoder<'_, D>,
835 offset: usize,
836 mut depth: fidl::encoding::Depth,
837 ) -> fidl::Result<()> {
838 decoder.debug_check_bounds::<Self>(offset);
839 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
840 None => return Err(fidl::Error::NotNullable),
841 Some(len) => len,
842 };
843 if len == 0 {
845 return Ok(());
846 };
847 depth.increment()?;
848 let envelope_size = 8;
849 let bytes_len = len * envelope_size;
850 let offset = decoder.out_of_line_offset(bytes_len)?;
851 let mut _next_ordinal_to_read = 0;
853 let mut next_offset = offset;
854 let end_offset = offset + bytes_len;
855 _next_ordinal_to_read += 1;
856 if next_offset >= end_offset {
857 return Ok(());
858 }
859
860 while _next_ordinal_to_read < 1 {
862 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
863 _next_ordinal_to_read += 1;
864 next_offset += envelope_size;
865 }
866
867 let next_out_of_line = decoder.next_out_of_line();
868 let handles_before = decoder.remaining_handles();
869 if let Some((inlined, num_bytes, num_handles)) =
870 fidl::encoding::decode_envelope_header(decoder, next_offset)?
871 {
872 let member_inline_size =
873 <i32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
874 if inlined != (member_inline_size <= 4) {
875 return Err(fidl::Error::InvalidInlineBitInEnvelope);
876 }
877 let inner_offset;
878 let mut inner_depth = depth.clone();
879 if inlined {
880 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
881 inner_offset = next_offset;
882 } else {
883 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
884 inner_depth.increment()?;
885 }
886 let val_ref = self.pid.get_or_insert_with(|| fidl::new_empty!(i32, D));
887 fidl::decode!(i32, D, val_ref, decoder, inner_offset, inner_depth)?;
888 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
889 {
890 return Err(fidl::Error::InvalidNumBytesInEnvelope);
891 }
892 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
893 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
894 }
895 }
896
897 next_offset += envelope_size;
898 _next_ordinal_to_read += 1;
899 if next_offset >= end_offset {
900 return Ok(());
901 }
902
903 while _next_ordinal_to_read < 2 {
905 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
906 _next_ordinal_to_read += 1;
907 next_offset += envelope_size;
908 }
909
910 let next_out_of_line = decoder.next_out_of_line();
911 let handles_before = decoder.remaining_handles();
912 if let Some((inlined, num_bytes, num_handles)) =
913 fidl::encoding::decode_envelope_header(decoder, next_offset)?
914 {
915 let member_inline_size =
916 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
917 if inlined != (member_inline_size <= 4) {
918 return Err(fidl::Error::InvalidInlineBitInEnvelope);
919 }
920 let inner_offset;
921 let mut inner_depth = depth.clone();
922 if inlined {
923 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
924 inner_offset = next_offset;
925 } else {
926 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
927 inner_depth.increment()?;
928 }
929 let val_ref = self.signal.get_or_insert_with(|| fidl::new_empty!(u64, D));
930 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
931 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
932 {
933 return Err(fidl::Error::InvalidNumBytesInEnvelope);
934 }
935 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
936 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
937 }
938 }
939
940 next_offset += envelope_size;
941
942 while next_offset < end_offset {
944 _next_ordinal_to_read += 1;
945 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
946 next_offset += envelope_size;
947 }
948
949 Ok(())
950 }
951 }
952
953 impl ControllerGetVmoReferencesResponse {
954 #[inline(always)]
955 fn max_ordinal_present(&self) -> u64 {
956 if let Some(_) = self.references {
957 return 1;
958 }
959 0
960 }
961 }
962
963 impl fidl::encoding::ValueTypeMarker for ControllerGetVmoReferencesResponse {
964 type Borrowed<'a> = &'a Self;
965 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
966 value
967 }
968 }
969
970 unsafe impl fidl::encoding::TypeMarker for ControllerGetVmoReferencesResponse {
971 type Owned = Self;
972
973 #[inline(always)]
974 fn inline_align(_context: fidl::encoding::Context) -> usize {
975 8
976 }
977
978 #[inline(always)]
979 fn inline_size(_context: fidl::encoding::Context) -> usize {
980 16
981 }
982 }
983
984 unsafe impl<D: fidl::encoding::ResourceDialect>
985 fidl::encoding::Encode<ControllerGetVmoReferencesResponse, D>
986 for &ControllerGetVmoReferencesResponse
987 {
988 unsafe fn encode(
989 self,
990 encoder: &mut fidl::encoding::Encoder<'_, D>,
991 offset: usize,
992 mut depth: fidl::encoding::Depth,
993 ) -> fidl::Result<()> {
994 encoder.debug_check_bounds::<ControllerGetVmoReferencesResponse>(offset);
995 let max_ordinal: u64 = self.max_ordinal_present();
997 encoder.write_num(max_ordinal, offset);
998 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
999 if max_ordinal == 0 {
1001 return Ok(());
1002 }
1003 depth.increment()?;
1004 let envelope_size = 8;
1005 let bytes_len = max_ordinal as usize * envelope_size;
1006 #[allow(unused_variables)]
1007 let offset = encoder.out_of_line_offset(bytes_len);
1008 let mut _prev_end_offset: usize = 0;
1009 if 1 > max_ordinal {
1010 return Ok(());
1011 }
1012
1013 let cur_offset: usize = (1 - 1) * envelope_size;
1016
1017 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1019
1020 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<VmoReference>, D>(
1025 self.references.as_ref().map(<fidl::encoding::UnboundedVector<VmoReference> as fidl::encoding::ValueTypeMarker>::borrow),
1026 encoder, offset + cur_offset, depth
1027 )?;
1028
1029 _prev_end_offset = cur_offset + envelope_size;
1030
1031 Ok(())
1032 }
1033 }
1034
1035 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1036 for ControllerGetVmoReferencesResponse
1037 {
1038 #[inline(always)]
1039 fn new_empty() -> Self {
1040 Self::default()
1041 }
1042
1043 unsafe fn decode(
1044 &mut self,
1045 decoder: &mut fidl::encoding::Decoder<'_, D>,
1046 offset: usize,
1047 mut depth: fidl::encoding::Depth,
1048 ) -> fidl::Result<()> {
1049 decoder.debug_check_bounds::<Self>(offset);
1050 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
1051 None => return Err(fidl::Error::NotNullable),
1052 Some(len) => len,
1053 };
1054 if len == 0 {
1056 return Ok(());
1057 };
1058 depth.increment()?;
1059 let envelope_size = 8;
1060 let bytes_len = len * envelope_size;
1061 let offset = decoder.out_of_line_offset(bytes_len)?;
1062 let mut _next_ordinal_to_read = 0;
1064 let mut next_offset = offset;
1065 let end_offset = offset + bytes_len;
1066 _next_ordinal_to_read += 1;
1067 if next_offset >= end_offset {
1068 return Ok(());
1069 }
1070
1071 while _next_ordinal_to_read < 1 {
1073 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1074 _next_ordinal_to_read += 1;
1075 next_offset += envelope_size;
1076 }
1077
1078 let next_out_of_line = decoder.next_out_of_line();
1079 let handles_before = decoder.remaining_handles();
1080 if let Some((inlined, num_bytes, num_handles)) =
1081 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1082 {
1083 let member_inline_size = <fidl::encoding::UnboundedVector<VmoReference> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1084 if inlined != (member_inline_size <= 4) {
1085 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1086 }
1087 let inner_offset;
1088 let mut inner_depth = depth.clone();
1089 if inlined {
1090 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1091 inner_offset = next_offset;
1092 } else {
1093 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1094 inner_depth.increment()?;
1095 }
1096 let val_ref = self.references.get_or_insert_with(|| {
1097 fidl::new_empty!(fidl::encoding::UnboundedVector<VmoReference>, D)
1098 });
1099 fidl::decode!(
1100 fidl::encoding::UnboundedVector<VmoReference>,
1101 D,
1102 val_ref,
1103 decoder,
1104 inner_offset,
1105 inner_depth
1106 )?;
1107 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1108 {
1109 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1110 }
1111 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1112 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1113 }
1114 }
1115
1116 next_offset += envelope_size;
1117
1118 while next_offset < end_offset {
1120 _next_ordinal_to_read += 1;
1121 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1122 next_offset += envelope_size;
1123 }
1124
1125 Ok(())
1126 }
1127 }
1128
1129 impl VmoReference {
1130 #[inline(always)]
1131 fn max_ordinal_present(&self) -> u64 {
1132 if let Some(_) = self.koid {
1133 return 4;
1134 }
1135 if let Some(_) = self.fd {
1136 return 3;
1137 }
1138 if let Some(_) = self.pid {
1139 return 2;
1140 }
1141 if let Some(_) = self.process_name {
1142 return 1;
1143 }
1144 0
1145 }
1146 }
1147
1148 impl fidl::encoding::ValueTypeMarker for VmoReference {
1149 type Borrowed<'a> = &'a Self;
1150 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1151 value
1152 }
1153 }
1154
1155 unsafe impl fidl::encoding::TypeMarker for VmoReference {
1156 type Owned = Self;
1157
1158 #[inline(always)]
1159 fn inline_align(_context: fidl::encoding::Context) -> usize {
1160 8
1161 }
1162
1163 #[inline(always)]
1164 fn inline_size(_context: fidl::encoding::Context) -> usize {
1165 16
1166 }
1167 }
1168
1169 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<VmoReference, D>
1170 for &VmoReference
1171 {
1172 unsafe fn encode(
1173 self,
1174 encoder: &mut fidl::encoding::Encoder<'_, D>,
1175 offset: usize,
1176 mut depth: fidl::encoding::Depth,
1177 ) -> fidl::Result<()> {
1178 encoder.debug_check_bounds::<VmoReference>(offset);
1179 let max_ordinal: u64 = self.max_ordinal_present();
1181 encoder.write_num(max_ordinal, offset);
1182 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
1183 if max_ordinal == 0 {
1185 return Ok(());
1186 }
1187 depth.increment()?;
1188 let envelope_size = 8;
1189 let bytes_len = max_ordinal as usize * envelope_size;
1190 #[allow(unused_variables)]
1191 let offset = encoder.out_of_line_offset(bytes_len);
1192 let mut _prev_end_offset: usize = 0;
1193 if 1 > max_ordinal {
1194 return Ok(());
1195 }
1196
1197 let cur_offset: usize = (1 - 1) * envelope_size;
1200
1201 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1203
1204 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedString, D>(
1209 self.process_name.as_ref().map(
1210 <fidl::encoding::UnboundedString as fidl::encoding::ValueTypeMarker>::borrow,
1211 ),
1212 encoder,
1213 offset + cur_offset,
1214 depth,
1215 )?;
1216
1217 _prev_end_offset = cur_offset + envelope_size;
1218 if 2 > max_ordinal {
1219 return Ok(());
1220 }
1221
1222 let cur_offset: usize = (2 - 1) * envelope_size;
1225
1226 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1228
1229 fidl::encoding::encode_in_envelope_optional::<u64, D>(
1234 self.pid.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
1235 encoder,
1236 offset + cur_offset,
1237 depth,
1238 )?;
1239
1240 _prev_end_offset = cur_offset + envelope_size;
1241 if 3 > max_ordinal {
1242 return Ok(());
1243 }
1244
1245 let cur_offset: usize = (3 - 1) * envelope_size;
1248
1249 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1251
1252 fidl::encoding::encode_in_envelope_optional::<i32, D>(
1257 self.fd.as_ref().map(<i32 as fidl::encoding::ValueTypeMarker>::borrow),
1258 encoder,
1259 offset + cur_offset,
1260 depth,
1261 )?;
1262
1263 _prev_end_offset = cur_offset + envelope_size;
1264 if 4 > max_ordinal {
1265 return Ok(());
1266 }
1267
1268 let cur_offset: usize = (4 - 1) * envelope_size;
1271
1272 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1274
1275 fidl::encoding::encode_in_envelope_optional::<u64, D>(
1280 self.koid.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
1281 encoder,
1282 offset + cur_offset,
1283 depth,
1284 )?;
1285
1286 _prev_end_offset = cur_offset + envelope_size;
1287
1288 Ok(())
1289 }
1290 }
1291
1292 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for VmoReference {
1293 #[inline(always)]
1294 fn new_empty() -> Self {
1295 Self::default()
1296 }
1297
1298 unsafe fn decode(
1299 &mut self,
1300 decoder: &mut fidl::encoding::Decoder<'_, D>,
1301 offset: usize,
1302 mut depth: fidl::encoding::Depth,
1303 ) -> fidl::Result<()> {
1304 decoder.debug_check_bounds::<Self>(offset);
1305 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
1306 None => return Err(fidl::Error::NotNullable),
1307 Some(len) => len,
1308 };
1309 if len == 0 {
1311 return Ok(());
1312 };
1313 depth.increment()?;
1314 let envelope_size = 8;
1315 let bytes_len = len * envelope_size;
1316 let offset = decoder.out_of_line_offset(bytes_len)?;
1317 let mut _next_ordinal_to_read = 0;
1319 let mut next_offset = offset;
1320 let end_offset = offset + bytes_len;
1321 _next_ordinal_to_read += 1;
1322 if next_offset >= end_offset {
1323 return Ok(());
1324 }
1325
1326 while _next_ordinal_to_read < 1 {
1328 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1329 _next_ordinal_to_read += 1;
1330 next_offset += envelope_size;
1331 }
1332
1333 let next_out_of_line = decoder.next_out_of_line();
1334 let handles_before = decoder.remaining_handles();
1335 if let Some((inlined, num_bytes, num_handles)) =
1336 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1337 {
1338 let member_inline_size =
1339 <fidl::encoding::UnboundedString as fidl::encoding::TypeMarker>::inline_size(
1340 decoder.context,
1341 );
1342 if inlined != (member_inline_size <= 4) {
1343 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1344 }
1345 let inner_offset;
1346 let mut inner_depth = depth.clone();
1347 if inlined {
1348 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1349 inner_offset = next_offset;
1350 } else {
1351 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1352 inner_depth.increment()?;
1353 }
1354 let val_ref = self
1355 .process_name
1356 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::UnboundedString, D));
1357 fidl::decode!(
1358 fidl::encoding::UnboundedString,
1359 D,
1360 val_ref,
1361 decoder,
1362 inner_offset,
1363 inner_depth
1364 )?;
1365 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1366 {
1367 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1368 }
1369 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1370 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1371 }
1372 }
1373
1374 next_offset += envelope_size;
1375 _next_ordinal_to_read += 1;
1376 if next_offset >= end_offset {
1377 return Ok(());
1378 }
1379
1380 while _next_ordinal_to_read < 2 {
1382 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1383 _next_ordinal_to_read += 1;
1384 next_offset += envelope_size;
1385 }
1386
1387 let next_out_of_line = decoder.next_out_of_line();
1388 let handles_before = decoder.remaining_handles();
1389 if let Some((inlined, num_bytes, num_handles)) =
1390 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1391 {
1392 let member_inline_size =
1393 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1394 if inlined != (member_inline_size <= 4) {
1395 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1396 }
1397 let inner_offset;
1398 let mut inner_depth = depth.clone();
1399 if inlined {
1400 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1401 inner_offset = next_offset;
1402 } else {
1403 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1404 inner_depth.increment()?;
1405 }
1406 let val_ref = self.pid.get_or_insert_with(|| fidl::new_empty!(u64, D));
1407 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
1408 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1409 {
1410 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1411 }
1412 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1413 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1414 }
1415 }
1416
1417 next_offset += envelope_size;
1418 _next_ordinal_to_read += 1;
1419 if next_offset >= end_offset {
1420 return Ok(());
1421 }
1422
1423 while _next_ordinal_to_read < 3 {
1425 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1426 _next_ordinal_to_read += 1;
1427 next_offset += envelope_size;
1428 }
1429
1430 let next_out_of_line = decoder.next_out_of_line();
1431 let handles_before = decoder.remaining_handles();
1432 if let Some((inlined, num_bytes, num_handles)) =
1433 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1434 {
1435 let member_inline_size =
1436 <i32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1437 if inlined != (member_inline_size <= 4) {
1438 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1439 }
1440 let inner_offset;
1441 let mut inner_depth = depth.clone();
1442 if inlined {
1443 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1444 inner_offset = next_offset;
1445 } else {
1446 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1447 inner_depth.increment()?;
1448 }
1449 let val_ref = self.fd.get_or_insert_with(|| fidl::new_empty!(i32, D));
1450 fidl::decode!(i32, D, val_ref, decoder, inner_offset, inner_depth)?;
1451 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1452 {
1453 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1454 }
1455 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1456 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1457 }
1458 }
1459
1460 next_offset += envelope_size;
1461 _next_ordinal_to_read += 1;
1462 if next_offset >= end_offset {
1463 return Ok(());
1464 }
1465
1466 while _next_ordinal_to_read < 4 {
1468 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1469 _next_ordinal_to_read += 1;
1470 next_offset += envelope_size;
1471 }
1472
1473 let next_out_of_line = decoder.next_out_of_line();
1474 let handles_before = decoder.remaining_handles();
1475 if let Some((inlined, num_bytes, num_handles)) =
1476 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1477 {
1478 let member_inline_size =
1479 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1480 if inlined != (member_inline_size <= 4) {
1481 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1482 }
1483 let inner_offset;
1484 let mut inner_depth = depth.clone();
1485 if inlined {
1486 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1487 inner_offset = next_offset;
1488 } else {
1489 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1490 inner_depth.increment()?;
1491 }
1492 let val_ref = self.koid.get_or_insert_with(|| fidl::new_empty!(u64, D));
1493 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
1494 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1495 {
1496 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1497 }
1498 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1499 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1500 }
1501 }
1502
1503 next_offset += envelope_size;
1504
1505 while next_offset < end_offset {
1507 _next_ordinal_to_read += 1;
1508 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1509 next_offset += envelope_size;
1510 }
1511
1512 Ok(())
1513 }
1514 }
1515}