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