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 and which
19/// contains no '.'s. Instance names are UTF-8-encoded.
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(&self.address),
1402                    <u64 as fidl::encoding::ValueTypeMarker>::borrow(&self.interface),
1403                    <i64 as fidl::encoding::ValueTypeMarker>::borrow(&self.ttl),
1404                ),
1405                encoder, offset, _depth
1406            )
1407        }
1408    }
1409    unsafe impl<
1410        D: fidl::encoding::ResourceDialect,
1411        T0: fidl::encoding::Encode<fidl_fuchsia_net__common::IpAddress, D>,
1412        T1: fidl::encoding::Encode<u64, D>,
1413        T2: fidl::encoding::Encode<i64, D>,
1414    > fidl::encoding::Encode<HostAddress, D> for (T0, T1, T2)
1415    {
1416        #[inline]
1417        unsafe fn encode(
1418            self,
1419            encoder: &mut fidl::encoding::Encoder<'_, D>,
1420            offset: usize,
1421            depth: fidl::encoding::Depth,
1422        ) -> fidl::Result<()> {
1423            encoder.debug_check_bounds::<HostAddress>(offset);
1424            // Zero out padding regions. There's no need to apply masks
1425            // because the unmasked parts will be overwritten by fields.
1426            // Write the fields.
1427            self.0.encode(encoder, offset + 0, depth)?;
1428            self.1.encode(encoder, offset + 16, depth)?;
1429            self.2.encode(encoder, offset + 24, depth)?;
1430            Ok(())
1431        }
1432    }
1433
1434    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for HostAddress {
1435        #[inline(always)]
1436        fn new_empty() -> Self {
1437            Self {
1438                address: fidl::new_empty!(fidl_fuchsia_net__common::IpAddress, D),
1439                interface: fidl::new_empty!(u64, D),
1440                ttl: fidl::new_empty!(i64, D),
1441            }
1442        }
1443
1444        #[inline]
1445        unsafe fn decode(
1446            &mut self,
1447            decoder: &mut fidl::encoding::Decoder<'_, D>,
1448            offset: usize,
1449            _depth: fidl::encoding::Depth,
1450        ) -> fidl::Result<()> {
1451            decoder.debug_check_bounds::<Self>(offset);
1452            // Verify that padding bytes are zero.
1453            fidl::decode!(
1454                fidl_fuchsia_net__common::IpAddress,
1455                D,
1456                &mut self.address,
1457                decoder,
1458                offset + 0,
1459                _depth
1460            )?;
1461            fidl::decode!(u64, D, &mut self.interface, decoder, offset + 16, _depth)?;
1462            fidl::decode!(i64, D, &mut self.ttl, decoder, offset + 24, _depth)?;
1463            Ok(())
1464        }
1465    }
1466
1467    impl fidl::encoding::ValueTypeMarker for HostNameResolverResolveHostNameRequest {
1468        type Borrowed<'a> = &'a Self;
1469        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1470            value
1471        }
1472    }
1473
1474    unsafe impl fidl::encoding::TypeMarker for HostNameResolverResolveHostNameRequest {
1475        type Owned = Self;
1476
1477        #[inline(always)]
1478        fn inline_align(_context: fidl::encoding::Context) -> usize {
1479            8
1480        }
1481
1482        #[inline(always)]
1483        fn inline_size(_context: fidl::encoding::Context) -> usize {
1484            40
1485        }
1486    }
1487
1488    unsafe impl<D: fidl::encoding::ResourceDialect>
1489        fidl::encoding::Encode<HostNameResolverResolveHostNameRequest, D>
1490        for &HostNameResolverResolveHostNameRequest
1491    {
1492        #[inline]
1493        unsafe fn encode(
1494            self,
1495            encoder: &mut fidl::encoding::Encoder<'_, D>,
1496            offset: usize,
1497            _depth: fidl::encoding::Depth,
1498        ) -> fidl::Result<()> {
1499            encoder.debug_check_bounds::<HostNameResolverResolveHostNameRequest>(offset);
1500            // Delegate to tuple encoding.
1501            fidl::encoding::Encode::<HostNameResolverResolveHostNameRequest, D>::encode(
1502                (
1503                    <fidl::encoding::BoundedString<255> as fidl::encoding::ValueTypeMarker>::borrow(
1504                        &self.host,
1505                    ),
1506                    <i64 as fidl::encoding::ValueTypeMarker>::borrow(&self.timeout),
1507                    <HostNameResolutionOptions as fidl::encoding::ValueTypeMarker>::borrow(
1508                        &self.options,
1509                    ),
1510                ),
1511                encoder,
1512                offset,
1513                _depth,
1514            )
1515        }
1516    }
1517    unsafe impl<
1518        D: fidl::encoding::ResourceDialect,
1519        T0: fidl::encoding::Encode<fidl::encoding::BoundedString<255>, D>,
1520        T1: fidl::encoding::Encode<i64, D>,
1521        T2: fidl::encoding::Encode<HostNameResolutionOptions, D>,
1522    > fidl::encoding::Encode<HostNameResolverResolveHostNameRequest, D> for (T0, T1, T2)
1523    {
1524        #[inline]
1525        unsafe fn encode(
1526            self,
1527            encoder: &mut fidl::encoding::Encoder<'_, D>,
1528            offset: usize,
1529            depth: fidl::encoding::Depth,
1530        ) -> fidl::Result<()> {
1531            encoder.debug_check_bounds::<HostNameResolverResolveHostNameRequest>(offset);
1532            // Zero out padding regions. There's no need to apply masks
1533            // because the unmasked parts will be overwritten by fields.
1534            // Write the fields.
1535            self.0.encode(encoder, offset + 0, depth)?;
1536            self.1.encode(encoder, offset + 16, depth)?;
1537            self.2.encode(encoder, offset + 24, depth)?;
1538            Ok(())
1539        }
1540    }
1541
1542    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1543        for HostNameResolverResolveHostNameRequest
1544    {
1545        #[inline(always)]
1546        fn new_empty() -> Self {
1547            Self {
1548                host: fidl::new_empty!(fidl::encoding::BoundedString<255>, D),
1549                timeout: fidl::new_empty!(i64, D),
1550                options: fidl::new_empty!(HostNameResolutionOptions, D),
1551            }
1552        }
1553
1554        #[inline]
1555        unsafe fn decode(
1556            &mut self,
1557            decoder: &mut fidl::encoding::Decoder<'_, D>,
1558            offset: usize,
1559            _depth: fidl::encoding::Depth,
1560        ) -> fidl::Result<()> {
1561            decoder.debug_check_bounds::<Self>(offset);
1562            // Verify that padding bytes are zero.
1563            fidl::decode!(
1564                fidl::encoding::BoundedString<255>,
1565                D,
1566                &mut self.host,
1567                decoder,
1568                offset + 0,
1569                _depth
1570            )?;
1571            fidl::decode!(i64, D, &mut self.timeout, decoder, offset + 16, _depth)?;
1572            fidl::decode!(
1573                HostNameResolutionOptions,
1574                D,
1575                &mut self.options,
1576                decoder,
1577                offset + 24,
1578                _depth
1579            )?;
1580            Ok(())
1581        }
1582    }
1583
1584    impl fidl::encoding::ValueTypeMarker for HostNameResolverResolveHostNameResponse {
1585        type Borrowed<'a> = &'a Self;
1586        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1587            value
1588        }
1589    }
1590
1591    unsafe impl fidl::encoding::TypeMarker for HostNameResolverResolveHostNameResponse {
1592        type Owned = Self;
1593
1594        #[inline(always)]
1595        fn inline_align(_context: fidl::encoding::Context) -> usize {
1596            8
1597        }
1598
1599        #[inline(always)]
1600        fn inline_size(_context: fidl::encoding::Context) -> usize {
1601            16
1602        }
1603    }
1604
1605    unsafe impl<D: fidl::encoding::ResourceDialect>
1606        fidl::encoding::Encode<HostNameResolverResolveHostNameResponse, D>
1607        for &HostNameResolverResolveHostNameResponse
1608    {
1609        #[inline]
1610        unsafe fn encode(
1611            self,
1612            encoder: &mut fidl::encoding::Encoder<'_, D>,
1613            offset: usize,
1614            _depth: fidl::encoding::Depth,
1615        ) -> fidl::Result<()> {
1616            encoder.debug_check_bounds::<HostNameResolverResolveHostNameResponse>(offset);
1617            // Delegate to tuple encoding.
1618            fidl::encoding::Encode::<HostNameResolverResolveHostNameResponse, D>::encode(
1619                (
1620                    <fidl::encoding::Vector<HostAddress, 64> as fidl::encoding::ValueTypeMarker>::borrow(&self.addresses),
1621                ),
1622                encoder, offset, _depth
1623            )
1624        }
1625    }
1626    unsafe impl<
1627        D: fidl::encoding::ResourceDialect,
1628        T0: fidl::encoding::Encode<fidl::encoding::Vector<HostAddress, 64>, D>,
1629    > fidl::encoding::Encode<HostNameResolverResolveHostNameResponse, D> for (T0,)
1630    {
1631        #[inline]
1632        unsafe fn encode(
1633            self,
1634            encoder: &mut fidl::encoding::Encoder<'_, D>,
1635            offset: usize,
1636            depth: fidl::encoding::Depth,
1637        ) -> fidl::Result<()> {
1638            encoder.debug_check_bounds::<HostNameResolverResolveHostNameResponse>(offset);
1639            // Zero out padding regions. There's no need to apply masks
1640            // because the unmasked parts will be overwritten by fields.
1641            // Write the fields.
1642            self.0.encode(encoder, offset + 0, depth)?;
1643            Ok(())
1644        }
1645    }
1646
1647    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1648        for HostNameResolverResolveHostNameResponse
1649    {
1650        #[inline(always)]
1651        fn new_empty() -> Self {
1652            Self { addresses: fidl::new_empty!(fidl::encoding::Vector<HostAddress, 64>, D) }
1653        }
1654
1655        #[inline]
1656        unsafe fn decode(
1657            &mut self,
1658            decoder: &mut fidl::encoding::Decoder<'_, D>,
1659            offset: usize,
1660            _depth: fidl::encoding::Depth,
1661        ) -> fidl::Result<()> {
1662            decoder.debug_check_bounds::<Self>(offset);
1663            // Verify that padding bytes are zero.
1664            fidl::decode!(fidl::encoding::Vector<HostAddress, 64>, D, &mut self.addresses, decoder, offset + 0, _depth)?;
1665            Ok(())
1666        }
1667    }
1668
1669    impl fidl::encoding::ValueTypeMarker for HostNameSubscriptionListenerOnAddressesChangedRequest {
1670        type Borrowed<'a> = &'a Self;
1671        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1672            value
1673        }
1674    }
1675
1676    unsafe impl fidl::encoding::TypeMarker for HostNameSubscriptionListenerOnAddressesChangedRequest {
1677        type Owned = Self;
1678
1679        #[inline(always)]
1680        fn inline_align(_context: fidl::encoding::Context) -> usize {
1681            8
1682        }
1683
1684        #[inline(always)]
1685        fn inline_size(_context: fidl::encoding::Context) -> usize {
1686            16
1687        }
1688    }
1689
1690    unsafe impl<D: fidl::encoding::ResourceDialect>
1691        fidl::encoding::Encode<HostNameSubscriptionListenerOnAddressesChangedRequest, D>
1692        for &HostNameSubscriptionListenerOnAddressesChangedRequest
1693    {
1694        #[inline]
1695        unsafe fn encode(
1696            self,
1697            encoder: &mut fidl::encoding::Encoder<'_, D>,
1698            offset: usize,
1699            _depth: fidl::encoding::Depth,
1700        ) -> fidl::Result<()> {
1701            encoder.debug_check_bounds::<HostNameSubscriptionListenerOnAddressesChangedRequest>(
1702                offset,
1703            );
1704            // Delegate to tuple encoding.
1705            fidl::encoding::Encode::<HostNameSubscriptionListenerOnAddressesChangedRequest, D>::encode(
1706                (
1707                    <fidl::encoding::Vector<HostAddress, 64> as fidl::encoding::ValueTypeMarker>::borrow(&self.addresses),
1708                ),
1709                encoder, offset, _depth
1710            )
1711        }
1712    }
1713    unsafe impl<
1714        D: fidl::encoding::ResourceDialect,
1715        T0: fidl::encoding::Encode<fidl::encoding::Vector<HostAddress, 64>, D>,
1716    > fidl::encoding::Encode<HostNameSubscriptionListenerOnAddressesChangedRequest, D> for (T0,)
1717    {
1718        #[inline]
1719        unsafe fn encode(
1720            self,
1721            encoder: &mut fidl::encoding::Encoder<'_, D>,
1722            offset: usize,
1723            depth: fidl::encoding::Depth,
1724        ) -> fidl::Result<()> {
1725            encoder.debug_check_bounds::<HostNameSubscriptionListenerOnAddressesChangedRequest>(
1726                offset,
1727            );
1728            // Zero out padding regions. There's no need to apply masks
1729            // because the unmasked parts will be overwritten by fields.
1730            // Write the fields.
1731            self.0.encode(encoder, offset + 0, depth)?;
1732            Ok(())
1733        }
1734    }
1735
1736    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1737        for HostNameSubscriptionListenerOnAddressesChangedRequest
1738    {
1739        #[inline(always)]
1740        fn new_empty() -> Self {
1741            Self { addresses: fidl::new_empty!(fidl::encoding::Vector<HostAddress, 64>, D) }
1742        }
1743
1744        #[inline]
1745        unsafe fn decode(
1746            &mut self,
1747            decoder: &mut fidl::encoding::Decoder<'_, D>,
1748            offset: usize,
1749            _depth: fidl::encoding::Depth,
1750        ) -> fidl::Result<()> {
1751            decoder.debug_check_bounds::<Self>(offset);
1752            // Verify that padding bytes are zero.
1753            fidl::decode!(fidl::encoding::Vector<HostAddress, 64>, D, &mut self.addresses, decoder, offset + 0, _depth)?;
1754            Ok(())
1755        }
1756    }
1757
1758    impl fidl::encoding::ValueTypeMarker for Publication {
1759        type Borrowed<'a> = &'a Self;
1760        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1761            value
1762        }
1763    }
1764
1765    unsafe impl fidl::encoding::TypeMarker for Publication {
1766        type Owned = Self;
1767
1768        #[inline(always)]
1769        fn inline_align(_context: fidl::encoding::Context) -> usize {
1770            8
1771        }
1772
1773        #[inline(always)]
1774        fn inline_size(_context: fidl::encoding::Context) -> usize {
1775            56
1776        }
1777    }
1778
1779    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Publication, D>
1780        for &Publication
1781    {
1782        #[inline]
1783        unsafe fn encode(
1784            self,
1785            encoder: &mut fidl::encoding::Encoder<'_, D>,
1786            offset: usize,
1787            _depth: fidl::encoding::Depth,
1788        ) -> fidl::Result<()> {
1789            encoder.debug_check_bounds::<Publication>(offset);
1790            // Delegate to tuple encoding.
1791            fidl::encoding::Encode::<Publication, D>::encode(
1792                (
1793                    <u16 as fidl::encoding::ValueTypeMarker>::borrow(&self.port),
1794                    <fidl::encoding::Vector<fidl::encoding::BoundedString<255>, 256> as fidl::encoding::ValueTypeMarker>::borrow(&self.text),
1795                    <u16 as fidl::encoding::ValueTypeMarker>::borrow(&self.srv_priority),
1796                    <u16 as fidl::encoding::ValueTypeMarker>::borrow(&self.srv_weight),
1797                    <i64 as fidl::encoding::ValueTypeMarker>::borrow(&self.ptr_ttl),
1798                    <i64 as fidl::encoding::ValueTypeMarker>::borrow(&self.srv_ttl),
1799                    <i64 as fidl::encoding::ValueTypeMarker>::borrow(&self.txt_ttl),
1800                ),
1801                encoder, offset, _depth
1802            )
1803        }
1804    }
1805    unsafe impl<
1806        D: fidl::encoding::ResourceDialect,
1807        T0: fidl::encoding::Encode<u16, D>,
1808        T1: fidl::encoding::Encode<fidl::encoding::Vector<fidl::encoding::BoundedString<255>, 256>, D>,
1809        T2: fidl::encoding::Encode<u16, D>,
1810        T3: fidl::encoding::Encode<u16, D>,
1811        T4: fidl::encoding::Encode<i64, D>,
1812        T5: fidl::encoding::Encode<i64, D>,
1813        T6: fidl::encoding::Encode<i64, D>,
1814    > fidl::encoding::Encode<Publication, D> for (T0, T1, T2, T3, T4, T5, T6)
1815    {
1816        #[inline]
1817        unsafe fn encode(
1818            self,
1819            encoder: &mut fidl::encoding::Encoder<'_, D>,
1820            offset: usize,
1821            depth: fidl::encoding::Depth,
1822        ) -> fidl::Result<()> {
1823            encoder.debug_check_bounds::<Publication>(offset);
1824            // Zero out padding regions. There's no need to apply masks
1825            // because the unmasked parts will be overwritten by fields.
1826            unsafe {
1827                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(0);
1828                (ptr as *mut u64).write_unaligned(0);
1829            }
1830            unsafe {
1831                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(24);
1832                (ptr as *mut u64).write_unaligned(0);
1833            }
1834            // Write the fields.
1835            self.0.encode(encoder, offset + 0, depth)?;
1836            self.1.encode(encoder, offset + 8, depth)?;
1837            self.2.encode(encoder, offset + 24, depth)?;
1838            self.3.encode(encoder, offset + 26, depth)?;
1839            self.4.encode(encoder, offset + 32, depth)?;
1840            self.5.encode(encoder, offset + 40, depth)?;
1841            self.6.encode(encoder, offset + 48, depth)?;
1842            Ok(())
1843        }
1844    }
1845
1846    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Publication {
1847        #[inline(always)]
1848        fn new_empty() -> Self {
1849            Self {
1850                port: fidl::new_empty!(u16, D),
1851                text: fidl::new_empty!(
1852                    fidl::encoding::Vector<fidl::encoding::BoundedString<255>, 256>,
1853                    D
1854                ),
1855                srv_priority: fidl::new_empty!(u16, D),
1856                srv_weight: fidl::new_empty!(u16, D),
1857                ptr_ttl: fidl::new_empty!(i64, D),
1858                srv_ttl: fidl::new_empty!(i64, D),
1859                txt_ttl: fidl::new_empty!(i64, D),
1860            }
1861        }
1862
1863        #[inline]
1864        unsafe fn decode(
1865            &mut self,
1866            decoder: &mut fidl::encoding::Decoder<'_, D>,
1867            offset: usize,
1868            _depth: fidl::encoding::Depth,
1869        ) -> fidl::Result<()> {
1870            decoder.debug_check_bounds::<Self>(offset);
1871            // Verify that padding bytes are zero.
1872            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(0) };
1873            let padval = unsafe { (ptr as *const u64).read_unaligned() };
1874            let mask = 0xffffffffffff0000u64;
1875            let maskedval = padval & mask;
1876            if maskedval != 0 {
1877                return Err(fidl::Error::NonZeroPadding {
1878                    padding_start: offset + 0 + ((mask as u64).trailing_zeros() / 8) as usize,
1879                });
1880            }
1881            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(24) };
1882            let padval = unsafe { (ptr as *const u64).read_unaligned() };
1883            let mask = 0xffffffff00000000u64;
1884            let maskedval = padval & mask;
1885            if maskedval != 0 {
1886                return Err(fidl::Error::NonZeroPadding {
1887                    padding_start: offset + 24 + ((mask as u64).trailing_zeros() / 8) as usize,
1888                });
1889            }
1890            fidl::decode!(u16, D, &mut self.port, decoder, offset + 0, _depth)?;
1891            fidl::decode!(
1892                fidl::encoding::Vector<fidl::encoding::BoundedString<255>, 256>,
1893                D,
1894                &mut self.text,
1895                decoder,
1896                offset + 8,
1897                _depth
1898            )?;
1899            fidl::decode!(u16, D, &mut self.srv_priority, decoder, offset + 24, _depth)?;
1900            fidl::decode!(u16, D, &mut self.srv_weight, decoder, offset + 26, _depth)?;
1901            fidl::decode!(i64, D, &mut self.ptr_ttl, decoder, offset + 32, _depth)?;
1902            fidl::decode!(i64, D, &mut self.srv_ttl, decoder, offset + 40, _depth)?;
1903            fidl::decode!(i64, D, &mut self.txt_ttl, decoder, offset + 48, _depth)?;
1904            Ok(())
1905        }
1906    }
1907
1908    impl fidl::encoding::ValueTypeMarker for PublicationResponderOnPublicationRequest {
1909        type Borrowed<'a> = &'a Self;
1910        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1911            value
1912        }
1913    }
1914
1915    unsafe impl fidl::encoding::TypeMarker for PublicationResponderOnPublicationRequest {
1916        type Owned = Self;
1917
1918        #[inline(always)]
1919        fn inline_align(_context: fidl::encoding::Context) -> usize {
1920            8
1921        }
1922
1923        #[inline(always)]
1924        fn inline_size(_context: fidl::encoding::Context) -> usize {
1925            40
1926        }
1927    }
1928
1929    unsafe impl<D: fidl::encoding::ResourceDialect>
1930        fidl::encoding::Encode<PublicationResponderOnPublicationRequest, D>
1931        for &PublicationResponderOnPublicationRequest
1932    {
1933        #[inline]
1934        unsafe fn encode(
1935            self,
1936            encoder: &mut fidl::encoding::Encoder<'_, D>,
1937            offset: usize,
1938            _depth: fidl::encoding::Depth,
1939        ) -> fidl::Result<()> {
1940            encoder.debug_check_bounds::<PublicationResponderOnPublicationRequest>(offset);
1941            // Delegate to tuple encoding.
1942            fidl::encoding::Encode::<PublicationResponderOnPublicationRequest, D>::encode(
1943                (
1944                    <PublicationCause as fidl::encoding::ValueTypeMarker>::borrow(&self.publication_cause),
1945                    <fidl::encoding::Optional<fidl::encoding::BoundedString<63>> as fidl::encoding::ValueTypeMarker>::borrow(&self.subtype),
1946                    <fidl::encoding::Vector<fidl_fuchsia_net__common::IpAddress, 64> as fidl::encoding::ValueTypeMarker>::borrow(&self.source_addresses),
1947                ),
1948                encoder, offset, _depth
1949            )
1950        }
1951    }
1952    unsafe impl<
1953        D: fidl::encoding::ResourceDialect,
1954        T0: fidl::encoding::Encode<PublicationCause, D>,
1955        T1: fidl::encoding::Encode<fidl::encoding::Optional<fidl::encoding::BoundedString<63>>, D>,
1956        T2: fidl::encoding::Encode<fidl::encoding::Vector<fidl_fuchsia_net__common::IpAddress, 64>, D>,
1957    > fidl::encoding::Encode<PublicationResponderOnPublicationRequest, D> for (T0, T1, T2)
1958    {
1959        #[inline]
1960        unsafe fn encode(
1961            self,
1962            encoder: &mut fidl::encoding::Encoder<'_, D>,
1963            offset: usize,
1964            depth: fidl::encoding::Depth,
1965        ) -> fidl::Result<()> {
1966            encoder.debug_check_bounds::<PublicationResponderOnPublicationRequest>(offset);
1967            // Zero out padding regions. There's no need to apply masks
1968            // because the unmasked parts will be overwritten by fields.
1969            unsafe {
1970                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(0);
1971                (ptr as *mut u64).write_unaligned(0);
1972            }
1973            // Write the fields.
1974            self.0.encode(encoder, offset + 0, depth)?;
1975            self.1.encode(encoder, offset + 8, depth)?;
1976            self.2.encode(encoder, offset + 24, depth)?;
1977            Ok(())
1978        }
1979    }
1980
1981    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1982        for PublicationResponderOnPublicationRequest
1983    {
1984        #[inline(always)]
1985        fn new_empty() -> Self {
1986            Self {
1987                publication_cause: fidl::new_empty!(PublicationCause, D),
1988                subtype: fidl::new_empty!(
1989                    fidl::encoding::Optional<fidl::encoding::BoundedString<63>>,
1990                    D
1991                ),
1992                source_addresses: fidl::new_empty!(fidl::encoding::Vector<fidl_fuchsia_net__common::IpAddress, 64>, D),
1993            }
1994        }
1995
1996        #[inline]
1997        unsafe fn decode(
1998            &mut self,
1999            decoder: &mut fidl::encoding::Decoder<'_, D>,
2000            offset: usize,
2001            _depth: fidl::encoding::Depth,
2002        ) -> fidl::Result<()> {
2003            decoder.debug_check_bounds::<Self>(offset);
2004            // Verify that padding bytes are zero.
2005            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(0) };
2006            let padval = unsafe { (ptr as *const u64).read_unaligned() };
2007            let mask = 0xffffffff00000000u64;
2008            let maskedval = padval & mask;
2009            if maskedval != 0 {
2010                return Err(fidl::Error::NonZeroPadding {
2011                    padding_start: offset + 0 + ((mask as u64).trailing_zeros() / 8) as usize,
2012                });
2013            }
2014            fidl::decode!(
2015                PublicationCause,
2016                D,
2017                &mut self.publication_cause,
2018                decoder,
2019                offset + 0,
2020                _depth
2021            )?;
2022            fidl::decode!(
2023                fidl::encoding::Optional<fidl::encoding::BoundedString<63>>,
2024                D,
2025                &mut self.subtype,
2026                decoder,
2027                offset + 8,
2028                _depth
2029            )?;
2030            fidl::decode!(fidl::encoding::Vector<fidl_fuchsia_net__common::IpAddress, 64>, D, &mut self.source_addresses, decoder, offset + 24, _depth)?;
2031            Ok(())
2032        }
2033    }
2034
2035    impl fidl::encoding::ValueTypeMarker for PublicationResponderOnPublicationResponse {
2036        type Borrowed<'a> = &'a Self;
2037        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2038            value
2039        }
2040    }
2041
2042    unsafe impl fidl::encoding::TypeMarker for PublicationResponderOnPublicationResponse {
2043        type Owned = Self;
2044
2045        #[inline(always)]
2046        fn inline_align(_context: fidl::encoding::Context) -> usize {
2047            8
2048        }
2049
2050        #[inline(always)]
2051        fn inline_size(_context: fidl::encoding::Context) -> usize {
2052            8
2053        }
2054    }
2055
2056    unsafe impl<D: fidl::encoding::ResourceDialect>
2057        fidl::encoding::Encode<PublicationResponderOnPublicationResponse, D>
2058        for &PublicationResponderOnPublicationResponse
2059    {
2060        #[inline]
2061        unsafe fn encode(
2062            self,
2063            encoder: &mut fidl::encoding::Encoder<'_, D>,
2064            offset: usize,
2065            _depth: fidl::encoding::Depth,
2066        ) -> fidl::Result<()> {
2067            encoder.debug_check_bounds::<PublicationResponderOnPublicationResponse>(offset);
2068            // Delegate to tuple encoding.
2069            fidl::encoding::Encode::<PublicationResponderOnPublicationResponse, D>::encode(
2070                (<fidl::encoding::Boxed<Publication> as fidl::encoding::ValueTypeMarker>::borrow(
2071                    &self.publication,
2072                ),),
2073                encoder,
2074                offset,
2075                _depth,
2076            )
2077        }
2078    }
2079    unsafe impl<
2080        D: fidl::encoding::ResourceDialect,
2081        T0: fidl::encoding::Encode<fidl::encoding::Boxed<Publication>, D>,
2082    > fidl::encoding::Encode<PublicationResponderOnPublicationResponse, D> for (T0,)
2083    {
2084        #[inline]
2085        unsafe fn encode(
2086            self,
2087            encoder: &mut fidl::encoding::Encoder<'_, D>,
2088            offset: usize,
2089            depth: fidl::encoding::Depth,
2090        ) -> fidl::Result<()> {
2091            encoder.debug_check_bounds::<PublicationResponderOnPublicationResponse>(offset);
2092            // Zero out padding regions. There's no need to apply masks
2093            // because the unmasked parts will be overwritten by fields.
2094            // Write the fields.
2095            self.0.encode(encoder, offset + 0, depth)?;
2096            Ok(())
2097        }
2098    }
2099
2100    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2101        for PublicationResponderOnPublicationResponse
2102    {
2103        #[inline(always)]
2104        fn new_empty() -> Self {
2105            Self { publication: fidl::new_empty!(fidl::encoding::Boxed<Publication>, D) }
2106        }
2107
2108        #[inline]
2109        unsafe fn decode(
2110            &mut self,
2111            decoder: &mut fidl::encoding::Decoder<'_, D>,
2112            offset: usize,
2113            _depth: fidl::encoding::Depth,
2114        ) -> fidl::Result<()> {
2115            decoder.debug_check_bounds::<Self>(offset);
2116            // Verify that padding bytes are zero.
2117            fidl::decode!(
2118                fidl::encoding::Boxed<Publication>,
2119                D,
2120                &mut self.publication,
2121                decoder,
2122                offset + 0,
2123                _depth
2124            )?;
2125            Ok(())
2126        }
2127    }
2128
2129    impl fidl::encoding::ValueTypeMarker for PublicationResponderSetSubtypesRequest {
2130        type Borrowed<'a> = &'a Self;
2131        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2132            value
2133        }
2134    }
2135
2136    unsafe impl fidl::encoding::TypeMarker for PublicationResponderSetSubtypesRequest {
2137        type Owned = Self;
2138
2139        #[inline(always)]
2140        fn inline_align(_context: fidl::encoding::Context) -> usize {
2141            8
2142        }
2143
2144        #[inline(always)]
2145        fn inline_size(_context: fidl::encoding::Context) -> usize {
2146            16
2147        }
2148    }
2149
2150    unsafe impl<D: fidl::encoding::ResourceDialect>
2151        fidl::encoding::Encode<PublicationResponderSetSubtypesRequest, D>
2152        for &PublicationResponderSetSubtypesRequest
2153    {
2154        #[inline]
2155        unsafe fn encode(
2156            self,
2157            encoder: &mut fidl::encoding::Encoder<'_, D>,
2158            offset: usize,
2159            _depth: fidl::encoding::Depth,
2160        ) -> fidl::Result<()> {
2161            encoder.debug_check_bounds::<PublicationResponderSetSubtypesRequest>(offset);
2162            // Delegate to tuple encoding.
2163            fidl::encoding::Encode::<PublicationResponderSetSubtypesRequest, D>::encode(
2164                (
2165                    <fidl::encoding::Vector<fidl::encoding::BoundedString<63>, 256> as fidl::encoding::ValueTypeMarker>::borrow(&self.subtypes),
2166                ),
2167                encoder, offset, _depth
2168            )
2169        }
2170    }
2171    unsafe impl<
2172        D: fidl::encoding::ResourceDialect,
2173        T0: fidl::encoding::Encode<fidl::encoding::Vector<fidl::encoding::BoundedString<63>, 256>, D>,
2174    > fidl::encoding::Encode<PublicationResponderSetSubtypesRequest, D> for (T0,)
2175    {
2176        #[inline]
2177        unsafe fn encode(
2178            self,
2179            encoder: &mut fidl::encoding::Encoder<'_, D>,
2180            offset: usize,
2181            depth: fidl::encoding::Depth,
2182        ) -> fidl::Result<()> {
2183            encoder.debug_check_bounds::<PublicationResponderSetSubtypesRequest>(offset);
2184            // Zero out padding regions. There's no need to apply masks
2185            // because the unmasked parts will be overwritten by fields.
2186            // Write the fields.
2187            self.0.encode(encoder, offset + 0, depth)?;
2188            Ok(())
2189        }
2190    }
2191
2192    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2193        for PublicationResponderSetSubtypesRequest
2194    {
2195        #[inline(always)]
2196        fn new_empty() -> Self {
2197            Self {
2198                subtypes: fidl::new_empty!(
2199                    fidl::encoding::Vector<fidl::encoding::BoundedString<63>, 256>,
2200                    D
2201                ),
2202            }
2203        }
2204
2205        #[inline]
2206        unsafe fn decode(
2207            &mut self,
2208            decoder: &mut fidl::encoding::Decoder<'_, D>,
2209            offset: usize,
2210            _depth: fidl::encoding::Depth,
2211        ) -> fidl::Result<()> {
2212            decoder.debug_check_bounds::<Self>(offset);
2213            // Verify that padding bytes are zero.
2214            fidl::decode!(
2215                fidl::encoding::Vector<fidl::encoding::BoundedString<63>, 256>,
2216                D,
2217                &mut self.subtypes,
2218                decoder,
2219                offset + 0,
2220                _depth
2221            )?;
2222            Ok(())
2223        }
2224    }
2225
2226    impl fidl::encoding::ValueTypeMarker for ResolverResolveHostNameRequest {
2227        type Borrowed<'a> = &'a Self;
2228        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2229            value
2230        }
2231    }
2232
2233    unsafe impl fidl::encoding::TypeMarker for ResolverResolveHostNameRequest {
2234        type Owned = Self;
2235
2236        #[inline(always)]
2237        fn inline_align(_context: fidl::encoding::Context) -> usize {
2238            8
2239        }
2240
2241        #[inline(always)]
2242        fn inline_size(_context: fidl::encoding::Context) -> usize {
2243            24
2244        }
2245    }
2246
2247    unsafe impl<D: fidl::encoding::ResourceDialect>
2248        fidl::encoding::Encode<ResolverResolveHostNameRequest, D>
2249        for &ResolverResolveHostNameRequest
2250    {
2251        #[inline]
2252        unsafe fn encode(
2253            self,
2254            encoder: &mut fidl::encoding::Encoder<'_, D>,
2255            offset: usize,
2256            _depth: fidl::encoding::Depth,
2257        ) -> fidl::Result<()> {
2258            encoder.debug_check_bounds::<ResolverResolveHostNameRequest>(offset);
2259            // Delegate to tuple encoding.
2260            fidl::encoding::Encode::<ResolverResolveHostNameRequest, D>::encode(
2261                (
2262                    <fidl::encoding::BoundedString<255> as fidl::encoding::ValueTypeMarker>::borrow(
2263                        &self.host,
2264                    ),
2265                    <i64 as fidl::encoding::ValueTypeMarker>::borrow(&self.timeout),
2266                ),
2267                encoder,
2268                offset,
2269                _depth,
2270            )
2271        }
2272    }
2273    unsafe impl<
2274        D: fidl::encoding::ResourceDialect,
2275        T0: fidl::encoding::Encode<fidl::encoding::BoundedString<255>, D>,
2276        T1: fidl::encoding::Encode<i64, D>,
2277    > fidl::encoding::Encode<ResolverResolveHostNameRequest, D> for (T0, T1)
2278    {
2279        #[inline]
2280        unsafe fn encode(
2281            self,
2282            encoder: &mut fidl::encoding::Encoder<'_, D>,
2283            offset: usize,
2284            depth: fidl::encoding::Depth,
2285        ) -> fidl::Result<()> {
2286            encoder.debug_check_bounds::<ResolverResolveHostNameRequest>(offset);
2287            // Zero out padding regions. There's no need to apply masks
2288            // because the unmasked parts will be overwritten by fields.
2289            // Write the fields.
2290            self.0.encode(encoder, offset + 0, depth)?;
2291            self.1.encode(encoder, offset + 16, depth)?;
2292            Ok(())
2293        }
2294    }
2295
2296    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2297        for ResolverResolveHostNameRequest
2298    {
2299        #[inline(always)]
2300        fn new_empty() -> Self {
2301            Self {
2302                host: fidl::new_empty!(fidl::encoding::BoundedString<255>, D),
2303                timeout: fidl::new_empty!(i64, D),
2304            }
2305        }
2306
2307        #[inline]
2308        unsafe fn decode(
2309            &mut self,
2310            decoder: &mut fidl::encoding::Decoder<'_, D>,
2311            offset: usize,
2312            _depth: fidl::encoding::Depth,
2313        ) -> fidl::Result<()> {
2314            decoder.debug_check_bounds::<Self>(offset);
2315            // Verify that padding bytes are zero.
2316            fidl::decode!(
2317                fidl::encoding::BoundedString<255>,
2318                D,
2319                &mut self.host,
2320                decoder,
2321                offset + 0,
2322                _depth
2323            )?;
2324            fidl::decode!(i64, D, &mut self.timeout, decoder, offset + 16, _depth)?;
2325            Ok(())
2326        }
2327    }
2328
2329    impl fidl::encoding::ValueTypeMarker for ResolverResolveHostNameResponse {
2330        type Borrowed<'a> = &'a Self;
2331        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2332            value
2333        }
2334    }
2335
2336    unsafe impl fidl::encoding::TypeMarker for ResolverResolveHostNameResponse {
2337        type Owned = Self;
2338
2339        #[inline(always)]
2340        fn inline_align(_context: fidl::encoding::Context) -> usize {
2341            8
2342        }
2343
2344        #[inline(always)]
2345        fn inline_size(_context: fidl::encoding::Context) -> usize {
2346            16
2347        }
2348    }
2349
2350    unsafe impl<D: fidl::encoding::ResourceDialect>
2351        fidl::encoding::Encode<ResolverResolveHostNameResponse, D>
2352        for &ResolverResolveHostNameResponse
2353    {
2354        #[inline]
2355        unsafe fn encode(
2356            self,
2357            encoder: &mut fidl::encoding::Encoder<'_, D>,
2358            offset: usize,
2359            _depth: fidl::encoding::Depth,
2360        ) -> fidl::Result<()> {
2361            encoder.debug_check_bounds::<ResolverResolveHostNameResponse>(offset);
2362            // Delegate to tuple encoding.
2363            fidl::encoding::Encode::<ResolverResolveHostNameResponse, D>::encode(
2364                (
2365                    <fidl::encoding::Boxed<fidl_fuchsia_net__common::Ipv4Address> as fidl::encoding::ValueTypeMarker>::borrow(&self.v4_address),
2366                    <fidl::encoding::Boxed<fidl_fuchsia_net__common::Ipv6Address> as fidl::encoding::ValueTypeMarker>::borrow(&self.v6_address),
2367                ),
2368                encoder, offset, _depth
2369            )
2370        }
2371    }
2372    unsafe impl<
2373        D: fidl::encoding::ResourceDialect,
2374        T0: fidl::encoding::Encode<fidl::encoding::Boxed<fidl_fuchsia_net__common::Ipv4Address>, D>,
2375        T1: fidl::encoding::Encode<fidl::encoding::Boxed<fidl_fuchsia_net__common::Ipv6Address>, D>,
2376    > fidl::encoding::Encode<ResolverResolveHostNameResponse, D> for (T0, T1)
2377    {
2378        #[inline]
2379        unsafe fn encode(
2380            self,
2381            encoder: &mut fidl::encoding::Encoder<'_, D>,
2382            offset: usize,
2383            depth: fidl::encoding::Depth,
2384        ) -> fidl::Result<()> {
2385            encoder.debug_check_bounds::<ResolverResolveHostNameResponse>(offset);
2386            // Zero out padding regions. There's no need to apply masks
2387            // because the unmasked parts will be overwritten by fields.
2388            // Write the fields.
2389            self.0.encode(encoder, offset + 0, depth)?;
2390            self.1.encode(encoder, offset + 8, depth)?;
2391            Ok(())
2392        }
2393    }
2394
2395    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2396        for ResolverResolveHostNameResponse
2397    {
2398        #[inline(always)]
2399        fn new_empty() -> Self {
2400            Self {
2401                v4_address: fidl::new_empty!(
2402                    fidl::encoding::Boxed<fidl_fuchsia_net__common::Ipv4Address>,
2403                    D
2404                ),
2405                v6_address: fidl::new_empty!(
2406                    fidl::encoding::Boxed<fidl_fuchsia_net__common::Ipv6Address>,
2407                    D
2408                ),
2409            }
2410        }
2411
2412        #[inline]
2413        unsafe fn decode(
2414            &mut self,
2415            decoder: &mut fidl::encoding::Decoder<'_, D>,
2416            offset: usize,
2417            _depth: fidl::encoding::Depth,
2418        ) -> fidl::Result<()> {
2419            decoder.debug_check_bounds::<Self>(offset);
2420            // Verify that padding bytes are zero.
2421            fidl::decode!(
2422                fidl::encoding::Boxed<fidl_fuchsia_net__common::Ipv4Address>,
2423                D,
2424                &mut self.v4_address,
2425                decoder,
2426                offset + 0,
2427                _depth
2428            )?;
2429            fidl::decode!(
2430                fidl::encoding::Boxed<fidl_fuchsia_net__common::Ipv6Address>,
2431                D,
2432                &mut self.v6_address,
2433                decoder,
2434                offset + 8,
2435                _depth
2436            )?;
2437            Ok(())
2438        }
2439    }
2440
2441    impl fidl::encoding::ValueTypeMarker for ServiceInstancePublicationResponderOnPublicationRequest {
2442        type Borrowed<'a> = &'a Self;
2443        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2444            value
2445        }
2446    }
2447
2448    unsafe impl fidl::encoding::TypeMarker for ServiceInstancePublicationResponderOnPublicationRequest {
2449        type Owned = Self;
2450
2451        #[inline(always)]
2452        fn inline_align(_context: fidl::encoding::Context) -> usize {
2453            8
2454        }
2455
2456        #[inline(always)]
2457        fn inline_size(_context: fidl::encoding::Context) -> usize {
2458            40
2459        }
2460    }
2461
2462    unsafe impl<D: fidl::encoding::ResourceDialect>
2463        fidl::encoding::Encode<ServiceInstancePublicationResponderOnPublicationRequest, D>
2464        for &ServiceInstancePublicationResponderOnPublicationRequest
2465    {
2466        #[inline]
2467        unsafe fn encode(
2468            self,
2469            encoder: &mut fidl::encoding::Encoder<'_, D>,
2470            offset: usize,
2471            _depth: fidl::encoding::Depth,
2472        ) -> fidl::Result<()> {
2473            encoder.debug_check_bounds::<ServiceInstancePublicationResponderOnPublicationRequest>(
2474                offset,
2475            );
2476            // Delegate to tuple encoding.
2477            fidl::encoding::Encode::<ServiceInstancePublicationResponderOnPublicationRequest, D>::encode(
2478                (
2479                    <ServiceInstancePublicationCause as fidl::encoding::ValueTypeMarker>::borrow(&self.publication_cause),
2480                    <fidl::encoding::Optional<fidl::encoding::BoundedString<63>> as fidl::encoding::ValueTypeMarker>::borrow(&self.subtype),
2481                    <fidl::encoding::Vector<fidl_fuchsia_net__common::IpAddress, 64> as fidl::encoding::ValueTypeMarker>::borrow(&self.source_addresses),
2482                ),
2483                encoder, offset, _depth
2484            )
2485        }
2486    }
2487    unsafe impl<
2488        D: fidl::encoding::ResourceDialect,
2489        T0: fidl::encoding::Encode<ServiceInstancePublicationCause, D>,
2490        T1: fidl::encoding::Encode<fidl::encoding::Optional<fidl::encoding::BoundedString<63>>, D>,
2491        T2: fidl::encoding::Encode<fidl::encoding::Vector<fidl_fuchsia_net__common::IpAddress, 64>, D>,
2492    > fidl::encoding::Encode<ServiceInstancePublicationResponderOnPublicationRequest, D>
2493        for (T0, T1, T2)
2494    {
2495        #[inline]
2496        unsafe fn encode(
2497            self,
2498            encoder: &mut fidl::encoding::Encoder<'_, D>,
2499            offset: usize,
2500            depth: fidl::encoding::Depth,
2501        ) -> fidl::Result<()> {
2502            encoder.debug_check_bounds::<ServiceInstancePublicationResponderOnPublicationRequest>(
2503                offset,
2504            );
2505            // Zero out padding regions. There's no need to apply masks
2506            // because the unmasked parts will be overwritten by fields.
2507            unsafe {
2508                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(0);
2509                (ptr as *mut u64).write_unaligned(0);
2510            }
2511            // Write the fields.
2512            self.0.encode(encoder, offset + 0, depth)?;
2513            self.1.encode(encoder, offset + 8, depth)?;
2514            self.2.encode(encoder, offset + 24, depth)?;
2515            Ok(())
2516        }
2517    }
2518
2519    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2520        for ServiceInstancePublicationResponderOnPublicationRequest
2521    {
2522        #[inline(always)]
2523        fn new_empty() -> Self {
2524            Self {
2525                publication_cause: fidl::new_empty!(ServiceInstancePublicationCause, D),
2526                subtype: fidl::new_empty!(
2527                    fidl::encoding::Optional<fidl::encoding::BoundedString<63>>,
2528                    D
2529                ),
2530                source_addresses: fidl::new_empty!(fidl::encoding::Vector<fidl_fuchsia_net__common::IpAddress, 64>, D),
2531            }
2532        }
2533
2534        #[inline]
2535        unsafe fn decode(
2536            &mut self,
2537            decoder: &mut fidl::encoding::Decoder<'_, D>,
2538            offset: usize,
2539            _depth: fidl::encoding::Depth,
2540        ) -> fidl::Result<()> {
2541            decoder.debug_check_bounds::<Self>(offset);
2542            // Verify that padding bytes are zero.
2543            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(0) };
2544            let padval = unsafe { (ptr as *const u64).read_unaligned() };
2545            let mask = 0xffffffff00000000u64;
2546            let maskedval = padval & mask;
2547            if maskedval != 0 {
2548                return Err(fidl::Error::NonZeroPadding {
2549                    padding_start: offset + 0 + ((mask as u64).trailing_zeros() / 8) as usize,
2550                });
2551            }
2552            fidl::decode!(
2553                ServiceInstancePublicationCause,
2554                D,
2555                &mut self.publication_cause,
2556                decoder,
2557                offset + 0,
2558                _depth
2559            )?;
2560            fidl::decode!(
2561                fidl::encoding::Optional<fidl::encoding::BoundedString<63>>,
2562                D,
2563                &mut self.subtype,
2564                decoder,
2565                offset + 8,
2566                _depth
2567            )?;
2568            fidl::decode!(fidl::encoding::Vector<fidl_fuchsia_net__common::IpAddress, 64>, D, &mut self.source_addresses, decoder, offset + 24, _depth)?;
2569            Ok(())
2570        }
2571    }
2572
2573    impl fidl::encoding::ValueTypeMarker for ServiceInstancePublicationResponderSetSubtypesRequest {
2574        type Borrowed<'a> = &'a Self;
2575        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2576            value
2577        }
2578    }
2579
2580    unsafe impl fidl::encoding::TypeMarker for ServiceInstancePublicationResponderSetSubtypesRequest {
2581        type Owned = Self;
2582
2583        #[inline(always)]
2584        fn inline_align(_context: fidl::encoding::Context) -> usize {
2585            8
2586        }
2587
2588        #[inline(always)]
2589        fn inline_size(_context: fidl::encoding::Context) -> usize {
2590            16
2591        }
2592    }
2593
2594    unsafe impl<D: fidl::encoding::ResourceDialect>
2595        fidl::encoding::Encode<ServiceInstancePublicationResponderSetSubtypesRequest, D>
2596        for &ServiceInstancePublicationResponderSetSubtypesRequest
2597    {
2598        #[inline]
2599        unsafe fn encode(
2600            self,
2601            encoder: &mut fidl::encoding::Encoder<'_, D>,
2602            offset: usize,
2603            _depth: fidl::encoding::Depth,
2604        ) -> fidl::Result<()> {
2605            encoder.debug_check_bounds::<ServiceInstancePublicationResponderSetSubtypesRequest>(
2606                offset,
2607            );
2608            // Delegate to tuple encoding.
2609            fidl::encoding::Encode::<ServiceInstancePublicationResponderSetSubtypesRequest, D>::encode(
2610                (
2611                    <fidl::encoding::Vector<fidl::encoding::BoundedString<63>, 256> as fidl::encoding::ValueTypeMarker>::borrow(&self.subtypes),
2612                ),
2613                encoder, offset, _depth
2614            )
2615        }
2616    }
2617    unsafe impl<
2618        D: fidl::encoding::ResourceDialect,
2619        T0: fidl::encoding::Encode<fidl::encoding::Vector<fidl::encoding::BoundedString<63>, 256>, D>,
2620    > fidl::encoding::Encode<ServiceInstancePublicationResponderSetSubtypesRequest, D> for (T0,)
2621    {
2622        #[inline]
2623        unsafe fn encode(
2624            self,
2625            encoder: &mut fidl::encoding::Encoder<'_, D>,
2626            offset: usize,
2627            depth: fidl::encoding::Depth,
2628        ) -> fidl::Result<()> {
2629            encoder.debug_check_bounds::<ServiceInstancePublicationResponderSetSubtypesRequest>(
2630                offset,
2631            );
2632            // Zero out padding regions. There's no need to apply masks
2633            // because the unmasked parts will be overwritten by fields.
2634            // Write the fields.
2635            self.0.encode(encoder, offset + 0, depth)?;
2636            Ok(())
2637        }
2638    }
2639
2640    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2641        for ServiceInstancePublicationResponderSetSubtypesRequest
2642    {
2643        #[inline(always)]
2644        fn new_empty() -> Self {
2645            Self {
2646                subtypes: fidl::new_empty!(
2647                    fidl::encoding::Vector<fidl::encoding::BoundedString<63>, 256>,
2648                    D
2649                ),
2650            }
2651        }
2652
2653        #[inline]
2654        unsafe fn decode(
2655            &mut self,
2656            decoder: &mut fidl::encoding::Decoder<'_, D>,
2657            offset: usize,
2658            _depth: fidl::encoding::Depth,
2659        ) -> fidl::Result<()> {
2660            decoder.debug_check_bounds::<Self>(offset);
2661            // Verify that padding bytes are zero.
2662            fidl::decode!(
2663                fidl::encoding::Vector<fidl::encoding::BoundedString<63>, 256>,
2664                D,
2665                &mut self.subtypes,
2666                decoder,
2667                offset + 0,
2668                _depth
2669            )?;
2670            Ok(())
2671        }
2672    }
2673
2674    impl fidl::encoding::ValueTypeMarker for ServiceInstancePublicationResponderOnPublicationResponse {
2675        type Borrowed<'a> = &'a Self;
2676        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2677            value
2678        }
2679    }
2680
2681    unsafe impl fidl::encoding::TypeMarker
2682        for ServiceInstancePublicationResponderOnPublicationResponse
2683    {
2684        type Owned = Self;
2685
2686        #[inline(always)]
2687        fn inline_align(_context: fidl::encoding::Context) -> usize {
2688            8
2689        }
2690
2691        #[inline(always)]
2692        fn inline_size(_context: fidl::encoding::Context) -> usize {
2693            16
2694        }
2695    }
2696
2697    unsafe impl<D: fidl::encoding::ResourceDialect>
2698        fidl::encoding::Encode<ServiceInstancePublicationResponderOnPublicationResponse, D>
2699        for &ServiceInstancePublicationResponderOnPublicationResponse
2700    {
2701        #[inline]
2702        unsafe fn encode(
2703            self,
2704            encoder: &mut fidl::encoding::Encoder<'_, D>,
2705            offset: usize,
2706            _depth: fidl::encoding::Depth,
2707        ) -> fidl::Result<()> {
2708            encoder.debug_check_bounds::<ServiceInstancePublicationResponderOnPublicationResponse>(
2709                offset,
2710            );
2711            // Delegate to tuple encoding.
2712            fidl::encoding::Encode::<ServiceInstancePublicationResponderOnPublicationResponse, D>::encode(
2713                (
2714                    <ServiceInstancePublication as fidl::encoding::ValueTypeMarker>::borrow(&self.publication),
2715                ),
2716                encoder, offset, _depth
2717            )
2718        }
2719    }
2720    unsafe impl<
2721        D: fidl::encoding::ResourceDialect,
2722        T0: fidl::encoding::Encode<ServiceInstancePublication, D>,
2723    > fidl::encoding::Encode<ServiceInstancePublicationResponderOnPublicationResponse, D> for (T0,)
2724    {
2725        #[inline]
2726        unsafe fn encode(
2727            self,
2728            encoder: &mut fidl::encoding::Encoder<'_, D>,
2729            offset: usize,
2730            depth: fidl::encoding::Depth,
2731        ) -> fidl::Result<()> {
2732            encoder.debug_check_bounds::<ServiceInstancePublicationResponderOnPublicationResponse>(
2733                offset,
2734            );
2735            // Zero out padding regions. There's no need to apply masks
2736            // because the unmasked parts will be overwritten by fields.
2737            // Write the fields.
2738            self.0.encode(encoder, offset + 0, depth)?;
2739            Ok(())
2740        }
2741    }
2742
2743    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2744        for ServiceInstancePublicationResponderOnPublicationResponse
2745    {
2746        #[inline(always)]
2747        fn new_empty() -> Self {
2748            Self { publication: fidl::new_empty!(ServiceInstancePublication, D) }
2749        }
2750
2751        #[inline]
2752        unsafe fn decode(
2753            &mut self,
2754            decoder: &mut fidl::encoding::Decoder<'_, D>,
2755            offset: usize,
2756            _depth: fidl::encoding::Depth,
2757        ) -> fidl::Result<()> {
2758            decoder.debug_check_bounds::<Self>(offset);
2759            // Verify that padding bytes are zero.
2760            fidl::decode!(
2761                ServiceInstancePublication,
2762                D,
2763                &mut self.publication,
2764                decoder,
2765                offset + 0,
2766                _depth
2767            )?;
2768            Ok(())
2769        }
2770    }
2771
2772    impl fidl::encoding::ValueTypeMarker for ServiceInstanceResolverResolveServiceInstanceRequest {
2773        type Borrowed<'a> = &'a Self;
2774        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2775            value
2776        }
2777    }
2778
2779    unsafe impl fidl::encoding::TypeMarker for ServiceInstanceResolverResolveServiceInstanceRequest {
2780        type Owned = Self;
2781
2782        #[inline(always)]
2783        fn inline_align(_context: fidl::encoding::Context) -> usize {
2784            8
2785        }
2786
2787        #[inline(always)]
2788        fn inline_size(_context: fidl::encoding::Context) -> usize {
2789            56
2790        }
2791    }
2792
2793    unsafe impl<D: fidl::encoding::ResourceDialect>
2794        fidl::encoding::Encode<ServiceInstanceResolverResolveServiceInstanceRequest, D>
2795        for &ServiceInstanceResolverResolveServiceInstanceRequest
2796    {
2797        #[inline]
2798        unsafe fn encode(
2799            self,
2800            encoder: &mut fidl::encoding::Encoder<'_, D>,
2801            offset: usize,
2802            _depth: fidl::encoding::Depth,
2803        ) -> fidl::Result<()> {
2804            encoder
2805                .debug_check_bounds::<ServiceInstanceResolverResolveServiceInstanceRequest>(offset);
2806            // Delegate to tuple encoding.
2807            fidl::encoding::Encode::<ServiceInstanceResolverResolveServiceInstanceRequest, D>::encode(
2808                (
2809                    <fidl::encoding::BoundedString<22> as fidl::encoding::ValueTypeMarker>::borrow(&self.service),
2810                    <fidl::encoding::BoundedString<63> as fidl::encoding::ValueTypeMarker>::borrow(&self.instance),
2811                    <i64 as fidl::encoding::ValueTypeMarker>::borrow(&self.timeout),
2812                    <ServiceInstanceResolutionOptions as fidl::encoding::ValueTypeMarker>::borrow(&self.options),
2813                ),
2814                encoder, offset, _depth
2815            )
2816        }
2817    }
2818    unsafe impl<
2819        D: fidl::encoding::ResourceDialect,
2820        T0: fidl::encoding::Encode<fidl::encoding::BoundedString<22>, D>,
2821        T1: fidl::encoding::Encode<fidl::encoding::BoundedString<63>, D>,
2822        T2: fidl::encoding::Encode<i64, D>,
2823        T3: fidl::encoding::Encode<ServiceInstanceResolutionOptions, D>,
2824    > fidl::encoding::Encode<ServiceInstanceResolverResolveServiceInstanceRequest, D>
2825        for (T0, T1, T2, T3)
2826    {
2827        #[inline]
2828        unsafe fn encode(
2829            self,
2830            encoder: &mut fidl::encoding::Encoder<'_, D>,
2831            offset: usize,
2832            depth: fidl::encoding::Depth,
2833        ) -> fidl::Result<()> {
2834            encoder
2835                .debug_check_bounds::<ServiceInstanceResolverResolveServiceInstanceRequest>(offset);
2836            // Zero out padding regions. There's no need to apply masks
2837            // because the unmasked parts will be overwritten by fields.
2838            // Write the fields.
2839            self.0.encode(encoder, offset + 0, depth)?;
2840            self.1.encode(encoder, offset + 16, depth)?;
2841            self.2.encode(encoder, offset + 32, depth)?;
2842            self.3.encode(encoder, offset + 40, depth)?;
2843            Ok(())
2844        }
2845    }
2846
2847    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2848        for ServiceInstanceResolverResolveServiceInstanceRequest
2849    {
2850        #[inline(always)]
2851        fn new_empty() -> Self {
2852            Self {
2853                service: fidl::new_empty!(fidl::encoding::BoundedString<22>, D),
2854                instance: fidl::new_empty!(fidl::encoding::BoundedString<63>, D),
2855                timeout: fidl::new_empty!(i64, D),
2856                options: fidl::new_empty!(ServiceInstanceResolutionOptions, D),
2857            }
2858        }
2859
2860        #[inline]
2861        unsafe fn decode(
2862            &mut self,
2863            decoder: &mut fidl::encoding::Decoder<'_, D>,
2864            offset: usize,
2865            _depth: fidl::encoding::Depth,
2866        ) -> fidl::Result<()> {
2867            decoder.debug_check_bounds::<Self>(offset);
2868            // Verify that padding bytes are zero.
2869            fidl::decode!(
2870                fidl::encoding::BoundedString<22>,
2871                D,
2872                &mut self.service,
2873                decoder,
2874                offset + 0,
2875                _depth
2876            )?;
2877            fidl::decode!(
2878                fidl::encoding::BoundedString<63>,
2879                D,
2880                &mut self.instance,
2881                decoder,
2882                offset + 16,
2883                _depth
2884            )?;
2885            fidl::decode!(i64, D, &mut self.timeout, decoder, offset + 32, _depth)?;
2886            fidl::decode!(
2887                ServiceInstanceResolutionOptions,
2888                D,
2889                &mut self.options,
2890                decoder,
2891                offset + 40,
2892                _depth
2893            )?;
2894            Ok(())
2895        }
2896    }
2897
2898    impl fidl::encoding::ValueTypeMarker for ServiceInstanceResolverResolveServiceInstanceResponse {
2899        type Borrowed<'a> = &'a Self;
2900        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2901            value
2902        }
2903    }
2904
2905    unsafe impl fidl::encoding::TypeMarker for ServiceInstanceResolverResolveServiceInstanceResponse {
2906        type Owned = Self;
2907
2908        #[inline(always)]
2909        fn inline_align(_context: fidl::encoding::Context) -> usize {
2910            8
2911        }
2912
2913        #[inline(always)]
2914        fn inline_size(_context: fidl::encoding::Context) -> usize {
2915            16
2916        }
2917    }
2918
2919    unsafe impl<D: fidl::encoding::ResourceDialect>
2920        fidl::encoding::Encode<ServiceInstanceResolverResolveServiceInstanceResponse, D>
2921        for &ServiceInstanceResolverResolveServiceInstanceResponse
2922    {
2923        #[inline]
2924        unsafe fn encode(
2925            self,
2926            encoder: &mut fidl::encoding::Encoder<'_, D>,
2927            offset: usize,
2928            _depth: fidl::encoding::Depth,
2929        ) -> fidl::Result<()> {
2930            encoder.debug_check_bounds::<ServiceInstanceResolverResolveServiceInstanceResponse>(
2931                offset,
2932            );
2933            // Delegate to tuple encoding.
2934            fidl::encoding::Encode::<ServiceInstanceResolverResolveServiceInstanceResponse, D>::encode(
2935                (
2936                    <ServiceInstance as fidl::encoding::ValueTypeMarker>::borrow(&self.instance),
2937                ),
2938                encoder, offset, _depth
2939            )
2940        }
2941    }
2942    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<ServiceInstance, D>>
2943        fidl::encoding::Encode<ServiceInstanceResolverResolveServiceInstanceResponse, D> for (T0,)
2944    {
2945        #[inline]
2946        unsafe fn encode(
2947            self,
2948            encoder: &mut fidl::encoding::Encoder<'_, D>,
2949            offset: usize,
2950            depth: fidl::encoding::Depth,
2951        ) -> fidl::Result<()> {
2952            encoder.debug_check_bounds::<ServiceInstanceResolverResolveServiceInstanceResponse>(
2953                offset,
2954            );
2955            // Zero out padding regions. There's no need to apply masks
2956            // because the unmasked parts will be overwritten by fields.
2957            // Write the fields.
2958            self.0.encode(encoder, offset + 0, depth)?;
2959            Ok(())
2960        }
2961    }
2962
2963    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2964        for ServiceInstanceResolverResolveServiceInstanceResponse
2965    {
2966        #[inline(always)]
2967        fn new_empty() -> Self {
2968            Self { instance: fidl::new_empty!(ServiceInstance, D) }
2969        }
2970
2971        #[inline]
2972        unsafe fn decode(
2973            &mut self,
2974            decoder: &mut fidl::encoding::Decoder<'_, D>,
2975            offset: usize,
2976            _depth: fidl::encoding::Depth,
2977        ) -> fidl::Result<()> {
2978            decoder.debug_check_bounds::<Self>(offset);
2979            // Verify that padding bytes are zero.
2980            fidl::decode!(ServiceInstance, D, &mut self.instance, decoder, offset + 0, _depth)?;
2981            Ok(())
2982        }
2983    }
2984
2985    impl fidl::encoding::ValueTypeMarker for ServiceSubscriberOnInstanceChangedRequest {
2986        type Borrowed<'a> = &'a Self;
2987        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2988            value
2989        }
2990    }
2991
2992    unsafe impl fidl::encoding::TypeMarker for ServiceSubscriberOnInstanceChangedRequest {
2993        type Owned = Self;
2994
2995        #[inline(always)]
2996        fn inline_align(_context: fidl::encoding::Context) -> usize {
2997            8
2998        }
2999
3000        #[inline(always)]
3001        fn inline_size(_context: fidl::encoding::Context) -> usize {
3002            16
3003        }
3004    }
3005
3006    unsafe impl<D: fidl::encoding::ResourceDialect>
3007        fidl::encoding::Encode<ServiceSubscriberOnInstanceChangedRequest, D>
3008        for &ServiceSubscriberOnInstanceChangedRequest
3009    {
3010        #[inline]
3011        unsafe fn encode(
3012            self,
3013            encoder: &mut fidl::encoding::Encoder<'_, D>,
3014            offset: usize,
3015            _depth: fidl::encoding::Depth,
3016        ) -> fidl::Result<()> {
3017            encoder.debug_check_bounds::<ServiceSubscriberOnInstanceChangedRequest>(offset);
3018            // Delegate to tuple encoding.
3019            fidl::encoding::Encode::<ServiceSubscriberOnInstanceChangedRequest, D>::encode(
3020                (<ServiceInstance as fidl::encoding::ValueTypeMarker>::borrow(&self.instance),),
3021                encoder,
3022                offset,
3023                _depth,
3024            )
3025        }
3026    }
3027    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<ServiceInstance, D>>
3028        fidl::encoding::Encode<ServiceSubscriberOnInstanceChangedRequest, D> for (T0,)
3029    {
3030        #[inline]
3031        unsafe fn encode(
3032            self,
3033            encoder: &mut fidl::encoding::Encoder<'_, D>,
3034            offset: usize,
3035            depth: fidl::encoding::Depth,
3036        ) -> fidl::Result<()> {
3037            encoder.debug_check_bounds::<ServiceSubscriberOnInstanceChangedRequest>(offset);
3038            // Zero out padding regions. There's no need to apply masks
3039            // because the unmasked parts will be overwritten by fields.
3040            // Write the fields.
3041            self.0.encode(encoder, offset + 0, depth)?;
3042            Ok(())
3043        }
3044    }
3045
3046    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
3047        for ServiceSubscriberOnInstanceChangedRequest
3048    {
3049        #[inline(always)]
3050        fn new_empty() -> Self {
3051            Self { instance: fidl::new_empty!(ServiceInstance, D) }
3052        }
3053
3054        #[inline]
3055        unsafe fn decode(
3056            &mut self,
3057            decoder: &mut fidl::encoding::Decoder<'_, D>,
3058            offset: usize,
3059            _depth: fidl::encoding::Depth,
3060        ) -> fidl::Result<()> {
3061            decoder.debug_check_bounds::<Self>(offset);
3062            // Verify that padding bytes are zero.
3063            fidl::decode!(ServiceInstance, D, &mut self.instance, decoder, offset + 0, _depth)?;
3064            Ok(())
3065        }
3066    }
3067
3068    impl fidl::encoding::ValueTypeMarker for ServiceSubscriberOnInstanceDiscoveredRequest {
3069        type Borrowed<'a> = &'a Self;
3070        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3071            value
3072        }
3073    }
3074
3075    unsafe impl fidl::encoding::TypeMarker for ServiceSubscriberOnInstanceDiscoveredRequest {
3076        type Owned = Self;
3077
3078        #[inline(always)]
3079        fn inline_align(_context: fidl::encoding::Context) -> usize {
3080            8
3081        }
3082
3083        #[inline(always)]
3084        fn inline_size(_context: fidl::encoding::Context) -> usize {
3085            16
3086        }
3087    }
3088
3089    unsafe impl<D: fidl::encoding::ResourceDialect>
3090        fidl::encoding::Encode<ServiceSubscriberOnInstanceDiscoveredRequest, D>
3091        for &ServiceSubscriberOnInstanceDiscoveredRequest
3092    {
3093        #[inline]
3094        unsafe fn encode(
3095            self,
3096            encoder: &mut fidl::encoding::Encoder<'_, D>,
3097            offset: usize,
3098            _depth: fidl::encoding::Depth,
3099        ) -> fidl::Result<()> {
3100            encoder.debug_check_bounds::<ServiceSubscriberOnInstanceDiscoveredRequest>(offset);
3101            // Delegate to tuple encoding.
3102            fidl::encoding::Encode::<ServiceSubscriberOnInstanceDiscoveredRequest, D>::encode(
3103                (<ServiceInstance as fidl::encoding::ValueTypeMarker>::borrow(&self.instance),),
3104                encoder,
3105                offset,
3106                _depth,
3107            )
3108        }
3109    }
3110    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<ServiceInstance, D>>
3111        fidl::encoding::Encode<ServiceSubscriberOnInstanceDiscoveredRequest, D> for (T0,)
3112    {
3113        #[inline]
3114        unsafe fn encode(
3115            self,
3116            encoder: &mut fidl::encoding::Encoder<'_, D>,
3117            offset: usize,
3118            depth: fidl::encoding::Depth,
3119        ) -> fidl::Result<()> {
3120            encoder.debug_check_bounds::<ServiceSubscriberOnInstanceDiscoveredRequest>(offset);
3121            // Zero out padding regions. There's no need to apply masks
3122            // because the unmasked parts will be overwritten by fields.
3123            // Write the fields.
3124            self.0.encode(encoder, offset + 0, depth)?;
3125            Ok(())
3126        }
3127    }
3128
3129    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
3130        for ServiceSubscriberOnInstanceDiscoveredRequest
3131    {
3132        #[inline(always)]
3133        fn new_empty() -> Self {
3134            Self { instance: fidl::new_empty!(ServiceInstance, D) }
3135        }
3136
3137        #[inline]
3138        unsafe fn decode(
3139            &mut self,
3140            decoder: &mut fidl::encoding::Decoder<'_, D>,
3141            offset: usize,
3142            _depth: fidl::encoding::Depth,
3143        ) -> fidl::Result<()> {
3144            decoder.debug_check_bounds::<Self>(offset);
3145            // Verify that padding bytes are zero.
3146            fidl::decode!(ServiceInstance, D, &mut self.instance, decoder, offset + 0, _depth)?;
3147            Ok(())
3148        }
3149    }
3150
3151    impl fidl::encoding::ValueTypeMarker for ServiceSubscriberOnInstanceLostRequest {
3152        type Borrowed<'a> = &'a Self;
3153        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3154            value
3155        }
3156    }
3157
3158    unsafe impl fidl::encoding::TypeMarker for ServiceSubscriberOnInstanceLostRequest {
3159        type Owned = Self;
3160
3161        #[inline(always)]
3162        fn inline_align(_context: fidl::encoding::Context) -> usize {
3163            8
3164        }
3165
3166        #[inline(always)]
3167        fn inline_size(_context: fidl::encoding::Context) -> usize {
3168            32
3169        }
3170    }
3171
3172    unsafe impl<D: fidl::encoding::ResourceDialect>
3173        fidl::encoding::Encode<ServiceSubscriberOnInstanceLostRequest, D>
3174        for &ServiceSubscriberOnInstanceLostRequest
3175    {
3176        #[inline]
3177        unsafe fn encode(
3178            self,
3179            encoder: &mut fidl::encoding::Encoder<'_, D>,
3180            offset: usize,
3181            _depth: fidl::encoding::Depth,
3182        ) -> fidl::Result<()> {
3183            encoder.debug_check_bounds::<ServiceSubscriberOnInstanceLostRequest>(offset);
3184            // Delegate to tuple encoding.
3185            fidl::encoding::Encode::<ServiceSubscriberOnInstanceLostRequest, D>::encode(
3186                (
3187                    <fidl::encoding::BoundedString<22> as fidl::encoding::ValueTypeMarker>::borrow(
3188                        &self.service,
3189                    ),
3190                    <fidl::encoding::BoundedString<63> as fidl::encoding::ValueTypeMarker>::borrow(
3191                        &self.instance,
3192                    ),
3193                ),
3194                encoder,
3195                offset,
3196                _depth,
3197            )
3198        }
3199    }
3200    unsafe impl<
3201        D: fidl::encoding::ResourceDialect,
3202        T0: fidl::encoding::Encode<fidl::encoding::BoundedString<22>, D>,
3203        T1: fidl::encoding::Encode<fidl::encoding::BoundedString<63>, D>,
3204    > fidl::encoding::Encode<ServiceSubscriberOnInstanceLostRequest, D> for (T0, T1)
3205    {
3206        #[inline]
3207        unsafe fn encode(
3208            self,
3209            encoder: &mut fidl::encoding::Encoder<'_, D>,
3210            offset: usize,
3211            depth: fidl::encoding::Depth,
3212        ) -> fidl::Result<()> {
3213            encoder.debug_check_bounds::<ServiceSubscriberOnInstanceLostRequest>(offset);
3214            // Zero out padding regions. There's no need to apply masks
3215            // because the unmasked parts will be overwritten by fields.
3216            // Write the fields.
3217            self.0.encode(encoder, offset + 0, depth)?;
3218            self.1.encode(encoder, offset + 16, depth)?;
3219            Ok(())
3220        }
3221    }
3222
3223    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
3224        for ServiceSubscriberOnInstanceLostRequest
3225    {
3226        #[inline(always)]
3227        fn new_empty() -> Self {
3228            Self {
3229                service: fidl::new_empty!(fidl::encoding::BoundedString<22>, D),
3230                instance: fidl::new_empty!(fidl::encoding::BoundedString<63>, D),
3231            }
3232        }
3233
3234        #[inline]
3235        unsafe fn decode(
3236            &mut self,
3237            decoder: &mut fidl::encoding::Decoder<'_, D>,
3238            offset: usize,
3239            _depth: fidl::encoding::Depth,
3240        ) -> fidl::Result<()> {
3241            decoder.debug_check_bounds::<Self>(offset);
3242            // Verify that padding bytes are zero.
3243            fidl::decode!(
3244                fidl::encoding::BoundedString<22>,
3245                D,
3246                &mut self.service,
3247                decoder,
3248                offset + 0,
3249                _depth
3250            )?;
3251            fidl::decode!(
3252                fidl::encoding::BoundedString<63>,
3253                D,
3254                &mut self.instance,
3255                decoder,
3256                offset + 16,
3257                _depth
3258            )?;
3259            Ok(())
3260        }
3261    }
3262
3263    impl fidl::encoding::ValueTypeMarker for ServiceSubscriberOnQueryRequest {
3264        type Borrowed<'a> = &'a Self;
3265        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3266            value
3267        }
3268    }
3269
3270    unsafe impl fidl::encoding::TypeMarker for ServiceSubscriberOnQueryRequest {
3271        type Owned = Self;
3272
3273        #[inline(always)]
3274        fn inline_align(_context: fidl::encoding::Context) -> usize {
3275            4
3276        }
3277
3278        #[inline(always)]
3279        fn inline_size(_context: fidl::encoding::Context) -> usize {
3280            4
3281        }
3282    }
3283
3284    unsafe impl<D: fidl::encoding::ResourceDialect>
3285        fidl::encoding::Encode<ServiceSubscriberOnQueryRequest, D>
3286        for &ServiceSubscriberOnQueryRequest
3287    {
3288        #[inline]
3289        unsafe fn encode(
3290            self,
3291            encoder: &mut fidl::encoding::Encoder<'_, D>,
3292            offset: usize,
3293            _depth: fidl::encoding::Depth,
3294        ) -> fidl::Result<()> {
3295            encoder.debug_check_bounds::<ServiceSubscriberOnQueryRequest>(offset);
3296            // Delegate to tuple encoding.
3297            fidl::encoding::Encode::<ServiceSubscriberOnQueryRequest, D>::encode(
3298                (<ResourceType as fidl::encoding::ValueTypeMarker>::borrow(&self.resource_type),),
3299                encoder,
3300                offset,
3301                _depth,
3302            )
3303        }
3304    }
3305    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<ResourceType, D>>
3306        fidl::encoding::Encode<ServiceSubscriberOnQueryRequest, D> for (T0,)
3307    {
3308        #[inline]
3309        unsafe fn encode(
3310            self,
3311            encoder: &mut fidl::encoding::Encoder<'_, D>,
3312            offset: usize,
3313            depth: fidl::encoding::Depth,
3314        ) -> fidl::Result<()> {
3315            encoder.debug_check_bounds::<ServiceSubscriberOnQueryRequest>(offset);
3316            // Zero out padding regions. There's no need to apply masks
3317            // because the unmasked parts will be overwritten by fields.
3318            // Write the fields.
3319            self.0.encode(encoder, offset + 0, depth)?;
3320            Ok(())
3321        }
3322    }
3323
3324    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
3325        for ServiceSubscriberOnQueryRequest
3326    {
3327        #[inline(always)]
3328        fn new_empty() -> Self {
3329            Self { resource_type: fidl::new_empty!(ResourceType, D) }
3330        }
3331
3332        #[inline]
3333        unsafe fn decode(
3334            &mut self,
3335            decoder: &mut fidl::encoding::Decoder<'_, D>,
3336            offset: usize,
3337            _depth: fidl::encoding::Depth,
3338        ) -> fidl::Result<()> {
3339            decoder.debug_check_bounds::<Self>(offset);
3340            // Verify that padding bytes are zero.
3341            fidl::decode!(ResourceType, D, &mut self.resource_type, decoder, offset + 0, _depth)?;
3342            Ok(())
3343        }
3344    }
3345
3346    impl fidl::encoding::ValueTypeMarker for ServiceSubscriptionListenerOnInstanceChangedRequest {
3347        type Borrowed<'a> = &'a Self;
3348        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3349            value
3350        }
3351    }
3352
3353    unsafe impl fidl::encoding::TypeMarker for ServiceSubscriptionListenerOnInstanceChangedRequest {
3354        type Owned = Self;
3355
3356        #[inline(always)]
3357        fn inline_align(_context: fidl::encoding::Context) -> usize {
3358            8
3359        }
3360
3361        #[inline(always)]
3362        fn inline_size(_context: fidl::encoding::Context) -> usize {
3363            16
3364        }
3365    }
3366
3367    unsafe impl<D: fidl::encoding::ResourceDialect>
3368        fidl::encoding::Encode<ServiceSubscriptionListenerOnInstanceChangedRequest, D>
3369        for &ServiceSubscriptionListenerOnInstanceChangedRequest
3370    {
3371        #[inline]
3372        unsafe fn encode(
3373            self,
3374            encoder: &mut fidl::encoding::Encoder<'_, D>,
3375            offset: usize,
3376            _depth: fidl::encoding::Depth,
3377        ) -> fidl::Result<()> {
3378            encoder
3379                .debug_check_bounds::<ServiceSubscriptionListenerOnInstanceChangedRequest>(offset);
3380            // Delegate to tuple encoding.
3381            fidl::encoding::Encode::<ServiceSubscriptionListenerOnInstanceChangedRequest, D>::encode(
3382                (<ServiceInstance as fidl::encoding::ValueTypeMarker>::borrow(&self.instance),),
3383                encoder,
3384                offset,
3385                _depth,
3386            )
3387        }
3388    }
3389    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<ServiceInstance, D>>
3390        fidl::encoding::Encode<ServiceSubscriptionListenerOnInstanceChangedRequest, D> for (T0,)
3391    {
3392        #[inline]
3393        unsafe fn encode(
3394            self,
3395            encoder: &mut fidl::encoding::Encoder<'_, D>,
3396            offset: usize,
3397            depth: fidl::encoding::Depth,
3398        ) -> fidl::Result<()> {
3399            encoder
3400                .debug_check_bounds::<ServiceSubscriptionListenerOnInstanceChangedRequest>(offset);
3401            // Zero out padding regions. There's no need to apply masks
3402            // because the unmasked parts will be overwritten by fields.
3403            // Write the fields.
3404            self.0.encode(encoder, offset + 0, depth)?;
3405            Ok(())
3406        }
3407    }
3408
3409    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
3410        for ServiceSubscriptionListenerOnInstanceChangedRequest
3411    {
3412        #[inline(always)]
3413        fn new_empty() -> Self {
3414            Self { instance: fidl::new_empty!(ServiceInstance, D) }
3415        }
3416
3417        #[inline]
3418        unsafe fn decode(
3419            &mut self,
3420            decoder: &mut fidl::encoding::Decoder<'_, D>,
3421            offset: usize,
3422            _depth: fidl::encoding::Depth,
3423        ) -> fidl::Result<()> {
3424            decoder.debug_check_bounds::<Self>(offset);
3425            // Verify that padding bytes are zero.
3426            fidl::decode!(ServiceInstance, D, &mut self.instance, decoder, offset + 0, _depth)?;
3427            Ok(())
3428        }
3429    }
3430
3431    impl fidl::encoding::ValueTypeMarker for ServiceSubscriptionListenerOnInstanceDiscoveredRequest {
3432        type Borrowed<'a> = &'a Self;
3433        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3434            value
3435        }
3436    }
3437
3438    unsafe impl fidl::encoding::TypeMarker for ServiceSubscriptionListenerOnInstanceDiscoveredRequest {
3439        type Owned = Self;
3440
3441        #[inline(always)]
3442        fn inline_align(_context: fidl::encoding::Context) -> usize {
3443            8
3444        }
3445
3446        #[inline(always)]
3447        fn inline_size(_context: fidl::encoding::Context) -> usize {
3448            16
3449        }
3450    }
3451
3452    unsafe impl<D: fidl::encoding::ResourceDialect>
3453        fidl::encoding::Encode<ServiceSubscriptionListenerOnInstanceDiscoveredRequest, D>
3454        for &ServiceSubscriptionListenerOnInstanceDiscoveredRequest
3455    {
3456        #[inline]
3457        unsafe fn encode(
3458            self,
3459            encoder: &mut fidl::encoding::Encoder<'_, D>,
3460            offset: usize,
3461            _depth: fidl::encoding::Depth,
3462        ) -> fidl::Result<()> {
3463            encoder.debug_check_bounds::<ServiceSubscriptionListenerOnInstanceDiscoveredRequest>(
3464                offset,
3465            );
3466            // Delegate to tuple encoding.
3467            fidl::encoding::Encode::<ServiceSubscriptionListenerOnInstanceDiscoveredRequest, D>::encode(
3468                (
3469                    <ServiceInstance as fidl::encoding::ValueTypeMarker>::borrow(&self.instance),
3470                ),
3471                encoder, offset, _depth
3472            )
3473        }
3474    }
3475    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<ServiceInstance, D>>
3476        fidl::encoding::Encode<ServiceSubscriptionListenerOnInstanceDiscoveredRequest, D> for (T0,)
3477    {
3478        #[inline]
3479        unsafe fn encode(
3480            self,
3481            encoder: &mut fidl::encoding::Encoder<'_, D>,
3482            offset: usize,
3483            depth: fidl::encoding::Depth,
3484        ) -> fidl::Result<()> {
3485            encoder.debug_check_bounds::<ServiceSubscriptionListenerOnInstanceDiscoveredRequest>(
3486                offset,
3487            );
3488            // Zero out padding regions. There's no need to apply masks
3489            // because the unmasked parts will be overwritten by fields.
3490            // Write the fields.
3491            self.0.encode(encoder, offset + 0, depth)?;
3492            Ok(())
3493        }
3494    }
3495
3496    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
3497        for ServiceSubscriptionListenerOnInstanceDiscoveredRequest
3498    {
3499        #[inline(always)]
3500        fn new_empty() -> Self {
3501            Self { instance: fidl::new_empty!(ServiceInstance, D) }
3502        }
3503
3504        #[inline]
3505        unsafe fn decode(
3506            &mut self,
3507            decoder: &mut fidl::encoding::Decoder<'_, D>,
3508            offset: usize,
3509            _depth: fidl::encoding::Depth,
3510        ) -> fidl::Result<()> {
3511            decoder.debug_check_bounds::<Self>(offset);
3512            // Verify that padding bytes are zero.
3513            fidl::decode!(ServiceInstance, D, &mut self.instance, decoder, offset + 0, _depth)?;
3514            Ok(())
3515        }
3516    }
3517
3518    impl fidl::encoding::ValueTypeMarker for ServiceSubscriptionListenerOnInstanceLostRequest {
3519        type Borrowed<'a> = &'a Self;
3520        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3521            value
3522        }
3523    }
3524
3525    unsafe impl fidl::encoding::TypeMarker for ServiceSubscriptionListenerOnInstanceLostRequest {
3526        type Owned = Self;
3527
3528        #[inline(always)]
3529        fn inline_align(_context: fidl::encoding::Context) -> usize {
3530            8
3531        }
3532
3533        #[inline(always)]
3534        fn inline_size(_context: fidl::encoding::Context) -> usize {
3535            32
3536        }
3537    }
3538
3539    unsafe impl<D: fidl::encoding::ResourceDialect>
3540        fidl::encoding::Encode<ServiceSubscriptionListenerOnInstanceLostRequest, D>
3541        for &ServiceSubscriptionListenerOnInstanceLostRequest
3542    {
3543        #[inline]
3544        unsafe fn encode(
3545            self,
3546            encoder: &mut fidl::encoding::Encoder<'_, D>,
3547            offset: usize,
3548            _depth: fidl::encoding::Depth,
3549        ) -> fidl::Result<()> {
3550            encoder.debug_check_bounds::<ServiceSubscriptionListenerOnInstanceLostRequest>(offset);
3551            // Delegate to tuple encoding.
3552            fidl::encoding::Encode::<ServiceSubscriptionListenerOnInstanceLostRequest, D>::encode(
3553                (
3554                    <fidl::encoding::BoundedString<22> as fidl::encoding::ValueTypeMarker>::borrow(
3555                        &self.service,
3556                    ),
3557                    <fidl::encoding::BoundedString<63> as fidl::encoding::ValueTypeMarker>::borrow(
3558                        &self.instance,
3559                    ),
3560                ),
3561                encoder,
3562                offset,
3563                _depth,
3564            )
3565        }
3566    }
3567    unsafe impl<
3568        D: fidl::encoding::ResourceDialect,
3569        T0: fidl::encoding::Encode<fidl::encoding::BoundedString<22>, D>,
3570        T1: fidl::encoding::Encode<fidl::encoding::BoundedString<63>, D>,
3571    > fidl::encoding::Encode<ServiceSubscriptionListenerOnInstanceLostRequest, D> for (T0, T1)
3572    {
3573        #[inline]
3574        unsafe fn encode(
3575            self,
3576            encoder: &mut fidl::encoding::Encoder<'_, D>,
3577            offset: usize,
3578            depth: fidl::encoding::Depth,
3579        ) -> fidl::Result<()> {
3580            encoder.debug_check_bounds::<ServiceSubscriptionListenerOnInstanceLostRequest>(offset);
3581            // Zero out padding regions. There's no need to apply masks
3582            // because the unmasked parts will be overwritten by fields.
3583            // Write the fields.
3584            self.0.encode(encoder, offset + 0, depth)?;
3585            self.1.encode(encoder, offset + 16, depth)?;
3586            Ok(())
3587        }
3588    }
3589
3590    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
3591        for ServiceSubscriptionListenerOnInstanceLostRequest
3592    {
3593        #[inline(always)]
3594        fn new_empty() -> Self {
3595            Self {
3596                service: fidl::new_empty!(fidl::encoding::BoundedString<22>, D),
3597                instance: fidl::new_empty!(fidl::encoding::BoundedString<63>, D),
3598            }
3599        }
3600
3601        #[inline]
3602        unsafe fn decode(
3603            &mut self,
3604            decoder: &mut fidl::encoding::Decoder<'_, D>,
3605            offset: usize,
3606            _depth: fidl::encoding::Depth,
3607        ) -> fidl::Result<()> {
3608            decoder.debug_check_bounds::<Self>(offset);
3609            // Verify that padding bytes are zero.
3610            fidl::decode!(
3611                fidl::encoding::BoundedString<22>,
3612                D,
3613                &mut self.service,
3614                decoder,
3615                offset + 0,
3616                _depth
3617            )?;
3618            fidl::decode!(
3619                fidl::encoding::BoundedString<63>,
3620                D,
3621                &mut self.instance,
3622                decoder,
3623                offset + 16,
3624                _depth
3625            )?;
3626            Ok(())
3627        }
3628    }
3629
3630    impl fidl::encoding::ValueTypeMarker for ServiceSubscriptionListenerOnQueryRequest {
3631        type Borrowed<'a> = &'a Self;
3632        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3633            value
3634        }
3635    }
3636
3637    unsafe impl fidl::encoding::TypeMarker for ServiceSubscriptionListenerOnQueryRequest {
3638        type Owned = Self;
3639
3640        #[inline(always)]
3641        fn inline_align(_context: fidl::encoding::Context) -> usize {
3642            4
3643        }
3644
3645        #[inline(always)]
3646        fn inline_size(_context: fidl::encoding::Context) -> usize {
3647            4
3648        }
3649    }
3650
3651    unsafe impl<D: fidl::encoding::ResourceDialect>
3652        fidl::encoding::Encode<ServiceSubscriptionListenerOnQueryRequest, D>
3653        for &ServiceSubscriptionListenerOnQueryRequest
3654    {
3655        #[inline]
3656        unsafe fn encode(
3657            self,
3658            encoder: &mut fidl::encoding::Encoder<'_, D>,
3659            offset: usize,
3660            _depth: fidl::encoding::Depth,
3661        ) -> fidl::Result<()> {
3662            encoder.debug_check_bounds::<ServiceSubscriptionListenerOnQueryRequest>(offset);
3663            // Delegate to tuple encoding.
3664            fidl::encoding::Encode::<ServiceSubscriptionListenerOnQueryRequest, D>::encode(
3665                (<ResourceType as fidl::encoding::ValueTypeMarker>::borrow(&self.resource_type),),
3666                encoder,
3667                offset,
3668                _depth,
3669            )
3670        }
3671    }
3672    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<ResourceType, D>>
3673        fidl::encoding::Encode<ServiceSubscriptionListenerOnQueryRequest, D> for (T0,)
3674    {
3675        #[inline]
3676        unsafe fn encode(
3677            self,
3678            encoder: &mut fidl::encoding::Encoder<'_, D>,
3679            offset: usize,
3680            depth: fidl::encoding::Depth,
3681        ) -> fidl::Result<()> {
3682            encoder.debug_check_bounds::<ServiceSubscriptionListenerOnQueryRequest>(offset);
3683            // Zero out padding regions. There's no need to apply masks
3684            // because the unmasked parts will be overwritten by fields.
3685            // Write the fields.
3686            self.0.encode(encoder, offset + 0, depth)?;
3687            Ok(())
3688        }
3689    }
3690
3691    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
3692        for ServiceSubscriptionListenerOnQueryRequest
3693    {
3694        #[inline(always)]
3695        fn new_empty() -> Self {
3696            Self { resource_type: fidl::new_empty!(ResourceType, D) }
3697        }
3698
3699        #[inline]
3700        unsafe fn decode(
3701            &mut self,
3702            decoder: &mut fidl::encoding::Decoder<'_, D>,
3703            offset: usize,
3704            _depth: fidl::encoding::Depth,
3705        ) -> fidl::Result<()> {
3706            decoder.debug_check_bounds::<Self>(offset);
3707            // Verify that padding bytes are zero.
3708            fidl::decode!(ResourceType, D, &mut self.resource_type, decoder, offset + 0, _depth)?;
3709            Ok(())
3710        }
3711    }
3712
3713    impl HostNameResolutionOptions {
3714        #[inline(always)]
3715        fn max_ordinal_present(&self) -> u64 {
3716            if let Some(_) = self.exclude_local_proxies {
3717                return 4;
3718            }
3719            if let Some(_) = self.exclude_local {
3720                return 3;
3721            }
3722            if let Some(_) = self.ip_versions {
3723                return 2;
3724            }
3725            if let Some(_) = self.media {
3726                return 1;
3727            }
3728            0
3729        }
3730    }
3731
3732    impl fidl::encoding::ValueTypeMarker for HostNameResolutionOptions {
3733        type Borrowed<'a> = &'a Self;
3734        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3735            value
3736        }
3737    }
3738
3739    unsafe impl fidl::encoding::TypeMarker for HostNameResolutionOptions {
3740        type Owned = Self;
3741
3742        #[inline(always)]
3743        fn inline_align(_context: fidl::encoding::Context) -> usize {
3744            8
3745        }
3746
3747        #[inline(always)]
3748        fn inline_size(_context: fidl::encoding::Context) -> usize {
3749            16
3750        }
3751    }
3752
3753    unsafe impl<D: fidl::encoding::ResourceDialect>
3754        fidl::encoding::Encode<HostNameResolutionOptions, D> for &HostNameResolutionOptions
3755    {
3756        unsafe fn encode(
3757            self,
3758            encoder: &mut fidl::encoding::Encoder<'_, D>,
3759            offset: usize,
3760            mut depth: fidl::encoding::Depth,
3761        ) -> fidl::Result<()> {
3762            encoder.debug_check_bounds::<HostNameResolutionOptions>(offset);
3763            // Vector header
3764            let max_ordinal: u64 = self.max_ordinal_present();
3765            encoder.write_num(max_ordinal, offset);
3766            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
3767            // Calling encoder.out_of_line_offset(0) is not allowed.
3768            if max_ordinal == 0 {
3769                return Ok(());
3770            }
3771            depth.increment()?;
3772            let envelope_size = 8;
3773            let bytes_len = max_ordinal as usize * envelope_size;
3774            #[allow(unused_variables)]
3775            let offset = encoder.out_of_line_offset(bytes_len);
3776            let mut _prev_end_offset: usize = 0;
3777            if 1 > max_ordinal {
3778                return Ok(());
3779            }
3780
3781            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3782            // are envelope_size bytes.
3783            let cur_offset: usize = (1 - 1) * envelope_size;
3784
3785            // Zero reserved fields.
3786            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3787
3788            // Safety:
3789            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3790            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3791            //   envelope_size bytes, there is always sufficient room.
3792            fidl::encoding::encode_in_envelope_optional::<Media, D>(
3793                self.media.as_ref().map(<Media as fidl::encoding::ValueTypeMarker>::borrow),
3794                encoder,
3795                offset + cur_offset,
3796                depth,
3797            )?;
3798
3799            _prev_end_offset = cur_offset + envelope_size;
3800            if 2 > max_ordinal {
3801                return Ok(());
3802            }
3803
3804            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3805            // are envelope_size bytes.
3806            let cur_offset: usize = (2 - 1) * envelope_size;
3807
3808            // Zero reserved fields.
3809            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3810
3811            // Safety:
3812            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3813            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3814            //   envelope_size bytes, there is always sufficient room.
3815            fidl::encoding::encode_in_envelope_optional::<IpVersions, D>(
3816                self.ip_versions
3817                    .as_ref()
3818                    .map(<IpVersions as fidl::encoding::ValueTypeMarker>::borrow),
3819                encoder,
3820                offset + cur_offset,
3821                depth,
3822            )?;
3823
3824            _prev_end_offset = cur_offset + envelope_size;
3825            if 3 > max_ordinal {
3826                return Ok(());
3827            }
3828
3829            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3830            // are envelope_size bytes.
3831            let cur_offset: usize = (3 - 1) * envelope_size;
3832
3833            // Zero reserved fields.
3834            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3835
3836            // Safety:
3837            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3838            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3839            //   envelope_size bytes, there is always sufficient room.
3840            fidl::encoding::encode_in_envelope_optional::<bool, D>(
3841                self.exclude_local.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
3842                encoder,
3843                offset + cur_offset,
3844                depth,
3845            )?;
3846
3847            _prev_end_offset = cur_offset + envelope_size;
3848            if 4 > max_ordinal {
3849                return Ok(());
3850            }
3851
3852            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3853            // are envelope_size bytes.
3854            let cur_offset: usize = (4 - 1) * envelope_size;
3855
3856            // Zero reserved fields.
3857            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3858
3859            // Safety:
3860            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3861            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3862            //   envelope_size bytes, there is always sufficient room.
3863            fidl::encoding::encode_in_envelope_optional::<bool, D>(
3864                self.exclude_local_proxies
3865                    .as_ref()
3866                    .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
3867                encoder,
3868                offset + cur_offset,
3869                depth,
3870            )?;
3871
3872            _prev_end_offset = cur_offset + envelope_size;
3873
3874            Ok(())
3875        }
3876    }
3877
3878    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
3879        for HostNameResolutionOptions
3880    {
3881        #[inline(always)]
3882        fn new_empty() -> Self {
3883            Self::default()
3884        }
3885
3886        unsafe fn decode(
3887            &mut self,
3888            decoder: &mut fidl::encoding::Decoder<'_, D>,
3889            offset: usize,
3890            mut depth: fidl::encoding::Depth,
3891        ) -> fidl::Result<()> {
3892            decoder.debug_check_bounds::<Self>(offset);
3893            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
3894                None => return Err(fidl::Error::NotNullable),
3895                Some(len) => len,
3896            };
3897            // Calling decoder.out_of_line_offset(0) is not allowed.
3898            if len == 0 {
3899                return Ok(());
3900            };
3901            depth.increment()?;
3902            let envelope_size = 8;
3903            let bytes_len = len * envelope_size;
3904            let offset = decoder.out_of_line_offset(bytes_len)?;
3905            // Decode the envelope for each type.
3906            let mut _next_ordinal_to_read = 0;
3907            let mut next_offset = offset;
3908            let end_offset = offset + bytes_len;
3909            _next_ordinal_to_read += 1;
3910            if next_offset >= end_offset {
3911                return Ok(());
3912            }
3913
3914            // Decode unknown envelopes for gaps in ordinals.
3915            while _next_ordinal_to_read < 1 {
3916                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3917                _next_ordinal_to_read += 1;
3918                next_offset += envelope_size;
3919            }
3920
3921            let next_out_of_line = decoder.next_out_of_line();
3922            let handles_before = decoder.remaining_handles();
3923            if let Some((inlined, num_bytes, num_handles)) =
3924                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3925            {
3926                let member_inline_size =
3927                    <Media as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3928                if inlined != (member_inline_size <= 4) {
3929                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3930                }
3931                let inner_offset;
3932                let mut inner_depth = depth.clone();
3933                if inlined {
3934                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3935                    inner_offset = next_offset;
3936                } else {
3937                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3938                    inner_depth.increment()?;
3939                }
3940                let val_ref = self.media.get_or_insert_with(|| fidl::new_empty!(Media, D));
3941                fidl::decode!(Media, D, val_ref, decoder, inner_offset, inner_depth)?;
3942                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3943                {
3944                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3945                }
3946                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3947                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3948                }
3949            }
3950
3951            next_offset += envelope_size;
3952            _next_ordinal_to_read += 1;
3953            if next_offset >= end_offset {
3954                return Ok(());
3955            }
3956
3957            // Decode unknown envelopes for gaps in ordinals.
3958            while _next_ordinal_to_read < 2 {
3959                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3960                _next_ordinal_to_read += 1;
3961                next_offset += envelope_size;
3962            }
3963
3964            let next_out_of_line = decoder.next_out_of_line();
3965            let handles_before = decoder.remaining_handles();
3966            if let Some((inlined, num_bytes, num_handles)) =
3967                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3968            {
3969                let member_inline_size =
3970                    <IpVersions as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3971                if inlined != (member_inline_size <= 4) {
3972                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3973                }
3974                let inner_offset;
3975                let mut inner_depth = depth.clone();
3976                if inlined {
3977                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3978                    inner_offset = next_offset;
3979                } else {
3980                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3981                    inner_depth.increment()?;
3982                }
3983                let val_ref =
3984                    self.ip_versions.get_or_insert_with(|| fidl::new_empty!(IpVersions, D));
3985                fidl::decode!(IpVersions, D, val_ref, decoder, inner_offset, inner_depth)?;
3986                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3987                {
3988                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3989                }
3990                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3991                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3992                }
3993            }
3994
3995            next_offset += envelope_size;
3996            _next_ordinal_to_read += 1;
3997            if next_offset >= end_offset {
3998                return Ok(());
3999            }
4000
4001            // Decode unknown envelopes for gaps in ordinals.
4002            while _next_ordinal_to_read < 3 {
4003                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4004                _next_ordinal_to_read += 1;
4005                next_offset += envelope_size;
4006            }
4007
4008            let next_out_of_line = decoder.next_out_of_line();
4009            let handles_before = decoder.remaining_handles();
4010            if let Some((inlined, num_bytes, num_handles)) =
4011                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4012            {
4013                let member_inline_size =
4014                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4015                if inlined != (member_inline_size <= 4) {
4016                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4017                }
4018                let inner_offset;
4019                let mut inner_depth = depth.clone();
4020                if inlined {
4021                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4022                    inner_offset = next_offset;
4023                } else {
4024                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4025                    inner_depth.increment()?;
4026                }
4027                let val_ref = self.exclude_local.get_or_insert_with(|| fidl::new_empty!(bool, D));
4028                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
4029                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4030                {
4031                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4032                }
4033                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4034                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4035                }
4036            }
4037
4038            next_offset += envelope_size;
4039            _next_ordinal_to_read += 1;
4040            if next_offset >= end_offset {
4041                return Ok(());
4042            }
4043
4044            // Decode unknown envelopes for gaps in ordinals.
4045            while _next_ordinal_to_read < 4 {
4046                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4047                _next_ordinal_to_read += 1;
4048                next_offset += envelope_size;
4049            }
4050
4051            let next_out_of_line = decoder.next_out_of_line();
4052            let handles_before = decoder.remaining_handles();
4053            if let Some((inlined, num_bytes, num_handles)) =
4054                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4055            {
4056                let member_inline_size =
4057                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4058                if inlined != (member_inline_size <= 4) {
4059                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4060                }
4061                let inner_offset;
4062                let mut inner_depth = depth.clone();
4063                if inlined {
4064                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4065                    inner_offset = next_offset;
4066                } else {
4067                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4068                    inner_depth.increment()?;
4069                }
4070                let val_ref =
4071                    self.exclude_local_proxies.get_or_insert_with(|| fidl::new_empty!(bool, D));
4072                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
4073                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4074                {
4075                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4076                }
4077                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4078                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4079                }
4080            }
4081
4082            next_offset += envelope_size;
4083
4084            // Decode the remaining unknown envelopes.
4085            while next_offset < end_offset {
4086                _next_ordinal_to_read += 1;
4087                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4088                next_offset += envelope_size;
4089            }
4090
4091            Ok(())
4092        }
4093    }
4094
4095    impl HostNameSubscriptionOptions {
4096        #[inline(always)]
4097        fn max_ordinal_present(&self) -> u64 {
4098            if let Some(_) = self.exclude_local_proxies {
4099                return 4;
4100            }
4101            if let Some(_) = self.exclude_local {
4102                return 3;
4103            }
4104            if let Some(_) = self.ip_versions {
4105                return 2;
4106            }
4107            if let Some(_) = self.media {
4108                return 1;
4109            }
4110            0
4111        }
4112    }
4113
4114    impl fidl::encoding::ValueTypeMarker for HostNameSubscriptionOptions {
4115        type Borrowed<'a> = &'a Self;
4116        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4117            value
4118        }
4119    }
4120
4121    unsafe impl fidl::encoding::TypeMarker for HostNameSubscriptionOptions {
4122        type Owned = Self;
4123
4124        #[inline(always)]
4125        fn inline_align(_context: fidl::encoding::Context) -> usize {
4126            8
4127        }
4128
4129        #[inline(always)]
4130        fn inline_size(_context: fidl::encoding::Context) -> usize {
4131            16
4132        }
4133    }
4134
4135    unsafe impl<D: fidl::encoding::ResourceDialect>
4136        fidl::encoding::Encode<HostNameSubscriptionOptions, D> for &HostNameSubscriptionOptions
4137    {
4138        unsafe fn encode(
4139            self,
4140            encoder: &mut fidl::encoding::Encoder<'_, D>,
4141            offset: usize,
4142            mut depth: fidl::encoding::Depth,
4143        ) -> fidl::Result<()> {
4144            encoder.debug_check_bounds::<HostNameSubscriptionOptions>(offset);
4145            // Vector header
4146            let max_ordinal: u64 = self.max_ordinal_present();
4147            encoder.write_num(max_ordinal, offset);
4148            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
4149            // Calling encoder.out_of_line_offset(0) is not allowed.
4150            if max_ordinal == 0 {
4151                return Ok(());
4152            }
4153            depth.increment()?;
4154            let envelope_size = 8;
4155            let bytes_len = max_ordinal as usize * envelope_size;
4156            #[allow(unused_variables)]
4157            let offset = encoder.out_of_line_offset(bytes_len);
4158            let mut _prev_end_offset: usize = 0;
4159            if 1 > max_ordinal {
4160                return Ok(());
4161            }
4162
4163            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4164            // are envelope_size bytes.
4165            let cur_offset: usize = (1 - 1) * envelope_size;
4166
4167            // Zero reserved fields.
4168            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4169
4170            // Safety:
4171            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4172            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4173            //   envelope_size bytes, there is always sufficient room.
4174            fidl::encoding::encode_in_envelope_optional::<Media, D>(
4175                self.media.as_ref().map(<Media as fidl::encoding::ValueTypeMarker>::borrow),
4176                encoder,
4177                offset + cur_offset,
4178                depth,
4179            )?;
4180
4181            _prev_end_offset = cur_offset + envelope_size;
4182            if 2 > max_ordinal {
4183                return Ok(());
4184            }
4185
4186            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4187            // are envelope_size bytes.
4188            let cur_offset: usize = (2 - 1) * envelope_size;
4189
4190            // Zero reserved fields.
4191            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4192
4193            // Safety:
4194            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4195            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4196            //   envelope_size bytes, there is always sufficient room.
4197            fidl::encoding::encode_in_envelope_optional::<IpVersions, D>(
4198                self.ip_versions
4199                    .as_ref()
4200                    .map(<IpVersions as fidl::encoding::ValueTypeMarker>::borrow),
4201                encoder,
4202                offset + cur_offset,
4203                depth,
4204            )?;
4205
4206            _prev_end_offset = cur_offset + envelope_size;
4207            if 3 > max_ordinal {
4208                return Ok(());
4209            }
4210
4211            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4212            // are envelope_size bytes.
4213            let cur_offset: usize = (3 - 1) * envelope_size;
4214
4215            // Zero reserved fields.
4216            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4217
4218            // Safety:
4219            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4220            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4221            //   envelope_size bytes, there is always sufficient room.
4222            fidl::encoding::encode_in_envelope_optional::<bool, D>(
4223                self.exclude_local.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
4224                encoder,
4225                offset + cur_offset,
4226                depth,
4227            )?;
4228
4229            _prev_end_offset = cur_offset + envelope_size;
4230            if 4 > max_ordinal {
4231                return Ok(());
4232            }
4233
4234            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4235            // are envelope_size bytes.
4236            let cur_offset: usize = (4 - 1) * envelope_size;
4237
4238            // Zero reserved fields.
4239            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4240
4241            // Safety:
4242            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4243            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4244            //   envelope_size bytes, there is always sufficient room.
4245            fidl::encoding::encode_in_envelope_optional::<bool, D>(
4246                self.exclude_local_proxies
4247                    .as_ref()
4248                    .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
4249                encoder,
4250                offset + cur_offset,
4251                depth,
4252            )?;
4253
4254            _prev_end_offset = cur_offset + envelope_size;
4255
4256            Ok(())
4257        }
4258    }
4259
4260    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
4261        for HostNameSubscriptionOptions
4262    {
4263        #[inline(always)]
4264        fn new_empty() -> Self {
4265            Self::default()
4266        }
4267
4268        unsafe fn decode(
4269            &mut self,
4270            decoder: &mut fidl::encoding::Decoder<'_, D>,
4271            offset: usize,
4272            mut depth: fidl::encoding::Depth,
4273        ) -> fidl::Result<()> {
4274            decoder.debug_check_bounds::<Self>(offset);
4275            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
4276                None => return Err(fidl::Error::NotNullable),
4277                Some(len) => len,
4278            };
4279            // Calling decoder.out_of_line_offset(0) is not allowed.
4280            if len == 0 {
4281                return Ok(());
4282            };
4283            depth.increment()?;
4284            let envelope_size = 8;
4285            let bytes_len = len * envelope_size;
4286            let offset = decoder.out_of_line_offset(bytes_len)?;
4287            // Decode the envelope for each type.
4288            let mut _next_ordinal_to_read = 0;
4289            let mut next_offset = offset;
4290            let end_offset = offset + bytes_len;
4291            _next_ordinal_to_read += 1;
4292            if next_offset >= end_offset {
4293                return Ok(());
4294            }
4295
4296            // Decode unknown envelopes for gaps in ordinals.
4297            while _next_ordinal_to_read < 1 {
4298                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4299                _next_ordinal_to_read += 1;
4300                next_offset += envelope_size;
4301            }
4302
4303            let next_out_of_line = decoder.next_out_of_line();
4304            let handles_before = decoder.remaining_handles();
4305            if let Some((inlined, num_bytes, num_handles)) =
4306                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4307            {
4308                let member_inline_size =
4309                    <Media as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4310                if inlined != (member_inline_size <= 4) {
4311                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4312                }
4313                let inner_offset;
4314                let mut inner_depth = depth.clone();
4315                if inlined {
4316                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4317                    inner_offset = next_offset;
4318                } else {
4319                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4320                    inner_depth.increment()?;
4321                }
4322                let val_ref = self.media.get_or_insert_with(|| fidl::new_empty!(Media, D));
4323                fidl::decode!(Media, D, val_ref, decoder, inner_offset, inner_depth)?;
4324                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4325                {
4326                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4327                }
4328                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4329                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4330                }
4331            }
4332
4333            next_offset += envelope_size;
4334            _next_ordinal_to_read += 1;
4335            if next_offset >= end_offset {
4336                return Ok(());
4337            }
4338
4339            // Decode unknown envelopes for gaps in ordinals.
4340            while _next_ordinal_to_read < 2 {
4341                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4342                _next_ordinal_to_read += 1;
4343                next_offset += envelope_size;
4344            }
4345
4346            let next_out_of_line = decoder.next_out_of_line();
4347            let handles_before = decoder.remaining_handles();
4348            if let Some((inlined, num_bytes, num_handles)) =
4349                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4350            {
4351                let member_inline_size =
4352                    <IpVersions as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4353                if inlined != (member_inline_size <= 4) {
4354                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4355                }
4356                let inner_offset;
4357                let mut inner_depth = depth.clone();
4358                if inlined {
4359                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4360                    inner_offset = next_offset;
4361                } else {
4362                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4363                    inner_depth.increment()?;
4364                }
4365                let val_ref =
4366                    self.ip_versions.get_or_insert_with(|| fidl::new_empty!(IpVersions, D));
4367                fidl::decode!(IpVersions, D, val_ref, decoder, inner_offset, inner_depth)?;
4368                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4369                {
4370                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4371                }
4372                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4373                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4374                }
4375            }
4376
4377            next_offset += envelope_size;
4378            _next_ordinal_to_read += 1;
4379            if next_offset >= end_offset {
4380                return Ok(());
4381            }
4382
4383            // Decode unknown envelopes for gaps in ordinals.
4384            while _next_ordinal_to_read < 3 {
4385                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4386                _next_ordinal_to_read += 1;
4387                next_offset += envelope_size;
4388            }
4389
4390            let next_out_of_line = decoder.next_out_of_line();
4391            let handles_before = decoder.remaining_handles();
4392            if let Some((inlined, num_bytes, num_handles)) =
4393                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4394            {
4395                let member_inline_size =
4396                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4397                if inlined != (member_inline_size <= 4) {
4398                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4399                }
4400                let inner_offset;
4401                let mut inner_depth = depth.clone();
4402                if inlined {
4403                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4404                    inner_offset = next_offset;
4405                } else {
4406                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4407                    inner_depth.increment()?;
4408                }
4409                let val_ref = self.exclude_local.get_or_insert_with(|| fidl::new_empty!(bool, D));
4410                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
4411                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4412                {
4413                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4414                }
4415                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4416                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4417                }
4418            }
4419
4420            next_offset += envelope_size;
4421            _next_ordinal_to_read += 1;
4422            if next_offset >= end_offset {
4423                return Ok(());
4424            }
4425
4426            // Decode unknown envelopes for gaps in ordinals.
4427            while _next_ordinal_to_read < 4 {
4428                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4429                _next_ordinal_to_read += 1;
4430                next_offset += envelope_size;
4431            }
4432
4433            let next_out_of_line = decoder.next_out_of_line();
4434            let handles_before = decoder.remaining_handles();
4435            if let Some((inlined, num_bytes, num_handles)) =
4436                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4437            {
4438                let member_inline_size =
4439                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4440                if inlined != (member_inline_size <= 4) {
4441                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4442                }
4443                let inner_offset;
4444                let mut inner_depth = depth.clone();
4445                if inlined {
4446                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4447                    inner_offset = next_offset;
4448                } else {
4449                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4450                    inner_depth.increment()?;
4451                }
4452                let val_ref =
4453                    self.exclude_local_proxies.get_or_insert_with(|| fidl::new_empty!(bool, D));
4454                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
4455                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4456                {
4457                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4458                }
4459                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4460                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4461                }
4462            }
4463
4464            next_offset += envelope_size;
4465
4466            // Decode the remaining unknown envelopes.
4467            while next_offset < end_offset {
4468                _next_ordinal_to_read += 1;
4469                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4470                next_offset += envelope_size;
4471            }
4472
4473            Ok(())
4474        }
4475    }
4476
4477    impl ProxyHostPublicationOptions {
4478        #[inline(always)]
4479        fn max_ordinal_present(&self) -> u64 {
4480            if let Some(_) = self.perform_probe {
4481                return 3;
4482            }
4483            if let Some(_) = self.ip_versions {
4484                return 2;
4485            }
4486            if let Some(_) = self.media {
4487                return 1;
4488            }
4489            0
4490        }
4491    }
4492
4493    impl fidl::encoding::ValueTypeMarker for ProxyHostPublicationOptions {
4494        type Borrowed<'a> = &'a Self;
4495        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4496            value
4497        }
4498    }
4499
4500    unsafe impl fidl::encoding::TypeMarker for ProxyHostPublicationOptions {
4501        type Owned = Self;
4502
4503        #[inline(always)]
4504        fn inline_align(_context: fidl::encoding::Context) -> usize {
4505            8
4506        }
4507
4508        #[inline(always)]
4509        fn inline_size(_context: fidl::encoding::Context) -> usize {
4510            16
4511        }
4512    }
4513
4514    unsafe impl<D: fidl::encoding::ResourceDialect>
4515        fidl::encoding::Encode<ProxyHostPublicationOptions, D> for &ProxyHostPublicationOptions
4516    {
4517        unsafe fn encode(
4518            self,
4519            encoder: &mut fidl::encoding::Encoder<'_, D>,
4520            offset: usize,
4521            mut depth: fidl::encoding::Depth,
4522        ) -> fidl::Result<()> {
4523            encoder.debug_check_bounds::<ProxyHostPublicationOptions>(offset);
4524            // Vector header
4525            let max_ordinal: u64 = self.max_ordinal_present();
4526            encoder.write_num(max_ordinal, offset);
4527            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
4528            // Calling encoder.out_of_line_offset(0) is not allowed.
4529            if max_ordinal == 0 {
4530                return Ok(());
4531            }
4532            depth.increment()?;
4533            let envelope_size = 8;
4534            let bytes_len = max_ordinal as usize * envelope_size;
4535            #[allow(unused_variables)]
4536            let offset = encoder.out_of_line_offset(bytes_len);
4537            let mut _prev_end_offset: usize = 0;
4538            if 1 > max_ordinal {
4539                return Ok(());
4540            }
4541
4542            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4543            // are envelope_size bytes.
4544            let cur_offset: usize = (1 - 1) * envelope_size;
4545
4546            // Zero reserved fields.
4547            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4548
4549            // Safety:
4550            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4551            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4552            //   envelope_size bytes, there is always sufficient room.
4553            fidl::encoding::encode_in_envelope_optional::<Media, D>(
4554                self.media.as_ref().map(<Media as fidl::encoding::ValueTypeMarker>::borrow),
4555                encoder,
4556                offset + cur_offset,
4557                depth,
4558            )?;
4559
4560            _prev_end_offset = cur_offset + envelope_size;
4561            if 2 > max_ordinal {
4562                return Ok(());
4563            }
4564
4565            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4566            // are envelope_size bytes.
4567            let cur_offset: usize = (2 - 1) * envelope_size;
4568
4569            // Zero reserved fields.
4570            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4571
4572            // Safety:
4573            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4574            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4575            //   envelope_size bytes, there is always sufficient room.
4576            fidl::encoding::encode_in_envelope_optional::<IpVersions, D>(
4577                self.ip_versions
4578                    .as_ref()
4579                    .map(<IpVersions as fidl::encoding::ValueTypeMarker>::borrow),
4580                encoder,
4581                offset + cur_offset,
4582                depth,
4583            )?;
4584
4585            _prev_end_offset = cur_offset + envelope_size;
4586            if 3 > max_ordinal {
4587                return Ok(());
4588            }
4589
4590            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4591            // are envelope_size bytes.
4592            let cur_offset: usize = (3 - 1) * envelope_size;
4593
4594            // Zero reserved fields.
4595            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4596
4597            // Safety:
4598            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4599            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4600            //   envelope_size bytes, there is always sufficient room.
4601            fidl::encoding::encode_in_envelope_optional::<bool, D>(
4602                self.perform_probe.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
4603                encoder,
4604                offset + cur_offset,
4605                depth,
4606            )?;
4607
4608            _prev_end_offset = cur_offset + envelope_size;
4609
4610            Ok(())
4611        }
4612    }
4613
4614    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
4615        for ProxyHostPublicationOptions
4616    {
4617        #[inline(always)]
4618        fn new_empty() -> Self {
4619            Self::default()
4620        }
4621
4622        unsafe fn decode(
4623            &mut self,
4624            decoder: &mut fidl::encoding::Decoder<'_, D>,
4625            offset: usize,
4626            mut depth: fidl::encoding::Depth,
4627        ) -> fidl::Result<()> {
4628            decoder.debug_check_bounds::<Self>(offset);
4629            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
4630                None => return Err(fidl::Error::NotNullable),
4631                Some(len) => len,
4632            };
4633            // Calling decoder.out_of_line_offset(0) is not allowed.
4634            if len == 0 {
4635                return Ok(());
4636            };
4637            depth.increment()?;
4638            let envelope_size = 8;
4639            let bytes_len = len * envelope_size;
4640            let offset = decoder.out_of_line_offset(bytes_len)?;
4641            // Decode the envelope for each type.
4642            let mut _next_ordinal_to_read = 0;
4643            let mut next_offset = offset;
4644            let end_offset = offset + bytes_len;
4645            _next_ordinal_to_read += 1;
4646            if next_offset >= end_offset {
4647                return Ok(());
4648            }
4649
4650            // Decode unknown envelopes for gaps in ordinals.
4651            while _next_ordinal_to_read < 1 {
4652                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4653                _next_ordinal_to_read += 1;
4654                next_offset += envelope_size;
4655            }
4656
4657            let next_out_of_line = decoder.next_out_of_line();
4658            let handles_before = decoder.remaining_handles();
4659            if let Some((inlined, num_bytes, num_handles)) =
4660                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4661            {
4662                let member_inline_size =
4663                    <Media as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4664                if inlined != (member_inline_size <= 4) {
4665                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4666                }
4667                let inner_offset;
4668                let mut inner_depth = depth.clone();
4669                if inlined {
4670                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4671                    inner_offset = next_offset;
4672                } else {
4673                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4674                    inner_depth.increment()?;
4675                }
4676                let val_ref = self.media.get_or_insert_with(|| fidl::new_empty!(Media, D));
4677                fidl::decode!(Media, D, val_ref, decoder, inner_offset, inner_depth)?;
4678                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4679                {
4680                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4681                }
4682                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4683                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4684                }
4685            }
4686
4687            next_offset += envelope_size;
4688            _next_ordinal_to_read += 1;
4689            if next_offset >= end_offset {
4690                return Ok(());
4691            }
4692
4693            // Decode unknown envelopes for gaps in ordinals.
4694            while _next_ordinal_to_read < 2 {
4695                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4696                _next_ordinal_to_read += 1;
4697                next_offset += envelope_size;
4698            }
4699
4700            let next_out_of_line = decoder.next_out_of_line();
4701            let handles_before = decoder.remaining_handles();
4702            if let Some((inlined, num_bytes, num_handles)) =
4703                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4704            {
4705                let member_inline_size =
4706                    <IpVersions as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4707                if inlined != (member_inline_size <= 4) {
4708                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4709                }
4710                let inner_offset;
4711                let mut inner_depth = depth.clone();
4712                if inlined {
4713                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4714                    inner_offset = next_offset;
4715                } else {
4716                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4717                    inner_depth.increment()?;
4718                }
4719                let val_ref =
4720                    self.ip_versions.get_or_insert_with(|| fidl::new_empty!(IpVersions, D));
4721                fidl::decode!(IpVersions, D, val_ref, decoder, inner_offset, inner_depth)?;
4722                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4723                {
4724                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4725                }
4726                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4727                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4728                }
4729            }
4730
4731            next_offset += envelope_size;
4732            _next_ordinal_to_read += 1;
4733            if next_offset >= end_offset {
4734                return Ok(());
4735            }
4736
4737            // Decode unknown envelopes for gaps in ordinals.
4738            while _next_ordinal_to_read < 3 {
4739                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4740                _next_ordinal_to_read += 1;
4741                next_offset += envelope_size;
4742            }
4743
4744            let next_out_of_line = decoder.next_out_of_line();
4745            let handles_before = decoder.remaining_handles();
4746            if let Some((inlined, num_bytes, num_handles)) =
4747                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4748            {
4749                let member_inline_size =
4750                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4751                if inlined != (member_inline_size <= 4) {
4752                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4753                }
4754                let inner_offset;
4755                let mut inner_depth = depth.clone();
4756                if inlined {
4757                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4758                    inner_offset = next_offset;
4759                } else {
4760                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4761                    inner_depth.increment()?;
4762                }
4763                let val_ref = self.perform_probe.get_or_insert_with(|| fidl::new_empty!(bool, D));
4764                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
4765                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4766                {
4767                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4768                }
4769                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4770                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4771                }
4772            }
4773
4774            next_offset += envelope_size;
4775
4776            // Decode the remaining unknown envelopes.
4777            while next_offset < end_offset {
4778                _next_ordinal_to_read += 1;
4779                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4780                next_offset += envelope_size;
4781            }
4782
4783            Ok(())
4784        }
4785    }
4786
4787    impl ServiceInstance {
4788        #[inline(always)]
4789        fn max_ordinal_present(&self) -> u64 {
4790            if let Some(_) = self.text_strings {
4791                return 10;
4792            }
4793            if let Some(_) = self.addresses {
4794                return 9;
4795            }
4796            if let Some(_) = self.target {
4797                return 8;
4798            }
4799            if let Some(_) = self.srv_weight {
4800                return 7;
4801            }
4802            if let Some(_) = self.srv_priority {
4803                return 6;
4804            }
4805            if let Some(_) = self.text {
4806                return 5;
4807            }
4808            if let Some(_) = self.ipv6_endpoint {
4809                return 4;
4810            }
4811            if let Some(_) = self.ipv4_endpoint {
4812                return 3;
4813            }
4814            if let Some(_) = self.instance {
4815                return 2;
4816            }
4817            if let Some(_) = self.service {
4818                return 1;
4819            }
4820            0
4821        }
4822    }
4823
4824    impl fidl::encoding::ValueTypeMarker for ServiceInstance {
4825        type Borrowed<'a> = &'a Self;
4826        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4827            value
4828        }
4829    }
4830
4831    unsafe impl fidl::encoding::TypeMarker for ServiceInstance {
4832        type Owned = Self;
4833
4834        #[inline(always)]
4835        fn inline_align(_context: fidl::encoding::Context) -> usize {
4836            8
4837        }
4838
4839        #[inline(always)]
4840        fn inline_size(_context: fidl::encoding::Context) -> usize {
4841            16
4842        }
4843    }
4844
4845    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ServiceInstance, D>
4846        for &ServiceInstance
4847    {
4848        unsafe fn encode(
4849            self,
4850            encoder: &mut fidl::encoding::Encoder<'_, D>,
4851            offset: usize,
4852            mut depth: fidl::encoding::Depth,
4853        ) -> fidl::Result<()> {
4854            encoder.debug_check_bounds::<ServiceInstance>(offset);
4855            // Vector header
4856            let max_ordinal: u64 = self.max_ordinal_present();
4857            encoder.write_num(max_ordinal, offset);
4858            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
4859            // Calling encoder.out_of_line_offset(0) is not allowed.
4860            if max_ordinal == 0 {
4861                return Ok(());
4862            }
4863            depth.increment()?;
4864            let envelope_size = 8;
4865            let bytes_len = max_ordinal as usize * envelope_size;
4866            #[allow(unused_variables)]
4867            let offset = encoder.out_of_line_offset(bytes_len);
4868            let mut _prev_end_offset: usize = 0;
4869            if 1 > max_ordinal {
4870                return Ok(());
4871            }
4872
4873            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4874            // are envelope_size bytes.
4875            let cur_offset: usize = (1 - 1) * envelope_size;
4876
4877            // Zero reserved fields.
4878            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4879
4880            // Safety:
4881            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4882            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4883            //   envelope_size bytes, there is always sufficient room.
4884            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<22>, D>(
4885                self.service.as_ref().map(
4886                    <fidl::encoding::BoundedString<22> as fidl::encoding::ValueTypeMarker>::borrow,
4887                ),
4888                encoder,
4889                offset + cur_offset,
4890                depth,
4891            )?;
4892
4893            _prev_end_offset = cur_offset + envelope_size;
4894            if 2 > max_ordinal {
4895                return Ok(());
4896            }
4897
4898            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4899            // are envelope_size bytes.
4900            let cur_offset: usize = (2 - 1) * envelope_size;
4901
4902            // Zero reserved fields.
4903            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4904
4905            // Safety:
4906            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4907            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4908            //   envelope_size bytes, there is always sufficient room.
4909            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<63>, D>(
4910                self.instance.as_ref().map(
4911                    <fidl::encoding::BoundedString<63> as fidl::encoding::ValueTypeMarker>::borrow,
4912                ),
4913                encoder,
4914                offset + cur_offset,
4915                depth,
4916            )?;
4917
4918            _prev_end_offset = cur_offset + envelope_size;
4919            if 3 > max_ordinal {
4920                return Ok(());
4921            }
4922
4923            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4924            // are envelope_size bytes.
4925            let cur_offset: usize = (3 - 1) * envelope_size;
4926
4927            // Zero reserved fields.
4928            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4929
4930            // Safety:
4931            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4932            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4933            //   envelope_size bytes, there is always sufficient room.
4934            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_net__common::Ipv4SocketAddress, D>(
4935            self.ipv4_endpoint.as_ref().map(<fidl_fuchsia_net__common::Ipv4SocketAddress as fidl::encoding::ValueTypeMarker>::borrow),
4936            encoder, offset + cur_offset, depth
4937        )?;
4938
4939            _prev_end_offset = cur_offset + envelope_size;
4940            if 4 > max_ordinal {
4941                return Ok(());
4942            }
4943
4944            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4945            // are envelope_size bytes.
4946            let cur_offset: usize = (4 - 1) * envelope_size;
4947
4948            // Zero reserved fields.
4949            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4950
4951            // Safety:
4952            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4953            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4954            //   envelope_size bytes, there is always sufficient room.
4955            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_net__common::Ipv6SocketAddress, D>(
4956            self.ipv6_endpoint.as_ref().map(<fidl_fuchsia_net__common::Ipv6SocketAddress as fidl::encoding::ValueTypeMarker>::borrow),
4957            encoder, offset + cur_offset, depth
4958        )?;
4959
4960            _prev_end_offset = cur_offset + envelope_size;
4961            if 5 > max_ordinal {
4962                return Ok(());
4963            }
4964
4965            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4966            // are envelope_size bytes.
4967            let cur_offset: usize = (5 - 1) * envelope_size;
4968
4969            // Zero reserved fields.
4970            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4971
4972            // Safety:
4973            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4974            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4975            //   envelope_size bytes, there is always sufficient room.
4976            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<fidl::encoding::BoundedString<255>, 256>, D>(
4977            self.text.as_ref().map(<fidl::encoding::Vector<fidl::encoding::BoundedString<255>, 256> as fidl::encoding::ValueTypeMarker>::borrow),
4978            encoder, offset + cur_offset, depth
4979        )?;
4980
4981            _prev_end_offset = cur_offset + envelope_size;
4982            if 6 > max_ordinal {
4983                return Ok(());
4984            }
4985
4986            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4987            // are envelope_size bytes.
4988            let cur_offset: usize = (6 - 1) * envelope_size;
4989
4990            // Zero reserved fields.
4991            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4992
4993            // Safety:
4994            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4995            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4996            //   envelope_size bytes, there is always sufficient room.
4997            fidl::encoding::encode_in_envelope_optional::<u16, D>(
4998                self.srv_priority.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
4999                encoder,
5000                offset + cur_offset,
5001                depth,
5002            )?;
5003
5004            _prev_end_offset = cur_offset + envelope_size;
5005            if 7 > max_ordinal {
5006                return Ok(());
5007            }
5008
5009            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5010            // are envelope_size bytes.
5011            let cur_offset: usize = (7 - 1) * envelope_size;
5012
5013            // Zero reserved fields.
5014            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5015
5016            // Safety:
5017            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5018            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5019            //   envelope_size bytes, there is always sufficient room.
5020            fidl::encoding::encode_in_envelope_optional::<u16, D>(
5021                self.srv_weight.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
5022                encoder,
5023                offset + cur_offset,
5024                depth,
5025            )?;
5026
5027            _prev_end_offset = cur_offset + envelope_size;
5028            if 8 > max_ordinal {
5029                return Ok(());
5030            }
5031
5032            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5033            // are envelope_size bytes.
5034            let cur_offset: usize = (8 - 1) * envelope_size;
5035
5036            // Zero reserved fields.
5037            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5038
5039            // Safety:
5040            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5041            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5042            //   envelope_size bytes, there is always sufficient room.
5043            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<255>, D>(
5044                self.target.as_ref().map(
5045                    <fidl::encoding::BoundedString<255> as fidl::encoding::ValueTypeMarker>::borrow,
5046                ),
5047                encoder,
5048                offset + cur_offset,
5049                depth,
5050            )?;
5051
5052            _prev_end_offset = cur_offset + envelope_size;
5053            if 9 > max_ordinal {
5054                return Ok(());
5055            }
5056
5057            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5058            // are envelope_size bytes.
5059            let cur_offset: usize = (9 - 1) * envelope_size;
5060
5061            // Zero reserved fields.
5062            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5063
5064            // Safety:
5065            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5066            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5067            //   envelope_size bytes, there is always sufficient room.
5068            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<fidl_fuchsia_net__common::SocketAddress, 64>, D>(
5069            self.addresses.as_ref().map(<fidl::encoding::Vector<fidl_fuchsia_net__common::SocketAddress, 64> as fidl::encoding::ValueTypeMarker>::borrow),
5070            encoder, offset + cur_offset, depth
5071        )?;
5072
5073            _prev_end_offset = cur_offset + envelope_size;
5074            if 10 > max_ordinal {
5075                return Ok(());
5076            }
5077
5078            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5079            // are envelope_size bytes.
5080            let cur_offset: usize = (10 - 1) * envelope_size;
5081
5082            // Zero reserved fields.
5083            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5084
5085            // Safety:
5086            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5087            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5088            //   envelope_size bytes, there is always sufficient room.
5089            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<fidl::encoding::Vector<u8, 255>, 256>, D>(
5090            self.text_strings.as_ref().map(<fidl::encoding::Vector<fidl::encoding::Vector<u8, 255>, 256> as fidl::encoding::ValueTypeMarker>::borrow),
5091            encoder, offset + cur_offset, depth
5092        )?;
5093
5094            _prev_end_offset = cur_offset + envelope_size;
5095
5096            Ok(())
5097        }
5098    }
5099
5100    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ServiceInstance {
5101        #[inline(always)]
5102        fn new_empty() -> Self {
5103            Self::default()
5104        }
5105
5106        unsafe fn decode(
5107            &mut self,
5108            decoder: &mut fidl::encoding::Decoder<'_, D>,
5109            offset: usize,
5110            mut depth: fidl::encoding::Depth,
5111        ) -> fidl::Result<()> {
5112            decoder.debug_check_bounds::<Self>(offset);
5113            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
5114                None => return Err(fidl::Error::NotNullable),
5115                Some(len) => len,
5116            };
5117            // Calling decoder.out_of_line_offset(0) is not allowed.
5118            if len == 0 {
5119                return Ok(());
5120            };
5121            depth.increment()?;
5122            let envelope_size = 8;
5123            let bytes_len = len * envelope_size;
5124            let offset = decoder.out_of_line_offset(bytes_len)?;
5125            // Decode the envelope for each type.
5126            let mut _next_ordinal_to_read = 0;
5127            let mut next_offset = offset;
5128            let end_offset = offset + bytes_len;
5129            _next_ordinal_to_read += 1;
5130            if next_offset >= end_offset {
5131                return Ok(());
5132            }
5133
5134            // Decode unknown envelopes for gaps in ordinals.
5135            while _next_ordinal_to_read < 1 {
5136                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5137                _next_ordinal_to_read += 1;
5138                next_offset += envelope_size;
5139            }
5140
5141            let next_out_of_line = decoder.next_out_of_line();
5142            let handles_before = decoder.remaining_handles();
5143            if let Some((inlined, num_bytes, num_handles)) =
5144                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5145            {
5146                let member_inline_size =
5147                    <fidl::encoding::BoundedString<22> as fidl::encoding::TypeMarker>::inline_size(
5148                        decoder.context,
5149                    );
5150                if inlined != (member_inline_size <= 4) {
5151                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5152                }
5153                let inner_offset;
5154                let mut inner_depth = depth.clone();
5155                if inlined {
5156                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5157                    inner_offset = next_offset;
5158                } else {
5159                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5160                    inner_depth.increment()?;
5161                }
5162                let val_ref = self
5163                    .service
5164                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<22>, D));
5165                fidl::decode!(
5166                    fidl::encoding::BoundedString<22>,
5167                    D,
5168                    val_ref,
5169                    decoder,
5170                    inner_offset,
5171                    inner_depth
5172                )?;
5173                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5174                {
5175                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5176                }
5177                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5178                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5179                }
5180            }
5181
5182            next_offset += envelope_size;
5183            _next_ordinal_to_read += 1;
5184            if next_offset >= end_offset {
5185                return Ok(());
5186            }
5187
5188            // Decode unknown envelopes for gaps in ordinals.
5189            while _next_ordinal_to_read < 2 {
5190                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5191                _next_ordinal_to_read += 1;
5192                next_offset += envelope_size;
5193            }
5194
5195            let next_out_of_line = decoder.next_out_of_line();
5196            let handles_before = decoder.remaining_handles();
5197            if let Some((inlined, num_bytes, num_handles)) =
5198                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5199            {
5200                let member_inline_size =
5201                    <fidl::encoding::BoundedString<63> as fidl::encoding::TypeMarker>::inline_size(
5202                        decoder.context,
5203                    );
5204                if inlined != (member_inline_size <= 4) {
5205                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5206                }
5207                let inner_offset;
5208                let mut inner_depth = depth.clone();
5209                if inlined {
5210                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5211                    inner_offset = next_offset;
5212                } else {
5213                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5214                    inner_depth.increment()?;
5215                }
5216                let val_ref = self
5217                    .instance
5218                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<63>, D));
5219                fidl::decode!(
5220                    fidl::encoding::BoundedString<63>,
5221                    D,
5222                    val_ref,
5223                    decoder,
5224                    inner_offset,
5225                    inner_depth
5226                )?;
5227                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5228                {
5229                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5230                }
5231                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5232                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5233                }
5234            }
5235
5236            next_offset += envelope_size;
5237            _next_ordinal_to_read += 1;
5238            if next_offset >= end_offset {
5239                return Ok(());
5240            }
5241
5242            // Decode unknown envelopes for gaps in ordinals.
5243            while _next_ordinal_to_read < 3 {
5244                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5245                _next_ordinal_to_read += 1;
5246                next_offset += envelope_size;
5247            }
5248
5249            let next_out_of_line = decoder.next_out_of_line();
5250            let handles_before = decoder.remaining_handles();
5251            if let Some((inlined, num_bytes, num_handles)) =
5252                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5253            {
5254                let member_inline_size = <fidl_fuchsia_net__common::Ipv4SocketAddress as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5255                if inlined != (member_inline_size <= 4) {
5256                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5257                }
5258                let inner_offset;
5259                let mut inner_depth = depth.clone();
5260                if inlined {
5261                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5262                    inner_offset = next_offset;
5263                } else {
5264                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5265                    inner_depth.increment()?;
5266                }
5267                let val_ref = self.ipv4_endpoint.get_or_insert_with(|| {
5268                    fidl::new_empty!(fidl_fuchsia_net__common::Ipv4SocketAddress, D)
5269                });
5270                fidl::decode!(
5271                    fidl_fuchsia_net__common::Ipv4SocketAddress,
5272                    D,
5273                    val_ref,
5274                    decoder,
5275                    inner_offset,
5276                    inner_depth
5277                )?;
5278                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5279                {
5280                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5281                }
5282                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5283                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5284                }
5285            }
5286
5287            next_offset += envelope_size;
5288            _next_ordinal_to_read += 1;
5289            if next_offset >= end_offset {
5290                return Ok(());
5291            }
5292
5293            // Decode unknown envelopes for gaps in ordinals.
5294            while _next_ordinal_to_read < 4 {
5295                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5296                _next_ordinal_to_read += 1;
5297                next_offset += envelope_size;
5298            }
5299
5300            let next_out_of_line = decoder.next_out_of_line();
5301            let handles_before = decoder.remaining_handles();
5302            if let Some((inlined, num_bytes, num_handles)) =
5303                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5304            {
5305                let member_inline_size = <fidl_fuchsia_net__common::Ipv6SocketAddress as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5306                if inlined != (member_inline_size <= 4) {
5307                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5308                }
5309                let inner_offset;
5310                let mut inner_depth = depth.clone();
5311                if inlined {
5312                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5313                    inner_offset = next_offset;
5314                } else {
5315                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5316                    inner_depth.increment()?;
5317                }
5318                let val_ref = self.ipv6_endpoint.get_or_insert_with(|| {
5319                    fidl::new_empty!(fidl_fuchsia_net__common::Ipv6SocketAddress, D)
5320                });
5321                fidl::decode!(
5322                    fidl_fuchsia_net__common::Ipv6SocketAddress,
5323                    D,
5324                    val_ref,
5325                    decoder,
5326                    inner_offset,
5327                    inner_depth
5328                )?;
5329                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5330                {
5331                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5332                }
5333                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5334                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5335                }
5336            }
5337
5338            next_offset += envelope_size;
5339            _next_ordinal_to_read += 1;
5340            if next_offset >= end_offset {
5341                return Ok(());
5342            }
5343
5344            // Decode unknown envelopes for gaps in ordinals.
5345            while _next_ordinal_to_read < 5 {
5346                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5347                _next_ordinal_to_read += 1;
5348                next_offset += envelope_size;
5349            }
5350
5351            let next_out_of_line = decoder.next_out_of_line();
5352            let handles_before = decoder.remaining_handles();
5353            if let Some((inlined, num_bytes, num_handles)) =
5354                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5355            {
5356                let member_inline_size = <fidl::encoding::Vector<
5357                    fidl::encoding::BoundedString<255>,
5358                    256,
5359                > as fidl::encoding::TypeMarker>::inline_size(
5360                    decoder.context
5361                );
5362                if inlined != (member_inline_size <= 4) {
5363                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5364                }
5365                let inner_offset;
5366                let mut inner_depth = depth.clone();
5367                if inlined {
5368                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5369                    inner_offset = next_offset;
5370                } else {
5371                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5372                    inner_depth.increment()?;
5373                }
5374                let val_ref = self.text.get_or_insert_with(|| {
5375                    fidl::new_empty!(
5376                        fidl::encoding::Vector<fidl::encoding::BoundedString<255>, 256>,
5377                        D
5378                    )
5379                });
5380                fidl::decode!(
5381                    fidl::encoding::Vector<fidl::encoding::BoundedString<255>, 256>,
5382                    D,
5383                    val_ref,
5384                    decoder,
5385                    inner_offset,
5386                    inner_depth
5387                )?;
5388                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5389                {
5390                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5391                }
5392                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5393                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5394                }
5395            }
5396
5397            next_offset += envelope_size;
5398            _next_ordinal_to_read += 1;
5399            if next_offset >= end_offset {
5400                return Ok(());
5401            }
5402
5403            // Decode unknown envelopes for gaps in ordinals.
5404            while _next_ordinal_to_read < 6 {
5405                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5406                _next_ordinal_to_read += 1;
5407                next_offset += envelope_size;
5408            }
5409
5410            let next_out_of_line = decoder.next_out_of_line();
5411            let handles_before = decoder.remaining_handles();
5412            if let Some((inlined, num_bytes, num_handles)) =
5413                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5414            {
5415                let member_inline_size =
5416                    <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5417                if inlined != (member_inline_size <= 4) {
5418                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5419                }
5420                let inner_offset;
5421                let mut inner_depth = depth.clone();
5422                if inlined {
5423                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5424                    inner_offset = next_offset;
5425                } else {
5426                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5427                    inner_depth.increment()?;
5428                }
5429                let val_ref = self.srv_priority.get_or_insert_with(|| fidl::new_empty!(u16, D));
5430                fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
5431                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5432                {
5433                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5434                }
5435                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5436                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5437                }
5438            }
5439
5440            next_offset += envelope_size;
5441            _next_ordinal_to_read += 1;
5442            if next_offset >= end_offset {
5443                return Ok(());
5444            }
5445
5446            // Decode unknown envelopes for gaps in ordinals.
5447            while _next_ordinal_to_read < 7 {
5448                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5449                _next_ordinal_to_read += 1;
5450                next_offset += envelope_size;
5451            }
5452
5453            let next_out_of_line = decoder.next_out_of_line();
5454            let handles_before = decoder.remaining_handles();
5455            if let Some((inlined, num_bytes, num_handles)) =
5456                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5457            {
5458                let member_inline_size =
5459                    <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5460                if inlined != (member_inline_size <= 4) {
5461                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5462                }
5463                let inner_offset;
5464                let mut inner_depth = depth.clone();
5465                if inlined {
5466                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5467                    inner_offset = next_offset;
5468                } else {
5469                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5470                    inner_depth.increment()?;
5471                }
5472                let val_ref = self.srv_weight.get_or_insert_with(|| fidl::new_empty!(u16, D));
5473                fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
5474                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5475                {
5476                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5477                }
5478                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5479                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5480                }
5481            }
5482
5483            next_offset += envelope_size;
5484            _next_ordinal_to_read += 1;
5485            if next_offset >= end_offset {
5486                return Ok(());
5487            }
5488
5489            // Decode unknown envelopes for gaps in ordinals.
5490            while _next_ordinal_to_read < 8 {
5491                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5492                _next_ordinal_to_read += 1;
5493                next_offset += envelope_size;
5494            }
5495
5496            let next_out_of_line = decoder.next_out_of_line();
5497            let handles_before = decoder.remaining_handles();
5498            if let Some((inlined, num_bytes, num_handles)) =
5499                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5500            {
5501                let member_inline_size =
5502                    <fidl::encoding::BoundedString<255> as fidl::encoding::TypeMarker>::inline_size(
5503                        decoder.context,
5504                    );
5505                if inlined != (member_inline_size <= 4) {
5506                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5507                }
5508                let inner_offset;
5509                let mut inner_depth = depth.clone();
5510                if inlined {
5511                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5512                    inner_offset = next_offset;
5513                } else {
5514                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5515                    inner_depth.increment()?;
5516                }
5517                let val_ref = self
5518                    .target
5519                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<255>, D));
5520                fidl::decode!(
5521                    fidl::encoding::BoundedString<255>,
5522                    D,
5523                    val_ref,
5524                    decoder,
5525                    inner_offset,
5526                    inner_depth
5527                )?;
5528                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5529                {
5530                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5531                }
5532                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5533                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5534                }
5535            }
5536
5537            next_offset += envelope_size;
5538            _next_ordinal_to_read += 1;
5539            if next_offset >= end_offset {
5540                return Ok(());
5541            }
5542
5543            // Decode unknown envelopes for gaps in ordinals.
5544            while _next_ordinal_to_read < 9 {
5545                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5546                _next_ordinal_to_read += 1;
5547                next_offset += envelope_size;
5548            }
5549
5550            let next_out_of_line = decoder.next_out_of_line();
5551            let handles_before = decoder.remaining_handles();
5552            if let Some((inlined, num_bytes, num_handles)) =
5553                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5554            {
5555                let member_inline_size = <fidl::encoding::Vector<
5556                    fidl_fuchsia_net__common::SocketAddress,
5557                    64,
5558                > as fidl::encoding::TypeMarker>::inline_size(
5559                    decoder.context
5560                );
5561                if inlined != (member_inline_size <= 4) {
5562                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5563                }
5564                let inner_offset;
5565                let mut inner_depth = depth.clone();
5566                if inlined {
5567                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5568                    inner_offset = next_offset;
5569                } else {
5570                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5571                    inner_depth.increment()?;
5572                }
5573                let val_ref =
5574                self.addresses.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<fidl_fuchsia_net__common::SocketAddress, 64>, D));
5575                fidl::decode!(fidl::encoding::Vector<fidl_fuchsia_net__common::SocketAddress, 64>, D, val_ref, decoder, inner_offset, inner_depth)?;
5576                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5577                {
5578                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5579                }
5580                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5581                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5582                }
5583            }
5584
5585            next_offset += envelope_size;
5586            _next_ordinal_to_read += 1;
5587            if next_offset >= end_offset {
5588                return Ok(());
5589            }
5590
5591            // Decode unknown envelopes for gaps in ordinals.
5592            while _next_ordinal_to_read < 10 {
5593                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5594                _next_ordinal_to_read += 1;
5595                next_offset += envelope_size;
5596            }
5597
5598            let next_out_of_line = decoder.next_out_of_line();
5599            let handles_before = decoder.remaining_handles();
5600            if let Some((inlined, num_bytes, num_handles)) =
5601                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5602            {
5603                let member_inline_size = <fidl::encoding::Vector<
5604                    fidl::encoding::Vector<u8, 255>,
5605                    256,
5606                > as fidl::encoding::TypeMarker>::inline_size(
5607                    decoder.context
5608                );
5609                if inlined != (member_inline_size <= 4) {
5610                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5611                }
5612                let inner_offset;
5613                let mut inner_depth = depth.clone();
5614                if inlined {
5615                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5616                    inner_offset = next_offset;
5617                } else {
5618                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5619                    inner_depth.increment()?;
5620                }
5621                let val_ref = self.text_strings.get_or_insert_with(|| {
5622                    fidl::new_empty!(
5623                        fidl::encoding::Vector<fidl::encoding::Vector<u8, 255>, 256>,
5624                        D
5625                    )
5626                });
5627                fidl::decode!(
5628                    fidl::encoding::Vector<fidl::encoding::Vector<u8, 255>, 256>,
5629                    D,
5630                    val_ref,
5631                    decoder,
5632                    inner_offset,
5633                    inner_depth
5634                )?;
5635                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5636                {
5637                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5638                }
5639                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5640                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5641                }
5642            }
5643
5644            next_offset += envelope_size;
5645
5646            // Decode the remaining unknown envelopes.
5647            while next_offset < end_offset {
5648                _next_ordinal_to_read += 1;
5649                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5650                next_offset += envelope_size;
5651            }
5652
5653            Ok(())
5654        }
5655    }
5656
5657    impl ServiceInstancePublication {
5658        #[inline(always)]
5659        fn max_ordinal_present(&self) -> u64 {
5660            if let Some(_) = self.txt_ttl {
5661                return 7;
5662            }
5663            if let Some(_) = self.srv_ttl {
5664                return 6;
5665            }
5666            if let Some(_) = self.ptr_ttl {
5667                return 5;
5668            }
5669            if let Some(_) = self.srv_weight {
5670                return 4;
5671            }
5672            if let Some(_) = self.srv_priority {
5673                return 3;
5674            }
5675            if let Some(_) = self.text {
5676                return 2;
5677            }
5678            if let Some(_) = self.port {
5679                return 1;
5680            }
5681            0
5682        }
5683    }
5684
5685    impl fidl::encoding::ValueTypeMarker for ServiceInstancePublication {
5686        type Borrowed<'a> = &'a Self;
5687        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5688            value
5689        }
5690    }
5691
5692    unsafe impl fidl::encoding::TypeMarker for ServiceInstancePublication {
5693        type Owned = Self;
5694
5695        #[inline(always)]
5696        fn inline_align(_context: fidl::encoding::Context) -> usize {
5697            8
5698        }
5699
5700        #[inline(always)]
5701        fn inline_size(_context: fidl::encoding::Context) -> usize {
5702            16
5703        }
5704    }
5705
5706    unsafe impl<D: fidl::encoding::ResourceDialect>
5707        fidl::encoding::Encode<ServiceInstancePublication, D> for &ServiceInstancePublication
5708    {
5709        unsafe fn encode(
5710            self,
5711            encoder: &mut fidl::encoding::Encoder<'_, D>,
5712            offset: usize,
5713            mut depth: fidl::encoding::Depth,
5714        ) -> fidl::Result<()> {
5715            encoder.debug_check_bounds::<ServiceInstancePublication>(offset);
5716            // Vector header
5717            let max_ordinal: u64 = self.max_ordinal_present();
5718            encoder.write_num(max_ordinal, offset);
5719            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
5720            // Calling encoder.out_of_line_offset(0) is not allowed.
5721            if max_ordinal == 0 {
5722                return Ok(());
5723            }
5724            depth.increment()?;
5725            let envelope_size = 8;
5726            let bytes_len = max_ordinal as usize * envelope_size;
5727            #[allow(unused_variables)]
5728            let offset = encoder.out_of_line_offset(bytes_len);
5729            let mut _prev_end_offset: usize = 0;
5730            if 1 > max_ordinal {
5731                return Ok(());
5732            }
5733
5734            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5735            // are envelope_size bytes.
5736            let cur_offset: usize = (1 - 1) * envelope_size;
5737
5738            // Zero reserved fields.
5739            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5740
5741            // Safety:
5742            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5743            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5744            //   envelope_size bytes, there is always sufficient room.
5745            fidl::encoding::encode_in_envelope_optional::<u16, D>(
5746                self.port.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
5747                encoder,
5748                offset + cur_offset,
5749                depth,
5750            )?;
5751
5752            _prev_end_offset = cur_offset + envelope_size;
5753            if 2 > max_ordinal {
5754                return Ok(());
5755            }
5756
5757            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5758            // are envelope_size bytes.
5759            let cur_offset: usize = (2 - 1) * envelope_size;
5760
5761            // Zero reserved fields.
5762            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5763
5764            // Safety:
5765            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5766            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5767            //   envelope_size bytes, there is always sufficient room.
5768            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<fidl::encoding::Vector<u8, 255>, 256>, D>(
5769            self.text.as_ref().map(<fidl::encoding::Vector<fidl::encoding::Vector<u8, 255>, 256> as fidl::encoding::ValueTypeMarker>::borrow),
5770            encoder, offset + cur_offset, depth
5771        )?;
5772
5773            _prev_end_offset = cur_offset + envelope_size;
5774            if 3 > max_ordinal {
5775                return Ok(());
5776            }
5777
5778            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5779            // are envelope_size bytes.
5780            let cur_offset: usize = (3 - 1) * envelope_size;
5781
5782            // Zero reserved fields.
5783            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5784
5785            // Safety:
5786            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5787            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5788            //   envelope_size bytes, there is always sufficient room.
5789            fidl::encoding::encode_in_envelope_optional::<u16, D>(
5790                self.srv_priority.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
5791                encoder,
5792                offset + cur_offset,
5793                depth,
5794            )?;
5795
5796            _prev_end_offset = cur_offset + envelope_size;
5797            if 4 > max_ordinal {
5798                return Ok(());
5799            }
5800
5801            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5802            // are envelope_size bytes.
5803            let cur_offset: usize = (4 - 1) * envelope_size;
5804
5805            // Zero reserved fields.
5806            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5807
5808            // Safety:
5809            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5810            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5811            //   envelope_size bytes, there is always sufficient room.
5812            fidl::encoding::encode_in_envelope_optional::<u16, D>(
5813                self.srv_weight.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
5814                encoder,
5815                offset + cur_offset,
5816                depth,
5817            )?;
5818
5819            _prev_end_offset = cur_offset + envelope_size;
5820            if 5 > max_ordinal {
5821                return Ok(());
5822            }
5823
5824            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5825            // are envelope_size bytes.
5826            let cur_offset: usize = (5 - 1) * envelope_size;
5827
5828            // Zero reserved fields.
5829            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5830
5831            // Safety:
5832            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5833            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5834            //   envelope_size bytes, there is always sufficient room.
5835            fidl::encoding::encode_in_envelope_optional::<i64, D>(
5836                self.ptr_ttl.as_ref().map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
5837                encoder,
5838                offset + cur_offset,
5839                depth,
5840            )?;
5841
5842            _prev_end_offset = cur_offset + envelope_size;
5843            if 6 > max_ordinal {
5844                return Ok(());
5845            }
5846
5847            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5848            // are envelope_size bytes.
5849            let cur_offset: usize = (6 - 1) * envelope_size;
5850
5851            // Zero reserved fields.
5852            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5853
5854            // Safety:
5855            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5856            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5857            //   envelope_size bytes, there is always sufficient room.
5858            fidl::encoding::encode_in_envelope_optional::<i64, D>(
5859                self.srv_ttl.as_ref().map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
5860                encoder,
5861                offset + cur_offset,
5862                depth,
5863            )?;
5864
5865            _prev_end_offset = cur_offset + envelope_size;
5866            if 7 > max_ordinal {
5867                return Ok(());
5868            }
5869
5870            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5871            // are envelope_size bytes.
5872            let cur_offset: usize = (7 - 1) * envelope_size;
5873
5874            // Zero reserved fields.
5875            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5876
5877            // Safety:
5878            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5879            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5880            //   envelope_size bytes, there is always sufficient room.
5881            fidl::encoding::encode_in_envelope_optional::<i64, D>(
5882                self.txt_ttl.as_ref().map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
5883                encoder,
5884                offset + cur_offset,
5885                depth,
5886            )?;
5887
5888            _prev_end_offset = cur_offset + envelope_size;
5889
5890            Ok(())
5891        }
5892    }
5893
5894    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
5895        for ServiceInstancePublication
5896    {
5897        #[inline(always)]
5898        fn new_empty() -> Self {
5899            Self::default()
5900        }
5901
5902        unsafe fn decode(
5903            &mut self,
5904            decoder: &mut fidl::encoding::Decoder<'_, D>,
5905            offset: usize,
5906            mut depth: fidl::encoding::Depth,
5907        ) -> fidl::Result<()> {
5908            decoder.debug_check_bounds::<Self>(offset);
5909            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
5910                None => return Err(fidl::Error::NotNullable),
5911                Some(len) => len,
5912            };
5913            // Calling decoder.out_of_line_offset(0) is not allowed.
5914            if len == 0 {
5915                return Ok(());
5916            };
5917            depth.increment()?;
5918            let envelope_size = 8;
5919            let bytes_len = len * envelope_size;
5920            let offset = decoder.out_of_line_offset(bytes_len)?;
5921            // Decode the envelope for each type.
5922            let mut _next_ordinal_to_read = 0;
5923            let mut next_offset = offset;
5924            let end_offset = offset + bytes_len;
5925            _next_ordinal_to_read += 1;
5926            if next_offset >= end_offset {
5927                return Ok(());
5928            }
5929
5930            // Decode unknown envelopes for gaps in ordinals.
5931            while _next_ordinal_to_read < 1 {
5932                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5933                _next_ordinal_to_read += 1;
5934                next_offset += envelope_size;
5935            }
5936
5937            let next_out_of_line = decoder.next_out_of_line();
5938            let handles_before = decoder.remaining_handles();
5939            if let Some((inlined, num_bytes, num_handles)) =
5940                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5941            {
5942                let member_inline_size =
5943                    <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5944                if inlined != (member_inline_size <= 4) {
5945                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5946                }
5947                let inner_offset;
5948                let mut inner_depth = depth.clone();
5949                if inlined {
5950                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5951                    inner_offset = next_offset;
5952                } else {
5953                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5954                    inner_depth.increment()?;
5955                }
5956                let val_ref = self.port.get_or_insert_with(|| fidl::new_empty!(u16, D));
5957                fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
5958                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5959                {
5960                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5961                }
5962                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5963                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5964                }
5965            }
5966
5967            next_offset += envelope_size;
5968            _next_ordinal_to_read += 1;
5969            if next_offset >= end_offset {
5970                return Ok(());
5971            }
5972
5973            // Decode unknown envelopes for gaps in ordinals.
5974            while _next_ordinal_to_read < 2 {
5975                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5976                _next_ordinal_to_read += 1;
5977                next_offset += envelope_size;
5978            }
5979
5980            let next_out_of_line = decoder.next_out_of_line();
5981            let handles_before = decoder.remaining_handles();
5982            if let Some((inlined, num_bytes, num_handles)) =
5983                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5984            {
5985                let member_inline_size = <fidl::encoding::Vector<
5986                    fidl::encoding::Vector<u8, 255>,
5987                    256,
5988                > as fidl::encoding::TypeMarker>::inline_size(
5989                    decoder.context
5990                );
5991                if inlined != (member_inline_size <= 4) {
5992                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5993                }
5994                let inner_offset;
5995                let mut inner_depth = depth.clone();
5996                if inlined {
5997                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5998                    inner_offset = next_offset;
5999                } else {
6000                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6001                    inner_depth.increment()?;
6002                }
6003                let val_ref = self.text.get_or_insert_with(|| {
6004                    fidl::new_empty!(
6005                        fidl::encoding::Vector<fidl::encoding::Vector<u8, 255>, 256>,
6006                        D
6007                    )
6008                });
6009                fidl::decode!(
6010                    fidl::encoding::Vector<fidl::encoding::Vector<u8, 255>, 256>,
6011                    D,
6012                    val_ref,
6013                    decoder,
6014                    inner_offset,
6015                    inner_depth
6016                )?;
6017                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6018                {
6019                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6020                }
6021                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6022                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6023                }
6024            }
6025
6026            next_offset += envelope_size;
6027            _next_ordinal_to_read += 1;
6028            if next_offset >= end_offset {
6029                return Ok(());
6030            }
6031
6032            // Decode unknown envelopes for gaps in ordinals.
6033            while _next_ordinal_to_read < 3 {
6034                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6035                _next_ordinal_to_read += 1;
6036                next_offset += envelope_size;
6037            }
6038
6039            let next_out_of_line = decoder.next_out_of_line();
6040            let handles_before = decoder.remaining_handles();
6041            if let Some((inlined, num_bytes, num_handles)) =
6042                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6043            {
6044                let member_inline_size =
6045                    <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6046                if inlined != (member_inline_size <= 4) {
6047                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6048                }
6049                let inner_offset;
6050                let mut inner_depth = depth.clone();
6051                if inlined {
6052                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6053                    inner_offset = next_offset;
6054                } else {
6055                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6056                    inner_depth.increment()?;
6057                }
6058                let val_ref = self.srv_priority.get_or_insert_with(|| fidl::new_empty!(u16, D));
6059                fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
6060                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6061                {
6062                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6063                }
6064                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6065                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6066                }
6067            }
6068
6069            next_offset += envelope_size;
6070            _next_ordinal_to_read += 1;
6071            if next_offset >= end_offset {
6072                return Ok(());
6073            }
6074
6075            // Decode unknown envelopes for gaps in ordinals.
6076            while _next_ordinal_to_read < 4 {
6077                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6078                _next_ordinal_to_read += 1;
6079                next_offset += envelope_size;
6080            }
6081
6082            let next_out_of_line = decoder.next_out_of_line();
6083            let handles_before = decoder.remaining_handles();
6084            if let Some((inlined, num_bytes, num_handles)) =
6085                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6086            {
6087                let member_inline_size =
6088                    <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6089                if inlined != (member_inline_size <= 4) {
6090                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6091                }
6092                let inner_offset;
6093                let mut inner_depth = depth.clone();
6094                if inlined {
6095                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6096                    inner_offset = next_offset;
6097                } else {
6098                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6099                    inner_depth.increment()?;
6100                }
6101                let val_ref = self.srv_weight.get_or_insert_with(|| fidl::new_empty!(u16, D));
6102                fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
6103                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6104                {
6105                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6106                }
6107                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6108                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6109                }
6110            }
6111
6112            next_offset += envelope_size;
6113            _next_ordinal_to_read += 1;
6114            if next_offset >= end_offset {
6115                return Ok(());
6116            }
6117
6118            // Decode unknown envelopes for gaps in ordinals.
6119            while _next_ordinal_to_read < 5 {
6120                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6121                _next_ordinal_to_read += 1;
6122                next_offset += envelope_size;
6123            }
6124
6125            let next_out_of_line = decoder.next_out_of_line();
6126            let handles_before = decoder.remaining_handles();
6127            if let Some((inlined, num_bytes, num_handles)) =
6128                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6129            {
6130                let member_inline_size =
6131                    <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6132                if inlined != (member_inline_size <= 4) {
6133                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6134                }
6135                let inner_offset;
6136                let mut inner_depth = depth.clone();
6137                if inlined {
6138                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6139                    inner_offset = next_offset;
6140                } else {
6141                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6142                    inner_depth.increment()?;
6143                }
6144                let val_ref = self.ptr_ttl.get_or_insert_with(|| fidl::new_empty!(i64, D));
6145                fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
6146                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6147                {
6148                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6149                }
6150                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6151                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6152                }
6153            }
6154
6155            next_offset += envelope_size;
6156            _next_ordinal_to_read += 1;
6157            if next_offset >= end_offset {
6158                return Ok(());
6159            }
6160
6161            // Decode unknown envelopes for gaps in ordinals.
6162            while _next_ordinal_to_read < 6 {
6163                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6164                _next_ordinal_to_read += 1;
6165                next_offset += envelope_size;
6166            }
6167
6168            let next_out_of_line = decoder.next_out_of_line();
6169            let handles_before = decoder.remaining_handles();
6170            if let Some((inlined, num_bytes, num_handles)) =
6171                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6172            {
6173                let member_inline_size =
6174                    <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6175                if inlined != (member_inline_size <= 4) {
6176                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6177                }
6178                let inner_offset;
6179                let mut inner_depth = depth.clone();
6180                if inlined {
6181                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6182                    inner_offset = next_offset;
6183                } else {
6184                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6185                    inner_depth.increment()?;
6186                }
6187                let val_ref = self.srv_ttl.get_or_insert_with(|| fidl::new_empty!(i64, D));
6188                fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
6189                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6190                {
6191                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6192                }
6193                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6194                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6195                }
6196            }
6197
6198            next_offset += envelope_size;
6199            _next_ordinal_to_read += 1;
6200            if next_offset >= end_offset {
6201                return Ok(());
6202            }
6203
6204            // Decode unknown envelopes for gaps in ordinals.
6205            while _next_ordinal_to_read < 7 {
6206                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6207                _next_ordinal_to_read += 1;
6208                next_offset += envelope_size;
6209            }
6210
6211            let next_out_of_line = decoder.next_out_of_line();
6212            let handles_before = decoder.remaining_handles();
6213            if let Some((inlined, num_bytes, num_handles)) =
6214                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6215            {
6216                let member_inline_size =
6217                    <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6218                if inlined != (member_inline_size <= 4) {
6219                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6220                }
6221                let inner_offset;
6222                let mut inner_depth = depth.clone();
6223                if inlined {
6224                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6225                    inner_offset = next_offset;
6226                } else {
6227                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6228                    inner_depth.increment()?;
6229                }
6230                let val_ref = self.txt_ttl.get_or_insert_with(|| fidl::new_empty!(i64, D));
6231                fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
6232                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6233                {
6234                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6235                }
6236                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6237                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6238                }
6239            }
6240
6241            next_offset += envelope_size;
6242
6243            // Decode the remaining unknown envelopes.
6244            while next_offset < end_offset {
6245                _next_ordinal_to_read += 1;
6246                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6247                next_offset += envelope_size;
6248            }
6249
6250            Ok(())
6251        }
6252    }
6253
6254    impl ServiceInstancePublicationOptions {
6255        #[inline(always)]
6256        fn max_ordinal_present(&self) -> u64 {
6257            if let Some(_) = self.perform_probe {
6258                return 3;
6259            }
6260            if let Some(_) = self.ip_versions {
6261                return 2;
6262            }
6263            if let Some(_) = self.media {
6264                return 1;
6265            }
6266            0
6267        }
6268    }
6269
6270    impl fidl::encoding::ValueTypeMarker for ServiceInstancePublicationOptions {
6271        type Borrowed<'a> = &'a Self;
6272        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6273            value
6274        }
6275    }
6276
6277    unsafe impl fidl::encoding::TypeMarker for ServiceInstancePublicationOptions {
6278        type Owned = Self;
6279
6280        #[inline(always)]
6281        fn inline_align(_context: fidl::encoding::Context) -> usize {
6282            8
6283        }
6284
6285        #[inline(always)]
6286        fn inline_size(_context: fidl::encoding::Context) -> usize {
6287            16
6288        }
6289    }
6290
6291    unsafe impl<D: fidl::encoding::ResourceDialect>
6292        fidl::encoding::Encode<ServiceInstancePublicationOptions, D>
6293        for &ServiceInstancePublicationOptions
6294    {
6295        unsafe fn encode(
6296            self,
6297            encoder: &mut fidl::encoding::Encoder<'_, D>,
6298            offset: usize,
6299            mut depth: fidl::encoding::Depth,
6300        ) -> fidl::Result<()> {
6301            encoder.debug_check_bounds::<ServiceInstancePublicationOptions>(offset);
6302            // Vector header
6303            let max_ordinal: u64 = self.max_ordinal_present();
6304            encoder.write_num(max_ordinal, offset);
6305            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
6306            // Calling encoder.out_of_line_offset(0) is not allowed.
6307            if max_ordinal == 0 {
6308                return Ok(());
6309            }
6310            depth.increment()?;
6311            let envelope_size = 8;
6312            let bytes_len = max_ordinal as usize * envelope_size;
6313            #[allow(unused_variables)]
6314            let offset = encoder.out_of_line_offset(bytes_len);
6315            let mut _prev_end_offset: usize = 0;
6316            if 1 > max_ordinal {
6317                return Ok(());
6318            }
6319
6320            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6321            // are envelope_size bytes.
6322            let cur_offset: usize = (1 - 1) * envelope_size;
6323
6324            // Zero reserved fields.
6325            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6326
6327            // Safety:
6328            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6329            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6330            //   envelope_size bytes, there is always sufficient room.
6331            fidl::encoding::encode_in_envelope_optional::<Media, D>(
6332                self.media.as_ref().map(<Media as fidl::encoding::ValueTypeMarker>::borrow),
6333                encoder,
6334                offset + cur_offset,
6335                depth,
6336            )?;
6337
6338            _prev_end_offset = cur_offset + envelope_size;
6339            if 2 > max_ordinal {
6340                return Ok(());
6341            }
6342
6343            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6344            // are envelope_size bytes.
6345            let cur_offset: usize = (2 - 1) * envelope_size;
6346
6347            // Zero reserved fields.
6348            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6349
6350            // Safety:
6351            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6352            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6353            //   envelope_size bytes, there is always sufficient room.
6354            fidl::encoding::encode_in_envelope_optional::<IpVersions, D>(
6355                self.ip_versions
6356                    .as_ref()
6357                    .map(<IpVersions as fidl::encoding::ValueTypeMarker>::borrow),
6358                encoder,
6359                offset + cur_offset,
6360                depth,
6361            )?;
6362
6363            _prev_end_offset = cur_offset + envelope_size;
6364            if 3 > max_ordinal {
6365                return Ok(());
6366            }
6367
6368            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6369            // are envelope_size bytes.
6370            let cur_offset: usize = (3 - 1) * envelope_size;
6371
6372            // Zero reserved fields.
6373            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6374
6375            // Safety:
6376            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6377            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6378            //   envelope_size bytes, there is always sufficient room.
6379            fidl::encoding::encode_in_envelope_optional::<bool, D>(
6380                self.perform_probe.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
6381                encoder,
6382                offset + cur_offset,
6383                depth,
6384            )?;
6385
6386            _prev_end_offset = cur_offset + envelope_size;
6387
6388            Ok(())
6389        }
6390    }
6391
6392    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
6393        for ServiceInstancePublicationOptions
6394    {
6395        #[inline(always)]
6396        fn new_empty() -> Self {
6397            Self::default()
6398        }
6399
6400        unsafe fn decode(
6401            &mut self,
6402            decoder: &mut fidl::encoding::Decoder<'_, D>,
6403            offset: usize,
6404            mut depth: fidl::encoding::Depth,
6405        ) -> fidl::Result<()> {
6406            decoder.debug_check_bounds::<Self>(offset);
6407            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
6408                None => return Err(fidl::Error::NotNullable),
6409                Some(len) => len,
6410            };
6411            // Calling decoder.out_of_line_offset(0) is not allowed.
6412            if len == 0 {
6413                return Ok(());
6414            };
6415            depth.increment()?;
6416            let envelope_size = 8;
6417            let bytes_len = len * envelope_size;
6418            let offset = decoder.out_of_line_offset(bytes_len)?;
6419            // Decode the envelope for each type.
6420            let mut _next_ordinal_to_read = 0;
6421            let mut next_offset = offset;
6422            let end_offset = offset + bytes_len;
6423            _next_ordinal_to_read += 1;
6424            if next_offset >= end_offset {
6425                return Ok(());
6426            }
6427
6428            // Decode unknown envelopes for gaps in ordinals.
6429            while _next_ordinal_to_read < 1 {
6430                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6431                _next_ordinal_to_read += 1;
6432                next_offset += envelope_size;
6433            }
6434
6435            let next_out_of_line = decoder.next_out_of_line();
6436            let handles_before = decoder.remaining_handles();
6437            if let Some((inlined, num_bytes, num_handles)) =
6438                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6439            {
6440                let member_inline_size =
6441                    <Media as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6442                if inlined != (member_inline_size <= 4) {
6443                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6444                }
6445                let inner_offset;
6446                let mut inner_depth = depth.clone();
6447                if inlined {
6448                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6449                    inner_offset = next_offset;
6450                } else {
6451                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6452                    inner_depth.increment()?;
6453                }
6454                let val_ref = self.media.get_or_insert_with(|| fidl::new_empty!(Media, D));
6455                fidl::decode!(Media, D, val_ref, decoder, inner_offset, inner_depth)?;
6456                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6457                {
6458                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6459                }
6460                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6461                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6462                }
6463            }
6464
6465            next_offset += envelope_size;
6466            _next_ordinal_to_read += 1;
6467            if next_offset >= end_offset {
6468                return Ok(());
6469            }
6470
6471            // Decode unknown envelopes for gaps in ordinals.
6472            while _next_ordinal_to_read < 2 {
6473                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6474                _next_ordinal_to_read += 1;
6475                next_offset += envelope_size;
6476            }
6477
6478            let next_out_of_line = decoder.next_out_of_line();
6479            let handles_before = decoder.remaining_handles();
6480            if let Some((inlined, num_bytes, num_handles)) =
6481                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6482            {
6483                let member_inline_size =
6484                    <IpVersions as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6485                if inlined != (member_inline_size <= 4) {
6486                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6487                }
6488                let inner_offset;
6489                let mut inner_depth = depth.clone();
6490                if inlined {
6491                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6492                    inner_offset = next_offset;
6493                } else {
6494                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6495                    inner_depth.increment()?;
6496                }
6497                let val_ref =
6498                    self.ip_versions.get_or_insert_with(|| fidl::new_empty!(IpVersions, D));
6499                fidl::decode!(IpVersions, D, val_ref, decoder, inner_offset, inner_depth)?;
6500                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6501                {
6502                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6503                }
6504                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6505                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6506                }
6507            }
6508
6509            next_offset += envelope_size;
6510            _next_ordinal_to_read += 1;
6511            if next_offset >= end_offset {
6512                return Ok(());
6513            }
6514
6515            // Decode unknown envelopes for gaps in ordinals.
6516            while _next_ordinal_to_read < 3 {
6517                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6518                _next_ordinal_to_read += 1;
6519                next_offset += envelope_size;
6520            }
6521
6522            let next_out_of_line = decoder.next_out_of_line();
6523            let handles_before = decoder.remaining_handles();
6524            if let Some((inlined, num_bytes, num_handles)) =
6525                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6526            {
6527                let member_inline_size =
6528                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6529                if inlined != (member_inline_size <= 4) {
6530                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6531                }
6532                let inner_offset;
6533                let mut inner_depth = depth.clone();
6534                if inlined {
6535                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6536                    inner_offset = next_offset;
6537                } else {
6538                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6539                    inner_depth.increment()?;
6540                }
6541                let val_ref = self.perform_probe.get_or_insert_with(|| fidl::new_empty!(bool, D));
6542                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
6543                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6544                {
6545                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6546                }
6547                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6548                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6549                }
6550            }
6551
6552            next_offset += envelope_size;
6553
6554            // Decode the remaining unknown envelopes.
6555            while next_offset < end_offset {
6556                _next_ordinal_to_read += 1;
6557                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6558                next_offset += envelope_size;
6559            }
6560
6561            Ok(())
6562        }
6563    }
6564
6565    impl ServiceInstanceResolutionOptions {
6566        #[inline(always)]
6567        fn max_ordinal_present(&self) -> u64 {
6568            if let Some(_) = self.exclude_local_proxies {
6569                return 4;
6570            }
6571            if let Some(_) = self.exclude_local {
6572                return 3;
6573            }
6574            if let Some(_) = self.ip_versions {
6575                return 2;
6576            }
6577            if let Some(_) = self.media {
6578                return 1;
6579            }
6580            0
6581        }
6582    }
6583
6584    impl fidl::encoding::ValueTypeMarker for ServiceInstanceResolutionOptions {
6585        type Borrowed<'a> = &'a Self;
6586        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6587            value
6588        }
6589    }
6590
6591    unsafe impl fidl::encoding::TypeMarker for ServiceInstanceResolutionOptions {
6592        type Owned = Self;
6593
6594        #[inline(always)]
6595        fn inline_align(_context: fidl::encoding::Context) -> usize {
6596            8
6597        }
6598
6599        #[inline(always)]
6600        fn inline_size(_context: fidl::encoding::Context) -> usize {
6601            16
6602        }
6603    }
6604
6605    unsafe impl<D: fidl::encoding::ResourceDialect>
6606        fidl::encoding::Encode<ServiceInstanceResolutionOptions, D>
6607        for &ServiceInstanceResolutionOptions
6608    {
6609        unsafe fn encode(
6610            self,
6611            encoder: &mut fidl::encoding::Encoder<'_, D>,
6612            offset: usize,
6613            mut depth: fidl::encoding::Depth,
6614        ) -> fidl::Result<()> {
6615            encoder.debug_check_bounds::<ServiceInstanceResolutionOptions>(offset);
6616            // Vector header
6617            let max_ordinal: u64 = self.max_ordinal_present();
6618            encoder.write_num(max_ordinal, offset);
6619            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
6620            // Calling encoder.out_of_line_offset(0) is not allowed.
6621            if max_ordinal == 0 {
6622                return Ok(());
6623            }
6624            depth.increment()?;
6625            let envelope_size = 8;
6626            let bytes_len = max_ordinal as usize * envelope_size;
6627            #[allow(unused_variables)]
6628            let offset = encoder.out_of_line_offset(bytes_len);
6629            let mut _prev_end_offset: usize = 0;
6630            if 1 > max_ordinal {
6631                return Ok(());
6632            }
6633
6634            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6635            // are envelope_size bytes.
6636            let cur_offset: usize = (1 - 1) * envelope_size;
6637
6638            // Zero reserved fields.
6639            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6640
6641            // Safety:
6642            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6643            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6644            //   envelope_size bytes, there is always sufficient room.
6645            fidl::encoding::encode_in_envelope_optional::<Media, D>(
6646                self.media.as_ref().map(<Media as fidl::encoding::ValueTypeMarker>::borrow),
6647                encoder,
6648                offset + cur_offset,
6649                depth,
6650            )?;
6651
6652            _prev_end_offset = cur_offset + envelope_size;
6653            if 2 > max_ordinal {
6654                return Ok(());
6655            }
6656
6657            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6658            // are envelope_size bytes.
6659            let cur_offset: usize = (2 - 1) * envelope_size;
6660
6661            // Zero reserved fields.
6662            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6663
6664            // Safety:
6665            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6666            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6667            //   envelope_size bytes, there is always sufficient room.
6668            fidl::encoding::encode_in_envelope_optional::<IpVersions, D>(
6669                self.ip_versions
6670                    .as_ref()
6671                    .map(<IpVersions as fidl::encoding::ValueTypeMarker>::borrow),
6672                encoder,
6673                offset + cur_offset,
6674                depth,
6675            )?;
6676
6677            _prev_end_offset = cur_offset + envelope_size;
6678            if 3 > max_ordinal {
6679                return Ok(());
6680            }
6681
6682            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6683            // are envelope_size bytes.
6684            let cur_offset: usize = (3 - 1) * envelope_size;
6685
6686            // Zero reserved fields.
6687            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6688
6689            // Safety:
6690            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6691            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6692            //   envelope_size bytes, there is always sufficient room.
6693            fidl::encoding::encode_in_envelope_optional::<bool, D>(
6694                self.exclude_local.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
6695                encoder,
6696                offset + cur_offset,
6697                depth,
6698            )?;
6699
6700            _prev_end_offset = cur_offset + envelope_size;
6701            if 4 > max_ordinal {
6702                return Ok(());
6703            }
6704
6705            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6706            // are envelope_size bytes.
6707            let cur_offset: usize = (4 - 1) * envelope_size;
6708
6709            // Zero reserved fields.
6710            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6711
6712            // Safety:
6713            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6714            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6715            //   envelope_size bytes, there is always sufficient room.
6716            fidl::encoding::encode_in_envelope_optional::<bool, D>(
6717                self.exclude_local_proxies
6718                    .as_ref()
6719                    .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
6720                encoder,
6721                offset + cur_offset,
6722                depth,
6723            )?;
6724
6725            _prev_end_offset = cur_offset + envelope_size;
6726
6727            Ok(())
6728        }
6729    }
6730
6731    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
6732        for ServiceInstanceResolutionOptions
6733    {
6734        #[inline(always)]
6735        fn new_empty() -> Self {
6736            Self::default()
6737        }
6738
6739        unsafe fn decode(
6740            &mut self,
6741            decoder: &mut fidl::encoding::Decoder<'_, D>,
6742            offset: usize,
6743            mut depth: fidl::encoding::Depth,
6744        ) -> fidl::Result<()> {
6745            decoder.debug_check_bounds::<Self>(offset);
6746            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
6747                None => return Err(fidl::Error::NotNullable),
6748                Some(len) => len,
6749            };
6750            // Calling decoder.out_of_line_offset(0) is not allowed.
6751            if len == 0 {
6752                return Ok(());
6753            };
6754            depth.increment()?;
6755            let envelope_size = 8;
6756            let bytes_len = len * envelope_size;
6757            let offset = decoder.out_of_line_offset(bytes_len)?;
6758            // Decode the envelope for each type.
6759            let mut _next_ordinal_to_read = 0;
6760            let mut next_offset = offset;
6761            let end_offset = offset + bytes_len;
6762            _next_ordinal_to_read += 1;
6763            if next_offset >= end_offset {
6764                return Ok(());
6765            }
6766
6767            // Decode unknown envelopes for gaps in ordinals.
6768            while _next_ordinal_to_read < 1 {
6769                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6770                _next_ordinal_to_read += 1;
6771                next_offset += envelope_size;
6772            }
6773
6774            let next_out_of_line = decoder.next_out_of_line();
6775            let handles_before = decoder.remaining_handles();
6776            if let Some((inlined, num_bytes, num_handles)) =
6777                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6778            {
6779                let member_inline_size =
6780                    <Media as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6781                if inlined != (member_inline_size <= 4) {
6782                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6783                }
6784                let inner_offset;
6785                let mut inner_depth = depth.clone();
6786                if inlined {
6787                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6788                    inner_offset = next_offset;
6789                } else {
6790                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6791                    inner_depth.increment()?;
6792                }
6793                let val_ref = self.media.get_or_insert_with(|| fidl::new_empty!(Media, D));
6794                fidl::decode!(Media, D, val_ref, decoder, inner_offset, inner_depth)?;
6795                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6796                {
6797                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6798                }
6799                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6800                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6801                }
6802            }
6803
6804            next_offset += envelope_size;
6805            _next_ordinal_to_read += 1;
6806            if next_offset >= end_offset {
6807                return Ok(());
6808            }
6809
6810            // Decode unknown envelopes for gaps in ordinals.
6811            while _next_ordinal_to_read < 2 {
6812                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6813                _next_ordinal_to_read += 1;
6814                next_offset += envelope_size;
6815            }
6816
6817            let next_out_of_line = decoder.next_out_of_line();
6818            let handles_before = decoder.remaining_handles();
6819            if let Some((inlined, num_bytes, num_handles)) =
6820                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6821            {
6822                let member_inline_size =
6823                    <IpVersions as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6824                if inlined != (member_inline_size <= 4) {
6825                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6826                }
6827                let inner_offset;
6828                let mut inner_depth = depth.clone();
6829                if inlined {
6830                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6831                    inner_offset = next_offset;
6832                } else {
6833                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6834                    inner_depth.increment()?;
6835                }
6836                let val_ref =
6837                    self.ip_versions.get_or_insert_with(|| fidl::new_empty!(IpVersions, D));
6838                fidl::decode!(IpVersions, D, val_ref, decoder, inner_offset, inner_depth)?;
6839                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6840                {
6841                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6842                }
6843                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6844                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6845                }
6846            }
6847
6848            next_offset += envelope_size;
6849            _next_ordinal_to_read += 1;
6850            if next_offset >= end_offset {
6851                return Ok(());
6852            }
6853
6854            // Decode unknown envelopes for gaps in ordinals.
6855            while _next_ordinal_to_read < 3 {
6856                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6857                _next_ordinal_to_read += 1;
6858                next_offset += envelope_size;
6859            }
6860
6861            let next_out_of_line = decoder.next_out_of_line();
6862            let handles_before = decoder.remaining_handles();
6863            if let Some((inlined, num_bytes, num_handles)) =
6864                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6865            {
6866                let member_inline_size =
6867                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6868                if inlined != (member_inline_size <= 4) {
6869                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6870                }
6871                let inner_offset;
6872                let mut inner_depth = depth.clone();
6873                if inlined {
6874                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6875                    inner_offset = next_offset;
6876                } else {
6877                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6878                    inner_depth.increment()?;
6879                }
6880                let val_ref = self.exclude_local.get_or_insert_with(|| fidl::new_empty!(bool, D));
6881                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
6882                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6883                {
6884                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6885                }
6886                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6887                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6888                }
6889            }
6890
6891            next_offset += envelope_size;
6892            _next_ordinal_to_read += 1;
6893            if next_offset >= end_offset {
6894                return Ok(());
6895            }
6896
6897            // Decode unknown envelopes for gaps in ordinals.
6898            while _next_ordinal_to_read < 4 {
6899                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6900                _next_ordinal_to_read += 1;
6901                next_offset += envelope_size;
6902            }
6903
6904            let next_out_of_line = decoder.next_out_of_line();
6905            let handles_before = decoder.remaining_handles();
6906            if let Some((inlined, num_bytes, num_handles)) =
6907                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6908            {
6909                let member_inline_size =
6910                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6911                if inlined != (member_inline_size <= 4) {
6912                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6913                }
6914                let inner_offset;
6915                let mut inner_depth = depth.clone();
6916                if inlined {
6917                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6918                    inner_offset = next_offset;
6919                } else {
6920                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6921                    inner_depth.increment()?;
6922                }
6923                let val_ref =
6924                    self.exclude_local_proxies.get_or_insert_with(|| fidl::new_empty!(bool, D));
6925                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
6926                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6927                {
6928                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6929                }
6930                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6931                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6932                }
6933            }
6934
6935            next_offset += envelope_size;
6936
6937            // Decode the remaining unknown envelopes.
6938            while next_offset < end_offset {
6939                _next_ordinal_to_read += 1;
6940                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6941                next_offset += envelope_size;
6942            }
6943
6944            Ok(())
6945        }
6946    }
6947
6948    impl ServiceSubscriptionOptions {
6949        #[inline(always)]
6950        fn max_ordinal_present(&self) -> u64 {
6951            if let Some(_) = self.exclude_local_proxies {
6952                return 4;
6953            }
6954            if let Some(_) = self.exclude_local {
6955                return 3;
6956            }
6957            if let Some(_) = self.ip_versions {
6958                return 2;
6959            }
6960            if let Some(_) = self.media {
6961                return 1;
6962            }
6963            0
6964        }
6965    }
6966
6967    impl fidl::encoding::ValueTypeMarker for ServiceSubscriptionOptions {
6968        type Borrowed<'a> = &'a Self;
6969        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6970            value
6971        }
6972    }
6973
6974    unsafe impl fidl::encoding::TypeMarker for ServiceSubscriptionOptions {
6975        type Owned = Self;
6976
6977        #[inline(always)]
6978        fn inline_align(_context: fidl::encoding::Context) -> usize {
6979            8
6980        }
6981
6982        #[inline(always)]
6983        fn inline_size(_context: fidl::encoding::Context) -> usize {
6984            16
6985        }
6986    }
6987
6988    unsafe impl<D: fidl::encoding::ResourceDialect>
6989        fidl::encoding::Encode<ServiceSubscriptionOptions, D> for &ServiceSubscriptionOptions
6990    {
6991        unsafe fn encode(
6992            self,
6993            encoder: &mut fidl::encoding::Encoder<'_, D>,
6994            offset: usize,
6995            mut depth: fidl::encoding::Depth,
6996        ) -> fidl::Result<()> {
6997            encoder.debug_check_bounds::<ServiceSubscriptionOptions>(offset);
6998            // Vector header
6999            let max_ordinal: u64 = self.max_ordinal_present();
7000            encoder.write_num(max_ordinal, offset);
7001            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
7002            // Calling encoder.out_of_line_offset(0) is not allowed.
7003            if max_ordinal == 0 {
7004                return Ok(());
7005            }
7006            depth.increment()?;
7007            let envelope_size = 8;
7008            let bytes_len = max_ordinal as usize * envelope_size;
7009            #[allow(unused_variables)]
7010            let offset = encoder.out_of_line_offset(bytes_len);
7011            let mut _prev_end_offset: usize = 0;
7012            if 1 > max_ordinal {
7013                return Ok(());
7014            }
7015
7016            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
7017            // are envelope_size bytes.
7018            let cur_offset: usize = (1 - 1) * envelope_size;
7019
7020            // Zero reserved fields.
7021            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7022
7023            // Safety:
7024            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
7025            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
7026            //   envelope_size bytes, there is always sufficient room.
7027            fidl::encoding::encode_in_envelope_optional::<Media, D>(
7028                self.media.as_ref().map(<Media as fidl::encoding::ValueTypeMarker>::borrow),
7029                encoder,
7030                offset + cur_offset,
7031                depth,
7032            )?;
7033
7034            _prev_end_offset = cur_offset + envelope_size;
7035            if 2 > max_ordinal {
7036                return Ok(());
7037            }
7038
7039            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
7040            // are envelope_size bytes.
7041            let cur_offset: usize = (2 - 1) * envelope_size;
7042
7043            // Zero reserved fields.
7044            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7045
7046            // Safety:
7047            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
7048            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
7049            //   envelope_size bytes, there is always sufficient room.
7050            fidl::encoding::encode_in_envelope_optional::<IpVersions, D>(
7051                self.ip_versions
7052                    .as_ref()
7053                    .map(<IpVersions as fidl::encoding::ValueTypeMarker>::borrow),
7054                encoder,
7055                offset + cur_offset,
7056                depth,
7057            )?;
7058
7059            _prev_end_offset = cur_offset + envelope_size;
7060            if 3 > max_ordinal {
7061                return Ok(());
7062            }
7063
7064            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
7065            // are envelope_size bytes.
7066            let cur_offset: usize = (3 - 1) * envelope_size;
7067
7068            // Zero reserved fields.
7069            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7070
7071            // Safety:
7072            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
7073            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
7074            //   envelope_size bytes, there is always sufficient room.
7075            fidl::encoding::encode_in_envelope_optional::<bool, D>(
7076                self.exclude_local.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
7077                encoder,
7078                offset + cur_offset,
7079                depth,
7080            )?;
7081
7082            _prev_end_offset = cur_offset + envelope_size;
7083            if 4 > max_ordinal {
7084                return Ok(());
7085            }
7086
7087            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
7088            // are envelope_size bytes.
7089            let cur_offset: usize = (4 - 1) * envelope_size;
7090
7091            // Zero reserved fields.
7092            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7093
7094            // Safety:
7095            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
7096            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
7097            //   envelope_size bytes, there is always sufficient room.
7098            fidl::encoding::encode_in_envelope_optional::<bool, D>(
7099                self.exclude_local_proxies
7100                    .as_ref()
7101                    .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
7102                encoder,
7103                offset + cur_offset,
7104                depth,
7105            )?;
7106
7107            _prev_end_offset = cur_offset + envelope_size;
7108
7109            Ok(())
7110        }
7111    }
7112
7113    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
7114        for ServiceSubscriptionOptions
7115    {
7116        #[inline(always)]
7117        fn new_empty() -> Self {
7118            Self::default()
7119        }
7120
7121        unsafe fn decode(
7122            &mut self,
7123            decoder: &mut fidl::encoding::Decoder<'_, D>,
7124            offset: usize,
7125            mut depth: fidl::encoding::Depth,
7126        ) -> fidl::Result<()> {
7127            decoder.debug_check_bounds::<Self>(offset);
7128            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
7129                None => return Err(fidl::Error::NotNullable),
7130                Some(len) => len,
7131            };
7132            // Calling decoder.out_of_line_offset(0) is not allowed.
7133            if len == 0 {
7134                return Ok(());
7135            };
7136            depth.increment()?;
7137            let envelope_size = 8;
7138            let bytes_len = len * envelope_size;
7139            let offset = decoder.out_of_line_offset(bytes_len)?;
7140            // Decode the envelope for each type.
7141            let mut _next_ordinal_to_read = 0;
7142            let mut next_offset = offset;
7143            let end_offset = offset + bytes_len;
7144            _next_ordinal_to_read += 1;
7145            if next_offset >= end_offset {
7146                return Ok(());
7147            }
7148
7149            // Decode unknown envelopes for gaps in ordinals.
7150            while _next_ordinal_to_read < 1 {
7151                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7152                _next_ordinal_to_read += 1;
7153                next_offset += envelope_size;
7154            }
7155
7156            let next_out_of_line = decoder.next_out_of_line();
7157            let handles_before = decoder.remaining_handles();
7158            if let Some((inlined, num_bytes, num_handles)) =
7159                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7160            {
7161                let member_inline_size =
7162                    <Media as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7163                if inlined != (member_inline_size <= 4) {
7164                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7165                }
7166                let inner_offset;
7167                let mut inner_depth = depth.clone();
7168                if inlined {
7169                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7170                    inner_offset = next_offset;
7171                } else {
7172                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7173                    inner_depth.increment()?;
7174                }
7175                let val_ref = self.media.get_or_insert_with(|| fidl::new_empty!(Media, D));
7176                fidl::decode!(Media, D, val_ref, decoder, inner_offset, inner_depth)?;
7177                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7178                {
7179                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7180                }
7181                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7182                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7183                }
7184            }
7185
7186            next_offset += envelope_size;
7187            _next_ordinal_to_read += 1;
7188            if next_offset >= end_offset {
7189                return Ok(());
7190            }
7191
7192            // Decode unknown envelopes for gaps in ordinals.
7193            while _next_ordinal_to_read < 2 {
7194                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7195                _next_ordinal_to_read += 1;
7196                next_offset += envelope_size;
7197            }
7198
7199            let next_out_of_line = decoder.next_out_of_line();
7200            let handles_before = decoder.remaining_handles();
7201            if let Some((inlined, num_bytes, num_handles)) =
7202                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7203            {
7204                let member_inline_size =
7205                    <IpVersions as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7206                if inlined != (member_inline_size <= 4) {
7207                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7208                }
7209                let inner_offset;
7210                let mut inner_depth = depth.clone();
7211                if inlined {
7212                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7213                    inner_offset = next_offset;
7214                } else {
7215                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7216                    inner_depth.increment()?;
7217                }
7218                let val_ref =
7219                    self.ip_versions.get_or_insert_with(|| fidl::new_empty!(IpVersions, D));
7220                fidl::decode!(IpVersions, D, val_ref, decoder, inner_offset, inner_depth)?;
7221                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7222                {
7223                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7224                }
7225                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7226                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7227                }
7228            }
7229
7230            next_offset += envelope_size;
7231            _next_ordinal_to_read += 1;
7232            if next_offset >= end_offset {
7233                return Ok(());
7234            }
7235
7236            // Decode unknown envelopes for gaps in ordinals.
7237            while _next_ordinal_to_read < 3 {
7238                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7239                _next_ordinal_to_read += 1;
7240                next_offset += envelope_size;
7241            }
7242
7243            let next_out_of_line = decoder.next_out_of_line();
7244            let handles_before = decoder.remaining_handles();
7245            if let Some((inlined, num_bytes, num_handles)) =
7246                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7247            {
7248                let member_inline_size =
7249                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7250                if inlined != (member_inline_size <= 4) {
7251                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7252                }
7253                let inner_offset;
7254                let mut inner_depth = depth.clone();
7255                if inlined {
7256                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7257                    inner_offset = next_offset;
7258                } else {
7259                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7260                    inner_depth.increment()?;
7261                }
7262                let val_ref = self.exclude_local.get_or_insert_with(|| fidl::new_empty!(bool, D));
7263                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
7264                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7265                {
7266                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7267                }
7268                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7269                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7270                }
7271            }
7272
7273            next_offset += envelope_size;
7274            _next_ordinal_to_read += 1;
7275            if next_offset >= end_offset {
7276                return Ok(());
7277            }
7278
7279            // Decode unknown envelopes for gaps in ordinals.
7280            while _next_ordinal_to_read < 4 {
7281                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7282                _next_ordinal_to_read += 1;
7283                next_offset += envelope_size;
7284            }
7285
7286            let next_out_of_line = decoder.next_out_of_line();
7287            let handles_before = decoder.remaining_handles();
7288            if let Some((inlined, num_bytes, num_handles)) =
7289                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7290            {
7291                let member_inline_size =
7292                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7293                if inlined != (member_inline_size <= 4) {
7294                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7295                }
7296                let inner_offset;
7297                let mut inner_depth = depth.clone();
7298                if inlined {
7299                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7300                    inner_offset = next_offset;
7301                } else {
7302                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7303                    inner_depth.increment()?;
7304                }
7305                let val_ref =
7306                    self.exclude_local_proxies.get_or_insert_with(|| fidl::new_empty!(bool, D));
7307                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
7308                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7309                {
7310                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7311                }
7312                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7313                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7314                }
7315            }
7316
7317            next_offset += envelope_size;
7318
7319            // Decode the remaining unknown envelopes.
7320            while next_offset < end_offset {
7321                _next_ordinal_to_read += 1;
7322                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7323                next_offset += envelope_size;
7324            }
7325
7326            Ok(())
7327        }
7328    }
7329}