Skip to main content

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    pub f_release: Option<u32>,
359    #[doc(hidden)]
360    pub __source_breaking: fidl::marker::SourceBreaking,
361}
362
363impl fidl::Persistable for IdentifyHostResponse {}
364
365pub mod remote_control_ordinals {
366    pub const ECHO_STRING: u64 = 0x2bbec7ca8a72e82b;
367    pub const LOG_MESSAGE: u64 = 0x3da84acd5bbf3926;
368    pub const IDENTIFY_HOST: u64 = 0x6035e1ab368deee1;
369    pub const CONNECT_CAPABILITY: u64 = 0x3ae7a7c874dceceb;
370    pub const GET_TIME: u64 = 0x3588f31e9067748d;
371    pub const GET_BOOT_TIME: u64 = 0x55706f013cd79ebd;
372}
373
374mod internal {
375    use super::*;
376    unsafe impl fidl::encoding::TypeMarker for CompatibilityState {
377        type Owned = Self;
378
379        #[inline(always)]
380        fn inline_align(_context: fidl::encoding::Context) -> usize {
381            std::mem::align_of::<u32>()
382        }
383
384        #[inline(always)]
385        fn inline_size(_context: fidl::encoding::Context) -> usize {
386            std::mem::size_of::<u32>()
387        }
388
389        #[inline(always)]
390        fn encode_is_copy() -> bool {
391            false
392        }
393
394        #[inline(always)]
395        fn decode_is_copy() -> bool {
396            false
397        }
398    }
399
400    impl fidl::encoding::ValueTypeMarker for CompatibilityState {
401        type Borrowed<'a> = Self;
402        #[inline(always)]
403        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
404            *value
405        }
406    }
407
408    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
409        for CompatibilityState
410    {
411        #[inline]
412        unsafe fn encode(
413            self,
414            encoder: &mut fidl::encoding::Encoder<'_, D>,
415            offset: usize,
416            _depth: fidl::encoding::Depth,
417        ) -> fidl::Result<()> {
418            encoder.debug_check_bounds::<Self>(offset);
419            encoder.write_num(self.into_primitive(), offset);
420            Ok(())
421        }
422    }
423
424    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for CompatibilityState {
425        #[inline(always)]
426        fn new_empty() -> Self {
427            Self::unknown()
428        }
429
430        #[inline]
431        unsafe fn decode(
432            &mut self,
433            decoder: &mut fidl::encoding::Decoder<'_, D>,
434            offset: usize,
435            _depth: fidl::encoding::Depth,
436        ) -> fidl::Result<()> {
437            decoder.debug_check_bounds::<Self>(offset);
438            let prim = decoder.read_num::<u32>(offset);
439
440            *self = Self::from_primitive_allow_unknown(prim);
441            Ok(())
442        }
443    }
444    unsafe impl fidl::encoding::TypeMarker for ConnectCapabilityError {
445        type Owned = Self;
446
447        #[inline(always)]
448        fn inline_align(_context: fidl::encoding::Context) -> usize {
449            std::mem::align_of::<u32>()
450        }
451
452        #[inline(always)]
453        fn inline_size(_context: fidl::encoding::Context) -> usize {
454            std::mem::size_of::<u32>()
455        }
456
457        #[inline(always)]
458        fn encode_is_copy() -> bool {
459            false
460        }
461
462        #[inline(always)]
463        fn decode_is_copy() -> bool {
464            false
465        }
466    }
467
468    impl fidl::encoding::ValueTypeMarker for ConnectCapabilityError {
469        type Borrowed<'a> = Self;
470        #[inline(always)]
471        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
472            *value
473        }
474    }
475
476    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
477        for ConnectCapabilityError
478    {
479        #[inline]
480        unsafe fn encode(
481            self,
482            encoder: &mut fidl::encoding::Encoder<'_, D>,
483            offset: usize,
484            _depth: fidl::encoding::Depth,
485        ) -> fidl::Result<()> {
486            encoder.debug_check_bounds::<Self>(offset);
487            encoder.write_num(self.into_primitive(), offset);
488            Ok(())
489        }
490    }
491
492    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
493        for ConnectCapabilityError
494    {
495        #[inline(always)]
496        fn new_empty() -> Self {
497            Self::unknown()
498        }
499
500        #[inline]
501        unsafe fn decode(
502            &mut self,
503            decoder: &mut fidl::encoding::Decoder<'_, D>,
504            offset: usize,
505            _depth: fidl::encoding::Depth,
506        ) -> fidl::Result<()> {
507            decoder.debug_check_bounds::<Self>(offset);
508            let prim = decoder.read_num::<u32>(offset);
509
510            *self = Self::from_primitive_allow_unknown(prim);
511            Ok(())
512        }
513    }
514    unsafe impl fidl::encoding::TypeMarker for IdentifyHostError {
515        type Owned = Self;
516
517        #[inline(always)]
518        fn inline_align(_context: fidl::encoding::Context) -> usize {
519            std::mem::align_of::<u32>()
520        }
521
522        #[inline(always)]
523        fn inline_size(_context: fidl::encoding::Context) -> usize {
524            std::mem::size_of::<u32>()
525        }
526
527        #[inline(always)]
528        fn encode_is_copy() -> bool {
529            false
530        }
531
532        #[inline(always)]
533        fn decode_is_copy() -> bool {
534            false
535        }
536    }
537
538    impl fidl::encoding::ValueTypeMarker for IdentifyHostError {
539        type Borrowed<'a> = Self;
540        #[inline(always)]
541        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
542            *value
543        }
544    }
545
546    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
547        for IdentifyHostError
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::<Self>(offset);
557            encoder.write_num(self.into_primitive(), offset);
558            Ok(())
559        }
560    }
561
562    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for IdentifyHostError {
563        #[inline(always)]
564        fn new_empty() -> Self {
565            Self::unknown()
566        }
567
568        #[inline]
569        unsafe fn decode(
570            &mut self,
571            decoder: &mut fidl::encoding::Decoder<'_, D>,
572            offset: usize,
573            _depth: fidl::encoding::Depth,
574        ) -> fidl::Result<()> {
575            decoder.debug_check_bounds::<Self>(offset);
576            let prim = decoder.read_num::<u32>(offset);
577
578            *self = Self::from_primitive_allow_unknown(prim);
579            Ok(())
580        }
581    }
582    unsafe impl fidl::encoding::TypeMarker for TunnelError {
583        type Owned = Self;
584
585        #[inline(always)]
586        fn inline_align(_context: fidl::encoding::Context) -> usize {
587            std::mem::align_of::<u32>()
588        }
589
590        #[inline(always)]
591        fn inline_size(_context: fidl::encoding::Context) -> usize {
592            std::mem::size_of::<u32>()
593        }
594
595        #[inline(always)]
596        fn encode_is_copy() -> bool {
597            false
598        }
599
600        #[inline(always)]
601        fn decode_is_copy() -> bool {
602            false
603        }
604    }
605
606    impl fidl::encoding::ValueTypeMarker for TunnelError {
607        type Borrowed<'a> = Self;
608        #[inline(always)]
609        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
610            *value
611        }
612    }
613
614    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for TunnelError {
615        #[inline]
616        unsafe fn encode(
617            self,
618            encoder: &mut fidl::encoding::Encoder<'_, D>,
619            offset: usize,
620            _depth: fidl::encoding::Depth,
621        ) -> fidl::Result<()> {
622            encoder.debug_check_bounds::<Self>(offset);
623            encoder.write_num(self.into_primitive(), offset);
624            Ok(())
625        }
626    }
627
628    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for TunnelError {
629        #[inline(always)]
630        fn new_empty() -> Self {
631            Self::unknown()
632        }
633
634        #[inline]
635        unsafe fn decode(
636            &mut self,
637            decoder: &mut fidl::encoding::Decoder<'_, D>,
638            offset: usize,
639            _depth: fidl::encoding::Depth,
640        ) -> fidl::Result<()> {
641            decoder.debug_check_bounds::<Self>(offset);
642            let prim = decoder.read_num::<u32>(offset);
643
644            *self = Self::from_primitive_allow_unknown(prim);
645            Ok(())
646        }
647    }
648
649    impl fidl::encoding::ValueTypeMarker for CompatibilityInfo {
650        type Borrowed<'a> = &'a Self;
651        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
652            value
653        }
654    }
655
656    unsafe impl fidl::encoding::TypeMarker for CompatibilityInfo {
657        type Owned = Self;
658
659        #[inline(always)]
660        fn inline_align(_context: fidl::encoding::Context) -> usize {
661            8
662        }
663
664        #[inline(always)]
665        fn inline_size(_context: fidl::encoding::Context) -> usize {
666            32
667        }
668    }
669
670    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<CompatibilityInfo, D>
671        for &CompatibilityInfo
672    {
673        #[inline]
674        unsafe fn encode(
675            self,
676            encoder: &mut fidl::encoding::Encoder<'_, D>,
677            offset: usize,
678            _depth: fidl::encoding::Depth,
679        ) -> fidl::Result<()> {
680            encoder.debug_check_bounds::<CompatibilityInfo>(offset);
681            // Delegate to tuple encoding.
682            fidl::encoding::Encode::<CompatibilityInfo, D>::encode(
683                (
684                    <CompatibilityState as fidl::encoding::ValueTypeMarker>::borrow(&self.state),
685                    <u64 as fidl::encoding::ValueTypeMarker>::borrow(&self.platform_abi),
686                    <fidl::encoding::UnboundedString as fidl::encoding::ValueTypeMarker>::borrow(
687                        &self.message,
688                    ),
689                ),
690                encoder,
691                offset,
692                _depth,
693            )
694        }
695    }
696    unsafe impl<
697        D: fidl::encoding::ResourceDialect,
698        T0: fidl::encoding::Encode<CompatibilityState, D>,
699        T1: fidl::encoding::Encode<u64, D>,
700        T2: fidl::encoding::Encode<fidl::encoding::UnboundedString, D>,
701    > fidl::encoding::Encode<CompatibilityInfo, D> for (T0, T1, T2)
702    {
703        #[inline]
704        unsafe fn encode(
705            self,
706            encoder: &mut fidl::encoding::Encoder<'_, D>,
707            offset: usize,
708            depth: fidl::encoding::Depth,
709        ) -> fidl::Result<()> {
710            encoder.debug_check_bounds::<CompatibilityInfo>(offset);
711            // Zero out padding regions. There's no need to apply masks
712            // because the unmasked parts will be overwritten by fields.
713            unsafe {
714                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(0);
715                (ptr as *mut u64).write_unaligned(0);
716            }
717            // Write the fields.
718            self.0.encode(encoder, offset + 0, depth)?;
719            self.1.encode(encoder, offset + 8, depth)?;
720            self.2.encode(encoder, offset + 16, depth)?;
721            Ok(())
722        }
723    }
724
725    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for CompatibilityInfo {
726        #[inline(always)]
727        fn new_empty() -> Self {
728            Self {
729                state: fidl::new_empty!(CompatibilityState, D),
730                platform_abi: fidl::new_empty!(u64, D),
731                message: fidl::new_empty!(fidl::encoding::UnboundedString, D),
732            }
733        }
734
735        #[inline]
736        unsafe fn decode(
737            &mut self,
738            decoder: &mut fidl::encoding::Decoder<'_, D>,
739            offset: usize,
740            _depth: fidl::encoding::Depth,
741        ) -> fidl::Result<()> {
742            decoder.debug_check_bounds::<Self>(offset);
743            // Verify that padding bytes are zero.
744            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(0) };
745            let padval = unsafe { (ptr as *const u64).read_unaligned() };
746            let mask = 0xffffffff00000000u64;
747            let maskedval = padval & mask;
748            if maskedval != 0 {
749                return Err(fidl::Error::NonZeroPadding {
750                    padding_start: offset + 0 + ((mask as u64).trailing_zeros() / 8) as usize,
751                });
752            }
753            fidl::decode!(CompatibilityState, D, &mut self.state, decoder, offset + 0, _depth)?;
754            fidl::decode!(u64, D, &mut self.platform_abi, decoder, offset + 8, _depth)?;
755            fidl::decode!(
756                fidl::encoding::UnboundedString,
757                D,
758                &mut self.message,
759                decoder,
760                offset + 16,
761                _depth
762            )?;
763            Ok(())
764        }
765    }
766
767    impl fidl::encoding::ValueTypeMarker for RemoteControlEchoStringRequest {
768        type Borrowed<'a> = &'a Self;
769        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
770            value
771        }
772    }
773
774    unsafe impl fidl::encoding::TypeMarker for RemoteControlEchoStringRequest {
775        type Owned = Self;
776
777        #[inline(always)]
778        fn inline_align(_context: fidl::encoding::Context) -> usize {
779            8
780        }
781
782        #[inline(always)]
783        fn inline_size(_context: fidl::encoding::Context) -> usize {
784            16
785        }
786    }
787
788    unsafe impl<D: fidl::encoding::ResourceDialect>
789        fidl::encoding::Encode<RemoteControlEchoStringRequest, D>
790        for &RemoteControlEchoStringRequest
791    {
792        #[inline]
793        unsafe fn encode(
794            self,
795            encoder: &mut fidl::encoding::Encoder<'_, D>,
796            offset: usize,
797            _depth: fidl::encoding::Depth,
798        ) -> fidl::Result<()> {
799            encoder.debug_check_bounds::<RemoteControlEchoStringRequest>(offset);
800            // Delegate to tuple encoding.
801            fidl::encoding::Encode::<RemoteControlEchoStringRequest, D>::encode(
802                (<fidl::encoding::BoundedString<255> as fidl::encoding::ValueTypeMarker>::borrow(
803                    &self.value,
804                ),),
805                encoder,
806                offset,
807                _depth,
808            )
809        }
810    }
811    unsafe impl<
812        D: fidl::encoding::ResourceDialect,
813        T0: fidl::encoding::Encode<fidl::encoding::BoundedString<255>, D>,
814    > fidl::encoding::Encode<RemoteControlEchoStringRequest, D> for (T0,)
815    {
816        #[inline]
817        unsafe fn encode(
818            self,
819            encoder: &mut fidl::encoding::Encoder<'_, D>,
820            offset: usize,
821            depth: fidl::encoding::Depth,
822        ) -> fidl::Result<()> {
823            encoder.debug_check_bounds::<RemoteControlEchoStringRequest>(offset);
824            // Zero out padding regions. There's no need to apply masks
825            // because the unmasked parts will be overwritten by fields.
826            // Write the fields.
827            self.0.encode(encoder, offset + 0, depth)?;
828            Ok(())
829        }
830    }
831
832    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
833        for RemoteControlEchoStringRequest
834    {
835        #[inline(always)]
836        fn new_empty() -> Self {
837            Self { value: fidl::new_empty!(fidl::encoding::BoundedString<255>, D) }
838        }
839
840        #[inline]
841        unsafe fn decode(
842            &mut self,
843            decoder: &mut fidl::encoding::Decoder<'_, D>,
844            offset: usize,
845            _depth: fidl::encoding::Depth,
846        ) -> fidl::Result<()> {
847            decoder.debug_check_bounds::<Self>(offset);
848            // Verify that padding bytes are zero.
849            fidl::decode!(
850                fidl::encoding::BoundedString<255>,
851                D,
852                &mut self.value,
853                decoder,
854                offset + 0,
855                _depth
856            )?;
857            Ok(())
858        }
859    }
860
861    impl fidl::encoding::ValueTypeMarker for RemoteControlEchoStringResponse {
862        type Borrowed<'a> = &'a Self;
863        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
864            value
865        }
866    }
867
868    unsafe impl fidl::encoding::TypeMarker for RemoteControlEchoStringResponse {
869        type Owned = Self;
870
871        #[inline(always)]
872        fn inline_align(_context: fidl::encoding::Context) -> usize {
873            8
874        }
875
876        #[inline(always)]
877        fn inline_size(_context: fidl::encoding::Context) -> usize {
878            16
879        }
880    }
881
882    unsafe impl<D: fidl::encoding::ResourceDialect>
883        fidl::encoding::Encode<RemoteControlEchoStringResponse, D>
884        for &RemoteControlEchoStringResponse
885    {
886        #[inline]
887        unsafe fn encode(
888            self,
889            encoder: &mut fidl::encoding::Encoder<'_, D>,
890            offset: usize,
891            _depth: fidl::encoding::Depth,
892        ) -> fidl::Result<()> {
893            encoder.debug_check_bounds::<RemoteControlEchoStringResponse>(offset);
894            // Delegate to tuple encoding.
895            fidl::encoding::Encode::<RemoteControlEchoStringResponse, D>::encode(
896                (<fidl::encoding::BoundedString<255> as fidl::encoding::ValueTypeMarker>::borrow(
897                    &self.response,
898                ),),
899                encoder,
900                offset,
901                _depth,
902            )
903        }
904    }
905    unsafe impl<
906        D: fidl::encoding::ResourceDialect,
907        T0: fidl::encoding::Encode<fidl::encoding::BoundedString<255>, D>,
908    > fidl::encoding::Encode<RemoteControlEchoStringResponse, D> for (T0,)
909    {
910        #[inline]
911        unsafe fn encode(
912            self,
913            encoder: &mut fidl::encoding::Encoder<'_, D>,
914            offset: usize,
915            depth: fidl::encoding::Depth,
916        ) -> fidl::Result<()> {
917            encoder.debug_check_bounds::<RemoteControlEchoStringResponse>(offset);
918            // Zero out padding regions. There's no need to apply masks
919            // because the unmasked parts will be overwritten by fields.
920            // Write the fields.
921            self.0.encode(encoder, offset + 0, depth)?;
922            Ok(())
923        }
924    }
925
926    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
927        for RemoteControlEchoStringResponse
928    {
929        #[inline(always)]
930        fn new_empty() -> Self {
931            Self { response: fidl::new_empty!(fidl::encoding::BoundedString<255>, D) }
932        }
933
934        #[inline]
935        unsafe fn decode(
936            &mut self,
937            decoder: &mut fidl::encoding::Decoder<'_, D>,
938            offset: usize,
939            _depth: fidl::encoding::Depth,
940        ) -> fidl::Result<()> {
941            decoder.debug_check_bounds::<Self>(offset);
942            // Verify that padding bytes are zero.
943            fidl::decode!(
944                fidl::encoding::BoundedString<255>,
945                D,
946                &mut self.response,
947                decoder,
948                offset + 0,
949                _depth
950            )?;
951            Ok(())
952        }
953    }
954
955    impl fidl::encoding::ValueTypeMarker for RemoteControlGetBootTimeResponse {
956        type Borrowed<'a> = &'a Self;
957        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
958            value
959        }
960    }
961
962    unsafe impl fidl::encoding::TypeMarker for RemoteControlGetBootTimeResponse {
963        type Owned = Self;
964
965        #[inline(always)]
966        fn inline_align(_context: fidl::encoding::Context) -> usize {
967            8
968        }
969
970        #[inline(always)]
971        fn inline_size(_context: fidl::encoding::Context) -> usize {
972            8
973        }
974        #[inline(always)]
975        fn encode_is_copy() -> bool {
976            true
977        }
978
979        #[inline(always)]
980        fn decode_is_copy() -> bool {
981            true
982        }
983    }
984
985    unsafe impl<D: fidl::encoding::ResourceDialect>
986        fidl::encoding::Encode<RemoteControlGetBootTimeResponse, D>
987        for &RemoteControlGetBootTimeResponse
988    {
989        #[inline]
990        unsafe fn encode(
991            self,
992            encoder: &mut fidl::encoding::Encoder<'_, D>,
993            offset: usize,
994            _depth: fidl::encoding::Depth,
995        ) -> fidl::Result<()> {
996            encoder.debug_check_bounds::<RemoteControlGetBootTimeResponse>(offset);
997            unsafe {
998                // Copy the object into the buffer.
999                let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
1000                (buf_ptr as *mut RemoteControlGetBootTimeResponse)
1001                    .write_unaligned((self as *const RemoteControlGetBootTimeResponse).read());
1002                // Zero out padding regions. Unlike `fidl_struct_impl_noncopy!`, this must be
1003                // done second because the memcpy will write garbage to these bytes.
1004            }
1005            Ok(())
1006        }
1007    }
1008    unsafe impl<
1009        D: fidl::encoding::ResourceDialect,
1010        T0: fidl::encoding::Encode<fidl::BootInstant, D>,
1011    > fidl::encoding::Encode<RemoteControlGetBootTimeResponse, D> for (T0,)
1012    {
1013        #[inline]
1014        unsafe fn encode(
1015            self,
1016            encoder: &mut fidl::encoding::Encoder<'_, D>,
1017            offset: usize,
1018            depth: fidl::encoding::Depth,
1019        ) -> fidl::Result<()> {
1020            encoder.debug_check_bounds::<RemoteControlGetBootTimeResponse>(offset);
1021            // Zero out padding regions. There's no need to apply masks
1022            // because the unmasked parts will be overwritten by fields.
1023            // Write the fields.
1024            self.0.encode(encoder, offset + 0, depth)?;
1025            Ok(())
1026        }
1027    }
1028
1029    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1030        for RemoteControlGetBootTimeResponse
1031    {
1032        #[inline(always)]
1033        fn new_empty() -> Self {
1034            Self { time: fidl::new_empty!(fidl::BootInstant, D) }
1035        }
1036
1037        #[inline]
1038        unsafe fn decode(
1039            &mut self,
1040            decoder: &mut fidl::encoding::Decoder<'_, D>,
1041            offset: usize,
1042            _depth: fidl::encoding::Depth,
1043        ) -> fidl::Result<()> {
1044            decoder.debug_check_bounds::<Self>(offset);
1045            let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
1046            // Verify that padding bytes are zero.
1047            // Copy from the buffer into the object.
1048            unsafe {
1049                std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 8);
1050            }
1051            Ok(())
1052        }
1053    }
1054
1055    impl fidl::encoding::ValueTypeMarker for RemoteControlGetTimeResponse {
1056        type Borrowed<'a> = &'a Self;
1057        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1058            value
1059        }
1060    }
1061
1062    unsafe impl fidl::encoding::TypeMarker for RemoteControlGetTimeResponse {
1063        type Owned = Self;
1064
1065        #[inline(always)]
1066        fn inline_align(_context: fidl::encoding::Context) -> usize {
1067            8
1068        }
1069
1070        #[inline(always)]
1071        fn inline_size(_context: fidl::encoding::Context) -> usize {
1072            8
1073        }
1074        #[inline(always)]
1075        fn encode_is_copy() -> bool {
1076            true
1077        }
1078
1079        #[inline(always)]
1080        fn decode_is_copy() -> bool {
1081            true
1082        }
1083    }
1084
1085    unsafe impl<D: fidl::encoding::ResourceDialect>
1086        fidl::encoding::Encode<RemoteControlGetTimeResponse, D> for &RemoteControlGetTimeResponse
1087    {
1088        #[inline]
1089        unsafe fn encode(
1090            self,
1091            encoder: &mut fidl::encoding::Encoder<'_, D>,
1092            offset: usize,
1093            _depth: fidl::encoding::Depth,
1094        ) -> fidl::Result<()> {
1095            encoder.debug_check_bounds::<RemoteControlGetTimeResponse>(offset);
1096            unsafe {
1097                // Copy the object into the buffer.
1098                let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
1099                (buf_ptr as *mut RemoteControlGetTimeResponse)
1100                    .write_unaligned((self as *const RemoteControlGetTimeResponse).read());
1101                // Zero out padding regions. Unlike `fidl_struct_impl_noncopy!`, this must be
1102                // done second because the memcpy will write garbage to these bytes.
1103            }
1104            Ok(())
1105        }
1106    }
1107    unsafe impl<
1108        D: fidl::encoding::ResourceDialect,
1109        T0: fidl::encoding::Encode<fidl::MonotonicInstant, D>,
1110    > fidl::encoding::Encode<RemoteControlGetTimeResponse, D> for (T0,)
1111    {
1112        #[inline]
1113        unsafe fn encode(
1114            self,
1115            encoder: &mut fidl::encoding::Encoder<'_, D>,
1116            offset: usize,
1117            depth: fidl::encoding::Depth,
1118        ) -> fidl::Result<()> {
1119            encoder.debug_check_bounds::<RemoteControlGetTimeResponse>(offset);
1120            // Zero out padding regions. There's no need to apply masks
1121            // because the unmasked parts will be overwritten by fields.
1122            // Write the fields.
1123            self.0.encode(encoder, offset + 0, depth)?;
1124            Ok(())
1125        }
1126    }
1127
1128    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1129        for RemoteControlGetTimeResponse
1130    {
1131        #[inline(always)]
1132        fn new_empty() -> Self {
1133            Self { time: fidl::new_empty!(fidl::MonotonicInstant, D) }
1134        }
1135
1136        #[inline]
1137        unsafe fn decode(
1138            &mut self,
1139            decoder: &mut fidl::encoding::Decoder<'_, D>,
1140            offset: usize,
1141            _depth: fidl::encoding::Depth,
1142        ) -> fidl::Result<()> {
1143            decoder.debug_check_bounds::<Self>(offset);
1144            let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
1145            // Verify that padding bytes are zero.
1146            // Copy from the buffer into the object.
1147            unsafe {
1148                std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 8);
1149            }
1150            Ok(())
1151        }
1152    }
1153
1154    impl fidl::encoding::ValueTypeMarker for RemoteControlLogMessageRequest {
1155        type Borrowed<'a> = &'a Self;
1156        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1157            value
1158        }
1159    }
1160
1161    unsafe impl fidl::encoding::TypeMarker for RemoteControlLogMessageRequest {
1162        type Owned = Self;
1163
1164        #[inline(always)]
1165        fn inline_align(_context: fidl::encoding::Context) -> usize {
1166            8
1167        }
1168
1169        #[inline(always)]
1170        fn inline_size(_context: fidl::encoding::Context) -> usize {
1171            40
1172        }
1173    }
1174
1175    unsafe impl<D: fidl::encoding::ResourceDialect>
1176        fidl::encoding::Encode<RemoteControlLogMessageRequest, D>
1177        for &RemoteControlLogMessageRequest
1178    {
1179        #[inline]
1180        unsafe fn encode(
1181            self,
1182            encoder: &mut fidl::encoding::Encoder<'_, D>,
1183            offset: usize,
1184            _depth: fidl::encoding::Depth,
1185        ) -> fidl::Result<()> {
1186            encoder.debug_check_bounds::<RemoteControlLogMessageRequest>(offset);
1187            // Delegate to tuple encoding.
1188            fidl::encoding::Encode::<RemoteControlLogMessageRequest, D>::encode(
1189                (
1190                    <fidl::encoding::UnboundedString as fidl::encoding::ValueTypeMarker>::borrow(&self.tag),
1191                    <fidl::encoding::UnboundedString as fidl::encoding::ValueTypeMarker>::borrow(&self.message),
1192                    <fidl_fuchsia_diagnostics_types_common::Severity as fidl::encoding::ValueTypeMarker>::borrow(&self.severity),
1193                ),
1194                encoder, offset, _depth
1195            )
1196        }
1197    }
1198    unsafe impl<
1199        D: fidl::encoding::ResourceDialect,
1200        T0: fidl::encoding::Encode<fidl::encoding::UnboundedString, D>,
1201        T1: fidl::encoding::Encode<fidl::encoding::UnboundedString, D>,
1202        T2: fidl::encoding::Encode<fidl_fuchsia_diagnostics_types_common::Severity, D>,
1203    > fidl::encoding::Encode<RemoteControlLogMessageRequest, D> for (T0, T1, T2)
1204    {
1205        #[inline]
1206        unsafe fn encode(
1207            self,
1208            encoder: &mut fidl::encoding::Encoder<'_, D>,
1209            offset: usize,
1210            depth: fidl::encoding::Depth,
1211        ) -> fidl::Result<()> {
1212            encoder.debug_check_bounds::<RemoteControlLogMessageRequest>(offset);
1213            // Zero out padding regions. There's no need to apply masks
1214            // because the unmasked parts will be overwritten by fields.
1215            unsafe {
1216                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(32);
1217                (ptr as *mut u64).write_unaligned(0);
1218            }
1219            // Write the fields.
1220            self.0.encode(encoder, offset + 0, depth)?;
1221            self.1.encode(encoder, offset + 16, depth)?;
1222            self.2.encode(encoder, offset + 32, depth)?;
1223            Ok(())
1224        }
1225    }
1226
1227    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1228        for RemoteControlLogMessageRequest
1229    {
1230        #[inline(always)]
1231        fn new_empty() -> Self {
1232            Self {
1233                tag: fidl::new_empty!(fidl::encoding::UnboundedString, D),
1234                message: fidl::new_empty!(fidl::encoding::UnboundedString, D),
1235                severity: fidl::new_empty!(fidl_fuchsia_diagnostics_types_common::Severity, D),
1236            }
1237        }
1238
1239        #[inline]
1240        unsafe fn decode(
1241            &mut self,
1242            decoder: &mut fidl::encoding::Decoder<'_, D>,
1243            offset: usize,
1244            _depth: fidl::encoding::Depth,
1245        ) -> fidl::Result<()> {
1246            decoder.debug_check_bounds::<Self>(offset);
1247            // Verify that padding bytes are zero.
1248            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(32) };
1249            let padval = unsafe { (ptr as *const u64).read_unaligned() };
1250            let mask = 0xffffffffffffff00u64;
1251            let maskedval = padval & mask;
1252            if maskedval != 0 {
1253                return Err(fidl::Error::NonZeroPadding {
1254                    padding_start: offset + 32 + ((mask as u64).trailing_zeros() / 8) as usize,
1255                });
1256            }
1257            fidl::decode!(
1258                fidl::encoding::UnboundedString,
1259                D,
1260                &mut self.tag,
1261                decoder,
1262                offset + 0,
1263                _depth
1264            )?;
1265            fidl::decode!(
1266                fidl::encoding::UnboundedString,
1267                D,
1268                &mut self.message,
1269                decoder,
1270                offset + 16,
1271                _depth
1272            )?;
1273            fidl::decode!(
1274                fidl_fuchsia_diagnostics_types_common::Severity,
1275                D,
1276                &mut self.severity,
1277                decoder,
1278                offset + 32,
1279                _depth
1280            )?;
1281            Ok(())
1282        }
1283    }
1284
1285    impl fidl::encoding::ValueTypeMarker for RemoteControlIdentifyHostResponse {
1286        type Borrowed<'a> = &'a Self;
1287        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1288            value
1289        }
1290    }
1291
1292    unsafe impl fidl::encoding::TypeMarker for RemoteControlIdentifyHostResponse {
1293        type Owned = Self;
1294
1295        #[inline(always)]
1296        fn inline_align(_context: fidl::encoding::Context) -> usize {
1297            8
1298        }
1299
1300        #[inline(always)]
1301        fn inline_size(_context: fidl::encoding::Context) -> usize {
1302            16
1303        }
1304    }
1305
1306    unsafe impl<D: fidl::encoding::ResourceDialect>
1307        fidl::encoding::Encode<RemoteControlIdentifyHostResponse, D>
1308        for &RemoteControlIdentifyHostResponse
1309    {
1310        #[inline]
1311        unsafe fn encode(
1312            self,
1313            encoder: &mut fidl::encoding::Encoder<'_, D>,
1314            offset: usize,
1315            _depth: fidl::encoding::Depth,
1316        ) -> fidl::Result<()> {
1317            encoder.debug_check_bounds::<RemoteControlIdentifyHostResponse>(offset);
1318            // Delegate to tuple encoding.
1319            fidl::encoding::Encode::<RemoteControlIdentifyHostResponse, D>::encode(
1320                (<IdentifyHostResponse as fidl::encoding::ValueTypeMarker>::borrow(&self.response),),
1321                encoder,
1322                offset,
1323                _depth,
1324            )
1325        }
1326    }
1327    unsafe impl<
1328        D: fidl::encoding::ResourceDialect,
1329        T0: fidl::encoding::Encode<IdentifyHostResponse, D>,
1330    > fidl::encoding::Encode<RemoteControlIdentifyHostResponse, D> for (T0,)
1331    {
1332        #[inline]
1333        unsafe fn encode(
1334            self,
1335            encoder: &mut fidl::encoding::Encoder<'_, D>,
1336            offset: usize,
1337            depth: fidl::encoding::Depth,
1338        ) -> fidl::Result<()> {
1339            encoder.debug_check_bounds::<RemoteControlIdentifyHostResponse>(offset);
1340            // Zero out padding regions. There's no need to apply masks
1341            // because the unmasked parts will be overwritten by fields.
1342            // Write the fields.
1343            self.0.encode(encoder, offset + 0, depth)?;
1344            Ok(())
1345        }
1346    }
1347
1348    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1349        for RemoteControlIdentifyHostResponse
1350    {
1351        #[inline(always)]
1352        fn new_empty() -> Self {
1353            Self { response: fidl::new_empty!(IdentifyHostResponse, D) }
1354        }
1355
1356        #[inline]
1357        unsafe fn decode(
1358            &mut self,
1359            decoder: &mut fidl::encoding::Decoder<'_, D>,
1360            offset: usize,
1361            _depth: fidl::encoding::Depth,
1362        ) -> fidl::Result<()> {
1363            decoder.debug_check_bounds::<Self>(offset);
1364            // Verify that padding bytes are zero.
1365            fidl::decode!(
1366                IdentifyHostResponse,
1367                D,
1368                &mut self.response,
1369                decoder,
1370                offset + 0,
1371                _depth
1372            )?;
1373            Ok(())
1374        }
1375    }
1376
1377    impl IdentifyHostResponse {
1378        #[inline(always)]
1379        fn max_ordinal_present(&self) -> u64 {
1380            if let Some(_) = self.f_release {
1381                return 10;
1382            }
1383            if let Some(_) = self.boot_id {
1384                return 9;
1385            }
1386            if let Some(_) = self.addresses {
1387                return 8;
1388            }
1389            if let Some(_) = self.board_config {
1390                return 7;
1391            }
1392            if let Some(_) = self.product_config {
1393                return 6;
1394            }
1395            if let Some(_) = self.ids {
1396                return 5;
1397            }
1398            if let Some(_) = self.serial_number {
1399                return 4;
1400            }
1401            if let Some(_) = self.boot_timestamp_nanos {
1402                return 3;
1403            }
1404            if let Some(_) = self.nodename {
1405                return 2;
1406            }
1407            0
1408        }
1409    }
1410
1411    impl fidl::encoding::ValueTypeMarker for IdentifyHostResponse {
1412        type Borrowed<'a> = &'a Self;
1413        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1414            value
1415        }
1416    }
1417
1418    unsafe impl fidl::encoding::TypeMarker for IdentifyHostResponse {
1419        type Owned = Self;
1420
1421        #[inline(always)]
1422        fn inline_align(_context: fidl::encoding::Context) -> usize {
1423            8
1424        }
1425
1426        #[inline(always)]
1427        fn inline_size(_context: fidl::encoding::Context) -> usize {
1428            16
1429        }
1430    }
1431
1432    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<IdentifyHostResponse, D>
1433        for &IdentifyHostResponse
1434    {
1435        unsafe fn encode(
1436            self,
1437            encoder: &mut fidl::encoding::Encoder<'_, D>,
1438            offset: usize,
1439            mut depth: fidl::encoding::Depth,
1440        ) -> fidl::Result<()> {
1441            encoder.debug_check_bounds::<IdentifyHostResponse>(offset);
1442            // Vector header
1443            let max_ordinal: u64 = self.max_ordinal_present();
1444            encoder.write_num(max_ordinal, offset);
1445            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
1446            // Calling encoder.out_of_line_offset(0) is not allowed.
1447            if max_ordinal == 0 {
1448                return Ok(());
1449            }
1450            depth.increment()?;
1451            let envelope_size = 8;
1452            let bytes_len = max_ordinal as usize * envelope_size;
1453            #[allow(unused_variables)]
1454            let offset = encoder.out_of_line_offset(bytes_len);
1455            let mut _prev_end_offset: usize = 0;
1456            if 2 > max_ordinal {
1457                return Ok(());
1458            }
1459
1460            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
1461            // are envelope_size bytes.
1462            let cur_offset: usize = (2 - 1) * envelope_size;
1463
1464            // Zero reserved fields.
1465            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1466
1467            // Safety:
1468            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
1469            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
1470            //   envelope_size bytes, there is always sufficient room.
1471            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<255>, D>(
1472                self.nodename.as_ref().map(
1473                    <fidl::encoding::BoundedString<255> as fidl::encoding::ValueTypeMarker>::borrow,
1474                ),
1475                encoder,
1476                offset + cur_offset,
1477                depth,
1478            )?;
1479
1480            _prev_end_offset = cur_offset + envelope_size;
1481            if 3 > max_ordinal {
1482                return Ok(());
1483            }
1484
1485            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
1486            // are envelope_size bytes.
1487            let cur_offset: usize = (3 - 1) * envelope_size;
1488
1489            // Zero reserved fields.
1490            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1491
1492            // Safety:
1493            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
1494            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
1495            //   envelope_size bytes, there is always sufficient room.
1496            fidl::encoding::encode_in_envelope_optional::<u64, D>(
1497                self.boot_timestamp_nanos
1498                    .as_ref()
1499                    .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
1500                encoder,
1501                offset + cur_offset,
1502                depth,
1503            )?;
1504
1505            _prev_end_offset = cur_offset + envelope_size;
1506            if 4 > max_ordinal {
1507                return Ok(());
1508            }
1509
1510            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
1511            // are envelope_size bytes.
1512            let cur_offset: usize = (4 - 1) * envelope_size;
1513
1514            // Zero reserved fields.
1515            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1516
1517            // Safety:
1518            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
1519            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
1520            //   envelope_size bytes, there is always sufficient room.
1521            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<255>, D>(
1522                self.serial_number.as_ref().map(
1523                    <fidl::encoding::BoundedString<255> as fidl::encoding::ValueTypeMarker>::borrow,
1524                ),
1525                encoder,
1526                offset + cur_offset,
1527                depth,
1528            )?;
1529
1530            _prev_end_offset = cur_offset + envelope_size;
1531            if 5 > max_ordinal {
1532                return Ok(());
1533            }
1534
1535            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
1536            // are envelope_size bytes.
1537            let cur_offset: usize = (5 - 1) * envelope_size;
1538
1539            // Zero reserved fields.
1540            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1541
1542            // Safety:
1543            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
1544            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
1545            //   envelope_size bytes, there is always sufficient room.
1546            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<u64>, D>(
1547            self.ids.as_ref().map(<fidl::encoding::UnboundedVector<u64> as fidl::encoding::ValueTypeMarker>::borrow),
1548            encoder, offset + cur_offset, depth
1549        )?;
1550
1551            _prev_end_offset = cur_offset + envelope_size;
1552            if 6 > max_ordinal {
1553                return Ok(());
1554            }
1555
1556            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
1557            // are envelope_size bytes.
1558            let cur_offset: usize = (6 - 1) * envelope_size;
1559
1560            // Zero reserved fields.
1561            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1562
1563            // Safety:
1564            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
1565            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
1566            //   envelope_size bytes, there is always sufficient room.
1567            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<100>, D>(
1568                self.product_config.as_ref().map(
1569                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow,
1570                ),
1571                encoder,
1572                offset + cur_offset,
1573                depth,
1574            )?;
1575
1576            _prev_end_offset = cur_offset + envelope_size;
1577            if 7 > max_ordinal {
1578                return Ok(());
1579            }
1580
1581            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
1582            // are envelope_size bytes.
1583            let cur_offset: usize = (7 - 1) * envelope_size;
1584
1585            // Zero reserved fields.
1586            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1587
1588            // Safety:
1589            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
1590            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
1591            //   envelope_size bytes, there is always sufficient room.
1592            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<100>, D>(
1593                self.board_config.as_ref().map(
1594                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow,
1595                ),
1596                encoder,
1597                offset + cur_offset,
1598                depth,
1599            )?;
1600
1601            _prev_end_offset = cur_offset + envelope_size;
1602            if 8 > max_ordinal {
1603                return Ok(());
1604            }
1605
1606            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
1607            // are envelope_size bytes.
1608            let cur_offset: usize = (8 - 1) * envelope_size;
1609
1610            // Zero reserved fields.
1611            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1612
1613            // Safety:
1614            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
1615            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
1616            //   envelope_size bytes, there is always sufficient room.
1617            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<fidl_fuchsia_net_common::Subnet>, D>(
1618            self.addresses.as_ref().map(<fidl::encoding::UnboundedVector<fidl_fuchsia_net_common::Subnet> as fidl::encoding::ValueTypeMarker>::borrow),
1619            encoder, offset + cur_offset, depth
1620        )?;
1621
1622            _prev_end_offset = cur_offset + envelope_size;
1623            if 9 > max_ordinal {
1624                return Ok(());
1625            }
1626
1627            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
1628            // are envelope_size bytes.
1629            let cur_offset: usize = (9 - 1) * envelope_size;
1630
1631            // Zero reserved fields.
1632            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1633
1634            // Safety:
1635            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
1636            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
1637            //   envelope_size bytes, there is always sufficient room.
1638            fidl::encoding::encode_in_envelope_optional::<u64, D>(
1639                self.boot_id.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
1640                encoder,
1641                offset + cur_offset,
1642                depth,
1643            )?;
1644
1645            _prev_end_offset = cur_offset + envelope_size;
1646            if 10 > max_ordinal {
1647                return Ok(());
1648            }
1649
1650            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
1651            // are envelope_size bytes.
1652            let cur_offset: usize = (10 - 1) * envelope_size;
1653
1654            // Zero reserved fields.
1655            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1656
1657            // Safety:
1658            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
1659            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
1660            //   envelope_size bytes, there is always sufficient room.
1661            fidl::encoding::encode_in_envelope_optional::<u32, D>(
1662                self.f_release.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
1663                encoder,
1664                offset + cur_offset,
1665                depth,
1666            )?;
1667
1668            _prev_end_offset = cur_offset + envelope_size;
1669
1670            Ok(())
1671        }
1672    }
1673
1674    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for IdentifyHostResponse {
1675        #[inline(always)]
1676        fn new_empty() -> Self {
1677            Self::default()
1678        }
1679
1680        unsafe fn decode(
1681            &mut self,
1682            decoder: &mut fidl::encoding::Decoder<'_, D>,
1683            offset: usize,
1684            mut depth: fidl::encoding::Depth,
1685        ) -> fidl::Result<()> {
1686            decoder.debug_check_bounds::<Self>(offset);
1687            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
1688                None => return Err(fidl::Error::NotNullable),
1689                Some(len) => len,
1690            };
1691            // Calling decoder.out_of_line_offset(0) is not allowed.
1692            if len == 0 {
1693                return Ok(());
1694            };
1695            depth.increment()?;
1696            let envelope_size = 8;
1697            let bytes_len = len * envelope_size;
1698            let offset = decoder.out_of_line_offset(bytes_len)?;
1699            // Decode the envelope for each type.
1700            let mut _next_ordinal_to_read = 0;
1701            let mut next_offset = offset;
1702            let end_offset = offset + bytes_len;
1703            _next_ordinal_to_read += 1;
1704            if next_offset >= end_offset {
1705                return Ok(());
1706            }
1707
1708            // Decode unknown envelopes for gaps in ordinals.
1709            while _next_ordinal_to_read < 2 {
1710                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1711                _next_ordinal_to_read += 1;
1712                next_offset += envelope_size;
1713            }
1714
1715            let next_out_of_line = decoder.next_out_of_line();
1716            let handles_before = decoder.remaining_handles();
1717            if let Some((inlined, num_bytes, num_handles)) =
1718                fidl::encoding::decode_envelope_header(decoder, next_offset)?
1719            {
1720                let member_inline_size =
1721                    <fidl::encoding::BoundedString<255> as fidl::encoding::TypeMarker>::inline_size(
1722                        decoder.context,
1723                    );
1724                if inlined != (member_inline_size <= 4) {
1725                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
1726                }
1727                let inner_offset;
1728                let mut inner_depth = depth.clone();
1729                if inlined {
1730                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1731                    inner_offset = next_offset;
1732                } else {
1733                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1734                    inner_depth.increment()?;
1735                }
1736                let val_ref = self
1737                    .nodename
1738                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<255>, D));
1739                fidl::decode!(
1740                    fidl::encoding::BoundedString<255>,
1741                    D,
1742                    val_ref,
1743                    decoder,
1744                    inner_offset,
1745                    inner_depth
1746                )?;
1747                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1748                {
1749                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
1750                }
1751                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1752                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1753                }
1754            }
1755
1756            next_offset += envelope_size;
1757            _next_ordinal_to_read += 1;
1758            if next_offset >= end_offset {
1759                return Ok(());
1760            }
1761
1762            // Decode unknown envelopes for gaps in ordinals.
1763            while _next_ordinal_to_read < 3 {
1764                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1765                _next_ordinal_to_read += 1;
1766                next_offset += envelope_size;
1767            }
1768
1769            let next_out_of_line = decoder.next_out_of_line();
1770            let handles_before = decoder.remaining_handles();
1771            if let Some((inlined, num_bytes, num_handles)) =
1772                fidl::encoding::decode_envelope_header(decoder, next_offset)?
1773            {
1774                let member_inline_size =
1775                    <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1776                if inlined != (member_inline_size <= 4) {
1777                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
1778                }
1779                let inner_offset;
1780                let mut inner_depth = depth.clone();
1781                if inlined {
1782                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1783                    inner_offset = next_offset;
1784                } else {
1785                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1786                    inner_depth.increment()?;
1787                }
1788                let val_ref =
1789                    self.boot_timestamp_nanos.get_or_insert_with(|| fidl::new_empty!(u64, D));
1790                fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
1791                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1792                {
1793                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
1794                }
1795                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1796                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1797                }
1798            }
1799
1800            next_offset += envelope_size;
1801            _next_ordinal_to_read += 1;
1802            if next_offset >= end_offset {
1803                return Ok(());
1804            }
1805
1806            // Decode unknown envelopes for gaps in ordinals.
1807            while _next_ordinal_to_read < 4 {
1808                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1809                _next_ordinal_to_read += 1;
1810                next_offset += envelope_size;
1811            }
1812
1813            let next_out_of_line = decoder.next_out_of_line();
1814            let handles_before = decoder.remaining_handles();
1815            if let Some((inlined, num_bytes, num_handles)) =
1816                fidl::encoding::decode_envelope_header(decoder, next_offset)?
1817            {
1818                let member_inline_size =
1819                    <fidl::encoding::BoundedString<255> as fidl::encoding::TypeMarker>::inline_size(
1820                        decoder.context,
1821                    );
1822                if inlined != (member_inline_size <= 4) {
1823                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
1824                }
1825                let inner_offset;
1826                let mut inner_depth = depth.clone();
1827                if inlined {
1828                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1829                    inner_offset = next_offset;
1830                } else {
1831                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1832                    inner_depth.increment()?;
1833                }
1834                let val_ref = self
1835                    .serial_number
1836                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<255>, D));
1837                fidl::decode!(
1838                    fidl::encoding::BoundedString<255>,
1839                    D,
1840                    val_ref,
1841                    decoder,
1842                    inner_offset,
1843                    inner_depth
1844                )?;
1845                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1846                {
1847                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
1848                }
1849                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1850                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1851                }
1852            }
1853
1854            next_offset += envelope_size;
1855            _next_ordinal_to_read += 1;
1856            if next_offset >= end_offset {
1857                return Ok(());
1858            }
1859
1860            // Decode unknown envelopes for gaps in ordinals.
1861            while _next_ordinal_to_read < 5 {
1862                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1863                _next_ordinal_to_read += 1;
1864                next_offset += envelope_size;
1865            }
1866
1867            let next_out_of_line = decoder.next_out_of_line();
1868            let handles_before = decoder.remaining_handles();
1869            if let Some((inlined, num_bytes, num_handles)) =
1870                fidl::encoding::decode_envelope_header(decoder, next_offset)?
1871            {
1872                let member_inline_size = <fidl::encoding::UnboundedVector<u64> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1873                if inlined != (member_inline_size <= 4) {
1874                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
1875                }
1876                let inner_offset;
1877                let mut inner_depth = depth.clone();
1878                if inlined {
1879                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1880                    inner_offset = next_offset;
1881                } else {
1882                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1883                    inner_depth.increment()?;
1884                }
1885                let val_ref = self.ids.get_or_insert_with(|| {
1886                    fidl::new_empty!(fidl::encoding::UnboundedVector<u64>, D)
1887                });
1888                fidl::decode!(
1889                    fidl::encoding::UnboundedVector<u64>,
1890                    D,
1891                    val_ref,
1892                    decoder,
1893                    inner_offset,
1894                    inner_depth
1895                )?;
1896                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1897                {
1898                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
1899                }
1900                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1901                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1902                }
1903            }
1904
1905            next_offset += envelope_size;
1906            _next_ordinal_to_read += 1;
1907            if next_offset >= end_offset {
1908                return Ok(());
1909            }
1910
1911            // Decode unknown envelopes for gaps in ordinals.
1912            while _next_ordinal_to_read < 6 {
1913                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1914                _next_ordinal_to_read += 1;
1915                next_offset += envelope_size;
1916            }
1917
1918            let next_out_of_line = decoder.next_out_of_line();
1919            let handles_before = decoder.remaining_handles();
1920            if let Some((inlined, num_bytes, num_handles)) =
1921                fidl::encoding::decode_envelope_header(decoder, next_offset)?
1922            {
1923                let member_inline_size =
1924                    <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
1925                        decoder.context,
1926                    );
1927                if inlined != (member_inline_size <= 4) {
1928                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
1929                }
1930                let inner_offset;
1931                let mut inner_depth = depth.clone();
1932                if inlined {
1933                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1934                    inner_offset = next_offset;
1935                } else {
1936                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1937                    inner_depth.increment()?;
1938                }
1939                let val_ref = self
1940                    .product_config
1941                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<100>, D));
1942                fidl::decode!(
1943                    fidl::encoding::BoundedString<100>,
1944                    D,
1945                    val_ref,
1946                    decoder,
1947                    inner_offset,
1948                    inner_depth
1949                )?;
1950                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1951                {
1952                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
1953                }
1954                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1955                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1956                }
1957            }
1958
1959            next_offset += envelope_size;
1960            _next_ordinal_to_read += 1;
1961            if next_offset >= end_offset {
1962                return Ok(());
1963            }
1964
1965            // Decode unknown envelopes for gaps in ordinals.
1966            while _next_ordinal_to_read < 7 {
1967                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1968                _next_ordinal_to_read += 1;
1969                next_offset += envelope_size;
1970            }
1971
1972            let next_out_of_line = decoder.next_out_of_line();
1973            let handles_before = decoder.remaining_handles();
1974            if let Some((inlined, num_bytes, num_handles)) =
1975                fidl::encoding::decode_envelope_header(decoder, next_offset)?
1976            {
1977                let member_inline_size =
1978                    <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
1979                        decoder.context,
1980                    );
1981                if inlined != (member_inline_size <= 4) {
1982                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
1983                }
1984                let inner_offset;
1985                let mut inner_depth = depth.clone();
1986                if inlined {
1987                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1988                    inner_offset = next_offset;
1989                } else {
1990                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1991                    inner_depth.increment()?;
1992                }
1993                let val_ref = self
1994                    .board_config
1995                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<100>, D));
1996                fidl::decode!(
1997                    fidl::encoding::BoundedString<100>,
1998                    D,
1999                    val_ref,
2000                    decoder,
2001                    inner_offset,
2002                    inner_depth
2003                )?;
2004                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2005                {
2006                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
2007                }
2008                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2009                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2010                }
2011            }
2012
2013            next_offset += envelope_size;
2014            _next_ordinal_to_read += 1;
2015            if next_offset >= end_offset {
2016                return Ok(());
2017            }
2018
2019            // Decode unknown envelopes for gaps in ordinals.
2020            while _next_ordinal_to_read < 8 {
2021                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2022                _next_ordinal_to_read += 1;
2023                next_offset += envelope_size;
2024            }
2025
2026            let next_out_of_line = decoder.next_out_of_line();
2027            let handles_before = decoder.remaining_handles();
2028            if let Some((inlined, num_bytes, num_handles)) =
2029                fidl::encoding::decode_envelope_header(decoder, next_offset)?
2030            {
2031                let member_inline_size = <fidl::encoding::UnboundedVector<
2032                    fidl_fuchsia_net_common::Subnet,
2033                > as fidl::encoding::TypeMarker>::inline_size(
2034                    decoder.context
2035                );
2036                if inlined != (member_inline_size <= 4) {
2037                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
2038                }
2039                let inner_offset;
2040                let mut inner_depth = depth.clone();
2041                if inlined {
2042                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2043                    inner_offset = next_offset;
2044                } else {
2045                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2046                    inner_depth.increment()?;
2047                }
2048                let val_ref = self.addresses.get_or_insert_with(|| {
2049                    fidl::new_empty!(
2050                        fidl::encoding::UnboundedVector<fidl_fuchsia_net_common::Subnet>,
2051                        D
2052                    )
2053                });
2054                fidl::decode!(
2055                    fidl::encoding::UnboundedVector<fidl_fuchsia_net_common::Subnet>,
2056                    D,
2057                    val_ref,
2058                    decoder,
2059                    inner_offset,
2060                    inner_depth
2061                )?;
2062                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2063                {
2064                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
2065                }
2066                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2067                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2068                }
2069            }
2070
2071            next_offset += envelope_size;
2072            _next_ordinal_to_read += 1;
2073            if next_offset >= end_offset {
2074                return Ok(());
2075            }
2076
2077            // Decode unknown envelopes for gaps in ordinals.
2078            while _next_ordinal_to_read < 9 {
2079                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2080                _next_ordinal_to_read += 1;
2081                next_offset += envelope_size;
2082            }
2083
2084            let next_out_of_line = decoder.next_out_of_line();
2085            let handles_before = decoder.remaining_handles();
2086            if let Some((inlined, num_bytes, num_handles)) =
2087                fidl::encoding::decode_envelope_header(decoder, next_offset)?
2088            {
2089                let member_inline_size =
2090                    <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2091                if inlined != (member_inline_size <= 4) {
2092                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
2093                }
2094                let inner_offset;
2095                let mut inner_depth = depth.clone();
2096                if inlined {
2097                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2098                    inner_offset = next_offset;
2099                } else {
2100                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2101                    inner_depth.increment()?;
2102                }
2103                let val_ref = self.boot_id.get_or_insert_with(|| fidl::new_empty!(u64, D));
2104                fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
2105                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2106                {
2107                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
2108                }
2109                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2110                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2111                }
2112            }
2113
2114            next_offset += envelope_size;
2115            _next_ordinal_to_read += 1;
2116            if next_offset >= end_offset {
2117                return Ok(());
2118            }
2119
2120            // Decode unknown envelopes for gaps in ordinals.
2121            while _next_ordinal_to_read < 10 {
2122                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2123                _next_ordinal_to_read += 1;
2124                next_offset += envelope_size;
2125            }
2126
2127            let next_out_of_line = decoder.next_out_of_line();
2128            let handles_before = decoder.remaining_handles();
2129            if let Some((inlined, num_bytes, num_handles)) =
2130                fidl::encoding::decode_envelope_header(decoder, next_offset)?
2131            {
2132                let member_inline_size =
2133                    <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2134                if inlined != (member_inline_size <= 4) {
2135                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
2136                }
2137                let inner_offset;
2138                let mut inner_depth = depth.clone();
2139                if inlined {
2140                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2141                    inner_offset = next_offset;
2142                } else {
2143                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2144                    inner_depth.increment()?;
2145                }
2146                let val_ref = self.f_release.get_or_insert_with(|| fidl::new_empty!(u32, D));
2147                fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
2148                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2149                {
2150                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
2151                }
2152                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2153                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2154                }
2155            }
2156
2157            next_offset += envelope_size;
2158
2159            // Decode the remaining unknown envelopes.
2160            while next_offset < end_offset {
2161                _next_ordinal_to_read += 1;
2162                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2163                next_offset += envelope_size;
2164            }
2165
2166            Ok(())
2167        }
2168    }
2169}