Skip to main content

fidl_fuchsia_diagnostics__common/
fidl_fuchsia_diagnostics__common.rs

1// WARNING: This file is machine generated by fidlgen.
2
3#![warn(clippy::all)]
4#![allow(unused_parens, unused_mut, unused_imports, nonstandard_style)]
5
6use bitflags::bitflags;
7use fidl::encoding::{MessageBufFor, ProxyChannelBox, ResourceDialect};
8use futures::future::{self, MaybeDone, TryFutureExt};
9use zx_status;
10
11pub const COMPONENT_URL_ARG_NAME: &str = "$__url";
12
13/// The size 64 was chosen because entries in batches are handles to
14/// VMOs and there is a limit of 64 handles per fidl message.
15pub const MAXIMUM_ENTRIES_PER_BATCH: u16 = 64;
16
17///  The size bound of 1024 is a reasonably low size restriction that meets most
18///  canonical selectors we've ecountered.
19pub const MAXIMUM_RAW_SELECTOR_LENGTH: u16 = 1024;
20
21pub const MAX_DATA_HIERARCHY_DEPTH: u16 = 100;
22
23/// Max number of LogInterestSelectors that can be specified via a listener.
24pub const MAX_LOG_SELECTORS: u8 = 64;
25
26pub const MAX_MONIKER_SEGMENTS: u16 = 25;
27
28/// The maximum number of parameters that can be sent in one `Set` call.
29pub const MAX_SAMPLE_PARAMETERS_PER_SET: u64 = 100;
30
31pub const MAX_STRING_SELECTOR_LENGTH: u16 = 1024;
32
33pub const MONIKER_ARG_NAME: &str = "$__moniker";
34
35pub const ROLLED_OUT_ARG_NAME: &str = "$__rolled_out";
36
37/// ConfigurationError indicates a bad setting in `Sample::Set`. This value
38/// is returned before the first sample is taken.
39#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
40pub enum ConfigurationError {
41    /// This indicates that when calculating the sample period, it was less than
42    /// `MINIMUM_SAMPLE_PERIOD_SECONDS`.
43    SamplePeriodTooSmall,
44    /// This indicates that there was an invalid setting in `SampleParameters`.
45    /// Check Archivist's logs for more information.
46    SampleParametersInvalid,
47    /// Indicates that an invalid selector was sent. Check Archivist's logs for more
48    /// information.
49    InvalidSelectors,
50    #[doc(hidden)]
51    __SourceBreaking { unknown_ordinal: u32 },
52}
53
54/// Pattern that matches an unknown `ConfigurationError` member.
55#[macro_export]
56macro_rules! ConfigurationErrorUnknown {
57    () => {
58        _
59    };
60}
61
62impl ConfigurationError {
63    #[inline]
64    pub fn from_primitive(prim: u32) -> Option<Self> {
65        match prim {
66            1 => Some(Self::SamplePeriodTooSmall),
67            2 => Some(Self::SampleParametersInvalid),
68            3 => Some(Self::InvalidSelectors),
69            _ => None,
70        }
71    }
72
73    #[inline]
74    pub fn from_primitive_allow_unknown(prim: u32) -> Self {
75        match prim {
76            1 => Self::SamplePeriodTooSmall,
77            2 => Self::SampleParametersInvalid,
78            3 => Self::InvalidSelectors,
79            unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
80        }
81    }
82
83    #[inline]
84    pub fn unknown() -> Self {
85        Self::__SourceBreaking { unknown_ordinal: 0xffffffff }
86    }
87
88    #[inline]
89    pub const fn into_primitive(self) -> u32 {
90        match self {
91            Self::SamplePeriodTooSmall => 1,
92            Self::SampleParametersInvalid => 2,
93            Self::InvalidSelectors => 3,
94            Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
95        }
96    }
97
98    #[inline]
99    pub fn is_unknown(&self) -> bool {
100        match self {
101            Self::__SourceBreaking { unknown_ordinal: _ } => true,
102            _ => false,
103        }
104    }
105}
106
107#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
108#[repr(u8)]
109pub enum DataType {
110    /// Complete inspect hierarchies on the system.
111    Inspect = 1,
112    /// Log streams on the system.
113    Logs = 3,
114}
115
116impl DataType {
117    #[inline]
118    pub fn from_primitive(prim: u8) -> Option<Self> {
119        match prim {
120            1 => Some(Self::Inspect),
121            3 => Some(Self::Logs),
122            _ => None,
123        }
124    }
125
126    #[inline]
127    pub const fn into_primitive(self) -> u8 {
128        self as u8
129    }
130}
131
132/// Enum used to specify the output format for
133/// Reader results.
134#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
135#[repr(u32)]
136pub enum Format {
137    /// Dump read results per the Diagnostics Json
138    /// Schema specifications.
139    Json = 1,
140    /// Dump read results per the Iquery text specifications.
141    Text = 2,
142    /// Dump read results per the Diagnostics CBOR
143    /// Schema specifications.
144    Cbor = 3,
145    /// Dump read results per the Diagnostics FXT
146    /// Schema specifications. This is only supported
147    /// for logs.
148    Fxt = 4,
149}
150
151impl Format {
152    #[inline]
153    pub fn from_primitive(prim: u32) -> Option<Self> {
154        match prim {
155            1 => Some(Self::Json),
156            2 => Some(Self::Text),
157            3 => Some(Self::Cbor),
158            4 => Some(Self::Fxt),
159            _ => None,
160        }
161    }
162
163    #[inline]
164    pub const fn into_primitive(self) -> u32 {
165        self as u32
166    }
167}
168
169/// Enum describing the potential failure states of the streaming protocol when serving results
170/// to the client over the result iterator.
171#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
172#[repr(u32)]
173pub enum ReaderError {
174    Io = 1,
175}
176
177impl ReaderError {
178    #[inline]
179    pub fn from_primitive(prim: u32) -> Option<Self> {
180        match prim {
181            1 => Some(Self::Io),
182            _ => None,
183        }
184    }
185
186    #[inline]
187    pub const fn into_primitive(self) -> u32 {
188        self as u32
189    }
190}
191
192/// `RuntimeError` indicates errors that manifest after the Sample server has
193/// begun periodically sampling data. Clients can ignore these errors, though
194/// they could potentially indicate that no `SampleReady` request will ever arrive,
195/// or that the batch iterator might behave in unexpected ways, such as hanging.
196#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
197pub enum RuntimeError {
198    /// There was some error when starting a batch iterator server.
199    /// Check Archivist's logs for more information.
200    BatchIteratorFailed,
201    #[doc(hidden)]
202    __SourceBreaking { unknown_ordinal: u32 },
203}
204
205/// Pattern that matches an unknown `RuntimeError` member.
206#[macro_export]
207macro_rules! RuntimeErrorUnknown {
208    () => {
209        _
210    };
211}
212
213impl RuntimeError {
214    #[inline]
215    pub fn from_primitive(prim: u32) -> Option<Self> {
216        match prim {
217            1 => Some(Self::BatchIteratorFailed),
218            _ => None,
219        }
220    }
221
222    #[inline]
223    pub fn from_primitive_allow_unknown(prim: u32) -> Self {
224        match prim {
225            1 => Self::BatchIteratorFailed,
226            unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
227        }
228    }
229
230    #[inline]
231    pub fn unknown() -> Self {
232        Self::__SourceBreaking { unknown_ordinal: 0xffffffff }
233    }
234
235    #[inline]
236    pub const fn into_primitive(self) -> u32 {
237        match self {
238            Self::BatchIteratorFailed => 1,
239            Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
240        }
241    }
242
243    #[inline]
244    pub fn is_unknown(&self) -> bool {
245        match self {
246            Self::__SourceBreaking { unknown_ordinal: _ } => true,
247            _ => false,
248        }
249    }
250}
251
252/// `SampleStrategy` instructs Archivist on the circumstances under which you
253/// want to receive data for the given `SampleDatum`.
254#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
255pub enum SampleStrategy {
256    /// `ON_DIFF` causes the server to keep a cache of previous values.
257    /// At each sample period, it compares the new value to the old one
258    /// and only alerts if there is a change.
259    OnDiff,
260    /// `ALWAYS` alerts at each sample period it finds data, whether it
261    /// has changed or not.
262    ///
263    /// Note: it does NOT alert if there is no data at all.
264    Always,
265    #[doc(hidden)]
266    __SourceBreaking { unknown_ordinal: u8 },
267}
268
269/// Pattern that matches an unknown `SampleStrategy` member.
270#[macro_export]
271macro_rules! SampleStrategyUnknown {
272    () => {
273        _
274    };
275}
276
277impl SampleStrategy {
278    #[inline]
279    pub fn from_primitive(prim: u8) -> Option<Self> {
280        match prim {
281            1 => Some(Self::OnDiff),
282            2 => Some(Self::Always),
283            _ => None,
284        }
285    }
286
287    #[inline]
288    pub fn from_primitive_allow_unknown(prim: u8) -> Self {
289        match prim {
290            1 => Self::OnDiff,
291            2 => Self::Always,
292            unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
293        }
294    }
295
296    #[inline]
297    pub fn unknown() -> Self {
298        Self::__SourceBreaking { unknown_ordinal: 0xff }
299    }
300
301    #[inline]
302    pub const fn into_primitive(self) -> u8 {
303        match self {
304            Self::OnDiff => 1,
305            Self::Always => 2,
306            Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
307        }
308    }
309
310    #[inline]
311    pub fn is_unknown(&self) -> bool {
312        match self {
313            Self::__SourceBreaking { unknown_ordinal: _ } => true,
314            _ => false,
315        }
316    }
317}
318
319/// Enum specifying the modes by which a user can connect to and stream diagnostics metrics.
320#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
321#[repr(u8)]
322pub enum StreamMode {
323    /// The stream will serve a snapshot of the diagnostics data at the time of
324    /// connection, then end.
325    Snapshot = 1,
326    /// The stream will serve a snapshot of the diagnostics data at the time of
327    /// connection, then subsequent calls to the stream will hang until
328    /// new diagnostics data is available.
329    SnapshotThenSubscribe = 2,
330    /// Calls to the stream will hang until new diagnostics data is available. Between calls to
331    /// the stream, newly arrived data is buffered.
332    Subscribe = 3,
333}
334
335impl StreamMode {
336    #[inline]
337    pub fn from_primitive(prim: u8) -> Option<Self> {
338        match prim {
339            1 => Some(Self::Snapshot),
340            2 => Some(Self::SnapshotThenSubscribe),
341            3 => Some(Self::Subscribe),
342            _ => None,
343        }
344    }
345
346    #[inline]
347    pub const fn into_primitive(self) -> u8 {
348        self as u8
349    }
350}
351
352#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
353pub struct All;
354
355impl fidl::Persistable for All {}
356
357#[derive(Clone, Debug, PartialEq)]
358pub struct LogInterestSelector {
359    /// Matches the components for which the interest will be requested.
360    pub selector: ComponentSelector,
361    /// The interest level that will be sent to components matching the selector.
362    pub interest: fidl_fuchsia_diagnostics_types__common::Interest,
363}
364
365impl fidl::Persistable for LogInterestSelector {}
366
367/// A selector defining a set of nodes to match, and on those matched nodes a set of named
368/// properties to match.
369#[derive(Clone, Debug, PartialEq)]
370pub struct PropertySelector {
371    /// A vector of StringSelectors which serve as a pattern matcher
372    ///   for paths through a hierarchy of named nodes. Each entry in the vector
373    ///   is a selector for a single named node in a data hierarchy. The vector
374    ///   of selectors for named nodes, then, defines a selector on paths through the
375    ///   data hierarchy.
376    ///
377    /// Node paths support wildcarding, which will glob a single level of a
378    /// node hierarchy. eg:
379    ///    root/a/b/*/d
380    /// will match all nodes named d which are below some child of node b.
381    ///    root/a/b/c*
382    /// will match all nodes below b which start with the character "c".
383    pub node_path: Vec<StringSelector>,
384    /// A StringSelector which serves as a pattern matcher for
385    ///   string-named properties on a node in a data hierarchy.
386    ///
387    /// target_properties supports wildcarding, which will match against all properties
388    /// on any node matched by node_path.
389    pub target_properties: StringSelector,
390}
391
392impl fidl::Persistable for PropertySelector {}
393
394/// A selector defining a set of nodes to match, for which the entire subtree including
395/// those nodes are selected.
396#[derive(Clone, Debug, PartialEq)]
397pub struct SubtreeSelector {
398    /// A vector of StringSelectors which serve as a pattern matcher
399    ///   for paths through a hierarchy of named nodes. Each entry in the vector
400    ///   is a selector for a single named node in a data hierarchy. The vector
401    ///   of selectors for named nodes, then, defines a selector on paths through the
402    ///   data hierarchy.
403    ///
404    /// Node paths support wildcarding, which will glob a single level of a
405    /// node hierarchy. eg:
406    ///    root/a/b/*/d
407    /// will match all nodes named d which are below some child of node b.
408    ///    root/a/b/c*
409    /// will match all nodes below b which start with the character "c".
410    pub node_path: Vec<StringSelector>,
411}
412
413impl fidl::Persistable for SubtreeSelector {}
414
415/// Specifies a pattern of component monikers which
416/// identify components being selected for.
417///
418/// Component selectors support wildcarding, which will glob a single "level" of a
419/// component moniker. eg:
420///    core/*/echo
421/// will match all echo instances running only in realms directly under core, but none
422/// nested further.
423///
424/// Component selectors also support a recursive wildcard, which will glob multiple
425/// "levels" of a component moniker. eg:
426///    core/**
427/// will match all component instances running under core/ and all descendants of it.
428/// Note that the wildcard does not select core itself. Clients that wish to choose a
429/// subtree including the root should pass two selectors, eg:
430///    core
431///    core/**
432/// The recursive wildcard is only allowed as the final segment of the selector.
433#[derive(Clone, Debug, Default, PartialEq)]
434pub struct ComponentSelector {
435    /// Vector encoding the a pattern for monikers of components being selected for.
436    /// These monikers are child-monikers relative to a "root" hierarchy that the archivist
437    /// is aware of.
438    ///
439    /// There must be at least one StringSelector provided, which
440    /// specifies the component names that are matched by
441    /// the current selector.
442    pub moniker_segments: Option<Vec<StringSelector>>,
443    #[doc(hidden)]
444    pub __source_breaking: fidl::marker::SourceBreaking,
445}
446
447impl fidl::Persistable for ComponentSelector {}
448
449#[derive(Clone, Debug, Default, PartialEq)]
450pub struct LogSettingsSetComponentInterestRequest {
451    /// List of selectors. Required.
452    pub selectors: Option<Vec<LogInterestSelector>>,
453    /// Whether or not to persist the setting change after disconnection.
454    /// Optional. Defaults to false.
455    pub persist: Option<bool>,
456    #[doc(hidden)]
457    pub __source_breaking: fidl::marker::SourceBreaking,
458}
459
460impl fidl::Persistable for LogSettingsSetComponentInterestRequest {}
461
462#[derive(Clone, Debug, Default, PartialEq)]
463pub struct LogStreamOptions {
464    /// What logs to stream through this socket.
465    pub mode: Option<StreamMode>,
466    /// Whether or not to include the moniker in the record arguments.
467    /// Default: false
468    pub include_moniker: Option<bool>,
469    /// Whether or not to include the component url in the record arguments.
470    /// Default: false
471    pub include_component_url: Option<bool>,
472    /// Whether or not to include the number of rolled out logs in the record
473    /// arguments.
474    /// Default: false
475    pub include_rolled_out: Option<bool>,
476    pub subscribe_to_manifest: Option<bool>,
477    #[doc(hidden)]
478    pub __source_breaking: fidl::marker::SourceBreaking,
479}
480
481impl fidl::Persistable for LogStreamOptions {}
482
483/// Parameters which configure a diagnostics stream's performance properties.
484#[derive(Clone, Debug, Default, PartialEq)]
485pub struct PerformanceConfiguration {
486    /// Maximum aggregate size of all formatted contents returned by
487    /// the batch iterator for a diagnostics stream. If this value is set for a stream
488    /// configured in subscribe mode, the stream will terminate when the max size has
489    /// been reached.
490    /// NOTE: OPTIONAL
491    pub max_aggregate_content_size_bytes: Option<u64>,
492    /// Configuration specifying max number of seconds to wait for a single
493    /// component to have its diagnostics data "pumped". This value can used
494    /// for testing or if you know the component you are interested is in under
495    /// heavy load.
496    /// If not provided, then PER_COMPONENT_ASYNC_TIMEOUT_SECONDS as defined in
497    /// https://fuchsia.googlesource.com/fuchsia/+/refs/heads/master/src/diagnostics/archivist/src/constants.rs
498    /// will be used.
499    /// NOTE: OPTIONAL
500    pub batch_retrieval_timeout_seconds: Option<i64>,
501    #[doc(hidden)]
502    pub __source_breaking: fidl::marker::SourceBreaking,
503}
504
505impl fidl::Persistable for PerformanceConfiguration {}
506
507#[derive(Clone, Debug, Default, PartialEq)]
508pub struct SampleDatum {
509    /// The selector to check.
510    pub selector: Option<SelectorArgument>,
511    /// The strategy by which the server decides to notify the client.
512    pub strategy: Option<SampleStrategy>,
513    /// The interval at which this datum should be sampled.
514    ///
515    /// Each `SampleDatum` has its own specified interval. It is preferred to send
516    /// as many selectors on one `Sample` connection as possible, to allow
517    /// Archivist to batch requests. However, Archivist will query at a period that
518    /// is the greatest common divisor of all intervals. So, balance the desire for
519    /// a small number of `Sample` connections with keeping the intervals compatible.
520    ///
521    /// Example: two data with intervals of 3 and 4 respectively would check for work
522    /// every second. Archivist won't actually sample if neither batch is ready, but
523    /// it will check.
524    ///
525    /// Example: two data with intervals of 10 and 5 respectively would only check for
526    /// work every 5 seconds.
527    ///
528    /// (In practice, the calculated sample period must be valid. See
529    /// MINIMUM_SAMPLE_PERIOD_SECONDS above.)
530    pub interval_secs: Option<i64>,
531    #[doc(hidden)]
532    pub __source_breaking: fidl::marker::SourceBreaking,
533}
534
535impl fidl::Persistable for SampleDatum {}
536
537/// The data for one Sample server.
538#[derive(Clone, Debug, Default, PartialEq)]
539pub struct SampleParameters {
540    /// The set of data to sample.
541    ///
542    /// These samples will be batched by the intervals in each SampleDatum.
543    /// You should use `MAX_SAMPLE_PARAMETERS_PER_SET` to paginate inputs; it should
544    /// generally be well-sized for most selectors.
545    pub data: Option<Vec<SampleDatum>>,
546    #[doc(hidden)]
547    pub __source_breaking: fidl::marker::SourceBreaking,
548}
549
550impl fidl::Persistable for SampleParameters {}
551
552/// Structured selector containing all required information for pattern-matching onto
553/// string-named properties owned by nodes in a data hierarchy, where data hierarchies belong
554/// to specific components.
555///
556/// These selectors are represented in text form as three segments, colon delimited,
557/// specifying:
558///         <component_moniker>:<node_selector>:<property_selector>
559/// Examples:
560///    Property selection:
561///         realm1/realm2/echo:root/active_users:user_count
562///
563///    Subtree selection:
564///         realm1/realm2/echo:root/active_users
565#[derive(Clone, Debug, Default, PartialEq)]
566pub struct Selector {
567    /// The selector defining a pattern of component monikers to match
568    /// against.
569    pub component_selector: Option<ComponentSelector>,
570    /// The selector defining data hierarchy properties to match against
571    /// within the data hierarchies owned by components matched by
572    /// `component_selector`.
573    pub tree_selector: Option<TreeSelector>,
574    /// A set of fuchsia.inspect.Tree names to filter with before applying
575    /// hierarchy/property selectors.
576    ///
577    /// Omitting a name-filter is equivalent to TreeNames::some(["root"]).
578    /// Note that "root" is the default tree name.
579    pub tree_names: Option<TreeNames>,
580    #[doc(hidden)]
581    pub __source_breaking: fidl::marker::SourceBreaking,
582}
583
584impl fidl::Persistable for Selector {}
585
586/// Parameters needed to configure a stream of diagnostics information.
587#[derive(Clone, Debug, Default, PartialEq)]
588pub struct StreamParameters {
589    /// A [fuchsia.diagnostics/DataType] that specifies the diagnostics data type
590    /// to stream to the client.
591    /// NOTE: REQUIRED
592    pub data_type: Option<DataType>,
593    /// A [fuchsia.diagnostics/StreamMode] that specifies how the
594    /// streaming server provides streamed results.
595    /// NOTE: REQUIRED
596    pub stream_mode: Option<StreamMode>,
597    /// A [fuchsia.diagnostics/Format] that specifies how to format the returned
598    /// diagnostics data.
599    /// NOTE: REQUIRED
600    pub format: Option<Format>,
601    /// Configuration specifying what results the client wants returned from their
602    /// connection. The client can request a specific subset of data using a vector
603    /// of provided selectors, or can specify that they want all available data.
604    /// NOTE: REQUIRED
605    pub client_selector_configuration: Option<ClientSelectorConfiguration>,
606    /// Configuration specifying max number of seconds to wait for a single
607    /// component to have its diagnostics data "pumped". This value can used
608    /// for testing or if you know the component you are interested is in under
609    /// heavy load.
610    /// If not provided, then PER_COMPONENT_ASYNC_TIMEOUT_SECONDS as defined in
611    /// https://fuchsia.googlesource.com/fuchsia/+/refs/heads/master/src/diagnostics/archivist/src/constants.rs
612    /// will be used.
613    /// NOTE: OPTIONAL
614    pub batch_retrieval_timeout_seconds: Option<i64>,
615    /// Parameters which configure a diagnostics stream's performance properties.
616    /// NOTE: OPTIONAL
617    pub performance_configuration: Option<PerformanceConfiguration>,
618    /// Indicates if the client wants to receive a stream of tag definitions
619    /// and log records referencing those tags. This is transitional and will
620    /// be removed in a future CL once this feature is stable.
621    /// TODO(b/315520045): Remove this.
622    /// NOTE: OPTIONAL
623    pub subscribe_to_manifest: Option<bool>,
624    #[doc(hidden)]
625    pub __source_breaking: fidl::marker::SourceBreaking,
626}
627
628impl fidl::Persistable for StreamParameters {}
629
630#[derive(Clone, Debug)]
631pub enum ClientSelectorConfiguration {
632    /// A vector of [fuchsia.diagnostics/SelectorArgument] which
633    /// provide additional filters to scope data streams with. An empty vector is considered
634    /// a misconfiguration and will result in an epitaph signaling incorrect parameters.
635    Selectors(Vec<SelectorArgument>),
636    /// select_all must be true if set, and specifies that the client wants to retrieve
637    /// all data that their connection is able to expose.
638    SelectAll(bool),
639    #[doc(hidden)]
640    __SourceBreaking { unknown_ordinal: u64 },
641}
642
643/// Pattern that matches an unknown `ClientSelectorConfiguration` member.
644#[macro_export]
645macro_rules! ClientSelectorConfigurationUnknown {
646    () => {
647        _
648    };
649}
650
651// Custom PartialEq so that unknown variants are not equal to themselves.
652impl PartialEq for ClientSelectorConfiguration {
653    fn eq(&self, other: &Self) -> bool {
654        match (self, other) {
655            (Self::Selectors(x), Self::Selectors(y)) => *x == *y,
656            (Self::SelectAll(x), Self::SelectAll(y)) => *x == *y,
657            _ => false,
658        }
659    }
660}
661
662impl ClientSelectorConfiguration {
663    #[inline]
664    pub fn ordinal(&self) -> u64 {
665        match *self {
666            Self::Selectors(_) => 1,
667            Self::SelectAll(_) => 2,
668            Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
669        }
670    }
671
672    #[inline]
673    pub fn unknown_variant_for_testing() -> Self {
674        Self::__SourceBreaking { unknown_ordinal: 0 }
675    }
676
677    #[inline]
678    pub fn is_unknown(&self) -> bool {
679        match self {
680            Self::__SourceBreaking { .. } => true,
681            _ => false,
682        }
683    }
684}
685
686impl fidl::Persistable for ClientSelectorConfiguration {}
687
688/// Argument used for Archive selectors, can be either the pre-parsed
689/// fidl struct or string representation.
690#[derive(Clone, Debug)]
691pub enum SelectorArgument {
692    /// A Selector defining a pattern-matcher which selects for components within a hierarchy
693    /// and properties in a data hierarchy namespaced by component.
694    StructuredSelector(Selector),
695    /// A raw string representing a [fuchsia.diagnostics/Selector].
696    /// The Selector defines a pattern-matcher which selects for components within a hierarchy
697    /// and properties in a data hierarchy namespaced by component.
698    /// NOTE: All StringSelectors parsed from the raw_selector will be interpreted in
699    ///       string_pattern mode, giving significance to special characters.
700    /// See https://fuchsia.dev/fuchsia-src/reference/diagnostics/selectors for more information
701    RawSelector(String),
702    #[doc(hidden)]
703    __SourceBreaking { unknown_ordinal: u64 },
704}
705
706/// Pattern that matches an unknown `SelectorArgument` member.
707#[macro_export]
708macro_rules! SelectorArgumentUnknown {
709    () => {
710        _
711    };
712}
713
714// Custom PartialEq so that unknown variants are not equal to themselves.
715impl PartialEq for SelectorArgument {
716    fn eq(&self, other: &Self) -> bool {
717        match (self, other) {
718            (Self::StructuredSelector(x), Self::StructuredSelector(y)) => *x == *y,
719            (Self::RawSelector(x), Self::RawSelector(y)) => *x == *y,
720            _ => false,
721        }
722    }
723}
724
725impl SelectorArgument {
726    #[inline]
727    pub fn ordinal(&self) -> u64 {
728        match *self {
729            Self::StructuredSelector(_) => 1,
730            Self::RawSelector(_) => 2,
731            Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
732        }
733    }
734
735    #[inline]
736    pub fn unknown_variant_for_testing() -> Self {
737        Self::__SourceBreaking { unknown_ordinal: 0 }
738    }
739
740    #[inline]
741    pub fn is_unknown(&self) -> bool {
742        match self {
743            Self::__SourceBreaking { .. } => true,
744            _ => false,
745        }
746    }
747}
748
749impl fidl::Persistable for SelectorArgument {}
750
751/// StringSelector is an union defining different ways to describe a pattern to match
752/// strings against.
753#[derive(Clone, Debug)]
754pub enum StringSelector {
755    ///   This is a provided string that defines a pattern to
756    ///   match against. The parser treats asterisks (*), colons (:) and backslashes
757    ///   (\) as special characters.
758    ///
759    ///   If you wish to match against literal asterisks (*), they must be escaped.
760    ///   If you wish to match against literal backslashes (\), they must be escaped.
761    ///   If you wish to match against literal colons (:), they must be escaped.
762    ///
763    ///   eg: abc will match any string with the exact name "abc".
764    ///   eg: a\* will match any string with the exact name "a*".
765    ///   eg: a\\* will match any that starts with exactly "a\".
766    ///   eg: a* will match any string that starts with "a".
767    ///   eg: a*b will match any string that starts with a and ends with b.
768    ///   eg: a*b*c will match any string that starts with a and ends with c, with `b`
769    ///       in the middle.
770    ///
771    ///   In addition, the "**" literal is treated as a special sequence that may match
772    ///   multiple levels in a component selector only. See |ComponentSelector| for
773    ///   details.
774    StringPattern(String),
775    ExactMatch(String),
776    #[doc(hidden)]
777    __SourceBreaking {
778        unknown_ordinal: u64,
779    },
780}
781
782/// Pattern that matches an unknown `StringSelector` member.
783#[macro_export]
784macro_rules! StringSelectorUnknown {
785    () => {
786        _
787    };
788}
789
790// Custom PartialEq so that unknown variants are not equal to themselves.
791impl PartialEq for StringSelector {
792    fn eq(&self, other: &Self) -> bool {
793        match (self, other) {
794            (Self::StringPattern(x), Self::StringPattern(y)) => *x == *y,
795            (Self::ExactMatch(x), Self::ExactMatch(y)) => *x == *y,
796            _ => false,
797        }
798    }
799}
800
801impl StringSelector {
802    #[inline]
803    pub fn ordinal(&self) -> u64 {
804        match *self {
805            Self::StringPattern(_) => 1,
806            Self::ExactMatch(_) => 2,
807            Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
808        }
809    }
810
811    #[inline]
812    pub fn unknown_variant_for_testing() -> Self {
813        Self::__SourceBreaking { unknown_ordinal: 0 }
814    }
815
816    #[inline]
817    pub fn is_unknown(&self) -> bool {
818        match self {
819            Self::__SourceBreaking { .. } => true,
820            _ => false,
821        }
822    }
823}
824
825impl fidl::Persistable for StringSelector {}
826
827/// TreeNames are the set of names of fuchsia.inspect.Trees for a component that
828/// were parsed out of a selector. The hierarchy and property selector portions
829/// will only be applied to trees that match this set.
830#[derive(Clone, Debug)]
831pub enum TreeNames {
832    /// A specified subset of tree names.
833    Some(Vec<String>),
834    /// All of the available trees. Equivalent to listing all of the names of
835    /// trees.
836    All(All),
837    #[doc(hidden)]
838    __SourceBreaking { unknown_ordinal: u64 },
839}
840
841/// Pattern that matches an unknown `TreeNames` member.
842#[macro_export]
843macro_rules! TreeNamesUnknown {
844    () => {
845        _
846    };
847}
848
849// Custom PartialEq so that unknown variants are not equal to themselves.
850impl PartialEq for TreeNames {
851    fn eq(&self, other: &Self) -> bool {
852        match (self, other) {
853            (Self::Some(x), Self::Some(y)) => *x == *y,
854            (Self::All(x), Self::All(y)) => *x == *y,
855            _ => false,
856        }
857    }
858}
859
860impl TreeNames {
861    #[inline]
862    pub fn ordinal(&self) -> u64 {
863        match *self {
864            Self::Some(_) => 1,
865            Self::All(_) => 2,
866            Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
867        }
868    }
869
870    #[inline]
871    pub fn unknown_variant_for_testing() -> Self {
872        Self::__SourceBreaking { unknown_ordinal: 0 }
873    }
874
875    #[inline]
876    pub fn is_unknown(&self) -> bool {
877        match self {
878            Self::__SourceBreaking { .. } => true,
879            _ => false,
880        }
881    }
882}
883
884impl fidl::Persistable for TreeNames {}
885
886/// TreeSelector represents a selection request on a hierarchy of named nodes, with
887/// named properties on those nodes.
888#[derive(Clone, Debug)]
889pub enum TreeSelector {
890    /// A selector defining a set of nodes to match, for which the entire subtree including
891    /// those nodes are selected.
892    SubtreeSelector(SubtreeSelector),
893    /// A selector defining a set of nodes to match, and on those matched nodes a set of named
894    /// propperties to match.
895    PropertySelector(PropertySelector),
896    #[doc(hidden)]
897    __SourceBreaking { unknown_ordinal: u64 },
898}
899
900/// Pattern that matches an unknown `TreeSelector` member.
901#[macro_export]
902macro_rules! TreeSelectorUnknown {
903    () => {
904        _
905    };
906}
907
908// Custom PartialEq so that unknown variants are not equal to themselves.
909impl PartialEq for TreeSelector {
910    fn eq(&self, other: &Self) -> bool {
911        match (self, other) {
912            (Self::SubtreeSelector(x), Self::SubtreeSelector(y)) => *x == *y,
913            (Self::PropertySelector(x), Self::PropertySelector(y)) => *x == *y,
914            _ => false,
915        }
916    }
917}
918
919impl TreeSelector {
920    #[inline]
921    pub fn ordinal(&self) -> u64 {
922        match *self {
923            Self::SubtreeSelector(_) => 1,
924            Self::PropertySelector(_) => 2,
925            Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
926        }
927    }
928
929    #[inline]
930    pub fn unknown_variant_for_testing() -> Self {
931        Self::__SourceBreaking { unknown_ordinal: 0 }
932    }
933
934    #[inline]
935    pub fn is_unknown(&self) -> bool {
936        match self {
937            Self::__SourceBreaking { .. } => true,
938            _ => false,
939        }
940    }
941}
942
943impl fidl::Persistable for TreeSelector {}
944
945pub mod archive_accessor_ordinals {
946    pub const STREAM_DIAGNOSTICS: u64 = 0x20c73e2ecd653c3e;
947    pub const WAIT_FOR_READY: u64 = 0x122963198011bd24;
948}
949
950pub mod batch_iterator_ordinals {
951    pub const GET_NEXT: u64 = 0x781986486c6254a5;
952    pub const WAIT_FOR_READY: u64 = 0x70598ee271597603;
953}
954
955pub mod log_flusher_ordinals {
956    pub const WAIT_UNTIL_FLUSHED: u64 = 0x7dc4892e46748b5b;
957}
958
959pub mod log_settings_ordinals {
960    pub const SET_COMPONENT_INTEREST: u64 = 0x35f7004d2367f6c1;
961}
962
963pub mod log_stream_ordinals {
964    pub const CONNECT: u64 = 0x745eb34f10d51a88;
965}
966
967pub mod sample_ordinals {
968    pub const SET: u64 = 0x421a79bdbf45418e;
969    pub const COMMIT: u64 = 0x25a3bc5f26787e9b;
970}
971
972pub mod sample_sink_ordinals {
973    pub const ON_SAMPLE_READIED: u64 = 0x39096d97ed03335f;
974    pub const ON_NOW_OR_NEVER: u64 = 0x3dc94ca1e1290894;
975}
976
977mod internal {
978    use super::*;
979    unsafe impl fidl::encoding::TypeMarker for ConfigurationError {
980        type Owned = Self;
981
982        #[inline(always)]
983        fn inline_align(_context: fidl::encoding::Context) -> usize {
984            std::mem::align_of::<u32>()
985        }
986
987        #[inline(always)]
988        fn inline_size(_context: fidl::encoding::Context) -> usize {
989            std::mem::size_of::<u32>()
990        }
991
992        #[inline(always)]
993        fn encode_is_copy() -> bool {
994            false
995        }
996
997        #[inline(always)]
998        fn decode_is_copy() -> bool {
999            false
1000        }
1001    }
1002
1003    impl fidl::encoding::ValueTypeMarker for ConfigurationError {
1004        type Borrowed<'a> = Self;
1005        #[inline(always)]
1006        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1007            *value
1008        }
1009    }
1010
1011    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
1012        for ConfigurationError
1013    {
1014        #[inline]
1015        unsafe fn encode(
1016            self,
1017            encoder: &mut fidl::encoding::Encoder<'_, D>,
1018            offset: usize,
1019            _depth: fidl::encoding::Depth,
1020        ) -> fidl::Result<()> {
1021            encoder.debug_check_bounds::<Self>(offset);
1022            encoder.write_num(self.into_primitive(), offset);
1023            Ok(())
1024        }
1025    }
1026
1027    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ConfigurationError {
1028        #[inline(always)]
1029        fn new_empty() -> Self {
1030            Self::unknown()
1031        }
1032
1033        #[inline]
1034        unsafe fn decode(
1035            &mut self,
1036            decoder: &mut fidl::encoding::Decoder<'_, D>,
1037            offset: usize,
1038            _depth: fidl::encoding::Depth,
1039        ) -> fidl::Result<()> {
1040            decoder.debug_check_bounds::<Self>(offset);
1041            let prim = decoder.read_num::<u32>(offset);
1042
1043            *self = Self::from_primitive_allow_unknown(prim);
1044            Ok(())
1045        }
1046    }
1047    unsafe impl fidl::encoding::TypeMarker for DataType {
1048        type Owned = Self;
1049
1050        #[inline(always)]
1051        fn inline_align(_context: fidl::encoding::Context) -> usize {
1052            std::mem::align_of::<u8>()
1053        }
1054
1055        #[inline(always)]
1056        fn inline_size(_context: fidl::encoding::Context) -> usize {
1057            std::mem::size_of::<u8>()
1058        }
1059
1060        #[inline(always)]
1061        fn encode_is_copy() -> bool {
1062            true
1063        }
1064
1065        #[inline(always)]
1066        fn decode_is_copy() -> bool {
1067            false
1068        }
1069    }
1070
1071    impl fidl::encoding::ValueTypeMarker for DataType {
1072        type Borrowed<'a> = Self;
1073        #[inline(always)]
1074        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1075            *value
1076        }
1077    }
1078
1079    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for DataType {
1080        #[inline]
1081        unsafe fn encode(
1082            self,
1083            encoder: &mut fidl::encoding::Encoder<'_, D>,
1084            offset: usize,
1085            _depth: fidl::encoding::Depth,
1086        ) -> fidl::Result<()> {
1087            encoder.debug_check_bounds::<Self>(offset);
1088            encoder.write_num(self.into_primitive(), offset);
1089            Ok(())
1090        }
1091    }
1092
1093    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for DataType {
1094        #[inline(always)]
1095        fn new_empty() -> Self {
1096            Self::Inspect
1097        }
1098
1099        #[inline]
1100        unsafe fn decode(
1101            &mut self,
1102            decoder: &mut fidl::encoding::Decoder<'_, D>,
1103            offset: usize,
1104            _depth: fidl::encoding::Depth,
1105        ) -> fidl::Result<()> {
1106            decoder.debug_check_bounds::<Self>(offset);
1107            let prim = decoder.read_num::<u8>(offset);
1108
1109            *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
1110            Ok(())
1111        }
1112    }
1113    unsafe impl fidl::encoding::TypeMarker for Format {
1114        type Owned = Self;
1115
1116        #[inline(always)]
1117        fn inline_align(_context: fidl::encoding::Context) -> usize {
1118            std::mem::align_of::<u32>()
1119        }
1120
1121        #[inline(always)]
1122        fn inline_size(_context: fidl::encoding::Context) -> usize {
1123            std::mem::size_of::<u32>()
1124        }
1125
1126        #[inline(always)]
1127        fn encode_is_copy() -> bool {
1128            true
1129        }
1130
1131        #[inline(always)]
1132        fn decode_is_copy() -> bool {
1133            false
1134        }
1135    }
1136
1137    impl fidl::encoding::ValueTypeMarker for Format {
1138        type Borrowed<'a> = Self;
1139        #[inline(always)]
1140        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1141            *value
1142        }
1143    }
1144
1145    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for Format {
1146        #[inline]
1147        unsafe fn encode(
1148            self,
1149            encoder: &mut fidl::encoding::Encoder<'_, D>,
1150            offset: usize,
1151            _depth: fidl::encoding::Depth,
1152        ) -> fidl::Result<()> {
1153            encoder.debug_check_bounds::<Self>(offset);
1154            encoder.write_num(self.into_primitive(), offset);
1155            Ok(())
1156        }
1157    }
1158
1159    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Format {
1160        #[inline(always)]
1161        fn new_empty() -> Self {
1162            Self::Json
1163        }
1164
1165        #[inline]
1166        unsafe fn decode(
1167            &mut self,
1168            decoder: &mut fidl::encoding::Decoder<'_, D>,
1169            offset: usize,
1170            _depth: fidl::encoding::Depth,
1171        ) -> fidl::Result<()> {
1172            decoder.debug_check_bounds::<Self>(offset);
1173            let prim = decoder.read_num::<u32>(offset);
1174
1175            *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
1176            Ok(())
1177        }
1178    }
1179    unsafe impl fidl::encoding::TypeMarker for ReaderError {
1180        type Owned = Self;
1181
1182        #[inline(always)]
1183        fn inline_align(_context: fidl::encoding::Context) -> usize {
1184            std::mem::align_of::<u32>()
1185        }
1186
1187        #[inline(always)]
1188        fn inline_size(_context: fidl::encoding::Context) -> usize {
1189            std::mem::size_of::<u32>()
1190        }
1191
1192        #[inline(always)]
1193        fn encode_is_copy() -> bool {
1194            true
1195        }
1196
1197        #[inline(always)]
1198        fn decode_is_copy() -> bool {
1199            false
1200        }
1201    }
1202
1203    impl fidl::encoding::ValueTypeMarker for ReaderError {
1204        type Borrowed<'a> = Self;
1205        #[inline(always)]
1206        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1207            *value
1208        }
1209    }
1210
1211    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for ReaderError {
1212        #[inline]
1213        unsafe fn encode(
1214            self,
1215            encoder: &mut fidl::encoding::Encoder<'_, D>,
1216            offset: usize,
1217            _depth: fidl::encoding::Depth,
1218        ) -> fidl::Result<()> {
1219            encoder.debug_check_bounds::<Self>(offset);
1220            encoder.write_num(self.into_primitive(), offset);
1221            Ok(())
1222        }
1223    }
1224
1225    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ReaderError {
1226        #[inline(always)]
1227        fn new_empty() -> Self {
1228            Self::Io
1229        }
1230
1231        #[inline]
1232        unsafe fn decode(
1233            &mut self,
1234            decoder: &mut fidl::encoding::Decoder<'_, D>,
1235            offset: usize,
1236            _depth: fidl::encoding::Depth,
1237        ) -> fidl::Result<()> {
1238            decoder.debug_check_bounds::<Self>(offset);
1239            let prim = decoder.read_num::<u32>(offset);
1240
1241            *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
1242            Ok(())
1243        }
1244    }
1245    unsafe impl fidl::encoding::TypeMarker for RuntimeError {
1246        type Owned = Self;
1247
1248        #[inline(always)]
1249        fn inline_align(_context: fidl::encoding::Context) -> usize {
1250            std::mem::align_of::<u32>()
1251        }
1252
1253        #[inline(always)]
1254        fn inline_size(_context: fidl::encoding::Context) -> usize {
1255            std::mem::size_of::<u32>()
1256        }
1257
1258        #[inline(always)]
1259        fn encode_is_copy() -> bool {
1260            false
1261        }
1262
1263        #[inline(always)]
1264        fn decode_is_copy() -> bool {
1265            false
1266        }
1267    }
1268
1269    impl fidl::encoding::ValueTypeMarker for RuntimeError {
1270        type Borrowed<'a> = Self;
1271        #[inline(always)]
1272        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1273            *value
1274        }
1275    }
1276
1277    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for RuntimeError {
1278        #[inline]
1279        unsafe fn encode(
1280            self,
1281            encoder: &mut fidl::encoding::Encoder<'_, D>,
1282            offset: usize,
1283            _depth: fidl::encoding::Depth,
1284        ) -> fidl::Result<()> {
1285            encoder.debug_check_bounds::<Self>(offset);
1286            encoder.write_num(self.into_primitive(), offset);
1287            Ok(())
1288        }
1289    }
1290
1291    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for RuntimeError {
1292        #[inline(always)]
1293        fn new_empty() -> Self {
1294            Self::unknown()
1295        }
1296
1297        #[inline]
1298        unsafe fn decode(
1299            &mut self,
1300            decoder: &mut fidl::encoding::Decoder<'_, D>,
1301            offset: usize,
1302            _depth: fidl::encoding::Depth,
1303        ) -> fidl::Result<()> {
1304            decoder.debug_check_bounds::<Self>(offset);
1305            let prim = decoder.read_num::<u32>(offset);
1306
1307            *self = Self::from_primitive_allow_unknown(prim);
1308            Ok(())
1309        }
1310    }
1311    unsafe impl fidl::encoding::TypeMarker for SampleStrategy {
1312        type Owned = Self;
1313
1314        #[inline(always)]
1315        fn inline_align(_context: fidl::encoding::Context) -> usize {
1316            std::mem::align_of::<u8>()
1317        }
1318
1319        #[inline(always)]
1320        fn inline_size(_context: fidl::encoding::Context) -> usize {
1321            std::mem::size_of::<u8>()
1322        }
1323
1324        #[inline(always)]
1325        fn encode_is_copy() -> bool {
1326            false
1327        }
1328
1329        #[inline(always)]
1330        fn decode_is_copy() -> bool {
1331            false
1332        }
1333    }
1334
1335    impl fidl::encoding::ValueTypeMarker for SampleStrategy {
1336        type Borrowed<'a> = Self;
1337        #[inline(always)]
1338        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1339            *value
1340        }
1341    }
1342
1343    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for SampleStrategy {
1344        #[inline]
1345        unsafe fn encode(
1346            self,
1347            encoder: &mut fidl::encoding::Encoder<'_, D>,
1348            offset: usize,
1349            _depth: fidl::encoding::Depth,
1350        ) -> fidl::Result<()> {
1351            encoder.debug_check_bounds::<Self>(offset);
1352            encoder.write_num(self.into_primitive(), offset);
1353            Ok(())
1354        }
1355    }
1356
1357    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for SampleStrategy {
1358        #[inline(always)]
1359        fn new_empty() -> Self {
1360            Self::unknown()
1361        }
1362
1363        #[inline]
1364        unsafe fn decode(
1365            &mut self,
1366            decoder: &mut fidl::encoding::Decoder<'_, D>,
1367            offset: usize,
1368            _depth: fidl::encoding::Depth,
1369        ) -> fidl::Result<()> {
1370            decoder.debug_check_bounds::<Self>(offset);
1371            let prim = decoder.read_num::<u8>(offset);
1372
1373            *self = Self::from_primitive_allow_unknown(prim);
1374            Ok(())
1375        }
1376    }
1377    unsafe impl fidl::encoding::TypeMarker for StreamMode {
1378        type Owned = Self;
1379
1380        #[inline(always)]
1381        fn inline_align(_context: fidl::encoding::Context) -> usize {
1382            std::mem::align_of::<u8>()
1383        }
1384
1385        #[inline(always)]
1386        fn inline_size(_context: fidl::encoding::Context) -> usize {
1387            std::mem::size_of::<u8>()
1388        }
1389
1390        #[inline(always)]
1391        fn encode_is_copy() -> bool {
1392            true
1393        }
1394
1395        #[inline(always)]
1396        fn decode_is_copy() -> bool {
1397            false
1398        }
1399    }
1400
1401    impl fidl::encoding::ValueTypeMarker for StreamMode {
1402        type Borrowed<'a> = Self;
1403        #[inline(always)]
1404        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1405            *value
1406        }
1407    }
1408
1409    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for StreamMode {
1410        #[inline]
1411        unsafe fn encode(
1412            self,
1413            encoder: &mut fidl::encoding::Encoder<'_, D>,
1414            offset: usize,
1415            _depth: fidl::encoding::Depth,
1416        ) -> fidl::Result<()> {
1417            encoder.debug_check_bounds::<Self>(offset);
1418            encoder.write_num(self.into_primitive(), offset);
1419            Ok(())
1420        }
1421    }
1422
1423    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for StreamMode {
1424        #[inline(always)]
1425        fn new_empty() -> Self {
1426            Self::Snapshot
1427        }
1428
1429        #[inline]
1430        unsafe fn decode(
1431            &mut self,
1432            decoder: &mut fidl::encoding::Decoder<'_, D>,
1433            offset: usize,
1434            _depth: fidl::encoding::Depth,
1435        ) -> fidl::Result<()> {
1436            decoder.debug_check_bounds::<Self>(offset);
1437            let prim = decoder.read_num::<u8>(offset);
1438
1439            *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
1440            Ok(())
1441        }
1442    }
1443
1444    impl fidl::encoding::ValueTypeMarker for All {
1445        type Borrowed<'a> = &'a Self;
1446        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1447            value
1448        }
1449    }
1450
1451    unsafe impl fidl::encoding::TypeMarker for All {
1452        type Owned = Self;
1453
1454        #[inline(always)]
1455        fn inline_align(_context: fidl::encoding::Context) -> usize {
1456            1
1457        }
1458
1459        #[inline(always)]
1460        fn inline_size(_context: fidl::encoding::Context) -> usize {
1461            1
1462        }
1463    }
1464
1465    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<All, D> for &All {
1466        #[inline]
1467        unsafe fn encode(
1468            self,
1469            encoder: &mut fidl::encoding::Encoder<'_, D>,
1470            offset: usize,
1471            _depth: fidl::encoding::Depth,
1472        ) -> fidl::Result<()> {
1473            encoder.debug_check_bounds::<All>(offset);
1474            encoder.write_num(0u8, offset);
1475            Ok(())
1476        }
1477    }
1478
1479    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for All {
1480        #[inline(always)]
1481        fn new_empty() -> Self {
1482            Self
1483        }
1484
1485        #[inline]
1486        unsafe fn decode(
1487            &mut self,
1488            decoder: &mut fidl::encoding::Decoder<'_, D>,
1489            offset: usize,
1490            _depth: fidl::encoding::Depth,
1491        ) -> fidl::Result<()> {
1492            decoder.debug_check_bounds::<Self>(offset);
1493            match decoder.read_num::<u8>(offset) {
1494                0 => Ok(()),
1495                _ => Err(fidl::Error::Invalid),
1496            }
1497        }
1498    }
1499
1500    impl fidl::encoding::ValueTypeMarker for LogInterestSelector {
1501        type Borrowed<'a> = &'a Self;
1502        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1503            value
1504        }
1505    }
1506
1507    unsafe impl fidl::encoding::TypeMarker for LogInterestSelector {
1508        type Owned = Self;
1509
1510        #[inline(always)]
1511        fn inline_align(_context: fidl::encoding::Context) -> usize {
1512            8
1513        }
1514
1515        #[inline(always)]
1516        fn inline_size(_context: fidl::encoding::Context) -> usize {
1517            32
1518        }
1519    }
1520
1521    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<LogInterestSelector, D>
1522        for &LogInterestSelector
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::<LogInterestSelector>(offset);
1532            // Delegate to tuple encoding.
1533            fidl::encoding::Encode::<LogInterestSelector, D>::encode(
1534                (
1535                    <ComponentSelector as fidl::encoding::ValueTypeMarker>::borrow(&self.selector),
1536                    <fidl_fuchsia_diagnostics_types__common::Interest as fidl::encoding::ValueTypeMarker>::borrow(&self.interest),
1537                ),
1538                encoder, offset, _depth
1539            )
1540        }
1541    }
1542    unsafe impl<
1543        D: fidl::encoding::ResourceDialect,
1544        T0: fidl::encoding::Encode<ComponentSelector, D>,
1545        T1: fidl::encoding::Encode<fidl_fuchsia_diagnostics_types__common::Interest, D>,
1546    > fidl::encoding::Encode<LogInterestSelector, D> for (T0, T1)
1547    {
1548        #[inline]
1549        unsafe fn encode(
1550            self,
1551            encoder: &mut fidl::encoding::Encoder<'_, D>,
1552            offset: usize,
1553            depth: fidl::encoding::Depth,
1554        ) -> fidl::Result<()> {
1555            encoder.debug_check_bounds::<LogInterestSelector>(offset);
1556            // Zero out padding regions. There's no need to apply masks
1557            // because the unmasked parts will be overwritten by fields.
1558            // Write the fields.
1559            self.0.encode(encoder, offset + 0, depth)?;
1560            self.1.encode(encoder, offset + 16, depth)?;
1561            Ok(())
1562        }
1563    }
1564
1565    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for LogInterestSelector {
1566        #[inline(always)]
1567        fn new_empty() -> Self {
1568            Self {
1569                selector: fidl::new_empty!(ComponentSelector, D),
1570                interest: fidl::new_empty!(fidl_fuchsia_diagnostics_types__common::Interest, D),
1571            }
1572        }
1573
1574        #[inline]
1575        unsafe fn decode(
1576            &mut self,
1577            decoder: &mut fidl::encoding::Decoder<'_, D>,
1578            offset: usize,
1579            _depth: fidl::encoding::Depth,
1580        ) -> fidl::Result<()> {
1581            decoder.debug_check_bounds::<Self>(offset);
1582            // Verify that padding bytes are zero.
1583            fidl::decode!(ComponentSelector, D, &mut self.selector, decoder, offset + 0, _depth)?;
1584            fidl::decode!(
1585                fidl_fuchsia_diagnostics_types__common::Interest,
1586                D,
1587                &mut self.interest,
1588                decoder,
1589                offset + 16,
1590                _depth
1591            )?;
1592            Ok(())
1593        }
1594    }
1595
1596    impl fidl::encoding::ValueTypeMarker for PropertySelector {
1597        type Borrowed<'a> = &'a Self;
1598        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1599            value
1600        }
1601    }
1602
1603    unsafe impl fidl::encoding::TypeMarker for PropertySelector {
1604        type Owned = Self;
1605
1606        #[inline(always)]
1607        fn inline_align(_context: fidl::encoding::Context) -> usize {
1608            8
1609        }
1610
1611        #[inline(always)]
1612        fn inline_size(_context: fidl::encoding::Context) -> usize {
1613            32
1614        }
1615    }
1616
1617    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<PropertySelector, D>
1618        for &PropertySelector
1619    {
1620        #[inline]
1621        unsafe fn encode(
1622            self,
1623            encoder: &mut fidl::encoding::Encoder<'_, D>,
1624            offset: usize,
1625            _depth: fidl::encoding::Depth,
1626        ) -> fidl::Result<()> {
1627            encoder.debug_check_bounds::<PropertySelector>(offset);
1628            // Delegate to tuple encoding.
1629            fidl::encoding::Encode::<PropertySelector, D>::encode(
1630                (
1631                    <fidl::encoding::Vector<StringSelector, 100> as fidl::encoding::ValueTypeMarker>::borrow(&self.node_path),
1632                    <StringSelector as fidl::encoding::ValueTypeMarker>::borrow(&self.target_properties),
1633                ),
1634                encoder, offset, _depth
1635            )
1636        }
1637    }
1638    unsafe impl<
1639        D: fidl::encoding::ResourceDialect,
1640        T0: fidl::encoding::Encode<fidl::encoding::Vector<StringSelector, 100>, D>,
1641        T1: fidl::encoding::Encode<StringSelector, D>,
1642    > fidl::encoding::Encode<PropertySelector, D> for (T0, T1)
1643    {
1644        #[inline]
1645        unsafe fn encode(
1646            self,
1647            encoder: &mut fidl::encoding::Encoder<'_, D>,
1648            offset: usize,
1649            depth: fidl::encoding::Depth,
1650        ) -> fidl::Result<()> {
1651            encoder.debug_check_bounds::<PropertySelector>(offset);
1652            // Zero out padding regions. There's no need to apply masks
1653            // because the unmasked parts will be overwritten by fields.
1654            // Write the fields.
1655            self.0.encode(encoder, offset + 0, depth)?;
1656            self.1.encode(encoder, offset + 16, depth)?;
1657            Ok(())
1658        }
1659    }
1660
1661    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for PropertySelector {
1662        #[inline(always)]
1663        fn new_empty() -> Self {
1664            Self {
1665                node_path: fidl::new_empty!(fidl::encoding::Vector<StringSelector, 100>, D),
1666                target_properties: fidl::new_empty!(StringSelector, D),
1667            }
1668        }
1669
1670        #[inline]
1671        unsafe fn decode(
1672            &mut self,
1673            decoder: &mut fidl::encoding::Decoder<'_, D>,
1674            offset: usize,
1675            _depth: fidl::encoding::Depth,
1676        ) -> fidl::Result<()> {
1677            decoder.debug_check_bounds::<Self>(offset);
1678            // Verify that padding bytes are zero.
1679            fidl::decode!(fidl::encoding::Vector<StringSelector, 100>, D, &mut self.node_path, decoder, offset + 0, _depth)?;
1680            fidl::decode!(
1681                StringSelector,
1682                D,
1683                &mut self.target_properties,
1684                decoder,
1685                offset + 16,
1686                _depth
1687            )?;
1688            Ok(())
1689        }
1690    }
1691
1692    impl fidl::encoding::ValueTypeMarker for SubtreeSelector {
1693        type Borrowed<'a> = &'a Self;
1694        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1695            value
1696        }
1697    }
1698
1699    unsafe impl fidl::encoding::TypeMarker for SubtreeSelector {
1700        type Owned = Self;
1701
1702        #[inline(always)]
1703        fn inline_align(_context: fidl::encoding::Context) -> usize {
1704            8
1705        }
1706
1707        #[inline(always)]
1708        fn inline_size(_context: fidl::encoding::Context) -> usize {
1709            16
1710        }
1711    }
1712
1713    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<SubtreeSelector, D>
1714        for &SubtreeSelector
1715    {
1716        #[inline]
1717        unsafe fn encode(
1718            self,
1719            encoder: &mut fidl::encoding::Encoder<'_, D>,
1720            offset: usize,
1721            _depth: fidl::encoding::Depth,
1722        ) -> fidl::Result<()> {
1723            encoder.debug_check_bounds::<SubtreeSelector>(offset);
1724            // Delegate to tuple encoding.
1725            fidl::encoding::Encode::<SubtreeSelector, D>::encode(
1726                (
1727                    <fidl::encoding::Vector<StringSelector, 100> as fidl::encoding::ValueTypeMarker>::borrow(&self.node_path),
1728                ),
1729                encoder, offset, _depth
1730            )
1731        }
1732    }
1733    unsafe impl<
1734        D: fidl::encoding::ResourceDialect,
1735        T0: fidl::encoding::Encode<fidl::encoding::Vector<StringSelector, 100>, D>,
1736    > fidl::encoding::Encode<SubtreeSelector, D> for (T0,)
1737    {
1738        #[inline]
1739        unsafe fn encode(
1740            self,
1741            encoder: &mut fidl::encoding::Encoder<'_, D>,
1742            offset: usize,
1743            depth: fidl::encoding::Depth,
1744        ) -> fidl::Result<()> {
1745            encoder.debug_check_bounds::<SubtreeSelector>(offset);
1746            // Zero out padding regions. There's no need to apply masks
1747            // because the unmasked parts will be overwritten by fields.
1748            // Write the fields.
1749            self.0.encode(encoder, offset + 0, depth)?;
1750            Ok(())
1751        }
1752    }
1753
1754    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for SubtreeSelector {
1755        #[inline(always)]
1756        fn new_empty() -> Self {
1757            Self { node_path: fidl::new_empty!(fidl::encoding::Vector<StringSelector, 100>, D) }
1758        }
1759
1760        #[inline]
1761        unsafe fn decode(
1762            &mut self,
1763            decoder: &mut fidl::encoding::Decoder<'_, D>,
1764            offset: usize,
1765            _depth: fidl::encoding::Depth,
1766        ) -> fidl::Result<()> {
1767            decoder.debug_check_bounds::<Self>(offset);
1768            // Verify that padding bytes are zero.
1769            fidl::decode!(fidl::encoding::Vector<StringSelector, 100>, D, &mut self.node_path, decoder, offset + 0, _depth)?;
1770            Ok(())
1771        }
1772    }
1773
1774    impl ComponentSelector {
1775        #[inline(always)]
1776        fn max_ordinal_present(&self) -> u64 {
1777            if let Some(_) = self.moniker_segments {
1778                return 1;
1779            }
1780            0
1781        }
1782    }
1783
1784    impl fidl::encoding::ValueTypeMarker for ComponentSelector {
1785        type Borrowed<'a> = &'a Self;
1786        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1787            value
1788        }
1789    }
1790
1791    unsafe impl fidl::encoding::TypeMarker for ComponentSelector {
1792        type Owned = Self;
1793
1794        #[inline(always)]
1795        fn inline_align(_context: fidl::encoding::Context) -> usize {
1796            8
1797        }
1798
1799        #[inline(always)]
1800        fn inline_size(_context: fidl::encoding::Context) -> usize {
1801            16
1802        }
1803    }
1804
1805    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ComponentSelector, D>
1806        for &ComponentSelector
1807    {
1808        unsafe fn encode(
1809            self,
1810            encoder: &mut fidl::encoding::Encoder<'_, D>,
1811            offset: usize,
1812            mut depth: fidl::encoding::Depth,
1813        ) -> fidl::Result<()> {
1814            encoder.debug_check_bounds::<ComponentSelector>(offset);
1815            // Vector header
1816            let max_ordinal: u64 = self.max_ordinal_present();
1817            encoder.write_num(max_ordinal, offset);
1818            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
1819            // Calling encoder.out_of_line_offset(0) is not allowed.
1820            if max_ordinal == 0 {
1821                return Ok(());
1822            }
1823            depth.increment()?;
1824            let envelope_size = 8;
1825            let bytes_len = max_ordinal as usize * envelope_size;
1826            #[allow(unused_variables)]
1827            let offset = encoder.out_of_line_offset(bytes_len);
1828            let mut _prev_end_offset: usize = 0;
1829            if 1 > max_ordinal {
1830                return Ok(());
1831            }
1832
1833            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
1834            // are envelope_size bytes.
1835            let cur_offset: usize = (1 - 1) * envelope_size;
1836
1837            // Zero reserved fields.
1838            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1839
1840            // Safety:
1841            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
1842            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
1843            //   envelope_size bytes, there is always sufficient room.
1844            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<StringSelector, 25>, D>(
1845            self.moniker_segments.as_ref().map(<fidl::encoding::Vector<StringSelector, 25> as fidl::encoding::ValueTypeMarker>::borrow),
1846            encoder, offset + cur_offset, depth
1847        )?;
1848
1849            _prev_end_offset = cur_offset + envelope_size;
1850
1851            Ok(())
1852        }
1853    }
1854
1855    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ComponentSelector {
1856        #[inline(always)]
1857        fn new_empty() -> Self {
1858            Self::default()
1859        }
1860
1861        unsafe fn decode(
1862            &mut self,
1863            decoder: &mut fidl::encoding::Decoder<'_, D>,
1864            offset: usize,
1865            mut depth: fidl::encoding::Depth,
1866        ) -> fidl::Result<()> {
1867            decoder.debug_check_bounds::<Self>(offset);
1868            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
1869                None => return Err(fidl::Error::NotNullable),
1870                Some(len) => len,
1871            };
1872            // Calling decoder.out_of_line_offset(0) is not allowed.
1873            if len == 0 {
1874                return Ok(());
1875            };
1876            depth.increment()?;
1877            let envelope_size = 8;
1878            let bytes_len = len * envelope_size;
1879            let offset = decoder.out_of_line_offset(bytes_len)?;
1880            // Decode the envelope for each type.
1881            let mut _next_ordinal_to_read = 0;
1882            let mut next_offset = offset;
1883            let end_offset = offset + bytes_len;
1884            _next_ordinal_to_read += 1;
1885            if next_offset >= end_offset {
1886                return Ok(());
1887            }
1888
1889            // Decode unknown envelopes for gaps in ordinals.
1890            while _next_ordinal_to_read < 1 {
1891                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1892                _next_ordinal_to_read += 1;
1893                next_offset += envelope_size;
1894            }
1895
1896            let next_out_of_line = decoder.next_out_of_line();
1897            let handles_before = decoder.remaining_handles();
1898            if let Some((inlined, num_bytes, num_handles)) =
1899                fidl::encoding::decode_envelope_header(decoder, next_offset)?
1900            {
1901                let member_inline_size = <fidl::encoding::Vector<StringSelector, 25> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1902                if inlined != (member_inline_size <= 4) {
1903                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
1904                }
1905                let inner_offset;
1906                let mut inner_depth = depth.clone();
1907                if inlined {
1908                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1909                    inner_offset = next_offset;
1910                } else {
1911                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1912                    inner_depth.increment()?;
1913                }
1914                let val_ref = self.moniker_segments.get_or_insert_with(
1915                    || fidl::new_empty!(fidl::encoding::Vector<StringSelector, 25>, D),
1916                );
1917                fidl::decode!(fidl::encoding::Vector<StringSelector, 25>, D, val_ref, decoder, inner_offset, inner_depth)?;
1918                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1919                {
1920                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
1921                }
1922                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1923                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1924                }
1925            }
1926
1927            next_offset += envelope_size;
1928
1929            // Decode the remaining unknown envelopes.
1930            while next_offset < end_offset {
1931                _next_ordinal_to_read += 1;
1932                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1933                next_offset += envelope_size;
1934            }
1935
1936            Ok(())
1937        }
1938    }
1939
1940    impl LogSettingsSetComponentInterestRequest {
1941        #[inline(always)]
1942        fn max_ordinal_present(&self) -> u64 {
1943            if let Some(_) = self.persist {
1944                return 2;
1945            }
1946            if let Some(_) = self.selectors {
1947                return 1;
1948            }
1949            0
1950        }
1951    }
1952
1953    impl fidl::encoding::ValueTypeMarker for LogSettingsSetComponentInterestRequest {
1954        type Borrowed<'a> = &'a Self;
1955        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1956            value
1957        }
1958    }
1959
1960    unsafe impl fidl::encoding::TypeMarker for LogSettingsSetComponentInterestRequest {
1961        type Owned = Self;
1962
1963        #[inline(always)]
1964        fn inline_align(_context: fidl::encoding::Context) -> usize {
1965            8
1966        }
1967
1968        #[inline(always)]
1969        fn inline_size(_context: fidl::encoding::Context) -> usize {
1970            16
1971        }
1972    }
1973
1974    unsafe impl<D: fidl::encoding::ResourceDialect>
1975        fidl::encoding::Encode<LogSettingsSetComponentInterestRequest, D>
1976        for &LogSettingsSetComponentInterestRequest
1977    {
1978        unsafe fn encode(
1979            self,
1980            encoder: &mut fidl::encoding::Encoder<'_, D>,
1981            offset: usize,
1982            mut depth: fidl::encoding::Depth,
1983        ) -> fidl::Result<()> {
1984            encoder.debug_check_bounds::<LogSettingsSetComponentInterestRequest>(offset);
1985            // Vector header
1986            let max_ordinal: u64 = self.max_ordinal_present();
1987            encoder.write_num(max_ordinal, offset);
1988            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
1989            // Calling encoder.out_of_line_offset(0) is not allowed.
1990            if max_ordinal == 0 {
1991                return Ok(());
1992            }
1993            depth.increment()?;
1994            let envelope_size = 8;
1995            let bytes_len = max_ordinal as usize * envelope_size;
1996            #[allow(unused_variables)]
1997            let offset = encoder.out_of_line_offset(bytes_len);
1998            let mut _prev_end_offset: usize = 0;
1999            if 1 > max_ordinal {
2000                return Ok(());
2001            }
2002
2003            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
2004            // are envelope_size bytes.
2005            let cur_offset: usize = (1 - 1) * envelope_size;
2006
2007            // Zero reserved fields.
2008            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2009
2010            // Safety:
2011            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
2012            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
2013            //   envelope_size bytes, there is always sufficient room.
2014            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<LogInterestSelector, 64>, D>(
2015            self.selectors.as_ref().map(<fidl::encoding::Vector<LogInterestSelector, 64> as fidl::encoding::ValueTypeMarker>::borrow),
2016            encoder, offset + cur_offset, depth
2017        )?;
2018
2019            _prev_end_offset = cur_offset + envelope_size;
2020            if 2 > max_ordinal {
2021                return Ok(());
2022            }
2023
2024            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
2025            // are envelope_size bytes.
2026            let cur_offset: usize = (2 - 1) * envelope_size;
2027
2028            // Zero reserved fields.
2029            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2030
2031            // Safety:
2032            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
2033            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
2034            //   envelope_size bytes, there is always sufficient room.
2035            fidl::encoding::encode_in_envelope_optional::<bool, D>(
2036                self.persist.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
2037                encoder,
2038                offset + cur_offset,
2039                depth,
2040            )?;
2041
2042            _prev_end_offset = cur_offset + envelope_size;
2043
2044            Ok(())
2045        }
2046    }
2047
2048    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2049        for LogSettingsSetComponentInterestRequest
2050    {
2051        #[inline(always)]
2052        fn new_empty() -> Self {
2053            Self::default()
2054        }
2055
2056        unsafe fn decode(
2057            &mut self,
2058            decoder: &mut fidl::encoding::Decoder<'_, D>,
2059            offset: usize,
2060            mut depth: fidl::encoding::Depth,
2061        ) -> fidl::Result<()> {
2062            decoder.debug_check_bounds::<Self>(offset);
2063            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
2064                None => return Err(fidl::Error::NotNullable),
2065                Some(len) => len,
2066            };
2067            // Calling decoder.out_of_line_offset(0) is not allowed.
2068            if len == 0 {
2069                return Ok(());
2070            };
2071            depth.increment()?;
2072            let envelope_size = 8;
2073            let bytes_len = len * envelope_size;
2074            let offset = decoder.out_of_line_offset(bytes_len)?;
2075            // Decode the envelope for each type.
2076            let mut _next_ordinal_to_read = 0;
2077            let mut next_offset = offset;
2078            let end_offset = offset + bytes_len;
2079            _next_ordinal_to_read += 1;
2080            if next_offset >= end_offset {
2081                return Ok(());
2082            }
2083
2084            // Decode unknown envelopes for gaps in ordinals.
2085            while _next_ordinal_to_read < 1 {
2086                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2087                _next_ordinal_to_read += 1;
2088                next_offset += envelope_size;
2089            }
2090
2091            let next_out_of_line = decoder.next_out_of_line();
2092            let handles_before = decoder.remaining_handles();
2093            if let Some((inlined, num_bytes, num_handles)) =
2094                fidl::encoding::decode_envelope_header(decoder, next_offset)?
2095            {
2096                let member_inline_size = <fidl::encoding::Vector<LogInterestSelector, 64> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2097                if inlined != (member_inline_size <= 4) {
2098                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
2099                }
2100                let inner_offset;
2101                let mut inner_depth = depth.clone();
2102                if inlined {
2103                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2104                    inner_offset = next_offset;
2105                } else {
2106                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2107                    inner_depth.increment()?;
2108                }
2109                let val_ref = self.selectors.get_or_insert_with(
2110                    || fidl::new_empty!(fidl::encoding::Vector<LogInterestSelector, 64>, D),
2111                );
2112                fidl::decode!(fidl::encoding::Vector<LogInterestSelector, 64>, D, val_ref, decoder, inner_offset, inner_depth)?;
2113                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2114                {
2115                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
2116                }
2117                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2118                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2119                }
2120            }
2121
2122            next_offset += envelope_size;
2123            _next_ordinal_to_read += 1;
2124            if next_offset >= end_offset {
2125                return Ok(());
2126            }
2127
2128            // Decode unknown envelopes for gaps in ordinals.
2129            while _next_ordinal_to_read < 2 {
2130                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2131                _next_ordinal_to_read += 1;
2132                next_offset += envelope_size;
2133            }
2134
2135            let next_out_of_line = decoder.next_out_of_line();
2136            let handles_before = decoder.remaining_handles();
2137            if let Some((inlined, num_bytes, num_handles)) =
2138                fidl::encoding::decode_envelope_header(decoder, next_offset)?
2139            {
2140                let member_inline_size =
2141                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2142                if inlined != (member_inline_size <= 4) {
2143                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
2144                }
2145                let inner_offset;
2146                let mut inner_depth = depth.clone();
2147                if inlined {
2148                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2149                    inner_offset = next_offset;
2150                } else {
2151                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2152                    inner_depth.increment()?;
2153                }
2154                let val_ref = self.persist.get_or_insert_with(|| fidl::new_empty!(bool, D));
2155                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
2156                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2157                {
2158                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
2159                }
2160                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2161                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2162                }
2163            }
2164
2165            next_offset += envelope_size;
2166
2167            // Decode the remaining unknown envelopes.
2168            while next_offset < end_offset {
2169                _next_ordinal_to_read += 1;
2170                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2171                next_offset += envelope_size;
2172            }
2173
2174            Ok(())
2175        }
2176    }
2177
2178    impl LogStreamOptions {
2179        #[inline(always)]
2180        fn max_ordinal_present(&self) -> u64 {
2181            if let Some(_) = self.subscribe_to_manifest {
2182                return 5;
2183            }
2184            if let Some(_) = self.include_rolled_out {
2185                return 4;
2186            }
2187            if let Some(_) = self.include_component_url {
2188                return 3;
2189            }
2190            if let Some(_) = self.include_moniker {
2191                return 2;
2192            }
2193            if let Some(_) = self.mode {
2194                return 1;
2195            }
2196            0
2197        }
2198    }
2199
2200    impl fidl::encoding::ValueTypeMarker for LogStreamOptions {
2201        type Borrowed<'a> = &'a Self;
2202        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2203            value
2204        }
2205    }
2206
2207    unsafe impl fidl::encoding::TypeMarker for LogStreamOptions {
2208        type Owned = Self;
2209
2210        #[inline(always)]
2211        fn inline_align(_context: fidl::encoding::Context) -> usize {
2212            8
2213        }
2214
2215        #[inline(always)]
2216        fn inline_size(_context: fidl::encoding::Context) -> usize {
2217            16
2218        }
2219    }
2220
2221    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<LogStreamOptions, D>
2222        for &LogStreamOptions
2223    {
2224        unsafe fn encode(
2225            self,
2226            encoder: &mut fidl::encoding::Encoder<'_, D>,
2227            offset: usize,
2228            mut depth: fidl::encoding::Depth,
2229        ) -> fidl::Result<()> {
2230            encoder.debug_check_bounds::<LogStreamOptions>(offset);
2231            // Vector header
2232            let max_ordinal: u64 = self.max_ordinal_present();
2233            encoder.write_num(max_ordinal, offset);
2234            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
2235            // Calling encoder.out_of_line_offset(0) is not allowed.
2236            if max_ordinal == 0 {
2237                return Ok(());
2238            }
2239            depth.increment()?;
2240            let envelope_size = 8;
2241            let bytes_len = max_ordinal as usize * envelope_size;
2242            #[allow(unused_variables)]
2243            let offset = encoder.out_of_line_offset(bytes_len);
2244            let mut _prev_end_offset: usize = 0;
2245            if 1 > max_ordinal {
2246                return Ok(());
2247            }
2248
2249            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
2250            // are envelope_size bytes.
2251            let cur_offset: usize = (1 - 1) * envelope_size;
2252
2253            // Zero reserved fields.
2254            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2255
2256            // Safety:
2257            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
2258            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
2259            //   envelope_size bytes, there is always sufficient room.
2260            fidl::encoding::encode_in_envelope_optional::<StreamMode, D>(
2261                self.mode.as_ref().map(<StreamMode as fidl::encoding::ValueTypeMarker>::borrow),
2262                encoder,
2263                offset + cur_offset,
2264                depth,
2265            )?;
2266
2267            _prev_end_offset = cur_offset + envelope_size;
2268            if 2 > max_ordinal {
2269                return Ok(());
2270            }
2271
2272            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
2273            // are envelope_size bytes.
2274            let cur_offset: usize = (2 - 1) * envelope_size;
2275
2276            // Zero reserved fields.
2277            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2278
2279            // Safety:
2280            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
2281            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
2282            //   envelope_size bytes, there is always sufficient room.
2283            fidl::encoding::encode_in_envelope_optional::<bool, D>(
2284                self.include_moniker
2285                    .as_ref()
2286                    .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
2287                encoder,
2288                offset + cur_offset,
2289                depth,
2290            )?;
2291
2292            _prev_end_offset = cur_offset + envelope_size;
2293            if 3 > max_ordinal {
2294                return Ok(());
2295            }
2296
2297            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
2298            // are envelope_size bytes.
2299            let cur_offset: usize = (3 - 1) * envelope_size;
2300
2301            // Zero reserved fields.
2302            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2303
2304            // Safety:
2305            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
2306            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
2307            //   envelope_size bytes, there is always sufficient room.
2308            fidl::encoding::encode_in_envelope_optional::<bool, D>(
2309                self.include_component_url
2310                    .as_ref()
2311                    .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
2312                encoder,
2313                offset + cur_offset,
2314                depth,
2315            )?;
2316
2317            _prev_end_offset = cur_offset + envelope_size;
2318            if 4 > max_ordinal {
2319                return Ok(());
2320            }
2321
2322            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
2323            // are envelope_size bytes.
2324            let cur_offset: usize = (4 - 1) * envelope_size;
2325
2326            // Zero reserved fields.
2327            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2328
2329            // Safety:
2330            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
2331            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
2332            //   envelope_size bytes, there is always sufficient room.
2333            fidl::encoding::encode_in_envelope_optional::<bool, D>(
2334                self.include_rolled_out
2335                    .as_ref()
2336                    .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
2337                encoder,
2338                offset + cur_offset,
2339                depth,
2340            )?;
2341
2342            _prev_end_offset = cur_offset + envelope_size;
2343            if 5 > max_ordinal {
2344                return Ok(());
2345            }
2346
2347            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
2348            // are envelope_size bytes.
2349            let cur_offset: usize = (5 - 1) * envelope_size;
2350
2351            // Zero reserved fields.
2352            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2353
2354            // Safety:
2355            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
2356            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
2357            //   envelope_size bytes, there is always sufficient room.
2358            fidl::encoding::encode_in_envelope_optional::<bool, D>(
2359                self.subscribe_to_manifest
2360                    .as_ref()
2361                    .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
2362                encoder,
2363                offset + cur_offset,
2364                depth,
2365            )?;
2366
2367            _prev_end_offset = cur_offset + envelope_size;
2368
2369            Ok(())
2370        }
2371    }
2372
2373    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for LogStreamOptions {
2374        #[inline(always)]
2375        fn new_empty() -> Self {
2376            Self::default()
2377        }
2378
2379        unsafe fn decode(
2380            &mut self,
2381            decoder: &mut fidl::encoding::Decoder<'_, D>,
2382            offset: usize,
2383            mut depth: fidl::encoding::Depth,
2384        ) -> fidl::Result<()> {
2385            decoder.debug_check_bounds::<Self>(offset);
2386            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
2387                None => return Err(fidl::Error::NotNullable),
2388                Some(len) => len,
2389            };
2390            // Calling decoder.out_of_line_offset(0) is not allowed.
2391            if len == 0 {
2392                return Ok(());
2393            };
2394            depth.increment()?;
2395            let envelope_size = 8;
2396            let bytes_len = len * envelope_size;
2397            let offset = decoder.out_of_line_offset(bytes_len)?;
2398            // Decode the envelope for each type.
2399            let mut _next_ordinal_to_read = 0;
2400            let mut next_offset = offset;
2401            let end_offset = offset + bytes_len;
2402            _next_ordinal_to_read += 1;
2403            if next_offset >= end_offset {
2404                return Ok(());
2405            }
2406
2407            // Decode unknown envelopes for gaps in ordinals.
2408            while _next_ordinal_to_read < 1 {
2409                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2410                _next_ordinal_to_read += 1;
2411                next_offset += envelope_size;
2412            }
2413
2414            let next_out_of_line = decoder.next_out_of_line();
2415            let handles_before = decoder.remaining_handles();
2416            if let Some((inlined, num_bytes, num_handles)) =
2417                fidl::encoding::decode_envelope_header(decoder, next_offset)?
2418            {
2419                let member_inline_size =
2420                    <StreamMode as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2421                if inlined != (member_inline_size <= 4) {
2422                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
2423                }
2424                let inner_offset;
2425                let mut inner_depth = depth.clone();
2426                if inlined {
2427                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2428                    inner_offset = next_offset;
2429                } else {
2430                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2431                    inner_depth.increment()?;
2432                }
2433                let val_ref = self.mode.get_or_insert_with(|| fidl::new_empty!(StreamMode, D));
2434                fidl::decode!(StreamMode, D, val_ref, decoder, inner_offset, inner_depth)?;
2435                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2436                {
2437                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
2438                }
2439                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2440                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2441                }
2442            }
2443
2444            next_offset += envelope_size;
2445            _next_ordinal_to_read += 1;
2446            if next_offset >= end_offset {
2447                return Ok(());
2448            }
2449
2450            // Decode unknown envelopes for gaps in ordinals.
2451            while _next_ordinal_to_read < 2 {
2452                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2453                _next_ordinal_to_read += 1;
2454                next_offset += envelope_size;
2455            }
2456
2457            let next_out_of_line = decoder.next_out_of_line();
2458            let handles_before = decoder.remaining_handles();
2459            if let Some((inlined, num_bytes, num_handles)) =
2460                fidl::encoding::decode_envelope_header(decoder, next_offset)?
2461            {
2462                let member_inline_size =
2463                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2464                if inlined != (member_inline_size <= 4) {
2465                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
2466                }
2467                let inner_offset;
2468                let mut inner_depth = depth.clone();
2469                if inlined {
2470                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2471                    inner_offset = next_offset;
2472                } else {
2473                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2474                    inner_depth.increment()?;
2475                }
2476                let val_ref = self.include_moniker.get_or_insert_with(|| fidl::new_empty!(bool, D));
2477                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
2478                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2479                {
2480                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
2481                }
2482                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2483                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2484                }
2485            }
2486
2487            next_offset += envelope_size;
2488            _next_ordinal_to_read += 1;
2489            if next_offset >= end_offset {
2490                return Ok(());
2491            }
2492
2493            // Decode unknown envelopes for gaps in ordinals.
2494            while _next_ordinal_to_read < 3 {
2495                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2496                _next_ordinal_to_read += 1;
2497                next_offset += envelope_size;
2498            }
2499
2500            let next_out_of_line = decoder.next_out_of_line();
2501            let handles_before = decoder.remaining_handles();
2502            if let Some((inlined, num_bytes, num_handles)) =
2503                fidl::encoding::decode_envelope_header(decoder, next_offset)?
2504            {
2505                let member_inline_size =
2506                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2507                if inlined != (member_inline_size <= 4) {
2508                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
2509                }
2510                let inner_offset;
2511                let mut inner_depth = depth.clone();
2512                if inlined {
2513                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2514                    inner_offset = next_offset;
2515                } else {
2516                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2517                    inner_depth.increment()?;
2518                }
2519                let val_ref =
2520                    self.include_component_url.get_or_insert_with(|| fidl::new_empty!(bool, D));
2521                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
2522                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2523                {
2524                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
2525                }
2526                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2527                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2528                }
2529            }
2530
2531            next_offset += envelope_size;
2532            _next_ordinal_to_read += 1;
2533            if next_offset >= end_offset {
2534                return Ok(());
2535            }
2536
2537            // Decode unknown envelopes for gaps in ordinals.
2538            while _next_ordinal_to_read < 4 {
2539                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2540                _next_ordinal_to_read += 1;
2541                next_offset += envelope_size;
2542            }
2543
2544            let next_out_of_line = decoder.next_out_of_line();
2545            let handles_before = decoder.remaining_handles();
2546            if let Some((inlined, num_bytes, num_handles)) =
2547                fidl::encoding::decode_envelope_header(decoder, next_offset)?
2548            {
2549                let member_inline_size =
2550                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2551                if inlined != (member_inline_size <= 4) {
2552                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
2553                }
2554                let inner_offset;
2555                let mut inner_depth = depth.clone();
2556                if inlined {
2557                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2558                    inner_offset = next_offset;
2559                } else {
2560                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2561                    inner_depth.increment()?;
2562                }
2563                let val_ref =
2564                    self.include_rolled_out.get_or_insert_with(|| fidl::new_empty!(bool, D));
2565                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
2566                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2567                {
2568                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
2569                }
2570                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2571                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2572                }
2573            }
2574
2575            next_offset += envelope_size;
2576            _next_ordinal_to_read += 1;
2577            if next_offset >= end_offset {
2578                return Ok(());
2579            }
2580
2581            // Decode unknown envelopes for gaps in ordinals.
2582            while _next_ordinal_to_read < 5 {
2583                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2584                _next_ordinal_to_read += 1;
2585                next_offset += envelope_size;
2586            }
2587
2588            let next_out_of_line = decoder.next_out_of_line();
2589            let handles_before = decoder.remaining_handles();
2590            if let Some((inlined, num_bytes, num_handles)) =
2591                fidl::encoding::decode_envelope_header(decoder, next_offset)?
2592            {
2593                let member_inline_size =
2594                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2595                if inlined != (member_inline_size <= 4) {
2596                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
2597                }
2598                let inner_offset;
2599                let mut inner_depth = depth.clone();
2600                if inlined {
2601                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2602                    inner_offset = next_offset;
2603                } else {
2604                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2605                    inner_depth.increment()?;
2606                }
2607                let val_ref =
2608                    self.subscribe_to_manifest.get_or_insert_with(|| fidl::new_empty!(bool, D));
2609                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
2610                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2611                {
2612                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
2613                }
2614                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2615                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2616                }
2617            }
2618
2619            next_offset += envelope_size;
2620
2621            // Decode the remaining unknown envelopes.
2622            while next_offset < end_offset {
2623                _next_ordinal_to_read += 1;
2624                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2625                next_offset += envelope_size;
2626            }
2627
2628            Ok(())
2629        }
2630    }
2631
2632    impl PerformanceConfiguration {
2633        #[inline(always)]
2634        fn max_ordinal_present(&self) -> u64 {
2635            if let Some(_) = self.batch_retrieval_timeout_seconds {
2636                return 2;
2637            }
2638            if let Some(_) = self.max_aggregate_content_size_bytes {
2639                return 1;
2640            }
2641            0
2642        }
2643    }
2644
2645    impl fidl::encoding::ValueTypeMarker for PerformanceConfiguration {
2646        type Borrowed<'a> = &'a Self;
2647        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2648            value
2649        }
2650    }
2651
2652    unsafe impl fidl::encoding::TypeMarker for PerformanceConfiguration {
2653        type Owned = Self;
2654
2655        #[inline(always)]
2656        fn inline_align(_context: fidl::encoding::Context) -> usize {
2657            8
2658        }
2659
2660        #[inline(always)]
2661        fn inline_size(_context: fidl::encoding::Context) -> usize {
2662            16
2663        }
2664    }
2665
2666    unsafe impl<D: fidl::encoding::ResourceDialect>
2667        fidl::encoding::Encode<PerformanceConfiguration, D> for &PerformanceConfiguration
2668    {
2669        unsafe fn encode(
2670            self,
2671            encoder: &mut fidl::encoding::Encoder<'_, D>,
2672            offset: usize,
2673            mut depth: fidl::encoding::Depth,
2674        ) -> fidl::Result<()> {
2675            encoder.debug_check_bounds::<PerformanceConfiguration>(offset);
2676            // Vector header
2677            let max_ordinal: u64 = self.max_ordinal_present();
2678            encoder.write_num(max_ordinal, offset);
2679            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
2680            // Calling encoder.out_of_line_offset(0) is not allowed.
2681            if max_ordinal == 0 {
2682                return Ok(());
2683            }
2684            depth.increment()?;
2685            let envelope_size = 8;
2686            let bytes_len = max_ordinal as usize * envelope_size;
2687            #[allow(unused_variables)]
2688            let offset = encoder.out_of_line_offset(bytes_len);
2689            let mut _prev_end_offset: usize = 0;
2690            if 1 > max_ordinal {
2691                return Ok(());
2692            }
2693
2694            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
2695            // are envelope_size bytes.
2696            let cur_offset: usize = (1 - 1) * envelope_size;
2697
2698            // Zero reserved fields.
2699            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2700
2701            // Safety:
2702            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
2703            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
2704            //   envelope_size bytes, there is always sufficient room.
2705            fidl::encoding::encode_in_envelope_optional::<u64, D>(
2706                self.max_aggregate_content_size_bytes
2707                    .as_ref()
2708                    .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
2709                encoder,
2710                offset + cur_offset,
2711                depth,
2712            )?;
2713
2714            _prev_end_offset = cur_offset + envelope_size;
2715            if 2 > max_ordinal {
2716                return Ok(());
2717            }
2718
2719            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
2720            // are envelope_size bytes.
2721            let cur_offset: usize = (2 - 1) * envelope_size;
2722
2723            // Zero reserved fields.
2724            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2725
2726            // Safety:
2727            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
2728            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
2729            //   envelope_size bytes, there is always sufficient room.
2730            fidl::encoding::encode_in_envelope_optional::<i64, D>(
2731                self.batch_retrieval_timeout_seconds
2732                    .as_ref()
2733                    .map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
2734                encoder,
2735                offset + cur_offset,
2736                depth,
2737            )?;
2738
2739            _prev_end_offset = cur_offset + envelope_size;
2740
2741            Ok(())
2742        }
2743    }
2744
2745    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2746        for PerformanceConfiguration
2747    {
2748        #[inline(always)]
2749        fn new_empty() -> Self {
2750            Self::default()
2751        }
2752
2753        unsafe fn decode(
2754            &mut self,
2755            decoder: &mut fidl::encoding::Decoder<'_, D>,
2756            offset: usize,
2757            mut depth: fidl::encoding::Depth,
2758        ) -> fidl::Result<()> {
2759            decoder.debug_check_bounds::<Self>(offset);
2760            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
2761                None => return Err(fidl::Error::NotNullable),
2762                Some(len) => len,
2763            };
2764            // Calling decoder.out_of_line_offset(0) is not allowed.
2765            if len == 0 {
2766                return Ok(());
2767            };
2768            depth.increment()?;
2769            let envelope_size = 8;
2770            let bytes_len = len * envelope_size;
2771            let offset = decoder.out_of_line_offset(bytes_len)?;
2772            // Decode the envelope for each type.
2773            let mut _next_ordinal_to_read = 0;
2774            let mut next_offset = offset;
2775            let end_offset = offset + bytes_len;
2776            _next_ordinal_to_read += 1;
2777            if next_offset >= end_offset {
2778                return Ok(());
2779            }
2780
2781            // Decode unknown envelopes for gaps in ordinals.
2782            while _next_ordinal_to_read < 1 {
2783                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2784                _next_ordinal_to_read += 1;
2785                next_offset += envelope_size;
2786            }
2787
2788            let next_out_of_line = decoder.next_out_of_line();
2789            let handles_before = decoder.remaining_handles();
2790            if let Some((inlined, num_bytes, num_handles)) =
2791                fidl::encoding::decode_envelope_header(decoder, next_offset)?
2792            {
2793                let member_inline_size =
2794                    <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2795                if inlined != (member_inline_size <= 4) {
2796                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
2797                }
2798                let inner_offset;
2799                let mut inner_depth = depth.clone();
2800                if inlined {
2801                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2802                    inner_offset = next_offset;
2803                } else {
2804                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2805                    inner_depth.increment()?;
2806                }
2807                let val_ref = self
2808                    .max_aggregate_content_size_bytes
2809                    .get_or_insert_with(|| fidl::new_empty!(u64, D));
2810                fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
2811                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2812                {
2813                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
2814                }
2815                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2816                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2817                }
2818            }
2819
2820            next_offset += envelope_size;
2821            _next_ordinal_to_read += 1;
2822            if next_offset >= end_offset {
2823                return Ok(());
2824            }
2825
2826            // Decode unknown envelopes for gaps in ordinals.
2827            while _next_ordinal_to_read < 2 {
2828                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2829                _next_ordinal_to_read += 1;
2830                next_offset += envelope_size;
2831            }
2832
2833            let next_out_of_line = decoder.next_out_of_line();
2834            let handles_before = decoder.remaining_handles();
2835            if let Some((inlined, num_bytes, num_handles)) =
2836                fidl::encoding::decode_envelope_header(decoder, next_offset)?
2837            {
2838                let member_inline_size =
2839                    <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2840                if inlined != (member_inline_size <= 4) {
2841                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
2842                }
2843                let inner_offset;
2844                let mut inner_depth = depth.clone();
2845                if inlined {
2846                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2847                    inner_offset = next_offset;
2848                } else {
2849                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2850                    inner_depth.increment()?;
2851                }
2852                let val_ref = self
2853                    .batch_retrieval_timeout_seconds
2854                    .get_or_insert_with(|| fidl::new_empty!(i64, D));
2855                fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
2856                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2857                {
2858                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
2859                }
2860                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2861                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2862                }
2863            }
2864
2865            next_offset += envelope_size;
2866
2867            // Decode the remaining unknown envelopes.
2868            while next_offset < end_offset {
2869                _next_ordinal_to_read += 1;
2870                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2871                next_offset += envelope_size;
2872            }
2873
2874            Ok(())
2875        }
2876    }
2877
2878    impl SampleDatum {
2879        #[inline(always)]
2880        fn max_ordinal_present(&self) -> u64 {
2881            if let Some(_) = self.interval_secs {
2882                return 3;
2883            }
2884            if let Some(_) = self.strategy {
2885                return 2;
2886            }
2887            if let Some(_) = self.selector {
2888                return 1;
2889            }
2890            0
2891        }
2892    }
2893
2894    impl fidl::encoding::ValueTypeMarker for SampleDatum {
2895        type Borrowed<'a> = &'a Self;
2896        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2897            value
2898        }
2899    }
2900
2901    unsafe impl fidl::encoding::TypeMarker for SampleDatum {
2902        type Owned = Self;
2903
2904        #[inline(always)]
2905        fn inline_align(_context: fidl::encoding::Context) -> usize {
2906            8
2907        }
2908
2909        #[inline(always)]
2910        fn inline_size(_context: fidl::encoding::Context) -> usize {
2911            16
2912        }
2913    }
2914
2915    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<SampleDatum, D>
2916        for &SampleDatum
2917    {
2918        unsafe fn encode(
2919            self,
2920            encoder: &mut fidl::encoding::Encoder<'_, D>,
2921            offset: usize,
2922            mut depth: fidl::encoding::Depth,
2923        ) -> fidl::Result<()> {
2924            encoder.debug_check_bounds::<SampleDatum>(offset);
2925            // Vector header
2926            let max_ordinal: u64 = self.max_ordinal_present();
2927            encoder.write_num(max_ordinal, offset);
2928            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
2929            // Calling encoder.out_of_line_offset(0) is not allowed.
2930            if max_ordinal == 0 {
2931                return Ok(());
2932            }
2933            depth.increment()?;
2934            let envelope_size = 8;
2935            let bytes_len = max_ordinal as usize * envelope_size;
2936            #[allow(unused_variables)]
2937            let offset = encoder.out_of_line_offset(bytes_len);
2938            let mut _prev_end_offset: usize = 0;
2939            if 1 > max_ordinal {
2940                return Ok(());
2941            }
2942
2943            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
2944            // are envelope_size bytes.
2945            let cur_offset: usize = (1 - 1) * envelope_size;
2946
2947            // Zero reserved fields.
2948            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2949
2950            // Safety:
2951            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
2952            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
2953            //   envelope_size bytes, there is always sufficient room.
2954            fidl::encoding::encode_in_envelope_optional::<SelectorArgument, D>(
2955                self.selector
2956                    .as_ref()
2957                    .map(<SelectorArgument as fidl::encoding::ValueTypeMarker>::borrow),
2958                encoder,
2959                offset + cur_offset,
2960                depth,
2961            )?;
2962
2963            _prev_end_offset = cur_offset + envelope_size;
2964            if 2 > max_ordinal {
2965                return Ok(());
2966            }
2967
2968            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
2969            // are envelope_size bytes.
2970            let cur_offset: usize = (2 - 1) * envelope_size;
2971
2972            // Zero reserved fields.
2973            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2974
2975            // Safety:
2976            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
2977            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
2978            //   envelope_size bytes, there is always sufficient room.
2979            fidl::encoding::encode_in_envelope_optional::<SampleStrategy, D>(
2980                self.strategy
2981                    .as_ref()
2982                    .map(<SampleStrategy as fidl::encoding::ValueTypeMarker>::borrow),
2983                encoder,
2984                offset + cur_offset,
2985                depth,
2986            )?;
2987
2988            _prev_end_offset = cur_offset + envelope_size;
2989            if 3 > max_ordinal {
2990                return Ok(());
2991            }
2992
2993            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
2994            // are envelope_size bytes.
2995            let cur_offset: usize = (3 - 1) * envelope_size;
2996
2997            // Zero reserved fields.
2998            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2999
3000            // Safety:
3001            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3002            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3003            //   envelope_size bytes, there is always sufficient room.
3004            fidl::encoding::encode_in_envelope_optional::<i64, D>(
3005                self.interval_secs.as_ref().map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
3006                encoder,
3007                offset + cur_offset,
3008                depth,
3009            )?;
3010
3011            _prev_end_offset = cur_offset + envelope_size;
3012
3013            Ok(())
3014        }
3015    }
3016
3017    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for SampleDatum {
3018        #[inline(always)]
3019        fn new_empty() -> Self {
3020            Self::default()
3021        }
3022
3023        unsafe fn decode(
3024            &mut self,
3025            decoder: &mut fidl::encoding::Decoder<'_, D>,
3026            offset: usize,
3027            mut depth: fidl::encoding::Depth,
3028        ) -> fidl::Result<()> {
3029            decoder.debug_check_bounds::<Self>(offset);
3030            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
3031                None => return Err(fidl::Error::NotNullable),
3032                Some(len) => len,
3033            };
3034            // Calling decoder.out_of_line_offset(0) is not allowed.
3035            if len == 0 {
3036                return Ok(());
3037            };
3038            depth.increment()?;
3039            let envelope_size = 8;
3040            let bytes_len = len * envelope_size;
3041            let offset = decoder.out_of_line_offset(bytes_len)?;
3042            // Decode the envelope for each type.
3043            let mut _next_ordinal_to_read = 0;
3044            let mut next_offset = offset;
3045            let end_offset = offset + bytes_len;
3046            _next_ordinal_to_read += 1;
3047            if next_offset >= end_offset {
3048                return Ok(());
3049            }
3050
3051            // Decode unknown envelopes for gaps in ordinals.
3052            while _next_ordinal_to_read < 1 {
3053                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3054                _next_ordinal_to_read += 1;
3055                next_offset += envelope_size;
3056            }
3057
3058            let next_out_of_line = decoder.next_out_of_line();
3059            let handles_before = decoder.remaining_handles();
3060            if let Some((inlined, num_bytes, num_handles)) =
3061                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3062            {
3063                let member_inline_size =
3064                    <SelectorArgument as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3065                if inlined != (member_inline_size <= 4) {
3066                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3067                }
3068                let inner_offset;
3069                let mut inner_depth = depth.clone();
3070                if inlined {
3071                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3072                    inner_offset = next_offset;
3073                } else {
3074                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3075                    inner_depth.increment()?;
3076                }
3077                let val_ref =
3078                    self.selector.get_or_insert_with(|| fidl::new_empty!(SelectorArgument, D));
3079                fidl::decode!(SelectorArgument, D, val_ref, decoder, inner_offset, inner_depth)?;
3080                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3081                {
3082                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3083                }
3084                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3085                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3086                }
3087            }
3088
3089            next_offset += envelope_size;
3090            _next_ordinal_to_read += 1;
3091            if next_offset >= end_offset {
3092                return Ok(());
3093            }
3094
3095            // Decode unknown envelopes for gaps in ordinals.
3096            while _next_ordinal_to_read < 2 {
3097                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3098                _next_ordinal_to_read += 1;
3099                next_offset += envelope_size;
3100            }
3101
3102            let next_out_of_line = decoder.next_out_of_line();
3103            let handles_before = decoder.remaining_handles();
3104            if let Some((inlined, num_bytes, num_handles)) =
3105                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3106            {
3107                let member_inline_size =
3108                    <SampleStrategy as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3109                if inlined != (member_inline_size <= 4) {
3110                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3111                }
3112                let inner_offset;
3113                let mut inner_depth = depth.clone();
3114                if inlined {
3115                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3116                    inner_offset = next_offset;
3117                } else {
3118                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3119                    inner_depth.increment()?;
3120                }
3121                let val_ref =
3122                    self.strategy.get_or_insert_with(|| fidl::new_empty!(SampleStrategy, D));
3123                fidl::decode!(SampleStrategy, D, val_ref, decoder, inner_offset, inner_depth)?;
3124                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3125                {
3126                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3127                }
3128                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3129                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3130                }
3131            }
3132
3133            next_offset += envelope_size;
3134            _next_ordinal_to_read += 1;
3135            if next_offset >= end_offset {
3136                return Ok(());
3137            }
3138
3139            // Decode unknown envelopes for gaps in ordinals.
3140            while _next_ordinal_to_read < 3 {
3141                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3142                _next_ordinal_to_read += 1;
3143                next_offset += envelope_size;
3144            }
3145
3146            let next_out_of_line = decoder.next_out_of_line();
3147            let handles_before = decoder.remaining_handles();
3148            if let Some((inlined, num_bytes, num_handles)) =
3149                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3150            {
3151                let member_inline_size =
3152                    <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3153                if inlined != (member_inline_size <= 4) {
3154                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3155                }
3156                let inner_offset;
3157                let mut inner_depth = depth.clone();
3158                if inlined {
3159                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3160                    inner_offset = next_offset;
3161                } else {
3162                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3163                    inner_depth.increment()?;
3164                }
3165                let val_ref = self.interval_secs.get_or_insert_with(|| fidl::new_empty!(i64, D));
3166                fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
3167                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3168                {
3169                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3170                }
3171                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3172                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3173                }
3174            }
3175
3176            next_offset += envelope_size;
3177
3178            // Decode the remaining unknown envelopes.
3179            while next_offset < end_offset {
3180                _next_ordinal_to_read += 1;
3181                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3182                next_offset += envelope_size;
3183            }
3184
3185            Ok(())
3186        }
3187    }
3188
3189    impl SampleParameters {
3190        #[inline(always)]
3191        fn max_ordinal_present(&self) -> u64 {
3192            if let Some(_) = self.data {
3193                return 1;
3194            }
3195            0
3196        }
3197    }
3198
3199    impl fidl::encoding::ValueTypeMarker for SampleParameters {
3200        type Borrowed<'a> = &'a Self;
3201        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3202            value
3203        }
3204    }
3205
3206    unsafe impl fidl::encoding::TypeMarker for SampleParameters {
3207        type Owned = Self;
3208
3209        #[inline(always)]
3210        fn inline_align(_context: fidl::encoding::Context) -> usize {
3211            8
3212        }
3213
3214        #[inline(always)]
3215        fn inline_size(_context: fidl::encoding::Context) -> usize {
3216            16
3217        }
3218    }
3219
3220    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<SampleParameters, D>
3221        for &SampleParameters
3222    {
3223        unsafe fn encode(
3224            self,
3225            encoder: &mut fidl::encoding::Encoder<'_, D>,
3226            offset: usize,
3227            mut depth: fidl::encoding::Depth,
3228        ) -> fidl::Result<()> {
3229            encoder.debug_check_bounds::<SampleParameters>(offset);
3230            // Vector header
3231            let max_ordinal: u64 = self.max_ordinal_present();
3232            encoder.write_num(max_ordinal, offset);
3233            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
3234            // Calling encoder.out_of_line_offset(0) is not allowed.
3235            if max_ordinal == 0 {
3236                return Ok(());
3237            }
3238            depth.increment()?;
3239            let envelope_size = 8;
3240            let bytes_len = max_ordinal as usize * envelope_size;
3241            #[allow(unused_variables)]
3242            let offset = encoder.out_of_line_offset(bytes_len);
3243            let mut _prev_end_offset: usize = 0;
3244            if 1 > max_ordinal {
3245                return Ok(());
3246            }
3247
3248            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3249            // are envelope_size bytes.
3250            let cur_offset: usize = (1 - 1) * envelope_size;
3251
3252            // Zero reserved fields.
3253            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3254
3255            // Safety:
3256            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3257            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3258            //   envelope_size bytes, there is always sufficient room.
3259            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<SampleDatum, 100>, D>(
3260            self.data.as_ref().map(<fidl::encoding::Vector<SampleDatum, 100> as fidl::encoding::ValueTypeMarker>::borrow),
3261            encoder, offset + cur_offset, depth
3262        )?;
3263
3264            _prev_end_offset = cur_offset + envelope_size;
3265
3266            Ok(())
3267        }
3268    }
3269
3270    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for SampleParameters {
3271        #[inline(always)]
3272        fn new_empty() -> Self {
3273            Self::default()
3274        }
3275
3276        unsafe fn decode(
3277            &mut self,
3278            decoder: &mut fidl::encoding::Decoder<'_, D>,
3279            offset: usize,
3280            mut depth: fidl::encoding::Depth,
3281        ) -> fidl::Result<()> {
3282            decoder.debug_check_bounds::<Self>(offset);
3283            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
3284                None => return Err(fidl::Error::NotNullable),
3285                Some(len) => len,
3286            };
3287            // Calling decoder.out_of_line_offset(0) is not allowed.
3288            if len == 0 {
3289                return Ok(());
3290            };
3291            depth.increment()?;
3292            let envelope_size = 8;
3293            let bytes_len = len * envelope_size;
3294            let offset = decoder.out_of_line_offset(bytes_len)?;
3295            // Decode the envelope for each type.
3296            let mut _next_ordinal_to_read = 0;
3297            let mut next_offset = offset;
3298            let end_offset = offset + bytes_len;
3299            _next_ordinal_to_read += 1;
3300            if next_offset >= end_offset {
3301                return Ok(());
3302            }
3303
3304            // Decode unknown envelopes for gaps in ordinals.
3305            while _next_ordinal_to_read < 1 {
3306                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3307                _next_ordinal_to_read += 1;
3308                next_offset += envelope_size;
3309            }
3310
3311            let next_out_of_line = decoder.next_out_of_line();
3312            let handles_before = decoder.remaining_handles();
3313            if let Some((inlined, num_bytes, num_handles)) =
3314                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3315            {
3316                let member_inline_size = <fidl::encoding::Vector<SampleDatum, 100> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3317                if inlined != (member_inline_size <= 4) {
3318                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3319                }
3320                let inner_offset;
3321                let mut inner_depth = depth.clone();
3322                if inlined {
3323                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3324                    inner_offset = next_offset;
3325                } else {
3326                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3327                    inner_depth.increment()?;
3328                }
3329                let val_ref = self.data.get_or_insert_with(
3330                    || fidl::new_empty!(fidl::encoding::Vector<SampleDatum, 100>, D),
3331                );
3332                fidl::decode!(fidl::encoding::Vector<SampleDatum, 100>, D, val_ref, decoder, inner_offset, inner_depth)?;
3333                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3334                {
3335                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3336                }
3337                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3338                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3339                }
3340            }
3341
3342            next_offset += envelope_size;
3343
3344            // Decode the remaining unknown envelopes.
3345            while next_offset < end_offset {
3346                _next_ordinal_to_read += 1;
3347                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3348                next_offset += envelope_size;
3349            }
3350
3351            Ok(())
3352        }
3353    }
3354
3355    impl Selector {
3356        #[inline(always)]
3357        fn max_ordinal_present(&self) -> u64 {
3358            if let Some(_) = self.tree_names {
3359                return 3;
3360            }
3361            if let Some(_) = self.tree_selector {
3362                return 2;
3363            }
3364            if let Some(_) = self.component_selector {
3365                return 1;
3366            }
3367            0
3368        }
3369    }
3370
3371    impl fidl::encoding::ValueTypeMarker for Selector {
3372        type Borrowed<'a> = &'a Self;
3373        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3374            value
3375        }
3376    }
3377
3378    unsafe impl fidl::encoding::TypeMarker for Selector {
3379        type Owned = Self;
3380
3381        #[inline(always)]
3382        fn inline_align(_context: fidl::encoding::Context) -> usize {
3383            8
3384        }
3385
3386        #[inline(always)]
3387        fn inline_size(_context: fidl::encoding::Context) -> usize {
3388            16
3389        }
3390    }
3391
3392    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Selector, D> for &Selector {
3393        unsafe fn encode(
3394            self,
3395            encoder: &mut fidl::encoding::Encoder<'_, D>,
3396            offset: usize,
3397            mut depth: fidl::encoding::Depth,
3398        ) -> fidl::Result<()> {
3399            encoder.debug_check_bounds::<Selector>(offset);
3400            // Vector header
3401            let max_ordinal: u64 = self.max_ordinal_present();
3402            encoder.write_num(max_ordinal, offset);
3403            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
3404            // Calling encoder.out_of_line_offset(0) is not allowed.
3405            if max_ordinal == 0 {
3406                return Ok(());
3407            }
3408            depth.increment()?;
3409            let envelope_size = 8;
3410            let bytes_len = max_ordinal as usize * envelope_size;
3411            #[allow(unused_variables)]
3412            let offset = encoder.out_of_line_offset(bytes_len);
3413            let mut _prev_end_offset: usize = 0;
3414            if 1 > max_ordinal {
3415                return Ok(());
3416            }
3417
3418            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3419            // are envelope_size bytes.
3420            let cur_offset: usize = (1 - 1) * envelope_size;
3421
3422            // Zero reserved fields.
3423            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3424
3425            // Safety:
3426            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3427            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3428            //   envelope_size bytes, there is always sufficient room.
3429            fidl::encoding::encode_in_envelope_optional::<ComponentSelector, D>(
3430                self.component_selector
3431                    .as_ref()
3432                    .map(<ComponentSelector as fidl::encoding::ValueTypeMarker>::borrow),
3433                encoder,
3434                offset + cur_offset,
3435                depth,
3436            )?;
3437
3438            _prev_end_offset = cur_offset + envelope_size;
3439            if 2 > max_ordinal {
3440                return Ok(());
3441            }
3442
3443            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3444            // are envelope_size bytes.
3445            let cur_offset: usize = (2 - 1) * envelope_size;
3446
3447            // Zero reserved fields.
3448            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3449
3450            // Safety:
3451            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3452            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3453            //   envelope_size bytes, there is always sufficient room.
3454            fidl::encoding::encode_in_envelope_optional::<TreeSelector, D>(
3455                self.tree_selector
3456                    .as_ref()
3457                    .map(<TreeSelector as fidl::encoding::ValueTypeMarker>::borrow),
3458                encoder,
3459                offset + cur_offset,
3460                depth,
3461            )?;
3462
3463            _prev_end_offset = cur_offset + envelope_size;
3464            if 3 > max_ordinal {
3465                return Ok(());
3466            }
3467
3468            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3469            // are envelope_size bytes.
3470            let cur_offset: usize = (3 - 1) * envelope_size;
3471
3472            // Zero reserved fields.
3473            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3474
3475            // Safety:
3476            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3477            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3478            //   envelope_size bytes, there is always sufficient room.
3479            fidl::encoding::encode_in_envelope_optional::<TreeNames, D>(
3480                self.tree_names
3481                    .as_ref()
3482                    .map(<TreeNames as fidl::encoding::ValueTypeMarker>::borrow),
3483                encoder,
3484                offset + cur_offset,
3485                depth,
3486            )?;
3487
3488            _prev_end_offset = cur_offset + envelope_size;
3489
3490            Ok(())
3491        }
3492    }
3493
3494    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Selector {
3495        #[inline(always)]
3496        fn new_empty() -> Self {
3497            Self::default()
3498        }
3499
3500        unsafe fn decode(
3501            &mut self,
3502            decoder: &mut fidl::encoding::Decoder<'_, D>,
3503            offset: usize,
3504            mut depth: fidl::encoding::Depth,
3505        ) -> fidl::Result<()> {
3506            decoder.debug_check_bounds::<Self>(offset);
3507            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
3508                None => return Err(fidl::Error::NotNullable),
3509                Some(len) => len,
3510            };
3511            // Calling decoder.out_of_line_offset(0) is not allowed.
3512            if len == 0 {
3513                return Ok(());
3514            };
3515            depth.increment()?;
3516            let envelope_size = 8;
3517            let bytes_len = len * envelope_size;
3518            let offset = decoder.out_of_line_offset(bytes_len)?;
3519            // Decode the envelope for each type.
3520            let mut _next_ordinal_to_read = 0;
3521            let mut next_offset = offset;
3522            let end_offset = offset + bytes_len;
3523            _next_ordinal_to_read += 1;
3524            if next_offset >= end_offset {
3525                return Ok(());
3526            }
3527
3528            // Decode unknown envelopes for gaps in ordinals.
3529            while _next_ordinal_to_read < 1 {
3530                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3531                _next_ordinal_to_read += 1;
3532                next_offset += envelope_size;
3533            }
3534
3535            let next_out_of_line = decoder.next_out_of_line();
3536            let handles_before = decoder.remaining_handles();
3537            if let Some((inlined, num_bytes, num_handles)) =
3538                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3539            {
3540                let member_inline_size =
3541                    <ComponentSelector as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3542                if inlined != (member_inline_size <= 4) {
3543                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3544                }
3545                let inner_offset;
3546                let mut inner_depth = depth.clone();
3547                if inlined {
3548                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3549                    inner_offset = next_offset;
3550                } else {
3551                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3552                    inner_depth.increment()?;
3553                }
3554                let val_ref = self
3555                    .component_selector
3556                    .get_or_insert_with(|| fidl::new_empty!(ComponentSelector, D));
3557                fidl::decode!(ComponentSelector, D, val_ref, decoder, inner_offset, inner_depth)?;
3558                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3559                {
3560                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3561                }
3562                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3563                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3564                }
3565            }
3566
3567            next_offset += envelope_size;
3568            _next_ordinal_to_read += 1;
3569            if next_offset >= end_offset {
3570                return Ok(());
3571            }
3572
3573            // Decode unknown envelopes for gaps in ordinals.
3574            while _next_ordinal_to_read < 2 {
3575                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3576                _next_ordinal_to_read += 1;
3577                next_offset += envelope_size;
3578            }
3579
3580            let next_out_of_line = decoder.next_out_of_line();
3581            let handles_before = decoder.remaining_handles();
3582            if let Some((inlined, num_bytes, num_handles)) =
3583                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3584            {
3585                let member_inline_size =
3586                    <TreeSelector as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3587                if inlined != (member_inline_size <= 4) {
3588                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3589                }
3590                let inner_offset;
3591                let mut inner_depth = depth.clone();
3592                if inlined {
3593                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3594                    inner_offset = next_offset;
3595                } else {
3596                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3597                    inner_depth.increment()?;
3598                }
3599                let val_ref =
3600                    self.tree_selector.get_or_insert_with(|| fidl::new_empty!(TreeSelector, D));
3601                fidl::decode!(TreeSelector, D, val_ref, decoder, inner_offset, inner_depth)?;
3602                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3603                {
3604                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3605                }
3606                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3607                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3608                }
3609            }
3610
3611            next_offset += envelope_size;
3612            _next_ordinal_to_read += 1;
3613            if next_offset >= end_offset {
3614                return Ok(());
3615            }
3616
3617            // Decode unknown envelopes for gaps in ordinals.
3618            while _next_ordinal_to_read < 3 {
3619                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3620                _next_ordinal_to_read += 1;
3621                next_offset += envelope_size;
3622            }
3623
3624            let next_out_of_line = decoder.next_out_of_line();
3625            let handles_before = decoder.remaining_handles();
3626            if let Some((inlined, num_bytes, num_handles)) =
3627                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3628            {
3629                let member_inline_size =
3630                    <TreeNames as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3631                if inlined != (member_inline_size <= 4) {
3632                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3633                }
3634                let inner_offset;
3635                let mut inner_depth = depth.clone();
3636                if inlined {
3637                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3638                    inner_offset = next_offset;
3639                } else {
3640                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3641                    inner_depth.increment()?;
3642                }
3643                let val_ref = self.tree_names.get_or_insert_with(|| fidl::new_empty!(TreeNames, D));
3644                fidl::decode!(TreeNames, D, val_ref, decoder, inner_offset, inner_depth)?;
3645                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3646                {
3647                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3648                }
3649                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3650                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3651                }
3652            }
3653
3654            next_offset += envelope_size;
3655
3656            // Decode the remaining unknown envelopes.
3657            while next_offset < end_offset {
3658                _next_ordinal_to_read += 1;
3659                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3660                next_offset += envelope_size;
3661            }
3662
3663            Ok(())
3664        }
3665    }
3666
3667    impl StreamParameters {
3668        #[inline(always)]
3669        fn max_ordinal_present(&self) -> u64 {
3670            if let Some(_) = self.subscribe_to_manifest {
3671                return 7;
3672            }
3673            if let Some(_) = self.performance_configuration {
3674                return 6;
3675            }
3676            if let Some(_) = self.batch_retrieval_timeout_seconds {
3677                return 5;
3678            }
3679            if let Some(_) = self.client_selector_configuration {
3680                return 4;
3681            }
3682            if let Some(_) = self.format {
3683                return 3;
3684            }
3685            if let Some(_) = self.stream_mode {
3686                return 2;
3687            }
3688            if let Some(_) = self.data_type {
3689                return 1;
3690            }
3691            0
3692        }
3693    }
3694
3695    impl fidl::encoding::ValueTypeMarker for StreamParameters {
3696        type Borrowed<'a> = &'a Self;
3697        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3698            value
3699        }
3700    }
3701
3702    unsafe impl fidl::encoding::TypeMarker for StreamParameters {
3703        type Owned = Self;
3704
3705        #[inline(always)]
3706        fn inline_align(_context: fidl::encoding::Context) -> usize {
3707            8
3708        }
3709
3710        #[inline(always)]
3711        fn inline_size(_context: fidl::encoding::Context) -> usize {
3712            16
3713        }
3714    }
3715
3716    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<StreamParameters, D>
3717        for &StreamParameters
3718    {
3719        unsafe fn encode(
3720            self,
3721            encoder: &mut fidl::encoding::Encoder<'_, D>,
3722            offset: usize,
3723            mut depth: fidl::encoding::Depth,
3724        ) -> fidl::Result<()> {
3725            encoder.debug_check_bounds::<StreamParameters>(offset);
3726            // Vector header
3727            let max_ordinal: u64 = self.max_ordinal_present();
3728            encoder.write_num(max_ordinal, offset);
3729            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
3730            // Calling encoder.out_of_line_offset(0) is not allowed.
3731            if max_ordinal == 0 {
3732                return Ok(());
3733            }
3734            depth.increment()?;
3735            let envelope_size = 8;
3736            let bytes_len = max_ordinal as usize * envelope_size;
3737            #[allow(unused_variables)]
3738            let offset = encoder.out_of_line_offset(bytes_len);
3739            let mut _prev_end_offset: usize = 0;
3740            if 1 > max_ordinal {
3741                return Ok(());
3742            }
3743
3744            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3745            // are envelope_size bytes.
3746            let cur_offset: usize = (1 - 1) * envelope_size;
3747
3748            // Zero reserved fields.
3749            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3750
3751            // Safety:
3752            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3753            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3754            //   envelope_size bytes, there is always sufficient room.
3755            fidl::encoding::encode_in_envelope_optional::<DataType, D>(
3756                self.data_type.as_ref().map(<DataType as fidl::encoding::ValueTypeMarker>::borrow),
3757                encoder,
3758                offset + cur_offset,
3759                depth,
3760            )?;
3761
3762            _prev_end_offset = cur_offset + envelope_size;
3763            if 2 > max_ordinal {
3764                return Ok(());
3765            }
3766
3767            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3768            // are envelope_size bytes.
3769            let cur_offset: usize = (2 - 1) * envelope_size;
3770
3771            // Zero reserved fields.
3772            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3773
3774            // Safety:
3775            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3776            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3777            //   envelope_size bytes, there is always sufficient room.
3778            fidl::encoding::encode_in_envelope_optional::<StreamMode, D>(
3779                self.stream_mode
3780                    .as_ref()
3781                    .map(<StreamMode as fidl::encoding::ValueTypeMarker>::borrow),
3782                encoder,
3783                offset + cur_offset,
3784                depth,
3785            )?;
3786
3787            _prev_end_offset = cur_offset + envelope_size;
3788            if 3 > max_ordinal {
3789                return Ok(());
3790            }
3791
3792            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3793            // are envelope_size bytes.
3794            let cur_offset: usize = (3 - 1) * envelope_size;
3795
3796            // Zero reserved fields.
3797            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3798
3799            // Safety:
3800            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3801            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3802            //   envelope_size bytes, there is always sufficient room.
3803            fidl::encoding::encode_in_envelope_optional::<Format, D>(
3804                self.format.as_ref().map(<Format as fidl::encoding::ValueTypeMarker>::borrow),
3805                encoder,
3806                offset + cur_offset,
3807                depth,
3808            )?;
3809
3810            _prev_end_offset = cur_offset + envelope_size;
3811            if 4 > max_ordinal {
3812                return Ok(());
3813            }
3814
3815            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3816            // are envelope_size bytes.
3817            let cur_offset: usize = (4 - 1) * envelope_size;
3818
3819            // Zero reserved fields.
3820            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3821
3822            // Safety:
3823            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3824            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3825            //   envelope_size bytes, there is always sufficient room.
3826            fidl::encoding::encode_in_envelope_optional::<ClientSelectorConfiguration, D>(
3827                self.client_selector_configuration
3828                    .as_ref()
3829                    .map(<ClientSelectorConfiguration as fidl::encoding::ValueTypeMarker>::borrow),
3830                encoder,
3831                offset + cur_offset,
3832                depth,
3833            )?;
3834
3835            _prev_end_offset = cur_offset + envelope_size;
3836            if 5 > max_ordinal {
3837                return Ok(());
3838            }
3839
3840            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3841            // are envelope_size bytes.
3842            let cur_offset: usize = (5 - 1) * envelope_size;
3843
3844            // Zero reserved fields.
3845            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3846
3847            // Safety:
3848            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3849            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3850            //   envelope_size bytes, there is always sufficient room.
3851            fidl::encoding::encode_in_envelope_optional::<i64, D>(
3852                self.batch_retrieval_timeout_seconds
3853                    .as_ref()
3854                    .map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
3855                encoder,
3856                offset + cur_offset,
3857                depth,
3858            )?;
3859
3860            _prev_end_offset = cur_offset + envelope_size;
3861            if 6 > max_ordinal {
3862                return Ok(());
3863            }
3864
3865            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3866            // are envelope_size bytes.
3867            let cur_offset: usize = (6 - 1) * envelope_size;
3868
3869            // Zero reserved fields.
3870            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3871
3872            // Safety:
3873            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3874            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3875            //   envelope_size bytes, there is always sufficient room.
3876            fidl::encoding::encode_in_envelope_optional::<PerformanceConfiguration, D>(
3877                self.performance_configuration
3878                    .as_ref()
3879                    .map(<PerformanceConfiguration as fidl::encoding::ValueTypeMarker>::borrow),
3880                encoder,
3881                offset + cur_offset,
3882                depth,
3883            )?;
3884
3885            _prev_end_offset = cur_offset + envelope_size;
3886            if 7 > max_ordinal {
3887                return Ok(());
3888            }
3889
3890            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3891            // are envelope_size bytes.
3892            let cur_offset: usize = (7 - 1) * envelope_size;
3893
3894            // Zero reserved fields.
3895            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3896
3897            // Safety:
3898            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3899            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3900            //   envelope_size bytes, there is always sufficient room.
3901            fidl::encoding::encode_in_envelope_optional::<bool, D>(
3902                self.subscribe_to_manifest
3903                    .as_ref()
3904                    .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
3905                encoder,
3906                offset + cur_offset,
3907                depth,
3908            )?;
3909
3910            _prev_end_offset = cur_offset + envelope_size;
3911
3912            Ok(())
3913        }
3914    }
3915
3916    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for StreamParameters {
3917        #[inline(always)]
3918        fn new_empty() -> Self {
3919            Self::default()
3920        }
3921
3922        unsafe fn decode(
3923            &mut self,
3924            decoder: &mut fidl::encoding::Decoder<'_, D>,
3925            offset: usize,
3926            mut depth: fidl::encoding::Depth,
3927        ) -> fidl::Result<()> {
3928            decoder.debug_check_bounds::<Self>(offset);
3929            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
3930                None => return Err(fidl::Error::NotNullable),
3931                Some(len) => len,
3932            };
3933            // Calling decoder.out_of_line_offset(0) is not allowed.
3934            if len == 0 {
3935                return Ok(());
3936            };
3937            depth.increment()?;
3938            let envelope_size = 8;
3939            let bytes_len = len * envelope_size;
3940            let offset = decoder.out_of_line_offset(bytes_len)?;
3941            // Decode the envelope for each type.
3942            let mut _next_ordinal_to_read = 0;
3943            let mut next_offset = offset;
3944            let end_offset = offset + bytes_len;
3945            _next_ordinal_to_read += 1;
3946            if next_offset >= end_offset {
3947                return Ok(());
3948            }
3949
3950            // Decode unknown envelopes for gaps in ordinals.
3951            while _next_ordinal_to_read < 1 {
3952                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3953                _next_ordinal_to_read += 1;
3954                next_offset += envelope_size;
3955            }
3956
3957            let next_out_of_line = decoder.next_out_of_line();
3958            let handles_before = decoder.remaining_handles();
3959            if let Some((inlined, num_bytes, num_handles)) =
3960                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3961            {
3962                let member_inline_size =
3963                    <DataType as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3964                if inlined != (member_inline_size <= 4) {
3965                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3966                }
3967                let inner_offset;
3968                let mut inner_depth = depth.clone();
3969                if inlined {
3970                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3971                    inner_offset = next_offset;
3972                } else {
3973                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3974                    inner_depth.increment()?;
3975                }
3976                let val_ref = self.data_type.get_or_insert_with(|| fidl::new_empty!(DataType, D));
3977                fidl::decode!(DataType, D, val_ref, decoder, inner_offset, inner_depth)?;
3978                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3979                {
3980                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3981                }
3982                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3983                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3984                }
3985            }
3986
3987            next_offset += envelope_size;
3988            _next_ordinal_to_read += 1;
3989            if next_offset >= end_offset {
3990                return Ok(());
3991            }
3992
3993            // Decode unknown envelopes for gaps in ordinals.
3994            while _next_ordinal_to_read < 2 {
3995                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3996                _next_ordinal_to_read += 1;
3997                next_offset += envelope_size;
3998            }
3999
4000            let next_out_of_line = decoder.next_out_of_line();
4001            let handles_before = decoder.remaining_handles();
4002            if let Some((inlined, num_bytes, num_handles)) =
4003                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4004            {
4005                let member_inline_size =
4006                    <StreamMode as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4007                if inlined != (member_inline_size <= 4) {
4008                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4009                }
4010                let inner_offset;
4011                let mut inner_depth = depth.clone();
4012                if inlined {
4013                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4014                    inner_offset = next_offset;
4015                } else {
4016                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4017                    inner_depth.increment()?;
4018                }
4019                let val_ref =
4020                    self.stream_mode.get_or_insert_with(|| fidl::new_empty!(StreamMode, D));
4021                fidl::decode!(StreamMode, D, val_ref, decoder, inner_offset, inner_depth)?;
4022                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4023                {
4024                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4025                }
4026                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4027                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4028                }
4029            }
4030
4031            next_offset += envelope_size;
4032            _next_ordinal_to_read += 1;
4033            if next_offset >= end_offset {
4034                return Ok(());
4035            }
4036
4037            // Decode unknown envelopes for gaps in ordinals.
4038            while _next_ordinal_to_read < 3 {
4039                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4040                _next_ordinal_to_read += 1;
4041                next_offset += envelope_size;
4042            }
4043
4044            let next_out_of_line = decoder.next_out_of_line();
4045            let handles_before = decoder.remaining_handles();
4046            if let Some((inlined, num_bytes, num_handles)) =
4047                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4048            {
4049                let member_inline_size =
4050                    <Format as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4051                if inlined != (member_inline_size <= 4) {
4052                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4053                }
4054                let inner_offset;
4055                let mut inner_depth = depth.clone();
4056                if inlined {
4057                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4058                    inner_offset = next_offset;
4059                } else {
4060                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4061                    inner_depth.increment()?;
4062                }
4063                let val_ref = self.format.get_or_insert_with(|| fidl::new_empty!(Format, D));
4064                fidl::decode!(Format, D, val_ref, decoder, inner_offset, inner_depth)?;
4065                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4066                {
4067                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4068                }
4069                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4070                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4071                }
4072            }
4073
4074            next_offset += envelope_size;
4075            _next_ordinal_to_read += 1;
4076            if next_offset >= end_offset {
4077                return Ok(());
4078            }
4079
4080            // Decode unknown envelopes for gaps in ordinals.
4081            while _next_ordinal_to_read < 4 {
4082                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4083                _next_ordinal_to_read += 1;
4084                next_offset += envelope_size;
4085            }
4086
4087            let next_out_of_line = decoder.next_out_of_line();
4088            let handles_before = decoder.remaining_handles();
4089            if let Some((inlined, num_bytes, num_handles)) =
4090                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4091            {
4092                let member_inline_size =
4093                    <ClientSelectorConfiguration as fidl::encoding::TypeMarker>::inline_size(
4094                        decoder.context,
4095                    );
4096                if inlined != (member_inline_size <= 4) {
4097                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4098                }
4099                let inner_offset;
4100                let mut inner_depth = depth.clone();
4101                if inlined {
4102                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4103                    inner_offset = next_offset;
4104                } else {
4105                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4106                    inner_depth.increment()?;
4107                }
4108                let val_ref = self
4109                    .client_selector_configuration
4110                    .get_or_insert_with(|| fidl::new_empty!(ClientSelectorConfiguration, D));
4111                fidl::decode!(
4112                    ClientSelectorConfiguration,
4113                    D,
4114                    val_ref,
4115                    decoder,
4116                    inner_offset,
4117                    inner_depth
4118                )?;
4119                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4120                {
4121                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4122                }
4123                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4124                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4125                }
4126            }
4127
4128            next_offset += envelope_size;
4129            _next_ordinal_to_read += 1;
4130            if next_offset >= end_offset {
4131                return Ok(());
4132            }
4133
4134            // Decode unknown envelopes for gaps in ordinals.
4135            while _next_ordinal_to_read < 5 {
4136                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4137                _next_ordinal_to_read += 1;
4138                next_offset += envelope_size;
4139            }
4140
4141            let next_out_of_line = decoder.next_out_of_line();
4142            let handles_before = decoder.remaining_handles();
4143            if let Some((inlined, num_bytes, num_handles)) =
4144                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4145            {
4146                let member_inline_size =
4147                    <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4148                if inlined != (member_inline_size <= 4) {
4149                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4150                }
4151                let inner_offset;
4152                let mut inner_depth = depth.clone();
4153                if inlined {
4154                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4155                    inner_offset = next_offset;
4156                } else {
4157                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4158                    inner_depth.increment()?;
4159                }
4160                let val_ref = self
4161                    .batch_retrieval_timeout_seconds
4162                    .get_or_insert_with(|| fidl::new_empty!(i64, D));
4163                fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
4164                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4165                {
4166                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4167                }
4168                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4169                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4170                }
4171            }
4172
4173            next_offset += envelope_size;
4174            _next_ordinal_to_read += 1;
4175            if next_offset >= end_offset {
4176                return Ok(());
4177            }
4178
4179            // Decode unknown envelopes for gaps in ordinals.
4180            while _next_ordinal_to_read < 6 {
4181                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4182                _next_ordinal_to_read += 1;
4183                next_offset += envelope_size;
4184            }
4185
4186            let next_out_of_line = decoder.next_out_of_line();
4187            let handles_before = decoder.remaining_handles();
4188            if let Some((inlined, num_bytes, num_handles)) =
4189                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4190            {
4191                let member_inline_size =
4192                    <PerformanceConfiguration as fidl::encoding::TypeMarker>::inline_size(
4193                        decoder.context,
4194                    );
4195                if inlined != (member_inline_size <= 4) {
4196                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4197                }
4198                let inner_offset;
4199                let mut inner_depth = depth.clone();
4200                if inlined {
4201                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4202                    inner_offset = next_offset;
4203                } else {
4204                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4205                    inner_depth.increment()?;
4206                }
4207                let val_ref = self
4208                    .performance_configuration
4209                    .get_or_insert_with(|| fidl::new_empty!(PerformanceConfiguration, D));
4210                fidl::decode!(
4211                    PerformanceConfiguration,
4212                    D,
4213                    val_ref,
4214                    decoder,
4215                    inner_offset,
4216                    inner_depth
4217                )?;
4218                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4219                {
4220                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4221                }
4222                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4223                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4224                }
4225            }
4226
4227            next_offset += envelope_size;
4228            _next_ordinal_to_read += 1;
4229            if next_offset >= end_offset {
4230                return Ok(());
4231            }
4232
4233            // Decode unknown envelopes for gaps in ordinals.
4234            while _next_ordinal_to_read < 7 {
4235                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4236                _next_ordinal_to_read += 1;
4237                next_offset += envelope_size;
4238            }
4239
4240            let next_out_of_line = decoder.next_out_of_line();
4241            let handles_before = decoder.remaining_handles();
4242            if let Some((inlined, num_bytes, num_handles)) =
4243                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4244            {
4245                let member_inline_size =
4246                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4247                if inlined != (member_inline_size <= 4) {
4248                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4249                }
4250                let inner_offset;
4251                let mut inner_depth = depth.clone();
4252                if inlined {
4253                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4254                    inner_offset = next_offset;
4255                } else {
4256                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4257                    inner_depth.increment()?;
4258                }
4259                let val_ref =
4260                    self.subscribe_to_manifest.get_or_insert_with(|| fidl::new_empty!(bool, D));
4261                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
4262                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4263                {
4264                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4265                }
4266                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4267                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4268                }
4269            }
4270
4271            next_offset += envelope_size;
4272
4273            // Decode the remaining unknown envelopes.
4274            while next_offset < end_offset {
4275                _next_ordinal_to_read += 1;
4276                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4277                next_offset += envelope_size;
4278            }
4279
4280            Ok(())
4281        }
4282    }
4283
4284    impl fidl::encoding::ValueTypeMarker for ClientSelectorConfiguration {
4285        type Borrowed<'a> = &'a Self;
4286        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4287            value
4288        }
4289    }
4290
4291    unsafe impl fidl::encoding::TypeMarker for ClientSelectorConfiguration {
4292        type Owned = Self;
4293
4294        #[inline(always)]
4295        fn inline_align(_context: fidl::encoding::Context) -> usize {
4296            8
4297        }
4298
4299        #[inline(always)]
4300        fn inline_size(_context: fidl::encoding::Context) -> usize {
4301            16
4302        }
4303    }
4304
4305    unsafe impl<D: fidl::encoding::ResourceDialect>
4306        fidl::encoding::Encode<ClientSelectorConfiguration, D> for &ClientSelectorConfiguration
4307    {
4308        #[inline]
4309        unsafe fn encode(
4310            self,
4311            encoder: &mut fidl::encoding::Encoder<'_, D>,
4312            offset: usize,
4313            _depth: fidl::encoding::Depth,
4314        ) -> fidl::Result<()> {
4315            encoder.debug_check_bounds::<ClientSelectorConfiguration>(offset);
4316            encoder.write_num::<u64>(self.ordinal(), offset);
4317            match self {
4318            ClientSelectorConfiguration::Selectors(ref val) => {
4319                fidl::encoding::encode_in_envelope::<fidl::encoding::UnboundedVector<SelectorArgument>, D>(
4320                    <fidl::encoding::UnboundedVector<SelectorArgument> as fidl::encoding::ValueTypeMarker>::borrow(val),
4321                    encoder, offset + 8, _depth
4322                )
4323            }
4324            ClientSelectorConfiguration::SelectAll(ref val) => {
4325                fidl::encoding::encode_in_envelope::<bool, D>(
4326                    <bool as fidl::encoding::ValueTypeMarker>::borrow(val),
4327                    encoder, offset + 8, _depth
4328                )
4329            }
4330            ClientSelectorConfiguration::__SourceBreaking { .. } => Err(fidl::Error::UnknownUnionTag),
4331        }
4332        }
4333    }
4334
4335    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
4336        for ClientSelectorConfiguration
4337    {
4338        #[inline(always)]
4339        fn new_empty() -> Self {
4340            Self::__SourceBreaking { unknown_ordinal: 0 }
4341        }
4342
4343        #[inline]
4344        unsafe fn decode(
4345            &mut self,
4346            decoder: &mut fidl::encoding::Decoder<'_, D>,
4347            offset: usize,
4348            mut depth: fidl::encoding::Depth,
4349        ) -> fidl::Result<()> {
4350            decoder.debug_check_bounds::<Self>(offset);
4351            #[allow(unused_variables)]
4352            let next_out_of_line = decoder.next_out_of_line();
4353            let handles_before = decoder.remaining_handles();
4354            let (ordinal, inlined, num_bytes, num_handles) =
4355                fidl::encoding::decode_union_inline_portion(decoder, offset)?;
4356
4357            let member_inline_size = match ordinal {
4358            1 => <fidl::encoding::UnboundedVector<SelectorArgument> as fidl::encoding::TypeMarker>::inline_size(decoder.context),
4359            2 => <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context),
4360            0 => return Err(fidl::Error::UnknownUnionTag),
4361            _ => num_bytes as usize,
4362        };
4363
4364            if inlined != (member_inline_size <= 4) {
4365                return Err(fidl::Error::InvalidInlineBitInEnvelope);
4366            }
4367            let _inner_offset;
4368            if inlined {
4369                decoder.check_inline_envelope_padding(offset + 8, member_inline_size)?;
4370                _inner_offset = offset + 8;
4371            } else {
4372                depth.increment()?;
4373                _inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4374            }
4375            match ordinal {
4376                1 => {
4377                    #[allow(irrefutable_let_patterns)]
4378                    if let ClientSelectorConfiguration::Selectors(_) = self {
4379                        // Do nothing, read the value into the object
4380                    } else {
4381                        // Initialize `self` to the right variant
4382                        *self = ClientSelectorConfiguration::Selectors(fidl::new_empty!(
4383                            fidl::encoding::UnboundedVector<SelectorArgument>,
4384                            D
4385                        ));
4386                    }
4387                    #[allow(irrefutable_let_patterns)]
4388                    if let ClientSelectorConfiguration::Selectors(ref mut val) = self {
4389                        fidl::decode!(
4390                            fidl::encoding::UnboundedVector<SelectorArgument>,
4391                            D,
4392                            val,
4393                            decoder,
4394                            _inner_offset,
4395                            depth
4396                        )?;
4397                    } else {
4398                        unreachable!()
4399                    }
4400                }
4401                2 => {
4402                    #[allow(irrefutable_let_patterns)]
4403                    if let ClientSelectorConfiguration::SelectAll(_) = self {
4404                        // Do nothing, read the value into the object
4405                    } else {
4406                        // Initialize `self` to the right variant
4407                        *self = ClientSelectorConfiguration::SelectAll(fidl::new_empty!(bool, D));
4408                    }
4409                    #[allow(irrefutable_let_patterns)]
4410                    if let ClientSelectorConfiguration::SelectAll(ref mut val) = self {
4411                        fidl::decode!(bool, D, val, decoder, _inner_offset, depth)?;
4412                    } else {
4413                        unreachable!()
4414                    }
4415                }
4416                #[allow(deprecated)]
4417                ordinal => {
4418                    for _ in 0..num_handles {
4419                        decoder.drop_next_handle()?;
4420                    }
4421                    *self =
4422                        ClientSelectorConfiguration::__SourceBreaking { unknown_ordinal: ordinal };
4423                }
4424            }
4425            if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize) {
4426                return Err(fidl::Error::InvalidNumBytesInEnvelope);
4427            }
4428            if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4429                return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4430            }
4431            Ok(())
4432        }
4433    }
4434
4435    impl fidl::encoding::ValueTypeMarker for SelectorArgument {
4436        type Borrowed<'a> = &'a Self;
4437        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4438            value
4439        }
4440    }
4441
4442    unsafe impl fidl::encoding::TypeMarker for SelectorArgument {
4443        type Owned = Self;
4444
4445        #[inline(always)]
4446        fn inline_align(_context: fidl::encoding::Context) -> usize {
4447            8
4448        }
4449
4450        #[inline(always)]
4451        fn inline_size(_context: fidl::encoding::Context) -> usize {
4452            16
4453        }
4454    }
4455
4456    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<SelectorArgument, D>
4457        for &SelectorArgument
4458    {
4459        #[inline]
4460        unsafe fn encode(
4461            self,
4462            encoder: &mut fidl::encoding::Encoder<'_, D>,
4463            offset: usize,
4464            _depth: fidl::encoding::Depth,
4465        ) -> fidl::Result<()> {
4466            encoder.debug_check_bounds::<SelectorArgument>(offset);
4467            encoder.write_num::<u64>(self.ordinal(), offset);
4468            match self {
4469            SelectorArgument::StructuredSelector(ref val) => {
4470                fidl::encoding::encode_in_envelope::<Selector, D>(
4471                    <Selector as fidl::encoding::ValueTypeMarker>::borrow(val),
4472                    encoder, offset + 8, _depth
4473                )
4474            }
4475            SelectorArgument::RawSelector(ref val) => {
4476                fidl::encoding::encode_in_envelope::<fidl::encoding::BoundedString<1024>, D>(
4477                    <fidl::encoding::BoundedString<1024> as fidl::encoding::ValueTypeMarker>::borrow(val),
4478                    encoder, offset + 8, _depth
4479                )
4480            }
4481            SelectorArgument::__SourceBreaking { .. } => Err(fidl::Error::UnknownUnionTag),
4482        }
4483        }
4484    }
4485
4486    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for SelectorArgument {
4487        #[inline(always)]
4488        fn new_empty() -> Self {
4489            Self::__SourceBreaking { unknown_ordinal: 0 }
4490        }
4491
4492        #[inline]
4493        unsafe fn decode(
4494            &mut self,
4495            decoder: &mut fidl::encoding::Decoder<'_, D>,
4496            offset: usize,
4497            mut depth: fidl::encoding::Depth,
4498        ) -> fidl::Result<()> {
4499            decoder.debug_check_bounds::<Self>(offset);
4500            #[allow(unused_variables)]
4501            let next_out_of_line = decoder.next_out_of_line();
4502            let handles_before = decoder.remaining_handles();
4503            let (ordinal, inlined, num_bytes, num_handles) =
4504                fidl::encoding::decode_union_inline_portion(decoder, offset)?;
4505
4506            let member_inline_size = match ordinal {
4507                1 => <Selector as fidl::encoding::TypeMarker>::inline_size(decoder.context),
4508                2 => {
4509                    <fidl::encoding::BoundedString<1024> as fidl::encoding::TypeMarker>::inline_size(
4510                        decoder.context,
4511                    )
4512                }
4513                0 => return Err(fidl::Error::UnknownUnionTag),
4514                _ => num_bytes as usize,
4515            };
4516
4517            if inlined != (member_inline_size <= 4) {
4518                return Err(fidl::Error::InvalidInlineBitInEnvelope);
4519            }
4520            let _inner_offset;
4521            if inlined {
4522                decoder.check_inline_envelope_padding(offset + 8, member_inline_size)?;
4523                _inner_offset = offset + 8;
4524            } else {
4525                depth.increment()?;
4526                _inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4527            }
4528            match ordinal {
4529                1 => {
4530                    #[allow(irrefutable_let_patterns)]
4531                    if let SelectorArgument::StructuredSelector(_) = self {
4532                        // Do nothing, read the value into the object
4533                    } else {
4534                        // Initialize `self` to the right variant
4535                        *self = SelectorArgument::StructuredSelector(fidl::new_empty!(Selector, D));
4536                    }
4537                    #[allow(irrefutable_let_patterns)]
4538                    if let SelectorArgument::StructuredSelector(ref mut val) = self {
4539                        fidl::decode!(Selector, D, val, decoder, _inner_offset, depth)?;
4540                    } else {
4541                        unreachable!()
4542                    }
4543                }
4544                2 => {
4545                    #[allow(irrefutable_let_patterns)]
4546                    if let SelectorArgument::RawSelector(_) = self {
4547                        // Do nothing, read the value into the object
4548                    } else {
4549                        // Initialize `self` to the right variant
4550                        *self = SelectorArgument::RawSelector(fidl::new_empty!(
4551                            fidl::encoding::BoundedString<1024>,
4552                            D
4553                        ));
4554                    }
4555                    #[allow(irrefutable_let_patterns)]
4556                    if let SelectorArgument::RawSelector(ref mut val) = self {
4557                        fidl::decode!(
4558                            fidl::encoding::BoundedString<1024>,
4559                            D,
4560                            val,
4561                            decoder,
4562                            _inner_offset,
4563                            depth
4564                        )?;
4565                    } else {
4566                        unreachable!()
4567                    }
4568                }
4569                #[allow(deprecated)]
4570                ordinal => {
4571                    for _ in 0..num_handles {
4572                        decoder.drop_next_handle()?;
4573                    }
4574                    *self = SelectorArgument::__SourceBreaking { unknown_ordinal: ordinal };
4575                }
4576            }
4577            if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize) {
4578                return Err(fidl::Error::InvalidNumBytesInEnvelope);
4579            }
4580            if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4581                return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4582            }
4583            Ok(())
4584        }
4585    }
4586
4587    impl fidl::encoding::ValueTypeMarker for StringSelector {
4588        type Borrowed<'a> = &'a Self;
4589        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4590            value
4591        }
4592    }
4593
4594    unsafe impl fidl::encoding::TypeMarker for StringSelector {
4595        type Owned = Self;
4596
4597        #[inline(always)]
4598        fn inline_align(_context: fidl::encoding::Context) -> usize {
4599            8
4600        }
4601
4602        #[inline(always)]
4603        fn inline_size(_context: fidl::encoding::Context) -> usize {
4604            16
4605        }
4606    }
4607
4608    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<StringSelector, D>
4609        for &StringSelector
4610    {
4611        #[inline]
4612        unsafe fn encode(
4613            self,
4614            encoder: &mut fidl::encoding::Encoder<'_, D>,
4615            offset: usize,
4616            _depth: fidl::encoding::Depth,
4617        ) -> fidl::Result<()> {
4618            encoder.debug_check_bounds::<StringSelector>(offset);
4619            encoder.write_num::<u64>(self.ordinal(), offset);
4620            match self {
4621            StringSelector::StringPattern(ref val) => {
4622                fidl::encoding::encode_in_envelope::<fidl::encoding::BoundedString<1024>, D>(
4623                    <fidl::encoding::BoundedString<1024> as fidl::encoding::ValueTypeMarker>::borrow(val),
4624                    encoder, offset + 8, _depth
4625                )
4626            }
4627            StringSelector::ExactMatch(ref val) => {
4628                fidl::encoding::encode_in_envelope::<fidl::encoding::BoundedString<1024>, D>(
4629                    <fidl::encoding::BoundedString<1024> as fidl::encoding::ValueTypeMarker>::borrow(val),
4630                    encoder, offset + 8, _depth
4631                )
4632            }
4633            StringSelector::__SourceBreaking { .. } => Err(fidl::Error::UnknownUnionTag),
4634        }
4635        }
4636    }
4637
4638    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for StringSelector {
4639        #[inline(always)]
4640        fn new_empty() -> Self {
4641            Self::__SourceBreaking { unknown_ordinal: 0 }
4642        }
4643
4644        #[inline]
4645        unsafe fn decode(
4646            &mut self,
4647            decoder: &mut fidl::encoding::Decoder<'_, D>,
4648            offset: usize,
4649            mut depth: fidl::encoding::Depth,
4650        ) -> fidl::Result<()> {
4651            decoder.debug_check_bounds::<Self>(offset);
4652            #[allow(unused_variables)]
4653            let next_out_of_line = decoder.next_out_of_line();
4654            let handles_before = decoder.remaining_handles();
4655            let (ordinal, inlined, num_bytes, num_handles) =
4656                fidl::encoding::decode_union_inline_portion(decoder, offset)?;
4657
4658            let member_inline_size = match ordinal {
4659                1 => {
4660                    <fidl::encoding::BoundedString<1024> as fidl::encoding::TypeMarker>::inline_size(
4661                        decoder.context,
4662                    )
4663                }
4664                2 => {
4665                    <fidl::encoding::BoundedString<1024> as fidl::encoding::TypeMarker>::inline_size(
4666                        decoder.context,
4667                    )
4668                }
4669                0 => return Err(fidl::Error::UnknownUnionTag),
4670                _ => num_bytes as usize,
4671            };
4672
4673            if inlined != (member_inline_size <= 4) {
4674                return Err(fidl::Error::InvalidInlineBitInEnvelope);
4675            }
4676            let _inner_offset;
4677            if inlined {
4678                decoder.check_inline_envelope_padding(offset + 8, member_inline_size)?;
4679                _inner_offset = offset + 8;
4680            } else {
4681                depth.increment()?;
4682                _inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4683            }
4684            match ordinal {
4685                1 => {
4686                    #[allow(irrefutable_let_patterns)]
4687                    if let StringSelector::StringPattern(_) = self {
4688                        // Do nothing, read the value into the object
4689                    } else {
4690                        // Initialize `self` to the right variant
4691                        *self = StringSelector::StringPattern(fidl::new_empty!(
4692                            fidl::encoding::BoundedString<1024>,
4693                            D
4694                        ));
4695                    }
4696                    #[allow(irrefutable_let_patterns)]
4697                    if let StringSelector::StringPattern(ref mut val) = self {
4698                        fidl::decode!(
4699                            fidl::encoding::BoundedString<1024>,
4700                            D,
4701                            val,
4702                            decoder,
4703                            _inner_offset,
4704                            depth
4705                        )?;
4706                    } else {
4707                        unreachable!()
4708                    }
4709                }
4710                2 => {
4711                    #[allow(irrefutable_let_patterns)]
4712                    if let StringSelector::ExactMatch(_) = self {
4713                        // Do nothing, read the value into the object
4714                    } else {
4715                        // Initialize `self` to the right variant
4716                        *self = StringSelector::ExactMatch(fidl::new_empty!(
4717                            fidl::encoding::BoundedString<1024>,
4718                            D
4719                        ));
4720                    }
4721                    #[allow(irrefutable_let_patterns)]
4722                    if let StringSelector::ExactMatch(ref mut val) = self {
4723                        fidl::decode!(
4724                            fidl::encoding::BoundedString<1024>,
4725                            D,
4726                            val,
4727                            decoder,
4728                            _inner_offset,
4729                            depth
4730                        )?;
4731                    } else {
4732                        unreachable!()
4733                    }
4734                }
4735                #[allow(deprecated)]
4736                ordinal => {
4737                    for _ in 0..num_handles {
4738                        decoder.drop_next_handle()?;
4739                    }
4740                    *self = StringSelector::__SourceBreaking { unknown_ordinal: ordinal };
4741                }
4742            }
4743            if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize) {
4744                return Err(fidl::Error::InvalidNumBytesInEnvelope);
4745            }
4746            if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4747                return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4748            }
4749            Ok(())
4750        }
4751    }
4752
4753    impl fidl::encoding::ValueTypeMarker for TreeNames {
4754        type Borrowed<'a> = &'a Self;
4755        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4756            value
4757        }
4758    }
4759
4760    unsafe impl fidl::encoding::TypeMarker for TreeNames {
4761        type Owned = Self;
4762
4763        #[inline(always)]
4764        fn inline_align(_context: fidl::encoding::Context) -> usize {
4765            8
4766        }
4767
4768        #[inline(always)]
4769        fn inline_size(_context: fidl::encoding::Context) -> usize {
4770            16
4771        }
4772    }
4773
4774    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<TreeNames, D>
4775        for &TreeNames
4776    {
4777        #[inline]
4778        unsafe fn encode(
4779            self,
4780            encoder: &mut fidl::encoding::Encoder<'_, D>,
4781            offset: usize,
4782            _depth: fidl::encoding::Depth,
4783        ) -> fidl::Result<()> {
4784            encoder.debug_check_bounds::<TreeNames>(offset);
4785            encoder.write_num::<u64>(self.ordinal(), offset);
4786            match self {
4787            TreeNames::Some(ref val) => {
4788                fidl::encoding::encode_in_envelope::<fidl::encoding::UnboundedVector<fidl::encoding::BoundedString<1024>>, D>(
4789                    <fidl::encoding::UnboundedVector<fidl::encoding::BoundedString<1024>> as fidl::encoding::ValueTypeMarker>::borrow(val),
4790                    encoder, offset + 8, _depth
4791                )
4792            }
4793            TreeNames::All(ref val) => {
4794                fidl::encoding::encode_in_envelope::<All, D>(
4795                    <All as fidl::encoding::ValueTypeMarker>::borrow(val),
4796                    encoder, offset + 8, _depth
4797                )
4798            }
4799            TreeNames::__SourceBreaking { .. } => Err(fidl::Error::UnknownUnionTag),
4800        }
4801        }
4802    }
4803
4804    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for TreeNames {
4805        #[inline(always)]
4806        fn new_empty() -> Self {
4807            Self::__SourceBreaking { unknown_ordinal: 0 }
4808        }
4809
4810        #[inline]
4811        unsafe fn decode(
4812            &mut self,
4813            decoder: &mut fidl::encoding::Decoder<'_, D>,
4814            offset: usize,
4815            mut depth: fidl::encoding::Depth,
4816        ) -> fidl::Result<()> {
4817            decoder.debug_check_bounds::<Self>(offset);
4818            #[allow(unused_variables)]
4819            let next_out_of_line = decoder.next_out_of_line();
4820            let handles_before = decoder.remaining_handles();
4821            let (ordinal, inlined, num_bytes, num_handles) =
4822                fidl::encoding::decode_union_inline_portion(decoder, offset)?;
4823
4824            let member_inline_size = match ordinal {
4825            1 => <fidl::encoding::UnboundedVector<fidl::encoding::BoundedString<1024>> as fidl::encoding::TypeMarker>::inline_size(decoder.context),
4826            2 => <All as fidl::encoding::TypeMarker>::inline_size(decoder.context),
4827            0 => return Err(fidl::Error::UnknownUnionTag),
4828            _ => num_bytes as usize,
4829        };
4830
4831            if inlined != (member_inline_size <= 4) {
4832                return Err(fidl::Error::InvalidInlineBitInEnvelope);
4833            }
4834            let _inner_offset;
4835            if inlined {
4836                decoder.check_inline_envelope_padding(offset + 8, member_inline_size)?;
4837                _inner_offset = offset + 8;
4838            } else {
4839                depth.increment()?;
4840                _inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4841            }
4842            match ordinal {
4843                1 => {
4844                    #[allow(irrefutable_let_patterns)]
4845                    if let TreeNames::Some(_) = self {
4846                        // Do nothing, read the value into the object
4847                    } else {
4848                        // Initialize `self` to the right variant
4849                        *self = TreeNames::Some(fidl::new_empty!(
4850                            fidl::encoding::UnboundedVector<fidl::encoding::BoundedString<1024>>,
4851                            D
4852                        ));
4853                    }
4854                    #[allow(irrefutable_let_patterns)]
4855                    if let TreeNames::Some(ref mut val) = self {
4856                        fidl::decode!(
4857                            fidl::encoding::UnboundedVector<fidl::encoding::BoundedString<1024>>,
4858                            D,
4859                            val,
4860                            decoder,
4861                            _inner_offset,
4862                            depth
4863                        )?;
4864                    } else {
4865                        unreachable!()
4866                    }
4867                }
4868                2 => {
4869                    #[allow(irrefutable_let_patterns)]
4870                    if let TreeNames::All(_) = self {
4871                        // Do nothing, read the value into the object
4872                    } else {
4873                        // Initialize `self` to the right variant
4874                        *self = TreeNames::All(fidl::new_empty!(All, D));
4875                    }
4876                    #[allow(irrefutable_let_patterns)]
4877                    if let TreeNames::All(ref mut val) = self {
4878                        fidl::decode!(All, D, val, decoder, _inner_offset, depth)?;
4879                    } else {
4880                        unreachable!()
4881                    }
4882                }
4883                #[allow(deprecated)]
4884                ordinal => {
4885                    for _ in 0..num_handles {
4886                        decoder.drop_next_handle()?;
4887                    }
4888                    *self = TreeNames::__SourceBreaking { unknown_ordinal: ordinal };
4889                }
4890            }
4891            if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize) {
4892                return Err(fidl::Error::InvalidNumBytesInEnvelope);
4893            }
4894            if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4895                return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4896            }
4897            Ok(())
4898        }
4899    }
4900
4901    impl fidl::encoding::ValueTypeMarker for TreeSelector {
4902        type Borrowed<'a> = &'a Self;
4903        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4904            value
4905        }
4906    }
4907
4908    unsafe impl fidl::encoding::TypeMarker for TreeSelector {
4909        type Owned = Self;
4910
4911        #[inline(always)]
4912        fn inline_align(_context: fidl::encoding::Context) -> usize {
4913            8
4914        }
4915
4916        #[inline(always)]
4917        fn inline_size(_context: fidl::encoding::Context) -> usize {
4918            16
4919        }
4920    }
4921
4922    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<TreeSelector, D>
4923        for &TreeSelector
4924    {
4925        #[inline]
4926        unsafe fn encode(
4927            self,
4928            encoder: &mut fidl::encoding::Encoder<'_, D>,
4929            offset: usize,
4930            _depth: fidl::encoding::Depth,
4931        ) -> fidl::Result<()> {
4932            encoder.debug_check_bounds::<TreeSelector>(offset);
4933            encoder.write_num::<u64>(self.ordinal(), offset);
4934            match self {
4935                TreeSelector::SubtreeSelector(ref val) => {
4936                    fidl::encoding::encode_in_envelope::<SubtreeSelector, D>(
4937                        <SubtreeSelector as fidl::encoding::ValueTypeMarker>::borrow(val),
4938                        encoder,
4939                        offset + 8,
4940                        _depth,
4941                    )
4942                }
4943                TreeSelector::PropertySelector(ref val) => {
4944                    fidl::encoding::encode_in_envelope::<PropertySelector, D>(
4945                        <PropertySelector as fidl::encoding::ValueTypeMarker>::borrow(val),
4946                        encoder,
4947                        offset + 8,
4948                        _depth,
4949                    )
4950                }
4951                TreeSelector::__SourceBreaking { .. } => Err(fidl::Error::UnknownUnionTag),
4952            }
4953        }
4954    }
4955
4956    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for TreeSelector {
4957        #[inline(always)]
4958        fn new_empty() -> Self {
4959            Self::__SourceBreaking { unknown_ordinal: 0 }
4960        }
4961
4962        #[inline]
4963        unsafe fn decode(
4964            &mut self,
4965            decoder: &mut fidl::encoding::Decoder<'_, D>,
4966            offset: usize,
4967            mut depth: fidl::encoding::Depth,
4968        ) -> fidl::Result<()> {
4969            decoder.debug_check_bounds::<Self>(offset);
4970            #[allow(unused_variables)]
4971            let next_out_of_line = decoder.next_out_of_line();
4972            let handles_before = decoder.remaining_handles();
4973            let (ordinal, inlined, num_bytes, num_handles) =
4974                fidl::encoding::decode_union_inline_portion(decoder, offset)?;
4975
4976            let member_inline_size = match ordinal {
4977                1 => <SubtreeSelector as fidl::encoding::TypeMarker>::inline_size(decoder.context),
4978                2 => <PropertySelector as fidl::encoding::TypeMarker>::inline_size(decoder.context),
4979                0 => return Err(fidl::Error::UnknownUnionTag),
4980                _ => num_bytes as usize,
4981            };
4982
4983            if inlined != (member_inline_size <= 4) {
4984                return Err(fidl::Error::InvalidInlineBitInEnvelope);
4985            }
4986            let _inner_offset;
4987            if inlined {
4988                decoder.check_inline_envelope_padding(offset + 8, member_inline_size)?;
4989                _inner_offset = offset + 8;
4990            } else {
4991                depth.increment()?;
4992                _inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4993            }
4994            match ordinal {
4995                1 => {
4996                    #[allow(irrefutable_let_patterns)]
4997                    if let TreeSelector::SubtreeSelector(_) = self {
4998                        // Do nothing, read the value into the object
4999                    } else {
5000                        // Initialize `self` to the right variant
5001                        *self = TreeSelector::SubtreeSelector(fidl::new_empty!(SubtreeSelector, D));
5002                    }
5003                    #[allow(irrefutable_let_patterns)]
5004                    if let TreeSelector::SubtreeSelector(ref mut val) = self {
5005                        fidl::decode!(SubtreeSelector, D, val, decoder, _inner_offset, depth)?;
5006                    } else {
5007                        unreachable!()
5008                    }
5009                }
5010                2 => {
5011                    #[allow(irrefutable_let_patterns)]
5012                    if let TreeSelector::PropertySelector(_) = self {
5013                        // Do nothing, read the value into the object
5014                    } else {
5015                        // Initialize `self` to the right variant
5016                        *self =
5017                            TreeSelector::PropertySelector(fidl::new_empty!(PropertySelector, D));
5018                    }
5019                    #[allow(irrefutable_let_patterns)]
5020                    if let TreeSelector::PropertySelector(ref mut val) = self {
5021                        fidl::decode!(PropertySelector, D, val, decoder, _inner_offset, depth)?;
5022                    } else {
5023                        unreachable!()
5024                    }
5025                }
5026                #[allow(deprecated)]
5027                ordinal => {
5028                    for _ in 0..num_handles {
5029                        decoder.drop_next_handle()?;
5030                    }
5031                    *self = TreeSelector::__SourceBreaking { unknown_ordinal: ordinal };
5032                }
5033            }
5034            if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize) {
5035                return Err(fidl::Error::InvalidNumBytesInEnvelope);
5036            }
5037            if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5038                return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5039            }
5040            Ok(())
5041        }
5042    }
5043}