Skip to main content

fidl_fuchsia_starnix_container_common/
fidl_fuchsia_starnix_container_common.rs

1// WARNING: This file is machine generated by fidlgen.
2
3#![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 SetSyscallLogFilterError {
13    /// The process name was missing in the request.
14    MissingProcessName,
15    #[doc(hidden)]
16    __SourceBreaking { unknown_ordinal: u32 },
17}
18
19/// Pattern that matches an unknown `SetSyscallLogFilterError` member.
20#[macro_export]
21macro_rules! SetSyscallLogFilterErrorUnknown {
22    () => {
23        _
24    };
25}
26
27impl SetSyscallLogFilterError {
28    #[inline]
29    pub fn from_primitive(prim: u32) -> Option<Self> {
30        match prim {
31            1 => Some(Self::MissingProcessName),
32            _ => None,
33        }
34    }
35
36    #[inline]
37    pub fn from_primitive_allow_unknown(prim: u32) -> Self {
38        match prim {
39            1 => Self::MissingProcessName,
40            unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
41        }
42    }
43
44    #[inline]
45    pub fn unknown() -> Self {
46        Self::__SourceBreaking { unknown_ordinal: 0xffffffff }
47    }
48
49    #[inline]
50    pub const fn into_primitive(self) -> u32 {
51        match self {
52            Self::MissingProcessName => 1,
53            Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
54        }
55    }
56
57    #[inline]
58    pub fn is_unknown(&self) -> bool {
59        match self {
60            Self::__SourceBreaking { unknown_ordinal: _ } => true,
61            _ => false,
62        }
63    }
64}
65
66#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
67pub enum SignalError {
68    /// Invalid target process.
69    InvalidTarget,
70    /// Invalid signal.
71    InvalidSignal,
72    #[doc(hidden)]
73    __SourceBreaking { unknown_ordinal: u32 },
74}
75
76/// Pattern that matches an unknown `SignalError` member.
77#[macro_export]
78macro_rules! SignalErrorUnknown {
79    () => {
80        _
81    };
82}
83
84impl SignalError {
85    #[inline]
86    pub fn from_primitive(prim: u32) -> Option<Self> {
87        match prim {
88            1 => Some(Self::InvalidTarget),
89            2 => Some(Self::InvalidSignal),
90            _ => None,
91        }
92    }
93
94    #[inline]
95    pub fn from_primitive_allow_unknown(prim: u32) -> Self {
96        match prim {
97            1 => Self::InvalidTarget,
98            2 => Self::InvalidSignal,
99            unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
100        }
101    }
102
103    #[inline]
104    pub fn unknown() -> Self {
105        Self::__SourceBreaking { unknown_ordinal: 0xffffffff }
106    }
107
108    #[inline]
109    pub const fn into_primitive(self) -> u32 {
110        match self {
111            Self::InvalidTarget => 1,
112            Self::InvalidSignal => 2,
113            Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
114        }
115    }
116
117    #[inline]
118    pub fn is_unknown(&self) -> bool {
119        match self {
120            Self::__SourceBreaking { unknown_ordinal: _ } => true,
121            _ => false,
122        }
123    }
124}
125
126#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
127pub enum SpawnConsoleError {
128    /// A required table field was missing or otherwise invalid.
129    InvalidArgs,
130    /// The console process exited without a normal return code.
131    Canceled,
132    #[doc(hidden)]
133    __SourceBreaking { unknown_ordinal: u32 },
134}
135
136/// Pattern that matches an unknown `SpawnConsoleError` member.
137#[macro_export]
138macro_rules! SpawnConsoleErrorUnknown {
139    () => {
140        _
141    };
142}
143
144impl SpawnConsoleError {
145    #[inline]
146    pub fn from_primitive(prim: u32) -> Option<Self> {
147        match prim {
148            1 => Some(Self::InvalidArgs),
149            2 => Some(Self::Canceled),
150            _ => None,
151        }
152    }
153
154    #[inline]
155    pub fn from_primitive_allow_unknown(prim: u32) -> Self {
156        match prim {
157            1 => Self::InvalidArgs,
158            2 => Self::Canceled,
159            unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
160        }
161    }
162
163    #[inline]
164    pub fn unknown() -> Self {
165        Self::__SourceBreaking { unknown_ordinal: 0xffffffff }
166    }
167
168    #[inline]
169    pub const fn into_primitive(self) -> u32 {
170        match self {
171            Self::InvalidArgs => 1,
172            Self::Canceled => 2,
173            Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
174        }
175    }
176
177    #[inline]
178    pub fn is_unknown(&self) -> bool {
179        match self {
180            Self::__SourceBreaking { unknown_ordinal: _ } => true,
181            _ => false,
182        }
183    }
184}
185
186#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
187#[repr(C)]
188pub struct ConsoleWindowSize {
189    pub rows: u16,
190    pub cols: u16,
191    pub x_pixels: u16,
192    pub y_pixels: u16,
193}
194
195impl fidl::Persistable for ConsoleWindowSize {}
196
197#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
198#[repr(C)]
199pub struct ControllerSpawnConsoleResponse {
200    pub exit_code: u8,
201}
202
203impl fidl::Persistable for ControllerSpawnConsoleResponse {}
204
205#[derive(Clone, Debug, Default, PartialEq)]
206pub struct ControllerGetVmoReferencesRequest {
207    pub koid: Option<u64>,
208    #[doc(hidden)]
209    pub __source_breaking: fidl::marker::SourceBreaking,
210}
211
212impl fidl::Persistable for ControllerGetVmoReferencesRequest {}
213
214#[derive(Clone, Debug, Default, PartialEq)]
215pub struct ControllerSendSignalRequest {
216    pub pid: Option<i32>,
217    pub signal: Option<u64>,
218    #[doc(hidden)]
219    pub __source_breaking: fidl::marker::SourceBreaking,
220}
221
222impl fidl::Persistable for ControllerSendSignalRequest {}
223
224#[derive(Clone, Debug, Default, PartialEq)]
225pub struct ControllerSetSyscallLogFilterRequest {
226    /// The process name (or substring) to match.
227    pub process_name: Option<String>,
228    #[doc(hidden)]
229    pub __source_breaking: fidl::marker::SourceBreaking,
230}
231
232impl fidl::Persistable for ControllerSetSyscallLogFilterRequest {}
233
234#[derive(Clone, Debug, Default, PartialEq)]
235pub struct ControllerGetVmoReferencesResponse {
236    pub references: Option<Vec<VmoReference>>,
237    #[doc(hidden)]
238    pub __source_breaking: fidl::marker::SourceBreaking,
239}
240
241impl fidl::Persistable for ControllerGetVmoReferencesResponse {}
242
243#[derive(Clone, Debug, Default, PartialEq)]
244pub struct InfoGetJobKoidResponse {
245    pub koid: Option<u64>,
246    #[doc(hidden)]
247    pub __source_breaking: fidl::marker::SourceBreaking,
248}
249
250impl fidl::Persistable for InfoGetJobKoidResponse {}
251
252#[derive(Clone, Debug, Default, PartialEq)]
253pub struct VmoReference {
254    /// The name of the process containing a file backed by the vmo.
255    pub process_name: Option<String>,
256    /// The Starnix pid of the process containing a file backed by the vmo.
257    pub pid: Option<u64>,
258    /// The file descriptor number in the process that refers to the vmo.
259    pub fd: Option<i32>,
260    /// The koid of the vmo.
261    pub koid: Option<u64>,
262    #[doc(hidden)]
263    pub __source_breaking: fidl::marker::SourceBreaking,
264}
265
266impl fidl::Persistable for VmoReference {}
267
268pub mod controller_ordinals {
269    pub const VSOCK_CONNECT: u64 = 0x494a469a8943213b;
270    pub const SPAWN_CONSOLE: u64 = 0x76eb46fdc63aa8b8;
271    pub const GET_VMO_REFERENCES: u64 = 0x47a7f039bb97f173;
272    pub const GET_JOB_HANDLE: u64 = 0x60a31a248576ffea;
273    pub const SEND_SIGNAL: u64 = 0x253b1a0d3b9639e3;
274    pub const SET_SYSCALL_LOG_FILTER: u64 = 0x2d2a49963abdee9b;
275    pub const CLEAR_SYSCALL_LOG_FILTERS: u64 = 0xd3ee36073fdfdf0;
276}
277
278pub mod info_ordinals {
279    pub const GET_JOB_KOID: u64 = 0x5b60b29800a9a977;
280}
281
282mod internal {
283    use super::*;
284    unsafe impl fidl::encoding::TypeMarker for SetSyscallLogFilterError {
285        type Owned = Self;
286
287        #[inline(always)]
288        fn inline_align(_context: fidl::encoding::Context) -> usize {
289            std::mem::align_of::<u32>()
290        }
291
292        #[inline(always)]
293        fn inline_size(_context: fidl::encoding::Context) -> usize {
294            std::mem::size_of::<u32>()
295        }
296
297        #[inline(always)]
298        fn encode_is_copy() -> bool {
299            false
300        }
301
302        #[inline(always)]
303        fn decode_is_copy() -> bool {
304            false
305        }
306    }
307
308    impl fidl::encoding::ValueTypeMarker for SetSyscallLogFilterError {
309        type Borrowed<'a> = Self;
310        #[inline(always)]
311        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
312            *value
313        }
314    }
315
316    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
317        for SetSyscallLogFilterError
318    {
319        #[inline]
320        unsafe fn encode(
321            self,
322            encoder: &mut fidl::encoding::Encoder<'_, D>,
323            offset: usize,
324            _depth: fidl::encoding::Depth,
325        ) -> fidl::Result<()> {
326            encoder.debug_check_bounds::<Self>(offset);
327            encoder.write_num(self.into_primitive(), offset);
328            Ok(())
329        }
330    }
331
332    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
333        for SetSyscallLogFilterError
334    {
335        #[inline(always)]
336        fn new_empty() -> Self {
337            Self::unknown()
338        }
339
340        #[inline]
341        unsafe fn decode(
342            &mut self,
343            decoder: &mut fidl::encoding::Decoder<'_, D>,
344            offset: usize,
345            _depth: fidl::encoding::Depth,
346        ) -> fidl::Result<()> {
347            decoder.debug_check_bounds::<Self>(offset);
348            let prim = decoder.read_num::<u32>(offset);
349
350            *self = Self::from_primitive_allow_unknown(prim);
351            Ok(())
352        }
353    }
354    unsafe impl fidl::encoding::TypeMarker for SignalError {
355        type Owned = Self;
356
357        #[inline(always)]
358        fn inline_align(_context: fidl::encoding::Context) -> usize {
359            std::mem::align_of::<u32>()
360        }
361
362        #[inline(always)]
363        fn inline_size(_context: fidl::encoding::Context) -> usize {
364            std::mem::size_of::<u32>()
365        }
366
367        #[inline(always)]
368        fn encode_is_copy() -> bool {
369            false
370        }
371
372        #[inline(always)]
373        fn decode_is_copy() -> bool {
374            false
375        }
376    }
377
378    impl fidl::encoding::ValueTypeMarker for SignalError {
379        type Borrowed<'a> = Self;
380        #[inline(always)]
381        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
382            *value
383        }
384    }
385
386    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for SignalError {
387        #[inline]
388        unsafe fn encode(
389            self,
390            encoder: &mut fidl::encoding::Encoder<'_, D>,
391            offset: usize,
392            _depth: fidl::encoding::Depth,
393        ) -> fidl::Result<()> {
394            encoder.debug_check_bounds::<Self>(offset);
395            encoder.write_num(self.into_primitive(), offset);
396            Ok(())
397        }
398    }
399
400    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for SignalError {
401        #[inline(always)]
402        fn new_empty() -> Self {
403            Self::unknown()
404        }
405
406        #[inline]
407        unsafe fn decode(
408            &mut self,
409            decoder: &mut fidl::encoding::Decoder<'_, D>,
410            offset: usize,
411            _depth: fidl::encoding::Depth,
412        ) -> fidl::Result<()> {
413            decoder.debug_check_bounds::<Self>(offset);
414            let prim = decoder.read_num::<u32>(offset);
415
416            *self = Self::from_primitive_allow_unknown(prim);
417            Ok(())
418        }
419    }
420    unsafe impl fidl::encoding::TypeMarker for SpawnConsoleError {
421        type Owned = Self;
422
423        #[inline(always)]
424        fn inline_align(_context: fidl::encoding::Context) -> usize {
425            std::mem::align_of::<u32>()
426        }
427
428        #[inline(always)]
429        fn inline_size(_context: fidl::encoding::Context) -> usize {
430            std::mem::size_of::<u32>()
431        }
432
433        #[inline(always)]
434        fn encode_is_copy() -> bool {
435            false
436        }
437
438        #[inline(always)]
439        fn decode_is_copy() -> bool {
440            false
441        }
442    }
443
444    impl fidl::encoding::ValueTypeMarker for SpawnConsoleError {
445        type Borrowed<'a> = Self;
446        #[inline(always)]
447        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
448            *value
449        }
450    }
451
452    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
453        for SpawnConsoleError
454    {
455        #[inline]
456        unsafe fn encode(
457            self,
458            encoder: &mut fidl::encoding::Encoder<'_, D>,
459            offset: usize,
460            _depth: fidl::encoding::Depth,
461        ) -> fidl::Result<()> {
462            encoder.debug_check_bounds::<Self>(offset);
463            encoder.write_num(self.into_primitive(), offset);
464            Ok(())
465        }
466    }
467
468    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for SpawnConsoleError {
469        #[inline(always)]
470        fn new_empty() -> Self {
471            Self::unknown()
472        }
473
474        #[inline]
475        unsafe fn decode(
476            &mut self,
477            decoder: &mut fidl::encoding::Decoder<'_, D>,
478            offset: usize,
479            _depth: fidl::encoding::Depth,
480        ) -> fidl::Result<()> {
481            decoder.debug_check_bounds::<Self>(offset);
482            let prim = decoder.read_num::<u32>(offset);
483
484            *self = Self::from_primitive_allow_unknown(prim);
485            Ok(())
486        }
487    }
488
489    impl fidl::encoding::ValueTypeMarker for ConsoleWindowSize {
490        type Borrowed<'a> = &'a Self;
491        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
492            value
493        }
494    }
495
496    unsafe impl fidl::encoding::TypeMarker for ConsoleWindowSize {
497        type Owned = Self;
498
499        #[inline(always)]
500        fn inline_align(_context: fidl::encoding::Context) -> usize {
501            2
502        }
503
504        #[inline(always)]
505        fn inline_size(_context: fidl::encoding::Context) -> usize {
506            8
507        }
508        #[inline(always)]
509        fn encode_is_copy() -> bool {
510            true
511        }
512
513        #[inline(always)]
514        fn decode_is_copy() -> bool {
515            true
516        }
517    }
518
519    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ConsoleWindowSize, D>
520        for &ConsoleWindowSize
521    {
522        #[inline]
523        unsafe fn encode(
524            self,
525            encoder: &mut fidl::encoding::Encoder<'_, D>,
526            offset: usize,
527            _depth: fidl::encoding::Depth,
528        ) -> fidl::Result<()> {
529            encoder.debug_check_bounds::<ConsoleWindowSize>(offset);
530            unsafe {
531                // Copy the object into the buffer.
532                let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
533                (buf_ptr as *mut ConsoleWindowSize)
534                    .write_unaligned((self as *const ConsoleWindowSize).read());
535                // Zero out padding regions. Unlike `fidl_struct_impl_noncopy!`, this must be
536                // done second because the memcpy will write garbage to these bytes.
537            }
538            Ok(())
539        }
540    }
541    unsafe impl<
542        D: fidl::encoding::ResourceDialect,
543        T0: fidl::encoding::Encode<u16, D>,
544        T1: fidl::encoding::Encode<u16, D>,
545        T2: fidl::encoding::Encode<u16, D>,
546        T3: fidl::encoding::Encode<u16, D>,
547    > fidl::encoding::Encode<ConsoleWindowSize, D> for (T0, T1, T2, T3)
548    {
549        #[inline]
550        unsafe fn encode(
551            self,
552            encoder: &mut fidl::encoding::Encoder<'_, D>,
553            offset: usize,
554            depth: fidl::encoding::Depth,
555        ) -> fidl::Result<()> {
556            encoder.debug_check_bounds::<ConsoleWindowSize>(offset);
557            // Zero out padding regions. There's no need to apply masks
558            // because the unmasked parts will be overwritten by fields.
559            // Write the fields.
560            self.0.encode(encoder, offset + 0, depth)?;
561            self.1.encode(encoder, offset + 2, depth)?;
562            self.2.encode(encoder, offset + 4, depth)?;
563            self.3.encode(encoder, offset + 6, depth)?;
564            Ok(())
565        }
566    }
567
568    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ConsoleWindowSize {
569        #[inline(always)]
570        fn new_empty() -> Self {
571            Self {
572                rows: fidl::new_empty!(u16, D),
573                cols: fidl::new_empty!(u16, D),
574                x_pixels: fidl::new_empty!(u16, D),
575                y_pixels: fidl::new_empty!(u16, D),
576            }
577        }
578
579        #[inline]
580        unsafe fn decode(
581            &mut self,
582            decoder: &mut fidl::encoding::Decoder<'_, D>,
583            offset: usize,
584            _depth: fidl::encoding::Depth,
585        ) -> fidl::Result<()> {
586            decoder.debug_check_bounds::<Self>(offset);
587            let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
588            // Verify that padding bytes are zero.
589            // Copy from the buffer into the object.
590            unsafe {
591                std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 8);
592            }
593            Ok(())
594        }
595    }
596
597    impl fidl::encoding::ValueTypeMarker for ControllerSpawnConsoleResponse {
598        type Borrowed<'a> = &'a Self;
599        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
600            value
601        }
602    }
603
604    unsafe impl fidl::encoding::TypeMarker for ControllerSpawnConsoleResponse {
605        type Owned = Self;
606
607        #[inline(always)]
608        fn inline_align(_context: fidl::encoding::Context) -> usize {
609            1
610        }
611
612        #[inline(always)]
613        fn inline_size(_context: fidl::encoding::Context) -> usize {
614            1
615        }
616        #[inline(always)]
617        fn encode_is_copy() -> bool {
618            true
619        }
620
621        #[inline(always)]
622        fn decode_is_copy() -> bool {
623            true
624        }
625    }
626
627    unsafe impl<D: fidl::encoding::ResourceDialect>
628        fidl::encoding::Encode<ControllerSpawnConsoleResponse, D>
629        for &ControllerSpawnConsoleResponse
630    {
631        #[inline]
632        unsafe fn encode(
633            self,
634            encoder: &mut fidl::encoding::Encoder<'_, D>,
635            offset: usize,
636            _depth: fidl::encoding::Depth,
637        ) -> fidl::Result<()> {
638            encoder.debug_check_bounds::<ControllerSpawnConsoleResponse>(offset);
639            unsafe {
640                // Copy the object into the buffer.
641                let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
642                (buf_ptr as *mut ControllerSpawnConsoleResponse)
643                    .write_unaligned((self as *const ControllerSpawnConsoleResponse).read());
644                // Zero out padding regions. Unlike `fidl_struct_impl_noncopy!`, this must be
645                // done second because the memcpy will write garbage to these bytes.
646            }
647            Ok(())
648        }
649    }
650    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<u8, D>>
651        fidl::encoding::Encode<ControllerSpawnConsoleResponse, D> for (T0,)
652    {
653        #[inline]
654        unsafe fn encode(
655            self,
656            encoder: &mut fidl::encoding::Encoder<'_, D>,
657            offset: usize,
658            depth: fidl::encoding::Depth,
659        ) -> fidl::Result<()> {
660            encoder.debug_check_bounds::<ControllerSpawnConsoleResponse>(offset);
661            // Zero out padding regions. There's no need to apply masks
662            // because the unmasked parts will be overwritten by fields.
663            // Write the fields.
664            self.0.encode(encoder, offset + 0, depth)?;
665            Ok(())
666        }
667    }
668
669    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
670        for ControllerSpawnConsoleResponse
671    {
672        #[inline(always)]
673        fn new_empty() -> Self {
674            Self { exit_code: fidl::new_empty!(u8, D) }
675        }
676
677        #[inline]
678        unsafe fn decode(
679            &mut self,
680            decoder: &mut fidl::encoding::Decoder<'_, D>,
681            offset: usize,
682            _depth: fidl::encoding::Depth,
683        ) -> fidl::Result<()> {
684            decoder.debug_check_bounds::<Self>(offset);
685            let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
686            // Verify that padding bytes are zero.
687            // Copy from the buffer into the object.
688            unsafe {
689                std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 1);
690            }
691            Ok(())
692        }
693    }
694
695    impl ControllerGetVmoReferencesRequest {
696        #[inline(always)]
697        fn max_ordinal_present(&self) -> u64 {
698            if let Some(_) = self.koid {
699                return 1;
700            }
701            0
702        }
703    }
704
705    impl fidl::encoding::ValueTypeMarker for ControllerGetVmoReferencesRequest {
706        type Borrowed<'a> = &'a Self;
707        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
708            value
709        }
710    }
711
712    unsafe impl fidl::encoding::TypeMarker for ControllerGetVmoReferencesRequest {
713        type Owned = Self;
714
715        #[inline(always)]
716        fn inline_align(_context: fidl::encoding::Context) -> usize {
717            8
718        }
719
720        #[inline(always)]
721        fn inline_size(_context: fidl::encoding::Context) -> usize {
722            16
723        }
724    }
725
726    unsafe impl<D: fidl::encoding::ResourceDialect>
727        fidl::encoding::Encode<ControllerGetVmoReferencesRequest, D>
728        for &ControllerGetVmoReferencesRequest
729    {
730        unsafe fn encode(
731            self,
732            encoder: &mut fidl::encoding::Encoder<'_, D>,
733            offset: usize,
734            mut depth: fidl::encoding::Depth,
735        ) -> fidl::Result<()> {
736            encoder.debug_check_bounds::<ControllerGetVmoReferencesRequest>(offset);
737            // Vector header
738            let max_ordinal: u64 = self.max_ordinal_present();
739            encoder.write_num(max_ordinal, offset);
740            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
741            // Calling encoder.out_of_line_offset(0) is not allowed.
742            if max_ordinal == 0 {
743                return Ok(());
744            }
745            depth.increment()?;
746            let envelope_size = 8;
747            let bytes_len = max_ordinal as usize * envelope_size;
748            #[allow(unused_variables)]
749            let offset = encoder.out_of_line_offset(bytes_len);
750            let mut _prev_end_offset: usize = 0;
751            if 1 > max_ordinal {
752                return Ok(());
753            }
754
755            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
756            // are envelope_size bytes.
757            let cur_offset: usize = (1 - 1) * envelope_size;
758
759            // Zero reserved fields.
760            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
761
762            // Safety:
763            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
764            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
765            //   envelope_size bytes, there is always sufficient room.
766            fidl::encoding::encode_in_envelope_optional::<u64, D>(
767                self.koid.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
768                encoder,
769                offset + cur_offset,
770                depth,
771            )?;
772
773            _prev_end_offset = cur_offset + envelope_size;
774
775            Ok(())
776        }
777    }
778
779    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
780        for ControllerGetVmoReferencesRequest
781    {
782        #[inline(always)]
783        fn new_empty() -> Self {
784            Self::default()
785        }
786
787        unsafe fn decode(
788            &mut self,
789            decoder: &mut fidl::encoding::Decoder<'_, D>,
790            offset: usize,
791            mut depth: fidl::encoding::Depth,
792        ) -> fidl::Result<()> {
793            decoder.debug_check_bounds::<Self>(offset);
794            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
795                None => return Err(fidl::Error::NotNullable),
796                Some(len) => len,
797            };
798            // Calling decoder.out_of_line_offset(0) is not allowed.
799            if len == 0 {
800                return Ok(());
801            };
802            depth.increment()?;
803            let envelope_size = 8;
804            let bytes_len = len * envelope_size;
805            let offset = decoder.out_of_line_offset(bytes_len)?;
806            // Decode the envelope for each type.
807            let mut _next_ordinal_to_read = 0;
808            let mut next_offset = offset;
809            let end_offset = offset + bytes_len;
810            _next_ordinal_to_read += 1;
811            if next_offset >= end_offset {
812                return Ok(());
813            }
814
815            // Decode unknown envelopes for gaps in ordinals.
816            while _next_ordinal_to_read < 1 {
817                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
818                _next_ordinal_to_read += 1;
819                next_offset += envelope_size;
820            }
821
822            let next_out_of_line = decoder.next_out_of_line();
823            let handles_before = decoder.remaining_handles();
824            if let Some((inlined, num_bytes, num_handles)) =
825                fidl::encoding::decode_envelope_header(decoder, next_offset)?
826            {
827                let member_inline_size =
828                    <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
829                if inlined != (member_inline_size <= 4) {
830                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
831                }
832                let inner_offset;
833                let mut inner_depth = depth.clone();
834                if inlined {
835                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
836                    inner_offset = next_offset;
837                } else {
838                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
839                    inner_depth.increment()?;
840                }
841                let val_ref = self.koid.get_or_insert_with(|| fidl::new_empty!(u64, D));
842                fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
843                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
844                {
845                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
846                }
847                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
848                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
849                }
850            }
851
852            next_offset += envelope_size;
853
854            // Decode the remaining unknown envelopes.
855            while next_offset < end_offset {
856                _next_ordinal_to_read += 1;
857                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
858                next_offset += envelope_size;
859            }
860
861            Ok(())
862        }
863    }
864
865    impl ControllerSendSignalRequest {
866        #[inline(always)]
867        fn max_ordinal_present(&self) -> u64 {
868            if let Some(_) = self.signal {
869                return 2;
870            }
871            if let Some(_) = self.pid {
872                return 1;
873            }
874            0
875        }
876    }
877
878    impl fidl::encoding::ValueTypeMarker for ControllerSendSignalRequest {
879        type Borrowed<'a> = &'a Self;
880        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
881            value
882        }
883    }
884
885    unsafe impl fidl::encoding::TypeMarker for ControllerSendSignalRequest {
886        type Owned = Self;
887
888        #[inline(always)]
889        fn inline_align(_context: fidl::encoding::Context) -> usize {
890            8
891        }
892
893        #[inline(always)]
894        fn inline_size(_context: fidl::encoding::Context) -> usize {
895            16
896        }
897    }
898
899    unsafe impl<D: fidl::encoding::ResourceDialect>
900        fidl::encoding::Encode<ControllerSendSignalRequest, D> for &ControllerSendSignalRequest
901    {
902        unsafe fn encode(
903            self,
904            encoder: &mut fidl::encoding::Encoder<'_, D>,
905            offset: usize,
906            mut depth: fidl::encoding::Depth,
907        ) -> fidl::Result<()> {
908            encoder.debug_check_bounds::<ControllerSendSignalRequest>(offset);
909            // Vector header
910            let max_ordinal: u64 = self.max_ordinal_present();
911            encoder.write_num(max_ordinal, offset);
912            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
913            // Calling encoder.out_of_line_offset(0) is not allowed.
914            if max_ordinal == 0 {
915                return Ok(());
916            }
917            depth.increment()?;
918            let envelope_size = 8;
919            let bytes_len = max_ordinal as usize * envelope_size;
920            #[allow(unused_variables)]
921            let offset = encoder.out_of_line_offset(bytes_len);
922            let mut _prev_end_offset: usize = 0;
923            if 1 > max_ordinal {
924                return Ok(());
925            }
926
927            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
928            // are envelope_size bytes.
929            let cur_offset: usize = (1 - 1) * envelope_size;
930
931            // Zero reserved fields.
932            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
933
934            // Safety:
935            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
936            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
937            //   envelope_size bytes, there is always sufficient room.
938            fidl::encoding::encode_in_envelope_optional::<i32, D>(
939                self.pid.as_ref().map(<i32 as fidl::encoding::ValueTypeMarker>::borrow),
940                encoder,
941                offset + cur_offset,
942                depth,
943            )?;
944
945            _prev_end_offset = cur_offset + envelope_size;
946            if 2 > max_ordinal {
947                return Ok(());
948            }
949
950            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
951            // are envelope_size bytes.
952            let cur_offset: usize = (2 - 1) * envelope_size;
953
954            // Zero reserved fields.
955            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
956
957            // Safety:
958            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
959            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
960            //   envelope_size bytes, there is always sufficient room.
961            fidl::encoding::encode_in_envelope_optional::<u64, D>(
962                self.signal.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
963                encoder,
964                offset + cur_offset,
965                depth,
966            )?;
967
968            _prev_end_offset = cur_offset + envelope_size;
969
970            Ok(())
971        }
972    }
973
974    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
975        for ControllerSendSignalRequest
976    {
977        #[inline(always)]
978        fn new_empty() -> Self {
979            Self::default()
980        }
981
982        unsafe fn decode(
983            &mut self,
984            decoder: &mut fidl::encoding::Decoder<'_, D>,
985            offset: usize,
986            mut depth: fidl::encoding::Depth,
987        ) -> fidl::Result<()> {
988            decoder.debug_check_bounds::<Self>(offset);
989            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
990                None => return Err(fidl::Error::NotNullable),
991                Some(len) => len,
992            };
993            // Calling decoder.out_of_line_offset(0) is not allowed.
994            if len == 0 {
995                return Ok(());
996            };
997            depth.increment()?;
998            let envelope_size = 8;
999            let bytes_len = len * envelope_size;
1000            let offset = decoder.out_of_line_offset(bytes_len)?;
1001            // Decode the envelope for each type.
1002            let mut _next_ordinal_to_read = 0;
1003            let mut next_offset = offset;
1004            let end_offset = offset + bytes_len;
1005            _next_ordinal_to_read += 1;
1006            if next_offset >= end_offset {
1007                return Ok(());
1008            }
1009
1010            // Decode unknown envelopes for gaps in ordinals.
1011            while _next_ordinal_to_read < 1 {
1012                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1013                _next_ordinal_to_read += 1;
1014                next_offset += envelope_size;
1015            }
1016
1017            let next_out_of_line = decoder.next_out_of_line();
1018            let handles_before = decoder.remaining_handles();
1019            if let Some((inlined, num_bytes, num_handles)) =
1020                fidl::encoding::decode_envelope_header(decoder, next_offset)?
1021            {
1022                let member_inline_size =
1023                    <i32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1024                if inlined != (member_inline_size <= 4) {
1025                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
1026                }
1027                let inner_offset;
1028                let mut inner_depth = depth.clone();
1029                if inlined {
1030                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1031                    inner_offset = next_offset;
1032                } else {
1033                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1034                    inner_depth.increment()?;
1035                }
1036                let val_ref = self.pid.get_or_insert_with(|| fidl::new_empty!(i32, D));
1037                fidl::decode!(i32, D, val_ref, decoder, inner_offset, inner_depth)?;
1038                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1039                {
1040                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
1041                }
1042                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1043                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1044                }
1045            }
1046
1047            next_offset += envelope_size;
1048            _next_ordinal_to_read += 1;
1049            if next_offset >= end_offset {
1050                return Ok(());
1051            }
1052
1053            // Decode unknown envelopes for gaps in ordinals.
1054            while _next_ordinal_to_read < 2 {
1055                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1056                _next_ordinal_to_read += 1;
1057                next_offset += envelope_size;
1058            }
1059
1060            let next_out_of_line = decoder.next_out_of_line();
1061            let handles_before = decoder.remaining_handles();
1062            if let Some((inlined, num_bytes, num_handles)) =
1063                fidl::encoding::decode_envelope_header(decoder, next_offset)?
1064            {
1065                let member_inline_size =
1066                    <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1067                if inlined != (member_inline_size <= 4) {
1068                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
1069                }
1070                let inner_offset;
1071                let mut inner_depth = depth.clone();
1072                if inlined {
1073                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1074                    inner_offset = next_offset;
1075                } else {
1076                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1077                    inner_depth.increment()?;
1078                }
1079                let val_ref = self.signal.get_or_insert_with(|| fidl::new_empty!(u64, D));
1080                fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
1081                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1082                {
1083                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
1084                }
1085                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1086                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1087                }
1088            }
1089
1090            next_offset += envelope_size;
1091
1092            // Decode the remaining unknown envelopes.
1093            while next_offset < end_offset {
1094                _next_ordinal_to_read += 1;
1095                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1096                next_offset += envelope_size;
1097            }
1098
1099            Ok(())
1100        }
1101    }
1102
1103    impl ControllerSetSyscallLogFilterRequest {
1104        #[inline(always)]
1105        fn max_ordinal_present(&self) -> u64 {
1106            if let Some(_) = self.process_name {
1107                return 1;
1108            }
1109            0
1110        }
1111    }
1112
1113    impl fidl::encoding::ValueTypeMarker for ControllerSetSyscallLogFilterRequest {
1114        type Borrowed<'a> = &'a Self;
1115        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1116            value
1117        }
1118    }
1119
1120    unsafe impl fidl::encoding::TypeMarker for ControllerSetSyscallLogFilterRequest {
1121        type Owned = Self;
1122
1123        #[inline(always)]
1124        fn inline_align(_context: fidl::encoding::Context) -> usize {
1125            8
1126        }
1127
1128        #[inline(always)]
1129        fn inline_size(_context: fidl::encoding::Context) -> usize {
1130            16
1131        }
1132    }
1133
1134    unsafe impl<D: fidl::encoding::ResourceDialect>
1135        fidl::encoding::Encode<ControllerSetSyscallLogFilterRequest, D>
1136        for &ControllerSetSyscallLogFilterRequest
1137    {
1138        unsafe fn encode(
1139            self,
1140            encoder: &mut fidl::encoding::Encoder<'_, D>,
1141            offset: usize,
1142            mut depth: fidl::encoding::Depth,
1143        ) -> fidl::Result<()> {
1144            encoder.debug_check_bounds::<ControllerSetSyscallLogFilterRequest>(offset);
1145            // Vector header
1146            let max_ordinal: u64 = self.max_ordinal_present();
1147            encoder.write_num(max_ordinal, offset);
1148            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
1149            // Calling encoder.out_of_line_offset(0) is not allowed.
1150            if max_ordinal == 0 {
1151                return Ok(());
1152            }
1153            depth.increment()?;
1154            let envelope_size = 8;
1155            let bytes_len = max_ordinal as usize * envelope_size;
1156            #[allow(unused_variables)]
1157            let offset = encoder.out_of_line_offset(bytes_len);
1158            let mut _prev_end_offset: usize = 0;
1159            if 1 > max_ordinal {
1160                return Ok(());
1161            }
1162
1163            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
1164            // are envelope_size bytes.
1165            let cur_offset: usize = (1 - 1) * envelope_size;
1166
1167            // Zero reserved fields.
1168            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1169
1170            // Safety:
1171            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
1172            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
1173            //   envelope_size bytes, there is always sufficient room.
1174            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedString, D>(
1175                self.process_name.as_ref().map(
1176                    <fidl::encoding::UnboundedString as fidl::encoding::ValueTypeMarker>::borrow,
1177                ),
1178                encoder,
1179                offset + cur_offset,
1180                depth,
1181            )?;
1182
1183            _prev_end_offset = cur_offset + envelope_size;
1184
1185            Ok(())
1186        }
1187    }
1188
1189    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1190        for ControllerSetSyscallLogFilterRequest
1191    {
1192        #[inline(always)]
1193        fn new_empty() -> Self {
1194            Self::default()
1195        }
1196
1197        unsafe fn decode(
1198            &mut self,
1199            decoder: &mut fidl::encoding::Decoder<'_, D>,
1200            offset: usize,
1201            mut depth: fidl::encoding::Depth,
1202        ) -> fidl::Result<()> {
1203            decoder.debug_check_bounds::<Self>(offset);
1204            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
1205                None => return Err(fidl::Error::NotNullable),
1206                Some(len) => len,
1207            };
1208            // Calling decoder.out_of_line_offset(0) is not allowed.
1209            if len == 0 {
1210                return Ok(());
1211            };
1212            depth.increment()?;
1213            let envelope_size = 8;
1214            let bytes_len = len * envelope_size;
1215            let offset = decoder.out_of_line_offset(bytes_len)?;
1216            // Decode the envelope for each type.
1217            let mut _next_ordinal_to_read = 0;
1218            let mut next_offset = offset;
1219            let end_offset = offset + bytes_len;
1220            _next_ordinal_to_read += 1;
1221            if next_offset >= end_offset {
1222                return Ok(());
1223            }
1224
1225            // Decode unknown envelopes for gaps in ordinals.
1226            while _next_ordinal_to_read < 1 {
1227                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1228                _next_ordinal_to_read += 1;
1229                next_offset += envelope_size;
1230            }
1231
1232            let next_out_of_line = decoder.next_out_of_line();
1233            let handles_before = decoder.remaining_handles();
1234            if let Some((inlined, num_bytes, num_handles)) =
1235                fidl::encoding::decode_envelope_header(decoder, next_offset)?
1236            {
1237                let member_inline_size =
1238                    <fidl::encoding::UnboundedString as fidl::encoding::TypeMarker>::inline_size(
1239                        decoder.context,
1240                    );
1241                if inlined != (member_inline_size <= 4) {
1242                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
1243                }
1244                let inner_offset;
1245                let mut inner_depth = depth.clone();
1246                if inlined {
1247                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1248                    inner_offset = next_offset;
1249                } else {
1250                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1251                    inner_depth.increment()?;
1252                }
1253                let val_ref = self
1254                    .process_name
1255                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::UnboundedString, D));
1256                fidl::decode!(
1257                    fidl::encoding::UnboundedString,
1258                    D,
1259                    val_ref,
1260                    decoder,
1261                    inner_offset,
1262                    inner_depth
1263                )?;
1264                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1265                {
1266                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
1267                }
1268                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1269                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1270                }
1271            }
1272
1273            next_offset += envelope_size;
1274
1275            // Decode the remaining unknown envelopes.
1276            while next_offset < end_offset {
1277                _next_ordinal_to_read += 1;
1278                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1279                next_offset += envelope_size;
1280            }
1281
1282            Ok(())
1283        }
1284    }
1285
1286    impl ControllerGetVmoReferencesResponse {
1287        #[inline(always)]
1288        fn max_ordinal_present(&self) -> u64 {
1289            if let Some(_) = self.references {
1290                return 1;
1291            }
1292            0
1293        }
1294    }
1295
1296    impl fidl::encoding::ValueTypeMarker for ControllerGetVmoReferencesResponse {
1297        type Borrowed<'a> = &'a Self;
1298        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1299            value
1300        }
1301    }
1302
1303    unsafe impl fidl::encoding::TypeMarker for ControllerGetVmoReferencesResponse {
1304        type Owned = Self;
1305
1306        #[inline(always)]
1307        fn inline_align(_context: fidl::encoding::Context) -> usize {
1308            8
1309        }
1310
1311        #[inline(always)]
1312        fn inline_size(_context: fidl::encoding::Context) -> usize {
1313            16
1314        }
1315    }
1316
1317    unsafe impl<D: fidl::encoding::ResourceDialect>
1318        fidl::encoding::Encode<ControllerGetVmoReferencesResponse, D>
1319        for &ControllerGetVmoReferencesResponse
1320    {
1321        unsafe fn encode(
1322            self,
1323            encoder: &mut fidl::encoding::Encoder<'_, D>,
1324            offset: usize,
1325            mut depth: fidl::encoding::Depth,
1326        ) -> fidl::Result<()> {
1327            encoder.debug_check_bounds::<ControllerGetVmoReferencesResponse>(offset);
1328            // Vector header
1329            let max_ordinal: u64 = self.max_ordinal_present();
1330            encoder.write_num(max_ordinal, offset);
1331            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
1332            // Calling encoder.out_of_line_offset(0) is not allowed.
1333            if max_ordinal == 0 {
1334                return Ok(());
1335            }
1336            depth.increment()?;
1337            let envelope_size = 8;
1338            let bytes_len = max_ordinal as usize * envelope_size;
1339            #[allow(unused_variables)]
1340            let offset = encoder.out_of_line_offset(bytes_len);
1341            let mut _prev_end_offset: usize = 0;
1342            if 1 > max_ordinal {
1343                return Ok(());
1344            }
1345
1346            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
1347            // are envelope_size bytes.
1348            let cur_offset: usize = (1 - 1) * envelope_size;
1349
1350            // Zero reserved fields.
1351            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1352
1353            // Safety:
1354            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
1355            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
1356            //   envelope_size bytes, there is always sufficient room.
1357            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<VmoReference>, D>(
1358            self.references.as_ref().map(<fidl::encoding::UnboundedVector<VmoReference> as fidl::encoding::ValueTypeMarker>::borrow),
1359            encoder, offset + cur_offset, depth
1360        )?;
1361
1362            _prev_end_offset = cur_offset + envelope_size;
1363
1364            Ok(())
1365        }
1366    }
1367
1368    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1369        for ControllerGetVmoReferencesResponse
1370    {
1371        #[inline(always)]
1372        fn new_empty() -> Self {
1373            Self::default()
1374        }
1375
1376        unsafe fn decode(
1377            &mut self,
1378            decoder: &mut fidl::encoding::Decoder<'_, D>,
1379            offset: usize,
1380            mut depth: fidl::encoding::Depth,
1381        ) -> fidl::Result<()> {
1382            decoder.debug_check_bounds::<Self>(offset);
1383            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
1384                None => return Err(fidl::Error::NotNullable),
1385                Some(len) => len,
1386            };
1387            // Calling decoder.out_of_line_offset(0) is not allowed.
1388            if len == 0 {
1389                return Ok(());
1390            };
1391            depth.increment()?;
1392            let envelope_size = 8;
1393            let bytes_len = len * envelope_size;
1394            let offset = decoder.out_of_line_offset(bytes_len)?;
1395            // Decode the envelope for each type.
1396            let mut _next_ordinal_to_read = 0;
1397            let mut next_offset = offset;
1398            let end_offset = offset + bytes_len;
1399            _next_ordinal_to_read += 1;
1400            if next_offset >= end_offset {
1401                return Ok(());
1402            }
1403
1404            // Decode unknown envelopes for gaps in ordinals.
1405            while _next_ordinal_to_read < 1 {
1406                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1407                _next_ordinal_to_read += 1;
1408                next_offset += envelope_size;
1409            }
1410
1411            let next_out_of_line = decoder.next_out_of_line();
1412            let handles_before = decoder.remaining_handles();
1413            if let Some((inlined, num_bytes, num_handles)) =
1414                fidl::encoding::decode_envelope_header(decoder, next_offset)?
1415            {
1416                let member_inline_size = <fidl::encoding::UnboundedVector<VmoReference> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1417                if inlined != (member_inline_size <= 4) {
1418                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
1419                }
1420                let inner_offset;
1421                let mut inner_depth = depth.clone();
1422                if inlined {
1423                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1424                    inner_offset = next_offset;
1425                } else {
1426                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1427                    inner_depth.increment()?;
1428                }
1429                let val_ref = self.references.get_or_insert_with(|| {
1430                    fidl::new_empty!(fidl::encoding::UnboundedVector<VmoReference>, D)
1431                });
1432                fidl::decode!(
1433                    fidl::encoding::UnboundedVector<VmoReference>,
1434                    D,
1435                    val_ref,
1436                    decoder,
1437                    inner_offset,
1438                    inner_depth
1439                )?;
1440                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1441                {
1442                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
1443                }
1444                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1445                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1446                }
1447            }
1448
1449            next_offset += envelope_size;
1450
1451            // Decode the remaining unknown envelopes.
1452            while next_offset < end_offset {
1453                _next_ordinal_to_read += 1;
1454                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1455                next_offset += envelope_size;
1456            }
1457
1458            Ok(())
1459        }
1460    }
1461
1462    impl InfoGetJobKoidResponse {
1463        #[inline(always)]
1464        fn max_ordinal_present(&self) -> u64 {
1465            if let Some(_) = self.koid {
1466                return 1;
1467            }
1468            0
1469        }
1470    }
1471
1472    impl fidl::encoding::ValueTypeMarker for InfoGetJobKoidResponse {
1473        type Borrowed<'a> = &'a Self;
1474        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1475            value
1476        }
1477    }
1478
1479    unsafe impl fidl::encoding::TypeMarker for InfoGetJobKoidResponse {
1480        type Owned = Self;
1481
1482        #[inline(always)]
1483        fn inline_align(_context: fidl::encoding::Context) -> usize {
1484            8
1485        }
1486
1487        #[inline(always)]
1488        fn inline_size(_context: fidl::encoding::Context) -> usize {
1489            16
1490        }
1491    }
1492
1493    unsafe impl<D: fidl::encoding::ResourceDialect>
1494        fidl::encoding::Encode<InfoGetJobKoidResponse, D> for &InfoGetJobKoidResponse
1495    {
1496        unsafe fn encode(
1497            self,
1498            encoder: &mut fidl::encoding::Encoder<'_, D>,
1499            offset: usize,
1500            mut depth: fidl::encoding::Depth,
1501        ) -> fidl::Result<()> {
1502            encoder.debug_check_bounds::<InfoGetJobKoidResponse>(offset);
1503            // Vector header
1504            let max_ordinal: u64 = self.max_ordinal_present();
1505            encoder.write_num(max_ordinal, offset);
1506            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
1507            // Calling encoder.out_of_line_offset(0) is not allowed.
1508            if max_ordinal == 0 {
1509                return Ok(());
1510            }
1511            depth.increment()?;
1512            let envelope_size = 8;
1513            let bytes_len = max_ordinal as usize * envelope_size;
1514            #[allow(unused_variables)]
1515            let offset = encoder.out_of_line_offset(bytes_len);
1516            let mut _prev_end_offset: usize = 0;
1517            if 1 > max_ordinal {
1518                return Ok(());
1519            }
1520
1521            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
1522            // are envelope_size bytes.
1523            let cur_offset: usize = (1 - 1) * envelope_size;
1524
1525            // Zero reserved fields.
1526            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1527
1528            // Safety:
1529            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
1530            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
1531            //   envelope_size bytes, there is always sufficient room.
1532            fidl::encoding::encode_in_envelope_optional::<u64, D>(
1533                self.koid.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
1534                encoder,
1535                offset + cur_offset,
1536                depth,
1537            )?;
1538
1539            _prev_end_offset = cur_offset + envelope_size;
1540
1541            Ok(())
1542        }
1543    }
1544
1545    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1546        for InfoGetJobKoidResponse
1547    {
1548        #[inline(always)]
1549        fn new_empty() -> Self {
1550            Self::default()
1551        }
1552
1553        unsafe fn decode(
1554            &mut self,
1555            decoder: &mut fidl::encoding::Decoder<'_, D>,
1556            offset: usize,
1557            mut depth: fidl::encoding::Depth,
1558        ) -> fidl::Result<()> {
1559            decoder.debug_check_bounds::<Self>(offset);
1560            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
1561                None => return Err(fidl::Error::NotNullable),
1562                Some(len) => len,
1563            };
1564            // Calling decoder.out_of_line_offset(0) is not allowed.
1565            if len == 0 {
1566                return Ok(());
1567            };
1568            depth.increment()?;
1569            let envelope_size = 8;
1570            let bytes_len = len * envelope_size;
1571            let offset = decoder.out_of_line_offset(bytes_len)?;
1572            // Decode the envelope for each type.
1573            let mut _next_ordinal_to_read = 0;
1574            let mut next_offset = offset;
1575            let end_offset = offset + bytes_len;
1576            _next_ordinal_to_read += 1;
1577            if next_offset >= end_offset {
1578                return Ok(());
1579            }
1580
1581            // Decode unknown envelopes for gaps in ordinals.
1582            while _next_ordinal_to_read < 1 {
1583                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1584                _next_ordinal_to_read += 1;
1585                next_offset += envelope_size;
1586            }
1587
1588            let next_out_of_line = decoder.next_out_of_line();
1589            let handles_before = decoder.remaining_handles();
1590            if let Some((inlined, num_bytes, num_handles)) =
1591                fidl::encoding::decode_envelope_header(decoder, next_offset)?
1592            {
1593                let member_inline_size =
1594                    <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1595                if inlined != (member_inline_size <= 4) {
1596                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
1597                }
1598                let inner_offset;
1599                let mut inner_depth = depth.clone();
1600                if inlined {
1601                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1602                    inner_offset = next_offset;
1603                } else {
1604                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1605                    inner_depth.increment()?;
1606                }
1607                let val_ref = self.koid.get_or_insert_with(|| fidl::new_empty!(u64, D));
1608                fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
1609                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1610                {
1611                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
1612                }
1613                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1614                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1615                }
1616            }
1617
1618            next_offset += envelope_size;
1619
1620            // Decode the remaining unknown envelopes.
1621            while next_offset < end_offset {
1622                _next_ordinal_to_read += 1;
1623                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1624                next_offset += envelope_size;
1625            }
1626
1627            Ok(())
1628        }
1629    }
1630
1631    impl VmoReference {
1632        #[inline(always)]
1633        fn max_ordinal_present(&self) -> u64 {
1634            if let Some(_) = self.koid {
1635                return 4;
1636            }
1637            if let Some(_) = self.fd {
1638                return 3;
1639            }
1640            if let Some(_) = self.pid {
1641                return 2;
1642            }
1643            if let Some(_) = self.process_name {
1644                return 1;
1645            }
1646            0
1647        }
1648    }
1649
1650    impl fidl::encoding::ValueTypeMarker for VmoReference {
1651        type Borrowed<'a> = &'a Self;
1652        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1653            value
1654        }
1655    }
1656
1657    unsafe impl fidl::encoding::TypeMarker for VmoReference {
1658        type Owned = Self;
1659
1660        #[inline(always)]
1661        fn inline_align(_context: fidl::encoding::Context) -> usize {
1662            8
1663        }
1664
1665        #[inline(always)]
1666        fn inline_size(_context: fidl::encoding::Context) -> usize {
1667            16
1668        }
1669    }
1670
1671    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<VmoReference, D>
1672        for &VmoReference
1673    {
1674        unsafe fn encode(
1675            self,
1676            encoder: &mut fidl::encoding::Encoder<'_, D>,
1677            offset: usize,
1678            mut depth: fidl::encoding::Depth,
1679        ) -> fidl::Result<()> {
1680            encoder.debug_check_bounds::<VmoReference>(offset);
1681            // Vector header
1682            let max_ordinal: u64 = self.max_ordinal_present();
1683            encoder.write_num(max_ordinal, offset);
1684            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
1685            // Calling encoder.out_of_line_offset(0) is not allowed.
1686            if max_ordinal == 0 {
1687                return Ok(());
1688            }
1689            depth.increment()?;
1690            let envelope_size = 8;
1691            let bytes_len = max_ordinal as usize * envelope_size;
1692            #[allow(unused_variables)]
1693            let offset = encoder.out_of_line_offset(bytes_len);
1694            let mut _prev_end_offset: usize = 0;
1695            if 1 > max_ordinal {
1696                return Ok(());
1697            }
1698
1699            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
1700            // are envelope_size bytes.
1701            let cur_offset: usize = (1 - 1) * envelope_size;
1702
1703            // Zero reserved fields.
1704            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1705
1706            // Safety:
1707            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
1708            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
1709            //   envelope_size bytes, there is always sufficient room.
1710            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedString, D>(
1711                self.process_name.as_ref().map(
1712                    <fidl::encoding::UnboundedString as fidl::encoding::ValueTypeMarker>::borrow,
1713                ),
1714                encoder,
1715                offset + cur_offset,
1716                depth,
1717            )?;
1718
1719            _prev_end_offset = cur_offset + envelope_size;
1720            if 2 > max_ordinal {
1721                return Ok(());
1722            }
1723
1724            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
1725            // are envelope_size bytes.
1726            let cur_offset: usize = (2 - 1) * envelope_size;
1727
1728            // Zero reserved fields.
1729            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1730
1731            // Safety:
1732            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
1733            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
1734            //   envelope_size bytes, there is always sufficient room.
1735            fidl::encoding::encode_in_envelope_optional::<u64, D>(
1736                self.pid.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
1737                encoder,
1738                offset + cur_offset,
1739                depth,
1740            )?;
1741
1742            _prev_end_offset = cur_offset + envelope_size;
1743            if 3 > max_ordinal {
1744                return Ok(());
1745            }
1746
1747            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
1748            // are envelope_size bytes.
1749            let cur_offset: usize = (3 - 1) * envelope_size;
1750
1751            // Zero reserved fields.
1752            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1753
1754            // Safety:
1755            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
1756            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
1757            //   envelope_size bytes, there is always sufficient room.
1758            fidl::encoding::encode_in_envelope_optional::<i32, D>(
1759                self.fd.as_ref().map(<i32 as fidl::encoding::ValueTypeMarker>::borrow),
1760                encoder,
1761                offset + cur_offset,
1762                depth,
1763            )?;
1764
1765            _prev_end_offset = cur_offset + envelope_size;
1766            if 4 > max_ordinal {
1767                return Ok(());
1768            }
1769
1770            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
1771            // are envelope_size bytes.
1772            let cur_offset: usize = (4 - 1) * envelope_size;
1773
1774            // Zero reserved fields.
1775            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1776
1777            // Safety:
1778            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
1779            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
1780            //   envelope_size bytes, there is always sufficient room.
1781            fidl::encoding::encode_in_envelope_optional::<u64, D>(
1782                self.koid.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
1783                encoder,
1784                offset + cur_offset,
1785                depth,
1786            )?;
1787
1788            _prev_end_offset = cur_offset + envelope_size;
1789
1790            Ok(())
1791        }
1792    }
1793
1794    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for VmoReference {
1795        #[inline(always)]
1796        fn new_empty() -> Self {
1797            Self::default()
1798        }
1799
1800        unsafe fn decode(
1801            &mut self,
1802            decoder: &mut fidl::encoding::Decoder<'_, D>,
1803            offset: usize,
1804            mut depth: fidl::encoding::Depth,
1805        ) -> fidl::Result<()> {
1806            decoder.debug_check_bounds::<Self>(offset);
1807            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
1808                None => return Err(fidl::Error::NotNullable),
1809                Some(len) => len,
1810            };
1811            // Calling decoder.out_of_line_offset(0) is not allowed.
1812            if len == 0 {
1813                return Ok(());
1814            };
1815            depth.increment()?;
1816            let envelope_size = 8;
1817            let bytes_len = len * envelope_size;
1818            let offset = decoder.out_of_line_offset(bytes_len)?;
1819            // Decode the envelope for each type.
1820            let mut _next_ordinal_to_read = 0;
1821            let mut next_offset = offset;
1822            let end_offset = offset + bytes_len;
1823            _next_ordinal_to_read += 1;
1824            if next_offset >= end_offset {
1825                return Ok(());
1826            }
1827
1828            // Decode unknown envelopes for gaps in ordinals.
1829            while _next_ordinal_to_read < 1 {
1830                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1831                _next_ordinal_to_read += 1;
1832                next_offset += envelope_size;
1833            }
1834
1835            let next_out_of_line = decoder.next_out_of_line();
1836            let handles_before = decoder.remaining_handles();
1837            if let Some((inlined, num_bytes, num_handles)) =
1838                fidl::encoding::decode_envelope_header(decoder, next_offset)?
1839            {
1840                let member_inline_size =
1841                    <fidl::encoding::UnboundedString as fidl::encoding::TypeMarker>::inline_size(
1842                        decoder.context,
1843                    );
1844                if inlined != (member_inline_size <= 4) {
1845                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
1846                }
1847                let inner_offset;
1848                let mut inner_depth = depth.clone();
1849                if inlined {
1850                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1851                    inner_offset = next_offset;
1852                } else {
1853                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1854                    inner_depth.increment()?;
1855                }
1856                let val_ref = self
1857                    .process_name
1858                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::UnboundedString, D));
1859                fidl::decode!(
1860                    fidl::encoding::UnboundedString,
1861                    D,
1862                    val_ref,
1863                    decoder,
1864                    inner_offset,
1865                    inner_depth
1866                )?;
1867                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1868                {
1869                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
1870                }
1871                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1872                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1873                }
1874            }
1875
1876            next_offset += envelope_size;
1877            _next_ordinal_to_read += 1;
1878            if next_offset >= end_offset {
1879                return Ok(());
1880            }
1881
1882            // Decode unknown envelopes for gaps in ordinals.
1883            while _next_ordinal_to_read < 2 {
1884                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1885                _next_ordinal_to_read += 1;
1886                next_offset += envelope_size;
1887            }
1888
1889            let next_out_of_line = decoder.next_out_of_line();
1890            let handles_before = decoder.remaining_handles();
1891            if let Some((inlined, num_bytes, num_handles)) =
1892                fidl::encoding::decode_envelope_header(decoder, next_offset)?
1893            {
1894                let member_inline_size =
1895                    <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1896                if inlined != (member_inline_size <= 4) {
1897                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
1898                }
1899                let inner_offset;
1900                let mut inner_depth = depth.clone();
1901                if inlined {
1902                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1903                    inner_offset = next_offset;
1904                } else {
1905                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1906                    inner_depth.increment()?;
1907                }
1908                let val_ref = self.pid.get_or_insert_with(|| fidl::new_empty!(u64, D));
1909                fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
1910                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1911                {
1912                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
1913                }
1914                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1915                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1916                }
1917            }
1918
1919            next_offset += envelope_size;
1920            _next_ordinal_to_read += 1;
1921            if next_offset >= end_offset {
1922                return Ok(());
1923            }
1924
1925            // Decode unknown envelopes for gaps in ordinals.
1926            while _next_ordinal_to_read < 3 {
1927                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1928                _next_ordinal_to_read += 1;
1929                next_offset += envelope_size;
1930            }
1931
1932            let next_out_of_line = decoder.next_out_of_line();
1933            let handles_before = decoder.remaining_handles();
1934            if let Some((inlined, num_bytes, num_handles)) =
1935                fidl::encoding::decode_envelope_header(decoder, next_offset)?
1936            {
1937                let member_inline_size =
1938                    <i32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1939                if inlined != (member_inline_size <= 4) {
1940                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
1941                }
1942                let inner_offset;
1943                let mut inner_depth = depth.clone();
1944                if inlined {
1945                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1946                    inner_offset = next_offset;
1947                } else {
1948                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1949                    inner_depth.increment()?;
1950                }
1951                let val_ref = self.fd.get_or_insert_with(|| fidl::new_empty!(i32, D));
1952                fidl::decode!(i32, D, val_ref, decoder, inner_offset, inner_depth)?;
1953                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1954                {
1955                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
1956                }
1957                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1958                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1959                }
1960            }
1961
1962            next_offset += envelope_size;
1963            _next_ordinal_to_read += 1;
1964            if next_offset >= end_offset {
1965                return Ok(());
1966            }
1967
1968            // Decode unknown envelopes for gaps in ordinals.
1969            while _next_ordinal_to_read < 4 {
1970                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1971                _next_ordinal_to_read += 1;
1972                next_offset += envelope_size;
1973            }
1974
1975            let next_out_of_line = decoder.next_out_of_line();
1976            let handles_before = decoder.remaining_handles();
1977            if let Some((inlined, num_bytes, num_handles)) =
1978                fidl::encoding::decode_envelope_header(decoder, next_offset)?
1979            {
1980                let member_inline_size =
1981                    <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1982                if inlined != (member_inline_size <= 4) {
1983                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
1984                }
1985                let inner_offset;
1986                let mut inner_depth = depth.clone();
1987                if inlined {
1988                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1989                    inner_offset = next_offset;
1990                } else {
1991                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1992                    inner_depth.increment()?;
1993                }
1994                let val_ref = self.koid.get_or_insert_with(|| fidl::new_empty!(u64, D));
1995                fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
1996                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1997                {
1998                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
1999                }
2000                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2001                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2002                }
2003            }
2004
2005            next_offset += envelope_size;
2006
2007            // Decode the remaining unknown envelopes.
2008            while next_offset < end_offset {
2009                _next_ordinal_to_read += 1;
2010                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2011                next_offset += envelope_size;
2012            }
2013
2014            Ok(())
2015        }
2016    }
2017}