Skip to main content

fidl_fuchsia_net_mdns_common/
fidl_fuchsia_net_mdns_common.rs

1// WARNING: This file is machine generated by fidlgen.
2
3#![warn(clippy::all)]
4#![allow(unused_parens, unused_mut, unused_imports, nonstandard_style)]
5
6use bitflags::bitflags;
7use fidl::encoding::{MessageBufFor, ProxyChannelBox, ResourceDialect};
8use futures::future::{self, MaybeDone, TryFutureExt};
9use zx_status;
10
11/// Identifies a host. Host names consist of one or more labels separated by
12/// '.'s. A host name must not end with a '.'. Labels must each be 63 characters
13/// or less (not including the separator) and are UTF-8-encoded. A complete host
14/// name, including separators, must be 255 characters or less.
15pub type HostName = String;
16
17/// Identifies a specific instance of a service being published. Instance names
18/// consist of a single label, which is at most 63 characters long. Instance names
19/// are UTF-8-encoded. An instance name may contain any number of '.'s.
20pub type InstanceName = String;
21
22/// Identifies a (type of) service being published. Service names consist of
23/// two labels, both terminated with a '.'. The first label must start with an
24/// underscore and be 16 characters or less, including the underscore. The
25/// second label must be either '_tcp' or '_udp'. Labels do not contain '.'s.
26/// With underscores and terminators, that makes for a maximum of 22 characters.
27/// Service names are UTF-8-encoded.
28pub type ServiceName = String;
29
30/// Identifies a subtype of a service. Subtype names consist of a single label,
31/// which is at most 63 characters long and which contains no '.'s. Subtype
32/// names are UTF-8-encoded.
33pub type SubtypeName = String;
34
35/// Provides description relating to a service instance. In typical use, TXT
36/// strings consist of a key and value separated by '='. TXT strings must be
37/// at most 255 characters long and are UTF-8-encoded.
38pub type TxtCharacterString = Vec<u8>;
39
40/// Provides description relating to a service instance. In typical use, TXT
41/// strings consist of a key and value separated by '='. TXT strings must be
42/// at most 255 characters long and are UTF-8-encoded.
43pub type TxtString = String;
44
45pub const DEFAULT_PTR_TTL: i64 = 120000000000;
46
47pub const DEFAULT_SRV_PRIORITY: u16 = 0;
48
49pub const DEFAULT_SRV_TTL: i64 = 120000000000;
50
51pub const DEFAULT_SRV_WEIGHT: u16 = 0;
52
53pub const DEFAULT_TXT_TTL: i64 = 4500000000000;
54
55pub const MAX_ADDRESSES: u32 = 64;
56
57pub const MAX_SUBTYPES: u32 = 256;
58
59pub const MAX_TEXT_STRINGS: u32 = 256;
60
61bitflags! {
62    /// Specifies IP versions on which a service instance should be published.
63    #[derive(Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Hash)]
64    pub struct IpVersions: u32 {
65        /// Specifies IPv4.
66        const V4 = 1;
67        /// Specifies IPv6.
68        const V6 = 2;
69    }
70}
71
72impl IpVersions {}
73
74bitflags! {
75    /// Specifies network media on which a service instance should be published.
76    #[derive(Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Hash)]
77    pub struct Media: u32 {
78        /// Specifies wired interfaces.
79        const WIRED = 1;
80        /// Specifies wireless interfaces.
81        const WIRELESS = 2;
82    }
83}
84
85impl Media {}
86
87/// Error values for instance publishing.
88#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
89#[repr(u32)]
90pub enum Error {
91    /// The specified service name is invalid.
92    InvalidServiceName = 1,
93    /// The specified instance name is invalid.
94    InvalidInstanceName = 2,
95    /// The specified service instance is already being published by another
96    /// host on the subnet. This result occurs when an initial probe discovers
97    /// a conflicting instance.
98    AlreadyPublishedOnSubnet = 4,
99    InvalidMedia = 5,
100}
101
102impl Error {
103    #[inline]
104    pub fn from_primitive(prim: u32) -> Option<Self> {
105        match prim {
106            1 => Some(Self::InvalidServiceName),
107            2 => Some(Self::InvalidInstanceName),
108            4 => Some(Self::AlreadyPublishedOnSubnet),
109            5 => Some(Self::InvalidMedia),
110            _ => None,
111        }
112    }
113
114    #[inline]
115    pub const fn into_primitive(self) -> u32 {
116        self as u32
117    }
118}
119
120/// Error values for `ServiceInstancePublicationResponder.OnPublication`.
121#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
122#[repr(u32)]
123pub enum OnPublicationError {
124    /// Indicates the publisher should not respond to this publication request.
125    DoNotRespond = 1,
126}
127
128impl OnPublicationError {
129    #[inline]
130    pub fn from_primitive(prim: u32) -> Option<Self> {
131        match prim {
132            1 => Some(Self::DoNotRespond),
133            _ => None,
134        }
135    }
136
137    #[inline]
138    pub const fn into_primitive(self) -> u32 {
139        self as u32
140    }
141}
142
143/// Describes the cause of a publication.
144#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
145#[repr(u32)]
146pub enum PublicationCause {
147    /// Indicates the publication is part of an initial announcement.
148    Announcement = 1,
149    /// Indicates the publication is in response to a question that requests a
150    /// multicast response.
151    QueryMulticastResponse = 2,
152    /// Indicates the publication is in response to a question that requests a
153    /// unicast response.
154    QueryUnicastResponse = 3,
155}
156
157impl PublicationCause {
158    #[inline]
159    pub fn from_primitive(prim: u32) -> Option<Self> {
160        match prim {
161            1 => Some(Self::Announcement),
162            2 => Some(Self::QueryMulticastResponse),
163            3 => Some(Self::QueryUnicastResponse),
164            _ => None,
165        }
166    }
167
168    #[inline]
169    pub const fn into_primitive(self) -> u32 {
170        self as u32
171    }
172}
173
174/// Error values for `ProxyHostPublisher.PublishProxyHost`.
175#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
176pub enum PublishProxyHostError {
177    /// The specified host name is already being published by the mDNS local implementation.
178    AlreadyPublishedLocally,
179    /// The specified host name is already being published by another host on the subnet.
180    /// This result occurs when an initial probe discovers a conflicting host name.
181    AlreadyPublishedOnSubnet,
182    #[doc(hidden)]
183    __SourceBreaking { unknown_ordinal: u32 },
184}
185
186/// Pattern that matches an unknown `PublishProxyHostError` member.
187#[macro_export]
188macro_rules! PublishProxyHostErrorUnknown {
189    () => {
190        _
191    };
192}
193
194impl PublishProxyHostError {
195    #[inline]
196    pub fn from_primitive(prim: u32) -> Option<Self> {
197        match prim {
198            1 => Some(Self::AlreadyPublishedLocally),
199            2 => Some(Self::AlreadyPublishedOnSubnet),
200            _ => None,
201        }
202    }
203
204    #[inline]
205    pub fn from_primitive_allow_unknown(prim: u32) -> Self {
206        match prim {
207            1 => Self::AlreadyPublishedLocally,
208            2 => Self::AlreadyPublishedOnSubnet,
209            unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
210        }
211    }
212
213    #[inline]
214    pub fn unknown() -> Self {
215        Self::__SourceBreaking { unknown_ordinal: 0xffffffff }
216    }
217
218    #[inline]
219    pub const fn into_primitive(self) -> u32 {
220        match self {
221            Self::AlreadyPublishedLocally => 1,
222            Self::AlreadyPublishedOnSubnet => 2,
223            Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
224        }
225    }
226
227    #[inline]
228    pub fn is_unknown(&self) -> bool {
229        match self {
230            Self::__SourceBreaking { unknown_ordinal: _ } => true,
231            _ => false,
232        }
233    }
234}
235
236/// Error values for `ServiceInstancePublisher.PublishServiceInstance`.
237#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
238#[repr(u32)]
239pub enum PublishServiceInstanceError {
240    /// The specified service instance is already being published by the mDNS local implementation.
241    AlreadyPublishedLocally = 1,
242    /// The specified service instance is already being published by another host on the subnet.
243    /// This result occurs when an initial probe discovers a conflicting service instance.
244    AlreadyPublishedOnSubnet = 2,
245}
246
247impl PublishServiceInstanceError {
248    #[inline]
249    pub fn from_primitive(prim: u32) -> Option<Self> {
250        match prim {
251            1 => Some(Self::AlreadyPublishedLocally),
252            2 => Some(Self::AlreadyPublishedOnSubnet),
253            _ => None,
254        }
255    }
256
257    #[inline]
258    pub const fn into_primitive(self) -> u32 {
259        self as u32
260    }
261}
262
263/// DNS resource types.
264#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
265#[repr(u32)]
266pub enum ResourceType {
267    /// Domain name pointer.
268    Ptr = 12,
269    /// Any (wildcard) type.
270    Any = 255,
271}
272
273impl ResourceType {
274    #[inline]
275    pub fn from_primitive(prim: u32) -> Option<Self> {
276        match prim {
277            12 => Some(Self::Ptr),
278            255 => Some(Self::Any),
279            _ => None,
280        }
281    }
282
283    #[inline]
284    pub const fn into_primitive(self) -> u32 {
285        self as u32
286    }
287}
288
289/// Describes the cause of a publication.
290#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
291#[repr(u32)]
292pub enum ServiceInstancePublicationCause {
293    /// Indicates the publication is part of an initial announcement.
294    Announcement = 1,
295    /// Indicates the publication is in response to a question that requests a
296    /// multicast response.
297    QueryMulticastResponse = 2,
298    /// Indicates the publication is in response to a question that requests a
299    /// unicast response.
300    QueryUnicastResponse = 3,
301}
302
303impl ServiceInstancePublicationCause {
304    #[inline]
305    pub fn from_primitive(prim: u32) -> Option<Self> {
306        match prim {
307            1 => Some(Self::Announcement),
308            2 => Some(Self::QueryMulticastResponse),
309            3 => Some(Self::QueryUnicastResponse),
310            _ => None,
311        }
312    }
313
314    #[inline]
315    pub const fn into_primitive(self) -> u32 {
316        self as u32
317    }
318}
319
320/// An IPv4 or IPv6 host address with the id of the interface through which the address was
321/// received.
322#[derive(Clone, Debug, PartialEq)]
323pub struct HostAddress {
324    /// IPv4 or IPv6 host address. In the case of the local host, this will be the address of the
325    /// interface idenfied by `interface`. In the case of local proxy hosts, this value will be a
326    /// non-link-local address.
327    pub address: fidl_fuchsia_net_common::IpAddress,
328    /// Interface through which the address was received. In the case of the local host, this will
329    /// be the interface id of the interface whose address is given by `address`. In the case of
330    /// local proxy hosts, this value will be zero.
331    pub interface: u64,
332    /// Time-to-live of the relevant A or AAAA resource. In the case of the local host or local
333    /// proxy hosts, this value will be 2 minutes, the default A/AAAA TTL.
334    pub ttl: i64,
335}
336
337impl fidl::Persistable for HostAddress {}
338
339#[derive(Clone, Debug, PartialEq)]
340pub struct HostNameResolverResolveHostNameRequest {
341    pub host: String,
342    pub timeout: i64,
343    pub options: HostNameResolutionOptions,
344}
345
346impl fidl::Persistable for HostNameResolverResolveHostNameRequest {}
347
348#[derive(Clone, Debug, PartialEq)]
349pub struct HostNameResolverResolveHostNameResponse {
350    pub addresses: Vec<HostAddress>,
351}
352
353impl fidl::Persistable for HostNameResolverResolveHostNameResponse {}
354
355#[derive(Clone, Debug, PartialEq)]
356pub struct HostNameSubscriptionListenerOnAddressesChangedRequest {
357    pub addresses: Vec<HostAddress>,
358}
359
360impl fidl::Persistable for HostNameSubscriptionListenerOnAddressesChangedRequest {}
361
362/// Describes an initial instance announcement or query response. In typical
363/// use, the default SRV priority, SRV weight and TTL values should be used. TTL
364/// values are rounded down to the nearest second. TTL values less than one
365/// second are not permitted and will result in the `PublicationResponder`
366/// channel being closed.
367#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
368pub struct Publication {
369    /// The port at which the service instance is addressable.
370    pub port: u16,
371    /// Text strings describing the instance.
372    pub text: Vec<String>,
373    /// The priority of the SRV resource record for this publication. See
374    /// [RFC6763](https://tools.ietf.org/html/rfc6763) for details.
375    pub srv_priority: u16,
376    /// The weight of the SRV resource record for this publication. See
377    /// [RFC6763](https://tools.ietf.org/html/rfc6763) for details.
378    pub srv_weight: u16,
379    /// Time-to-live for PTR resource records.
380    pub ptr_ttl: i64,
381    /// Time-to-live for SRV resource records.
382    pub srv_ttl: i64,
383    /// Time-to-live for TXT resource records.
384    pub txt_ttl: i64,
385}
386
387impl fidl::Persistable for Publication {}
388
389#[derive(Clone, Debug, PartialEq)]
390pub struct PublicationResponderOnPublicationRequest {
391    pub publication_cause: PublicationCause,
392    pub subtype: Option<String>,
393    pub source_addresses: Vec<fidl_fuchsia_net_common::IpAddress>,
394}
395
396impl fidl::Persistable for PublicationResponderOnPublicationRequest {}
397
398#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
399pub struct PublicationResponderOnPublicationResponse {
400    pub publication: Option<Box<Publication>>,
401}
402
403impl fidl::Persistable for PublicationResponderOnPublicationResponse {}
404
405#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
406pub struct PublicationResponderSetSubtypesRequest {
407    pub subtypes: Vec<String>,
408}
409
410impl fidl::Persistable for PublicationResponderSetSubtypesRequest {}
411
412#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
413pub struct ResolverResolveHostNameRequest {
414    pub host: String,
415    pub timeout: i64,
416}
417
418impl fidl::Persistable for ResolverResolveHostNameRequest {}
419
420#[derive(Clone, Debug, PartialEq)]
421pub struct ResolverResolveHostNameResponse {
422    pub v4_address: Option<Box<fidl_fuchsia_net_common::Ipv4Address>>,
423    pub v6_address: Option<Box<fidl_fuchsia_net_common::Ipv6Address>>,
424}
425
426impl fidl::Persistable for ResolverResolveHostNameResponse {}
427
428#[derive(Clone, Debug, PartialEq)]
429pub struct ServiceInstancePublicationResponderOnPublicationRequest {
430    pub publication_cause: ServiceInstancePublicationCause,
431    pub subtype: Option<String>,
432    pub source_addresses: Vec<fidl_fuchsia_net_common::IpAddress>,
433}
434
435impl fidl::Persistable for ServiceInstancePublicationResponderOnPublicationRequest {}
436
437#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
438pub struct ServiceInstancePublicationResponderSetSubtypesRequest {
439    pub subtypes: Vec<String>,
440}
441
442impl fidl::Persistable for ServiceInstancePublicationResponderSetSubtypesRequest {}
443
444#[derive(Clone, Debug, PartialEq)]
445pub struct ServiceInstancePublicationResponderOnPublicationResponse {
446    pub publication: ServiceInstancePublication,
447}
448
449impl fidl::Persistable for ServiceInstancePublicationResponderOnPublicationResponse {}
450
451#[derive(Clone, Debug, PartialEq)]
452pub struct ServiceInstanceResolverResolveServiceInstanceRequest {
453    pub service: String,
454    pub instance: String,
455    pub timeout: i64,
456    pub options: ServiceInstanceResolutionOptions,
457}
458
459impl fidl::Persistable for ServiceInstanceResolverResolveServiceInstanceRequest {}
460
461#[derive(Clone, Debug, PartialEq)]
462pub struct ServiceInstanceResolverResolveServiceInstanceResponse {
463    pub instance: ServiceInstance,
464}
465
466impl fidl::Persistable for ServiceInstanceResolverResolveServiceInstanceResponse {}
467
468#[derive(Clone, Debug, PartialEq)]
469pub struct ServiceSubscriberOnInstanceChangedRequest {
470    pub instance: ServiceInstance,
471}
472
473impl fidl::Persistable for ServiceSubscriberOnInstanceChangedRequest {}
474
475#[derive(Clone, Debug, PartialEq)]
476pub struct ServiceSubscriberOnInstanceDiscoveredRequest {
477    pub instance: ServiceInstance,
478}
479
480impl fidl::Persistable for ServiceSubscriberOnInstanceDiscoveredRequest {}
481
482#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
483pub struct ServiceSubscriberOnInstanceLostRequest {
484    pub service: String,
485    pub instance: String,
486}
487
488impl fidl::Persistable for ServiceSubscriberOnInstanceLostRequest {}
489
490#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
491pub struct ServiceSubscriberOnQueryRequest {
492    pub resource_type: ResourceType,
493}
494
495impl fidl::Persistable for ServiceSubscriberOnQueryRequest {}
496
497#[derive(Clone, Debug, PartialEq)]
498pub struct ServiceSubscriptionListenerOnInstanceChangedRequest {
499    pub instance: ServiceInstance,
500}
501
502impl fidl::Persistable for ServiceSubscriptionListenerOnInstanceChangedRequest {}
503
504#[derive(Clone, Debug, PartialEq)]
505pub struct ServiceSubscriptionListenerOnInstanceDiscoveredRequest {
506    pub instance: ServiceInstance,
507}
508
509impl fidl::Persistable for ServiceSubscriptionListenerOnInstanceDiscoveredRequest {}
510
511#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
512pub struct ServiceSubscriptionListenerOnInstanceLostRequest {
513    pub service: String,
514    pub instance: String,
515}
516
517impl fidl::Persistable for ServiceSubscriptionListenerOnInstanceLostRequest {}
518
519#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
520pub struct ServiceSubscriptionListenerOnQueryRequest {
521    pub resource_type: ResourceType,
522}
523
524impl fidl::Persistable for ServiceSubscriptionListenerOnQueryRequest {}
525
526/// Options for `HostNameResolver.ResolveHostName`.
527#[derive(Clone, Debug, Default, PartialEq)]
528pub struct HostNameResolutionOptions {
529    /// The media (wired, wireless, both) of the interfaces on which the host name should be
530    /// resolved. The default is both wired and wireless media.
531    pub media: Option<Media>,
532    /// The IP versions (V4, V6, both) with which the host name should resolved. The default
533    /// value is both IPv4 and IPv6.
534    pub ip_versions: Option<IpVersions>,
535    pub exclude_local: Option<bool>,
536    pub exclude_local_proxies: Option<bool>,
537    #[doc(hidden)]
538    pub __source_breaking: fidl::marker::SourceBreaking,
539}
540
541impl fidl::Persistable for HostNameResolutionOptions {}
542
543/// Options for `HostNameSubscriber.SubscribeToHostName`.
544#[derive(Clone, Debug, Default, PartialEq)]
545pub struct HostNameSubscriptionOptions {
546    /// The media (wired, wireless, both) of the interfaces on which the host name should be
547    /// subscribed to. The default is both wired and wireless media.
548    pub media: Option<Media>,
549    /// The IP versions (V4, V6, both) with which the host name should subscribe to. The default
550    /// value is both IPv4 and IPv6.
551    pub ip_versions: Option<IpVersions>,
552    pub exclude_local: Option<bool>,
553    pub exclude_local_proxies: Option<bool>,
554    #[doc(hidden)]
555    pub __source_breaking: fidl::marker::SourceBreaking,
556}
557
558impl fidl::Persistable for HostNameSubscriptionOptions {}
559
560/// Options for `ProxyHostPublisher.PublishProxyHost`.
561#[derive(Clone, Debug, Default, PartialEq)]
562pub struct ProxyHostPublicationOptions {
563    /// The media (wired, wireless, both) of the interfaces on which the host name should be
564    /// published. If this value is not supplied, the host name will be published on wired and
565    /// wireless media.
566    pub media: Option<Media>,
567    /// The IP versions (V4, V6, both) of the interfaces on which the host name should be published.
568    /// If this value is not supplied, the host name will be published on interfaces of both IP
569    /// versions.
570    pub ip_versions: Option<IpVersions>,
571    /// Whether a probe for conflicting host names should be performed prior to publishing the
572    /// host name. If this value is not supplied, probing is performed.
573    pub perform_probe: Option<bool>,
574    #[doc(hidden)]
575    pub __source_breaking: fidl::marker::SourceBreaking,
576}
577
578impl fidl::Persistable for ProxyHostPublicationOptions {}
579
580/// Describes a service instance.
581#[derive(Clone, Debug, Default, PartialEq)]
582pub struct ServiceInstance {
583    /// The name of the service.
584    pub service: Option<String>,
585    /// The name of the service instance.
586    pub instance: Option<String>,
587    /// IPv4 socket address for the service. May be empty. Deprecated: use `addresses`.
588    pub ipv4_endpoint: Option<fidl_fuchsia_net_common::Ipv4SocketAddress>,
589    /// IPv6 socket address for the service. May be empty. Deprecated: use `addresses`.
590    pub ipv6_endpoint: Option<fidl_fuchsia_net_common::Ipv6SocketAddress>,
591    /// Text strings describing the instance. Deprecated: use `text_strings`.
592    pub text: Option<Vec<String>>,
593    /// The priority of the SRV resource record for this publication. See
594    /// [RFC6763](https://tools.ietf.org/html/rfc6763) for details.
595    pub srv_priority: Option<u16>,
596    /// The weight of the SRV resource record for this publication. See
597    /// [RFC6763](https://tools.ietf.org/html/rfc6763) for details.
598    pub srv_weight: Option<u16>,
599    /// The domain name of the target host.
600    pub target: Option<String>,
601    /// The socket addresses for the service instance.
602    pub addresses: Option<Vec<fidl_fuchsia_net_common::SocketAddress>>,
603    /// Text strings describing the instance.
604    pub text_strings: Option<Vec<Vec<u8>>>,
605    #[doc(hidden)]
606    pub __source_breaking: fidl::marker::SourceBreaking,
607}
608
609impl fidl::Persistable for ServiceInstance {}
610
611/// Describes an initial instance announcement or query response. In typical
612/// use, the default SRV priority, SRV weight and TTL values should be used. TTL
613/// values are rounded down to the nearest second. TTL values less than one
614/// second are not permitted and will result in the `ServiceInstancePublicationResponder`
615/// channel being closed.
616#[derive(Clone, Debug, Default, PartialEq)]
617pub struct ServiceInstancePublication {
618    /// The port at which the service instance is addressable. This value is required.
619    pub port: Option<u16>,
620    /// Text strings describing the instance. If this value is not supplied, no text strings are
621    /// associated with the instance in this publication.
622    pub text: Option<Vec<Vec<u8>>>,
623    /// The priority of the SRV resource record for this publication. See
624    /// [RFC6763](https://tools.ietf.org/html/rfc6763) for details. If this value is not supplied,
625    /// the default SRV priority of 0 is used.
626    pub srv_priority: Option<u16>,
627    /// The weight of the SRV resource record for this publication. See
628    /// [RFC6763](https://tools.ietf.org/html/rfc6763) for details. If this value is not supplied,
629    /// the default SRV weight of 0 is used.
630    pub srv_weight: Option<u16>,
631    /// Time-to-live for PTR resource records. If this value is not supplied, the default PTR TTL
632    /// of 2 minutes is used. This value is rounded down to the nearest second.
633    pub ptr_ttl: Option<i64>,
634    /// Time-to-live for SRV resource records. If this value is not supplied, the default SRV TTL
635    /// of 2 minutes is used. This value is rounded down to the nearest second.
636    pub srv_ttl: Option<i64>,
637    /// Time-to-live for TXT resource records. If this value is not supplied, the default TXT TTL
638    /// of 75 minutes is used. This value is rounded down to the nearest second.
639    pub txt_ttl: Option<i64>,
640    #[doc(hidden)]
641    pub __source_breaking: fidl::marker::SourceBreaking,
642}
643
644impl fidl::Persistable for ServiceInstancePublication {}
645
646/// Options for `ServiceInstancePublisher.PublishServiceInstance`.
647#[derive(Clone, Debug, Default, PartialEq)]
648pub struct ServiceInstancePublicationOptions {
649    /// The media (wired, wireless, both) of the interfaces on which the service instance should
650    /// be published. The default `media` value depends on whether the `ServiceInstancePublisher`
651    /// is associated with a proxy host. If so, the default matches the `media` value of the
652    /// `ProxyHostPublicationOptions` for the proxy host. If not, the default is both wired and
653    /// wireless media.
654    pub media: Option<Media>,
655    /// The IP versions (V4, V6, both) with which the service instance should
656    /// be published. The default `ip_versions` value depends on whether the
657    /// `ServiceInstancePublisher` is associated with a proxy host. If so, the default matches the
658    /// `ip_versions` value of the `ProxyHostPublicationOptions` for the proxy host. If not, the
659    /// default value is both IPv4 and IPv6.
660    pub ip_versions: Option<IpVersions>,
661    /// Whether a probe for conflicting instances should be performed prior to publishing the
662    /// instance. If this value is not supplied, probing is performed.
663    pub perform_probe: Option<bool>,
664    #[doc(hidden)]
665    pub __source_breaking: fidl::marker::SourceBreaking,
666}
667
668impl fidl::Persistable for ServiceInstancePublicationOptions {}
669
670/// Options for `ServiceInstanceResolver.ResolveServiceInstance`.
671#[derive(Clone, Debug, Default, PartialEq)]
672pub struct ServiceInstanceResolutionOptions {
673    /// The media (wired, wireless, both) of the interfaces on which the service instance should be
674    /// resolved. The default is both wired and wireless media.
675    pub media: Option<Media>,
676    /// The IP versions (V4, V6, both) with which the service instance should resolved. The default
677    /// value is both IPv4 and IPv6.
678    pub ip_versions: Option<IpVersions>,
679    pub exclude_local: Option<bool>,
680    pub exclude_local_proxies: Option<bool>,
681    #[doc(hidden)]
682    pub __source_breaking: fidl::marker::SourceBreaking,
683}
684
685impl fidl::Persistable for ServiceInstanceResolutionOptions {}
686
687/// Options for `ServiceSubscriber.SubscribeToService`.
688#[derive(Clone, Debug, Default, PartialEq)]
689pub struct ServiceSubscriptionOptions {
690    /// The media (wired, wireless, both) of the interfaces on which the service should be
691    /// susbsribed. The default is both wired and wireless media.
692    pub media: Option<Media>,
693    /// The IP versions (V4, V6, both) with which the service should subscribed. The default value
694    /// is both IPv4 and IPv6.
695    pub ip_versions: Option<IpVersions>,
696    pub exclude_local: Option<bool>,
697    pub exclude_local_proxies: Option<bool>,
698    #[doc(hidden)]
699    pub __source_breaking: fidl::marker::SourceBreaking,
700}
701
702impl fidl::Persistable for ServiceSubscriptionOptions {}
703
704pub mod host_name_resolver_ordinals {
705    pub const RESOLVE_HOST_NAME: u64 = 0x54f422692b53c46d;
706}
707
708pub mod host_name_subscriber_ordinals {
709    pub const SUBSCRIBE_TO_HOST_NAME: u64 = 0x23b6c5f4954f40ea;
710}
711
712pub mod host_name_subscription_listener_ordinals {
713    pub const ON_ADDRESSES_CHANGED: u64 = 0x44f5e70b2e8c1472;
714}
715
716pub mod proxy_host_publisher_ordinals {
717    pub const PUBLISH_PROXY_HOST: u64 = 0x639bfff950f973c2;
718}
719
720pub mod publication_responder__ordinals {
721    pub const ON_PUBLICATION: u64 = 0x71d805aee2907d06;
722    pub const SET_SUBTYPES: u64 = 0x5593e156370b19df;
723    pub const REANNOUNCE: u64 = 0x2550cc2a43aa838b;
724}
725
726pub mod publisher_ordinals {
727    pub const PUBLISH_SERVICE_INSTANCE: u64 = 0x3712171c42878797;
728}
729
730pub mod resolver_ordinals {
731    pub const RESOLVE_HOST_NAME: u64 = 0x3c8b2b50aad28e4a;
732}
733
734pub mod service_instance_publication_responder__ordinals {
735    pub const ON_PUBLICATION: u64 = 0x71753d79b12571ca;
736    pub const SET_SUBTYPES: u64 = 0x217fed6e404312a9;
737    pub const REANNOUNCE: u64 = 0x1b48d9ed30dce1a8;
738}
739
740pub mod service_instance_publisher_ordinals {
741    pub const PUBLISH_SERVICE_INSTANCE: u64 = 0x25d5fd0912cb5a9e;
742}
743
744pub mod service_instance_resolver_ordinals {
745    pub const RESOLVE_SERVICE_INSTANCE: u64 = 0x1a0d0c9fc6f2fd7;
746}
747
748pub mod service_subscriber_ordinals {
749    pub const ON_INSTANCE_DISCOVERED: u64 = 0x74aa039fd81dcab2;
750    pub const ON_INSTANCE_CHANGED: u64 = 0x24da258aad929434;
751    pub const ON_INSTANCE_LOST: u64 = 0x5beddb781791773f;
752    pub const ON_QUERY: u64 = 0x1d0496189fdb23f5;
753}
754
755pub mod service_subscriber2_ordinals {
756    pub const SUBSCRIBE_TO_SERVICE: u64 = 0x78f713d88dcf34aa;
757    pub const SUBSCRIBE_TO_ALL_SERVICES: u64 = 0x7c5192d46e380468;
758}
759
760pub mod service_subscription_listener_ordinals {
761    pub const ON_INSTANCE_DISCOVERED: u64 = 0x82f861e0b26a186;
762    pub const ON_INSTANCE_CHANGED: u64 = 0x7da325aa758d8929;
763    pub const ON_INSTANCE_LOST: u64 = 0x2ecb2f1600c5c6dc;
764    pub const ON_QUERY: u64 = 0x4f4eb8e3d10db611;
765}
766
767pub mod subscriber_ordinals {
768    pub const SUBSCRIBE_TO_SERVICE: u64 = 0x3a1a3b02c1809e3f;
769}
770
771mod internal {
772    use super::*;
773    unsafe impl fidl::encoding::TypeMarker for IpVersions {
774        type Owned = Self;
775
776        #[inline(always)]
777        fn inline_align(_context: fidl::encoding::Context) -> usize {
778            4
779        }
780
781        #[inline(always)]
782        fn inline_size(_context: fidl::encoding::Context) -> usize {
783            4
784        }
785    }
786
787    impl fidl::encoding::ValueTypeMarker for IpVersions {
788        type Borrowed<'a> = Self;
789        #[inline(always)]
790        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
791            *value
792        }
793    }
794
795    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for IpVersions {
796        #[inline]
797        unsafe fn encode(
798            self,
799            encoder: &mut fidl::encoding::Encoder<'_, D>,
800            offset: usize,
801            _depth: fidl::encoding::Depth,
802        ) -> fidl::Result<()> {
803            encoder.debug_check_bounds::<Self>(offset);
804            if self.bits() & Self::all().bits() != self.bits() {
805                return Err(fidl::Error::InvalidBitsValue);
806            }
807            encoder.write_num(self.bits(), offset);
808            Ok(())
809        }
810    }
811
812    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for IpVersions {
813        #[inline(always)]
814        fn new_empty() -> Self {
815            Self::empty()
816        }
817
818        #[inline]
819        unsafe fn decode(
820            &mut self,
821            decoder: &mut fidl::encoding::Decoder<'_, D>,
822            offset: usize,
823            _depth: fidl::encoding::Depth,
824        ) -> fidl::Result<()> {
825            decoder.debug_check_bounds::<Self>(offset);
826            let prim = decoder.read_num::<u32>(offset);
827            *self = Self::from_bits(prim).ok_or(fidl::Error::InvalidBitsValue)?;
828            Ok(())
829        }
830    }
831    unsafe impl fidl::encoding::TypeMarker for Media {
832        type Owned = Self;
833
834        #[inline(always)]
835        fn inline_align(_context: fidl::encoding::Context) -> usize {
836            4
837        }
838
839        #[inline(always)]
840        fn inline_size(_context: fidl::encoding::Context) -> usize {
841            4
842        }
843    }
844
845    impl fidl::encoding::ValueTypeMarker for Media {
846        type Borrowed<'a> = Self;
847        #[inline(always)]
848        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
849            *value
850        }
851    }
852
853    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for Media {
854        #[inline]
855        unsafe fn encode(
856            self,
857            encoder: &mut fidl::encoding::Encoder<'_, D>,
858            offset: usize,
859            _depth: fidl::encoding::Depth,
860        ) -> fidl::Result<()> {
861            encoder.debug_check_bounds::<Self>(offset);
862            if self.bits() & Self::all().bits() != self.bits() {
863                return Err(fidl::Error::InvalidBitsValue);
864            }
865            encoder.write_num(self.bits(), offset);
866            Ok(())
867        }
868    }
869
870    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Media {
871        #[inline(always)]
872        fn new_empty() -> Self {
873            Self::empty()
874        }
875
876        #[inline]
877        unsafe fn decode(
878            &mut self,
879            decoder: &mut fidl::encoding::Decoder<'_, D>,
880            offset: usize,
881            _depth: fidl::encoding::Depth,
882        ) -> fidl::Result<()> {
883            decoder.debug_check_bounds::<Self>(offset);
884            let prim = decoder.read_num::<u32>(offset);
885            *self = Self::from_bits(prim).ok_or(fidl::Error::InvalidBitsValue)?;
886            Ok(())
887        }
888    }
889    unsafe impl fidl::encoding::TypeMarker for Error {
890        type Owned = Self;
891
892        #[inline(always)]
893        fn inline_align(_context: fidl::encoding::Context) -> usize {
894            std::mem::align_of::<u32>()
895        }
896
897        #[inline(always)]
898        fn inline_size(_context: fidl::encoding::Context) -> usize {
899            std::mem::size_of::<u32>()
900        }
901
902        #[inline(always)]
903        fn encode_is_copy() -> bool {
904            true
905        }
906
907        #[inline(always)]
908        fn decode_is_copy() -> bool {
909            false
910        }
911    }
912
913    impl fidl::encoding::ValueTypeMarker for Error {
914        type Borrowed<'a> = Self;
915        #[inline(always)]
916        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
917            *value
918        }
919    }
920
921    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for Error {
922        #[inline]
923        unsafe fn encode(
924            self,
925            encoder: &mut fidl::encoding::Encoder<'_, D>,
926            offset: usize,
927            _depth: fidl::encoding::Depth,
928        ) -> fidl::Result<()> {
929            encoder.debug_check_bounds::<Self>(offset);
930            encoder.write_num(self.into_primitive(), offset);
931            Ok(())
932        }
933    }
934
935    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Error {
936        #[inline(always)]
937        fn new_empty() -> Self {
938            Self::InvalidServiceName
939        }
940
941        #[inline]
942        unsafe fn decode(
943            &mut self,
944            decoder: &mut fidl::encoding::Decoder<'_, D>,
945            offset: usize,
946            _depth: fidl::encoding::Depth,
947        ) -> fidl::Result<()> {
948            decoder.debug_check_bounds::<Self>(offset);
949            let prim = decoder.read_num::<u32>(offset);
950
951            *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
952            Ok(())
953        }
954    }
955    unsafe impl fidl::encoding::TypeMarker for OnPublicationError {
956        type Owned = Self;
957
958        #[inline(always)]
959        fn inline_align(_context: fidl::encoding::Context) -> usize {
960            std::mem::align_of::<u32>()
961        }
962
963        #[inline(always)]
964        fn inline_size(_context: fidl::encoding::Context) -> usize {
965            std::mem::size_of::<u32>()
966        }
967
968        #[inline(always)]
969        fn encode_is_copy() -> bool {
970            true
971        }
972
973        #[inline(always)]
974        fn decode_is_copy() -> bool {
975            false
976        }
977    }
978
979    impl fidl::encoding::ValueTypeMarker for OnPublicationError {
980        type Borrowed<'a> = Self;
981        #[inline(always)]
982        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
983            *value
984        }
985    }
986
987    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
988        for OnPublicationError
989    {
990        #[inline]
991        unsafe fn encode(
992            self,
993            encoder: &mut fidl::encoding::Encoder<'_, D>,
994            offset: usize,
995            _depth: fidl::encoding::Depth,
996        ) -> fidl::Result<()> {
997            encoder.debug_check_bounds::<Self>(offset);
998            encoder.write_num(self.into_primitive(), offset);
999            Ok(())
1000        }
1001    }
1002
1003    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for OnPublicationError {
1004        #[inline(always)]
1005        fn new_empty() -> Self {
1006            Self::DoNotRespond
1007        }
1008
1009        #[inline]
1010        unsafe fn decode(
1011            &mut self,
1012            decoder: &mut fidl::encoding::Decoder<'_, D>,
1013            offset: usize,
1014            _depth: fidl::encoding::Depth,
1015        ) -> fidl::Result<()> {
1016            decoder.debug_check_bounds::<Self>(offset);
1017            let prim = decoder.read_num::<u32>(offset);
1018
1019            *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
1020            Ok(())
1021        }
1022    }
1023    unsafe impl fidl::encoding::TypeMarker for PublicationCause {
1024        type Owned = Self;
1025
1026        #[inline(always)]
1027        fn inline_align(_context: fidl::encoding::Context) -> usize {
1028            std::mem::align_of::<u32>()
1029        }
1030
1031        #[inline(always)]
1032        fn inline_size(_context: fidl::encoding::Context) -> usize {
1033            std::mem::size_of::<u32>()
1034        }
1035
1036        #[inline(always)]
1037        fn encode_is_copy() -> bool {
1038            true
1039        }
1040
1041        #[inline(always)]
1042        fn decode_is_copy() -> bool {
1043            false
1044        }
1045    }
1046
1047    impl fidl::encoding::ValueTypeMarker for PublicationCause {
1048        type Borrowed<'a> = Self;
1049        #[inline(always)]
1050        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1051            *value
1052        }
1053    }
1054
1055    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
1056        for PublicationCause
1057    {
1058        #[inline]
1059        unsafe fn encode(
1060            self,
1061            encoder: &mut fidl::encoding::Encoder<'_, D>,
1062            offset: usize,
1063            _depth: fidl::encoding::Depth,
1064        ) -> fidl::Result<()> {
1065            encoder.debug_check_bounds::<Self>(offset);
1066            encoder.write_num(self.into_primitive(), offset);
1067            Ok(())
1068        }
1069    }
1070
1071    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for PublicationCause {
1072        #[inline(always)]
1073        fn new_empty() -> Self {
1074            Self::Announcement
1075        }
1076
1077        #[inline]
1078        unsafe fn decode(
1079            &mut self,
1080            decoder: &mut fidl::encoding::Decoder<'_, D>,
1081            offset: usize,
1082            _depth: fidl::encoding::Depth,
1083        ) -> fidl::Result<()> {
1084            decoder.debug_check_bounds::<Self>(offset);
1085            let prim = decoder.read_num::<u32>(offset);
1086
1087            *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
1088            Ok(())
1089        }
1090    }
1091    unsafe impl fidl::encoding::TypeMarker for PublishProxyHostError {
1092        type Owned = Self;
1093
1094        #[inline(always)]
1095        fn inline_align(_context: fidl::encoding::Context) -> usize {
1096            std::mem::align_of::<u32>()
1097        }
1098
1099        #[inline(always)]
1100        fn inline_size(_context: fidl::encoding::Context) -> usize {
1101            std::mem::size_of::<u32>()
1102        }
1103
1104        #[inline(always)]
1105        fn encode_is_copy() -> bool {
1106            false
1107        }
1108
1109        #[inline(always)]
1110        fn decode_is_copy() -> bool {
1111            false
1112        }
1113    }
1114
1115    impl fidl::encoding::ValueTypeMarker for PublishProxyHostError {
1116        type Borrowed<'a> = Self;
1117        #[inline(always)]
1118        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1119            *value
1120        }
1121    }
1122
1123    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
1124        for PublishProxyHostError
1125    {
1126        #[inline]
1127        unsafe fn encode(
1128            self,
1129            encoder: &mut fidl::encoding::Encoder<'_, D>,
1130            offset: usize,
1131            _depth: fidl::encoding::Depth,
1132        ) -> fidl::Result<()> {
1133            encoder.debug_check_bounds::<Self>(offset);
1134            encoder.write_num(self.into_primitive(), offset);
1135            Ok(())
1136        }
1137    }
1138
1139    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for PublishProxyHostError {
1140        #[inline(always)]
1141        fn new_empty() -> Self {
1142            Self::unknown()
1143        }
1144
1145        #[inline]
1146        unsafe fn decode(
1147            &mut self,
1148            decoder: &mut fidl::encoding::Decoder<'_, D>,
1149            offset: usize,
1150            _depth: fidl::encoding::Depth,
1151        ) -> fidl::Result<()> {
1152            decoder.debug_check_bounds::<Self>(offset);
1153            let prim = decoder.read_num::<u32>(offset);
1154
1155            *self = Self::from_primitive_allow_unknown(prim);
1156            Ok(())
1157        }
1158    }
1159    unsafe impl fidl::encoding::TypeMarker for PublishServiceInstanceError {
1160        type Owned = Self;
1161
1162        #[inline(always)]
1163        fn inline_align(_context: fidl::encoding::Context) -> usize {
1164            std::mem::align_of::<u32>()
1165        }
1166
1167        #[inline(always)]
1168        fn inline_size(_context: fidl::encoding::Context) -> usize {
1169            std::mem::size_of::<u32>()
1170        }
1171
1172        #[inline(always)]
1173        fn encode_is_copy() -> bool {
1174            true
1175        }
1176
1177        #[inline(always)]
1178        fn decode_is_copy() -> bool {
1179            false
1180        }
1181    }
1182
1183    impl fidl::encoding::ValueTypeMarker for PublishServiceInstanceError {
1184        type Borrowed<'a> = Self;
1185        #[inline(always)]
1186        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1187            *value
1188        }
1189    }
1190
1191    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
1192        for PublishServiceInstanceError
1193    {
1194        #[inline]
1195        unsafe fn encode(
1196            self,
1197            encoder: &mut fidl::encoding::Encoder<'_, D>,
1198            offset: usize,
1199            _depth: fidl::encoding::Depth,
1200        ) -> fidl::Result<()> {
1201            encoder.debug_check_bounds::<Self>(offset);
1202            encoder.write_num(self.into_primitive(), offset);
1203            Ok(())
1204        }
1205    }
1206
1207    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1208        for PublishServiceInstanceError
1209    {
1210        #[inline(always)]
1211        fn new_empty() -> Self {
1212            Self::AlreadyPublishedLocally
1213        }
1214
1215        #[inline]
1216        unsafe fn decode(
1217            &mut self,
1218            decoder: &mut fidl::encoding::Decoder<'_, D>,
1219            offset: usize,
1220            _depth: fidl::encoding::Depth,
1221        ) -> fidl::Result<()> {
1222            decoder.debug_check_bounds::<Self>(offset);
1223            let prim = decoder.read_num::<u32>(offset);
1224
1225            *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
1226            Ok(())
1227        }
1228    }
1229    unsafe impl fidl::encoding::TypeMarker for ResourceType {
1230        type Owned = Self;
1231
1232        #[inline(always)]
1233        fn inline_align(_context: fidl::encoding::Context) -> usize {
1234            std::mem::align_of::<u32>()
1235        }
1236
1237        #[inline(always)]
1238        fn inline_size(_context: fidl::encoding::Context) -> usize {
1239            std::mem::size_of::<u32>()
1240        }
1241
1242        #[inline(always)]
1243        fn encode_is_copy() -> bool {
1244            true
1245        }
1246
1247        #[inline(always)]
1248        fn decode_is_copy() -> bool {
1249            false
1250        }
1251    }
1252
1253    impl fidl::encoding::ValueTypeMarker for ResourceType {
1254        type Borrowed<'a> = Self;
1255        #[inline(always)]
1256        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1257            *value
1258        }
1259    }
1260
1261    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for ResourceType {
1262        #[inline]
1263        unsafe fn encode(
1264            self,
1265            encoder: &mut fidl::encoding::Encoder<'_, D>,
1266            offset: usize,
1267            _depth: fidl::encoding::Depth,
1268        ) -> fidl::Result<()> {
1269            encoder.debug_check_bounds::<Self>(offset);
1270            encoder.write_num(self.into_primitive(), offset);
1271            Ok(())
1272        }
1273    }
1274
1275    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ResourceType {
1276        #[inline(always)]
1277        fn new_empty() -> Self {
1278            Self::Ptr
1279        }
1280
1281        #[inline]
1282        unsafe fn decode(
1283            &mut self,
1284            decoder: &mut fidl::encoding::Decoder<'_, D>,
1285            offset: usize,
1286            _depth: fidl::encoding::Depth,
1287        ) -> fidl::Result<()> {
1288            decoder.debug_check_bounds::<Self>(offset);
1289            let prim = decoder.read_num::<u32>(offset);
1290
1291            *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
1292            Ok(())
1293        }
1294    }
1295    unsafe impl fidl::encoding::TypeMarker for ServiceInstancePublicationCause {
1296        type Owned = Self;
1297
1298        #[inline(always)]
1299        fn inline_align(_context: fidl::encoding::Context) -> usize {
1300            std::mem::align_of::<u32>()
1301        }
1302
1303        #[inline(always)]
1304        fn inline_size(_context: fidl::encoding::Context) -> usize {
1305            std::mem::size_of::<u32>()
1306        }
1307
1308        #[inline(always)]
1309        fn encode_is_copy() -> bool {
1310            true
1311        }
1312
1313        #[inline(always)]
1314        fn decode_is_copy() -> bool {
1315            false
1316        }
1317    }
1318
1319    impl fidl::encoding::ValueTypeMarker for ServiceInstancePublicationCause {
1320        type Borrowed<'a> = Self;
1321        #[inline(always)]
1322        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1323            *value
1324        }
1325    }
1326
1327    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
1328        for ServiceInstancePublicationCause
1329    {
1330        #[inline]
1331        unsafe fn encode(
1332            self,
1333            encoder: &mut fidl::encoding::Encoder<'_, D>,
1334            offset: usize,
1335            _depth: fidl::encoding::Depth,
1336        ) -> fidl::Result<()> {
1337            encoder.debug_check_bounds::<Self>(offset);
1338            encoder.write_num(self.into_primitive(), offset);
1339            Ok(())
1340        }
1341    }
1342
1343    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1344        for ServiceInstancePublicationCause
1345    {
1346        #[inline(always)]
1347        fn new_empty() -> Self {
1348            Self::Announcement
1349        }
1350
1351        #[inline]
1352        unsafe fn decode(
1353            &mut self,
1354            decoder: &mut fidl::encoding::Decoder<'_, D>,
1355            offset: usize,
1356            _depth: fidl::encoding::Depth,
1357        ) -> fidl::Result<()> {
1358            decoder.debug_check_bounds::<Self>(offset);
1359            let prim = decoder.read_num::<u32>(offset);
1360
1361            *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
1362            Ok(())
1363        }
1364    }
1365
1366    impl fidl::encoding::ValueTypeMarker for HostAddress {
1367        type Borrowed<'a> = &'a Self;
1368        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1369            value
1370        }
1371    }
1372
1373    unsafe impl fidl::encoding::TypeMarker for HostAddress {
1374        type Owned = Self;
1375
1376        #[inline(always)]
1377        fn inline_align(_context: fidl::encoding::Context) -> usize {
1378            8
1379        }
1380
1381        #[inline(always)]
1382        fn inline_size(_context: fidl::encoding::Context) -> usize {
1383            32
1384        }
1385    }
1386
1387    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<HostAddress, D>
1388        for &HostAddress
1389    {
1390        #[inline]
1391        unsafe fn encode(
1392            self,
1393            encoder: &mut fidl::encoding::Encoder<'_, D>,
1394            offset: usize,
1395            _depth: fidl::encoding::Depth,
1396        ) -> fidl::Result<()> {
1397            encoder.debug_check_bounds::<HostAddress>(offset);
1398            // Delegate to tuple encoding.
1399            fidl::encoding::Encode::<HostAddress, D>::encode(
1400                (
1401                    <fidl_fuchsia_net_common::IpAddress as fidl::encoding::ValueTypeMarker>::borrow(
1402                        &self.address,
1403                    ),
1404                    <u64 as fidl::encoding::ValueTypeMarker>::borrow(&self.interface),
1405                    <i64 as fidl::encoding::ValueTypeMarker>::borrow(&self.ttl),
1406                ),
1407                encoder,
1408                offset,
1409                _depth,
1410            )
1411        }
1412    }
1413    unsafe impl<
1414        D: fidl::encoding::ResourceDialect,
1415        T0: fidl::encoding::Encode<fidl_fuchsia_net_common::IpAddress, D>,
1416        T1: fidl::encoding::Encode<u64, D>,
1417        T2: fidl::encoding::Encode<i64, D>,
1418    > fidl::encoding::Encode<HostAddress, D> for (T0, T1, T2)
1419    {
1420        #[inline]
1421        unsafe fn encode(
1422            self,
1423            encoder: &mut fidl::encoding::Encoder<'_, D>,
1424            offset: usize,
1425            depth: fidl::encoding::Depth,
1426        ) -> fidl::Result<()> {
1427            encoder.debug_check_bounds::<HostAddress>(offset);
1428            // Zero out padding regions. There's no need to apply masks
1429            // because the unmasked parts will be overwritten by fields.
1430            // Write the fields.
1431            self.0.encode(encoder, offset + 0, depth)?;
1432            self.1.encode(encoder, offset + 16, depth)?;
1433            self.2.encode(encoder, offset + 24, depth)?;
1434            Ok(())
1435        }
1436    }
1437
1438    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for HostAddress {
1439        #[inline(always)]
1440        fn new_empty() -> Self {
1441            Self {
1442                address: fidl::new_empty!(fidl_fuchsia_net_common::IpAddress, D),
1443                interface: fidl::new_empty!(u64, D),
1444                ttl: fidl::new_empty!(i64, D),
1445            }
1446        }
1447
1448        #[inline]
1449        unsafe fn decode(
1450            &mut self,
1451            decoder: &mut fidl::encoding::Decoder<'_, D>,
1452            offset: usize,
1453            _depth: fidl::encoding::Depth,
1454        ) -> fidl::Result<()> {
1455            decoder.debug_check_bounds::<Self>(offset);
1456            // Verify that padding bytes are zero.
1457            fidl::decode!(
1458                fidl_fuchsia_net_common::IpAddress,
1459                D,
1460                &mut self.address,
1461                decoder,
1462                offset + 0,
1463                _depth
1464            )?;
1465            fidl::decode!(u64, D, &mut self.interface, decoder, offset + 16, _depth)?;
1466            fidl::decode!(i64, D, &mut self.ttl, decoder, offset + 24, _depth)?;
1467            Ok(())
1468        }
1469    }
1470
1471    impl fidl::encoding::ValueTypeMarker for HostNameResolverResolveHostNameRequest {
1472        type Borrowed<'a> = &'a Self;
1473        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1474            value
1475        }
1476    }
1477
1478    unsafe impl fidl::encoding::TypeMarker for HostNameResolverResolveHostNameRequest {
1479        type Owned = Self;
1480
1481        #[inline(always)]
1482        fn inline_align(_context: fidl::encoding::Context) -> usize {
1483            8
1484        }
1485
1486        #[inline(always)]
1487        fn inline_size(_context: fidl::encoding::Context) -> usize {
1488            40
1489        }
1490    }
1491
1492    unsafe impl<D: fidl::encoding::ResourceDialect>
1493        fidl::encoding::Encode<HostNameResolverResolveHostNameRequest, D>
1494        for &HostNameResolverResolveHostNameRequest
1495    {
1496        #[inline]
1497        unsafe fn encode(
1498            self,
1499            encoder: &mut fidl::encoding::Encoder<'_, D>,
1500            offset: usize,
1501            _depth: fidl::encoding::Depth,
1502        ) -> fidl::Result<()> {
1503            encoder.debug_check_bounds::<HostNameResolverResolveHostNameRequest>(offset);
1504            // Delegate to tuple encoding.
1505            fidl::encoding::Encode::<HostNameResolverResolveHostNameRequest, D>::encode(
1506                (
1507                    <fidl::encoding::BoundedString<255> as fidl::encoding::ValueTypeMarker>::borrow(
1508                        &self.host,
1509                    ),
1510                    <i64 as fidl::encoding::ValueTypeMarker>::borrow(&self.timeout),
1511                    <HostNameResolutionOptions as fidl::encoding::ValueTypeMarker>::borrow(
1512                        &self.options,
1513                    ),
1514                ),
1515                encoder,
1516                offset,
1517                _depth,
1518            )
1519        }
1520    }
1521    unsafe impl<
1522        D: fidl::encoding::ResourceDialect,
1523        T0: fidl::encoding::Encode<fidl::encoding::BoundedString<255>, D>,
1524        T1: fidl::encoding::Encode<i64, D>,
1525        T2: fidl::encoding::Encode<HostNameResolutionOptions, D>,
1526    > fidl::encoding::Encode<HostNameResolverResolveHostNameRequest, D> for (T0, T1, T2)
1527    {
1528        #[inline]
1529        unsafe fn encode(
1530            self,
1531            encoder: &mut fidl::encoding::Encoder<'_, D>,
1532            offset: usize,
1533            depth: fidl::encoding::Depth,
1534        ) -> fidl::Result<()> {
1535            encoder.debug_check_bounds::<HostNameResolverResolveHostNameRequest>(offset);
1536            // Zero out padding regions. There's no need to apply masks
1537            // because the unmasked parts will be overwritten by fields.
1538            // Write the fields.
1539            self.0.encode(encoder, offset + 0, depth)?;
1540            self.1.encode(encoder, offset + 16, depth)?;
1541            self.2.encode(encoder, offset + 24, depth)?;
1542            Ok(())
1543        }
1544    }
1545
1546    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1547        for HostNameResolverResolveHostNameRequest
1548    {
1549        #[inline(always)]
1550        fn new_empty() -> Self {
1551            Self {
1552                host: fidl::new_empty!(fidl::encoding::BoundedString<255>, D),
1553                timeout: fidl::new_empty!(i64, D),
1554                options: fidl::new_empty!(HostNameResolutionOptions, D),
1555            }
1556        }
1557
1558        #[inline]
1559        unsafe fn decode(
1560            &mut self,
1561            decoder: &mut fidl::encoding::Decoder<'_, D>,
1562            offset: usize,
1563            _depth: fidl::encoding::Depth,
1564        ) -> fidl::Result<()> {
1565            decoder.debug_check_bounds::<Self>(offset);
1566            // Verify that padding bytes are zero.
1567            fidl::decode!(
1568                fidl::encoding::BoundedString<255>,
1569                D,
1570                &mut self.host,
1571                decoder,
1572                offset + 0,
1573                _depth
1574            )?;
1575            fidl::decode!(i64, D, &mut self.timeout, decoder, offset + 16, _depth)?;
1576            fidl::decode!(
1577                HostNameResolutionOptions,
1578                D,
1579                &mut self.options,
1580                decoder,
1581                offset + 24,
1582                _depth
1583            )?;
1584            Ok(())
1585        }
1586    }
1587
1588    impl fidl::encoding::ValueTypeMarker for HostNameResolverResolveHostNameResponse {
1589        type Borrowed<'a> = &'a Self;
1590        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1591            value
1592        }
1593    }
1594
1595    unsafe impl fidl::encoding::TypeMarker for HostNameResolverResolveHostNameResponse {
1596        type Owned = Self;
1597
1598        #[inline(always)]
1599        fn inline_align(_context: fidl::encoding::Context) -> usize {
1600            8
1601        }
1602
1603        #[inline(always)]
1604        fn inline_size(_context: fidl::encoding::Context) -> usize {
1605            16
1606        }
1607    }
1608
1609    unsafe impl<D: fidl::encoding::ResourceDialect>
1610        fidl::encoding::Encode<HostNameResolverResolveHostNameResponse, D>
1611        for &HostNameResolverResolveHostNameResponse
1612    {
1613        #[inline]
1614        unsafe fn encode(
1615            self,
1616            encoder: &mut fidl::encoding::Encoder<'_, D>,
1617            offset: usize,
1618            _depth: fidl::encoding::Depth,
1619        ) -> fidl::Result<()> {
1620            encoder.debug_check_bounds::<HostNameResolverResolveHostNameResponse>(offset);
1621            // Delegate to tuple encoding.
1622            fidl::encoding::Encode::<HostNameResolverResolveHostNameResponse, D>::encode(
1623                (
1624                    <fidl::encoding::Vector<HostAddress, 64> as fidl::encoding::ValueTypeMarker>::borrow(&self.addresses),
1625                ),
1626                encoder, offset, _depth
1627            )
1628        }
1629    }
1630    unsafe impl<
1631        D: fidl::encoding::ResourceDialect,
1632        T0: fidl::encoding::Encode<fidl::encoding::Vector<HostAddress, 64>, D>,
1633    > fidl::encoding::Encode<HostNameResolverResolveHostNameResponse, D> for (T0,)
1634    {
1635        #[inline]
1636        unsafe fn encode(
1637            self,
1638            encoder: &mut fidl::encoding::Encoder<'_, D>,
1639            offset: usize,
1640            depth: fidl::encoding::Depth,
1641        ) -> fidl::Result<()> {
1642            encoder.debug_check_bounds::<HostNameResolverResolveHostNameResponse>(offset);
1643            // Zero out padding regions. There's no need to apply masks
1644            // because the unmasked parts will be overwritten by fields.
1645            // Write the fields.
1646            self.0.encode(encoder, offset + 0, depth)?;
1647            Ok(())
1648        }
1649    }
1650
1651    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1652        for HostNameResolverResolveHostNameResponse
1653    {
1654        #[inline(always)]
1655        fn new_empty() -> Self {
1656            Self { addresses: fidl::new_empty!(fidl::encoding::Vector<HostAddress, 64>, D) }
1657        }
1658
1659        #[inline]
1660        unsafe fn decode(
1661            &mut self,
1662            decoder: &mut fidl::encoding::Decoder<'_, D>,
1663            offset: usize,
1664            _depth: fidl::encoding::Depth,
1665        ) -> fidl::Result<()> {
1666            decoder.debug_check_bounds::<Self>(offset);
1667            // Verify that padding bytes are zero.
1668            fidl::decode!(fidl::encoding::Vector<HostAddress, 64>, D, &mut self.addresses, decoder, offset + 0, _depth)?;
1669            Ok(())
1670        }
1671    }
1672
1673    impl fidl::encoding::ValueTypeMarker for HostNameSubscriptionListenerOnAddressesChangedRequest {
1674        type Borrowed<'a> = &'a Self;
1675        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1676            value
1677        }
1678    }
1679
1680    unsafe impl fidl::encoding::TypeMarker for HostNameSubscriptionListenerOnAddressesChangedRequest {
1681        type Owned = Self;
1682
1683        #[inline(always)]
1684        fn inline_align(_context: fidl::encoding::Context) -> usize {
1685            8
1686        }
1687
1688        #[inline(always)]
1689        fn inline_size(_context: fidl::encoding::Context) -> usize {
1690            16
1691        }
1692    }
1693
1694    unsafe impl<D: fidl::encoding::ResourceDialect>
1695        fidl::encoding::Encode<HostNameSubscriptionListenerOnAddressesChangedRequest, D>
1696        for &HostNameSubscriptionListenerOnAddressesChangedRequest
1697    {
1698        #[inline]
1699        unsafe fn encode(
1700            self,
1701            encoder: &mut fidl::encoding::Encoder<'_, D>,
1702            offset: usize,
1703            _depth: fidl::encoding::Depth,
1704        ) -> fidl::Result<()> {
1705            encoder.debug_check_bounds::<HostNameSubscriptionListenerOnAddressesChangedRequest>(
1706                offset,
1707            );
1708            // Delegate to tuple encoding.
1709            fidl::encoding::Encode::<HostNameSubscriptionListenerOnAddressesChangedRequest, D>::encode(
1710                (
1711                    <fidl::encoding::Vector<HostAddress, 64> as fidl::encoding::ValueTypeMarker>::borrow(&self.addresses),
1712                ),
1713                encoder, offset, _depth
1714            )
1715        }
1716    }
1717    unsafe impl<
1718        D: fidl::encoding::ResourceDialect,
1719        T0: fidl::encoding::Encode<fidl::encoding::Vector<HostAddress, 64>, D>,
1720    > fidl::encoding::Encode<HostNameSubscriptionListenerOnAddressesChangedRequest, D> for (T0,)
1721    {
1722        #[inline]
1723        unsafe fn encode(
1724            self,
1725            encoder: &mut fidl::encoding::Encoder<'_, D>,
1726            offset: usize,
1727            depth: fidl::encoding::Depth,
1728        ) -> fidl::Result<()> {
1729            encoder.debug_check_bounds::<HostNameSubscriptionListenerOnAddressesChangedRequest>(
1730                offset,
1731            );
1732            // Zero out padding regions. There's no need to apply masks
1733            // because the unmasked parts will be overwritten by fields.
1734            // Write the fields.
1735            self.0.encode(encoder, offset + 0, depth)?;
1736            Ok(())
1737        }
1738    }
1739
1740    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1741        for HostNameSubscriptionListenerOnAddressesChangedRequest
1742    {
1743        #[inline(always)]
1744        fn new_empty() -> Self {
1745            Self { addresses: fidl::new_empty!(fidl::encoding::Vector<HostAddress, 64>, D) }
1746        }
1747
1748        #[inline]
1749        unsafe fn decode(
1750            &mut self,
1751            decoder: &mut fidl::encoding::Decoder<'_, D>,
1752            offset: usize,
1753            _depth: fidl::encoding::Depth,
1754        ) -> fidl::Result<()> {
1755            decoder.debug_check_bounds::<Self>(offset);
1756            // Verify that padding bytes are zero.
1757            fidl::decode!(fidl::encoding::Vector<HostAddress, 64>, D, &mut self.addresses, decoder, offset + 0, _depth)?;
1758            Ok(())
1759        }
1760    }
1761
1762    impl fidl::encoding::ValueTypeMarker for Publication {
1763        type Borrowed<'a> = &'a Self;
1764        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1765            value
1766        }
1767    }
1768
1769    unsafe impl fidl::encoding::TypeMarker for Publication {
1770        type Owned = Self;
1771
1772        #[inline(always)]
1773        fn inline_align(_context: fidl::encoding::Context) -> usize {
1774            8
1775        }
1776
1777        #[inline(always)]
1778        fn inline_size(_context: fidl::encoding::Context) -> usize {
1779            56
1780        }
1781    }
1782
1783    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Publication, D>
1784        for &Publication
1785    {
1786        #[inline]
1787        unsafe fn encode(
1788            self,
1789            encoder: &mut fidl::encoding::Encoder<'_, D>,
1790            offset: usize,
1791            _depth: fidl::encoding::Depth,
1792        ) -> fidl::Result<()> {
1793            encoder.debug_check_bounds::<Publication>(offset);
1794            // Delegate to tuple encoding.
1795            fidl::encoding::Encode::<Publication, D>::encode(
1796                (
1797                    <u16 as fidl::encoding::ValueTypeMarker>::borrow(&self.port),
1798                    <fidl::encoding::Vector<fidl::encoding::BoundedString<255>, 256> as fidl::encoding::ValueTypeMarker>::borrow(&self.text),
1799                    <u16 as fidl::encoding::ValueTypeMarker>::borrow(&self.srv_priority),
1800                    <u16 as fidl::encoding::ValueTypeMarker>::borrow(&self.srv_weight),
1801                    <i64 as fidl::encoding::ValueTypeMarker>::borrow(&self.ptr_ttl),
1802                    <i64 as fidl::encoding::ValueTypeMarker>::borrow(&self.srv_ttl),
1803                    <i64 as fidl::encoding::ValueTypeMarker>::borrow(&self.txt_ttl),
1804                ),
1805                encoder, offset, _depth
1806            )
1807        }
1808    }
1809    unsafe impl<
1810        D: fidl::encoding::ResourceDialect,
1811        T0: fidl::encoding::Encode<u16, D>,
1812        T1: fidl::encoding::Encode<fidl::encoding::Vector<fidl::encoding::BoundedString<255>, 256>, D>,
1813        T2: fidl::encoding::Encode<u16, D>,
1814        T3: fidl::encoding::Encode<u16, D>,
1815        T4: fidl::encoding::Encode<i64, D>,
1816        T5: fidl::encoding::Encode<i64, D>,
1817        T6: fidl::encoding::Encode<i64, D>,
1818    > fidl::encoding::Encode<Publication, D> for (T0, T1, T2, T3, T4, T5, T6)
1819    {
1820        #[inline]
1821        unsafe fn encode(
1822            self,
1823            encoder: &mut fidl::encoding::Encoder<'_, D>,
1824            offset: usize,
1825            depth: fidl::encoding::Depth,
1826        ) -> fidl::Result<()> {
1827            encoder.debug_check_bounds::<Publication>(offset);
1828            // Zero out padding regions. There's no need to apply masks
1829            // because the unmasked parts will be overwritten by fields.
1830            unsafe {
1831                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(0);
1832                (ptr as *mut u64).write_unaligned(0);
1833            }
1834            unsafe {
1835                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(24);
1836                (ptr as *mut u64).write_unaligned(0);
1837            }
1838            // Write the fields.
1839            self.0.encode(encoder, offset + 0, depth)?;
1840            self.1.encode(encoder, offset + 8, depth)?;
1841            self.2.encode(encoder, offset + 24, depth)?;
1842            self.3.encode(encoder, offset + 26, depth)?;
1843            self.4.encode(encoder, offset + 32, depth)?;
1844            self.5.encode(encoder, offset + 40, depth)?;
1845            self.6.encode(encoder, offset + 48, depth)?;
1846            Ok(())
1847        }
1848    }
1849
1850    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Publication {
1851        #[inline(always)]
1852        fn new_empty() -> Self {
1853            Self {
1854                port: fidl::new_empty!(u16, D),
1855                text: fidl::new_empty!(
1856                    fidl::encoding::Vector<fidl::encoding::BoundedString<255>, 256>,
1857                    D
1858                ),
1859                srv_priority: fidl::new_empty!(u16, D),
1860                srv_weight: fidl::new_empty!(u16, D),
1861                ptr_ttl: fidl::new_empty!(i64, D),
1862                srv_ttl: fidl::new_empty!(i64, D),
1863                txt_ttl: fidl::new_empty!(i64, D),
1864            }
1865        }
1866
1867        #[inline]
1868        unsafe fn decode(
1869            &mut self,
1870            decoder: &mut fidl::encoding::Decoder<'_, D>,
1871            offset: usize,
1872            _depth: fidl::encoding::Depth,
1873        ) -> fidl::Result<()> {
1874            decoder.debug_check_bounds::<Self>(offset);
1875            // Verify that padding bytes are zero.
1876            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(0) };
1877            let padval = unsafe { (ptr as *const u64).read_unaligned() };
1878            let mask = 0xffffffffffff0000u64;
1879            let maskedval = padval & mask;
1880            if maskedval != 0 {
1881                return Err(fidl::Error::NonZeroPadding {
1882                    padding_start: offset + 0 + ((mask as u64).trailing_zeros() / 8) as usize,
1883                });
1884            }
1885            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(24) };
1886            let padval = unsafe { (ptr as *const u64).read_unaligned() };
1887            let mask = 0xffffffff00000000u64;
1888            let maskedval = padval & mask;
1889            if maskedval != 0 {
1890                return Err(fidl::Error::NonZeroPadding {
1891                    padding_start: offset + 24 + ((mask as u64).trailing_zeros() / 8) as usize,
1892                });
1893            }
1894            fidl::decode!(u16, D, &mut self.port, decoder, offset + 0, _depth)?;
1895            fidl::decode!(
1896                fidl::encoding::Vector<fidl::encoding::BoundedString<255>, 256>,
1897                D,
1898                &mut self.text,
1899                decoder,
1900                offset + 8,
1901                _depth
1902            )?;
1903            fidl::decode!(u16, D, &mut self.srv_priority, decoder, offset + 24, _depth)?;
1904            fidl::decode!(u16, D, &mut self.srv_weight, decoder, offset + 26, _depth)?;
1905            fidl::decode!(i64, D, &mut self.ptr_ttl, decoder, offset + 32, _depth)?;
1906            fidl::decode!(i64, D, &mut self.srv_ttl, decoder, offset + 40, _depth)?;
1907            fidl::decode!(i64, D, &mut self.txt_ttl, decoder, offset + 48, _depth)?;
1908            Ok(())
1909        }
1910    }
1911
1912    impl fidl::encoding::ValueTypeMarker for PublicationResponderOnPublicationRequest {
1913        type Borrowed<'a> = &'a Self;
1914        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1915            value
1916        }
1917    }
1918
1919    unsafe impl fidl::encoding::TypeMarker for PublicationResponderOnPublicationRequest {
1920        type Owned = Self;
1921
1922        #[inline(always)]
1923        fn inline_align(_context: fidl::encoding::Context) -> usize {
1924            8
1925        }
1926
1927        #[inline(always)]
1928        fn inline_size(_context: fidl::encoding::Context) -> usize {
1929            40
1930        }
1931    }
1932
1933    unsafe impl<D: fidl::encoding::ResourceDialect>
1934        fidl::encoding::Encode<PublicationResponderOnPublicationRequest, D>
1935        for &PublicationResponderOnPublicationRequest
1936    {
1937        #[inline]
1938        unsafe fn encode(
1939            self,
1940            encoder: &mut fidl::encoding::Encoder<'_, D>,
1941            offset: usize,
1942            _depth: fidl::encoding::Depth,
1943        ) -> fidl::Result<()> {
1944            encoder.debug_check_bounds::<PublicationResponderOnPublicationRequest>(offset);
1945            // Delegate to tuple encoding.
1946            fidl::encoding::Encode::<PublicationResponderOnPublicationRequest, D>::encode(
1947                (
1948                    <PublicationCause as fidl::encoding::ValueTypeMarker>::borrow(&self.publication_cause),
1949                    <fidl::encoding::Optional<fidl::encoding::BoundedString<63>> as fidl::encoding::ValueTypeMarker>::borrow(&self.subtype),
1950                    <fidl::encoding::Vector<fidl_fuchsia_net_common::IpAddress, 64> as fidl::encoding::ValueTypeMarker>::borrow(&self.source_addresses),
1951                ),
1952                encoder, offset, _depth
1953            )
1954        }
1955    }
1956    unsafe impl<
1957        D: fidl::encoding::ResourceDialect,
1958        T0: fidl::encoding::Encode<PublicationCause, D>,
1959        T1: fidl::encoding::Encode<fidl::encoding::Optional<fidl::encoding::BoundedString<63>>, D>,
1960        T2: fidl::encoding::Encode<fidl::encoding::Vector<fidl_fuchsia_net_common::IpAddress, 64>, D>,
1961    > fidl::encoding::Encode<PublicationResponderOnPublicationRequest, D> for (T0, T1, T2)
1962    {
1963        #[inline]
1964        unsafe fn encode(
1965            self,
1966            encoder: &mut fidl::encoding::Encoder<'_, D>,
1967            offset: usize,
1968            depth: fidl::encoding::Depth,
1969        ) -> fidl::Result<()> {
1970            encoder.debug_check_bounds::<PublicationResponderOnPublicationRequest>(offset);
1971            // Zero out padding regions. There's no need to apply masks
1972            // because the unmasked parts will be overwritten by fields.
1973            unsafe {
1974                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(0);
1975                (ptr as *mut u64).write_unaligned(0);
1976            }
1977            // Write the fields.
1978            self.0.encode(encoder, offset + 0, depth)?;
1979            self.1.encode(encoder, offset + 8, depth)?;
1980            self.2.encode(encoder, offset + 24, depth)?;
1981            Ok(())
1982        }
1983    }
1984
1985    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1986        for PublicationResponderOnPublicationRequest
1987    {
1988        #[inline(always)]
1989        fn new_empty() -> Self {
1990            Self {
1991                publication_cause: fidl::new_empty!(PublicationCause, D),
1992                subtype: fidl::new_empty!(
1993                    fidl::encoding::Optional<fidl::encoding::BoundedString<63>>,
1994                    D
1995                ),
1996                source_addresses: fidl::new_empty!(fidl::encoding::Vector<fidl_fuchsia_net_common::IpAddress, 64>, D),
1997            }
1998        }
1999
2000        #[inline]
2001        unsafe fn decode(
2002            &mut self,
2003            decoder: &mut fidl::encoding::Decoder<'_, D>,
2004            offset: usize,
2005            _depth: fidl::encoding::Depth,
2006        ) -> fidl::Result<()> {
2007            decoder.debug_check_bounds::<Self>(offset);
2008            // Verify that padding bytes are zero.
2009            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(0) };
2010            let padval = unsafe { (ptr as *const u64).read_unaligned() };
2011            let mask = 0xffffffff00000000u64;
2012            let maskedval = padval & mask;
2013            if maskedval != 0 {
2014                return Err(fidl::Error::NonZeroPadding {
2015                    padding_start: offset + 0 + ((mask as u64).trailing_zeros() / 8) as usize,
2016                });
2017            }
2018            fidl::decode!(
2019                PublicationCause,
2020                D,
2021                &mut self.publication_cause,
2022                decoder,
2023                offset + 0,
2024                _depth
2025            )?;
2026            fidl::decode!(
2027                fidl::encoding::Optional<fidl::encoding::BoundedString<63>>,
2028                D,
2029                &mut self.subtype,
2030                decoder,
2031                offset + 8,
2032                _depth
2033            )?;
2034            fidl::decode!(fidl::encoding::Vector<fidl_fuchsia_net_common::IpAddress, 64>, D, &mut self.source_addresses, decoder, offset + 24, _depth)?;
2035            Ok(())
2036        }
2037    }
2038
2039    impl fidl::encoding::ValueTypeMarker for PublicationResponderOnPublicationResponse {
2040        type Borrowed<'a> = &'a Self;
2041        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2042            value
2043        }
2044    }
2045
2046    unsafe impl fidl::encoding::TypeMarker for PublicationResponderOnPublicationResponse {
2047        type Owned = Self;
2048
2049        #[inline(always)]
2050        fn inline_align(_context: fidl::encoding::Context) -> usize {
2051            8
2052        }
2053
2054        #[inline(always)]
2055        fn inline_size(_context: fidl::encoding::Context) -> usize {
2056            8
2057        }
2058    }
2059
2060    unsafe impl<D: fidl::encoding::ResourceDialect>
2061        fidl::encoding::Encode<PublicationResponderOnPublicationResponse, D>
2062        for &PublicationResponderOnPublicationResponse
2063    {
2064        #[inline]
2065        unsafe fn encode(
2066            self,
2067            encoder: &mut fidl::encoding::Encoder<'_, D>,
2068            offset: usize,
2069            _depth: fidl::encoding::Depth,
2070        ) -> fidl::Result<()> {
2071            encoder.debug_check_bounds::<PublicationResponderOnPublicationResponse>(offset);
2072            // Delegate to tuple encoding.
2073            fidl::encoding::Encode::<PublicationResponderOnPublicationResponse, D>::encode(
2074                (<fidl::encoding::Boxed<Publication> as fidl::encoding::ValueTypeMarker>::borrow(
2075                    &self.publication,
2076                ),),
2077                encoder,
2078                offset,
2079                _depth,
2080            )
2081        }
2082    }
2083    unsafe impl<
2084        D: fidl::encoding::ResourceDialect,
2085        T0: fidl::encoding::Encode<fidl::encoding::Boxed<Publication>, D>,
2086    > fidl::encoding::Encode<PublicationResponderOnPublicationResponse, D> for (T0,)
2087    {
2088        #[inline]
2089        unsafe fn encode(
2090            self,
2091            encoder: &mut fidl::encoding::Encoder<'_, D>,
2092            offset: usize,
2093            depth: fidl::encoding::Depth,
2094        ) -> fidl::Result<()> {
2095            encoder.debug_check_bounds::<PublicationResponderOnPublicationResponse>(offset);
2096            // Zero out padding regions. There's no need to apply masks
2097            // because the unmasked parts will be overwritten by fields.
2098            // Write the fields.
2099            self.0.encode(encoder, offset + 0, depth)?;
2100            Ok(())
2101        }
2102    }
2103
2104    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2105        for PublicationResponderOnPublicationResponse
2106    {
2107        #[inline(always)]
2108        fn new_empty() -> Self {
2109            Self { publication: fidl::new_empty!(fidl::encoding::Boxed<Publication>, D) }
2110        }
2111
2112        #[inline]
2113        unsafe fn decode(
2114            &mut self,
2115            decoder: &mut fidl::encoding::Decoder<'_, D>,
2116            offset: usize,
2117            _depth: fidl::encoding::Depth,
2118        ) -> fidl::Result<()> {
2119            decoder.debug_check_bounds::<Self>(offset);
2120            // Verify that padding bytes are zero.
2121            fidl::decode!(
2122                fidl::encoding::Boxed<Publication>,
2123                D,
2124                &mut self.publication,
2125                decoder,
2126                offset + 0,
2127                _depth
2128            )?;
2129            Ok(())
2130        }
2131    }
2132
2133    impl fidl::encoding::ValueTypeMarker for PublicationResponderSetSubtypesRequest {
2134        type Borrowed<'a> = &'a Self;
2135        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2136            value
2137        }
2138    }
2139
2140    unsafe impl fidl::encoding::TypeMarker for PublicationResponderSetSubtypesRequest {
2141        type Owned = Self;
2142
2143        #[inline(always)]
2144        fn inline_align(_context: fidl::encoding::Context) -> usize {
2145            8
2146        }
2147
2148        #[inline(always)]
2149        fn inline_size(_context: fidl::encoding::Context) -> usize {
2150            16
2151        }
2152    }
2153
2154    unsafe impl<D: fidl::encoding::ResourceDialect>
2155        fidl::encoding::Encode<PublicationResponderSetSubtypesRequest, D>
2156        for &PublicationResponderSetSubtypesRequest
2157    {
2158        #[inline]
2159        unsafe fn encode(
2160            self,
2161            encoder: &mut fidl::encoding::Encoder<'_, D>,
2162            offset: usize,
2163            _depth: fidl::encoding::Depth,
2164        ) -> fidl::Result<()> {
2165            encoder.debug_check_bounds::<PublicationResponderSetSubtypesRequest>(offset);
2166            // Delegate to tuple encoding.
2167            fidl::encoding::Encode::<PublicationResponderSetSubtypesRequest, D>::encode(
2168                (
2169                    <fidl::encoding::Vector<fidl::encoding::BoundedString<63>, 256> as fidl::encoding::ValueTypeMarker>::borrow(&self.subtypes),
2170                ),
2171                encoder, offset, _depth
2172            )
2173        }
2174    }
2175    unsafe impl<
2176        D: fidl::encoding::ResourceDialect,
2177        T0: fidl::encoding::Encode<fidl::encoding::Vector<fidl::encoding::BoundedString<63>, 256>, D>,
2178    > fidl::encoding::Encode<PublicationResponderSetSubtypesRequest, D> for (T0,)
2179    {
2180        #[inline]
2181        unsafe fn encode(
2182            self,
2183            encoder: &mut fidl::encoding::Encoder<'_, D>,
2184            offset: usize,
2185            depth: fidl::encoding::Depth,
2186        ) -> fidl::Result<()> {
2187            encoder.debug_check_bounds::<PublicationResponderSetSubtypesRequest>(offset);
2188            // Zero out padding regions. There's no need to apply masks
2189            // because the unmasked parts will be overwritten by fields.
2190            // Write the fields.
2191            self.0.encode(encoder, offset + 0, depth)?;
2192            Ok(())
2193        }
2194    }
2195
2196    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2197        for PublicationResponderSetSubtypesRequest
2198    {
2199        #[inline(always)]
2200        fn new_empty() -> Self {
2201            Self {
2202                subtypes: fidl::new_empty!(
2203                    fidl::encoding::Vector<fidl::encoding::BoundedString<63>, 256>,
2204                    D
2205                ),
2206            }
2207        }
2208
2209        #[inline]
2210        unsafe fn decode(
2211            &mut self,
2212            decoder: &mut fidl::encoding::Decoder<'_, D>,
2213            offset: usize,
2214            _depth: fidl::encoding::Depth,
2215        ) -> fidl::Result<()> {
2216            decoder.debug_check_bounds::<Self>(offset);
2217            // Verify that padding bytes are zero.
2218            fidl::decode!(
2219                fidl::encoding::Vector<fidl::encoding::BoundedString<63>, 256>,
2220                D,
2221                &mut self.subtypes,
2222                decoder,
2223                offset + 0,
2224                _depth
2225            )?;
2226            Ok(())
2227        }
2228    }
2229
2230    impl fidl::encoding::ValueTypeMarker for ResolverResolveHostNameRequest {
2231        type Borrowed<'a> = &'a Self;
2232        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2233            value
2234        }
2235    }
2236
2237    unsafe impl fidl::encoding::TypeMarker for ResolverResolveHostNameRequest {
2238        type Owned = Self;
2239
2240        #[inline(always)]
2241        fn inline_align(_context: fidl::encoding::Context) -> usize {
2242            8
2243        }
2244
2245        #[inline(always)]
2246        fn inline_size(_context: fidl::encoding::Context) -> usize {
2247            24
2248        }
2249    }
2250
2251    unsafe impl<D: fidl::encoding::ResourceDialect>
2252        fidl::encoding::Encode<ResolverResolveHostNameRequest, D>
2253        for &ResolverResolveHostNameRequest
2254    {
2255        #[inline]
2256        unsafe fn encode(
2257            self,
2258            encoder: &mut fidl::encoding::Encoder<'_, D>,
2259            offset: usize,
2260            _depth: fidl::encoding::Depth,
2261        ) -> fidl::Result<()> {
2262            encoder.debug_check_bounds::<ResolverResolveHostNameRequest>(offset);
2263            // Delegate to tuple encoding.
2264            fidl::encoding::Encode::<ResolverResolveHostNameRequest, D>::encode(
2265                (
2266                    <fidl::encoding::BoundedString<255> as fidl::encoding::ValueTypeMarker>::borrow(
2267                        &self.host,
2268                    ),
2269                    <i64 as fidl::encoding::ValueTypeMarker>::borrow(&self.timeout),
2270                ),
2271                encoder,
2272                offset,
2273                _depth,
2274            )
2275        }
2276    }
2277    unsafe impl<
2278        D: fidl::encoding::ResourceDialect,
2279        T0: fidl::encoding::Encode<fidl::encoding::BoundedString<255>, D>,
2280        T1: fidl::encoding::Encode<i64, D>,
2281    > fidl::encoding::Encode<ResolverResolveHostNameRequest, D> for (T0, T1)
2282    {
2283        #[inline]
2284        unsafe fn encode(
2285            self,
2286            encoder: &mut fidl::encoding::Encoder<'_, D>,
2287            offset: usize,
2288            depth: fidl::encoding::Depth,
2289        ) -> fidl::Result<()> {
2290            encoder.debug_check_bounds::<ResolverResolveHostNameRequest>(offset);
2291            // Zero out padding regions. There's no need to apply masks
2292            // because the unmasked parts will be overwritten by fields.
2293            // Write the fields.
2294            self.0.encode(encoder, offset + 0, depth)?;
2295            self.1.encode(encoder, offset + 16, depth)?;
2296            Ok(())
2297        }
2298    }
2299
2300    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2301        for ResolverResolveHostNameRequest
2302    {
2303        #[inline(always)]
2304        fn new_empty() -> Self {
2305            Self {
2306                host: fidl::new_empty!(fidl::encoding::BoundedString<255>, D),
2307                timeout: fidl::new_empty!(i64, D),
2308            }
2309        }
2310
2311        #[inline]
2312        unsafe fn decode(
2313            &mut self,
2314            decoder: &mut fidl::encoding::Decoder<'_, D>,
2315            offset: usize,
2316            _depth: fidl::encoding::Depth,
2317        ) -> fidl::Result<()> {
2318            decoder.debug_check_bounds::<Self>(offset);
2319            // Verify that padding bytes are zero.
2320            fidl::decode!(
2321                fidl::encoding::BoundedString<255>,
2322                D,
2323                &mut self.host,
2324                decoder,
2325                offset + 0,
2326                _depth
2327            )?;
2328            fidl::decode!(i64, D, &mut self.timeout, decoder, offset + 16, _depth)?;
2329            Ok(())
2330        }
2331    }
2332
2333    impl fidl::encoding::ValueTypeMarker for ResolverResolveHostNameResponse {
2334        type Borrowed<'a> = &'a Self;
2335        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2336            value
2337        }
2338    }
2339
2340    unsafe impl fidl::encoding::TypeMarker for ResolverResolveHostNameResponse {
2341        type Owned = Self;
2342
2343        #[inline(always)]
2344        fn inline_align(_context: fidl::encoding::Context) -> usize {
2345            8
2346        }
2347
2348        #[inline(always)]
2349        fn inline_size(_context: fidl::encoding::Context) -> usize {
2350            16
2351        }
2352    }
2353
2354    unsafe impl<D: fidl::encoding::ResourceDialect>
2355        fidl::encoding::Encode<ResolverResolveHostNameResponse, D>
2356        for &ResolverResolveHostNameResponse
2357    {
2358        #[inline]
2359        unsafe fn encode(
2360            self,
2361            encoder: &mut fidl::encoding::Encoder<'_, D>,
2362            offset: usize,
2363            _depth: fidl::encoding::Depth,
2364        ) -> fidl::Result<()> {
2365            encoder.debug_check_bounds::<ResolverResolveHostNameResponse>(offset);
2366            // Delegate to tuple encoding.
2367            fidl::encoding::Encode::<ResolverResolveHostNameResponse, D>::encode(
2368                (
2369                    <fidl::encoding::Boxed<fidl_fuchsia_net_common::Ipv4Address> as fidl::encoding::ValueTypeMarker>::borrow(&self.v4_address),
2370                    <fidl::encoding::Boxed<fidl_fuchsia_net_common::Ipv6Address> as fidl::encoding::ValueTypeMarker>::borrow(&self.v6_address),
2371                ),
2372                encoder, offset, _depth
2373            )
2374        }
2375    }
2376    unsafe impl<
2377        D: fidl::encoding::ResourceDialect,
2378        T0: fidl::encoding::Encode<fidl::encoding::Boxed<fidl_fuchsia_net_common::Ipv4Address>, D>,
2379        T1: fidl::encoding::Encode<fidl::encoding::Boxed<fidl_fuchsia_net_common::Ipv6Address>, D>,
2380    > fidl::encoding::Encode<ResolverResolveHostNameResponse, D> for (T0, T1)
2381    {
2382        #[inline]
2383        unsafe fn encode(
2384            self,
2385            encoder: &mut fidl::encoding::Encoder<'_, D>,
2386            offset: usize,
2387            depth: fidl::encoding::Depth,
2388        ) -> fidl::Result<()> {
2389            encoder.debug_check_bounds::<ResolverResolveHostNameResponse>(offset);
2390            // Zero out padding regions. There's no need to apply masks
2391            // because the unmasked parts will be overwritten by fields.
2392            // Write the fields.
2393            self.0.encode(encoder, offset + 0, depth)?;
2394            self.1.encode(encoder, offset + 8, depth)?;
2395            Ok(())
2396        }
2397    }
2398
2399    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2400        for ResolverResolveHostNameResponse
2401    {
2402        #[inline(always)]
2403        fn new_empty() -> Self {
2404            Self {
2405                v4_address: fidl::new_empty!(
2406                    fidl::encoding::Boxed<fidl_fuchsia_net_common::Ipv4Address>,
2407                    D
2408                ),
2409                v6_address: fidl::new_empty!(
2410                    fidl::encoding::Boxed<fidl_fuchsia_net_common::Ipv6Address>,
2411                    D
2412                ),
2413            }
2414        }
2415
2416        #[inline]
2417        unsafe fn decode(
2418            &mut self,
2419            decoder: &mut fidl::encoding::Decoder<'_, D>,
2420            offset: usize,
2421            _depth: fidl::encoding::Depth,
2422        ) -> fidl::Result<()> {
2423            decoder.debug_check_bounds::<Self>(offset);
2424            // Verify that padding bytes are zero.
2425            fidl::decode!(
2426                fidl::encoding::Boxed<fidl_fuchsia_net_common::Ipv4Address>,
2427                D,
2428                &mut self.v4_address,
2429                decoder,
2430                offset + 0,
2431                _depth
2432            )?;
2433            fidl::decode!(
2434                fidl::encoding::Boxed<fidl_fuchsia_net_common::Ipv6Address>,
2435                D,
2436                &mut self.v6_address,
2437                decoder,
2438                offset + 8,
2439                _depth
2440            )?;
2441            Ok(())
2442        }
2443    }
2444
2445    impl fidl::encoding::ValueTypeMarker for ServiceInstancePublicationResponderOnPublicationRequest {
2446        type Borrowed<'a> = &'a Self;
2447        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2448            value
2449        }
2450    }
2451
2452    unsafe impl fidl::encoding::TypeMarker for ServiceInstancePublicationResponderOnPublicationRequest {
2453        type Owned = Self;
2454
2455        #[inline(always)]
2456        fn inline_align(_context: fidl::encoding::Context) -> usize {
2457            8
2458        }
2459
2460        #[inline(always)]
2461        fn inline_size(_context: fidl::encoding::Context) -> usize {
2462            40
2463        }
2464    }
2465
2466    unsafe impl<D: fidl::encoding::ResourceDialect>
2467        fidl::encoding::Encode<ServiceInstancePublicationResponderOnPublicationRequest, D>
2468        for &ServiceInstancePublicationResponderOnPublicationRequest
2469    {
2470        #[inline]
2471        unsafe fn encode(
2472            self,
2473            encoder: &mut fidl::encoding::Encoder<'_, D>,
2474            offset: usize,
2475            _depth: fidl::encoding::Depth,
2476        ) -> fidl::Result<()> {
2477            encoder.debug_check_bounds::<ServiceInstancePublicationResponderOnPublicationRequest>(
2478                offset,
2479            );
2480            // Delegate to tuple encoding.
2481            fidl::encoding::Encode::<ServiceInstancePublicationResponderOnPublicationRequest, D>::encode(
2482                (
2483                    <ServiceInstancePublicationCause as fidl::encoding::ValueTypeMarker>::borrow(&self.publication_cause),
2484                    <fidl::encoding::Optional<fidl::encoding::BoundedString<63>> as fidl::encoding::ValueTypeMarker>::borrow(&self.subtype),
2485                    <fidl::encoding::Vector<fidl_fuchsia_net_common::IpAddress, 64> as fidl::encoding::ValueTypeMarker>::borrow(&self.source_addresses),
2486                ),
2487                encoder, offset, _depth
2488            )
2489        }
2490    }
2491    unsafe impl<
2492        D: fidl::encoding::ResourceDialect,
2493        T0: fidl::encoding::Encode<ServiceInstancePublicationCause, D>,
2494        T1: fidl::encoding::Encode<fidl::encoding::Optional<fidl::encoding::BoundedString<63>>, D>,
2495        T2: fidl::encoding::Encode<fidl::encoding::Vector<fidl_fuchsia_net_common::IpAddress, 64>, D>,
2496    > fidl::encoding::Encode<ServiceInstancePublicationResponderOnPublicationRequest, D>
2497        for (T0, T1, T2)
2498    {
2499        #[inline]
2500        unsafe fn encode(
2501            self,
2502            encoder: &mut fidl::encoding::Encoder<'_, D>,
2503            offset: usize,
2504            depth: fidl::encoding::Depth,
2505        ) -> fidl::Result<()> {
2506            encoder.debug_check_bounds::<ServiceInstancePublicationResponderOnPublicationRequest>(
2507                offset,
2508            );
2509            // Zero out padding regions. There's no need to apply masks
2510            // because the unmasked parts will be overwritten by fields.
2511            unsafe {
2512                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(0);
2513                (ptr as *mut u64).write_unaligned(0);
2514            }
2515            // Write the fields.
2516            self.0.encode(encoder, offset + 0, depth)?;
2517            self.1.encode(encoder, offset + 8, depth)?;
2518            self.2.encode(encoder, offset + 24, depth)?;
2519            Ok(())
2520        }
2521    }
2522
2523    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2524        for ServiceInstancePublicationResponderOnPublicationRequest
2525    {
2526        #[inline(always)]
2527        fn new_empty() -> Self {
2528            Self {
2529                publication_cause: fidl::new_empty!(ServiceInstancePublicationCause, D),
2530                subtype: fidl::new_empty!(
2531                    fidl::encoding::Optional<fidl::encoding::BoundedString<63>>,
2532                    D
2533                ),
2534                source_addresses: fidl::new_empty!(fidl::encoding::Vector<fidl_fuchsia_net_common::IpAddress, 64>, D),
2535            }
2536        }
2537
2538        #[inline]
2539        unsafe fn decode(
2540            &mut self,
2541            decoder: &mut fidl::encoding::Decoder<'_, D>,
2542            offset: usize,
2543            _depth: fidl::encoding::Depth,
2544        ) -> fidl::Result<()> {
2545            decoder.debug_check_bounds::<Self>(offset);
2546            // Verify that padding bytes are zero.
2547            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(0) };
2548            let padval = unsafe { (ptr as *const u64).read_unaligned() };
2549            let mask = 0xffffffff00000000u64;
2550            let maskedval = padval & mask;
2551            if maskedval != 0 {
2552                return Err(fidl::Error::NonZeroPadding {
2553                    padding_start: offset + 0 + ((mask as u64).trailing_zeros() / 8) as usize,
2554                });
2555            }
2556            fidl::decode!(
2557                ServiceInstancePublicationCause,
2558                D,
2559                &mut self.publication_cause,
2560                decoder,
2561                offset + 0,
2562                _depth
2563            )?;
2564            fidl::decode!(
2565                fidl::encoding::Optional<fidl::encoding::BoundedString<63>>,
2566                D,
2567                &mut self.subtype,
2568                decoder,
2569                offset + 8,
2570                _depth
2571            )?;
2572            fidl::decode!(fidl::encoding::Vector<fidl_fuchsia_net_common::IpAddress, 64>, D, &mut self.source_addresses, decoder, offset + 24, _depth)?;
2573            Ok(())
2574        }
2575    }
2576
2577    impl fidl::encoding::ValueTypeMarker for ServiceInstancePublicationResponderSetSubtypesRequest {
2578        type Borrowed<'a> = &'a Self;
2579        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2580            value
2581        }
2582    }
2583
2584    unsafe impl fidl::encoding::TypeMarker for ServiceInstancePublicationResponderSetSubtypesRequest {
2585        type Owned = Self;
2586
2587        #[inline(always)]
2588        fn inline_align(_context: fidl::encoding::Context) -> usize {
2589            8
2590        }
2591
2592        #[inline(always)]
2593        fn inline_size(_context: fidl::encoding::Context) -> usize {
2594            16
2595        }
2596    }
2597
2598    unsafe impl<D: fidl::encoding::ResourceDialect>
2599        fidl::encoding::Encode<ServiceInstancePublicationResponderSetSubtypesRequest, D>
2600        for &ServiceInstancePublicationResponderSetSubtypesRequest
2601    {
2602        #[inline]
2603        unsafe fn encode(
2604            self,
2605            encoder: &mut fidl::encoding::Encoder<'_, D>,
2606            offset: usize,
2607            _depth: fidl::encoding::Depth,
2608        ) -> fidl::Result<()> {
2609            encoder.debug_check_bounds::<ServiceInstancePublicationResponderSetSubtypesRequest>(
2610                offset,
2611            );
2612            // Delegate to tuple encoding.
2613            fidl::encoding::Encode::<ServiceInstancePublicationResponderSetSubtypesRequest, D>::encode(
2614                (
2615                    <fidl::encoding::Vector<fidl::encoding::BoundedString<63>, 256> as fidl::encoding::ValueTypeMarker>::borrow(&self.subtypes),
2616                ),
2617                encoder, offset, _depth
2618            )
2619        }
2620    }
2621    unsafe impl<
2622        D: fidl::encoding::ResourceDialect,
2623        T0: fidl::encoding::Encode<fidl::encoding::Vector<fidl::encoding::BoundedString<63>, 256>, D>,
2624    > fidl::encoding::Encode<ServiceInstancePublicationResponderSetSubtypesRequest, D> for (T0,)
2625    {
2626        #[inline]
2627        unsafe fn encode(
2628            self,
2629            encoder: &mut fidl::encoding::Encoder<'_, D>,
2630            offset: usize,
2631            depth: fidl::encoding::Depth,
2632        ) -> fidl::Result<()> {
2633            encoder.debug_check_bounds::<ServiceInstancePublicationResponderSetSubtypesRequest>(
2634                offset,
2635            );
2636            // Zero out padding regions. There's no need to apply masks
2637            // because the unmasked parts will be overwritten by fields.
2638            // Write the fields.
2639            self.0.encode(encoder, offset + 0, depth)?;
2640            Ok(())
2641        }
2642    }
2643
2644    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2645        for ServiceInstancePublicationResponderSetSubtypesRequest
2646    {
2647        #[inline(always)]
2648        fn new_empty() -> Self {
2649            Self {
2650                subtypes: fidl::new_empty!(
2651                    fidl::encoding::Vector<fidl::encoding::BoundedString<63>, 256>,
2652                    D
2653                ),
2654            }
2655        }
2656
2657        #[inline]
2658        unsafe fn decode(
2659            &mut self,
2660            decoder: &mut fidl::encoding::Decoder<'_, D>,
2661            offset: usize,
2662            _depth: fidl::encoding::Depth,
2663        ) -> fidl::Result<()> {
2664            decoder.debug_check_bounds::<Self>(offset);
2665            // Verify that padding bytes are zero.
2666            fidl::decode!(
2667                fidl::encoding::Vector<fidl::encoding::BoundedString<63>, 256>,
2668                D,
2669                &mut self.subtypes,
2670                decoder,
2671                offset + 0,
2672                _depth
2673            )?;
2674            Ok(())
2675        }
2676    }
2677
2678    impl fidl::encoding::ValueTypeMarker for ServiceInstancePublicationResponderOnPublicationResponse {
2679        type Borrowed<'a> = &'a Self;
2680        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2681            value
2682        }
2683    }
2684
2685    unsafe impl fidl::encoding::TypeMarker
2686        for ServiceInstancePublicationResponderOnPublicationResponse
2687    {
2688        type Owned = Self;
2689
2690        #[inline(always)]
2691        fn inline_align(_context: fidl::encoding::Context) -> usize {
2692            8
2693        }
2694
2695        #[inline(always)]
2696        fn inline_size(_context: fidl::encoding::Context) -> usize {
2697            16
2698        }
2699    }
2700
2701    unsafe impl<D: fidl::encoding::ResourceDialect>
2702        fidl::encoding::Encode<ServiceInstancePublicationResponderOnPublicationResponse, D>
2703        for &ServiceInstancePublicationResponderOnPublicationResponse
2704    {
2705        #[inline]
2706        unsafe fn encode(
2707            self,
2708            encoder: &mut fidl::encoding::Encoder<'_, D>,
2709            offset: usize,
2710            _depth: fidl::encoding::Depth,
2711        ) -> fidl::Result<()> {
2712            encoder.debug_check_bounds::<ServiceInstancePublicationResponderOnPublicationResponse>(
2713                offset,
2714            );
2715            // Delegate to tuple encoding.
2716            fidl::encoding::Encode::<ServiceInstancePublicationResponderOnPublicationResponse, D>::encode(
2717                (
2718                    <ServiceInstancePublication as fidl::encoding::ValueTypeMarker>::borrow(&self.publication),
2719                ),
2720                encoder, offset, _depth
2721            )
2722        }
2723    }
2724    unsafe impl<
2725        D: fidl::encoding::ResourceDialect,
2726        T0: fidl::encoding::Encode<ServiceInstancePublication, D>,
2727    > fidl::encoding::Encode<ServiceInstancePublicationResponderOnPublicationResponse, D> for (T0,)
2728    {
2729        #[inline]
2730        unsafe fn encode(
2731            self,
2732            encoder: &mut fidl::encoding::Encoder<'_, D>,
2733            offset: usize,
2734            depth: fidl::encoding::Depth,
2735        ) -> fidl::Result<()> {
2736            encoder.debug_check_bounds::<ServiceInstancePublicationResponderOnPublicationResponse>(
2737                offset,
2738            );
2739            // Zero out padding regions. There's no need to apply masks
2740            // because the unmasked parts will be overwritten by fields.
2741            // Write the fields.
2742            self.0.encode(encoder, offset + 0, depth)?;
2743            Ok(())
2744        }
2745    }
2746
2747    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2748        for ServiceInstancePublicationResponderOnPublicationResponse
2749    {
2750        #[inline(always)]
2751        fn new_empty() -> Self {
2752            Self { publication: fidl::new_empty!(ServiceInstancePublication, D) }
2753        }
2754
2755        #[inline]
2756        unsafe fn decode(
2757            &mut self,
2758            decoder: &mut fidl::encoding::Decoder<'_, D>,
2759            offset: usize,
2760            _depth: fidl::encoding::Depth,
2761        ) -> fidl::Result<()> {
2762            decoder.debug_check_bounds::<Self>(offset);
2763            // Verify that padding bytes are zero.
2764            fidl::decode!(
2765                ServiceInstancePublication,
2766                D,
2767                &mut self.publication,
2768                decoder,
2769                offset + 0,
2770                _depth
2771            )?;
2772            Ok(())
2773        }
2774    }
2775
2776    impl fidl::encoding::ValueTypeMarker for ServiceInstanceResolverResolveServiceInstanceRequest {
2777        type Borrowed<'a> = &'a Self;
2778        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2779            value
2780        }
2781    }
2782
2783    unsafe impl fidl::encoding::TypeMarker for ServiceInstanceResolverResolveServiceInstanceRequest {
2784        type Owned = Self;
2785
2786        #[inline(always)]
2787        fn inline_align(_context: fidl::encoding::Context) -> usize {
2788            8
2789        }
2790
2791        #[inline(always)]
2792        fn inline_size(_context: fidl::encoding::Context) -> usize {
2793            56
2794        }
2795    }
2796
2797    unsafe impl<D: fidl::encoding::ResourceDialect>
2798        fidl::encoding::Encode<ServiceInstanceResolverResolveServiceInstanceRequest, D>
2799        for &ServiceInstanceResolverResolveServiceInstanceRequest
2800    {
2801        #[inline]
2802        unsafe fn encode(
2803            self,
2804            encoder: &mut fidl::encoding::Encoder<'_, D>,
2805            offset: usize,
2806            _depth: fidl::encoding::Depth,
2807        ) -> fidl::Result<()> {
2808            encoder
2809                .debug_check_bounds::<ServiceInstanceResolverResolveServiceInstanceRequest>(offset);
2810            // Delegate to tuple encoding.
2811            fidl::encoding::Encode::<ServiceInstanceResolverResolveServiceInstanceRequest, D>::encode(
2812                (
2813                    <fidl::encoding::BoundedString<22> as fidl::encoding::ValueTypeMarker>::borrow(&self.service),
2814                    <fidl::encoding::BoundedString<63> as fidl::encoding::ValueTypeMarker>::borrow(&self.instance),
2815                    <i64 as fidl::encoding::ValueTypeMarker>::borrow(&self.timeout),
2816                    <ServiceInstanceResolutionOptions as fidl::encoding::ValueTypeMarker>::borrow(&self.options),
2817                ),
2818                encoder, offset, _depth
2819            )
2820        }
2821    }
2822    unsafe impl<
2823        D: fidl::encoding::ResourceDialect,
2824        T0: fidl::encoding::Encode<fidl::encoding::BoundedString<22>, D>,
2825        T1: fidl::encoding::Encode<fidl::encoding::BoundedString<63>, D>,
2826        T2: fidl::encoding::Encode<i64, D>,
2827        T3: fidl::encoding::Encode<ServiceInstanceResolutionOptions, D>,
2828    > fidl::encoding::Encode<ServiceInstanceResolverResolveServiceInstanceRequest, D>
2829        for (T0, T1, T2, T3)
2830    {
2831        #[inline]
2832        unsafe fn encode(
2833            self,
2834            encoder: &mut fidl::encoding::Encoder<'_, D>,
2835            offset: usize,
2836            depth: fidl::encoding::Depth,
2837        ) -> fidl::Result<()> {
2838            encoder
2839                .debug_check_bounds::<ServiceInstanceResolverResolveServiceInstanceRequest>(offset);
2840            // Zero out padding regions. There's no need to apply masks
2841            // because the unmasked parts will be overwritten by fields.
2842            // Write the fields.
2843            self.0.encode(encoder, offset + 0, depth)?;
2844            self.1.encode(encoder, offset + 16, depth)?;
2845            self.2.encode(encoder, offset + 32, depth)?;
2846            self.3.encode(encoder, offset + 40, depth)?;
2847            Ok(())
2848        }
2849    }
2850
2851    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2852        for ServiceInstanceResolverResolveServiceInstanceRequest
2853    {
2854        #[inline(always)]
2855        fn new_empty() -> Self {
2856            Self {
2857                service: fidl::new_empty!(fidl::encoding::BoundedString<22>, D),
2858                instance: fidl::new_empty!(fidl::encoding::BoundedString<63>, D),
2859                timeout: fidl::new_empty!(i64, D),
2860                options: fidl::new_empty!(ServiceInstanceResolutionOptions, D),
2861            }
2862        }
2863
2864        #[inline]
2865        unsafe fn decode(
2866            &mut self,
2867            decoder: &mut fidl::encoding::Decoder<'_, D>,
2868            offset: usize,
2869            _depth: fidl::encoding::Depth,
2870        ) -> fidl::Result<()> {
2871            decoder.debug_check_bounds::<Self>(offset);
2872            // Verify that padding bytes are zero.
2873            fidl::decode!(
2874                fidl::encoding::BoundedString<22>,
2875                D,
2876                &mut self.service,
2877                decoder,
2878                offset + 0,
2879                _depth
2880            )?;
2881            fidl::decode!(
2882                fidl::encoding::BoundedString<63>,
2883                D,
2884                &mut self.instance,
2885                decoder,
2886                offset + 16,
2887                _depth
2888            )?;
2889            fidl::decode!(i64, D, &mut self.timeout, decoder, offset + 32, _depth)?;
2890            fidl::decode!(
2891                ServiceInstanceResolutionOptions,
2892                D,
2893                &mut self.options,
2894                decoder,
2895                offset + 40,
2896                _depth
2897            )?;
2898            Ok(())
2899        }
2900    }
2901
2902    impl fidl::encoding::ValueTypeMarker for ServiceInstanceResolverResolveServiceInstanceResponse {
2903        type Borrowed<'a> = &'a Self;
2904        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2905            value
2906        }
2907    }
2908
2909    unsafe impl fidl::encoding::TypeMarker for ServiceInstanceResolverResolveServiceInstanceResponse {
2910        type Owned = Self;
2911
2912        #[inline(always)]
2913        fn inline_align(_context: fidl::encoding::Context) -> usize {
2914            8
2915        }
2916
2917        #[inline(always)]
2918        fn inline_size(_context: fidl::encoding::Context) -> usize {
2919            16
2920        }
2921    }
2922
2923    unsafe impl<D: fidl::encoding::ResourceDialect>
2924        fidl::encoding::Encode<ServiceInstanceResolverResolveServiceInstanceResponse, D>
2925        for &ServiceInstanceResolverResolveServiceInstanceResponse
2926    {
2927        #[inline]
2928        unsafe fn encode(
2929            self,
2930            encoder: &mut fidl::encoding::Encoder<'_, D>,
2931            offset: usize,
2932            _depth: fidl::encoding::Depth,
2933        ) -> fidl::Result<()> {
2934            encoder.debug_check_bounds::<ServiceInstanceResolverResolveServiceInstanceResponse>(
2935                offset,
2936            );
2937            // Delegate to tuple encoding.
2938            fidl::encoding::Encode::<ServiceInstanceResolverResolveServiceInstanceResponse, D>::encode(
2939                (
2940                    <ServiceInstance as fidl::encoding::ValueTypeMarker>::borrow(&self.instance),
2941                ),
2942                encoder, offset, _depth
2943            )
2944        }
2945    }
2946    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<ServiceInstance, D>>
2947        fidl::encoding::Encode<ServiceInstanceResolverResolveServiceInstanceResponse, D> for (T0,)
2948    {
2949        #[inline]
2950        unsafe fn encode(
2951            self,
2952            encoder: &mut fidl::encoding::Encoder<'_, D>,
2953            offset: usize,
2954            depth: fidl::encoding::Depth,
2955        ) -> fidl::Result<()> {
2956            encoder.debug_check_bounds::<ServiceInstanceResolverResolveServiceInstanceResponse>(
2957                offset,
2958            );
2959            // Zero out padding regions. There's no need to apply masks
2960            // because the unmasked parts will be overwritten by fields.
2961            // Write the fields.
2962            self.0.encode(encoder, offset + 0, depth)?;
2963            Ok(())
2964        }
2965    }
2966
2967    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2968        for ServiceInstanceResolverResolveServiceInstanceResponse
2969    {
2970        #[inline(always)]
2971        fn new_empty() -> Self {
2972            Self { instance: fidl::new_empty!(ServiceInstance, D) }
2973        }
2974
2975        #[inline]
2976        unsafe fn decode(
2977            &mut self,
2978            decoder: &mut fidl::encoding::Decoder<'_, D>,
2979            offset: usize,
2980            _depth: fidl::encoding::Depth,
2981        ) -> fidl::Result<()> {
2982            decoder.debug_check_bounds::<Self>(offset);
2983            // Verify that padding bytes are zero.
2984            fidl::decode!(ServiceInstance, D, &mut self.instance, decoder, offset + 0, _depth)?;
2985            Ok(())
2986        }
2987    }
2988
2989    impl fidl::encoding::ValueTypeMarker for ServiceSubscriberOnInstanceChangedRequest {
2990        type Borrowed<'a> = &'a Self;
2991        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2992            value
2993        }
2994    }
2995
2996    unsafe impl fidl::encoding::TypeMarker for ServiceSubscriberOnInstanceChangedRequest {
2997        type Owned = Self;
2998
2999        #[inline(always)]
3000        fn inline_align(_context: fidl::encoding::Context) -> usize {
3001            8
3002        }
3003
3004        #[inline(always)]
3005        fn inline_size(_context: fidl::encoding::Context) -> usize {
3006            16
3007        }
3008    }
3009
3010    unsafe impl<D: fidl::encoding::ResourceDialect>
3011        fidl::encoding::Encode<ServiceSubscriberOnInstanceChangedRequest, D>
3012        for &ServiceSubscriberOnInstanceChangedRequest
3013    {
3014        #[inline]
3015        unsafe fn encode(
3016            self,
3017            encoder: &mut fidl::encoding::Encoder<'_, D>,
3018            offset: usize,
3019            _depth: fidl::encoding::Depth,
3020        ) -> fidl::Result<()> {
3021            encoder.debug_check_bounds::<ServiceSubscriberOnInstanceChangedRequest>(offset);
3022            // Delegate to tuple encoding.
3023            fidl::encoding::Encode::<ServiceSubscriberOnInstanceChangedRequest, D>::encode(
3024                (<ServiceInstance as fidl::encoding::ValueTypeMarker>::borrow(&self.instance),),
3025                encoder,
3026                offset,
3027                _depth,
3028            )
3029        }
3030    }
3031    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<ServiceInstance, D>>
3032        fidl::encoding::Encode<ServiceSubscriberOnInstanceChangedRequest, D> for (T0,)
3033    {
3034        #[inline]
3035        unsafe fn encode(
3036            self,
3037            encoder: &mut fidl::encoding::Encoder<'_, D>,
3038            offset: usize,
3039            depth: fidl::encoding::Depth,
3040        ) -> fidl::Result<()> {
3041            encoder.debug_check_bounds::<ServiceSubscriberOnInstanceChangedRequest>(offset);
3042            // Zero out padding regions. There's no need to apply masks
3043            // because the unmasked parts will be overwritten by fields.
3044            // Write the fields.
3045            self.0.encode(encoder, offset + 0, depth)?;
3046            Ok(())
3047        }
3048    }
3049
3050    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
3051        for ServiceSubscriberOnInstanceChangedRequest
3052    {
3053        #[inline(always)]
3054        fn new_empty() -> Self {
3055            Self { instance: fidl::new_empty!(ServiceInstance, D) }
3056        }
3057
3058        #[inline]
3059        unsafe fn decode(
3060            &mut self,
3061            decoder: &mut fidl::encoding::Decoder<'_, D>,
3062            offset: usize,
3063            _depth: fidl::encoding::Depth,
3064        ) -> fidl::Result<()> {
3065            decoder.debug_check_bounds::<Self>(offset);
3066            // Verify that padding bytes are zero.
3067            fidl::decode!(ServiceInstance, D, &mut self.instance, decoder, offset + 0, _depth)?;
3068            Ok(())
3069        }
3070    }
3071
3072    impl fidl::encoding::ValueTypeMarker for ServiceSubscriberOnInstanceDiscoveredRequest {
3073        type Borrowed<'a> = &'a Self;
3074        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3075            value
3076        }
3077    }
3078
3079    unsafe impl fidl::encoding::TypeMarker for ServiceSubscriberOnInstanceDiscoveredRequest {
3080        type Owned = Self;
3081
3082        #[inline(always)]
3083        fn inline_align(_context: fidl::encoding::Context) -> usize {
3084            8
3085        }
3086
3087        #[inline(always)]
3088        fn inline_size(_context: fidl::encoding::Context) -> usize {
3089            16
3090        }
3091    }
3092
3093    unsafe impl<D: fidl::encoding::ResourceDialect>
3094        fidl::encoding::Encode<ServiceSubscriberOnInstanceDiscoveredRequest, D>
3095        for &ServiceSubscriberOnInstanceDiscoveredRequest
3096    {
3097        #[inline]
3098        unsafe fn encode(
3099            self,
3100            encoder: &mut fidl::encoding::Encoder<'_, D>,
3101            offset: usize,
3102            _depth: fidl::encoding::Depth,
3103        ) -> fidl::Result<()> {
3104            encoder.debug_check_bounds::<ServiceSubscriberOnInstanceDiscoveredRequest>(offset);
3105            // Delegate to tuple encoding.
3106            fidl::encoding::Encode::<ServiceSubscriberOnInstanceDiscoveredRequest, D>::encode(
3107                (<ServiceInstance as fidl::encoding::ValueTypeMarker>::borrow(&self.instance),),
3108                encoder,
3109                offset,
3110                _depth,
3111            )
3112        }
3113    }
3114    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<ServiceInstance, D>>
3115        fidl::encoding::Encode<ServiceSubscriberOnInstanceDiscoveredRequest, D> for (T0,)
3116    {
3117        #[inline]
3118        unsafe fn encode(
3119            self,
3120            encoder: &mut fidl::encoding::Encoder<'_, D>,
3121            offset: usize,
3122            depth: fidl::encoding::Depth,
3123        ) -> fidl::Result<()> {
3124            encoder.debug_check_bounds::<ServiceSubscriberOnInstanceDiscoveredRequest>(offset);
3125            // Zero out padding regions. There's no need to apply masks
3126            // because the unmasked parts will be overwritten by fields.
3127            // Write the fields.
3128            self.0.encode(encoder, offset + 0, depth)?;
3129            Ok(())
3130        }
3131    }
3132
3133    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
3134        for ServiceSubscriberOnInstanceDiscoveredRequest
3135    {
3136        #[inline(always)]
3137        fn new_empty() -> Self {
3138            Self { instance: fidl::new_empty!(ServiceInstance, D) }
3139        }
3140
3141        #[inline]
3142        unsafe fn decode(
3143            &mut self,
3144            decoder: &mut fidl::encoding::Decoder<'_, D>,
3145            offset: usize,
3146            _depth: fidl::encoding::Depth,
3147        ) -> fidl::Result<()> {
3148            decoder.debug_check_bounds::<Self>(offset);
3149            // Verify that padding bytes are zero.
3150            fidl::decode!(ServiceInstance, D, &mut self.instance, decoder, offset + 0, _depth)?;
3151            Ok(())
3152        }
3153    }
3154
3155    impl fidl::encoding::ValueTypeMarker for ServiceSubscriberOnInstanceLostRequest {
3156        type Borrowed<'a> = &'a Self;
3157        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3158            value
3159        }
3160    }
3161
3162    unsafe impl fidl::encoding::TypeMarker for ServiceSubscriberOnInstanceLostRequest {
3163        type Owned = Self;
3164
3165        #[inline(always)]
3166        fn inline_align(_context: fidl::encoding::Context) -> usize {
3167            8
3168        }
3169
3170        #[inline(always)]
3171        fn inline_size(_context: fidl::encoding::Context) -> usize {
3172            32
3173        }
3174    }
3175
3176    unsafe impl<D: fidl::encoding::ResourceDialect>
3177        fidl::encoding::Encode<ServiceSubscriberOnInstanceLostRequest, D>
3178        for &ServiceSubscriberOnInstanceLostRequest
3179    {
3180        #[inline]
3181        unsafe fn encode(
3182            self,
3183            encoder: &mut fidl::encoding::Encoder<'_, D>,
3184            offset: usize,
3185            _depth: fidl::encoding::Depth,
3186        ) -> fidl::Result<()> {
3187            encoder.debug_check_bounds::<ServiceSubscriberOnInstanceLostRequest>(offset);
3188            // Delegate to tuple encoding.
3189            fidl::encoding::Encode::<ServiceSubscriberOnInstanceLostRequest, D>::encode(
3190                (
3191                    <fidl::encoding::BoundedString<22> as fidl::encoding::ValueTypeMarker>::borrow(
3192                        &self.service,
3193                    ),
3194                    <fidl::encoding::BoundedString<63> as fidl::encoding::ValueTypeMarker>::borrow(
3195                        &self.instance,
3196                    ),
3197                ),
3198                encoder,
3199                offset,
3200                _depth,
3201            )
3202        }
3203    }
3204    unsafe impl<
3205        D: fidl::encoding::ResourceDialect,
3206        T0: fidl::encoding::Encode<fidl::encoding::BoundedString<22>, D>,
3207        T1: fidl::encoding::Encode<fidl::encoding::BoundedString<63>, D>,
3208    > fidl::encoding::Encode<ServiceSubscriberOnInstanceLostRequest, D> for (T0, T1)
3209    {
3210        #[inline]
3211        unsafe fn encode(
3212            self,
3213            encoder: &mut fidl::encoding::Encoder<'_, D>,
3214            offset: usize,
3215            depth: fidl::encoding::Depth,
3216        ) -> fidl::Result<()> {
3217            encoder.debug_check_bounds::<ServiceSubscriberOnInstanceLostRequest>(offset);
3218            // Zero out padding regions. There's no need to apply masks
3219            // because the unmasked parts will be overwritten by fields.
3220            // Write the fields.
3221            self.0.encode(encoder, offset + 0, depth)?;
3222            self.1.encode(encoder, offset + 16, depth)?;
3223            Ok(())
3224        }
3225    }
3226
3227    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
3228        for ServiceSubscriberOnInstanceLostRequest
3229    {
3230        #[inline(always)]
3231        fn new_empty() -> Self {
3232            Self {
3233                service: fidl::new_empty!(fidl::encoding::BoundedString<22>, D),
3234                instance: fidl::new_empty!(fidl::encoding::BoundedString<63>, D),
3235            }
3236        }
3237
3238        #[inline]
3239        unsafe fn decode(
3240            &mut self,
3241            decoder: &mut fidl::encoding::Decoder<'_, D>,
3242            offset: usize,
3243            _depth: fidl::encoding::Depth,
3244        ) -> fidl::Result<()> {
3245            decoder.debug_check_bounds::<Self>(offset);
3246            // Verify that padding bytes are zero.
3247            fidl::decode!(
3248                fidl::encoding::BoundedString<22>,
3249                D,
3250                &mut self.service,
3251                decoder,
3252                offset + 0,
3253                _depth
3254            )?;
3255            fidl::decode!(
3256                fidl::encoding::BoundedString<63>,
3257                D,
3258                &mut self.instance,
3259                decoder,
3260                offset + 16,
3261                _depth
3262            )?;
3263            Ok(())
3264        }
3265    }
3266
3267    impl fidl::encoding::ValueTypeMarker for ServiceSubscriberOnQueryRequest {
3268        type Borrowed<'a> = &'a Self;
3269        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3270            value
3271        }
3272    }
3273
3274    unsafe impl fidl::encoding::TypeMarker for ServiceSubscriberOnQueryRequest {
3275        type Owned = Self;
3276
3277        #[inline(always)]
3278        fn inline_align(_context: fidl::encoding::Context) -> usize {
3279            4
3280        }
3281
3282        #[inline(always)]
3283        fn inline_size(_context: fidl::encoding::Context) -> usize {
3284            4
3285        }
3286    }
3287
3288    unsafe impl<D: fidl::encoding::ResourceDialect>
3289        fidl::encoding::Encode<ServiceSubscriberOnQueryRequest, D>
3290        for &ServiceSubscriberOnQueryRequest
3291    {
3292        #[inline]
3293        unsafe fn encode(
3294            self,
3295            encoder: &mut fidl::encoding::Encoder<'_, D>,
3296            offset: usize,
3297            _depth: fidl::encoding::Depth,
3298        ) -> fidl::Result<()> {
3299            encoder.debug_check_bounds::<ServiceSubscriberOnQueryRequest>(offset);
3300            // Delegate to tuple encoding.
3301            fidl::encoding::Encode::<ServiceSubscriberOnQueryRequest, D>::encode(
3302                (<ResourceType as fidl::encoding::ValueTypeMarker>::borrow(&self.resource_type),),
3303                encoder,
3304                offset,
3305                _depth,
3306            )
3307        }
3308    }
3309    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<ResourceType, D>>
3310        fidl::encoding::Encode<ServiceSubscriberOnQueryRequest, D> for (T0,)
3311    {
3312        #[inline]
3313        unsafe fn encode(
3314            self,
3315            encoder: &mut fidl::encoding::Encoder<'_, D>,
3316            offset: usize,
3317            depth: fidl::encoding::Depth,
3318        ) -> fidl::Result<()> {
3319            encoder.debug_check_bounds::<ServiceSubscriberOnQueryRequest>(offset);
3320            // Zero out padding regions. There's no need to apply masks
3321            // because the unmasked parts will be overwritten by fields.
3322            // Write the fields.
3323            self.0.encode(encoder, offset + 0, depth)?;
3324            Ok(())
3325        }
3326    }
3327
3328    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
3329        for ServiceSubscriberOnQueryRequest
3330    {
3331        #[inline(always)]
3332        fn new_empty() -> Self {
3333            Self { resource_type: fidl::new_empty!(ResourceType, D) }
3334        }
3335
3336        #[inline]
3337        unsafe fn decode(
3338            &mut self,
3339            decoder: &mut fidl::encoding::Decoder<'_, D>,
3340            offset: usize,
3341            _depth: fidl::encoding::Depth,
3342        ) -> fidl::Result<()> {
3343            decoder.debug_check_bounds::<Self>(offset);
3344            // Verify that padding bytes are zero.
3345            fidl::decode!(ResourceType, D, &mut self.resource_type, decoder, offset + 0, _depth)?;
3346            Ok(())
3347        }
3348    }
3349
3350    impl fidl::encoding::ValueTypeMarker for ServiceSubscriptionListenerOnInstanceChangedRequest {
3351        type Borrowed<'a> = &'a Self;
3352        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3353            value
3354        }
3355    }
3356
3357    unsafe impl fidl::encoding::TypeMarker for ServiceSubscriptionListenerOnInstanceChangedRequest {
3358        type Owned = Self;
3359
3360        #[inline(always)]
3361        fn inline_align(_context: fidl::encoding::Context) -> usize {
3362            8
3363        }
3364
3365        #[inline(always)]
3366        fn inline_size(_context: fidl::encoding::Context) -> usize {
3367            16
3368        }
3369    }
3370
3371    unsafe impl<D: fidl::encoding::ResourceDialect>
3372        fidl::encoding::Encode<ServiceSubscriptionListenerOnInstanceChangedRequest, D>
3373        for &ServiceSubscriptionListenerOnInstanceChangedRequest
3374    {
3375        #[inline]
3376        unsafe fn encode(
3377            self,
3378            encoder: &mut fidl::encoding::Encoder<'_, D>,
3379            offset: usize,
3380            _depth: fidl::encoding::Depth,
3381        ) -> fidl::Result<()> {
3382            encoder
3383                .debug_check_bounds::<ServiceSubscriptionListenerOnInstanceChangedRequest>(offset);
3384            // Delegate to tuple encoding.
3385            fidl::encoding::Encode::<ServiceSubscriptionListenerOnInstanceChangedRequest, D>::encode(
3386                (<ServiceInstance as fidl::encoding::ValueTypeMarker>::borrow(&self.instance),),
3387                encoder,
3388                offset,
3389                _depth,
3390            )
3391        }
3392    }
3393    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<ServiceInstance, D>>
3394        fidl::encoding::Encode<ServiceSubscriptionListenerOnInstanceChangedRequest, D> for (T0,)
3395    {
3396        #[inline]
3397        unsafe fn encode(
3398            self,
3399            encoder: &mut fidl::encoding::Encoder<'_, D>,
3400            offset: usize,
3401            depth: fidl::encoding::Depth,
3402        ) -> fidl::Result<()> {
3403            encoder
3404                .debug_check_bounds::<ServiceSubscriptionListenerOnInstanceChangedRequest>(offset);
3405            // Zero out padding regions. There's no need to apply masks
3406            // because the unmasked parts will be overwritten by fields.
3407            // Write the fields.
3408            self.0.encode(encoder, offset + 0, depth)?;
3409            Ok(())
3410        }
3411    }
3412
3413    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
3414        for ServiceSubscriptionListenerOnInstanceChangedRequest
3415    {
3416        #[inline(always)]
3417        fn new_empty() -> Self {
3418            Self { instance: fidl::new_empty!(ServiceInstance, D) }
3419        }
3420
3421        #[inline]
3422        unsafe fn decode(
3423            &mut self,
3424            decoder: &mut fidl::encoding::Decoder<'_, D>,
3425            offset: usize,
3426            _depth: fidl::encoding::Depth,
3427        ) -> fidl::Result<()> {
3428            decoder.debug_check_bounds::<Self>(offset);
3429            // Verify that padding bytes are zero.
3430            fidl::decode!(ServiceInstance, D, &mut self.instance, decoder, offset + 0, _depth)?;
3431            Ok(())
3432        }
3433    }
3434
3435    impl fidl::encoding::ValueTypeMarker for ServiceSubscriptionListenerOnInstanceDiscoveredRequest {
3436        type Borrowed<'a> = &'a Self;
3437        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3438            value
3439        }
3440    }
3441
3442    unsafe impl fidl::encoding::TypeMarker for ServiceSubscriptionListenerOnInstanceDiscoveredRequest {
3443        type Owned = Self;
3444
3445        #[inline(always)]
3446        fn inline_align(_context: fidl::encoding::Context) -> usize {
3447            8
3448        }
3449
3450        #[inline(always)]
3451        fn inline_size(_context: fidl::encoding::Context) -> usize {
3452            16
3453        }
3454    }
3455
3456    unsafe impl<D: fidl::encoding::ResourceDialect>
3457        fidl::encoding::Encode<ServiceSubscriptionListenerOnInstanceDiscoveredRequest, D>
3458        for &ServiceSubscriptionListenerOnInstanceDiscoveredRequest
3459    {
3460        #[inline]
3461        unsafe fn encode(
3462            self,
3463            encoder: &mut fidl::encoding::Encoder<'_, D>,
3464            offset: usize,
3465            _depth: fidl::encoding::Depth,
3466        ) -> fidl::Result<()> {
3467            encoder.debug_check_bounds::<ServiceSubscriptionListenerOnInstanceDiscoveredRequest>(
3468                offset,
3469            );
3470            // Delegate to tuple encoding.
3471            fidl::encoding::Encode::<ServiceSubscriptionListenerOnInstanceDiscoveredRequest, D>::encode(
3472                (
3473                    <ServiceInstance as fidl::encoding::ValueTypeMarker>::borrow(&self.instance),
3474                ),
3475                encoder, offset, _depth
3476            )
3477        }
3478    }
3479    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<ServiceInstance, D>>
3480        fidl::encoding::Encode<ServiceSubscriptionListenerOnInstanceDiscoveredRequest, D> for (T0,)
3481    {
3482        #[inline]
3483        unsafe fn encode(
3484            self,
3485            encoder: &mut fidl::encoding::Encoder<'_, D>,
3486            offset: usize,
3487            depth: fidl::encoding::Depth,
3488        ) -> fidl::Result<()> {
3489            encoder.debug_check_bounds::<ServiceSubscriptionListenerOnInstanceDiscoveredRequest>(
3490                offset,
3491            );
3492            // Zero out padding regions. There's no need to apply masks
3493            // because the unmasked parts will be overwritten by fields.
3494            // Write the fields.
3495            self.0.encode(encoder, offset + 0, depth)?;
3496            Ok(())
3497        }
3498    }
3499
3500    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
3501        for ServiceSubscriptionListenerOnInstanceDiscoveredRequest
3502    {
3503        #[inline(always)]
3504        fn new_empty() -> Self {
3505            Self { instance: fidl::new_empty!(ServiceInstance, D) }
3506        }
3507
3508        #[inline]
3509        unsafe fn decode(
3510            &mut self,
3511            decoder: &mut fidl::encoding::Decoder<'_, D>,
3512            offset: usize,
3513            _depth: fidl::encoding::Depth,
3514        ) -> fidl::Result<()> {
3515            decoder.debug_check_bounds::<Self>(offset);
3516            // Verify that padding bytes are zero.
3517            fidl::decode!(ServiceInstance, D, &mut self.instance, decoder, offset + 0, _depth)?;
3518            Ok(())
3519        }
3520    }
3521
3522    impl fidl::encoding::ValueTypeMarker for ServiceSubscriptionListenerOnInstanceLostRequest {
3523        type Borrowed<'a> = &'a Self;
3524        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3525            value
3526        }
3527    }
3528
3529    unsafe impl fidl::encoding::TypeMarker for ServiceSubscriptionListenerOnInstanceLostRequest {
3530        type Owned = Self;
3531
3532        #[inline(always)]
3533        fn inline_align(_context: fidl::encoding::Context) -> usize {
3534            8
3535        }
3536
3537        #[inline(always)]
3538        fn inline_size(_context: fidl::encoding::Context) -> usize {
3539            32
3540        }
3541    }
3542
3543    unsafe impl<D: fidl::encoding::ResourceDialect>
3544        fidl::encoding::Encode<ServiceSubscriptionListenerOnInstanceLostRequest, D>
3545        for &ServiceSubscriptionListenerOnInstanceLostRequest
3546    {
3547        #[inline]
3548        unsafe fn encode(
3549            self,
3550            encoder: &mut fidl::encoding::Encoder<'_, D>,
3551            offset: usize,
3552            _depth: fidl::encoding::Depth,
3553        ) -> fidl::Result<()> {
3554            encoder.debug_check_bounds::<ServiceSubscriptionListenerOnInstanceLostRequest>(offset);
3555            // Delegate to tuple encoding.
3556            fidl::encoding::Encode::<ServiceSubscriptionListenerOnInstanceLostRequest, D>::encode(
3557                (
3558                    <fidl::encoding::BoundedString<22> as fidl::encoding::ValueTypeMarker>::borrow(
3559                        &self.service,
3560                    ),
3561                    <fidl::encoding::BoundedString<63> as fidl::encoding::ValueTypeMarker>::borrow(
3562                        &self.instance,
3563                    ),
3564                ),
3565                encoder,
3566                offset,
3567                _depth,
3568            )
3569        }
3570    }
3571    unsafe impl<
3572        D: fidl::encoding::ResourceDialect,
3573        T0: fidl::encoding::Encode<fidl::encoding::BoundedString<22>, D>,
3574        T1: fidl::encoding::Encode<fidl::encoding::BoundedString<63>, D>,
3575    > fidl::encoding::Encode<ServiceSubscriptionListenerOnInstanceLostRequest, D> for (T0, T1)
3576    {
3577        #[inline]
3578        unsafe fn encode(
3579            self,
3580            encoder: &mut fidl::encoding::Encoder<'_, D>,
3581            offset: usize,
3582            depth: fidl::encoding::Depth,
3583        ) -> fidl::Result<()> {
3584            encoder.debug_check_bounds::<ServiceSubscriptionListenerOnInstanceLostRequest>(offset);
3585            // Zero out padding regions. There's no need to apply masks
3586            // because the unmasked parts will be overwritten by fields.
3587            // Write the fields.
3588            self.0.encode(encoder, offset + 0, depth)?;
3589            self.1.encode(encoder, offset + 16, depth)?;
3590            Ok(())
3591        }
3592    }
3593
3594    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
3595        for ServiceSubscriptionListenerOnInstanceLostRequest
3596    {
3597        #[inline(always)]
3598        fn new_empty() -> Self {
3599            Self {
3600                service: fidl::new_empty!(fidl::encoding::BoundedString<22>, D),
3601                instance: fidl::new_empty!(fidl::encoding::BoundedString<63>, D),
3602            }
3603        }
3604
3605        #[inline]
3606        unsafe fn decode(
3607            &mut self,
3608            decoder: &mut fidl::encoding::Decoder<'_, D>,
3609            offset: usize,
3610            _depth: fidl::encoding::Depth,
3611        ) -> fidl::Result<()> {
3612            decoder.debug_check_bounds::<Self>(offset);
3613            // Verify that padding bytes are zero.
3614            fidl::decode!(
3615                fidl::encoding::BoundedString<22>,
3616                D,
3617                &mut self.service,
3618                decoder,
3619                offset + 0,
3620                _depth
3621            )?;
3622            fidl::decode!(
3623                fidl::encoding::BoundedString<63>,
3624                D,
3625                &mut self.instance,
3626                decoder,
3627                offset + 16,
3628                _depth
3629            )?;
3630            Ok(())
3631        }
3632    }
3633
3634    impl fidl::encoding::ValueTypeMarker for ServiceSubscriptionListenerOnQueryRequest {
3635        type Borrowed<'a> = &'a Self;
3636        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3637            value
3638        }
3639    }
3640
3641    unsafe impl fidl::encoding::TypeMarker for ServiceSubscriptionListenerOnQueryRequest {
3642        type Owned = Self;
3643
3644        #[inline(always)]
3645        fn inline_align(_context: fidl::encoding::Context) -> usize {
3646            4
3647        }
3648
3649        #[inline(always)]
3650        fn inline_size(_context: fidl::encoding::Context) -> usize {
3651            4
3652        }
3653    }
3654
3655    unsafe impl<D: fidl::encoding::ResourceDialect>
3656        fidl::encoding::Encode<ServiceSubscriptionListenerOnQueryRequest, D>
3657        for &ServiceSubscriptionListenerOnQueryRequest
3658    {
3659        #[inline]
3660        unsafe fn encode(
3661            self,
3662            encoder: &mut fidl::encoding::Encoder<'_, D>,
3663            offset: usize,
3664            _depth: fidl::encoding::Depth,
3665        ) -> fidl::Result<()> {
3666            encoder.debug_check_bounds::<ServiceSubscriptionListenerOnQueryRequest>(offset);
3667            // Delegate to tuple encoding.
3668            fidl::encoding::Encode::<ServiceSubscriptionListenerOnQueryRequest, D>::encode(
3669                (<ResourceType as fidl::encoding::ValueTypeMarker>::borrow(&self.resource_type),),
3670                encoder,
3671                offset,
3672                _depth,
3673            )
3674        }
3675    }
3676    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<ResourceType, D>>
3677        fidl::encoding::Encode<ServiceSubscriptionListenerOnQueryRequest, D> for (T0,)
3678    {
3679        #[inline]
3680        unsafe fn encode(
3681            self,
3682            encoder: &mut fidl::encoding::Encoder<'_, D>,
3683            offset: usize,
3684            depth: fidl::encoding::Depth,
3685        ) -> fidl::Result<()> {
3686            encoder.debug_check_bounds::<ServiceSubscriptionListenerOnQueryRequest>(offset);
3687            // Zero out padding regions. There's no need to apply masks
3688            // because the unmasked parts will be overwritten by fields.
3689            // Write the fields.
3690            self.0.encode(encoder, offset + 0, depth)?;
3691            Ok(())
3692        }
3693    }
3694
3695    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
3696        for ServiceSubscriptionListenerOnQueryRequest
3697    {
3698        #[inline(always)]
3699        fn new_empty() -> Self {
3700            Self { resource_type: fidl::new_empty!(ResourceType, D) }
3701        }
3702
3703        #[inline]
3704        unsafe fn decode(
3705            &mut self,
3706            decoder: &mut fidl::encoding::Decoder<'_, D>,
3707            offset: usize,
3708            _depth: fidl::encoding::Depth,
3709        ) -> fidl::Result<()> {
3710            decoder.debug_check_bounds::<Self>(offset);
3711            // Verify that padding bytes are zero.
3712            fidl::decode!(ResourceType, D, &mut self.resource_type, decoder, offset + 0, _depth)?;
3713            Ok(())
3714        }
3715    }
3716
3717    impl HostNameResolutionOptions {
3718        #[inline(always)]
3719        fn max_ordinal_present(&self) -> u64 {
3720            if let Some(_) = self.exclude_local_proxies {
3721                return 4;
3722            }
3723            if let Some(_) = self.exclude_local {
3724                return 3;
3725            }
3726            if let Some(_) = self.ip_versions {
3727                return 2;
3728            }
3729            if let Some(_) = self.media {
3730                return 1;
3731            }
3732            0
3733        }
3734    }
3735
3736    impl fidl::encoding::ValueTypeMarker for HostNameResolutionOptions {
3737        type Borrowed<'a> = &'a Self;
3738        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3739            value
3740        }
3741    }
3742
3743    unsafe impl fidl::encoding::TypeMarker for HostNameResolutionOptions {
3744        type Owned = Self;
3745
3746        #[inline(always)]
3747        fn inline_align(_context: fidl::encoding::Context) -> usize {
3748            8
3749        }
3750
3751        #[inline(always)]
3752        fn inline_size(_context: fidl::encoding::Context) -> usize {
3753            16
3754        }
3755    }
3756
3757    unsafe impl<D: fidl::encoding::ResourceDialect>
3758        fidl::encoding::Encode<HostNameResolutionOptions, D> for &HostNameResolutionOptions
3759    {
3760        unsafe fn encode(
3761            self,
3762            encoder: &mut fidl::encoding::Encoder<'_, D>,
3763            offset: usize,
3764            mut depth: fidl::encoding::Depth,
3765        ) -> fidl::Result<()> {
3766            encoder.debug_check_bounds::<HostNameResolutionOptions>(offset);
3767            // Vector header
3768            let max_ordinal: u64 = self.max_ordinal_present();
3769            encoder.write_num(max_ordinal, offset);
3770            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
3771            // Calling encoder.out_of_line_offset(0) is not allowed.
3772            if max_ordinal == 0 {
3773                return Ok(());
3774            }
3775            depth.increment()?;
3776            let envelope_size = 8;
3777            let bytes_len = max_ordinal as usize * envelope_size;
3778            #[allow(unused_variables)]
3779            let offset = encoder.out_of_line_offset(bytes_len);
3780            let mut _prev_end_offset: usize = 0;
3781            if 1 > max_ordinal {
3782                return Ok(());
3783            }
3784
3785            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3786            // are envelope_size bytes.
3787            let cur_offset: usize = (1 - 1) * envelope_size;
3788
3789            // Zero reserved fields.
3790            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3791
3792            // Safety:
3793            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3794            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3795            //   envelope_size bytes, there is always sufficient room.
3796            fidl::encoding::encode_in_envelope_optional::<Media, D>(
3797                self.media.as_ref().map(<Media as fidl::encoding::ValueTypeMarker>::borrow),
3798                encoder,
3799                offset + cur_offset,
3800                depth,
3801            )?;
3802
3803            _prev_end_offset = cur_offset + envelope_size;
3804            if 2 > max_ordinal {
3805                return Ok(());
3806            }
3807
3808            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3809            // are envelope_size bytes.
3810            let cur_offset: usize = (2 - 1) * envelope_size;
3811
3812            // Zero reserved fields.
3813            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3814
3815            // Safety:
3816            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3817            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3818            //   envelope_size bytes, there is always sufficient room.
3819            fidl::encoding::encode_in_envelope_optional::<IpVersions, D>(
3820                self.ip_versions
3821                    .as_ref()
3822                    .map(<IpVersions as fidl::encoding::ValueTypeMarker>::borrow),
3823                encoder,
3824                offset + cur_offset,
3825                depth,
3826            )?;
3827
3828            _prev_end_offset = cur_offset + envelope_size;
3829            if 3 > max_ordinal {
3830                return Ok(());
3831            }
3832
3833            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3834            // are envelope_size bytes.
3835            let cur_offset: usize = (3 - 1) * envelope_size;
3836
3837            // Zero reserved fields.
3838            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3839
3840            // Safety:
3841            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3842            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3843            //   envelope_size bytes, there is always sufficient room.
3844            fidl::encoding::encode_in_envelope_optional::<bool, D>(
3845                self.exclude_local.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
3846                encoder,
3847                offset + cur_offset,
3848                depth,
3849            )?;
3850
3851            _prev_end_offset = cur_offset + envelope_size;
3852            if 4 > max_ordinal {
3853                return Ok(());
3854            }
3855
3856            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3857            // are envelope_size bytes.
3858            let cur_offset: usize = (4 - 1) * envelope_size;
3859
3860            // Zero reserved fields.
3861            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3862
3863            // Safety:
3864            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3865            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3866            //   envelope_size bytes, there is always sufficient room.
3867            fidl::encoding::encode_in_envelope_optional::<bool, D>(
3868                self.exclude_local_proxies
3869                    .as_ref()
3870                    .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
3871                encoder,
3872                offset + cur_offset,
3873                depth,
3874            )?;
3875
3876            _prev_end_offset = cur_offset + envelope_size;
3877
3878            Ok(())
3879        }
3880    }
3881
3882    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
3883        for HostNameResolutionOptions
3884    {
3885        #[inline(always)]
3886        fn new_empty() -> Self {
3887            Self::default()
3888        }
3889
3890        unsafe fn decode(
3891            &mut self,
3892            decoder: &mut fidl::encoding::Decoder<'_, D>,
3893            offset: usize,
3894            mut depth: fidl::encoding::Depth,
3895        ) -> fidl::Result<()> {
3896            decoder.debug_check_bounds::<Self>(offset);
3897            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
3898                None => return Err(fidl::Error::NotNullable),
3899                Some(len) => len,
3900            };
3901            // Calling decoder.out_of_line_offset(0) is not allowed.
3902            if len == 0 {
3903                return Ok(());
3904            };
3905            depth.increment()?;
3906            let envelope_size = 8;
3907            let bytes_len = len * envelope_size;
3908            let offset = decoder.out_of_line_offset(bytes_len)?;
3909            // Decode the envelope for each type.
3910            let mut _next_ordinal_to_read = 0;
3911            let mut next_offset = offset;
3912            let end_offset = offset + bytes_len;
3913            _next_ordinal_to_read += 1;
3914            if next_offset >= end_offset {
3915                return Ok(());
3916            }
3917
3918            // Decode unknown envelopes for gaps in ordinals.
3919            while _next_ordinal_to_read < 1 {
3920                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3921                _next_ordinal_to_read += 1;
3922                next_offset += envelope_size;
3923            }
3924
3925            let next_out_of_line = decoder.next_out_of_line();
3926            let handles_before = decoder.remaining_handles();
3927            if let Some((inlined, num_bytes, num_handles)) =
3928                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3929            {
3930                let member_inline_size =
3931                    <Media as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3932                if inlined != (member_inline_size <= 4) {
3933                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3934                }
3935                let inner_offset;
3936                let mut inner_depth = depth.clone();
3937                if inlined {
3938                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3939                    inner_offset = next_offset;
3940                } else {
3941                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3942                    inner_depth.increment()?;
3943                }
3944                let val_ref = self.media.get_or_insert_with(|| fidl::new_empty!(Media, D));
3945                fidl::decode!(Media, D, val_ref, decoder, inner_offset, inner_depth)?;
3946                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3947                {
3948                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3949                }
3950                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3951                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3952                }
3953            }
3954
3955            next_offset += envelope_size;
3956            _next_ordinal_to_read += 1;
3957            if next_offset >= end_offset {
3958                return Ok(());
3959            }
3960
3961            // Decode unknown envelopes for gaps in ordinals.
3962            while _next_ordinal_to_read < 2 {
3963                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3964                _next_ordinal_to_read += 1;
3965                next_offset += envelope_size;
3966            }
3967
3968            let next_out_of_line = decoder.next_out_of_line();
3969            let handles_before = decoder.remaining_handles();
3970            if let Some((inlined, num_bytes, num_handles)) =
3971                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3972            {
3973                let member_inline_size =
3974                    <IpVersions as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3975                if inlined != (member_inline_size <= 4) {
3976                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3977                }
3978                let inner_offset;
3979                let mut inner_depth = depth.clone();
3980                if inlined {
3981                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3982                    inner_offset = next_offset;
3983                } else {
3984                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3985                    inner_depth.increment()?;
3986                }
3987                let val_ref =
3988                    self.ip_versions.get_or_insert_with(|| fidl::new_empty!(IpVersions, D));
3989                fidl::decode!(IpVersions, D, val_ref, decoder, inner_offset, inner_depth)?;
3990                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3991                {
3992                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3993                }
3994                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3995                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3996                }
3997            }
3998
3999            next_offset += envelope_size;
4000            _next_ordinal_to_read += 1;
4001            if next_offset >= end_offset {
4002                return Ok(());
4003            }
4004
4005            // Decode unknown envelopes for gaps in ordinals.
4006            while _next_ordinal_to_read < 3 {
4007                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4008                _next_ordinal_to_read += 1;
4009                next_offset += envelope_size;
4010            }
4011
4012            let next_out_of_line = decoder.next_out_of_line();
4013            let handles_before = decoder.remaining_handles();
4014            if let Some((inlined, num_bytes, num_handles)) =
4015                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4016            {
4017                let member_inline_size =
4018                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4019                if inlined != (member_inline_size <= 4) {
4020                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4021                }
4022                let inner_offset;
4023                let mut inner_depth = depth.clone();
4024                if inlined {
4025                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4026                    inner_offset = next_offset;
4027                } else {
4028                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4029                    inner_depth.increment()?;
4030                }
4031                let val_ref = self.exclude_local.get_or_insert_with(|| fidl::new_empty!(bool, D));
4032                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
4033                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4034                {
4035                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4036                }
4037                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4038                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4039                }
4040            }
4041
4042            next_offset += envelope_size;
4043            _next_ordinal_to_read += 1;
4044            if next_offset >= end_offset {
4045                return Ok(());
4046            }
4047
4048            // Decode unknown envelopes for gaps in ordinals.
4049            while _next_ordinal_to_read < 4 {
4050                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4051                _next_ordinal_to_read += 1;
4052                next_offset += envelope_size;
4053            }
4054
4055            let next_out_of_line = decoder.next_out_of_line();
4056            let handles_before = decoder.remaining_handles();
4057            if let Some((inlined, num_bytes, num_handles)) =
4058                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4059            {
4060                let member_inline_size =
4061                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4062                if inlined != (member_inline_size <= 4) {
4063                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4064                }
4065                let inner_offset;
4066                let mut inner_depth = depth.clone();
4067                if inlined {
4068                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4069                    inner_offset = next_offset;
4070                } else {
4071                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4072                    inner_depth.increment()?;
4073                }
4074                let val_ref =
4075                    self.exclude_local_proxies.get_or_insert_with(|| fidl::new_empty!(bool, D));
4076                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
4077                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4078                {
4079                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4080                }
4081                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4082                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4083                }
4084            }
4085
4086            next_offset += envelope_size;
4087
4088            // Decode the remaining unknown envelopes.
4089            while next_offset < end_offset {
4090                _next_ordinal_to_read += 1;
4091                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4092                next_offset += envelope_size;
4093            }
4094
4095            Ok(())
4096        }
4097    }
4098
4099    impl HostNameSubscriptionOptions {
4100        #[inline(always)]
4101        fn max_ordinal_present(&self) -> u64 {
4102            if let Some(_) = self.exclude_local_proxies {
4103                return 4;
4104            }
4105            if let Some(_) = self.exclude_local {
4106                return 3;
4107            }
4108            if let Some(_) = self.ip_versions {
4109                return 2;
4110            }
4111            if let Some(_) = self.media {
4112                return 1;
4113            }
4114            0
4115        }
4116    }
4117
4118    impl fidl::encoding::ValueTypeMarker for HostNameSubscriptionOptions {
4119        type Borrowed<'a> = &'a Self;
4120        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4121            value
4122        }
4123    }
4124
4125    unsafe impl fidl::encoding::TypeMarker for HostNameSubscriptionOptions {
4126        type Owned = Self;
4127
4128        #[inline(always)]
4129        fn inline_align(_context: fidl::encoding::Context) -> usize {
4130            8
4131        }
4132
4133        #[inline(always)]
4134        fn inline_size(_context: fidl::encoding::Context) -> usize {
4135            16
4136        }
4137    }
4138
4139    unsafe impl<D: fidl::encoding::ResourceDialect>
4140        fidl::encoding::Encode<HostNameSubscriptionOptions, D> for &HostNameSubscriptionOptions
4141    {
4142        unsafe fn encode(
4143            self,
4144            encoder: &mut fidl::encoding::Encoder<'_, D>,
4145            offset: usize,
4146            mut depth: fidl::encoding::Depth,
4147        ) -> fidl::Result<()> {
4148            encoder.debug_check_bounds::<HostNameSubscriptionOptions>(offset);
4149            // Vector header
4150            let max_ordinal: u64 = self.max_ordinal_present();
4151            encoder.write_num(max_ordinal, offset);
4152            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
4153            // Calling encoder.out_of_line_offset(0) is not allowed.
4154            if max_ordinal == 0 {
4155                return Ok(());
4156            }
4157            depth.increment()?;
4158            let envelope_size = 8;
4159            let bytes_len = max_ordinal as usize * envelope_size;
4160            #[allow(unused_variables)]
4161            let offset = encoder.out_of_line_offset(bytes_len);
4162            let mut _prev_end_offset: usize = 0;
4163            if 1 > max_ordinal {
4164                return Ok(());
4165            }
4166
4167            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4168            // are envelope_size bytes.
4169            let cur_offset: usize = (1 - 1) * envelope_size;
4170
4171            // Zero reserved fields.
4172            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4173
4174            // Safety:
4175            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4176            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4177            //   envelope_size bytes, there is always sufficient room.
4178            fidl::encoding::encode_in_envelope_optional::<Media, D>(
4179                self.media.as_ref().map(<Media as fidl::encoding::ValueTypeMarker>::borrow),
4180                encoder,
4181                offset + cur_offset,
4182                depth,
4183            )?;
4184
4185            _prev_end_offset = cur_offset + envelope_size;
4186            if 2 > max_ordinal {
4187                return Ok(());
4188            }
4189
4190            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4191            // are envelope_size bytes.
4192            let cur_offset: usize = (2 - 1) * envelope_size;
4193
4194            // Zero reserved fields.
4195            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4196
4197            // Safety:
4198            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4199            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4200            //   envelope_size bytes, there is always sufficient room.
4201            fidl::encoding::encode_in_envelope_optional::<IpVersions, D>(
4202                self.ip_versions
4203                    .as_ref()
4204                    .map(<IpVersions as fidl::encoding::ValueTypeMarker>::borrow),
4205                encoder,
4206                offset + cur_offset,
4207                depth,
4208            )?;
4209
4210            _prev_end_offset = cur_offset + envelope_size;
4211            if 3 > max_ordinal {
4212                return Ok(());
4213            }
4214
4215            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4216            // are envelope_size bytes.
4217            let cur_offset: usize = (3 - 1) * envelope_size;
4218
4219            // Zero reserved fields.
4220            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4221
4222            // Safety:
4223            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4224            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4225            //   envelope_size bytes, there is always sufficient room.
4226            fidl::encoding::encode_in_envelope_optional::<bool, D>(
4227                self.exclude_local.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
4228                encoder,
4229                offset + cur_offset,
4230                depth,
4231            )?;
4232
4233            _prev_end_offset = cur_offset + envelope_size;
4234            if 4 > max_ordinal {
4235                return Ok(());
4236            }
4237
4238            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4239            // are envelope_size bytes.
4240            let cur_offset: usize = (4 - 1) * envelope_size;
4241
4242            // Zero reserved fields.
4243            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4244
4245            // Safety:
4246            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4247            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4248            //   envelope_size bytes, there is always sufficient room.
4249            fidl::encoding::encode_in_envelope_optional::<bool, D>(
4250                self.exclude_local_proxies
4251                    .as_ref()
4252                    .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
4253                encoder,
4254                offset + cur_offset,
4255                depth,
4256            )?;
4257
4258            _prev_end_offset = cur_offset + envelope_size;
4259
4260            Ok(())
4261        }
4262    }
4263
4264    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
4265        for HostNameSubscriptionOptions
4266    {
4267        #[inline(always)]
4268        fn new_empty() -> Self {
4269            Self::default()
4270        }
4271
4272        unsafe fn decode(
4273            &mut self,
4274            decoder: &mut fidl::encoding::Decoder<'_, D>,
4275            offset: usize,
4276            mut depth: fidl::encoding::Depth,
4277        ) -> fidl::Result<()> {
4278            decoder.debug_check_bounds::<Self>(offset);
4279            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
4280                None => return Err(fidl::Error::NotNullable),
4281                Some(len) => len,
4282            };
4283            // Calling decoder.out_of_line_offset(0) is not allowed.
4284            if len == 0 {
4285                return Ok(());
4286            };
4287            depth.increment()?;
4288            let envelope_size = 8;
4289            let bytes_len = len * envelope_size;
4290            let offset = decoder.out_of_line_offset(bytes_len)?;
4291            // Decode the envelope for each type.
4292            let mut _next_ordinal_to_read = 0;
4293            let mut next_offset = offset;
4294            let end_offset = offset + bytes_len;
4295            _next_ordinal_to_read += 1;
4296            if next_offset >= end_offset {
4297                return Ok(());
4298            }
4299
4300            // Decode unknown envelopes for gaps in ordinals.
4301            while _next_ordinal_to_read < 1 {
4302                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4303                _next_ordinal_to_read += 1;
4304                next_offset += envelope_size;
4305            }
4306
4307            let next_out_of_line = decoder.next_out_of_line();
4308            let handles_before = decoder.remaining_handles();
4309            if let Some((inlined, num_bytes, num_handles)) =
4310                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4311            {
4312                let member_inline_size =
4313                    <Media as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4314                if inlined != (member_inline_size <= 4) {
4315                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4316                }
4317                let inner_offset;
4318                let mut inner_depth = depth.clone();
4319                if inlined {
4320                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4321                    inner_offset = next_offset;
4322                } else {
4323                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4324                    inner_depth.increment()?;
4325                }
4326                let val_ref = self.media.get_or_insert_with(|| fidl::new_empty!(Media, D));
4327                fidl::decode!(Media, D, val_ref, decoder, inner_offset, inner_depth)?;
4328                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4329                {
4330                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4331                }
4332                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4333                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4334                }
4335            }
4336
4337            next_offset += envelope_size;
4338            _next_ordinal_to_read += 1;
4339            if next_offset >= end_offset {
4340                return Ok(());
4341            }
4342
4343            // Decode unknown envelopes for gaps in ordinals.
4344            while _next_ordinal_to_read < 2 {
4345                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4346                _next_ordinal_to_read += 1;
4347                next_offset += envelope_size;
4348            }
4349
4350            let next_out_of_line = decoder.next_out_of_line();
4351            let handles_before = decoder.remaining_handles();
4352            if let Some((inlined, num_bytes, num_handles)) =
4353                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4354            {
4355                let member_inline_size =
4356                    <IpVersions as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4357                if inlined != (member_inline_size <= 4) {
4358                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4359                }
4360                let inner_offset;
4361                let mut inner_depth = depth.clone();
4362                if inlined {
4363                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4364                    inner_offset = next_offset;
4365                } else {
4366                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4367                    inner_depth.increment()?;
4368                }
4369                let val_ref =
4370                    self.ip_versions.get_or_insert_with(|| fidl::new_empty!(IpVersions, D));
4371                fidl::decode!(IpVersions, D, val_ref, decoder, inner_offset, inner_depth)?;
4372                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4373                {
4374                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4375                }
4376                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4377                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4378                }
4379            }
4380
4381            next_offset += envelope_size;
4382            _next_ordinal_to_read += 1;
4383            if next_offset >= end_offset {
4384                return Ok(());
4385            }
4386
4387            // Decode unknown envelopes for gaps in ordinals.
4388            while _next_ordinal_to_read < 3 {
4389                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4390                _next_ordinal_to_read += 1;
4391                next_offset += envelope_size;
4392            }
4393
4394            let next_out_of_line = decoder.next_out_of_line();
4395            let handles_before = decoder.remaining_handles();
4396            if let Some((inlined, num_bytes, num_handles)) =
4397                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4398            {
4399                let member_inline_size =
4400                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4401                if inlined != (member_inline_size <= 4) {
4402                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4403                }
4404                let inner_offset;
4405                let mut inner_depth = depth.clone();
4406                if inlined {
4407                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4408                    inner_offset = next_offset;
4409                } else {
4410                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4411                    inner_depth.increment()?;
4412                }
4413                let val_ref = self.exclude_local.get_or_insert_with(|| fidl::new_empty!(bool, D));
4414                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
4415                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4416                {
4417                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4418                }
4419                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4420                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4421                }
4422            }
4423
4424            next_offset += envelope_size;
4425            _next_ordinal_to_read += 1;
4426            if next_offset >= end_offset {
4427                return Ok(());
4428            }
4429
4430            // Decode unknown envelopes for gaps in ordinals.
4431            while _next_ordinal_to_read < 4 {
4432                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4433                _next_ordinal_to_read += 1;
4434                next_offset += envelope_size;
4435            }
4436
4437            let next_out_of_line = decoder.next_out_of_line();
4438            let handles_before = decoder.remaining_handles();
4439            if let Some((inlined, num_bytes, num_handles)) =
4440                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4441            {
4442                let member_inline_size =
4443                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4444                if inlined != (member_inline_size <= 4) {
4445                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4446                }
4447                let inner_offset;
4448                let mut inner_depth = depth.clone();
4449                if inlined {
4450                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4451                    inner_offset = next_offset;
4452                } else {
4453                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4454                    inner_depth.increment()?;
4455                }
4456                let val_ref =
4457                    self.exclude_local_proxies.get_or_insert_with(|| fidl::new_empty!(bool, D));
4458                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
4459                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4460                {
4461                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4462                }
4463                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4464                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4465                }
4466            }
4467
4468            next_offset += envelope_size;
4469
4470            // Decode the remaining unknown envelopes.
4471            while next_offset < end_offset {
4472                _next_ordinal_to_read += 1;
4473                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4474                next_offset += envelope_size;
4475            }
4476
4477            Ok(())
4478        }
4479    }
4480
4481    impl ProxyHostPublicationOptions {
4482        #[inline(always)]
4483        fn max_ordinal_present(&self) -> u64 {
4484            if let Some(_) = self.perform_probe {
4485                return 3;
4486            }
4487            if let Some(_) = self.ip_versions {
4488                return 2;
4489            }
4490            if let Some(_) = self.media {
4491                return 1;
4492            }
4493            0
4494        }
4495    }
4496
4497    impl fidl::encoding::ValueTypeMarker for ProxyHostPublicationOptions {
4498        type Borrowed<'a> = &'a Self;
4499        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4500            value
4501        }
4502    }
4503
4504    unsafe impl fidl::encoding::TypeMarker for ProxyHostPublicationOptions {
4505        type Owned = Self;
4506
4507        #[inline(always)]
4508        fn inline_align(_context: fidl::encoding::Context) -> usize {
4509            8
4510        }
4511
4512        #[inline(always)]
4513        fn inline_size(_context: fidl::encoding::Context) -> usize {
4514            16
4515        }
4516    }
4517
4518    unsafe impl<D: fidl::encoding::ResourceDialect>
4519        fidl::encoding::Encode<ProxyHostPublicationOptions, D> for &ProxyHostPublicationOptions
4520    {
4521        unsafe fn encode(
4522            self,
4523            encoder: &mut fidl::encoding::Encoder<'_, D>,
4524            offset: usize,
4525            mut depth: fidl::encoding::Depth,
4526        ) -> fidl::Result<()> {
4527            encoder.debug_check_bounds::<ProxyHostPublicationOptions>(offset);
4528            // Vector header
4529            let max_ordinal: u64 = self.max_ordinal_present();
4530            encoder.write_num(max_ordinal, offset);
4531            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
4532            // Calling encoder.out_of_line_offset(0) is not allowed.
4533            if max_ordinal == 0 {
4534                return Ok(());
4535            }
4536            depth.increment()?;
4537            let envelope_size = 8;
4538            let bytes_len = max_ordinal as usize * envelope_size;
4539            #[allow(unused_variables)]
4540            let offset = encoder.out_of_line_offset(bytes_len);
4541            let mut _prev_end_offset: usize = 0;
4542            if 1 > max_ordinal {
4543                return Ok(());
4544            }
4545
4546            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4547            // are envelope_size bytes.
4548            let cur_offset: usize = (1 - 1) * envelope_size;
4549
4550            // Zero reserved fields.
4551            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4552
4553            // Safety:
4554            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4555            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4556            //   envelope_size bytes, there is always sufficient room.
4557            fidl::encoding::encode_in_envelope_optional::<Media, D>(
4558                self.media.as_ref().map(<Media as fidl::encoding::ValueTypeMarker>::borrow),
4559                encoder,
4560                offset + cur_offset,
4561                depth,
4562            )?;
4563
4564            _prev_end_offset = cur_offset + envelope_size;
4565            if 2 > max_ordinal {
4566                return Ok(());
4567            }
4568
4569            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4570            // are envelope_size bytes.
4571            let cur_offset: usize = (2 - 1) * envelope_size;
4572
4573            // Zero reserved fields.
4574            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4575
4576            // Safety:
4577            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4578            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4579            //   envelope_size bytes, there is always sufficient room.
4580            fidl::encoding::encode_in_envelope_optional::<IpVersions, D>(
4581                self.ip_versions
4582                    .as_ref()
4583                    .map(<IpVersions as fidl::encoding::ValueTypeMarker>::borrow),
4584                encoder,
4585                offset + cur_offset,
4586                depth,
4587            )?;
4588
4589            _prev_end_offset = cur_offset + envelope_size;
4590            if 3 > max_ordinal {
4591                return Ok(());
4592            }
4593
4594            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4595            // are envelope_size bytes.
4596            let cur_offset: usize = (3 - 1) * envelope_size;
4597
4598            // Zero reserved fields.
4599            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4600
4601            // Safety:
4602            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4603            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4604            //   envelope_size bytes, there is always sufficient room.
4605            fidl::encoding::encode_in_envelope_optional::<bool, D>(
4606                self.perform_probe.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
4607                encoder,
4608                offset + cur_offset,
4609                depth,
4610            )?;
4611
4612            _prev_end_offset = cur_offset + envelope_size;
4613
4614            Ok(())
4615        }
4616    }
4617
4618    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
4619        for ProxyHostPublicationOptions
4620    {
4621        #[inline(always)]
4622        fn new_empty() -> Self {
4623            Self::default()
4624        }
4625
4626        unsafe fn decode(
4627            &mut self,
4628            decoder: &mut fidl::encoding::Decoder<'_, D>,
4629            offset: usize,
4630            mut depth: fidl::encoding::Depth,
4631        ) -> fidl::Result<()> {
4632            decoder.debug_check_bounds::<Self>(offset);
4633            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
4634                None => return Err(fidl::Error::NotNullable),
4635                Some(len) => len,
4636            };
4637            // Calling decoder.out_of_line_offset(0) is not allowed.
4638            if len == 0 {
4639                return Ok(());
4640            };
4641            depth.increment()?;
4642            let envelope_size = 8;
4643            let bytes_len = len * envelope_size;
4644            let offset = decoder.out_of_line_offset(bytes_len)?;
4645            // Decode the envelope for each type.
4646            let mut _next_ordinal_to_read = 0;
4647            let mut next_offset = offset;
4648            let end_offset = offset + bytes_len;
4649            _next_ordinal_to_read += 1;
4650            if next_offset >= end_offset {
4651                return Ok(());
4652            }
4653
4654            // Decode unknown envelopes for gaps in ordinals.
4655            while _next_ordinal_to_read < 1 {
4656                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4657                _next_ordinal_to_read += 1;
4658                next_offset += envelope_size;
4659            }
4660
4661            let next_out_of_line = decoder.next_out_of_line();
4662            let handles_before = decoder.remaining_handles();
4663            if let Some((inlined, num_bytes, num_handles)) =
4664                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4665            {
4666                let member_inline_size =
4667                    <Media as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4668                if inlined != (member_inline_size <= 4) {
4669                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4670                }
4671                let inner_offset;
4672                let mut inner_depth = depth.clone();
4673                if inlined {
4674                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4675                    inner_offset = next_offset;
4676                } else {
4677                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4678                    inner_depth.increment()?;
4679                }
4680                let val_ref = self.media.get_or_insert_with(|| fidl::new_empty!(Media, D));
4681                fidl::decode!(Media, D, val_ref, decoder, inner_offset, inner_depth)?;
4682                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4683                {
4684                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4685                }
4686                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4687                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4688                }
4689            }
4690
4691            next_offset += envelope_size;
4692            _next_ordinal_to_read += 1;
4693            if next_offset >= end_offset {
4694                return Ok(());
4695            }
4696
4697            // Decode unknown envelopes for gaps in ordinals.
4698            while _next_ordinal_to_read < 2 {
4699                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4700                _next_ordinal_to_read += 1;
4701                next_offset += envelope_size;
4702            }
4703
4704            let next_out_of_line = decoder.next_out_of_line();
4705            let handles_before = decoder.remaining_handles();
4706            if let Some((inlined, num_bytes, num_handles)) =
4707                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4708            {
4709                let member_inline_size =
4710                    <IpVersions as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4711                if inlined != (member_inline_size <= 4) {
4712                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4713                }
4714                let inner_offset;
4715                let mut inner_depth = depth.clone();
4716                if inlined {
4717                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4718                    inner_offset = next_offset;
4719                } else {
4720                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4721                    inner_depth.increment()?;
4722                }
4723                let val_ref =
4724                    self.ip_versions.get_or_insert_with(|| fidl::new_empty!(IpVersions, D));
4725                fidl::decode!(IpVersions, D, val_ref, decoder, inner_offset, inner_depth)?;
4726                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4727                {
4728                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4729                }
4730                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4731                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4732                }
4733            }
4734
4735            next_offset += envelope_size;
4736            _next_ordinal_to_read += 1;
4737            if next_offset >= end_offset {
4738                return Ok(());
4739            }
4740
4741            // Decode unknown envelopes for gaps in ordinals.
4742            while _next_ordinal_to_read < 3 {
4743                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4744                _next_ordinal_to_read += 1;
4745                next_offset += envelope_size;
4746            }
4747
4748            let next_out_of_line = decoder.next_out_of_line();
4749            let handles_before = decoder.remaining_handles();
4750            if let Some((inlined, num_bytes, num_handles)) =
4751                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4752            {
4753                let member_inline_size =
4754                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4755                if inlined != (member_inline_size <= 4) {
4756                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4757                }
4758                let inner_offset;
4759                let mut inner_depth = depth.clone();
4760                if inlined {
4761                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4762                    inner_offset = next_offset;
4763                } else {
4764                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4765                    inner_depth.increment()?;
4766                }
4767                let val_ref = self.perform_probe.get_or_insert_with(|| fidl::new_empty!(bool, D));
4768                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
4769                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4770                {
4771                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4772                }
4773                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4774                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4775                }
4776            }
4777
4778            next_offset += envelope_size;
4779
4780            // Decode the remaining unknown envelopes.
4781            while next_offset < end_offset {
4782                _next_ordinal_to_read += 1;
4783                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4784                next_offset += envelope_size;
4785            }
4786
4787            Ok(())
4788        }
4789    }
4790
4791    impl ServiceInstance {
4792        #[inline(always)]
4793        fn max_ordinal_present(&self) -> u64 {
4794            if let Some(_) = self.text_strings {
4795                return 10;
4796            }
4797            if let Some(_) = self.addresses {
4798                return 9;
4799            }
4800            if let Some(_) = self.target {
4801                return 8;
4802            }
4803            if let Some(_) = self.srv_weight {
4804                return 7;
4805            }
4806            if let Some(_) = self.srv_priority {
4807                return 6;
4808            }
4809            if let Some(_) = self.text {
4810                return 5;
4811            }
4812            if let Some(_) = self.ipv6_endpoint {
4813                return 4;
4814            }
4815            if let Some(_) = self.ipv4_endpoint {
4816                return 3;
4817            }
4818            if let Some(_) = self.instance {
4819                return 2;
4820            }
4821            if let Some(_) = self.service {
4822                return 1;
4823            }
4824            0
4825        }
4826    }
4827
4828    impl fidl::encoding::ValueTypeMarker for ServiceInstance {
4829        type Borrowed<'a> = &'a Self;
4830        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4831            value
4832        }
4833    }
4834
4835    unsafe impl fidl::encoding::TypeMarker for ServiceInstance {
4836        type Owned = Self;
4837
4838        #[inline(always)]
4839        fn inline_align(_context: fidl::encoding::Context) -> usize {
4840            8
4841        }
4842
4843        #[inline(always)]
4844        fn inline_size(_context: fidl::encoding::Context) -> usize {
4845            16
4846        }
4847    }
4848
4849    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ServiceInstance, D>
4850        for &ServiceInstance
4851    {
4852        unsafe fn encode(
4853            self,
4854            encoder: &mut fidl::encoding::Encoder<'_, D>,
4855            offset: usize,
4856            mut depth: fidl::encoding::Depth,
4857        ) -> fidl::Result<()> {
4858            encoder.debug_check_bounds::<ServiceInstance>(offset);
4859            // Vector header
4860            let max_ordinal: u64 = self.max_ordinal_present();
4861            encoder.write_num(max_ordinal, offset);
4862            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
4863            // Calling encoder.out_of_line_offset(0) is not allowed.
4864            if max_ordinal == 0 {
4865                return Ok(());
4866            }
4867            depth.increment()?;
4868            let envelope_size = 8;
4869            let bytes_len = max_ordinal as usize * envelope_size;
4870            #[allow(unused_variables)]
4871            let offset = encoder.out_of_line_offset(bytes_len);
4872            let mut _prev_end_offset: usize = 0;
4873            if 1 > max_ordinal {
4874                return Ok(());
4875            }
4876
4877            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4878            // are envelope_size bytes.
4879            let cur_offset: usize = (1 - 1) * envelope_size;
4880
4881            // Zero reserved fields.
4882            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4883
4884            // Safety:
4885            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4886            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4887            //   envelope_size bytes, there is always sufficient room.
4888            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<22>, D>(
4889                self.service.as_ref().map(
4890                    <fidl::encoding::BoundedString<22> as fidl::encoding::ValueTypeMarker>::borrow,
4891                ),
4892                encoder,
4893                offset + cur_offset,
4894                depth,
4895            )?;
4896
4897            _prev_end_offset = cur_offset + envelope_size;
4898            if 2 > max_ordinal {
4899                return Ok(());
4900            }
4901
4902            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4903            // are envelope_size bytes.
4904            let cur_offset: usize = (2 - 1) * envelope_size;
4905
4906            // Zero reserved fields.
4907            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4908
4909            // Safety:
4910            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4911            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4912            //   envelope_size bytes, there is always sufficient room.
4913            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<63>, D>(
4914                self.instance.as_ref().map(
4915                    <fidl::encoding::BoundedString<63> as fidl::encoding::ValueTypeMarker>::borrow,
4916                ),
4917                encoder,
4918                offset + cur_offset,
4919                depth,
4920            )?;
4921
4922            _prev_end_offset = cur_offset + envelope_size;
4923            if 3 > max_ordinal {
4924                return Ok(());
4925            }
4926
4927            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4928            // are envelope_size bytes.
4929            let cur_offset: usize = (3 - 1) * envelope_size;
4930
4931            // Zero reserved fields.
4932            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4933
4934            // Safety:
4935            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4936            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4937            //   envelope_size bytes, there is always sufficient room.
4938            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_net_common::Ipv4SocketAddress, D>(
4939            self.ipv4_endpoint.as_ref().map(<fidl_fuchsia_net_common::Ipv4SocketAddress as fidl::encoding::ValueTypeMarker>::borrow),
4940            encoder, offset + cur_offset, depth
4941        )?;
4942
4943            _prev_end_offset = cur_offset + envelope_size;
4944            if 4 > max_ordinal {
4945                return Ok(());
4946            }
4947
4948            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4949            // are envelope_size bytes.
4950            let cur_offset: usize = (4 - 1) * envelope_size;
4951
4952            // Zero reserved fields.
4953            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4954
4955            // Safety:
4956            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4957            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4958            //   envelope_size bytes, there is always sufficient room.
4959            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_net_common::Ipv6SocketAddress, D>(
4960            self.ipv6_endpoint.as_ref().map(<fidl_fuchsia_net_common::Ipv6SocketAddress as fidl::encoding::ValueTypeMarker>::borrow),
4961            encoder, offset + cur_offset, depth
4962        )?;
4963
4964            _prev_end_offset = cur_offset + envelope_size;
4965            if 5 > max_ordinal {
4966                return Ok(());
4967            }
4968
4969            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4970            // are envelope_size bytes.
4971            let cur_offset: usize = (5 - 1) * envelope_size;
4972
4973            // Zero reserved fields.
4974            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4975
4976            // Safety:
4977            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4978            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4979            //   envelope_size bytes, there is always sufficient room.
4980            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<fidl::encoding::BoundedString<255>, 256>, D>(
4981            self.text.as_ref().map(<fidl::encoding::Vector<fidl::encoding::BoundedString<255>, 256> as fidl::encoding::ValueTypeMarker>::borrow),
4982            encoder, offset + cur_offset, depth
4983        )?;
4984
4985            _prev_end_offset = cur_offset + envelope_size;
4986            if 6 > max_ordinal {
4987                return Ok(());
4988            }
4989
4990            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4991            // are envelope_size bytes.
4992            let cur_offset: usize = (6 - 1) * envelope_size;
4993
4994            // Zero reserved fields.
4995            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4996
4997            // Safety:
4998            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4999            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5000            //   envelope_size bytes, there is always sufficient room.
5001            fidl::encoding::encode_in_envelope_optional::<u16, D>(
5002                self.srv_priority.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
5003                encoder,
5004                offset + cur_offset,
5005                depth,
5006            )?;
5007
5008            _prev_end_offset = cur_offset + envelope_size;
5009            if 7 > max_ordinal {
5010                return Ok(());
5011            }
5012
5013            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5014            // are envelope_size bytes.
5015            let cur_offset: usize = (7 - 1) * envelope_size;
5016
5017            // Zero reserved fields.
5018            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5019
5020            // Safety:
5021            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5022            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5023            //   envelope_size bytes, there is always sufficient room.
5024            fidl::encoding::encode_in_envelope_optional::<u16, D>(
5025                self.srv_weight.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
5026                encoder,
5027                offset + cur_offset,
5028                depth,
5029            )?;
5030
5031            _prev_end_offset = cur_offset + envelope_size;
5032            if 8 > max_ordinal {
5033                return Ok(());
5034            }
5035
5036            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5037            // are envelope_size bytes.
5038            let cur_offset: usize = (8 - 1) * envelope_size;
5039
5040            // Zero reserved fields.
5041            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5042
5043            // Safety:
5044            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5045            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5046            //   envelope_size bytes, there is always sufficient room.
5047            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<255>, D>(
5048                self.target.as_ref().map(
5049                    <fidl::encoding::BoundedString<255> as fidl::encoding::ValueTypeMarker>::borrow,
5050                ),
5051                encoder,
5052                offset + cur_offset,
5053                depth,
5054            )?;
5055
5056            _prev_end_offset = cur_offset + envelope_size;
5057            if 9 > max_ordinal {
5058                return Ok(());
5059            }
5060
5061            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5062            // are envelope_size bytes.
5063            let cur_offset: usize = (9 - 1) * envelope_size;
5064
5065            // Zero reserved fields.
5066            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5067
5068            // Safety:
5069            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5070            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5071            //   envelope_size bytes, there is always sufficient room.
5072            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<fidl_fuchsia_net_common::SocketAddress, 64>, D>(
5073            self.addresses.as_ref().map(<fidl::encoding::Vector<fidl_fuchsia_net_common::SocketAddress, 64> as fidl::encoding::ValueTypeMarker>::borrow),
5074            encoder, offset + cur_offset, depth
5075        )?;
5076
5077            _prev_end_offset = cur_offset + envelope_size;
5078            if 10 > max_ordinal {
5079                return Ok(());
5080            }
5081
5082            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5083            // are envelope_size bytes.
5084            let cur_offset: usize = (10 - 1) * envelope_size;
5085
5086            // Zero reserved fields.
5087            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5088
5089            // Safety:
5090            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5091            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5092            //   envelope_size bytes, there is always sufficient room.
5093            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<fidl::encoding::Vector<u8, 255>, 256>, D>(
5094            self.text_strings.as_ref().map(<fidl::encoding::Vector<fidl::encoding::Vector<u8, 255>, 256> as fidl::encoding::ValueTypeMarker>::borrow),
5095            encoder, offset + cur_offset, depth
5096        )?;
5097
5098            _prev_end_offset = cur_offset + envelope_size;
5099
5100            Ok(())
5101        }
5102    }
5103
5104    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ServiceInstance {
5105        #[inline(always)]
5106        fn new_empty() -> Self {
5107            Self::default()
5108        }
5109
5110        unsafe fn decode(
5111            &mut self,
5112            decoder: &mut fidl::encoding::Decoder<'_, D>,
5113            offset: usize,
5114            mut depth: fidl::encoding::Depth,
5115        ) -> fidl::Result<()> {
5116            decoder.debug_check_bounds::<Self>(offset);
5117            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
5118                None => return Err(fidl::Error::NotNullable),
5119                Some(len) => len,
5120            };
5121            // Calling decoder.out_of_line_offset(0) is not allowed.
5122            if len == 0 {
5123                return Ok(());
5124            };
5125            depth.increment()?;
5126            let envelope_size = 8;
5127            let bytes_len = len * envelope_size;
5128            let offset = decoder.out_of_line_offset(bytes_len)?;
5129            // Decode the envelope for each type.
5130            let mut _next_ordinal_to_read = 0;
5131            let mut next_offset = offset;
5132            let end_offset = offset + bytes_len;
5133            _next_ordinal_to_read += 1;
5134            if next_offset >= end_offset {
5135                return Ok(());
5136            }
5137
5138            // Decode unknown envelopes for gaps in ordinals.
5139            while _next_ordinal_to_read < 1 {
5140                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5141                _next_ordinal_to_read += 1;
5142                next_offset += envelope_size;
5143            }
5144
5145            let next_out_of_line = decoder.next_out_of_line();
5146            let handles_before = decoder.remaining_handles();
5147            if let Some((inlined, num_bytes, num_handles)) =
5148                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5149            {
5150                let member_inline_size =
5151                    <fidl::encoding::BoundedString<22> as fidl::encoding::TypeMarker>::inline_size(
5152                        decoder.context,
5153                    );
5154                if inlined != (member_inline_size <= 4) {
5155                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5156                }
5157                let inner_offset;
5158                let mut inner_depth = depth.clone();
5159                if inlined {
5160                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5161                    inner_offset = next_offset;
5162                } else {
5163                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5164                    inner_depth.increment()?;
5165                }
5166                let val_ref = self
5167                    .service
5168                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<22>, D));
5169                fidl::decode!(
5170                    fidl::encoding::BoundedString<22>,
5171                    D,
5172                    val_ref,
5173                    decoder,
5174                    inner_offset,
5175                    inner_depth
5176                )?;
5177                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5178                {
5179                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5180                }
5181                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5182                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5183                }
5184            }
5185
5186            next_offset += envelope_size;
5187            _next_ordinal_to_read += 1;
5188            if next_offset >= end_offset {
5189                return Ok(());
5190            }
5191
5192            // Decode unknown envelopes for gaps in ordinals.
5193            while _next_ordinal_to_read < 2 {
5194                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5195                _next_ordinal_to_read += 1;
5196                next_offset += envelope_size;
5197            }
5198
5199            let next_out_of_line = decoder.next_out_of_line();
5200            let handles_before = decoder.remaining_handles();
5201            if let Some((inlined, num_bytes, num_handles)) =
5202                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5203            {
5204                let member_inline_size =
5205                    <fidl::encoding::BoundedString<63> as fidl::encoding::TypeMarker>::inline_size(
5206                        decoder.context,
5207                    );
5208                if inlined != (member_inline_size <= 4) {
5209                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5210                }
5211                let inner_offset;
5212                let mut inner_depth = depth.clone();
5213                if inlined {
5214                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5215                    inner_offset = next_offset;
5216                } else {
5217                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5218                    inner_depth.increment()?;
5219                }
5220                let val_ref = self
5221                    .instance
5222                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<63>, D));
5223                fidl::decode!(
5224                    fidl::encoding::BoundedString<63>,
5225                    D,
5226                    val_ref,
5227                    decoder,
5228                    inner_offset,
5229                    inner_depth
5230                )?;
5231                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5232                {
5233                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5234                }
5235                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5236                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5237                }
5238            }
5239
5240            next_offset += envelope_size;
5241            _next_ordinal_to_read += 1;
5242            if next_offset >= end_offset {
5243                return Ok(());
5244            }
5245
5246            // Decode unknown envelopes for gaps in ordinals.
5247            while _next_ordinal_to_read < 3 {
5248                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5249                _next_ordinal_to_read += 1;
5250                next_offset += envelope_size;
5251            }
5252
5253            let next_out_of_line = decoder.next_out_of_line();
5254            let handles_before = decoder.remaining_handles();
5255            if let Some((inlined, num_bytes, num_handles)) =
5256                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5257            {
5258                let member_inline_size = <fidl_fuchsia_net_common::Ipv4SocketAddress as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5259                if inlined != (member_inline_size <= 4) {
5260                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5261                }
5262                let inner_offset;
5263                let mut inner_depth = depth.clone();
5264                if inlined {
5265                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5266                    inner_offset = next_offset;
5267                } else {
5268                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5269                    inner_depth.increment()?;
5270                }
5271                let val_ref = self.ipv4_endpoint.get_or_insert_with(|| {
5272                    fidl::new_empty!(fidl_fuchsia_net_common::Ipv4SocketAddress, D)
5273                });
5274                fidl::decode!(
5275                    fidl_fuchsia_net_common::Ipv4SocketAddress,
5276                    D,
5277                    val_ref,
5278                    decoder,
5279                    inner_offset,
5280                    inner_depth
5281                )?;
5282                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5283                {
5284                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5285                }
5286                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5287                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5288                }
5289            }
5290
5291            next_offset += envelope_size;
5292            _next_ordinal_to_read += 1;
5293            if next_offset >= end_offset {
5294                return Ok(());
5295            }
5296
5297            // Decode unknown envelopes for gaps in ordinals.
5298            while _next_ordinal_to_read < 4 {
5299                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5300                _next_ordinal_to_read += 1;
5301                next_offset += envelope_size;
5302            }
5303
5304            let next_out_of_line = decoder.next_out_of_line();
5305            let handles_before = decoder.remaining_handles();
5306            if let Some((inlined, num_bytes, num_handles)) =
5307                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5308            {
5309                let member_inline_size = <fidl_fuchsia_net_common::Ipv6SocketAddress as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5310                if inlined != (member_inline_size <= 4) {
5311                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5312                }
5313                let inner_offset;
5314                let mut inner_depth = depth.clone();
5315                if inlined {
5316                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5317                    inner_offset = next_offset;
5318                } else {
5319                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5320                    inner_depth.increment()?;
5321                }
5322                let val_ref = self.ipv6_endpoint.get_or_insert_with(|| {
5323                    fidl::new_empty!(fidl_fuchsia_net_common::Ipv6SocketAddress, D)
5324                });
5325                fidl::decode!(
5326                    fidl_fuchsia_net_common::Ipv6SocketAddress,
5327                    D,
5328                    val_ref,
5329                    decoder,
5330                    inner_offset,
5331                    inner_depth
5332                )?;
5333                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5334                {
5335                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5336                }
5337                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5338                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5339                }
5340            }
5341
5342            next_offset += envelope_size;
5343            _next_ordinal_to_read += 1;
5344            if next_offset >= end_offset {
5345                return Ok(());
5346            }
5347
5348            // Decode unknown envelopes for gaps in ordinals.
5349            while _next_ordinal_to_read < 5 {
5350                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5351                _next_ordinal_to_read += 1;
5352                next_offset += envelope_size;
5353            }
5354
5355            let next_out_of_line = decoder.next_out_of_line();
5356            let handles_before = decoder.remaining_handles();
5357            if let Some((inlined, num_bytes, num_handles)) =
5358                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5359            {
5360                let member_inline_size = <fidl::encoding::Vector<
5361                    fidl::encoding::BoundedString<255>,
5362                    256,
5363                > as fidl::encoding::TypeMarker>::inline_size(
5364                    decoder.context
5365                );
5366                if inlined != (member_inline_size <= 4) {
5367                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5368                }
5369                let inner_offset;
5370                let mut inner_depth = depth.clone();
5371                if inlined {
5372                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5373                    inner_offset = next_offset;
5374                } else {
5375                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5376                    inner_depth.increment()?;
5377                }
5378                let val_ref = self.text.get_or_insert_with(|| {
5379                    fidl::new_empty!(
5380                        fidl::encoding::Vector<fidl::encoding::BoundedString<255>, 256>,
5381                        D
5382                    )
5383                });
5384                fidl::decode!(
5385                    fidl::encoding::Vector<fidl::encoding::BoundedString<255>, 256>,
5386                    D,
5387                    val_ref,
5388                    decoder,
5389                    inner_offset,
5390                    inner_depth
5391                )?;
5392                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5393                {
5394                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5395                }
5396                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5397                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5398                }
5399            }
5400
5401            next_offset += envelope_size;
5402            _next_ordinal_to_read += 1;
5403            if next_offset >= end_offset {
5404                return Ok(());
5405            }
5406
5407            // Decode unknown envelopes for gaps in ordinals.
5408            while _next_ordinal_to_read < 6 {
5409                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5410                _next_ordinal_to_read += 1;
5411                next_offset += envelope_size;
5412            }
5413
5414            let next_out_of_line = decoder.next_out_of_line();
5415            let handles_before = decoder.remaining_handles();
5416            if let Some((inlined, num_bytes, num_handles)) =
5417                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5418            {
5419                let member_inline_size =
5420                    <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5421                if inlined != (member_inline_size <= 4) {
5422                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5423                }
5424                let inner_offset;
5425                let mut inner_depth = depth.clone();
5426                if inlined {
5427                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5428                    inner_offset = next_offset;
5429                } else {
5430                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5431                    inner_depth.increment()?;
5432                }
5433                let val_ref = self.srv_priority.get_or_insert_with(|| fidl::new_empty!(u16, D));
5434                fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
5435                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5436                {
5437                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5438                }
5439                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5440                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5441                }
5442            }
5443
5444            next_offset += envelope_size;
5445            _next_ordinal_to_read += 1;
5446            if next_offset >= end_offset {
5447                return Ok(());
5448            }
5449
5450            // Decode unknown envelopes for gaps in ordinals.
5451            while _next_ordinal_to_read < 7 {
5452                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5453                _next_ordinal_to_read += 1;
5454                next_offset += envelope_size;
5455            }
5456
5457            let next_out_of_line = decoder.next_out_of_line();
5458            let handles_before = decoder.remaining_handles();
5459            if let Some((inlined, num_bytes, num_handles)) =
5460                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5461            {
5462                let member_inline_size =
5463                    <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5464                if inlined != (member_inline_size <= 4) {
5465                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5466                }
5467                let inner_offset;
5468                let mut inner_depth = depth.clone();
5469                if inlined {
5470                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5471                    inner_offset = next_offset;
5472                } else {
5473                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5474                    inner_depth.increment()?;
5475                }
5476                let val_ref = self.srv_weight.get_or_insert_with(|| fidl::new_empty!(u16, D));
5477                fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
5478                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5479                {
5480                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5481                }
5482                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5483                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5484                }
5485            }
5486
5487            next_offset += envelope_size;
5488            _next_ordinal_to_read += 1;
5489            if next_offset >= end_offset {
5490                return Ok(());
5491            }
5492
5493            // Decode unknown envelopes for gaps in ordinals.
5494            while _next_ordinal_to_read < 8 {
5495                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5496                _next_ordinal_to_read += 1;
5497                next_offset += envelope_size;
5498            }
5499
5500            let next_out_of_line = decoder.next_out_of_line();
5501            let handles_before = decoder.remaining_handles();
5502            if let Some((inlined, num_bytes, num_handles)) =
5503                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5504            {
5505                let member_inline_size =
5506                    <fidl::encoding::BoundedString<255> as fidl::encoding::TypeMarker>::inline_size(
5507                        decoder.context,
5508                    );
5509                if inlined != (member_inline_size <= 4) {
5510                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5511                }
5512                let inner_offset;
5513                let mut inner_depth = depth.clone();
5514                if inlined {
5515                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5516                    inner_offset = next_offset;
5517                } else {
5518                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5519                    inner_depth.increment()?;
5520                }
5521                let val_ref = self
5522                    .target
5523                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<255>, D));
5524                fidl::decode!(
5525                    fidl::encoding::BoundedString<255>,
5526                    D,
5527                    val_ref,
5528                    decoder,
5529                    inner_offset,
5530                    inner_depth
5531                )?;
5532                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5533                {
5534                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5535                }
5536                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5537                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5538                }
5539            }
5540
5541            next_offset += envelope_size;
5542            _next_ordinal_to_read += 1;
5543            if next_offset >= end_offset {
5544                return Ok(());
5545            }
5546
5547            // Decode unknown envelopes for gaps in ordinals.
5548            while _next_ordinal_to_read < 9 {
5549                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5550                _next_ordinal_to_read += 1;
5551                next_offset += envelope_size;
5552            }
5553
5554            let next_out_of_line = decoder.next_out_of_line();
5555            let handles_before = decoder.remaining_handles();
5556            if let Some((inlined, num_bytes, num_handles)) =
5557                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5558            {
5559                let member_inline_size = <fidl::encoding::Vector<
5560                    fidl_fuchsia_net_common::SocketAddress,
5561                    64,
5562                > as fidl::encoding::TypeMarker>::inline_size(
5563                    decoder.context
5564                );
5565                if inlined != (member_inline_size <= 4) {
5566                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5567                }
5568                let inner_offset;
5569                let mut inner_depth = depth.clone();
5570                if inlined {
5571                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5572                    inner_offset = next_offset;
5573                } else {
5574                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5575                    inner_depth.increment()?;
5576                }
5577                let val_ref =
5578                self.addresses.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<fidl_fuchsia_net_common::SocketAddress, 64>, D));
5579                fidl::decode!(fidl::encoding::Vector<fidl_fuchsia_net_common::SocketAddress, 64>, D, val_ref, decoder, inner_offset, inner_depth)?;
5580                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5581                {
5582                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5583                }
5584                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5585                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5586                }
5587            }
5588
5589            next_offset += envelope_size;
5590            _next_ordinal_to_read += 1;
5591            if next_offset >= end_offset {
5592                return Ok(());
5593            }
5594
5595            // Decode unknown envelopes for gaps in ordinals.
5596            while _next_ordinal_to_read < 10 {
5597                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5598                _next_ordinal_to_read += 1;
5599                next_offset += envelope_size;
5600            }
5601
5602            let next_out_of_line = decoder.next_out_of_line();
5603            let handles_before = decoder.remaining_handles();
5604            if let Some((inlined, num_bytes, num_handles)) =
5605                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5606            {
5607                let member_inline_size = <fidl::encoding::Vector<
5608                    fidl::encoding::Vector<u8, 255>,
5609                    256,
5610                > as fidl::encoding::TypeMarker>::inline_size(
5611                    decoder.context
5612                );
5613                if inlined != (member_inline_size <= 4) {
5614                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5615                }
5616                let inner_offset;
5617                let mut inner_depth = depth.clone();
5618                if inlined {
5619                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5620                    inner_offset = next_offset;
5621                } else {
5622                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5623                    inner_depth.increment()?;
5624                }
5625                let val_ref = self.text_strings.get_or_insert_with(|| {
5626                    fidl::new_empty!(
5627                        fidl::encoding::Vector<fidl::encoding::Vector<u8, 255>, 256>,
5628                        D
5629                    )
5630                });
5631                fidl::decode!(
5632                    fidl::encoding::Vector<fidl::encoding::Vector<u8, 255>, 256>,
5633                    D,
5634                    val_ref,
5635                    decoder,
5636                    inner_offset,
5637                    inner_depth
5638                )?;
5639                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5640                {
5641                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5642                }
5643                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5644                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5645                }
5646            }
5647
5648            next_offset += envelope_size;
5649
5650            // Decode the remaining unknown envelopes.
5651            while next_offset < end_offset {
5652                _next_ordinal_to_read += 1;
5653                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5654                next_offset += envelope_size;
5655            }
5656
5657            Ok(())
5658        }
5659    }
5660
5661    impl ServiceInstancePublication {
5662        #[inline(always)]
5663        fn max_ordinal_present(&self) -> u64 {
5664            if let Some(_) = self.txt_ttl {
5665                return 7;
5666            }
5667            if let Some(_) = self.srv_ttl {
5668                return 6;
5669            }
5670            if let Some(_) = self.ptr_ttl {
5671                return 5;
5672            }
5673            if let Some(_) = self.srv_weight {
5674                return 4;
5675            }
5676            if let Some(_) = self.srv_priority {
5677                return 3;
5678            }
5679            if let Some(_) = self.text {
5680                return 2;
5681            }
5682            if let Some(_) = self.port {
5683                return 1;
5684            }
5685            0
5686        }
5687    }
5688
5689    impl fidl::encoding::ValueTypeMarker for ServiceInstancePublication {
5690        type Borrowed<'a> = &'a Self;
5691        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5692            value
5693        }
5694    }
5695
5696    unsafe impl fidl::encoding::TypeMarker for ServiceInstancePublication {
5697        type Owned = Self;
5698
5699        #[inline(always)]
5700        fn inline_align(_context: fidl::encoding::Context) -> usize {
5701            8
5702        }
5703
5704        #[inline(always)]
5705        fn inline_size(_context: fidl::encoding::Context) -> usize {
5706            16
5707        }
5708    }
5709
5710    unsafe impl<D: fidl::encoding::ResourceDialect>
5711        fidl::encoding::Encode<ServiceInstancePublication, D> for &ServiceInstancePublication
5712    {
5713        unsafe fn encode(
5714            self,
5715            encoder: &mut fidl::encoding::Encoder<'_, D>,
5716            offset: usize,
5717            mut depth: fidl::encoding::Depth,
5718        ) -> fidl::Result<()> {
5719            encoder.debug_check_bounds::<ServiceInstancePublication>(offset);
5720            // Vector header
5721            let max_ordinal: u64 = self.max_ordinal_present();
5722            encoder.write_num(max_ordinal, offset);
5723            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
5724            // Calling encoder.out_of_line_offset(0) is not allowed.
5725            if max_ordinal == 0 {
5726                return Ok(());
5727            }
5728            depth.increment()?;
5729            let envelope_size = 8;
5730            let bytes_len = max_ordinal as usize * envelope_size;
5731            #[allow(unused_variables)]
5732            let offset = encoder.out_of_line_offset(bytes_len);
5733            let mut _prev_end_offset: usize = 0;
5734            if 1 > max_ordinal {
5735                return Ok(());
5736            }
5737
5738            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5739            // are envelope_size bytes.
5740            let cur_offset: usize = (1 - 1) * envelope_size;
5741
5742            // Zero reserved fields.
5743            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5744
5745            // Safety:
5746            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5747            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5748            //   envelope_size bytes, there is always sufficient room.
5749            fidl::encoding::encode_in_envelope_optional::<u16, D>(
5750                self.port.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
5751                encoder,
5752                offset + cur_offset,
5753                depth,
5754            )?;
5755
5756            _prev_end_offset = cur_offset + envelope_size;
5757            if 2 > max_ordinal {
5758                return Ok(());
5759            }
5760
5761            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5762            // are envelope_size bytes.
5763            let cur_offset: usize = (2 - 1) * envelope_size;
5764
5765            // Zero reserved fields.
5766            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5767
5768            // Safety:
5769            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5770            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5771            //   envelope_size bytes, there is always sufficient room.
5772            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<fidl::encoding::Vector<u8, 255>, 256>, D>(
5773            self.text.as_ref().map(<fidl::encoding::Vector<fidl::encoding::Vector<u8, 255>, 256> as fidl::encoding::ValueTypeMarker>::borrow),
5774            encoder, offset + cur_offset, depth
5775        )?;
5776
5777            _prev_end_offset = cur_offset + envelope_size;
5778            if 3 > max_ordinal {
5779                return Ok(());
5780            }
5781
5782            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5783            // are envelope_size bytes.
5784            let cur_offset: usize = (3 - 1) * envelope_size;
5785
5786            // Zero reserved fields.
5787            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5788
5789            // Safety:
5790            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5791            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5792            //   envelope_size bytes, there is always sufficient room.
5793            fidl::encoding::encode_in_envelope_optional::<u16, D>(
5794                self.srv_priority.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
5795                encoder,
5796                offset + cur_offset,
5797                depth,
5798            )?;
5799
5800            _prev_end_offset = cur_offset + envelope_size;
5801            if 4 > max_ordinal {
5802                return Ok(());
5803            }
5804
5805            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5806            // are envelope_size bytes.
5807            let cur_offset: usize = (4 - 1) * envelope_size;
5808
5809            // Zero reserved fields.
5810            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5811
5812            // Safety:
5813            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5814            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5815            //   envelope_size bytes, there is always sufficient room.
5816            fidl::encoding::encode_in_envelope_optional::<u16, D>(
5817                self.srv_weight.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
5818                encoder,
5819                offset + cur_offset,
5820                depth,
5821            )?;
5822
5823            _prev_end_offset = cur_offset + envelope_size;
5824            if 5 > max_ordinal {
5825                return Ok(());
5826            }
5827
5828            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5829            // are envelope_size bytes.
5830            let cur_offset: usize = (5 - 1) * envelope_size;
5831
5832            // Zero reserved fields.
5833            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5834
5835            // Safety:
5836            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5837            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5838            //   envelope_size bytes, there is always sufficient room.
5839            fidl::encoding::encode_in_envelope_optional::<i64, D>(
5840                self.ptr_ttl.as_ref().map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
5841                encoder,
5842                offset + cur_offset,
5843                depth,
5844            )?;
5845
5846            _prev_end_offset = cur_offset + envelope_size;
5847            if 6 > max_ordinal {
5848                return Ok(());
5849            }
5850
5851            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5852            // are envelope_size bytes.
5853            let cur_offset: usize = (6 - 1) * envelope_size;
5854
5855            // Zero reserved fields.
5856            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5857
5858            // Safety:
5859            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5860            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5861            //   envelope_size bytes, there is always sufficient room.
5862            fidl::encoding::encode_in_envelope_optional::<i64, D>(
5863                self.srv_ttl.as_ref().map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
5864                encoder,
5865                offset + cur_offset,
5866                depth,
5867            )?;
5868
5869            _prev_end_offset = cur_offset + envelope_size;
5870            if 7 > max_ordinal {
5871                return Ok(());
5872            }
5873
5874            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5875            // are envelope_size bytes.
5876            let cur_offset: usize = (7 - 1) * envelope_size;
5877
5878            // Zero reserved fields.
5879            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5880
5881            // Safety:
5882            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5883            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5884            //   envelope_size bytes, there is always sufficient room.
5885            fidl::encoding::encode_in_envelope_optional::<i64, D>(
5886                self.txt_ttl.as_ref().map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
5887                encoder,
5888                offset + cur_offset,
5889                depth,
5890            )?;
5891
5892            _prev_end_offset = cur_offset + envelope_size;
5893
5894            Ok(())
5895        }
5896    }
5897
5898    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
5899        for ServiceInstancePublication
5900    {
5901        #[inline(always)]
5902        fn new_empty() -> Self {
5903            Self::default()
5904        }
5905
5906        unsafe fn decode(
5907            &mut self,
5908            decoder: &mut fidl::encoding::Decoder<'_, D>,
5909            offset: usize,
5910            mut depth: fidl::encoding::Depth,
5911        ) -> fidl::Result<()> {
5912            decoder.debug_check_bounds::<Self>(offset);
5913            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
5914                None => return Err(fidl::Error::NotNullable),
5915                Some(len) => len,
5916            };
5917            // Calling decoder.out_of_line_offset(0) is not allowed.
5918            if len == 0 {
5919                return Ok(());
5920            };
5921            depth.increment()?;
5922            let envelope_size = 8;
5923            let bytes_len = len * envelope_size;
5924            let offset = decoder.out_of_line_offset(bytes_len)?;
5925            // Decode the envelope for each type.
5926            let mut _next_ordinal_to_read = 0;
5927            let mut next_offset = offset;
5928            let end_offset = offset + bytes_len;
5929            _next_ordinal_to_read += 1;
5930            if next_offset >= end_offset {
5931                return Ok(());
5932            }
5933
5934            // Decode unknown envelopes for gaps in ordinals.
5935            while _next_ordinal_to_read < 1 {
5936                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5937                _next_ordinal_to_read += 1;
5938                next_offset += envelope_size;
5939            }
5940
5941            let next_out_of_line = decoder.next_out_of_line();
5942            let handles_before = decoder.remaining_handles();
5943            if let Some((inlined, num_bytes, num_handles)) =
5944                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5945            {
5946                let member_inline_size =
5947                    <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5948                if inlined != (member_inline_size <= 4) {
5949                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5950                }
5951                let inner_offset;
5952                let mut inner_depth = depth.clone();
5953                if inlined {
5954                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5955                    inner_offset = next_offset;
5956                } else {
5957                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5958                    inner_depth.increment()?;
5959                }
5960                let val_ref = self.port.get_or_insert_with(|| fidl::new_empty!(u16, D));
5961                fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
5962                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5963                {
5964                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5965                }
5966                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5967                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5968                }
5969            }
5970
5971            next_offset += envelope_size;
5972            _next_ordinal_to_read += 1;
5973            if next_offset >= end_offset {
5974                return Ok(());
5975            }
5976
5977            // Decode unknown envelopes for gaps in ordinals.
5978            while _next_ordinal_to_read < 2 {
5979                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5980                _next_ordinal_to_read += 1;
5981                next_offset += envelope_size;
5982            }
5983
5984            let next_out_of_line = decoder.next_out_of_line();
5985            let handles_before = decoder.remaining_handles();
5986            if let Some((inlined, num_bytes, num_handles)) =
5987                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5988            {
5989                let member_inline_size = <fidl::encoding::Vector<
5990                    fidl::encoding::Vector<u8, 255>,
5991                    256,
5992                > as fidl::encoding::TypeMarker>::inline_size(
5993                    decoder.context
5994                );
5995                if inlined != (member_inline_size <= 4) {
5996                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5997                }
5998                let inner_offset;
5999                let mut inner_depth = depth.clone();
6000                if inlined {
6001                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6002                    inner_offset = next_offset;
6003                } else {
6004                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6005                    inner_depth.increment()?;
6006                }
6007                let val_ref = self.text.get_or_insert_with(|| {
6008                    fidl::new_empty!(
6009                        fidl::encoding::Vector<fidl::encoding::Vector<u8, 255>, 256>,
6010                        D
6011                    )
6012                });
6013                fidl::decode!(
6014                    fidl::encoding::Vector<fidl::encoding::Vector<u8, 255>, 256>,
6015                    D,
6016                    val_ref,
6017                    decoder,
6018                    inner_offset,
6019                    inner_depth
6020                )?;
6021                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6022                {
6023                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6024                }
6025                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6026                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6027                }
6028            }
6029
6030            next_offset += envelope_size;
6031            _next_ordinal_to_read += 1;
6032            if next_offset >= end_offset {
6033                return Ok(());
6034            }
6035
6036            // Decode unknown envelopes for gaps in ordinals.
6037            while _next_ordinal_to_read < 3 {
6038                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6039                _next_ordinal_to_read += 1;
6040                next_offset += envelope_size;
6041            }
6042
6043            let next_out_of_line = decoder.next_out_of_line();
6044            let handles_before = decoder.remaining_handles();
6045            if let Some((inlined, num_bytes, num_handles)) =
6046                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6047            {
6048                let member_inline_size =
6049                    <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6050                if inlined != (member_inline_size <= 4) {
6051                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6052                }
6053                let inner_offset;
6054                let mut inner_depth = depth.clone();
6055                if inlined {
6056                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6057                    inner_offset = next_offset;
6058                } else {
6059                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6060                    inner_depth.increment()?;
6061                }
6062                let val_ref = self.srv_priority.get_or_insert_with(|| fidl::new_empty!(u16, D));
6063                fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
6064                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6065                {
6066                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6067                }
6068                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6069                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6070                }
6071            }
6072
6073            next_offset += envelope_size;
6074            _next_ordinal_to_read += 1;
6075            if next_offset >= end_offset {
6076                return Ok(());
6077            }
6078
6079            // Decode unknown envelopes for gaps in ordinals.
6080            while _next_ordinal_to_read < 4 {
6081                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6082                _next_ordinal_to_read += 1;
6083                next_offset += envelope_size;
6084            }
6085
6086            let next_out_of_line = decoder.next_out_of_line();
6087            let handles_before = decoder.remaining_handles();
6088            if let Some((inlined, num_bytes, num_handles)) =
6089                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6090            {
6091                let member_inline_size =
6092                    <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6093                if inlined != (member_inline_size <= 4) {
6094                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6095                }
6096                let inner_offset;
6097                let mut inner_depth = depth.clone();
6098                if inlined {
6099                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6100                    inner_offset = next_offset;
6101                } else {
6102                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6103                    inner_depth.increment()?;
6104                }
6105                let val_ref = self.srv_weight.get_or_insert_with(|| fidl::new_empty!(u16, D));
6106                fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
6107                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6108                {
6109                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6110                }
6111                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6112                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6113                }
6114            }
6115
6116            next_offset += envelope_size;
6117            _next_ordinal_to_read += 1;
6118            if next_offset >= end_offset {
6119                return Ok(());
6120            }
6121
6122            // Decode unknown envelopes for gaps in ordinals.
6123            while _next_ordinal_to_read < 5 {
6124                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6125                _next_ordinal_to_read += 1;
6126                next_offset += envelope_size;
6127            }
6128
6129            let next_out_of_line = decoder.next_out_of_line();
6130            let handles_before = decoder.remaining_handles();
6131            if let Some((inlined, num_bytes, num_handles)) =
6132                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6133            {
6134                let member_inline_size =
6135                    <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6136                if inlined != (member_inline_size <= 4) {
6137                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6138                }
6139                let inner_offset;
6140                let mut inner_depth = depth.clone();
6141                if inlined {
6142                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6143                    inner_offset = next_offset;
6144                } else {
6145                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6146                    inner_depth.increment()?;
6147                }
6148                let val_ref = self.ptr_ttl.get_or_insert_with(|| fidl::new_empty!(i64, D));
6149                fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
6150                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6151                {
6152                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6153                }
6154                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6155                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6156                }
6157            }
6158
6159            next_offset += envelope_size;
6160            _next_ordinal_to_read += 1;
6161            if next_offset >= end_offset {
6162                return Ok(());
6163            }
6164
6165            // Decode unknown envelopes for gaps in ordinals.
6166            while _next_ordinal_to_read < 6 {
6167                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6168                _next_ordinal_to_read += 1;
6169                next_offset += envelope_size;
6170            }
6171
6172            let next_out_of_line = decoder.next_out_of_line();
6173            let handles_before = decoder.remaining_handles();
6174            if let Some((inlined, num_bytes, num_handles)) =
6175                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6176            {
6177                let member_inline_size =
6178                    <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6179                if inlined != (member_inline_size <= 4) {
6180                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6181                }
6182                let inner_offset;
6183                let mut inner_depth = depth.clone();
6184                if inlined {
6185                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6186                    inner_offset = next_offset;
6187                } else {
6188                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6189                    inner_depth.increment()?;
6190                }
6191                let val_ref = self.srv_ttl.get_or_insert_with(|| fidl::new_empty!(i64, D));
6192                fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
6193                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6194                {
6195                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6196                }
6197                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6198                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6199                }
6200            }
6201
6202            next_offset += envelope_size;
6203            _next_ordinal_to_read += 1;
6204            if next_offset >= end_offset {
6205                return Ok(());
6206            }
6207
6208            // Decode unknown envelopes for gaps in ordinals.
6209            while _next_ordinal_to_read < 7 {
6210                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6211                _next_ordinal_to_read += 1;
6212                next_offset += envelope_size;
6213            }
6214
6215            let next_out_of_line = decoder.next_out_of_line();
6216            let handles_before = decoder.remaining_handles();
6217            if let Some((inlined, num_bytes, num_handles)) =
6218                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6219            {
6220                let member_inline_size =
6221                    <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6222                if inlined != (member_inline_size <= 4) {
6223                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6224                }
6225                let inner_offset;
6226                let mut inner_depth = depth.clone();
6227                if inlined {
6228                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6229                    inner_offset = next_offset;
6230                } else {
6231                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6232                    inner_depth.increment()?;
6233                }
6234                let val_ref = self.txt_ttl.get_or_insert_with(|| fidl::new_empty!(i64, D));
6235                fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
6236                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6237                {
6238                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6239                }
6240                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6241                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6242                }
6243            }
6244
6245            next_offset += envelope_size;
6246
6247            // Decode the remaining unknown envelopes.
6248            while next_offset < end_offset {
6249                _next_ordinal_to_read += 1;
6250                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6251                next_offset += envelope_size;
6252            }
6253
6254            Ok(())
6255        }
6256    }
6257
6258    impl ServiceInstancePublicationOptions {
6259        #[inline(always)]
6260        fn max_ordinal_present(&self) -> u64 {
6261            if let Some(_) = self.perform_probe {
6262                return 3;
6263            }
6264            if let Some(_) = self.ip_versions {
6265                return 2;
6266            }
6267            if let Some(_) = self.media {
6268                return 1;
6269            }
6270            0
6271        }
6272    }
6273
6274    impl fidl::encoding::ValueTypeMarker for ServiceInstancePublicationOptions {
6275        type Borrowed<'a> = &'a Self;
6276        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6277            value
6278        }
6279    }
6280
6281    unsafe impl fidl::encoding::TypeMarker for ServiceInstancePublicationOptions {
6282        type Owned = Self;
6283
6284        #[inline(always)]
6285        fn inline_align(_context: fidl::encoding::Context) -> usize {
6286            8
6287        }
6288
6289        #[inline(always)]
6290        fn inline_size(_context: fidl::encoding::Context) -> usize {
6291            16
6292        }
6293    }
6294
6295    unsafe impl<D: fidl::encoding::ResourceDialect>
6296        fidl::encoding::Encode<ServiceInstancePublicationOptions, D>
6297        for &ServiceInstancePublicationOptions
6298    {
6299        unsafe fn encode(
6300            self,
6301            encoder: &mut fidl::encoding::Encoder<'_, D>,
6302            offset: usize,
6303            mut depth: fidl::encoding::Depth,
6304        ) -> fidl::Result<()> {
6305            encoder.debug_check_bounds::<ServiceInstancePublicationOptions>(offset);
6306            // Vector header
6307            let max_ordinal: u64 = self.max_ordinal_present();
6308            encoder.write_num(max_ordinal, offset);
6309            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
6310            // Calling encoder.out_of_line_offset(0) is not allowed.
6311            if max_ordinal == 0 {
6312                return Ok(());
6313            }
6314            depth.increment()?;
6315            let envelope_size = 8;
6316            let bytes_len = max_ordinal as usize * envelope_size;
6317            #[allow(unused_variables)]
6318            let offset = encoder.out_of_line_offset(bytes_len);
6319            let mut _prev_end_offset: usize = 0;
6320            if 1 > max_ordinal {
6321                return Ok(());
6322            }
6323
6324            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6325            // are envelope_size bytes.
6326            let cur_offset: usize = (1 - 1) * envelope_size;
6327
6328            // Zero reserved fields.
6329            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6330
6331            // Safety:
6332            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6333            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6334            //   envelope_size bytes, there is always sufficient room.
6335            fidl::encoding::encode_in_envelope_optional::<Media, D>(
6336                self.media.as_ref().map(<Media as fidl::encoding::ValueTypeMarker>::borrow),
6337                encoder,
6338                offset + cur_offset,
6339                depth,
6340            )?;
6341
6342            _prev_end_offset = cur_offset + envelope_size;
6343            if 2 > max_ordinal {
6344                return Ok(());
6345            }
6346
6347            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6348            // are envelope_size bytes.
6349            let cur_offset: usize = (2 - 1) * envelope_size;
6350
6351            // Zero reserved fields.
6352            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6353
6354            // Safety:
6355            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6356            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6357            //   envelope_size bytes, there is always sufficient room.
6358            fidl::encoding::encode_in_envelope_optional::<IpVersions, D>(
6359                self.ip_versions
6360                    .as_ref()
6361                    .map(<IpVersions as fidl::encoding::ValueTypeMarker>::borrow),
6362                encoder,
6363                offset + cur_offset,
6364                depth,
6365            )?;
6366
6367            _prev_end_offset = cur_offset + envelope_size;
6368            if 3 > max_ordinal {
6369                return Ok(());
6370            }
6371
6372            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6373            // are envelope_size bytes.
6374            let cur_offset: usize = (3 - 1) * envelope_size;
6375
6376            // Zero reserved fields.
6377            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6378
6379            // Safety:
6380            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6381            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6382            //   envelope_size bytes, there is always sufficient room.
6383            fidl::encoding::encode_in_envelope_optional::<bool, D>(
6384                self.perform_probe.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
6385                encoder,
6386                offset + cur_offset,
6387                depth,
6388            )?;
6389
6390            _prev_end_offset = cur_offset + envelope_size;
6391
6392            Ok(())
6393        }
6394    }
6395
6396    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
6397        for ServiceInstancePublicationOptions
6398    {
6399        #[inline(always)]
6400        fn new_empty() -> Self {
6401            Self::default()
6402        }
6403
6404        unsafe fn decode(
6405            &mut self,
6406            decoder: &mut fidl::encoding::Decoder<'_, D>,
6407            offset: usize,
6408            mut depth: fidl::encoding::Depth,
6409        ) -> fidl::Result<()> {
6410            decoder.debug_check_bounds::<Self>(offset);
6411            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
6412                None => return Err(fidl::Error::NotNullable),
6413                Some(len) => len,
6414            };
6415            // Calling decoder.out_of_line_offset(0) is not allowed.
6416            if len == 0 {
6417                return Ok(());
6418            };
6419            depth.increment()?;
6420            let envelope_size = 8;
6421            let bytes_len = len * envelope_size;
6422            let offset = decoder.out_of_line_offset(bytes_len)?;
6423            // Decode the envelope for each type.
6424            let mut _next_ordinal_to_read = 0;
6425            let mut next_offset = offset;
6426            let end_offset = offset + bytes_len;
6427            _next_ordinal_to_read += 1;
6428            if next_offset >= end_offset {
6429                return Ok(());
6430            }
6431
6432            // Decode unknown envelopes for gaps in ordinals.
6433            while _next_ordinal_to_read < 1 {
6434                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6435                _next_ordinal_to_read += 1;
6436                next_offset += envelope_size;
6437            }
6438
6439            let next_out_of_line = decoder.next_out_of_line();
6440            let handles_before = decoder.remaining_handles();
6441            if let Some((inlined, num_bytes, num_handles)) =
6442                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6443            {
6444                let member_inline_size =
6445                    <Media as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6446                if inlined != (member_inline_size <= 4) {
6447                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6448                }
6449                let inner_offset;
6450                let mut inner_depth = depth.clone();
6451                if inlined {
6452                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6453                    inner_offset = next_offset;
6454                } else {
6455                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6456                    inner_depth.increment()?;
6457                }
6458                let val_ref = self.media.get_or_insert_with(|| fidl::new_empty!(Media, D));
6459                fidl::decode!(Media, D, val_ref, decoder, inner_offset, inner_depth)?;
6460                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6461                {
6462                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6463                }
6464                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6465                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6466                }
6467            }
6468
6469            next_offset += envelope_size;
6470            _next_ordinal_to_read += 1;
6471            if next_offset >= end_offset {
6472                return Ok(());
6473            }
6474
6475            // Decode unknown envelopes for gaps in ordinals.
6476            while _next_ordinal_to_read < 2 {
6477                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6478                _next_ordinal_to_read += 1;
6479                next_offset += envelope_size;
6480            }
6481
6482            let next_out_of_line = decoder.next_out_of_line();
6483            let handles_before = decoder.remaining_handles();
6484            if let Some((inlined, num_bytes, num_handles)) =
6485                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6486            {
6487                let member_inline_size =
6488                    <IpVersions as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6489                if inlined != (member_inline_size <= 4) {
6490                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6491                }
6492                let inner_offset;
6493                let mut inner_depth = depth.clone();
6494                if inlined {
6495                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6496                    inner_offset = next_offset;
6497                } else {
6498                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6499                    inner_depth.increment()?;
6500                }
6501                let val_ref =
6502                    self.ip_versions.get_or_insert_with(|| fidl::new_empty!(IpVersions, D));
6503                fidl::decode!(IpVersions, D, val_ref, decoder, inner_offset, inner_depth)?;
6504                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6505                {
6506                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6507                }
6508                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6509                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6510                }
6511            }
6512
6513            next_offset += envelope_size;
6514            _next_ordinal_to_read += 1;
6515            if next_offset >= end_offset {
6516                return Ok(());
6517            }
6518
6519            // Decode unknown envelopes for gaps in ordinals.
6520            while _next_ordinal_to_read < 3 {
6521                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6522                _next_ordinal_to_read += 1;
6523                next_offset += envelope_size;
6524            }
6525
6526            let next_out_of_line = decoder.next_out_of_line();
6527            let handles_before = decoder.remaining_handles();
6528            if let Some((inlined, num_bytes, num_handles)) =
6529                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6530            {
6531                let member_inline_size =
6532                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6533                if inlined != (member_inline_size <= 4) {
6534                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6535                }
6536                let inner_offset;
6537                let mut inner_depth = depth.clone();
6538                if inlined {
6539                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6540                    inner_offset = next_offset;
6541                } else {
6542                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6543                    inner_depth.increment()?;
6544                }
6545                let val_ref = self.perform_probe.get_or_insert_with(|| fidl::new_empty!(bool, D));
6546                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
6547                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6548                {
6549                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6550                }
6551                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6552                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6553                }
6554            }
6555
6556            next_offset += envelope_size;
6557
6558            // Decode the remaining unknown envelopes.
6559            while next_offset < end_offset {
6560                _next_ordinal_to_read += 1;
6561                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6562                next_offset += envelope_size;
6563            }
6564
6565            Ok(())
6566        }
6567    }
6568
6569    impl ServiceInstanceResolutionOptions {
6570        #[inline(always)]
6571        fn max_ordinal_present(&self) -> u64 {
6572            if let Some(_) = self.exclude_local_proxies {
6573                return 4;
6574            }
6575            if let Some(_) = self.exclude_local {
6576                return 3;
6577            }
6578            if let Some(_) = self.ip_versions {
6579                return 2;
6580            }
6581            if let Some(_) = self.media {
6582                return 1;
6583            }
6584            0
6585        }
6586    }
6587
6588    impl fidl::encoding::ValueTypeMarker for ServiceInstanceResolutionOptions {
6589        type Borrowed<'a> = &'a Self;
6590        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6591            value
6592        }
6593    }
6594
6595    unsafe impl fidl::encoding::TypeMarker for ServiceInstanceResolutionOptions {
6596        type Owned = Self;
6597
6598        #[inline(always)]
6599        fn inline_align(_context: fidl::encoding::Context) -> usize {
6600            8
6601        }
6602
6603        #[inline(always)]
6604        fn inline_size(_context: fidl::encoding::Context) -> usize {
6605            16
6606        }
6607    }
6608
6609    unsafe impl<D: fidl::encoding::ResourceDialect>
6610        fidl::encoding::Encode<ServiceInstanceResolutionOptions, D>
6611        for &ServiceInstanceResolutionOptions
6612    {
6613        unsafe fn encode(
6614            self,
6615            encoder: &mut fidl::encoding::Encoder<'_, D>,
6616            offset: usize,
6617            mut depth: fidl::encoding::Depth,
6618        ) -> fidl::Result<()> {
6619            encoder.debug_check_bounds::<ServiceInstanceResolutionOptions>(offset);
6620            // Vector header
6621            let max_ordinal: u64 = self.max_ordinal_present();
6622            encoder.write_num(max_ordinal, offset);
6623            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
6624            // Calling encoder.out_of_line_offset(0) is not allowed.
6625            if max_ordinal == 0 {
6626                return Ok(());
6627            }
6628            depth.increment()?;
6629            let envelope_size = 8;
6630            let bytes_len = max_ordinal as usize * envelope_size;
6631            #[allow(unused_variables)]
6632            let offset = encoder.out_of_line_offset(bytes_len);
6633            let mut _prev_end_offset: usize = 0;
6634            if 1 > max_ordinal {
6635                return Ok(());
6636            }
6637
6638            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6639            // are envelope_size bytes.
6640            let cur_offset: usize = (1 - 1) * envelope_size;
6641
6642            // Zero reserved fields.
6643            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6644
6645            // Safety:
6646            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6647            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6648            //   envelope_size bytes, there is always sufficient room.
6649            fidl::encoding::encode_in_envelope_optional::<Media, D>(
6650                self.media.as_ref().map(<Media as fidl::encoding::ValueTypeMarker>::borrow),
6651                encoder,
6652                offset + cur_offset,
6653                depth,
6654            )?;
6655
6656            _prev_end_offset = cur_offset + envelope_size;
6657            if 2 > max_ordinal {
6658                return Ok(());
6659            }
6660
6661            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6662            // are envelope_size bytes.
6663            let cur_offset: usize = (2 - 1) * envelope_size;
6664
6665            // Zero reserved fields.
6666            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6667
6668            // Safety:
6669            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6670            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6671            //   envelope_size bytes, there is always sufficient room.
6672            fidl::encoding::encode_in_envelope_optional::<IpVersions, D>(
6673                self.ip_versions
6674                    .as_ref()
6675                    .map(<IpVersions as fidl::encoding::ValueTypeMarker>::borrow),
6676                encoder,
6677                offset + cur_offset,
6678                depth,
6679            )?;
6680
6681            _prev_end_offset = cur_offset + envelope_size;
6682            if 3 > max_ordinal {
6683                return Ok(());
6684            }
6685
6686            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6687            // are envelope_size bytes.
6688            let cur_offset: usize = (3 - 1) * envelope_size;
6689
6690            // Zero reserved fields.
6691            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6692
6693            // Safety:
6694            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6695            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6696            //   envelope_size bytes, there is always sufficient room.
6697            fidl::encoding::encode_in_envelope_optional::<bool, D>(
6698                self.exclude_local.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
6699                encoder,
6700                offset + cur_offset,
6701                depth,
6702            )?;
6703
6704            _prev_end_offset = cur_offset + envelope_size;
6705            if 4 > max_ordinal {
6706                return Ok(());
6707            }
6708
6709            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6710            // are envelope_size bytes.
6711            let cur_offset: usize = (4 - 1) * envelope_size;
6712
6713            // Zero reserved fields.
6714            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6715
6716            // Safety:
6717            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6718            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6719            //   envelope_size bytes, there is always sufficient room.
6720            fidl::encoding::encode_in_envelope_optional::<bool, D>(
6721                self.exclude_local_proxies
6722                    .as_ref()
6723                    .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
6724                encoder,
6725                offset + cur_offset,
6726                depth,
6727            )?;
6728
6729            _prev_end_offset = cur_offset + envelope_size;
6730
6731            Ok(())
6732        }
6733    }
6734
6735    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
6736        for ServiceInstanceResolutionOptions
6737    {
6738        #[inline(always)]
6739        fn new_empty() -> Self {
6740            Self::default()
6741        }
6742
6743        unsafe fn decode(
6744            &mut self,
6745            decoder: &mut fidl::encoding::Decoder<'_, D>,
6746            offset: usize,
6747            mut depth: fidl::encoding::Depth,
6748        ) -> fidl::Result<()> {
6749            decoder.debug_check_bounds::<Self>(offset);
6750            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
6751                None => return Err(fidl::Error::NotNullable),
6752                Some(len) => len,
6753            };
6754            // Calling decoder.out_of_line_offset(0) is not allowed.
6755            if len == 0 {
6756                return Ok(());
6757            };
6758            depth.increment()?;
6759            let envelope_size = 8;
6760            let bytes_len = len * envelope_size;
6761            let offset = decoder.out_of_line_offset(bytes_len)?;
6762            // Decode the envelope for each type.
6763            let mut _next_ordinal_to_read = 0;
6764            let mut next_offset = offset;
6765            let end_offset = offset + bytes_len;
6766            _next_ordinal_to_read += 1;
6767            if next_offset >= end_offset {
6768                return Ok(());
6769            }
6770
6771            // Decode unknown envelopes for gaps in ordinals.
6772            while _next_ordinal_to_read < 1 {
6773                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6774                _next_ordinal_to_read += 1;
6775                next_offset += envelope_size;
6776            }
6777
6778            let next_out_of_line = decoder.next_out_of_line();
6779            let handles_before = decoder.remaining_handles();
6780            if let Some((inlined, num_bytes, num_handles)) =
6781                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6782            {
6783                let member_inline_size =
6784                    <Media as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6785                if inlined != (member_inline_size <= 4) {
6786                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6787                }
6788                let inner_offset;
6789                let mut inner_depth = depth.clone();
6790                if inlined {
6791                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6792                    inner_offset = next_offset;
6793                } else {
6794                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6795                    inner_depth.increment()?;
6796                }
6797                let val_ref = self.media.get_or_insert_with(|| fidl::new_empty!(Media, D));
6798                fidl::decode!(Media, D, val_ref, decoder, inner_offset, inner_depth)?;
6799                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6800                {
6801                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6802                }
6803                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6804                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6805                }
6806            }
6807
6808            next_offset += envelope_size;
6809            _next_ordinal_to_read += 1;
6810            if next_offset >= end_offset {
6811                return Ok(());
6812            }
6813
6814            // Decode unknown envelopes for gaps in ordinals.
6815            while _next_ordinal_to_read < 2 {
6816                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6817                _next_ordinal_to_read += 1;
6818                next_offset += envelope_size;
6819            }
6820
6821            let next_out_of_line = decoder.next_out_of_line();
6822            let handles_before = decoder.remaining_handles();
6823            if let Some((inlined, num_bytes, num_handles)) =
6824                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6825            {
6826                let member_inline_size =
6827                    <IpVersions as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6828                if inlined != (member_inline_size <= 4) {
6829                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6830                }
6831                let inner_offset;
6832                let mut inner_depth = depth.clone();
6833                if inlined {
6834                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6835                    inner_offset = next_offset;
6836                } else {
6837                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6838                    inner_depth.increment()?;
6839                }
6840                let val_ref =
6841                    self.ip_versions.get_or_insert_with(|| fidl::new_empty!(IpVersions, D));
6842                fidl::decode!(IpVersions, D, val_ref, decoder, inner_offset, inner_depth)?;
6843                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6844                {
6845                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6846                }
6847                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6848                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6849                }
6850            }
6851
6852            next_offset += envelope_size;
6853            _next_ordinal_to_read += 1;
6854            if next_offset >= end_offset {
6855                return Ok(());
6856            }
6857
6858            // Decode unknown envelopes for gaps in ordinals.
6859            while _next_ordinal_to_read < 3 {
6860                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6861                _next_ordinal_to_read += 1;
6862                next_offset += envelope_size;
6863            }
6864
6865            let next_out_of_line = decoder.next_out_of_line();
6866            let handles_before = decoder.remaining_handles();
6867            if let Some((inlined, num_bytes, num_handles)) =
6868                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6869            {
6870                let member_inline_size =
6871                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6872                if inlined != (member_inline_size <= 4) {
6873                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6874                }
6875                let inner_offset;
6876                let mut inner_depth = depth.clone();
6877                if inlined {
6878                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6879                    inner_offset = next_offset;
6880                } else {
6881                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6882                    inner_depth.increment()?;
6883                }
6884                let val_ref = self.exclude_local.get_or_insert_with(|| fidl::new_empty!(bool, D));
6885                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
6886                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6887                {
6888                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6889                }
6890                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6891                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6892                }
6893            }
6894
6895            next_offset += envelope_size;
6896            _next_ordinal_to_read += 1;
6897            if next_offset >= end_offset {
6898                return Ok(());
6899            }
6900
6901            // Decode unknown envelopes for gaps in ordinals.
6902            while _next_ordinal_to_read < 4 {
6903                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6904                _next_ordinal_to_read += 1;
6905                next_offset += envelope_size;
6906            }
6907
6908            let next_out_of_line = decoder.next_out_of_line();
6909            let handles_before = decoder.remaining_handles();
6910            if let Some((inlined, num_bytes, num_handles)) =
6911                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6912            {
6913                let member_inline_size =
6914                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6915                if inlined != (member_inline_size <= 4) {
6916                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6917                }
6918                let inner_offset;
6919                let mut inner_depth = depth.clone();
6920                if inlined {
6921                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6922                    inner_offset = next_offset;
6923                } else {
6924                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6925                    inner_depth.increment()?;
6926                }
6927                let val_ref =
6928                    self.exclude_local_proxies.get_or_insert_with(|| fidl::new_empty!(bool, D));
6929                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
6930                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6931                {
6932                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6933                }
6934                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6935                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6936                }
6937            }
6938
6939            next_offset += envelope_size;
6940
6941            // Decode the remaining unknown envelopes.
6942            while next_offset < end_offset {
6943                _next_ordinal_to_read += 1;
6944                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6945                next_offset += envelope_size;
6946            }
6947
6948            Ok(())
6949        }
6950    }
6951
6952    impl ServiceSubscriptionOptions {
6953        #[inline(always)]
6954        fn max_ordinal_present(&self) -> u64 {
6955            if let Some(_) = self.exclude_local_proxies {
6956                return 4;
6957            }
6958            if let Some(_) = self.exclude_local {
6959                return 3;
6960            }
6961            if let Some(_) = self.ip_versions {
6962                return 2;
6963            }
6964            if let Some(_) = self.media {
6965                return 1;
6966            }
6967            0
6968        }
6969    }
6970
6971    impl fidl::encoding::ValueTypeMarker for ServiceSubscriptionOptions {
6972        type Borrowed<'a> = &'a Self;
6973        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6974            value
6975        }
6976    }
6977
6978    unsafe impl fidl::encoding::TypeMarker for ServiceSubscriptionOptions {
6979        type Owned = Self;
6980
6981        #[inline(always)]
6982        fn inline_align(_context: fidl::encoding::Context) -> usize {
6983            8
6984        }
6985
6986        #[inline(always)]
6987        fn inline_size(_context: fidl::encoding::Context) -> usize {
6988            16
6989        }
6990    }
6991
6992    unsafe impl<D: fidl::encoding::ResourceDialect>
6993        fidl::encoding::Encode<ServiceSubscriptionOptions, D> for &ServiceSubscriptionOptions
6994    {
6995        unsafe fn encode(
6996            self,
6997            encoder: &mut fidl::encoding::Encoder<'_, D>,
6998            offset: usize,
6999            mut depth: fidl::encoding::Depth,
7000        ) -> fidl::Result<()> {
7001            encoder.debug_check_bounds::<ServiceSubscriptionOptions>(offset);
7002            // Vector header
7003            let max_ordinal: u64 = self.max_ordinal_present();
7004            encoder.write_num(max_ordinal, offset);
7005            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
7006            // Calling encoder.out_of_line_offset(0) is not allowed.
7007            if max_ordinal == 0 {
7008                return Ok(());
7009            }
7010            depth.increment()?;
7011            let envelope_size = 8;
7012            let bytes_len = max_ordinal as usize * envelope_size;
7013            #[allow(unused_variables)]
7014            let offset = encoder.out_of_line_offset(bytes_len);
7015            let mut _prev_end_offset: usize = 0;
7016            if 1 > max_ordinal {
7017                return Ok(());
7018            }
7019
7020            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
7021            // are envelope_size bytes.
7022            let cur_offset: usize = (1 - 1) * envelope_size;
7023
7024            // Zero reserved fields.
7025            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7026
7027            // Safety:
7028            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
7029            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
7030            //   envelope_size bytes, there is always sufficient room.
7031            fidl::encoding::encode_in_envelope_optional::<Media, D>(
7032                self.media.as_ref().map(<Media as fidl::encoding::ValueTypeMarker>::borrow),
7033                encoder,
7034                offset + cur_offset,
7035                depth,
7036            )?;
7037
7038            _prev_end_offset = cur_offset + envelope_size;
7039            if 2 > max_ordinal {
7040                return Ok(());
7041            }
7042
7043            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
7044            // are envelope_size bytes.
7045            let cur_offset: usize = (2 - 1) * envelope_size;
7046
7047            // Zero reserved fields.
7048            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7049
7050            // Safety:
7051            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
7052            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
7053            //   envelope_size bytes, there is always sufficient room.
7054            fidl::encoding::encode_in_envelope_optional::<IpVersions, D>(
7055                self.ip_versions
7056                    .as_ref()
7057                    .map(<IpVersions as fidl::encoding::ValueTypeMarker>::borrow),
7058                encoder,
7059                offset + cur_offset,
7060                depth,
7061            )?;
7062
7063            _prev_end_offset = cur_offset + envelope_size;
7064            if 3 > max_ordinal {
7065                return Ok(());
7066            }
7067
7068            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
7069            // are envelope_size bytes.
7070            let cur_offset: usize = (3 - 1) * envelope_size;
7071
7072            // Zero reserved fields.
7073            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7074
7075            // Safety:
7076            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
7077            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
7078            //   envelope_size bytes, there is always sufficient room.
7079            fidl::encoding::encode_in_envelope_optional::<bool, D>(
7080                self.exclude_local.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
7081                encoder,
7082                offset + cur_offset,
7083                depth,
7084            )?;
7085
7086            _prev_end_offset = cur_offset + envelope_size;
7087            if 4 > max_ordinal {
7088                return Ok(());
7089            }
7090
7091            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
7092            // are envelope_size bytes.
7093            let cur_offset: usize = (4 - 1) * envelope_size;
7094
7095            // Zero reserved fields.
7096            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7097
7098            // Safety:
7099            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
7100            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
7101            //   envelope_size bytes, there is always sufficient room.
7102            fidl::encoding::encode_in_envelope_optional::<bool, D>(
7103                self.exclude_local_proxies
7104                    .as_ref()
7105                    .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
7106                encoder,
7107                offset + cur_offset,
7108                depth,
7109            )?;
7110
7111            _prev_end_offset = cur_offset + envelope_size;
7112
7113            Ok(())
7114        }
7115    }
7116
7117    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
7118        for ServiceSubscriptionOptions
7119    {
7120        #[inline(always)]
7121        fn new_empty() -> Self {
7122            Self::default()
7123        }
7124
7125        unsafe fn decode(
7126            &mut self,
7127            decoder: &mut fidl::encoding::Decoder<'_, D>,
7128            offset: usize,
7129            mut depth: fidl::encoding::Depth,
7130        ) -> fidl::Result<()> {
7131            decoder.debug_check_bounds::<Self>(offset);
7132            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
7133                None => return Err(fidl::Error::NotNullable),
7134                Some(len) => len,
7135            };
7136            // Calling decoder.out_of_line_offset(0) is not allowed.
7137            if len == 0 {
7138                return Ok(());
7139            };
7140            depth.increment()?;
7141            let envelope_size = 8;
7142            let bytes_len = len * envelope_size;
7143            let offset = decoder.out_of_line_offset(bytes_len)?;
7144            // Decode the envelope for each type.
7145            let mut _next_ordinal_to_read = 0;
7146            let mut next_offset = offset;
7147            let end_offset = offset + bytes_len;
7148            _next_ordinal_to_read += 1;
7149            if next_offset >= end_offset {
7150                return Ok(());
7151            }
7152
7153            // Decode unknown envelopes for gaps in ordinals.
7154            while _next_ordinal_to_read < 1 {
7155                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7156                _next_ordinal_to_read += 1;
7157                next_offset += envelope_size;
7158            }
7159
7160            let next_out_of_line = decoder.next_out_of_line();
7161            let handles_before = decoder.remaining_handles();
7162            if let Some((inlined, num_bytes, num_handles)) =
7163                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7164            {
7165                let member_inline_size =
7166                    <Media as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7167                if inlined != (member_inline_size <= 4) {
7168                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7169                }
7170                let inner_offset;
7171                let mut inner_depth = depth.clone();
7172                if inlined {
7173                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7174                    inner_offset = next_offset;
7175                } else {
7176                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7177                    inner_depth.increment()?;
7178                }
7179                let val_ref = self.media.get_or_insert_with(|| fidl::new_empty!(Media, D));
7180                fidl::decode!(Media, D, val_ref, decoder, inner_offset, inner_depth)?;
7181                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7182                {
7183                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7184                }
7185                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7186                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7187                }
7188            }
7189
7190            next_offset += envelope_size;
7191            _next_ordinal_to_read += 1;
7192            if next_offset >= end_offset {
7193                return Ok(());
7194            }
7195
7196            // Decode unknown envelopes for gaps in ordinals.
7197            while _next_ordinal_to_read < 2 {
7198                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7199                _next_ordinal_to_read += 1;
7200                next_offset += envelope_size;
7201            }
7202
7203            let next_out_of_line = decoder.next_out_of_line();
7204            let handles_before = decoder.remaining_handles();
7205            if let Some((inlined, num_bytes, num_handles)) =
7206                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7207            {
7208                let member_inline_size =
7209                    <IpVersions as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7210                if inlined != (member_inline_size <= 4) {
7211                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7212                }
7213                let inner_offset;
7214                let mut inner_depth = depth.clone();
7215                if inlined {
7216                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7217                    inner_offset = next_offset;
7218                } else {
7219                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7220                    inner_depth.increment()?;
7221                }
7222                let val_ref =
7223                    self.ip_versions.get_or_insert_with(|| fidl::new_empty!(IpVersions, D));
7224                fidl::decode!(IpVersions, D, val_ref, decoder, inner_offset, inner_depth)?;
7225                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7226                {
7227                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7228                }
7229                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7230                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7231                }
7232            }
7233
7234            next_offset += envelope_size;
7235            _next_ordinal_to_read += 1;
7236            if next_offset >= end_offset {
7237                return Ok(());
7238            }
7239
7240            // Decode unknown envelopes for gaps in ordinals.
7241            while _next_ordinal_to_read < 3 {
7242                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7243                _next_ordinal_to_read += 1;
7244                next_offset += envelope_size;
7245            }
7246
7247            let next_out_of_line = decoder.next_out_of_line();
7248            let handles_before = decoder.remaining_handles();
7249            if let Some((inlined, num_bytes, num_handles)) =
7250                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7251            {
7252                let member_inline_size =
7253                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7254                if inlined != (member_inline_size <= 4) {
7255                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7256                }
7257                let inner_offset;
7258                let mut inner_depth = depth.clone();
7259                if inlined {
7260                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7261                    inner_offset = next_offset;
7262                } else {
7263                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7264                    inner_depth.increment()?;
7265                }
7266                let val_ref = self.exclude_local.get_or_insert_with(|| fidl::new_empty!(bool, D));
7267                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
7268                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7269                {
7270                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7271                }
7272                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7273                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7274                }
7275            }
7276
7277            next_offset += envelope_size;
7278            _next_ordinal_to_read += 1;
7279            if next_offset >= end_offset {
7280                return Ok(());
7281            }
7282
7283            // Decode unknown envelopes for gaps in ordinals.
7284            while _next_ordinal_to_read < 4 {
7285                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7286                _next_ordinal_to_read += 1;
7287                next_offset += envelope_size;
7288            }
7289
7290            let next_out_of_line = decoder.next_out_of_line();
7291            let handles_before = decoder.remaining_handles();
7292            if let Some((inlined, num_bytes, num_handles)) =
7293                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7294            {
7295                let member_inline_size =
7296                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7297                if inlined != (member_inline_size <= 4) {
7298                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7299                }
7300                let inner_offset;
7301                let mut inner_depth = depth.clone();
7302                if inlined {
7303                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7304                    inner_offset = next_offset;
7305                } else {
7306                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7307                    inner_depth.increment()?;
7308                }
7309                let val_ref =
7310                    self.exclude_local_proxies.get_or_insert_with(|| fidl::new_empty!(bool, D));
7311                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
7312                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7313                {
7314                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7315                }
7316                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7317                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7318                }
7319            }
7320
7321            next_offset += envelope_size;
7322
7323            // Decode the remaining unknown envelopes.
7324            while next_offset < end_offset {
7325                _next_ordinal_to_read += 1;
7326                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7327                next_offset += envelope_size;
7328            }
7329
7330            Ok(())
7331        }
7332    }
7333}