fidl_fuchsia_component_runtime/
fidl_fuchsia_component_runtime.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::client::QueryResponseFut;
8use fidl::encoding::{MessageBufFor, ProxyChannelBox, ResourceDialect};
9use fidl::endpoints::{ControlHandle as _, Responder as _};
10pub use fidl_fuchsia_component_runtime__common::*;
11use futures::future::{self, MaybeDone, TryFutureExt};
12use zx_status;
13
14#[derive(Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
15pub struct CapabilitiesCapabilityAssociateHandleRequest {
16    pub capability_handle: fidl::EventPair,
17    pub other_handle: fidl::EventPair,
18}
19
20impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect>
21    for CapabilitiesCapabilityAssociateHandleRequest
22{
23}
24
25#[derive(Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
26pub struct CapabilitiesConnectorCreateRequest {
27    pub connector: fidl::EventPair,
28    pub receiver_client_end: fidl::endpoints::ClientEnd<ReceiverMarker>,
29}
30
31impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect>
32    for CapabilitiesConnectorCreateRequest
33{
34}
35
36#[derive(Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
37pub struct CapabilitiesConnectorOpenRequest {
38    pub connector: fidl::EventPair,
39    pub channel: fidl::Channel,
40}
41
42impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect>
43    for CapabilitiesConnectorOpenRequest
44{
45}
46
47#[derive(Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
48pub struct CapabilitiesConnectorRouterCreateRequest {
49    pub router: fidl::EventPair,
50    pub router_client_end: fidl::endpoints::ClientEnd<ConnectorRouterMarker>,
51}
52
53impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect>
54    for CapabilitiesConnectorRouterCreateRequest
55{
56}
57
58#[derive(Debug, PartialEq)]
59pub struct CapabilitiesConnectorRouterRouteRequest {
60    pub router: fidl::EventPair,
61    pub request: RouteRequest,
62    pub instance_token: fidl::EventPair,
63    pub connector: fidl::EventPair,
64}
65
66impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect>
67    for CapabilitiesConnectorRouterRouteRequest
68{
69}
70
71#[derive(Debug, PartialEq)]
72pub struct CapabilitiesDataCreateRequest {
73    pub data_handle: fidl::EventPair,
74    pub data: Data,
75}
76
77impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect>
78    for CapabilitiesDataCreateRequest
79{
80}
81
82#[derive(Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
83pub struct CapabilitiesDataGetRequest {
84    pub data_handle: fidl::EventPair,
85}
86
87impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect>
88    for CapabilitiesDataGetRequest
89{
90}
91
92#[derive(Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
93pub struct CapabilitiesDataRouterCreateRequest {
94    pub router: fidl::EventPair,
95    pub router_client_end: fidl::endpoints::ClientEnd<DataRouterMarker>,
96}
97
98impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect>
99    for CapabilitiesDataRouterCreateRequest
100{
101}
102
103#[derive(Debug, PartialEq)]
104pub struct CapabilitiesDataRouterRouteRequest {
105    pub router: fidl::EventPair,
106    pub request: RouteRequest,
107    pub instance_token: fidl::EventPair,
108    pub data: fidl::EventPair,
109}
110
111impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect>
112    for CapabilitiesDataRouterRouteRequest
113{
114}
115
116#[derive(Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
117pub struct CapabilitiesDictionaryCreateRequest {
118    pub dictionary: fidl::EventPair,
119}
120
121impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect>
122    for CapabilitiesDictionaryCreateRequest
123{
124}
125
126#[derive(Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
127pub struct CapabilitiesDictionaryGetRequest {
128    pub dictionary: fidl::EventPair,
129    pub key: String,
130    pub value: fidl::EventPair,
131}
132
133impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect>
134    for CapabilitiesDictionaryGetRequest
135{
136}
137
138#[derive(Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
139pub struct CapabilitiesDictionaryInsertRequest {
140    pub dictionary: fidl::EventPair,
141    pub key: String,
142    pub value: fidl::EventPair,
143}
144
145impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect>
146    for CapabilitiesDictionaryInsertRequest
147{
148}
149
150#[derive(Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
151pub struct CapabilitiesDictionaryIterateKeysRequest {
152    pub dictionary: fidl::EventPair,
153    pub key_iterator: fidl::endpoints::ServerEnd<DictionaryKeyIteratorMarker>,
154}
155
156impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect>
157    for CapabilitiesDictionaryIterateKeysRequest
158{
159}
160
161#[derive(Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
162pub struct CapabilitiesDictionaryRouterCreateRequest {
163    pub router: fidl::EventPair,
164    pub router_client_end: fidl::endpoints::ClientEnd<DictionaryRouterMarker>,
165}
166
167impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect>
168    for CapabilitiesDictionaryRouterCreateRequest
169{
170}
171
172#[derive(Debug, PartialEq)]
173pub struct CapabilitiesDictionaryRouterRouteRequest {
174    pub router: fidl::EventPair,
175    pub request: RouteRequest,
176    pub instance_token: fidl::EventPair,
177    pub dictionary: fidl::EventPair,
178}
179
180impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect>
181    for CapabilitiesDictionaryRouterRouteRequest
182{
183}
184
185#[derive(Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
186pub struct CapabilitiesDirConnectorCreateRequest {
187    pub dir_connector: fidl::EventPair,
188    pub receiver_client_end: fidl::endpoints::ClientEnd<DirReceiverMarker>,
189}
190
191impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect>
192    for CapabilitiesDirConnectorCreateRequest
193{
194}
195
196#[derive(Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
197pub struct CapabilitiesDirConnectorRouterCreateRequest {
198    pub router: fidl::EventPair,
199    pub router_client_end: fidl::endpoints::ClientEnd<DirConnectorRouterMarker>,
200}
201
202impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect>
203    for CapabilitiesDirConnectorRouterCreateRequest
204{
205}
206
207#[derive(Debug, PartialEq)]
208pub struct CapabilitiesDirConnectorRouterRouteRequest {
209    pub router: fidl::EventPair,
210    pub request: RouteRequest,
211    pub instance_token: fidl::EventPair,
212    pub dir_connector: fidl::EventPair,
213}
214
215impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect>
216    for CapabilitiesDirConnectorRouterRouteRequest
217{
218}
219
220#[derive(Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
221pub struct CapabilitiesInstanceTokenCreateRequest {
222    pub instance_token: fidl::EventPair,
223}
224
225impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect>
226    for CapabilitiesInstanceTokenCreateRequest
227{
228}
229
230#[derive(Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
231pub struct CapabilitiesDictionaryGetResponse {
232    pub capability_type: CapabilityType,
233}
234
235impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect>
236    for CapabilitiesDictionaryGetResponse
237{
238}
239
240#[derive(Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
241pub struct CapabilitiesDictionaryRemoveResponse {
242    pub capability_type: CapabilityType,
243}
244
245impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect>
246    for CapabilitiesDictionaryRemoveResponse
247{
248}
249
250#[derive(Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
251pub struct CapabilityFactoryCreateConnectorRequest {
252    pub receiver_client_end: fidl::endpoints::ClientEnd<ReceiverMarker>,
253    pub connector_server_end: fidl::endpoints::ServerEnd<ConnectorMarker>,
254}
255
256impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect>
257    for CapabilityFactoryCreateConnectorRequest
258{
259}
260
261#[derive(Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
262pub struct CapabilityFactoryCreateConnectorRouterRequest {
263    pub router_client_end: fidl::endpoints::ClientEnd<ConnectorRouterDeprecatedMarker>,
264    pub router_server_end: fidl::endpoints::ServerEnd<ConnectorRouterDeprecatedMarker>,
265}
266
267impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect>
268    for CapabilityFactoryCreateConnectorRouterRequest
269{
270}
271
272#[derive(Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
273pub struct CapabilityFactoryCreateDataRouterRequest {
274    pub router_client_end: fidl::endpoints::ClientEnd<DataRouterDeprecatedMarker>,
275    pub router_server_end: fidl::endpoints::ServerEnd<DataRouterDeprecatedMarker>,
276}
277
278impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect>
279    for CapabilityFactoryCreateDataRouterRequest
280{
281}
282
283#[derive(Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
284pub struct CapabilityFactoryCreateDictionaryRequest {
285    pub dictionary_server_end: fidl::endpoints::ServerEnd<DictionaryMarker>,
286}
287
288impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect>
289    for CapabilityFactoryCreateDictionaryRequest
290{
291}
292
293#[derive(Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
294pub struct CapabilityFactoryCreateDictionaryRouterRequest {
295    pub router_client_end: fidl::endpoints::ClientEnd<DictionaryRouterDeprecatedMarker>,
296    pub router_server_end: fidl::endpoints::ServerEnd<DictionaryRouterDeprecatedMarker>,
297}
298
299impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect>
300    for CapabilityFactoryCreateDictionaryRouterRequest
301{
302}
303
304#[derive(Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
305pub struct CapabilityFactoryCreateDirConnectorRequest {
306    pub dir_receiver_client_end: fidl::endpoints::ClientEnd<DirReceiverDeprecatedMarker>,
307    pub dir_connector_server_end: fidl::endpoints::ServerEnd<DirConnectorMarker>,
308}
309
310impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect>
311    for CapabilityFactoryCreateDirConnectorRequest
312{
313}
314
315#[derive(Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
316pub struct CapabilityFactoryCreateDirConnectorRouterRequest {
317    pub router_client_end: fidl::endpoints::ClientEnd<DirConnectorRouterDeprecatedMarker>,
318    pub router_server_end: fidl::endpoints::ServerEnd<DirConnectorRouterDeprecatedMarker>,
319}
320
321impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect>
322    for CapabilityFactoryCreateDirConnectorRouterRequest
323{
324}
325
326#[derive(Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
327pub struct ConnectorConnectRequest {
328    pub channel: fidl::Channel,
329}
330
331impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect> for ConnectorConnectRequest {}
332
333#[derive(Debug, PartialEq)]
334pub struct ConnectorRouterDeprecatedRouteRequest {
335    pub request: DeprecatedRouteRequest,
336    pub connector_server_end: fidl::endpoints::ServerEnd<ConnectorMarker>,
337}
338
339impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect>
340    for ConnectorRouterDeprecatedRouteRequest
341{
342}
343
344#[derive(Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
345pub struct ConnectorRouterDeprecatedRouteResponse {
346    pub response: RouterResponse,
347}
348
349impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect>
350    for ConnectorRouterDeprecatedRouteResponse
351{
352}
353
354#[derive(Debug, PartialEq)]
355pub struct ConnectorRouterRouteRequest {
356    pub request: RouteRequest,
357    pub instance_token: fidl::EventPair,
358    pub handle: fidl::EventPair,
359}
360
361impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect>
362    for ConnectorRouterRouteRequest
363{
364}
365
366#[derive(Debug, PartialEq)]
367pub struct DataRouterDeprecatedRouteRequest {
368    pub request: DeprecatedRouteRequest,
369}
370
371impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect>
372    for DataRouterDeprecatedRouteRequest
373{
374}
375
376#[derive(Debug, PartialEq)]
377pub struct DataRouterDeprecatedRouteResponse {
378    pub response: RouterResponse,
379    pub data: Option<Box<Data>>,
380}
381
382impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect>
383    for DataRouterDeprecatedRouteResponse
384{
385}
386
387#[derive(Debug, PartialEq)]
388pub struct DataRouterRouteRequest {
389    pub request: RouteRequest,
390    pub instance_token: fidl::EventPair,
391    pub handle: fidl::EventPair,
392}
393
394impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect> for DataRouterRouteRequest {}
395
396#[derive(Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
397pub struct DictionaryGetRequest {
398    pub key: String,
399}
400
401impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect> for DictionaryGetRequest {}
402
403#[derive(Debug, PartialEq)]
404pub struct DictionaryInsertRequest {
405    pub key: String,
406    pub capability: CapabilityDeprecated,
407}
408
409impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect> for DictionaryInsertRequest {}
410
411#[derive(Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
412pub struct DictionaryIterateKeysRequest {
413    pub key_iterator: fidl::endpoints::ServerEnd<DictionaryKeyIteratorMarker>,
414}
415
416impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect>
417    for DictionaryIterateKeysRequest
418{
419}
420
421#[derive(Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
422pub struct DictionaryRemoveRequest {
423    pub key: String,
424}
425
426impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect> for DictionaryRemoveRequest {}
427
428#[derive(Debug, PartialEq)]
429pub struct DictionaryRouterDeprecatedRouteRequest {
430    pub request: DeprecatedRouteRequest,
431    pub dictionary_server_end: fidl::endpoints::ServerEnd<DictionaryMarker>,
432}
433
434impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect>
435    for DictionaryRouterDeprecatedRouteRequest
436{
437}
438
439#[derive(Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
440pub struct DictionaryRouterDeprecatedRouteResponse {
441    pub response: RouterResponse,
442}
443
444impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect>
445    for DictionaryRouterDeprecatedRouteResponse
446{
447}
448
449#[derive(Debug, PartialEq)]
450pub struct DictionaryRouterRouteRequest {
451    pub request: RouteRequest,
452    pub instance_token: fidl::EventPair,
453    pub handle: fidl::EventPair,
454}
455
456impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect>
457    for DictionaryRouterRouteRequest
458{
459}
460
461#[derive(Debug, PartialEq)]
462pub struct DictionaryGetResponse {
463    pub capability: Option<Box<CapabilityDeprecated>>,
464}
465
466impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect> for DictionaryGetResponse {}
467
468#[derive(Debug, PartialEq)]
469pub struct DictionaryLegacyExportResponse {
470    pub dictionary_ref: fidl_fuchsia_component_sandbox::DictionaryRef,
471}
472
473impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect>
474    for DictionaryLegacyExportResponse
475{
476}
477
478#[derive(Debug, PartialEq)]
479pub struct DictionaryRemoveResponse {
480    pub capability: Option<Box<CapabilityDeprecated>>,
481}
482
483impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect> for DictionaryRemoveResponse {}
484
485#[derive(Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
486pub struct DirConnectorConnectRequest {
487    pub channel: fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>,
488}
489
490impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect>
491    for DirConnectorConnectRequest
492{
493}
494
495#[derive(Debug, PartialEq)]
496pub struct DirConnectorRouterDeprecatedRouteRequest {
497    pub request: DeprecatedRouteRequest,
498    pub dir_connector_server_end: fidl::endpoints::ServerEnd<DirConnectorMarker>,
499}
500
501impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect>
502    for DirConnectorRouterDeprecatedRouteRequest
503{
504}
505
506#[derive(Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
507pub struct DirConnectorRouterDeprecatedRouteResponse {
508    pub response: RouterResponse,
509}
510
511impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect>
512    for DirConnectorRouterDeprecatedRouteResponse
513{
514}
515
516#[derive(Debug, PartialEq)]
517pub struct DirConnectorRouterRouteRequest {
518    pub request: RouteRequest,
519    pub instance_token: fidl::EventPair,
520    pub handle: fidl::EventPair,
521}
522
523impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect>
524    for DirConnectorRouterRouteRequest
525{
526}
527
528#[derive(Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
529pub struct DirReceiverDeprecatedReceiveRequest {
530    pub channel: fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>,
531}
532
533impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect>
534    for DirReceiverDeprecatedReceiveRequest
535{
536}
537
538#[derive(Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
539pub struct DirReceiverReceiveRequest {
540    pub channel: fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>,
541    pub path: String,
542    pub rights: fidl_fuchsia_io::Flags,
543}
544
545impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect> for DirReceiverReceiveRequest {}
546
547#[derive(Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
548pub struct ReceiverReceiveRequest {
549    pub channel: fidl::Channel,
550}
551
552impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect> for ReceiverReceiveRequest {}
553
554/// A token representing a component instance.
555#[derive(Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
556pub struct WeakInstanceToken {
557    pub token: fidl::EventPair,
558}
559
560impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect> for WeakInstanceToken {}
561
562#[derive(Debug, Default, PartialEq)]
563pub struct CapabilitiesDictionaryRemoveRequest {
564    pub dictionary: Option<fidl::EventPair>,
565    pub key: Option<String>,
566    pub value: Option<fidl::EventPair>,
567    #[doc(hidden)]
568    pub __source_breaking: fidl::marker::SourceBreaking,
569}
570
571impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect>
572    for CapabilitiesDictionaryRemoveRequest
573{
574}
575
576#[derive(Debug, Default, PartialEq)]
577pub struct CapabilitiesDirConnectorOpenRequest {
578    pub dir_connector: Option<fidl::EventPair>,
579    pub channel: Option<fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>>,
580    pub flags: Option<fidl_fuchsia_io::Flags>,
581    pub path: Option<String>,
582    #[doc(hidden)]
583    pub __source_breaking: fidl::marker::SourceBreaking,
584}
585
586impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect>
587    for CapabilitiesDirConnectorOpenRequest
588{
589}
590
591/// Contains metadata on how to route a capability, and a token representing the
592/// component that started the route.
593///
594/// The contents of `metadata` are data capabilities used by component manager
595/// to track things like the type of the route (e.g. protocol, storage, runner,
596/// ...), the rights on a directory route, and the scope on an event stream
597/// route. Generally an empty dictionary is safe to pass to component manager.
598///
599/// Either both fields must be set, or neither.
600#[derive(Debug, Default, PartialEq)]
601pub struct DeprecatedRouteRequest {
602    pub target: Option<WeakInstanceToken>,
603    pub metadata: Option<fidl::endpoints::ClientEnd<DictionaryMarker>>,
604    #[doc(hidden)]
605    pub __source_breaking: fidl::marker::SourceBreaking,
606}
607
608impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect> for DeprecatedRouteRequest {}
609
610/// Contains metadata on how to route a capability, and a token representing the
611/// component that started the route.
612///
613/// `metadata` is a dictionary, which contains data capabilities used by
614/// component manager to track things like the type of the route (e.g. protocol,
615/// storage, runner, ...), the rights on a directory route, and the scope on an
616/// event stream route. Generally an empty dictionary is safe to pass to
617/// component manager.
618///
619/// Either both fields must be set, or neither.
620#[derive(Debug, Default, PartialEq)]
621pub struct RouteRequest {
622    pub metadata: Option<fidl::EventPair>,
623    #[doc(hidden)]
624    pub __source_breaking: fidl::marker::SourceBreaking,
625}
626
627impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect> for RouteRequest {}
628
629/// A runtime capability in the component framework. These are the fundamental
630/// types used by component manager to implement capability routing and access
631/// control.
632///
633/// Each of these client ends is a reference to an object owned by component
634/// manager.
635#[derive(Debug)]
636pub enum CapabilityDeprecated {
637    Connector(fidl::endpoints::ClientEnd<ConnectorMarker>),
638    DirConnector(fidl::endpoints::ClientEnd<DirConnectorMarker>),
639    Dictionary(fidl::endpoints::ClientEnd<DictionaryMarker>),
640    Data(Data),
641    ConnectorRouter(fidl::endpoints::ClientEnd<ConnectorRouterDeprecatedMarker>),
642    DirConnectorRouter(fidl::endpoints::ClientEnd<DirConnectorRouterDeprecatedMarker>),
643    DictionaryRouter(fidl::endpoints::ClientEnd<DictionaryRouterDeprecatedMarker>),
644    DataRouter(fidl::endpoints::ClientEnd<DataRouterDeprecatedMarker>),
645    #[doc(hidden)]
646    __SourceBreaking {
647        unknown_ordinal: u64,
648    },
649}
650
651/// Pattern that matches an unknown `CapabilityDeprecated` member.
652#[macro_export]
653macro_rules! CapabilityDeprecatedUnknown {
654    () => {
655        _
656    };
657}
658
659// Custom PartialEq so that unknown variants are not equal to themselves.
660impl PartialEq for CapabilityDeprecated {
661    fn eq(&self, other: &Self) -> bool {
662        match (self, other) {
663            (Self::Connector(x), Self::Connector(y)) => *x == *y,
664            (Self::DirConnector(x), Self::DirConnector(y)) => *x == *y,
665            (Self::Dictionary(x), Self::Dictionary(y)) => *x == *y,
666            (Self::Data(x), Self::Data(y)) => *x == *y,
667            (Self::ConnectorRouter(x), Self::ConnectorRouter(y)) => *x == *y,
668            (Self::DirConnectorRouter(x), Self::DirConnectorRouter(y)) => *x == *y,
669            (Self::DictionaryRouter(x), Self::DictionaryRouter(y)) => *x == *y,
670            (Self::DataRouter(x), Self::DataRouter(y)) => *x == *y,
671            _ => false,
672        }
673    }
674}
675
676impl CapabilityDeprecated {
677    #[inline]
678    pub fn ordinal(&self) -> u64 {
679        match *self {
680            Self::Connector(_) => 1,
681            Self::DirConnector(_) => 2,
682            Self::Dictionary(_) => 3,
683            Self::Data(_) => 4,
684            Self::ConnectorRouter(_) => 5,
685            Self::DirConnectorRouter(_) => 6,
686            Self::DictionaryRouter(_) => 7,
687            Self::DataRouter(_) => 8,
688            Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
689        }
690    }
691
692    #[inline]
693    pub fn unknown_variant_for_testing() -> Self {
694        Self::__SourceBreaking { unknown_ordinal: 0 }
695    }
696
697    #[inline]
698    pub fn is_unknown(&self) -> bool {
699        match self {
700            Self::__SourceBreaking { .. } => true,
701            _ => false,
702        }
703    }
704}
705
706impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect> for CapabilityDeprecated {}
707
708#[derive(Debug, Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash)]
709pub struct CapabilitiesMarker;
710
711impl fidl::endpoints::ProtocolMarker for CapabilitiesMarker {
712    type Proxy = CapabilitiesProxy;
713    type RequestStream = CapabilitiesRequestStream;
714    #[cfg(target_os = "fuchsia")]
715    type SynchronousProxy = CapabilitiesSynchronousProxy;
716
717    const DEBUG_NAME: &'static str = "fuchsia.component.runtime.Capabilities";
718}
719impl fidl::endpoints::DiscoverableProtocolMarker for CapabilitiesMarker {}
720pub type CapabilitiesConnectorCreateResult = Result<(), CapabilitiesError>;
721pub type CapabilitiesDirConnectorCreateResult = Result<(), CapabilitiesError>;
722pub type CapabilitiesDictionaryCreateResult = Result<(), CapabilitiesError>;
723pub type CapabilitiesDataCreateResult = Result<(), CapabilitiesError>;
724pub type CapabilitiesConnectorRouterCreateResult = Result<(), CapabilitiesError>;
725pub type CapabilitiesDirConnectorRouterCreateResult = Result<(), CapabilitiesError>;
726pub type CapabilitiesDictionaryRouterCreateResult = Result<(), CapabilitiesError>;
727pub type CapabilitiesDataRouterCreateResult = Result<(), CapabilitiesError>;
728pub type CapabilitiesInstanceTokenCreateResult = Result<(), CapabilitiesError>;
729pub type CapabilitiesConnectorOpenResult = Result<(), CapabilitiesError>;
730pub type CapabilitiesDirConnectorOpenResult = Result<(), CapabilitiesError>;
731pub type CapabilitiesDictionaryInsertResult = Result<(), CapabilitiesError>;
732pub type CapabilitiesDictionaryGetResult = Result<CapabilityType, CapabilitiesError>;
733pub type CapabilitiesDictionaryRemoveResult = Result<CapabilityType, CapabilitiesError>;
734pub type CapabilitiesDictionaryIterateKeysResult = Result<(), CapabilitiesError>;
735pub type CapabilitiesDataGetResult = Result<Data, CapabilitiesError>;
736pub type CapabilitiesConnectorRouterRouteResult = Result<RouterResponse, i32>;
737pub type CapabilitiesDirConnectorRouterRouteResult = Result<RouterResponse, i32>;
738pub type CapabilitiesDictionaryRouterRouteResult = Result<RouterResponse, i32>;
739pub type CapabilitiesDataRouterRouteResult = Result<RouterResponse, i32>;
740pub type CapabilitiesCapabilityAssociateHandleResult = Result<(), CapabilitiesError>;
741
742pub trait CapabilitiesProxyInterface: Send + Sync {
743    type ConnectorCreateResponseFut: std::future::Future<Output = Result<CapabilitiesConnectorCreateResult, fidl::Error>>
744        + Send;
745    fn r#connector_create(
746        &self,
747        connector: fidl::EventPair,
748        receiver_client_end: fidl::endpoints::ClientEnd<ReceiverMarker>,
749    ) -> Self::ConnectorCreateResponseFut;
750    type DirConnectorCreateResponseFut: std::future::Future<Output = Result<CapabilitiesDirConnectorCreateResult, fidl::Error>>
751        + Send;
752    fn r#dir_connector_create(
753        &self,
754        dir_connector: fidl::EventPair,
755        receiver_client_end: fidl::endpoints::ClientEnd<DirReceiverMarker>,
756    ) -> Self::DirConnectorCreateResponseFut;
757    type DictionaryCreateResponseFut: std::future::Future<Output = Result<CapabilitiesDictionaryCreateResult, fidl::Error>>
758        + Send;
759    fn r#dictionary_create(&self, dictionary: fidl::EventPair)
760    -> Self::DictionaryCreateResponseFut;
761    type DataCreateResponseFut: std::future::Future<Output = Result<CapabilitiesDataCreateResult, fidl::Error>>
762        + Send;
763    fn r#data_create(
764        &self,
765        data_handle: fidl::EventPair,
766        data: &Data,
767    ) -> Self::DataCreateResponseFut;
768    type ConnectorRouterCreateResponseFut: std::future::Future<Output = Result<CapabilitiesConnectorRouterCreateResult, fidl::Error>>
769        + Send;
770    fn r#connector_router_create(
771        &self,
772        router: fidl::EventPair,
773        router_client_end: fidl::endpoints::ClientEnd<ConnectorRouterMarker>,
774    ) -> Self::ConnectorRouterCreateResponseFut;
775    type DirConnectorRouterCreateResponseFut: std::future::Future<
776            Output = Result<CapabilitiesDirConnectorRouterCreateResult, fidl::Error>,
777        > + Send;
778    fn r#dir_connector_router_create(
779        &self,
780        router: fidl::EventPair,
781        router_client_end: fidl::endpoints::ClientEnd<DirConnectorRouterMarker>,
782    ) -> Self::DirConnectorRouterCreateResponseFut;
783    type DictionaryRouterCreateResponseFut: std::future::Future<Output = Result<CapabilitiesDictionaryRouterCreateResult, fidl::Error>>
784        + Send;
785    fn r#dictionary_router_create(
786        &self,
787        router: fidl::EventPair,
788        router_client_end: fidl::endpoints::ClientEnd<DictionaryRouterMarker>,
789    ) -> Self::DictionaryRouterCreateResponseFut;
790    type DataRouterCreateResponseFut: std::future::Future<Output = Result<CapabilitiesDataRouterCreateResult, fidl::Error>>
791        + Send;
792    fn r#data_router_create(
793        &self,
794        router: fidl::EventPair,
795        router_client_end: fidl::endpoints::ClientEnd<DataRouterMarker>,
796    ) -> Self::DataRouterCreateResponseFut;
797    type InstanceTokenCreateResponseFut: std::future::Future<Output = Result<CapabilitiesInstanceTokenCreateResult, fidl::Error>>
798        + Send;
799    fn r#instance_token_create(
800        &self,
801        instance_token: fidl::EventPair,
802    ) -> Self::InstanceTokenCreateResponseFut;
803    type ConnectorOpenResponseFut: std::future::Future<Output = Result<CapabilitiesConnectorOpenResult, fidl::Error>>
804        + Send;
805    fn r#connector_open(
806        &self,
807        connector: fidl::EventPair,
808        channel: fidl::Channel,
809    ) -> Self::ConnectorOpenResponseFut;
810    type DirConnectorOpenResponseFut: std::future::Future<Output = Result<CapabilitiesDirConnectorOpenResult, fidl::Error>>
811        + Send;
812    fn r#dir_connector_open(
813        &self,
814        payload: CapabilitiesDirConnectorOpenRequest,
815    ) -> Self::DirConnectorOpenResponseFut;
816    type DictionaryInsertResponseFut: std::future::Future<Output = Result<CapabilitiesDictionaryInsertResult, fidl::Error>>
817        + Send;
818    fn r#dictionary_insert(
819        &self,
820        dictionary: fidl::EventPair,
821        key: &str,
822        value: fidl::EventPair,
823    ) -> Self::DictionaryInsertResponseFut;
824    type DictionaryGetResponseFut: std::future::Future<Output = Result<CapabilitiesDictionaryGetResult, fidl::Error>>
825        + Send;
826    fn r#dictionary_get(
827        &self,
828        dictionary: fidl::EventPair,
829        key: &str,
830        value: fidl::EventPair,
831    ) -> Self::DictionaryGetResponseFut;
832    type DictionaryRemoveResponseFut: std::future::Future<Output = Result<CapabilitiesDictionaryRemoveResult, fidl::Error>>
833        + Send;
834    fn r#dictionary_remove(
835        &self,
836        payload: CapabilitiesDictionaryRemoveRequest,
837    ) -> Self::DictionaryRemoveResponseFut;
838    type DictionaryIterateKeysResponseFut: std::future::Future<Output = Result<CapabilitiesDictionaryIterateKeysResult, fidl::Error>>
839        + Send;
840    fn r#dictionary_iterate_keys(
841        &self,
842        dictionary: fidl::EventPair,
843        key_iterator: fidl::endpoints::ServerEnd<DictionaryKeyIteratorMarker>,
844    ) -> Self::DictionaryIterateKeysResponseFut;
845    type DataGetResponseFut: std::future::Future<Output = Result<CapabilitiesDataGetResult, fidl::Error>>
846        + Send;
847    fn r#data_get(&self, data_handle: fidl::EventPair) -> Self::DataGetResponseFut;
848    type ConnectorRouterRouteResponseFut: std::future::Future<Output = Result<CapabilitiesConnectorRouterRouteResult, fidl::Error>>
849        + Send;
850    fn r#connector_router_route(
851        &self,
852        router: fidl::EventPair,
853        request: RouteRequest,
854        instance_token: fidl::EventPair,
855        connector: fidl::EventPair,
856    ) -> Self::ConnectorRouterRouteResponseFut;
857    type DirConnectorRouterRouteResponseFut: std::future::Future<Output = Result<CapabilitiesDirConnectorRouterRouteResult, fidl::Error>>
858        + Send;
859    fn r#dir_connector_router_route(
860        &self,
861        router: fidl::EventPair,
862        request: RouteRequest,
863        instance_token: fidl::EventPair,
864        dir_connector: fidl::EventPair,
865    ) -> Self::DirConnectorRouterRouteResponseFut;
866    type DictionaryRouterRouteResponseFut: std::future::Future<Output = Result<CapabilitiesDictionaryRouterRouteResult, fidl::Error>>
867        + Send;
868    fn r#dictionary_router_route(
869        &self,
870        router: fidl::EventPair,
871        request: RouteRequest,
872        instance_token: fidl::EventPair,
873        dictionary: fidl::EventPair,
874    ) -> Self::DictionaryRouterRouteResponseFut;
875    type DataRouterRouteResponseFut: std::future::Future<Output = Result<CapabilitiesDataRouterRouteResult, fidl::Error>>
876        + Send;
877    fn r#data_router_route(
878        &self,
879        router: fidl::EventPair,
880        request: RouteRequest,
881        instance_token: fidl::EventPair,
882        data: fidl::EventPair,
883    ) -> Self::DataRouterRouteResponseFut;
884    type CapabilityAssociateHandleResponseFut: std::future::Future<
885            Output = Result<CapabilitiesCapabilityAssociateHandleResult, fidl::Error>,
886        > + Send;
887    fn r#capability_associate_handle(
888        &self,
889        capability_handle: fidl::EventPair,
890        other_handle: fidl::EventPair,
891    ) -> Self::CapabilityAssociateHandleResponseFut;
892}
893#[derive(Debug)]
894#[cfg(target_os = "fuchsia")]
895pub struct CapabilitiesSynchronousProxy {
896    client: fidl::client::sync::Client,
897}
898
899#[cfg(target_os = "fuchsia")]
900impl fidl::endpoints::SynchronousProxy for CapabilitiesSynchronousProxy {
901    type Proxy = CapabilitiesProxy;
902    type Protocol = CapabilitiesMarker;
903
904    fn from_channel(inner: fidl::Channel) -> Self {
905        Self::new(inner)
906    }
907
908    fn into_channel(self) -> fidl::Channel {
909        self.client.into_channel()
910    }
911
912    fn as_channel(&self) -> &fidl::Channel {
913        self.client.as_channel()
914    }
915}
916
917#[cfg(target_os = "fuchsia")]
918impl CapabilitiesSynchronousProxy {
919    pub fn new(channel: fidl::Channel) -> Self {
920        let protocol_name = <CapabilitiesMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
921        Self { client: fidl::client::sync::Client::new(channel, protocol_name) }
922    }
923
924    pub fn into_channel(self) -> fidl::Channel {
925        self.client.into_channel()
926    }
927
928    /// Waits until an event arrives and returns it. It is safe for other
929    /// threads to make concurrent requests while waiting for an event.
930    pub fn wait_for_event(
931        &self,
932        deadline: zx::MonotonicInstant,
933    ) -> Result<CapabilitiesEvent, fidl::Error> {
934        CapabilitiesEvent::decode(self.client.wait_for_event(deadline)?)
935    }
936
937    /// Creates a reference to a new connector capability. When the connector is
938    /// opened, the channel given to the open call will be sent over
939    /// `receiver_client_end`.
940    ///
941    /// Make sure this method returns before passing the handle's peer to other
942    /// methods in this API. The creation may not be complete before then.
943    pub fn r#connector_create(
944        &self,
945        mut connector: fidl::EventPair,
946        mut receiver_client_end: fidl::endpoints::ClientEnd<ReceiverMarker>,
947        ___deadline: zx::MonotonicInstant,
948    ) -> Result<CapabilitiesConnectorCreateResult, fidl::Error> {
949        let _response = self.client.send_query::<
950            CapabilitiesConnectorCreateRequest,
951            fidl::encoding::FlexibleResultType<fidl::encoding::EmptyStruct, CapabilitiesError>,
952        >(
953            (connector, receiver_client_end,),
954            0xac2bc2dbd7033d1,
955            fidl::encoding::DynamicFlags::FLEXIBLE,
956            ___deadline,
957        )?
958        .into_result::<CapabilitiesMarker>("connector_create")?;
959        Ok(_response.map(|x| x))
960    }
961
962    /// Creates a reference to a new directory connector capability. When the
963    /// directory connector is opened, the channel given to the open call will
964    /// be sent over `receiver_client_end`.
965    ///
966    /// Make sure this method returns before passing the handle's peer to other
967    /// methods in this API. The creation may not be complete before then.
968    pub fn r#dir_connector_create(
969        &self,
970        mut dir_connector: fidl::EventPair,
971        mut receiver_client_end: fidl::endpoints::ClientEnd<DirReceiverMarker>,
972        ___deadline: zx::MonotonicInstant,
973    ) -> Result<CapabilitiesDirConnectorCreateResult, fidl::Error> {
974        let _response = self.client.send_query::<
975            CapabilitiesDirConnectorCreateRequest,
976            fidl::encoding::FlexibleResultType<fidl::encoding::EmptyStruct, CapabilitiesError>,
977        >(
978            (dir_connector, receiver_client_end,),
979            0x721911e05da2a3bf,
980            fidl::encoding::DynamicFlags::FLEXIBLE,
981            ___deadline,
982        )?
983        .into_result::<CapabilitiesMarker>("dir_connector_create")?;
984        Ok(_response.map(|x| x))
985    }
986
987    /// Creates a reference to a new dictionary capability.
988    ///
989    /// Make sure this method returns before passing the handle's peer to other
990    /// methods in this API. The creation may not be complete before then.
991    pub fn r#dictionary_create(
992        &self,
993        mut dictionary: fidl::EventPair,
994        ___deadline: zx::MonotonicInstant,
995    ) -> Result<CapabilitiesDictionaryCreateResult, fidl::Error> {
996        let _response = self.client.send_query::<
997            CapabilitiesDictionaryCreateRequest,
998            fidl::encoding::FlexibleResultType<fidl::encoding::EmptyStruct, CapabilitiesError>,
999        >(
1000            (dictionary,),
1001            0x7f8bd91f0942a36e,
1002            fidl::encoding::DynamicFlags::FLEXIBLE,
1003            ___deadline,
1004        )?
1005        .into_result::<CapabilitiesMarker>("dictionary_create")?;
1006        Ok(_response.map(|x| x))
1007    }
1008
1009    /// Creates a reference to a new data capability with the given value.
1010    ///
1011    /// Make sure this method returns before passing the handle's peer to other
1012    /// methods in this API. The creation may not be complete before then.
1013    pub fn r#data_create(
1014        &self,
1015        mut data_handle: fidl::EventPair,
1016        mut data: &Data,
1017        ___deadline: zx::MonotonicInstant,
1018    ) -> Result<CapabilitiesDataCreateResult, fidl::Error> {
1019        let _response = self.client.send_query::<
1020            CapabilitiesDataCreateRequest,
1021            fidl::encoding::FlexibleResultType<fidl::encoding::EmptyStruct, CapabilitiesError>,
1022        >(
1023            (data_handle, data,),
1024            0x40ef43e45372ee6a,
1025            fidl::encoding::DynamicFlags::FLEXIBLE,
1026            ___deadline,
1027        )?
1028        .into_result::<CapabilitiesMarker>("data_create")?;
1029        Ok(_response.map(|x| x))
1030    }
1031
1032    /// Creates a reference to a new router capability that will return a
1033    /// connector capability when used.
1034    ///
1035    /// Make sure this method returns before passing the handle's peer to other
1036    /// methods in this API. The creation may not be complete before then.
1037    pub fn r#connector_router_create(
1038        &self,
1039        mut router: fidl::EventPair,
1040        mut router_client_end: fidl::endpoints::ClientEnd<ConnectorRouterMarker>,
1041        ___deadline: zx::MonotonicInstant,
1042    ) -> Result<CapabilitiesConnectorRouterCreateResult, fidl::Error> {
1043        let _response = self.client.send_query::<
1044            CapabilitiesConnectorRouterCreateRequest,
1045            fidl::encoding::FlexibleResultType<fidl::encoding::EmptyStruct, CapabilitiesError>,
1046        >(
1047            (router, router_client_end,),
1048            0x7f7e7fbafcdf1761,
1049            fidl::encoding::DynamicFlags::FLEXIBLE,
1050            ___deadline,
1051        )?
1052        .into_result::<CapabilitiesMarker>("connector_router_create")?;
1053        Ok(_response.map(|x| x))
1054    }
1055
1056    /// Creates a reference to a new router capability that will return a
1057    /// directory connector capability when used.
1058    ///
1059    /// Make sure this method returns before passing the handle's peer to other
1060    /// methods in this API. The creation may not be complete before then.
1061    pub fn r#dir_connector_router_create(
1062        &self,
1063        mut router: fidl::EventPair,
1064        mut router_client_end: fidl::endpoints::ClientEnd<DirConnectorRouterMarker>,
1065        ___deadline: zx::MonotonicInstant,
1066    ) -> Result<CapabilitiesDirConnectorRouterCreateResult, fidl::Error> {
1067        let _response = self.client.send_query::<
1068            CapabilitiesDirConnectorRouterCreateRequest,
1069            fidl::encoding::FlexibleResultType<fidl::encoding::EmptyStruct, CapabilitiesError>,
1070        >(
1071            (router, router_client_end,),
1072            0x56520da453fad19f,
1073            fidl::encoding::DynamicFlags::FLEXIBLE,
1074            ___deadline,
1075        )?
1076        .into_result::<CapabilitiesMarker>("dir_connector_router_create")?;
1077        Ok(_response.map(|x| x))
1078    }
1079
1080    /// Creates a reference to a new router capability that will return a
1081    /// dictionary capability when used.
1082    ///
1083    /// Make sure this method returns before passing the handle's peer to other
1084    /// methods in this API. The creation may not be complete before then.
1085    pub fn r#dictionary_router_create(
1086        &self,
1087        mut router: fidl::EventPair,
1088        mut router_client_end: fidl::endpoints::ClientEnd<DictionaryRouterMarker>,
1089        ___deadline: zx::MonotonicInstant,
1090    ) -> Result<CapabilitiesDictionaryRouterCreateResult, fidl::Error> {
1091        let _response = self.client.send_query::<
1092            CapabilitiesDictionaryRouterCreateRequest,
1093            fidl::encoding::FlexibleResultType<fidl::encoding::EmptyStruct, CapabilitiesError>,
1094        >(
1095            (router, router_client_end,),
1096            0x37acef18cd423d42,
1097            fidl::encoding::DynamicFlags::FLEXIBLE,
1098            ___deadline,
1099        )?
1100        .into_result::<CapabilitiesMarker>("dictionary_router_create")?;
1101        Ok(_response.map(|x| x))
1102    }
1103
1104    /// Creates a reference to a new router capability that will return a data
1105    /// value when used.
1106    ///
1107    /// Make sure this method returns before passing the handle's peer to other
1108    /// methods in this API. The creation may not be complete before then.
1109    pub fn r#data_router_create(
1110        &self,
1111        mut router: fidl::EventPair,
1112        mut router_client_end: fidl::endpoints::ClientEnd<DataRouterMarker>,
1113        ___deadline: zx::MonotonicInstant,
1114    ) -> Result<CapabilitiesDataRouterCreateResult, fidl::Error> {
1115        let _response = self.client.send_query::<
1116            CapabilitiesDataRouterCreateRequest,
1117            fidl::encoding::FlexibleResultType<fidl::encoding::EmptyStruct, CapabilitiesError>,
1118        >(
1119            (router, router_client_end,),
1120            0x24e471395b95088,
1121            fidl::encoding::DynamicFlags::FLEXIBLE,
1122            ___deadline,
1123        )?
1124        .into_result::<CapabilitiesMarker>("data_router_create")?;
1125        Ok(_response.map(|x| x))
1126    }
1127
1128    /// Creates a new instance token, which is an opaque identifier associated
1129    /// with a specific component. This instance token will be associated with
1130    /// the component this connection is opened from.
1131    ///
1132    /// Make sure this method returns before passing the handle's peer to other
1133    /// methods in this API. The creation may not be complete before then.
1134    pub fn r#instance_token_create(
1135        &self,
1136        mut instance_token: fidl::EventPair,
1137        ___deadline: zx::MonotonicInstant,
1138    ) -> Result<CapabilitiesInstanceTokenCreateResult, fidl::Error> {
1139        let _response = self.client.send_query::<
1140            CapabilitiesInstanceTokenCreateRequest,
1141            fidl::encoding::FlexibleResultType<fidl::encoding::EmptyStruct, CapabilitiesError>,
1142        >(
1143            (instance_token,),
1144            0x3576e31727c40813,
1145            fidl::encoding::DynamicFlags::FLEXIBLE,
1146            ___deadline,
1147        )?
1148        .into_result::<CapabilitiesMarker>("instance_token_create")?;
1149        Ok(_response.map(|x| x))
1150    }
1151
1152    /// Uses the provided `connector` to open a new connection by delivering
1153    /// this channel to whoever created the connector.
1154    ///
1155    /// If there is an error, it will be reported as a zx.Status epitaph on
1156    /// `channel`.
1157    ///
1158    /// If the `connector` event pair handle is not correlated with a handle
1159    /// given to `ConnectorCreate`, this connection will be closed.
1160    pub fn r#connector_open(
1161        &self,
1162        mut connector: fidl::EventPair,
1163        mut channel: fidl::Channel,
1164        ___deadline: zx::MonotonicInstant,
1165    ) -> Result<CapabilitiesConnectorOpenResult, fidl::Error> {
1166        let _response = self.client.send_query::<
1167            CapabilitiesConnectorOpenRequest,
1168            fidl::encoding::FlexibleResultType<fidl::encoding::EmptyStruct, CapabilitiesError>,
1169        >(
1170            (connector, channel,),
1171            0xc0646965f1884eb,
1172            fidl::encoding::DynamicFlags::FLEXIBLE,
1173            ___deadline,
1174        )?
1175        .into_result::<CapabilitiesMarker>("connector_open")?;
1176        Ok(_response.map(|x| x))
1177    }
1178
1179    /// Uses the provided `dir_connector` to open a new directory connection by
1180    /// delivering this channel to whoever created the directory connector.
1181    ///
1182    /// If there is an error, it will be reported as a zx.Status epitaph on
1183    /// `channel`.
1184    ///
1185    /// If the `dir_connector` event pair handle is not correlated with a handle
1186    /// given to `DirConnectorCreate`, this connection will be closed.
1187    ///
1188    /// `dir_connector` and `channel` are both required. `flags` and `path`
1189    /// may be omitted.
1190    pub fn r#dir_connector_open(
1191        &self,
1192        mut payload: CapabilitiesDirConnectorOpenRequest,
1193        ___deadline: zx::MonotonicInstant,
1194    ) -> Result<CapabilitiesDirConnectorOpenResult, fidl::Error> {
1195        let _response = self.client.send_query::<
1196            CapabilitiesDirConnectorOpenRequest,
1197            fidl::encoding::FlexibleResultType<fidl::encoding::EmptyStruct, CapabilitiesError>,
1198        >(
1199            &mut payload,
1200            0x1332bbf5debd6c20,
1201            fidl::encoding::DynamicFlags::FLEXIBLE,
1202            ___deadline,
1203        )?
1204        .into_result::<CapabilitiesMarker>("dir_connector_open")?;
1205        Ok(_response.map(|x| x))
1206    }
1207
1208    /// Inserts a new `capability` into this `Dictionary` under the name `key`.
1209    /// Overwrites any existing entry.
1210    pub fn r#dictionary_insert(
1211        &self,
1212        mut dictionary: fidl::EventPair,
1213        mut key: &str,
1214        mut value: fidl::EventPair,
1215        ___deadline: zx::MonotonicInstant,
1216    ) -> Result<CapabilitiesDictionaryInsertResult, fidl::Error> {
1217        let _response = self.client.send_query::<
1218            CapabilitiesDictionaryInsertRequest,
1219            fidl::encoding::FlexibleResultType<fidl::encoding::EmptyStruct, CapabilitiesError>,
1220        >(
1221            (dictionary, key, value,),
1222            0x5972e3061a760e7a,
1223            fidl::encoding::DynamicFlags::FLEXIBLE,
1224            ___deadline,
1225        )?
1226        .into_result::<CapabilitiesMarker>("dictionary_insert")?;
1227        Ok(_response.map(|x| x))
1228    }
1229
1230    /// Creates a new reference to the `capability` named `key` in this
1231    /// dictionary, if that capability exists. That capability will remain in
1232    /// the dictionary. To take a capability out of the dictionary, use
1233    /// `DictionaryRemove`.
1234    ///
1235    /// If `key` does not exist, `value` will not reference any capability and
1236    /// the `NO_SUCH_CAPABILITY` error value will be returned.
1237    ///
1238    /// Make sure this method returns before passing the handle's peer to other
1239    /// methods in this API. The creation may not be complete before then.
1240    pub fn r#dictionary_get(
1241        &self,
1242        mut dictionary: fidl::EventPair,
1243        mut key: &str,
1244        mut value: fidl::EventPair,
1245        ___deadline: zx::MonotonicInstant,
1246    ) -> Result<CapabilitiesDictionaryGetResult, fidl::Error> {
1247        let _response = self
1248            .client
1249            .send_query::<CapabilitiesDictionaryGetRequest, fidl::encoding::FlexibleResultType<
1250                CapabilitiesDictionaryGetResponse,
1251                CapabilitiesError,
1252            >>(
1253                (dictionary, key, value),
1254                0x31fafe2280a283d5,
1255                fidl::encoding::DynamicFlags::FLEXIBLE,
1256                ___deadline,
1257            )?
1258            .into_result::<CapabilitiesMarker>("dictionary_get")?;
1259        Ok(_response.map(|x| x.capability_type))
1260    }
1261
1262    /// Removes the `capability` named `key` from this dictionary and returns a
1263    /// reference to it, if that capability exists.
1264    ///
1265    /// `dictionary` and `key` are required. `capability` is optional, and when
1266    /// set will become associated with the capability that was removed from the
1267    /// dictionary.
1268    ///
1269    /// If `key` does not exist, `value` will not reference any capability and
1270    /// the `NO_SUCH_CAPABILITY` error value will be returned.
1271    ///
1272    /// Make sure this method returns before passing the peer of `capability` to
1273    /// other methods in this API. The creation may not be complete before then.
1274    pub fn r#dictionary_remove(
1275        &self,
1276        mut payload: CapabilitiesDictionaryRemoveRequest,
1277        ___deadline: zx::MonotonicInstant,
1278    ) -> Result<CapabilitiesDictionaryRemoveResult, fidl::Error> {
1279        let _response = self
1280            .client
1281            .send_query::<CapabilitiesDictionaryRemoveRequest, fidl::encoding::FlexibleResultType<
1282                CapabilitiesDictionaryRemoveResponse,
1283                CapabilitiesError,
1284            >>(
1285                &mut payload,
1286                0x6827c83106ac5a2c,
1287                fidl::encoding::DynamicFlags::FLEXIBLE,
1288                ___deadline,
1289            )?
1290            .into_result::<CapabilitiesMarker>("dictionary_remove")?;
1291        Ok(_response.map(|x| x.capability_type))
1292    }
1293
1294    /// Opens an iterator which can be used to iterate over the keys of this
1295    /// dictionary.
1296    pub fn r#dictionary_iterate_keys(
1297        &self,
1298        mut dictionary: fidl::EventPair,
1299        mut key_iterator: fidl::endpoints::ServerEnd<DictionaryKeyIteratorMarker>,
1300        ___deadline: zx::MonotonicInstant,
1301    ) -> Result<CapabilitiesDictionaryIterateKeysResult, fidl::Error> {
1302        let _response = self.client.send_query::<
1303            CapabilitiesDictionaryIterateKeysRequest,
1304            fidl::encoding::FlexibleResultType<fidl::encoding::EmptyStruct, CapabilitiesError>,
1305        >(
1306            (dictionary, key_iterator,),
1307            0x3d4ea59c80df9bb8,
1308            fidl::encoding::DynamicFlags::FLEXIBLE,
1309            ___deadline,
1310        )?
1311        .into_result::<CapabilitiesMarker>("dictionary_iterate_keys")?;
1312        Ok(_response.map(|x| x))
1313    }
1314
1315    /// Returns the `Data` value that was provided to the `DataCreate` call used
1316    /// with `data_handle`.
1317    pub fn r#data_get(
1318        &self,
1319        mut data_handle: fidl::EventPair,
1320        ___deadline: zx::MonotonicInstant,
1321    ) -> Result<CapabilitiesDataGetResult, fidl::Error> {
1322        let _response = self.client.send_query::<
1323            CapabilitiesDataGetRequest,
1324            fidl::encoding::FlexibleResultType<Data, CapabilitiesError>,
1325        >(
1326            (data_handle,),
1327            0x65ae25b59f9e0daf,
1328            fidl::encoding::DynamicFlags::FLEXIBLE,
1329            ___deadline,
1330        )?
1331        .into_result::<CapabilitiesMarker>("data_get")?;
1332        Ok(_response.map(|x| x))
1333    }
1334
1335    /// Attempts to produce a `Connector` capability from this
1336    /// `ConnectorRouter`.
1337    ///
1338    /// `request` contains context for this route, and `instance_token`
1339    /// references the component that the routing operation is being performed
1340    /// for.
1341    ///
1342    /// This will return:
1343    ///
1344    /// - `SUCCESS` if `connector` has been associated with a connector.
1345    /// - `UNAVAILABLE` if the capability is unavailable, in which case
1346    ///   `connector` will be closed.
1347    /// - An error, if the operation failed.
1348    pub fn r#connector_router_route(
1349        &self,
1350        mut router: fidl::EventPair,
1351        mut request: RouteRequest,
1352        mut instance_token: fidl::EventPair,
1353        mut connector: fidl::EventPair,
1354        ___deadline: zx::MonotonicInstant,
1355    ) -> Result<CapabilitiesConnectorRouterRouteResult, fidl::Error> {
1356        let _response = self.client.send_query::<
1357            CapabilitiesConnectorRouterRouteRequest,
1358            fidl::encoding::FlexibleResultType<CapabilitiesConnectorRouterRouteResponse, i32>,
1359        >(
1360            (router, &mut request, instance_token, connector,),
1361            0x1bd9c6e7e3dd487e,
1362            fidl::encoding::DynamicFlags::FLEXIBLE,
1363            ___deadline,
1364        )?
1365        .into_result::<CapabilitiesMarker>("connector_router_route")?;
1366        Ok(_response.map(|x| x.response))
1367    }
1368
1369    /// Attempts to produce a `DirConnector` capability from this
1370    /// `DirConnectorRouter`.
1371    ///
1372    /// `request` contains context for this route, and `instance_token`
1373    /// references the component that the routing operation is being performed
1374    /// for.
1375    ///
1376    /// This will return:
1377    ///
1378    /// - `SUCCESS` if `dir_connector` has been associated with a connector.
1379    /// - `UNAVAILABLE` if the capability is unavailable, in which case
1380    ///   `dir_connector` will be closed.
1381    /// - An error, if the operation failed.
1382    pub fn r#dir_connector_router_route(
1383        &self,
1384        mut router: fidl::EventPair,
1385        mut request: RouteRequest,
1386        mut instance_token: fidl::EventPair,
1387        mut dir_connector: fidl::EventPair,
1388        ___deadline: zx::MonotonicInstant,
1389    ) -> Result<CapabilitiesDirConnectorRouterRouteResult, fidl::Error> {
1390        let _response = self.client.send_query::<
1391            CapabilitiesDirConnectorRouterRouteRequest,
1392            fidl::encoding::FlexibleResultType<CapabilitiesDirConnectorRouterRouteResponse, i32>,
1393        >(
1394            (router, &mut request, instance_token, dir_connector,),
1395            0x3afdcc1b79e0799d,
1396            fidl::encoding::DynamicFlags::FLEXIBLE,
1397            ___deadline,
1398        )?
1399        .into_result::<CapabilitiesMarker>("dir_connector_router_route")?;
1400        Ok(_response.map(|x| x.response))
1401    }
1402
1403    /// Attempts to produce a `Dictionary` capability from this
1404    /// `DictionaryRouter`.
1405    ///
1406    /// `request` contains context for this route, and `instance_token`
1407    /// references the component that the routing operation is being performed
1408    /// for.
1409    ///
1410    /// This will return:
1411    ///
1412    /// - `SUCCESS` if `dictionary` has been associated with a connector.
1413    /// - `UNAVAILABLE` if the capability is unavailable, in which case
1414    ///   `dictionary` will be closed.
1415    /// - An error, if the operation failed.
1416    pub fn r#dictionary_router_route(
1417        &self,
1418        mut router: fidl::EventPair,
1419        mut request: RouteRequest,
1420        mut instance_token: fidl::EventPair,
1421        mut dictionary: fidl::EventPair,
1422        ___deadline: zx::MonotonicInstant,
1423    ) -> Result<CapabilitiesDictionaryRouterRouteResult, fidl::Error> {
1424        let _response = self.client.send_query::<
1425            CapabilitiesDictionaryRouterRouteRequest,
1426            fidl::encoding::FlexibleResultType<CapabilitiesDictionaryRouterRouteResponse, i32>,
1427        >(
1428            (router, &mut request, instance_token, dictionary,),
1429            0xcf72de10714a708,
1430            fidl::encoding::DynamicFlags::FLEXIBLE,
1431            ___deadline,
1432        )?
1433        .into_result::<CapabilitiesMarker>("dictionary_router_route")?;
1434        Ok(_response.map(|x| x.response))
1435    }
1436
1437    /// Attempts to produce a `Data` capability from this `DataRouter`.
1438    ///
1439    /// `request` contains context for this route, and `instance_token`
1440    /// references the component that the routing operation is being performed
1441    /// for.
1442    ///
1443    /// This will return:
1444    ///
1445    /// - `SUCCESS` if `data` has been associated with a connector.
1446    /// - `UNAVAILABLE` if the capability is unavailable, in which case `data`
1447    ///   will be closed.
1448    /// - An error, if the operation failed.
1449    pub fn r#data_router_route(
1450        &self,
1451        mut router: fidl::EventPair,
1452        mut request: RouteRequest,
1453        mut instance_token: fidl::EventPair,
1454        mut data: fidl::EventPair,
1455        ___deadline: zx::MonotonicInstant,
1456    ) -> Result<CapabilitiesDataRouterRouteResult, fidl::Error> {
1457        let _response = self.client.send_query::<
1458            CapabilitiesDataRouterRouteRequest,
1459            fidl::encoding::FlexibleResultType<CapabilitiesDataRouterRouteResponse, i32>,
1460        >(
1461            (router, &mut request, instance_token, data,),
1462            0x61ab188455ed0643,
1463            fidl::encoding::DynamicFlags::FLEXIBLE,
1464            ___deadline,
1465        )?
1466        .into_result::<CapabilitiesMarker>("data_router_route")?;
1467        Ok(_response.map(|x| x.response))
1468    }
1469
1470    /// Associates `other_handle` with the same capability referenced by
1471    /// `capability_handle`.
1472    ///
1473    /// Typically if one already has `capability_handle` the handle can be
1474    /// duplicated to make a new handle that references the same object, but
1475    /// this doesn't work when someone else has provided a handle that should be
1476    /// associated with an existing object.
1477    pub fn r#capability_associate_handle(
1478        &self,
1479        mut capability_handle: fidl::EventPair,
1480        mut other_handle: fidl::EventPair,
1481        ___deadline: zx::MonotonicInstant,
1482    ) -> Result<CapabilitiesCapabilityAssociateHandleResult, fidl::Error> {
1483        let _response = self.client.send_query::<
1484            CapabilitiesCapabilityAssociateHandleRequest,
1485            fidl::encoding::FlexibleResultType<fidl::encoding::EmptyStruct, CapabilitiesError>,
1486        >(
1487            (capability_handle, other_handle,),
1488            0x1d69bb61953d8e7,
1489            fidl::encoding::DynamicFlags::FLEXIBLE,
1490            ___deadline,
1491        )?
1492        .into_result::<CapabilitiesMarker>("capability_associate_handle")?;
1493        Ok(_response.map(|x| x))
1494    }
1495}
1496
1497#[cfg(target_os = "fuchsia")]
1498impl From<CapabilitiesSynchronousProxy> for zx::NullableHandle {
1499    fn from(value: CapabilitiesSynchronousProxy) -> Self {
1500        value.into_channel().into()
1501    }
1502}
1503
1504#[cfg(target_os = "fuchsia")]
1505impl From<fidl::Channel> for CapabilitiesSynchronousProxy {
1506    fn from(value: fidl::Channel) -> Self {
1507        Self::new(value)
1508    }
1509}
1510
1511#[cfg(target_os = "fuchsia")]
1512impl fidl::endpoints::FromClient for CapabilitiesSynchronousProxy {
1513    type Protocol = CapabilitiesMarker;
1514
1515    fn from_client(value: fidl::endpoints::ClientEnd<CapabilitiesMarker>) -> Self {
1516        Self::new(value.into_channel())
1517    }
1518}
1519
1520#[derive(Debug, Clone)]
1521pub struct CapabilitiesProxy {
1522    client: fidl::client::Client<fidl::encoding::DefaultFuchsiaResourceDialect>,
1523}
1524
1525impl fidl::endpoints::Proxy for CapabilitiesProxy {
1526    type Protocol = CapabilitiesMarker;
1527
1528    fn from_channel(inner: ::fidl::AsyncChannel) -> Self {
1529        Self::new(inner)
1530    }
1531
1532    fn into_channel(self) -> Result<::fidl::AsyncChannel, Self> {
1533        self.client.into_channel().map_err(|client| Self { client })
1534    }
1535
1536    fn as_channel(&self) -> &::fidl::AsyncChannel {
1537        self.client.as_channel()
1538    }
1539}
1540
1541impl CapabilitiesProxy {
1542    /// Create a new Proxy for fuchsia.component.runtime/Capabilities.
1543    pub fn new(channel: ::fidl::AsyncChannel) -> Self {
1544        let protocol_name = <CapabilitiesMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
1545        Self { client: fidl::client::Client::new(channel, protocol_name) }
1546    }
1547
1548    /// Get a Stream of events from the remote end of the protocol.
1549    ///
1550    /// # Panics
1551    ///
1552    /// Panics if the event stream was already taken.
1553    pub fn take_event_stream(&self) -> CapabilitiesEventStream {
1554        CapabilitiesEventStream { event_receiver: self.client.take_event_receiver() }
1555    }
1556
1557    /// Creates a reference to a new connector capability. When the connector is
1558    /// opened, the channel given to the open call will be sent over
1559    /// `receiver_client_end`.
1560    ///
1561    /// Make sure this method returns before passing the handle's peer to other
1562    /// methods in this API. The creation may not be complete before then.
1563    pub fn r#connector_create(
1564        &self,
1565        mut connector: fidl::EventPair,
1566        mut receiver_client_end: fidl::endpoints::ClientEnd<ReceiverMarker>,
1567    ) -> fidl::client::QueryResponseFut<
1568        CapabilitiesConnectorCreateResult,
1569        fidl::encoding::DefaultFuchsiaResourceDialect,
1570    > {
1571        CapabilitiesProxyInterface::r#connector_create(self, connector, receiver_client_end)
1572    }
1573
1574    /// Creates a reference to a new directory connector capability. When the
1575    /// directory connector is opened, the channel given to the open call will
1576    /// be sent over `receiver_client_end`.
1577    ///
1578    /// Make sure this method returns before passing the handle's peer to other
1579    /// methods in this API. The creation may not be complete before then.
1580    pub fn r#dir_connector_create(
1581        &self,
1582        mut dir_connector: fidl::EventPair,
1583        mut receiver_client_end: fidl::endpoints::ClientEnd<DirReceiverMarker>,
1584    ) -> fidl::client::QueryResponseFut<
1585        CapabilitiesDirConnectorCreateResult,
1586        fidl::encoding::DefaultFuchsiaResourceDialect,
1587    > {
1588        CapabilitiesProxyInterface::r#dir_connector_create(self, dir_connector, receiver_client_end)
1589    }
1590
1591    /// Creates a reference to a new dictionary capability.
1592    ///
1593    /// Make sure this method returns before passing the handle's peer to other
1594    /// methods in this API. The creation may not be complete before then.
1595    pub fn r#dictionary_create(
1596        &self,
1597        mut dictionary: fidl::EventPair,
1598    ) -> fidl::client::QueryResponseFut<
1599        CapabilitiesDictionaryCreateResult,
1600        fidl::encoding::DefaultFuchsiaResourceDialect,
1601    > {
1602        CapabilitiesProxyInterface::r#dictionary_create(self, dictionary)
1603    }
1604
1605    /// Creates a reference to a new data capability with the given value.
1606    ///
1607    /// Make sure this method returns before passing the handle's peer to other
1608    /// methods in this API. The creation may not be complete before then.
1609    pub fn r#data_create(
1610        &self,
1611        mut data_handle: fidl::EventPair,
1612        mut data: &Data,
1613    ) -> fidl::client::QueryResponseFut<
1614        CapabilitiesDataCreateResult,
1615        fidl::encoding::DefaultFuchsiaResourceDialect,
1616    > {
1617        CapabilitiesProxyInterface::r#data_create(self, data_handle, data)
1618    }
1619
1620    /// Creates a reference to a new router capability that will return a
1621    /// connector capability when used.
1622    ///
1623    /// Make sure this method returns before passing the handle's peer to other
1624    /// methods in this API. The creation may not be complete before then.
1625    pub fn r#connector_router_create(
1626        &self,
1627        mut router: fidl::EventPair,
1628        mut router_client_end: fidl::endpoints::ClientEnd<ConnectorRouterMarker>,
1629    ) -> fidl::client::QueryResponseFut<
1630        CapabilitiesConnectorRouterCreateResult,
1631        fidl::encoding::DefaultFuchsiaResourceDialect,
1632    > {
1633        CapabilitiesProxyInterface::r#connector_router_create(self, router, router_client_end)
1634    }
1635
1636    /// Creates a reference to a new router capability that will return a
1637    /// directory connector capability when used.
1638    ///
1639    /// Make sure this method returns before passing the handle's peer to other
1640    /// methods in this API. The creation may not be complete before then.
1641    pub fn r#dir_connector_router_create(
1642        &self,
1643        mut router: fidl::EventPair,
1644        mut router_client_end: fidl::endpoints::ClientEnd<DirConnectorRouterMarker>,
1645    ) -> fidl::client::QueryResponseFut<
1646        CapabilitiesDirConnectorRouterCreateResult,
1647        fidl::encoding::DefaultFuchsiaResourceDialect,
1648    > {
1649        CapabilitiesProxyInterface::r#dir_connector_router_create(self, router, router_client_end)
1650    }
1651
1652    /// Creates a reference to a new router capability that will return a
1653    /// dictionary capability when used.
1654    ///
1655    /// Make sure this method returns before passing the handle's peer to other
1656    /// methods in this API. The creation may not be complete before then.
1657    pub fn r#dictionary_router_create(
1658        &self,
1659        mut router: fidl::EventPair,
1660        mut router_client_end: fidl::endpoints::ClientEnd<DictionaryRouterMarker>,
1661    ) -> fidl::client::QueryResponseFut<
1662        CapabilitiesDictionaryRouterCreateResult,
1663        fidl::encoding::DefaultFuchsiaResourceDialect,
1664    > {
1665        CapabilitiesProxyInterface::r#dictionary_router_create(self, router, router_client_end)
1666    }
1667
1668    /// Creates a reference to a new router capability that will return a data
1669    /// value when used.
1670    ///
1671    /// Make sure this method returns before passing the handle's peer to other
1672    /// methods in this API. The creation may not be complete before then.
1673    pub fn r#data_router_create(
1674        &self,
1675        mut router: fidl::EventPair,
1676        mut router_client_end: fidl::endpoints::ClientEnd<DataRouterMarker>,
1677    ) -> fidl::client::QueryResponseFut<
1678        CapabilitiesDataRouterCreateResult,
1679        fidl::encoding::DefaultFuchsiaResourceDialect,
1680    > {
1681        CapabilitiesProxyInterface::r#data_router_create(self, router, router_client_end)
1682    }
1683
1684    /// Creates a new instance token, which is an opaque identifier associated
1685    /// with a specific component. This instance token will be associated with
1686    /// the component this connection is opened from.
1687    ///
1688    /// Make sure this method returns before passing the handle's peer to other
1689    /// methods in this API. The creation may not be complete before then.
1690    pub fn r#instance_token_create(
1691        &self,
1692        mut instance_token: fidl::EventPair,
1693    ) -> fidl::client::QueryResponseFut<
1694        CapabilitiesInstanceTokenCreateResult,
1695        fidl::encoding::DefaultFuchsiaResourceDialect,
1696    > {
1697        CapabilitiesProxyInterface::r#instance_token_create(self, instance_token)
1698    }
1699
1700    /// Uses the provided `connector` to open a new connection by delivering
1701    /// this channel to whoever created the connector.
1702    ///
1703    /// If there is an error, it will be reported as a zx.Status epitaph on
1704    /// `channel`.
1705    ///
1706    /// If the `connector` event pair handle is not correlated with a handle
1707    /// given to `ConnectorCreate`, this connection will be closed.
1708    pub fn r#connector_open(
1709        &self,
1710        mut connector: fidl::EventPair,
1711        mut channel: fidl::Channel,
1712    ) -> fidl::client::QueryResponseFut<
1713        CapabilitiesConnectorOpenResult,
1714        fidl::encoding::DefaultFuchsiaResourceDialect,
1715    > {
1716        CapabilitiesProxyInterface::r#connector_open(self, connector, channel)
1717    }
1718
1719    /// Uses the provided `dir_connector` to open a new directory connection by
1720    /// delivering this channel to whoever created the directory connector.
1721    ///
1722    /// If there is an error, it will be reported as a zx.Status epitaph on
1723    /// `channel`.
1724    ///
1725    /// If the `dir_connector` event pair handle is not correlated with a handle
1726    /// given to `DirConnectorCreate`, this connection will be closed.
1727    ///
1728    /// `dir_connector` and `channel` are both required. `flags` and `path`
1729    /// may be omitted.
1730    pub fn r#dir_connector_open(
1731        &self,
1732        mut payload: CapabilitiesDirConnectorOpenRequest,
1733    ) -> fidl::client::QueryResponseFut<
1734        CapabilitiesDirConnectorOpenResult,
1735        fidl::encoding::DefaultFuchsiaResourceDialect,
1736    > {
1737        CapabilitiesProxyInterface::r#dir_connector_open(self, payload)
1738    }
1739
1740    /// Inserts a new `capability` into this `Dictionary` under the name `key`.
1741    /// Overwrites any existing entry.
1742    pub fn r#dictionary_insert(
1743        &self,
1744        mut dictionary: fidl::EventPair,
1745        mut key: &str,
1746        mut value: fidl::EventPair,
1747    ) -> fidl::client::QueryResponseFut<
1748        CapabilitiesDictionaryInsertResult,
1749        fidl::encoding::DefaultFuchsiaResourceDialect,
1750    > {
1751        CapabilitiesProxyInterface::r#dictionary_insert(self, dictionary, key, value)
1752    }
1753
1754    /// Creates a new reference to the `capability` named `key` in this
1755    /// dictionary, if that capability exists. That capability will remain in
1756    /// the dictionary. To take a capability out of the dictionary, use
1757    /// `DictionaryRemove`.
1758    ///
1759    /// If `key` does not exist, `value` will not reference any capability and
1760    /// the `NO_SUCH_CAPABILITY` error value will be returned.
1761    ///
1762    /// Make sure this method returns before passing the handle's peer to other
1763    /// methods in this API. The creation may not be complete before then.
1764    pub fn r#dictionary_get(
1765        &self,
1766        mut dictionary: fidl::EventPair,
1767        mut key: &str,
1768        mut value: fidl::EventPair,
1769    ) -> fidl::client::QueryResponseFut<
1770        CapabilitiesDictionaryGetResult,
1771        fidl::encoding::DefaultFuchsiaResourceDialect,
1772    > {
1773        CapabilitiesProxyInterface::r#dictionary_get(self, dictionary, key, value)
1774    }
1775
1776    /// Removes the `capability` named `key` from this dictionary and returns a
1777    /// reference to it, if that capability exists.
1778    ///
1779    /// `dictionary` and `key` are required. `capability` is optional, and when
1780    /// set will become associated with the capability that was removed from the
1781    /// dictionary.
1782    ///
1783    /// If `key` does not exist, `value` will not reference any capability and
1784    /// the `NO_SUCH_CAPABILITY` error value will be returned.
1785    ///
1786    /// Make sure this method returns before passing the peer of `capability` to
1787    /// other methods in this API. The creation may not be complete before then.
1788    pub fn r#dictionary_remove(
1789        &self,
1790        mut payload: CapabilitiesDictionaryRemoveRequest,
1791    ) -> fidl::client::QueryResponseFut<
1792        CapabilitiesDictionaryRemoveResult,
1793        fidl::encoding::DefaultFuchsiaResourceDialect,
1794    > {
1795        CapabilitiesProxyInterface::r#dictionary_remove(self, payload)
1796    }
1797
1798    /// Opens an iterator which can be used to iterate over the keys of this
1799    /// dictionary.
1800    pub fn r#dictionary_iterate_keys(
1801        &self,
1802        mut dictionary: fidl::EventPair,
1803        mut key_iterator: fidl::endpoints::ServerEnd<DictionaryKeyIteratorMarker>,
1804    ) -> fidl::client::QueryResponseFut<
1805        CapabilitiesDictionaryIterateKeysResult,
1806        fidl::encoding::DefaultFuchsiaResourceDialect,
1807    > {
1808        CapabilitiesProxyInterface::r#dictionary_iterate_keys(self, dictionary, key_iterator)
1809    }
1810
1811    /// Returns the `Data` value that was provided to the `DataCreate` call used
1812    /// with `data_handle`.
1813    pub fn r#data_get(
1814        &self,
1815        mut data_handle: fidl::EventPair,
1816    ) -> fidl::client::QueryResponseFut<
1817        CapabilitiesDataGetResult,
1818        fidl::encoding::DefaultFuchsiaResourceDialect,
1819    > {
1820        CapabilitiesProxyInterface::r#data_get(self, data_handle)
1821    }
1822
1823    /// Attempts to produce a `Connector` capability from this
1824    /// `ConnectorRouter`.
1825    ///
1826    /// `request` contains context for this route, and `instance_token`
1827    /// references the component that the routing operation is being performed
1828    /// for.
1829    ///
1830    /// This will return:
1831    ///
1832    /// - `SUCCESS` if `connector` has been associated with a connector.
1833    /// - `UNAVAILABLE` if the capability is unavailable, in which case
1834    ///   `connector` will be closed.
1835    /// - An error, if the operation failed.
1836    pub fn r#connector_router_route(
1837        &self,
1838        mut router: fidl::EventPair,
1839        mut request: RouteRequest,
1840        mut instance_token: fidl::EventPair,
1841        mut connector: fidl::EventPair,
1842    ) -> fidl::client::QueryResponseFut<
1843        CapabilitiesConnectorRouterRouteResult,
1844        fidl::encoding::DefaultFuchsiaResourceDialect,
1845    > {
1846        CapabilitiesProxyInterface::r#connector_router_route(
1847            self,
1848            router,
1849            request,
1850            instance_token,
1851            connector,
1852        )
1853    }
1854
1855    /// Attempts to produce a `DirConnector` capability from this
1856    /// `DirConnectorRouter`.
1857    ///
1858    /// `request` contains context for this route, and `instance_token`
1859    /// references the component that the routing operation is being performed
1860    /// for.
1861    ///
1862    /// This will return:
1863    ///
1864    /// - `SUCCESS` if `dir_connector` has been associated with a connector.
1865    /// - `UNAVAILABLE` if the capability is unavailable, in which case
1866    ///   `dir_connector` will be closed.
1867    /// - An error, if the operation failed.
1868    pub fn r#dir_connector_router_route(
1869        &self,
1870        mut router: fidl::EventPair,
1871        mut request: RouteRequest,
1872        mut instance_token: fidl::EventPair,
1873        mut dir_connector: fidl::EventPair,
1874    ) -> fidl::client::QueryResponseFut<
1875        CapabilitiesDirConnectorRouterRouteResult,
1876        fidl::encoding::DefaultFuchsiaResourceDialect,
1877    > {
1878        CapabilitiesProxyInterface::r#dir_connector_router_route(
1879            self,
1880            router,
1881            request,
1882            instance_token,
1883            dir_connector,
1884        )
1885    }
1886
1887    /// Attempts to produce a `Dictionary` capability from this
1888    /// `DictionaryRouter`.
1889    ///
1890    /// `request` contains context for this route, and `instance_token`
1891    /// references the component that the routing operation is being performed
1892    /// for.
1893    ///
1894    /// This will return:
1895    ///
1896    /// - `SUCCESS` if `dictionary` has been associated with a connector.
1897    /// - `UNAVAILABLE` if the capability is unavailable, in which case
1898    ///   `dictionary` will be closed.
1899    /// - An error, if the operation failed.
1900    pub fn r#dictionary_router_route(
1901        &self,
1902        mut router: fidl::EventPair,
1903        mut request: RouteRequest,
1904        mut instance_token: fidl::EventPair,
1905        mut dictionary: fidl::EventPair,
1906    ) -> fidl::client::QueryResponseFut<
1907        CapabilitiesDictionaryRouterRouteResult,
1908        fidl::encoding::DefaultFuchsiaResourceDialect,
1909    > {
1910        CapabilitiesProxyInterface::r#dictionary_router_route(
1911            self,
1912            router,
1913            request,
1914            instance_token,
1915            dictionary,
1916        )
1917    }
1918
1919    /// Attempts to produce a `Data` capability from this `DataRouter`.
1920    ///
1921    /// `request` contains context for this route, and `instance_token`
1922    /// references the component that the routing operation is being performed
1923    /// for.
1924    ///
1925    /// This will return:
1926    ///
1927    /// - `SUCCESS` if `data` has been associated with a connector.
1928    /// - `UNAVAILABLE` if the capability is unavailable, in which case `data`
1929    ///   will be closed.
1930    /// - An error, if the operation failed.
1931    pub fn r#data_router_route(
1932        &self,
1933        mut router: fidl::EventPair,
1934        mut request: RouteRequest,
1935        mut instance_token: fidl::EventPair,
1936        mut data: fidl::EventPair,
1937    ) -> fidl::client::QueryResponseFut<
1938        CapabilitiesDataRouterRouteResult,
1939        fidl::encoding::DefaultFuchsiaResourceDialect,
1940    > {
1941        CapabilitiesProxyInterface::r#data_router_route(self, router, request, instance_token, data)
1942    }
1943
1944    /// Associates `other_handle` with the same capability referenced by
1945    /// `capability_handle`.
1946    ///
1947    /// Typically if one already has `capability_handle` the handle can be
1948    /// duplicated to make a new handle that references the same object, but
1949    /// this doesn't work when someone else has provided a handle that should be
1950    /// associated with an existing object.
1951    pub fn r#capability_associate_handle(
1952        &self,
1953        mut capability_handle: fidl::EventPair,
1954        mut other_handle: fidl::EventPair,
1955    ) -> fidl::client::QueryResponseFut<
1956        CapabilitiesCapabilityAssociateHandleResult,
1957        fidl::encoding::DefaultFuchsiaResourceDialect,
1958    > {
1959        CapabilitiesProxyInterface::r#capability_associate_handle(
1960            self,
1961            capability_handle,
1962            other_handle,
1963        )
1964    }
1965}
1966
1967impl CapabilitiesProxyInterface for CapabilitiesProxy {
1968    type ConnectorCreateResponseFut = fidl::client::QueryResponseFut<
1969        CapabilitiesConnectorCreateResult,
1970        fidl::encoding::DefaultFuchsiaResourceDialect,
1971    >;
1972    fn r#connector_create(
1973        &self,
1974        mut connector: fidl::EventPair,
1975        mut receiver_client_end: fidl::endpoints::ClientEnd<ReceiverMarker>,
1976    ) -> Self::ConnectorCreateResponseFut {
1977        fn _decode(
1978            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
1979        ) -> Result<CapabilitiesConnectorCreateResult, fidl::Error> {
1980            let _response = fidl::client::decode_transaction_body::<
1981                fidl::encoding::FlexibleResultType<fidl::encoding::EmptyStruct, CapabilitiesError>,
1982                fidl::encoding::DefaultFuchsiaResourceDialect,
1983                0xac2bc2dbd7033d1,
1984            >(_buf?)?
1985            .into_result::<CapabilitiesMarker>("connector_create")?;
1986            Ok(_response.map(|x| x))
1987        }
1988        self.client.send_query_and_decode::<
1989            CapabilitiesConnectorCreateRequest,
1990            CapabilitiesConnectorCreateResult,
1991        >(
1992            (connector, receiver_client_end,),
1993            0xac2bc2dbd7033d1,
1994            fidl::encoding::DynamicFlags::FLEXIBLE,
1995            _decode,
1996        )
1997    }
1998
1999    type DirConnectorCreateResponseFut = fidl::client::QueryResponseFut<
2000        CapabilitiesDirConnectorCreateResult,
2001        fidl::encoding::DefaultFuchsiaResourceDialect,
2002    >;
2003    fn r#dir_connector_create(
2004        &self,
2005        mut dir_connector: fidl::EventPair,
2006        mut receiver_client_end: fidl::endpoints::ClientEnd<DirReceiverMarker>,
2007    ) -> Self::DirConnectorCreateResponseFut {
2008        fn _decode(
2009            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
2010        ) -> Result<CapabilitiesDirConnectorCreateResult, fidl::Error> {
2011            let _response = fidl::client::decode_transaction_body::<
2012                fidl::encoding::FlexibleResultType<fidl::encoding::EmptyStruct, CapabilitiesError>,
2013                fidl::encoding::DefaultFuchsiaResourceDialect,
2014                0x721911e05da2a3bf,
2015            >(_buf?)?
2016            .into_result::<CapabilitiesMarker>("dir_connector_create")?;
2017            Ok(_response.map(|x| x))
2018        }
2019        self.client.send_query_and_decode::<
2020            CapabilitiesDirConnectorCreateRequest,
2021            CapabilitiesDirConnectorCreateResult,
2022        >(
2023            (dir_connector, receiver_client_end,),
2024            0x721911e05da2a3bf,
2025            fidl::encoding::DynamicFlags::FLEXIBLE,
2026            _decode,
2027        )
2028    }
2029
2030    type DictionaryCreateResponseFut = fidl::client::QueryResponseFut<
2031        CapabilitiesDictionaryCreateResult,
2032        fidl::encoding::DefaultFuchsiaResourceDialect,
2033    >;
2034    fn r#dictionary_create(
2035        &self,
2036        mut dictionary: fidl::EventPair,
2037    ) -> Self::DictionaryCreateResponseFut {
2038        fn _decode(
2039            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
2040        ) -> Result<CapabilitiesDictionaryCreateResult, fidl::Error> {
2041            let _response = fidl::client::decode_transaction_body::<
2042                fidl::encoding::FlexibleResultType<fidl::encoding::EmptyStruct, CapabilitiesError>,
2043                fidl::encoding::DefaultFuchsiaResourceDialect,
2044                0x7f8bd91f0942a36e,
2045            >(_buf?)?
2046            .into_result::<CapabilitiesMarker>("dictionary_create")?;
2047            Ok(_response.map(|x| x))
2048        }
2049        self.client.send_query_and_decode::<
2050            CapabilitiesDictionaryCreateRequest,
2051            CapabilitiesDictionaryCreateResult,
2052        >(
2053            (dictionary,),
2054            0x7f8bd91f0942a36e,
2055            fidl::encoding::DynamicFlags::FLEXIBLE,
2056            _decode,
2057        )
2058    }
2059
2060    type DataCreateResponseFut = fidl::client::QueryResponseFut<
2061        CapabilitiesDataCreateResult,
2062        fidl::encoding::DefaultFuchsiaResourceDialect,
2063    >;
2064    fn r#data_create(
2065        &self,
2066        mut data_handle: fidl::EventPair,
2067        mut data: &Data,
2068    ) -> Self::DataCreateResponseFut {
2069        fn _decode(
2070            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
2071        ) -> Result<CapabilitiesDataCreateResult, fidl::Error> {
2072            let _response = fidl::client::decode_transaction_body::<
2073                fidl::encoding::FlexibleResultType<fidl::encoding::EmptyStruct, CapabilitiesError>,
2074                fidl::encoding::DefaultFuchsiaResourceDialect,
2075                0x40ef43e45372ee6a,
2076            >(_buf?)?
2077            .into_result::<CapabilitiesMarker>("data_create")?;
2078            Ok(_response.map(|x| x))
2079        }
2080        self.client
2081            .send_query_and_decode::<CapabilitiesDataCreateRequest, CapabilitiesDataCreateResult>(
2082                (data_handle, data),
2083                0x40ef43e45372ee6a,
2084                fidl::encoding::DynamicFlags::FLEXIBLE,
2085                _decode,
2086            )
2087    }
2088
2089    type ConnectorRouterCreateResponseFut = fidl::client::QueryResponseFut<
2090        CapabilitiesConnectorRouterCreateResult,
2091        fidl::encoding::DefaultFuchsiaResourceDialect,
2092    >;
2093    fn r#connector_router_create(
2094        &self,
2095        mut router: fidl::EventPair,
2096        mut router_client_end: fidl::endpoints::ClientEnd<ConnectorRouterMarker>,
2097    ) -> Self::ConnectorRouterCreateResponseFut {
2098        fn _decode(
2099            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
2100        ) -> Result<CapabilitiesConnectorRouterCreateResult, fidl::Error> {
2101            let _response = fidl::client::decode_transaction_body::<
2102                fidl::encoding::FlexibleResultType<fidl::encoding::EmptyStruct, CapabilitiesError>,
2103                fidl::encoding::DefaultFuchsiaResourceDialect,
2104                0x7f7e7fbafcdf1761,
2105            >(_buf?)?
2106            .into_result::<CapabilitiesMarker>("connector_router_create")?;
2107            Ok(_response.map(|x| x))
2108        }
2109        self.client.send_query_and_decode::<
2110            CapabilitiesConnectorRouterCreateRequest,
2111            CapabilitiesConnectorRouterCreateResult,
2112        >(
2113            (router, router_client_end,),
2114            0x7f7e7fbafcdf1761,
2115            fidl::encoding::DynamicFlags::FLEXIBLE,
2116            _decode,
2117        )
2118    }
2119
2120    type DirConnectorRouterCreateResponseFut = fidl::client::QueryResponseFut<
2121        CapabilitiesDirConnectorRouterCreateResult,
2122        fidl::encoding::DefaultFuchsiaResourceDialect,
2123    >;
2124    fn r#dir_connector_router_create(
2125        &self,
2126        mut router: fidl::EventPair,
2127        mut router_client_end: fidl::endpoints::ClientEnd<DirConnectorRouterMarker>,
2128    ) -> Self::DirConnectorRouterCreateResponseFut {
2129        fn _decode(
2130            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
2131        ) -> Result<CapabilitiesDirConnectorRouterCreateResult, fidl::Error> {
2132            let _response = fidl::client::decode_transaction_body::<
2133                fidl::encoding::FlexibleResultType<fidl::encoding::EmptyStruct, CapabilitiesError>,
2134                fidl::encoding::DefaultFuchsiaResourceDialect,
2135                0x56520da453fad19f,
2136            >(_buf?)?
2137            .into_result::<CapabilitiesMarker>("dir_connector_router_create")?;
2138            Ok(_response.map(|x| x))
2139        }
2140        self.client.send_query_and_decode::<
2141            CapabilitiesDirConnectorRouterCreateRequest,
2142            CapabilitiesDirConnectorRouterCreateResult,
2143        >(
2144            (router, router_client_end,),
2145            0x56520da453fad19f,
2146            fidl::encoding::DynamicFlags::FLEXIBLE,
2147            _decode,
2148        )
2149    }
2150
2151    type DictionaryRouterCreateResponseFut = fidl::client::QueryResponseFut<
2152        CapabilitiesDictionaryRouterCreateResult,
2153        fidl::encoding::DefaultFuchsiaResourceDialect,
2154    >;
2155    fn r#dictionary_router_create(
2156        &self,
2157        mut router: fidl::EventPair,
2158        mut router_client_end: fidl::endpoints::ClientEnd<DictionaryRouterMarker>,
2159    ) -> Self::DictionaryRouterCreateResponseFut {
2160        fn _decode(
2161            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
2162        ) -> Result<CapabilitiesDictionaryRouterCreateResult, fidl::Error> {
2163            let _response = fidl::client::decode_transaction_body::<
2164                fidl::encoding::FlexibleResultType<fidl::encoding::EmptyStruct, CapabilitiesError>,
2165                fidl::encoding::DefaultFuchsiaResourceDialect,
2166                0x37acef18cd423d42,
2167            >(_buf?)?
2168            .into_result::<CapabilitiesMarker>("dictionary_router_create")?;
2169            Ok(_response.map(|x| x))
2170        }
2171        self.client.send_query_and_decode::<
2172            CapabilitiesDictionaryRouterCreateRequest,
2173            CapabilitiesDictionaryRouterCreateResult,
2174        >(
2175            (router, router_client_end,),
2176            0x37acef18cd423d42,
2177            fidl::encoding::DynamicFlags::FLEXIBLE,
2178            _decode,
2179        )
2180    }
2181
2182    type DataRouterCreateResponseFut = fidl::client::QueryResponseFut<
2183        CapabilitiesDataRouterCreateResult,
2184        fidl::encoding::DefaultFuchsiaResourceDialect,
2185    >;
2186    fn r#data_router_create(
2187        &self,
2188        mut router: fidl::EventPair,
2189        mut router_client_end: fidl::endpoints::ClientEnd<DataRouterMarker>,
2190    ) -> Self::DataRouterCreateResponseFut {
2191        fn _decode(
2192            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
2193        ) -> Result<CapabilitiesDataRouterCreateResult, fidl::Error> {
2194            let _response = fidl::client::decode_transaction_body::<
2195                fidl::encoding::FlexibleResultType<fidl::encoding::EmptyStruct, CapabilitiesError>,
2196                fidl::encoding::DefaultFuchsiaResourceDialect,
2197                0x24e471395b95088,
2198            >(_buf?)?
2199            .into_result::<CapabilitiesMarker>("data_router_create")?;
2200            Ok(_response.map(|x| x))
2201        }
2202        self.client.send_query_and_decode::<
2203            CapabilitiesDataRouterCreateRequest,
2204            CapabilitiesDataRouterCreateResult,
2205        >(
2206            (router, router_client_end,),
2207            0x24e471395b95088,
2208            fidl::encoding::DynamicFlags::FLEXIBLE,
2209            _decode,
2210        )
2211    }
2212
2213    type InstanceTokenCreateResponseFut = fidl::client::QueryResponseFut<
2214        CapabilitiesInstanceTokenCreateResult,
2215        fidl::encoding::DefaultFuchsiaResourceDialect,
2216    >;
2217    fn r#instance_token_create(
2218        &self,
2219        mut instance_token: fidl::EventPair,
2220    ) -> Self::InstanceTokenCreateResponseFut {
2221        fn _decode(
2222            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
2223        ) -> Result<CapabilitiesInstanceTokenCreateResult, fidl::Error> {
2224            let _response = fidl::client::decode_transaction_body::<
2225                fidl::encoding::FlexibleResultType<fidl::encoding::EmptyStruct, CapabilitiesError>,
2226                fidl::encoding::DefaultFuchsiaResourceDialect,
2227                0x3576e31727c40813,
2228            >(_buf?)?
2229            .into_result::<CapabilitiesMarker>("instance_token_create")?;
2230            Ok(_response.map(|x| x))
2231        }
2232        self.client.send_query_and_decode::<
2233            CapabilitiesInstanceTokenCreateRequest,
2234            CapabilitiesInstanceTokenCreateResult,
2235        >(
2236            (instance_token,),
2237            0x3576e31727c40813,
2238            fidl::encoding::DynamicFlags::FLEXIBLE,
2239            _decode,
2240        )
2241    }
2242
2243    type ConnectorOpenResponseFut = fidl::client::QueryResponseFut<
2244        CapabilitiesConnectorOpenResult,
2245        fidl::encoding::DefaultFuchsiaResourceDialect,
2246    >;
2247    fn r#connector_open(
2248        &self,
2249        mut connector: fidl::EventPair,
2250        mut channel: fidl::Channel,
2251    ) -> Self::ConnectorOpenResponseFut {
2252        fn _decode(
2253            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
2254        ) -> Result<CapabilitiesConnectorOpenResult, fidl::Error> {
2255            let _response = fidl::client::decode_transaction_body::<
2256                fidl::encoding::FlexibleResultType<fidl::encoding::EmptyStruct, CapabilitiesError>,
2257                fidl::encoding::DefaultFuchsiaResourceDialect,
2258                0xc0646965f1884eb,
2259            >(_buf?)?
2260            .into_result::<CapabilitiesMarker>("connector_open")?;
2261            Ok(_response.map(|x| x))
2262        }
2263        self.client.send_query_and_decode::<
2264            CapabilitiesConnectorOpenRequest,
2265            CapabilitiesConnectorOpenResult,
2266        >(
2267            (connector, channel,),
2268            0xc0646965f1884eb,
2269            fidl::encoding::DynamicFlags::FLEXIBLE,
2270            _decode,
2271        )
2272    }
2273
2274    type DirConnectorOpenResponseFut = fidl::client::QueryResponseFut<
2275        CapabilitiesDirConnectorOpenResult,
2276        fidl::encoding::DefaultFuchsiaResourceDialect,
2277    >;
2278    fn r#dir_connector_open(
2279        &self,
2280        mut payload: CapabilitiesDirConnectorOpenRequest,
2281    ) -> Self::DirConnectorOpenResponseFut {
2282        fn _decode(
2283            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
2284        ) -> Result<CapabilitiesDirConnectorOpenResult, fidl::Error> {
2285            let _response = fidl::client::decode_transaction_body::<
2286                fidl::encoding::FlexibleResultType<fidl::encoding::EmptyStruct, CapabilitiesError>,
2287                fidl::encoding::DefaultFuchsiaResourceDialect,
2288                0x1332bbf5debd6c20,
2289            >(_buf?)?
2290            .into_result::<CapabilitiesMarker>("dir_connector_open")?;
2291            Ok(_response.map(|x| x))
2292        }
2293        self.client.send_query_and_decode::<
2294            CapabilitiesDirConnectorOpenRequest,
2295            CapabilitiesDirConnectorOpenResult,
2296        >(
2297            &mut payload,
2298            0x1332bbf5debd6c20,
2299            fidl::encoding::DynamicFlags::FLEXIBLE,
2300            _decode,
2301        )
2302    }
2303
2304    type DictionaryInsertResponseFut = fidl::client::QueryResponseFut<
2305        CapabilitiesDictionaryInsertResult,
2306        fidl::encoding::DefaultFuchsiaResourceDialect,
2307    >;
2308    fn r#dictionary_insert(
2309        &self,
2310        mut dictionary: fidl::EventPair,
2311        mut key: &str,
2312        mut value: fidl::EventPair,
2313    ) -> Self::DictionaryInsertResponseFut {
2314        fn _decode(
2315            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
2316        ) -> Result<CapabilitiesDictionaryInsertResult, fidl::Error> {
2317            let _response = fidl::client::decode_transaction_body::<
2318                fidl::encoding::FlexibleResultType<fidl::encoding::EmptyStruct, CapabilitiesError>,
2319                fidl::encoding::DefaultFuchsiaResourceDialect,
2320                0x5972e3061a760e7a,
2321            >(_buf?)?
2322            .into_result::<CapabilitiesMarker>("dictionary_insert")?;
2323            Ok(_response.map(|x| x))
2324        }
2325        self.client.send_query_and_decode::<
2326            CapabilitiesDictionaryInsertRequest,
2327            CapabilitiesDictionaryInsertResult,
2328        >(
2329            (dictionary, key, value,),
2330            0x5972e3061a760e7a,
2331            fidl::encoding::DynamicFlags::FLEXIBLE,
2332            _decode,
2333        )
2334    }
2335
2336    type DictionaryGetResponseFut = fidl::client::QueryResponseFut<
2337        CapabilitiesDictionaryGetResult,
2338        fidl::encoding::DefaultFuchsiaResourceDialect,
2339    >;
2340    fn r#dictionary_get(
2341        &self,
2342        mut dictionary: fidl::EventPair,
2343        mut key: &str,
2344        mut value: fidl::EventPair,
2345    ) -> Self::DictionaryGetResponseFut {
2346        fn _decode(
2347            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
2348        ) -> Result<CapabilitiesDictionaryGetResult, fidl::Error> {
2349            let _response = fidl::client::decode_transaction_body::<
2350                fidl::encoding::FlexibleResultType<
2351                    CapabilitiesDictionaryGetResponse,
2352                    CapabilitiesError,
2353                >,
2354                fidl::encoding::DefaultFuchsiaResourceDialect,
2355                0x31fafe2280a283d5,
2356            >(_buf?)?
2357            .into_result::<CapabilitiesMarker>("dictionary_get")?;
2358            Ok(_response.map(|x| x.capability_type))
2359        }
2360        self.client.send_query_and_decode::<
2361            CapabilitiesDictionaryGetRequest,
2362            CapabilitiesDictionaryGetResult,
2363        >(
2364            (dictionary, key, value,),
2365            0x31fafe2280a283d5,
2366            fidl::encoding::DynamicFlags::FLEXIBLE,
2367            _decode,
2368        )
2369    }
2370
2371    type DictionaryRemoveResponseFut = fidl::client::QueryResponseFut<
2372        CapabilitiesDictionaryRemoveResult,
2373        fidl::encoding::DefaultFuchsiaResourceDialect,
2374    >;
2375    fn r#dictionary_remove(
2376        &self,
2377        mut payload: CapabilitiesDictionaryRemoveRequest,
2378    ) -> Self::DictionaryRemoveResponseFut {
2379        fn _decode(
2380            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
2381        ) -> Result<CapabilitiesDictionaryRemoveResult, fidl::Error> {
2382            let _response = fidl::client::decode_transaction_body::<
2383                fidl::encoding::FlexibleResultType<
2384                    CapabilitiesDictionaryRemoveResponse,
2385                    CapabilitiesError,
2386                >,
2387                fidl::encoding::DefaultFuchsiaResourceDialect,
2388                0x6827c83106ac5a2c,
2389            >(_buf?)?
2390            .into_result::<CapabilitiesMarker>("dictionary_remove")?;
2391            Ok(_response.map(|x| x.capability_type))
2392        }
2393        self.client.send_query_and_decode::<
2394            CapabilitiesDictionaryRemoveRequest,
2395            CapabilitiesDictionaryRemoveResult,
2396        >(
2397            &mut payload,
2398            0x6827c83106ac5a2c,
2399            fidl::encoding::DynamicFlags::FLEXIBLE,
2400            _decode,
2401        )
2402    }
2403
2404    type DictionaryIterateKeysResponseFut = fidl::client::QueryResponseFut<
2405        CapabilitiesDictionaryIterateKeysResult,
2406        fidl::encoding::DefaultFuchsiaResourceDialect,
2407    >;
2408    fn r#dictionary_iterate_keys(
2409        &self,
2410        mut dictionary: fidl::EventPair,
2411        mut key_iterator: fidl::endpoints::ServerEnd<DictionaryKeyIteratorMarker>,
2412    ) -> Self::DictionaryIterateKeysResponseFut {
2413        fn _decode(
2414            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
2415        ) -> Result<CapabilitiesDictionaryIterateKeysResult, fidl::Error> {
2416            let _response = fidl::client::decode_transaction_body::<
2417                fidl::encoding::FlexibleResultType<fidl::encoding::EmptyStruct, CapabilitiesError>,
2418                fidl::encoding::DefaultFuchsiaResourceDialect,
2419                0x3d4ea59c80df9bb8,
2420            >(_buf?)?
2421            .into_result::<CapabilitiesMarker>("dictionary_iterate_keys")?;
2422            Ok(_response.map(|x| x))
2423        }
2424        self.client.send_query_and_decode::<
2425            CapabilitiesDictionaryIterateKeysRequest,
2426            CapabilitiesDictionaryIterateKeysResult,
2427        >(
2428            (dictionary, key_iterator,),
2429            0x3d4ea59c80df9bb8,
2430            fidl::encoding::DynamicFlags::FLEXIBLE,
2431            _decode,
2432        )
2433    }
2434
2435    type DataGetResponseFut = fidl::client::QueryResponseFut<
2436        CapabilitiesDataGetResult,
2437        fidl::encoding::DefaultFuchsiaResourceDialect,
2438    >;
2439    fn r#data_get(&self, mut data_handle: fidl::EventPair) -> Self::DataGetResponseFut {
2440        fn _decode(
2441            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
2442        ) -> Result<CapabilitiesDataGetResult, fidl::Error> {
2443            let _response = fidl::client::decode_transaction_body::<
2444                fidl::encoding::FlexibleResultType<Data, CapabilitiesError>,
2445                fidl::encoding::DefaultFuchsiaResourceDialect,
2446                0x65ae25b59f9e0daf,
2447            >(_buf?)?
2448            .into_result::<CapabilitiesMarker>("data_get")?;
2449            Ok(_response.map(|x| x))
2450        }
2451        self.client.send_query_and_decode::<CapabilitiesDataGetRequest, CapabilitiesDataGetResult>(
2452            (data_handle,),
2453            0x65ae25b59f9e0daf,
2454            fidl::encoding::DynamicFlags::FLEXIBLE,
2455            _decode,
2456        )
2457    }
2458
2459    type ConnectorRouterRouteResponseFut = fidl::client::QueryResponseFut<
2460        CapabilitiesConnectorRouterRouteResult,
2461        fidl::encoding::DefaultFuchsiaResourceDialect,
2462    >;
2463    fn r#connector_router_route(
2464        &self,
2465        mut router: fidl::EventPair,
2466        mut request: RouteRequest,
2467        mut instance_token: fidl::EventPair,
2468        mut connector: fidl::EventPair,
2469    ) -> Self::ConnectorRouterRouteResponseFut {
2470        fn _decode(
2471            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
2472        ) -> Result<CapabilitiesConnectorRouterRouteResult, fidl::Error> {
2473            let _response = fidl::client::decode_transaction_body::<
2474                fidl::encoding::FlexibleResultType<CapabilitiesConnectorRouterRouteResponse, i32>,
2475                fidl::encoding::DefaultFuchsiaResourceDialect,
2476                0x1bd9c6e7e3dd487e,
2477            >(_buf?)?
2478            .into_result::<CapabilitiesMarker>("connector_router_route")?;
2479            Ok(_response.map(|x| x.response))
2480        }
2481        self.client.send_query_and_decode::<
2482            CapabilitiesConnectorRouterRouteRequest,
2483            CapabilitiesConnectorRouterRouteResult,
2484        >(
2485            (router, &mut request, instance_token, connector,),
2486            0x1bd9c6e7e3dd487e,
2487            fidl::encoding::DynamicFlags::FLEXIBLE,
2488            _decode,
2489        )
2490    }
2491
2492    type DirConnectorRouterRouteResponseFut = fidl::client::QueryResponseFut<
2493        CapabilitiesDirConnectorRouterRouteResult,
2494        fidl::encoding::DefaultFuchsiaResourceDialect,
2495    >;
2496    fn r#dir_connector_router_route(
2497        &self,
2498        mut router: fidl::EventPair,
2499        mut request: RouteRequest,
2500        mut instance_token: fidl::EventPair,
2501        mut dir_connector: fidl::EventPair,
2502    ) -> Self::DirConnectorRouterRouteResponseFut {
2503        fn _decode(
2504            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
2505        ) -> Result<CapabilitiesDirConnectorRouterRouteResult, fidl::Error> {
2506            let _response = fidl::client::decode_transaction_body::<
2507                fidl::encoding::FlexibleResultType<
2508                    CapabilitiesDirConnectorRouterRouteResponse,
2509                    i32,
2510                >,
2511                fidl::encoding::DefaultFuchsiaResourceDialect,
2512                0x3afdcc1b79e0799d,
2513            >(_buf?)?
2514            .into_result::<CapabilitiesMarker>("dir_connector_router_route")?;
2515            Ok(_response.map(|x| x.response))
2516        }
2517        self.client.send_query_and_decode::<
2518            CapabilitiesDirConnectorRouterRouteRequest,
2519            CapabilitiesDirConnectorRouterRouteResult,
2520        >(
2521            (router, &mut request, instance_token, dir_connector,),
2522            0x3afdcc1b79e0799d,
2523            fidl::encoding::DynamicFlags::FLEXIBLE,
2524            _decode,
2525        )
2526    }
2527
2528    type DictionaryRouterRouteResponseFut = fidl::client::QueryResponseFut<
2529        CapabilitiesDictionaryRouterRouteResult,
2530        fidl::encoding::DefaultFuchsiaResourceDialect,
2531    >;
2532    fn r#dictionary_router_route(
2533        &self,
2534        mut router: fidl::EventPair,
2535        mut request: RouteRequest,
2536        mut instance_token: fidl::EventPair,
2537        mut dictionary: fidl::EventPair,
2538    ) -> Self::DictionaryRouterRouteResponseFut {
2539        fn _decode(
2540            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
2541        ) -> Result<CapabilitiesDictionaryRouterRouteResult, fidl::Error> {
2542            let _response = fidl::client::decode_transaction_body::<
2543                fidl::encoding::FlexibleResultType<CapabilitiesDictionaryRouterRouteResponse, i32>,
2544                fidl::encoding::DefaultFuchsiaResourceDialect,
2545                0xcf72de10714a708,
2546            >(_buf?)?
2547            .into_result::<CapabilitiesMarker>("dictionary_router_route")?;
2548            Ok(_response.map(|x| x.response))
2549        }
2550        self.client.send_query_and_decode::<
2551            CapabilitiesDictionaryRouterRouteRequest,
2552            CapabilitiesDictionaryRouterRouteResult,
2553        >(
2554            (router, &mut request, instance_token, dictionary,),
2555            0xcf72de10714a708,
2556            fidl::encoding::DynamicFlags::FLEXIBLE,
2557            _decode,
2558        )
2559    }
2560
2561    type DataRouterRouteResponseFut = fidl::client::QueryResponseFut<
2562        CapabilitiesDataRouterRouteResult,
2563        fidl::encoding::DefaultFuchsiaResourceDialect,
2564    >;
2565    fn r#data_router_route(
2566        &self,
2567        mut router: fidl::EventPair,
2568        mut request: RouteRequest,
2569        mut instance_token: fidl::EventPair,
2570        mut data: fidl::EventPair,
2571    ) -> Self::DataRouterRouteResponseFut {
2572        fn _decode(
2573            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
2574        ) -> Result<CapabilitiesDataRouterRouteResult, fidl::Error> {
2575            let _response = fidl::client::decode_transaction_body::<
2576                fidl::encoding::FlexibleResultType<CapabilitiesDataRouterRouteResponse, i32>,
2577                fidl::encoding::DefaultFuchsiaResourceDialect,
2578                0x61ab188455ed0643,
2579            >(_buf?)?
2580            .into_result::<CapabilitiesMarker>("data_router_route")?;
2581            Ok(_response.map(|x| x.response))
2582        }
2583        self.client.send_query_and_decode::<
2584            CapabilitiesDataRouterRouteRequest,
2585            CapabilitiesDataRouterRouteResult,
2586        >(
2587            (router, &mut request, instance_token, data,),
2588            0x61ab188455ed0643,
2589            fidl::encoding::DynamicFlags::FLEXIBLE,
2590            _decode,
2591        )
2592    }
2593
2594    type CapabilityAssociateHandleResponseFut = fidl::client::QueryResponseFut<
2595        CapabilitiesCapabilityAssociateHandleResult,
2596        fidl::encoding::DefaultFuchsiaResourceDialect,
2597    >;
2598    fn r#capability_associate_handle(
2599        &self,
2600        mut capability_handle: fidl::EventPair,
2601        mut other_handle: fidl::EventPair,
2602    ) -> Self::CapabilityAssociateHandleResponseFut {
2603        fn _decode(
2604            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
2605        ) -> Result<CapabilitiesCapabilityAssociateHandleResult, fidl::Error> {
2606            let _response = fidl::client::decode_transaction_body::<
2607                fidl::encoding::FlexibleResultType<fidl::encoding::EmptyStruct, CapabilitiesError>,
2608                fidl::encoding::DefaultFuchsiaResourceDialect,
2609                0x1d69bb61953d8e7,
2610            >(_buf?)?
2611            .into_result::<CapabilitiesMarker>("capability_associate_handle")?;
2612            Ok(_response.map(|x| x))
2613        }
2614        self.client.send_query_and_decode::<
2615            CapabilitiesCapabilityAssociateHandleRequest,
2616            CapabilitiesCapabilityAssociateHandleResult,
2617        >(
2618            (capability_handle, other_handle,),
2619            0x1d69bb61953d8e7,
2620            fidl::encoding::DynamicFlags::FLEXIBLE,
2621            _decode,
2622        )
2623    }
2624}
2625
2626pub struct CapabilitiesEventStream {
2627    event_receiver: fidl::client::EventReceiver<fidl::encoding::DefaultFuchsiaResourceDialect>,
2628}
2629
2630impl std::marker::Unpin for CapabilitiesEventStream {}
2631
2632impl futures::stream::FusedStream for CapabilitiesEventStream {
2633    fn is_terminated(&self) -> bool {
2634        self.event_receiver.is_terminated()
2635    }
2636}
2637
2638impl futures::Stream for CapabilitiesEventStream {
2639    type Item = Result<CapabilitiesEvent, fidl::Error>;
2640
2641    fn poll_next(
2642        mut self: std::pin::Pin<&mut Self>,
2643        cx: &mut std::task::Context<'_>,
2644    ) -> std::task::Poll<Option<Self::Item>> {
2645        match futures::ready!(futures::stream::StreamExt::poll_next_unpin(
2646            &mut self.event_receiver,
2647            cx
2648        )?) {
2649            Some(buf) => std::task::Poll::Ready(Some(CapabilitiesEvent::decode(buf))),
2650            None => std::task::Poll::Ready(None),
2651        }
2652    }
2653}
2654
2655#[derive(Debug)]
2656pub enum CapabilitiesEvent {
2657    #[non_exhaustive]
2658    _UnknownEvent {
2659        /// Ordinal of the event that was sent.
2660        ordinal: u64,
2661    },
2662}
2663
2664impl CapabilitiesEvent {
2665    /// Decodes a message buffer as a [`CapabilitiesEvent`].
2666    fn decode(
2667        mut buf: <fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc,
2668    ) -> Result<CapabilitiesEvent, fidl::Error> {
2669        let (bytes, _handles) = buf.split_mut();
2670        let (tx_header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
2671        debug_assert_eq!(tx_header.tx_id, 0);
2672        match tx_header.ordinal {
2673            _ if tx_header.dynamic_flags().contains(fidl::encoding::DynamicFlags::FLEXIBLE) => {
2674                Ok(CapabilitiesEvent::_UnknownEvent { ordinal: tx_header.ordinal })
2675            }
2676            _ => Err(fidl::Error::UnknownOrdinal {
2677                ordinal: tx_header.ordinal,
2678                protocol_name: <CapabilitiesMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
2679            }),
2680        }
2681    }
2682}
2683
2684/// A Stream of incoming requests for fuchsia.component.runtime/Capabilities.
2685pub struct CapabilitiesRequestStream {
2686    inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
2687    is_terminated: bool,
2688}
2689
2690impl std::marker::Unpin for CapabilitiesRequestStream {}
2691
2692impl futures::stream::FusedStream for CapabilitiesRequestStream {
2693    fn is_terminated(&self) -> bool {
2694        self.is_terminated
2695    }
2696}
2697
2698impl fidl::endpoints::RequestStream for CapabilitiesRequestStream {
2699    type Protocol = CapabilitiesMarker;
2700    type ControlHandle = CapabilitiesControlHandle;
2701
2702    fn from_channel(channel: ::fidl::AsyncChannel) -> Self {
2703        Self { inner: std::sync::Arc::new(fidl::ServeInner::new(channel)), is_terminated: false }
2704    }
2705
2706    fn control_handle(&self) -> Self::ControlHandle {
2707        CapabilitiesControlHandle { inner: self.inner.clone() }
2708    }
2709
2710    fn into_inner(
2711        self,
2712    ) -> (::std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>, bool)
2713    {
2714        (self.inner, self.is_terminated)
2715    }
2716
2717    fn from_inner(
2718        inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
2719        is_terminated: bool,
2720    ) -> Self {
2721        Self { inner, is_terminated }
2722    }
2723}
2724
2725impl futures::Stream for CapabilitiesRequestStream {
2726    type Item = Result<CapabilitiesRequest, fidl::Error>;
2727
2728    fn poll_next(
2729        mut self: std::pin::Pin<&mut Self>,
2730        cx: &mut std::task::Context<'_>,
2731    ) -> std::task::Poll<Option<Self::Item>> {
2732        let this = &mut *self;
2733        if this.inner.check_shutdown(cx) {
2734            this.is_terminated = true;
2735            return std::task::Poll::Ready(None);
2736        }
2737        if this.is_terminated {
2738            panic!("polled CapabilitiesRequestStream after completion");
2739        }
2740        fidl::encoding::with_tls_decode_buf::<_, fidl::encoding::DefaultFuchsiaResourceDialect>(
2741            |bytes, handles| {
2742                match this.inner.channel().read_etc(cx, bytes, handles) {
2743                    std::task::Poll::Ready(Ok(())) => {}
2744                    std::task::Poll::Pending => return std::task::Poll::Pending,
2745                    std::task::Poll::Ready(Err(zx_status::Status::PEER_CLOSED)) => {
2746                        this.is_terminated = true;
2747                        return std::task::Poll::Ready(None);
2748                    }
2749                    std::task::Poll::Ready(Err(e)) => {
2750                        return std::task::Poll::Ready(Some(Err(fidl::Error::ServerRequestRead(
2751                            e.into(),
2752                        ))));
2753                    }
2754                }
2755
2756                // A message has been received from the channel
2757                let (header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
2758
2759                std::task::Poll::Ready(Some(match header.ordinal {
2760                    0xac2bc2dbd7033d1 => {
2761                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
2762                        let mut req = fidl::new_empty!(
2763                            CapabilitiesConnectorCreateRequest,
2764                            fidl::encoding::DefaultFuchsiaResourceDialect
2765                        );
2766                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<CapabilitiesConnectorCreateRequest>(&header, _body_bytes, handles, &mut req)?;
2767                        let control_handle =
2768                            CapabilitiesControlHandle { inner: this.inner.clone() };
2769                        Ok(CapabilitiesRequest::ConnectorCreate {
2770                            connector: req.connector,
2771                            receiver_client_end: req.receiver_client_end,
2772
2773                            responder: CapabilitiesConnectorCreateResponder {
2774                                control_handle: std::mem::ManuallyDrop::new(control_handle),
2775                                tx_id: header.tx_id,
2776                            },
2777                        })
2778                    }
2779                    0x721911e05da2a3bf => {
2780                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
2781                        let mut req = fidl::new_empty!(
2782                            CapabilitiesDirConnectorCreateRequest,
2783                            fidl::encoding::DefaultFuchsiaResourceDialect
2784                        );
2785                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<CapabilitiesDirConnectorCreateRequest>(&header, _body_bytes, handles, &mut req)?;
2786                        let control_handle =
2787                            CapabilitiesControlHandle { inner: this.inner.clone() };
2788                        Ok(CapabilitiesRequest::DirConnectorCreate {
2789                            dir_connector: req.dir_connector,
2790                            receiver_client_end: req.receiver_client_end,
2791
2792                            responder: CapabilitiesDirConnectorCreateResponder {
2793                                control_handle: std::mem::ManuallyDrop::new(control_handle),
2794                                tx_id: header.tx_id,
2795                            },
2796                        })
2797                    }
2798                    0x7f8bd91f0942a36e => {
2799                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
2800                        let mut req = fidl::new_empty!(
2801                            CapabilitiesDictionaryCreateRequest,
2802                            fidl::encoding::DefaultFuchsiaResourceDialect
2803                        );
2804                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<CapabilitiesDictionaryCreateRequest>(&header, _body_bytes, handles, &mut req)?;
2805                        let control_handle =
2806                            CapabilitiesControlHandle { inner: this.inner.clone() };
2807                        Ok(CapabilitiesRequest::DictionaryCreate {
2808                            dictionary: req.dictionary,
2809
2810                            responder: CapabilitiesDictionaryCreateResponder {
2811                                control_handle: std::mem::ManuallyDrop::new(control_handle),
2812                                tx_id: header.tx_id,
2813                            },
2814                        })
2815                    }
2816                    0x40ef43e45372ee6a => {
2817                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
2818                        let mut req = fidl::new_empty!(
2819                            CapabilitiesDataCreateRequest,
2820                            fidl::encoding::DefaultFuchsiaResourceDialect
2821                        );
2822                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<CapabilitiesDataCreateRequest>(&header, _body_bytes, handles, &mut req)?;
2823                        let control_handle =
2824                            CapabilitiesControlHandle { inner: this.inner.clone() };
2825                        Ok(CapabilitiesRequest::DataCreate {
2826                            data_handle: req.data_handle,
2827                            data: req.data,
2828
2829                            responder: CapabilitiesDataCreateResponder {
2830                                control_handle: std::mem::ManuallyDrop::new(control_handle),
2831                                tx_id: header.tx_id,
2832                            },
2833                        })
2834                    }
2835                    0x7f7e7fbafcdf1761 => {
2836                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
2837                        let mut req = fidl::new_empty!(
2838                            CapabilitiesConnectorRouterCreateRequest,
2839                            fidl::encoding::DefaultFuchsiaResourceDialect
2840                        );
2841                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<CapabilitiesConnectorRouterCreateRequest>(&header, _body_bytes, handles, &mut req)?;
2842                        let control_handle =
2843                            CapabilitiesControlHandle { inner: this.inner.clone() };
2844                        Ok(CapabilitiesRequest::ConnectorRouterCreate {
2845                            router: req.router,
2846                            router_client_end: req.router_client_end,
2847
2848                            responder: CapabilitiesConnectorRouterCreateResponder {
2849                                control_handle: std::mem::ManuallyDrop::new(control_handle),
2850                                tx_id: header.tx_id,
2851                            },
2852                        })
2853                    }
2854                    0x56520da453fad19f => {
2855                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
2856                        let mut req = fidl::new_empty!(
2857                            CapabilitiesDirConnectorRouterCreateRequest,
2858                            fidl::encoding::DefaultFuchsiaResourceDialect
2859                        );
2860                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<CapabilitiesDirConnectorRouterCreateRequest>(&header, _body_bytes, handles, &mut req)?;
2861                        let control_handle =
2862                            CapabilitiesControlHandle { inner: this.inner.clone() };
2863                        Ok(CapabilitiesRequest::DirConnectorRouterCreate {
2864                            router: req.router,
2865                            router_client_end: req.router_client_end,
2866
2867                            responder: CapabilitiesDirConnectorRouterCreateResponder {
2868                                control_handle: std::mem::ManuallyDrop::new(control_handle),
2869                                tx_id: header.tx_id,
2870                            },
2871                        })
2872                    }
2873                    0x37acef18cd423d42 => {
2874                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
2875                        let mut req = fidl::new_empty!(
2876                            CapabilitiesDictionaryRouterCreateRequest,
2877                            fidl::encoding::DefaultFuchsiaResourceDialect
2878                        );
2879                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<CapabilitiesDictionaryRouterCreateRequest>(&header, _body_bytes, handles, &mut req)?;
2880                        let control_handle =
2881                            CapabilitiesControlHandle { inner: this.inner.clone() };
2882                        Ok(CapabilitiesRequest::DictionaryRouterCreate {
2883                            router: req.router,
2884                            router_client_end: req.router_client_end,
2885
2886                            responder: CapabilitiesDictionaryRouterCreateResponder {
2887                                control_handle: std::mem::ManuallyDrop::new(control_handle),
2888                                tx_id: header.tx_id,
2889                            },
2890                        })
2891                    }
2892                    0x24e471395b95088 => {
2893                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
2894                        let mut req = fidl::new_empty!(
2895                            CapabilitiesDataRouterCreateRequest,
2896                            fidl::encoding::DefaultFuchsiaResourceDialect
2897                        );
2898                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<CapabilitiesDataRouterCreateRequest>(&header, _body_bytes, handles, &mut req)?;
2899                        let control_handle =
2900                            CapabilitiesControlHandle { inner: this.inner.clone() };
2901                        Ok(CapabilitiesRequest::DataRouterCreate {
2902                            router: req.router,
2903                            router_client_end: req.router_client_end,
2904
2905                            responder: CapabilitiesDataRouterCreateResponder {
2906                                control_handle: std::mem::ManuallyDrop::new(control_handle),
2907                                tx_id: header.tx_id,
2908                            },
2909                        })
2910                    }
2911                    0x3576e31727c40813 => {
2912                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
2913                        let mut req = fidl::new_empty!(
2914                            CapabilitiesInstanceTokenCreateRequest,
2915                            fidl::encoding::DefaultFuchsiaResourceDialect
2916                        );
2917                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<CapabilitiesInstanceTokenCreateRequest>(&header, _body_bytes, handles, &mut req)?;
2918                        let control_handle =
2919                            CapabilitiesControlHandle { inner: this.inner.clone() };
2920                        Ok(CapabilitiesRequest::InstanceTokenCreate {
2921                            instance_token: req.instance_token,
2922
2923                            responder: CapabilitiesInstanceTokenCreateResponder {
2924                                control_handle: std::mem::ManuallyDrop::new(control_handle),
2925                                tx_id: header.tx_id,
2926                            },
2927                        })
2928                    }
2929                    0xc0646965f1884eb => {
2930                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
2931                        let mut req = fidl::new_empty!(
2932                            CapabilitiesConnectorOpenRequest,
2933                            fidl::encoding::DefaultFuchsiaResourceDialect
2934                        );
2935                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<CapabilitiesConnectorOpenRequest>(&header, _body_bytes, handles, &mut req)?;
2936                        let control_handle =
2937                            CapabilitiesControlHandle { inner: this.inner.clone() };
2938                        Ok(CapabilitiesRequest::ConnectorOpen {
2939                            connector: req.connector,
2940                            channel: req.channel,
2941
2942                            responder: CapabilitiesConnectorOpenResponder {
2943                                control_handle: std::mem::ManuallyDrop::new(control_handle),
2944                                tx_id: header.tx_id,
2945                            },
2946                        })
2947                    }
2948                    0x1332bbf5debd6c20 => {
2949                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
2950                        let mut req = fidl::new_empty!(
2951                            CapabilitiesDirConnectorOpenRequest,
2952                            fidl::encoding::DefaultFuchsiaResourceDialect
2953                        );
2954                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<CapabilitiesDirConnectorOpenRequest>(&header, _body_bytes, handles, &mut req)?;
2955                        let control_handle =
2956                            CapabilitiesControlHandle { inner: this.inner.clone() };
2957                        Ok(CapabilitiesRequest::DirConnectorOpen {
2958                            payload: req,
2959                            responder: CapabilitiesDirConnectorOpenResponder {
2960                                control_handle: std::mem::ManuallyDrop::new(control_handle),
2961                                tx_id: header.tx_id,
2962                            },
2963                        })
2964                    }
2965                    0x5972e3061a760e7a => {
2966                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
2967                        let mut req = fidl::new_empty!(
2968                            CapabilitiesDictionaryInsertRequest,
2969                            fidl::encoding::DefaultFuchsiaResourceDialect
2970                        );
2971                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<CapabilitiesDictionaryInsertRequest>(&header, _body_bytes, handles, &mut req)?;
2972                        let control_handle =
2973                            CapabilitiesControlHandle { inner: this.inner.clone() };
2974                        Ok(CapabilitiesRequest::DictionaryInsert {
2975                            dictionary: req.dictionary,
2976                            key: req.key,
2977                            value: req.value,
2978
2979                            responder: CapabilitiesDictionaryInsertResponder {
2980                                control_handle: std::mem::ManuallyDrop::new(control_handle),
2981                                tx_id: header.tx_id,
2982                            },
2983                        })
2984                    }
2985                    0x31fafe2280a283d5 => {
2986                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
2987                        let mut req = fidl::new_empty!(
2988                            CapabilitiesDictionaryGetRequest,
2989                            fidl::encoding::DefaultFuchsiaResourceDialect
2990                        );
2991                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<CapabilitiesDictionaryGetRequest>(&header, _body_bytes, handles, &mut req)?;
2992                        let control_handle =
2993                            CapabilitiesControlHandle { inner: this.inner.clone() };
2994                        Ok(CapabilitiesRequest::DictionaryGet {
2995                            dictionary: req.dictionary,
2996                            key: req.key,
2997                            value: req.value,
2998
2999                            responder: CapabilitiesDictionaryGetResponder {
3000                                control_handle: std::mem::ManuallyDrop::new(control_handle),
3001                                tx_id: header.tx_id,
3002                            },
3003                        })
3004                    }
3005                    0x6827c83106ac5a2c => {
3006                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
3007                        let mut req = fidl::new_empty!(
3008                            CapabilitiesDictionaryRemoveRequest,
3009                            fidl::encoding::DefaultFuchsiaResourceDialect
3010                        );
3011                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<CapabilitiesDictionaryRemoveRequest>(&header, _body_bytes, handles, &mut req)?;
3012                        let control_handle =
3013                            CapabilitiesControlHandle { inner: this.inner.clone() };
3014                        Ok(CapabilitiesRequest::DictionaryRemove {
3015                            payload: req,
3016                            responder: CapabilitiesDictionaryRemoveResponder {
3017                                control_handle: std::mem::ManuallyDrop::new(control_handle),
3018                                tx_id: header.tx_id,
3019                            },
3020                        })
3021                    }
3022                    0x3d4ea59c80df9bb8 => {
3023                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
3024                        let mut req = fidl::new_empty!(
3025                            CapabilitiesDictionaryIterateKeysRequest,
3026                            fidl::encoding::DefaultFuchsiaResourceDialect
3027                        );
3028                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<CapabilitiesDictionaryIterateKeysRequest>(&header, _body_bytes, handles, &mut req)?;
3029                        let control_handle =
3030                            CapabilitiesControlHandle { inner: this.inner.clone() };
3031                        Ok(CapabilitiesRequest::DictionaryIterateKeys {
3032                            dictionary: req.dictionary,
3033                            key_iterator: req.key_iterator,
3034
3035                            responder: CapabilitiesDictionaryIterateKeysResponder {
3036                                control_handle: std::mem::ManuallyDrop::new(control_handle),
3037                                tx_id: header.tx_id,
3038                            },
3039                        })
3040                    }
3041                    0x65ae25b59f9e0daf => {
3042                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
3043                        let mut req = fidl::new_empty!(
3044                            CapabilitiesDataGetRequest,
3045                            fidl::encoding::DefaultFuchsiaResourceDialect
3046                        );
3047                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<CapabilitiesDataGetRequest>(&header, _body_bytes, handles, &mut req)?;
3048                        let control_handle =
3049                            CapabilitiesControlHandle { inner: this.inner.clone() };
3050                        Ok(CapabilitiesRequest::DataGet {
3051                            data_handle: req.data_handle,
3052
3053                            responder: CapabilitiesDataGetResponder {
3054                                control_handle: std::mem::ManuallyDrop::new(control_handle),
3055                                tx_id: header.tx_id,
3056                            },
3057                        })
3058                    }
3059                    0x1bd9c6e7e3dd487e => {
3060                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
3061                        let mut req = fidl::new_empty!(
3062                            CapabilitiesConnectorRouterRouteRequest,
3063                            fidl::encoding::DefaultFuchsiaResourceDialect
3064                        );
3065                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<CapabilitiesConnectorRouterRouteRequest>(&header, _body_bytes, handles, &mut req)?;
3066                        let control_handle =
3067                            CapabilitiesControlHandle { inner: this.inner.clone() };
3068                        Ok(CapabilitiesRequest::ConnectorRouterRoute {
3069                            router: req.router,
3070                            request: req.request,
3071                            instance_token: req.instance_token,
3072                            connector: req.connector,
3073
3074                            responder: CapabilitiesConnectorRouterRouteResponder {
3075                                control_handle: std::mem::ManuallyDrop::new(control_handle),
3076                                tx_id: header.tx_id,
3077                            },
3078                        })
3079                    }
3080                    0x3afdcc1b79e0799d => {
3081                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
3082                        let mut req = fidl::new_empty!(
3083                            CapabilitiesDirConnectorRouterRouteRequest,
3084                            fidl::encoding::DefaultFuchsiaResourceDialect
3085                        );
3086                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<CapabilitiesDirConnectorRouterRouteRequest>(&header, _body_bytes, handles, &mut req)?;
3087                        let control_handle =
3088                            CapabilitiesControlHandle { inner: this.inner.clone() };
3089                        Ok(CapabilitiesRequest::DirConnectorRouterRoute {
3090                            router: req.router,
3091                            request: req.request,
3092                            instance_token: req.instance_token,
3093                            dir_connector: req.dir_connector,
3094
3095                            responder: CapabilitiesDirConnectorRouterRouteResponder {
3096                                control_handle: std::mem::ManuallyDrop::new(control_handle),
3097                                tx_id: header.tx_id,
3098                            },
3099                        })
3100                    }
3101                    0xcf72de10714a708 => {
3102                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
3103                        let mut req = fidl::new_empty!(
3104                            CapabilitiesDictionaryRouterRouteRequest,
3105                            fidl::encoding::DefaultFuchsiaResourceDialect
3106                        );
3107                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<CapabilitiesDictionaryRouterRouteRequest>(&header, _body_bytes, handles, &mut req)?;
3108                        let control_handle =
3109                            CapabilitiesControlHandle { inner: this.inner.clone() };
3110                        Ok(CapabilitiesRequest::DictionaryRouterRoute {
3111                            router: req.router,
3112                            request: req.request,
3113                            instance_token: req.instance_token,
3114                            dictionary: req.dictionary,
3115
3116                            responder: CapabilitiesDictionaryRouterRouteResponder {
3117                                control_handle: std::mem::ManuallyDrop::new(control_handle),
3118                                tx_id: header.tx_id,
3119                            },
3120                        })
3121                    }
3122                    0x61ab188455ed0643 => {
3123                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
3124                        let mut req = fidl::new_empty!(
3125                            CapabilitiesDataRouterRouteRequest,
3126                            fidl::encoding::DefaultFuchsiaResourceDialect
3127                        );
3128                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<CapabilitiesDataRouterRouteRequest>(&header, _body_bytes, handles, &mut req)?;
3129                        let control_handle =
3130                            CapabilitiesControlHandle { inner: this.inner.clone() };
3131                        Ok(CapabilitiesRequest::DataRouterRoute {
3132                            router: req.router,
3133                            request: req.request,
3134                            instance_token: req.instance_token,
3135                            data: req.data,
3136
3137                            responder: CapabilitiesDataRouterRouteResponder {
3138                                control_handle: std::mem::ManuallyDrop::new(control_handle),
3139                                tx_id: header.tx_id,
3140                            },
3141                        })
3142                    }
3143                    0x1d69bb61953d8e7 => {
3144                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
3145                        let mut req = fidl::new_empty!(
3146                            CapabilitiesCapabilityAssociateHandleRequest,
3147                            fidl::encoding::DefaultFuchsiaResourceDialect
3148                        );
3149                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<CapabilitiesCapabilityAssociateHandleRequest>(&header, _body_bytes, handles, &mut req)?;
3150                        let control_handle =
3151                            CapabilitiesControlHandle { inner: this.inner.clone() };
3152                        Ok(CapabilitiesRequest::CapabilityAssociateHandle {
3153                            capability_handle: req.capability_handle,
3154                            other_handle: req.other_handle,
3155
3156                            responder: CapabilitiesCapabilityAssociateHandleResponder {
3157                                control_handle: std::mem::ManuallyDrop::new(control_handle),
3158                                tx_id: header.tx_id,
3159                            },
3160                        })
3161                    }
3162                    _ if header.tx_id == 0
3163                        && header
3164                            .dynamic_flags()
3165                            .contains(fidl::encoding::DynamicFlags::FLEXIBLE) =>
3166                    {
3167                        Ok(CapabilitiesRequest::_UnknownMethod {
3168                            ordinal: header.ordinal,
3169                            control_handle: CapabilitiesControlHandle { inner: this.inner.clone() },
3170                            method_type: fidl::MethodType::OneWay,
3171                        })
3172                    }
3173                    _ if header
3174                        .dynamic_flags()
3175                        .contains(fidl::encoding::DynamicFlags::FLEXIBLE) =>
3176                    {
3177                        this.inner.send_framework_err(
3178                            fidl::encoding::FrameworkErr::UnknownMethod,
3179                            header.tx_id,
3180                            header.ordinal,
3181                            header.dynamic_flags(),
3182                            (bytes, handles),
3183                        )?;
3184                        Ok(CapabilitiesRequest::_UnknownMethod {
3185                            ordinal: header.ordinal,
3186                            control_handle: CapabilitiesControlHandle { inner: this.inner.clone() },
3187                            method_type: fidl::MethodType::TwoWay,
3188                        })
3189                    }
3190                    _ => Err(fidl::Error::UnknownOrdinal {
3191                        ordinal: header.ordinal,
3192                        protocol_name:
3193                            <CapabilitiesMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
3194                    }),
3195                }))
3196            },
3197        )
3198    }
3199}
3200
3201/// An API for creating and manipulating references to runtime capabilities in
3202/// the component framework. These capabilities are all reference counted by
3203/// component manager, and when accessed with this protocol the references are
3204/// implemented as event pair handles.
3205#[derive(Debug)]
3206pub enum CapabilitiesRequest {
3207    /// Creates a reference to a new connector capability. When the connector is
3208    /// opened, the channel given to the open call will be sent over
3209    /// `receiver_client_end`.
3210    ///
3211    /// Make sure this method returns before passing the handle's peer to other
3212    /// methods in this API. The creation may not be complete before then.
3213    ConnectorCreate {
3214        connector: fidl::EventPair,
3215        receiver_client_end: fidl::endpoints::ClientEnd<ReceiverMarker>,
3216        responder: CapabilitiesConnectorCreateResponder,
3217    },
3218    /// Creates a reference to a new directory connector capability. When the
3219    /// directory connector is opened, the channel given to the open call will
3220    /// be sent over `receiver_client_end`.
3221    ///
3222    /// Make sure this method returns before passing the handle's peer to other
3223    /// methods in this API. The creation may not be complete before then.
3224    DirConnectorCreate {
3225        dir_connector: fidl::EventPair,
3226        receiver_client_end: fidl::endpoints::ClientEnd<DirReceiverMarker>,
3227        responder: CapabilitiesDirConnectorCreateResponder,
3228    },
3229    /// Creates a reference to a new dictionary capability.
3230    ///
3231    /// Make sure this method returns before passing the handle's peer to other
3232    /// methods in this API. The creation may not be complete before then.
3233    DictionaryCreate {
3234        dictionary: fidl::EventPair,
3235        responder: CapabilitiesDictionaryCreateResponder,
3236    },
3237    /// Creates a reference to a new data capability with the given value.
3238    ///
3239    /// Make sure this method returns before passing the handle's peer to other
3240    /// methods in this API. The creation may not be complete before then.
3241    DataCreate {
3242        data_handle: fidl::EventPair,
3243        data: Data,
3244        responder: CapabilitiesDataCreateResponder,
3245    },
3246    /// Creates a reference to a new router capability that will return a
3247    /// connector capability when used.
3248    ///
3249    /// Make sure this method returns before passing the handle's peer to other
3250    /// methods in this API. The creation may not be complete before then.
3251    ConnectorRouterCreate {
3252        router: fidl::EventPair,
3253        router_client_end: fidl::endpoints::ClientEnd<ConnectorRouterMarker>,
3254        responder: CapabilitiesConnectorRouterCreateResponder,
3255    },
3256    /// Creates a reference to a new router capability that will return a
3257    /// directory connector capability when used.
3258    ///
3259    /// Make sure this method returns before passing the handle's peer to other
3260    /// methods in this API. The creation may not be complete before then.
3261    DirConnectorRouterCreate {
3262        router: fidl::EventPair,
3263        router_client_end: fidl::endpoints::ClientEnd<DirConnectorRouterMarker>,
3264        responder: CapabilitiesDirConnectorRouterCreateResponder,
3265    },
3266    /// Creates a reference to a new router capability that will return a
3267    /// dictionary capability when used.
3268    ///
3269    /// Make sure this method returns before passing the handle's peer to other
3270    /// methods in this API. The creation may not be complete before then.
3271    DictionaryRouterCreate {
3272        router: fidl::EventPair,
3273        router_client_end: fidl::endpoints::ClientEnd<DictionaryRouterMarker>,
3274        responder: CapabilitiesDictionaryRouterCreateResponder,
3275    },
3276    /// Creates a reference to a new router capability that will return a data
3277    /// value when used.
3278    ///
3279    /// Make sure this method returns before passing the handle's peer to other
3280    /// methods in this API. The creation may not be complete before then.
3281    DataRouterCreate {
3282        router: fidl::EventPair,
3283        router_client_end: fidl::endpoints::ClientEnd<DataRouterMarker>,
3284        responder: CapabilitiesDataRouterCreateResponder,
3285    },
3286    /// Creates a new instance token, which is an opaque identifier associated
3287    /// with a specific component. This instance token will be associated with
3288    /// the component this connection is opened from.
3289    ///
3290    /// Make sure this method returns before passing the handle's peer to other
3291    /// methods in this API. The creation may not be complete before then.
3292    InstanceTokenCreate {
3293        instance_token: fidl::EventPair,
3294        responder: CapabilitiesInstanceTokenCreateResponder,
3295    },
3296    /// Uses the provided `connector` to open a new connection by delivering
3297    /// this channel to whoever created the connector.
3298    ///
3299    /// If there is an error, it will be reported as a zx.Status epitaph on
3300    /// `channel`.
3301    ///
3302    /// If the `connector` event pair handle is not correlated with a handle
3303    /// given to `ConnectorCreate`, this connection will be closed.
3304    ConnectorOpen {
3305        connector: fidl::EventPair,
3306        channel: fidl::Channel,
3307        responder: CapabilitiesConnectorOpenResponder,
3308    },
3309    /// Uses the provided `dir_connector` to open a new directory connection by
3310    /// delivering this channel to whoever created the directory connector.
3311    ///
3312    /// If there is an error, it will be reported as a zx.Status epitaph on
3313    /// `channel`.
3314    ///
3315    /// If the `dir_connector` event pair handle is not correlated with a handle
3316    /// given to `DirConnectorCreate`, this connection will be closed.
3317    ///
3318    /// `dir_connector` and `channel` are both required. `flags` and `path`
3319    /// may be omitted.
3320    DirConnectorOpen {
3321        payload: CapabilitiesDirConnectorOpenRequest,
3322        responder: CapabilitiesDirConnectorOpenResponder,
3323    },
3324    /// Inserts a new `capability` into this `Dictionary` under the name `key`.
3325    /// Overwrites any existing entry.
3326    DictionaryInsert {
3327        dictionary: fidl::EventPair,
3328        key: String,
3329        value: fidl::EventPair,
3330        responder: CapabilitiesDictionaryInsertResponder,
3331    },
3332    /// Creates a new reference to the `capability` named `key` in this
3333    /// dictionary, if that capability exists. That capability will remain in
3334    /// the dictionary. To take a capability out of the dictionary, use
3335    /// `DictionaryRemove`.
3336    ///
3337    /// If `key` does not exist, `value` will not reference any capability and
3338    /// the `NO_SUCH_CAPABILITY` error value will be returned.
3339    ///
3340    /// Make sure this method returns before passing the handle's peer to other
3341    /// methods in this API. The creation may not be complete before then.
3342    DictionaryGet {
3343        dictionary: fidl::EventPair,
3344        key: String,
3345        value: fidl::EventPair,
3346        responder: CapabilitiesDictionaryGetResponder,
3347    },
3348    /// Removes the `capability` named `key` from this dictionary and returns a
3349    /// reference to it, if that capability exists.
3350    ///
3351    /// `dictionary` and `key` are required. `capability` is optional, and when
3352    /// set will become associated with the capability that was removed from the
3353    /// dictionary.
3354    ///
3355    /// If `key` does not exist, `value` will not reference any capability and
3356    /// the `NO_SUCH_CAPABILITY` error value will be returned.
3357    ///
3358    /// Make sure this method returns before passing the peer of `capability` to
3359    /// other methods in this API. The creation may not be complete before then.
3360    DictionaryRemove {
3361        payload: CapabilitiesDictionaryRemoveRequest,
3362        responder: CapabilitiesDictionaryRemoveResponder,
3363    },
3364    /// Opens an iterator which can be used to iterate over the keys of this
3365    /// dictionary.
3366    DictionaryIterateKeys {
3367        dictionary: fidl::EventPair,
3368        key_iterator: fidl::endpoints::ServerEnd<DictionaryKeyIteratorMarker>,
3369        responder: CapabilitiesDictionaryIterateKeysResponder,
3370    },
3371    /// Returns the `Data` value that was provided to the `DataCreate` call used
3372    /// with `data_handle`.
3373    DataGet { data_handle: fidl::EventPair, responder: CapabilitiesDataGetResponder },
3374    /// Attempts to produce a `Connector` capability from this
3375    /// `ConnectorRouter`.
3376    ///
3377    /// `request` contains context for this route, and `instance_token`
3378    /// references the component that the routing operation is being performed
3379    /// for.
3380    ///
3381    /// This will return:
3382    ///
3383    /// - `SUCCESS` if `connector` has been associated with a connector.
3384    /// - `UNAVAILABLE` if the capability is unavailable, in which case
3385    ///   `connector` will be closed.
3386    /// - An error, if the operation failed.
3387    ConnectorRouterRoute {
3388        router: fidl::EventPair,
3389        request: RouteRequest,
3390        instance_token: fidl::EventPair,
3391        connector: fidl::EventPair,
3392        responder: CapabilitiesConnectorRouterRouteResponder,
3393    },
3394    /// Attempts to produce a `DirConnector` capability from this
3395    /// `DirConnectorRouter`.
3396    ///
3397    /// `request` contains context for this route, and `instance_token`
3398    /// references the component that the routing operation is being performed
3399    /// for.
3400    ///
3401    /// This will return:
3402    ///
3403    /// - `SUCCESS` if `dir_connector` has been associated with a connector.
3404    /// - `UNAVAILABLE` if the capability is unavailable, in which case
3405    ///   `dir_connector` will be closed.
3406    /// - An error, if the operation failed.
3407    DirConnectorRouterRoute {
3408        router: fidl::EventPair,
3409        request: RouteRequest,
3410        instance_token: fidl::EventPair,
3411        dir_connector: fidl::EventPair,
3412        responder: CapabilitiesDirConnectorRouterRouteResponder,
3413    },
3414    /// Attempts to produce a `Dictionary` capability from this
3415    /// `DictionaryRouter`.
3416    ///
3417    /// `request` contains context for this route, and `instance_token`
3418    /// references the component that the routing operation is being performed
3419    /// for.
3420    ///
3421    /// This will return:
3422    ///
3423    /// - `SUCCESS` if `dictionary` has been associated with a connector.
3424    /// - `UNAVAILABLE` if the capability is unavailable, in which case
3425    ///   `dictionary` will be closed.
3426    /// - An error, if the operation failed.
3427    DictionaryRouterRoute {
3428        router: fidl::EventPair,
3429        request: RouteRequest,
3430        instance_token: fidl::EventPair,
3431        dictionary: fidl::EventPair,
3432        responder: CapabilitiesDictionaryRouterRouteResponder,
3433    },
3434    /// Attempts to produce a `Data` capability from this `DataRouter`.
3435    ///
3436    /// `request` contains context for this route, and `instance_token`
3437    /// references the component that the routing operation is being performed
3438    /// for.
3439    ///
3440    /// This will return:
3441    ///
3442    /// - `SUCCESS` if `data` has been associated with a connector.
3443    /// - `UNAVAILABLE` if the capability is unavailable, in which case `data`
3444    ///   will be closed.
3445    /// - An error, if the operation failed.
3446    DataRouterRoute {
3447        router: fidl::EventPair,
3448        request: RouteRequest,
3449        instance_token: fidl::EventPair,
3450        data: fidl::EventPair,
3451        responder: CapabilitiesDataRouterRouteResponder,
3452    },
3453    /// Associates `other_handle` with the same capability referenced by
3454    /// `capability_handle`.
3455    ///
3456    /// Typically if one already has `capability_handle` the handle can be
3457    /// duplicated to make a new handle that references the same object, but
3458    /// this doesn't work when someone else has provided a handle that should be
3459    /// associated with an existing object.
3460    CapabilityAssociateHandle {
3461        capability_handle: fidl::EventPair,
3462        other_handle: fidl::EventPair,
3463        responder: CapabilitiesCapabilityAssociateHandleResponder,
3464    },
3465    /// An interaction was received which does not match any known method.
3466    #[non_exhaustive]
3467    _UnknownMethod {
3468        /// Ordinal of the method that was called.
3469        ordinal: u64,
3470        control_handle: CapabilitiesControlHandle,
3471        method_type: fidl::MethodType,
3472    },
3473}
3474
3475impl CapabilitiesRequest {
3476    #[allow(irrefutable_let_patterns)]
3477    pub fn into_connector_create(
3478        self,
3479    ) -> Option<(
3480        fidl::EventPair,
3481        fidl::endpoints::ClientEnd<ReceiverMarker>,
3482        CapabilitiesConnectorCreateResponder,
3483    )> {
3484        if let CapabilitiesRequest::ConnectorCreate { connector, receiver_client_end, responder } =
3485            self
3486        {
3487            Some((connector, receiver_client_end, responder))
3488        } else {
3489            None
3490        }
3491    }
3492
3493    #[allow(irrefutable_let_patterns)]
3494    pub fn into_dir_connector_create(
3495        self,
3496    ) -> Option<(
3497        fidl::EventPair,
3498        fidl::endpoints::ClientEnd<DirReceiverMarker>,
3499        CapabilitiesDirConnectorCreateResponder,
3500    )> {
3501        if let CapabilitiesRequest::DirConnectorCreate {
3502            dir_connector,
3503            receiver_client_end,
3504            responder,
3505        } = self
3506        {
3507            Some((dir_connector, receiver_client_end, responder))
3508        } else {
3509            None
3510        }
3511    }
3512
3513    #[allow(irrefutable_let_patterns)]
3514    pub fn into_dictionary_create(
3515        self,
3516    ) -> Option<(fidl::EventPair, CapabilitiesDictionaryCreateResponder)> {
3517        if let CapabilitiesRequest::DictionaryCreate { dictionary, responder } = self {
3518            Some((dictionary, responder))
3519        } else {
3520            None
3521        }
3522    }
3523
3524    #[allow(irrefutable_let_patterns)]
3525    pub fn into_data_create(
3526        self,
3527    ) -> Option<(fidl::EventPair, Data, CapabilitiesDataCreateResponder)> {
3528        if let CapabilitiesRequest::DataCreate { data_handle, data, responder } = self {
3529            Some((data_handle, data, responder))
3530        } else {
3531            None
3532        }
3533    }
3534
3535    #[allow(irrefutable_let_patterns)]
3536    pub fn into_connector_router_create(
3537        self,
3538    ) -> Option<(
3539        fidl::EventPair,
3540        fidl::endpoints::ClientEnd<ConnectorRouterMarker>,
3541        CapabilitiesConnectorRouterCreateResponder,
3542    )> {
3543        if let CapabilitiesRequest::ConnectorRouterCreate { router, router_client_end, responder } =
3544            self
3545        {
3546            Some((router, router_client_end, responder))
3547        } else {
3548            None
3549        }
3550    }
3551
3552    #[allow(irrefutable_let_patterns)]
3553    pub fn into_dir_connector_router_create(
3554        self,
3555    ) -> Option<(
3556        fidl::EventPair,
3557        fidl::endpoints::ClientEnd<DirConnectorRouterMarker>,
3558        CapabilitiesDirConnectorRouterCreateResponder,
3559    )> {
3560        if let CapabilitiesRequest::DirConnectorRouterCreate {
3561            router,
3562            router_client_end,
3563            responder,
3564        } = self
3565        {
3566            Some((router, router_client_end, responder))
3567        } else {
3568            None
3569        }
3570    }
3571
3572    #[allow(irrefutable_let_patterns)]
3573    pub fn into_dictionary_router_create(
3574        self,
3575    ) -> Option<(
3576        fidl::EventPair,
3577        fidl::endpoints::ClientEnd<DictionaryRouterMarker>,
3578        CapabilitiesDictionaryRouterCreateResponder,
3579    )> {
3580        if let CapabilitiesRequest::DictionaryRouterCreate {
3581            router,
3582            router_client_end,
3583            responder,
3584        } = self
3585        {
3586            Some((router, router_client_end, responder))
3587        } else {
3588            None
3589        }
3590    }
3591
3592    #[allow(irrefutable_let_patterns)]
3593    pub fn into_data_router_create(
3594        self,
3595    ) -> Option<(
3596        fidl::EventPair,
3597        fidl::endpoints::ClientEnd<DataRouterMarker>,
3598        CapabilitiesDataRouterCreateResponder,
3599    )> {
3600        if let CapabilitiesRequest::DataRouterCreate { router, router_client_end, responder } = self
3601        {
3602            Some((router, router_client_end, responder))
3603        } else {
3604            None
3605        }
3606    }
3607
3608    #[allow(irrefutable_let_patterns)]
3609    pub fn into_instance_token_create(
3610        self,
3611    ) -> Option<(fidl::EventPair, CapabilitiesInstanceTokenCreateResponder)> {
3612        if let CapabilitiesRequest::InstanceTokenCreate { instance_token, responder } = self {
3613            Some((instance_token, responder))
3614        } else {
3615            None
3616        }
3617    }
3618
3619    #[allow(irrefutable_let_patterns)]
3620    pub fn into_connector_open(
3621        self,
3622    ) -> Option<(fidl::EventPair, fidl::Channel, CapabilitiesConnectorOpenResponder)> {
3623        if let CapabilitiesRequest::ConnectorOpen { connector, channel, responder } = self {
3624            Some((connector, channel, responder))
3625        } else {
3626            None
3627        }
3628    }
3629
3630    #[allow(irrefutable_let_patterns)]
3631    pub fn into_dir_connector_open(
3632        self,
3633    ) -> Option<(CapabilitiesDirConnectorOpenRequest, CapabilitiesDirConnectorOpenResponder)> {
3634        if let CapabilitiesRequest::DirConnectorOpen { payload, responder } = self {
3635            Some((payload, responder))
3636        } else {
3637            None
3638        }
3639    }
3640
3641    #[allow(irrefutable_let_patterns)]
3642    pub fn into_dictionary_insert(
3643        self,
3644    ) -> Option<(fidl::EventPair, String, fidl::EventPair, CapabilitiesDictionaryInsertResponder)>
3645    {
3646        if let CapabilitiesRequest::DictionaryInsert { dictionary, key, value, responder } = self {
3647            Some((dictionary, key, value, responder))
3648        } else {
3649            None
3650        }
3651    }
3652
3653    #[allow(irrefutable_let_patterns)]
3654    pub fn into_dictionary_get(
3655        self,
3656    ) -> Option<(fidl::EventPair, String, fidl::EventPair, CapabilitiesDictionaryGetResponder)>
3657    {
3658        if let CapabilitiesRequest::DictionaryGet { dictionary, key, value, responder } = self {
3659            Some((dictionary, key, value, responder))
3660        } else {
3661            None
3662        }
3663    }
3664
3665    #[allow(irrefutable_let_patterns)]
3666    pub fn into_dictionary_remove(
3667        self,
3668    ) -> Option<(CapabilitiesDictionaryRemoveRequest, CapabilitiesDictionaryRemoveResponder)> {
3669        if let CapabilitiesRequest::DictionaryRemove { payload, responder } = self {
3670            Some((payload, responder))
3671        } else {
3672            None
3673        }
3674    }
3675
3676    #[allow(irrefutable_let_patterns)]
3677    pub fn into_dictionary_iterate_keys(
3678        self,
3679    ) -> Option<(
3680        fidl::EventPair,
3681        fidl::endpoints::ServerEnd<DictionaryKeyIteratorMarker>,
3682        CapabilitiesDictionaryIterateKeysResponder,
3683    )> {
3684        if let CapabilitiesRequest::DictionaryIterateKeys { dictionary, key_iterator, responder } =
3685            self
3686        {
3687            Some((dictionary, key_iterator, responder))
3688        } else {
3689            None
3690        }
3691    }
3692
3693    #[allow(irrefutable_let_patterns)]
3694    pub fn into_data_get(self) -> Option<(fidl::EventPair, CapabilitiesDataGetResponder)> {
3695        if let CapabilitiesRequest::DataGet { data_handle, responder } = self {
3696            Some((data_handle, responder))
3697        } else {
3698            None
3699        }
3700    }
3701
3702    #[allow(irrefutable_let_patterns)]
3703    pub fn into_connector_router_route(
3704        self,
3705    ) -> Option<(
3706        fidl::EventPair,
3707        RouteRequest,
3708        fidl::EventPair,
3709        fidl::EventPair,
3710        CapabilitiesConnectorRouterRouteResponder,
3711    )> {
3712        if let CapabilitiesRequest::ConnectorRouterRoute {
3713            router,
3714            request,
3715            instance_token,
3716            connector,
3717            responder,
3718        } = self
3719        {
3720            Some((router, request, instance_token, connector, responder))
3721        } else {
3722            None
3723        }
3724    }
3725
3726    #[allow(irrefutable_let_patterns)]
3727    pub fn into_dir_connector_router_route(
3728        self,
3729    ) -> Option<(
3730        fidl::EventPair,
3731        RouteRequest,
3732        fidl::EventPair,
3733        fidl::EventPair,
3734        CapabilitiesDirConnectorRouterRouteResponder,
3735    )> {
3736        if let CapabilitiesRequest::DirConnectorRouterRoute {
3737            router,
3738            request,
3739            instance_token,
3740            dir_connector,
3741            responder,
3742        } = self
3743        {
3744            Some((router, request, instance_token, dir_connector, responder))
3745        } else {
3746            None
3747        }
3748    }
3749
3750    #[allow(irrefutable_let_patterns)]
3751    pub fn into_dictionary_router_route(
3752        self,
3753    ) -> Option<(
3754        fidl::EventPair,
3755        RouteRequest,
3756        fidl::EventPair,
3757        fidl::EventPair,
3758        CapabilitiesDictionaryRouterRouteResponder,
3759    )> {
3760        if let CapabilitiesRequest::DictionaryRouterRoute {
3761            router,
3762            request,
3763            instance_token,
3764            dictionary,
3765            responder,
3766        } = self
3767        {
3768            Some((router, request, instance_token, dictionary, responder))
3769        } else {
3770            None
3771        }
3772    }
3773
3774    #[allow(irrefutable_let_patterns)]
3775    pub fn into_data_router_route(
3776        self,
3777    ) -> Option<(
3778        fidl::EventPair,
3779        RouteRequest,
3780        fidl::EventPair,
3781        fidl::EventPair,
3782        CapabilitiesDataRouterRouteResponder,
3783    )> {
3784        if let CapabilitiesRequest::DataRouterRoute {
3785            router,
3786            request,
3787            instance_token,
3788            data,
3789            responder,
3790        } = self
3791        {
3792            Some((router, request, instance_token, data, responder))
3793        } else {
3794            None
3795        }
3796    }
3797
3798    #[allow(irrefutable_let_patterns)]
3799    pub fn into_capability_associate_handle(
3800        self,
3801    ) -> Option<(fidl::EventPair, fidl::EventPair, CapabilitiesCapabilityAssociateHandleResponder)>
3802    {
3803        if let CapabilitiesRequest::CapabilityAssociateHandle {
3804            capability_handle,
3805            other_handle,
3806            responder,
3807        } = self
3808        {
3809            Some((capability_handle, other_handle, responder))
3810        } else {
3811            None
3812        }
3813    }
3814
3815    /// Name of the method defined in FIDL
3816    pub fn method_name(&self) -> &'static str {
3817        match *self {
3818            CapabilitiesRequest::ConnectorCreate { .. } => "connector_create",
3819            CapabilitiesRequest::DirConnectorCreate { .. } => "dir_connector_create",
3820            CapabilitiesRequest::DictionaryCreate { .. } => "dictionary_create",
3821            CapabilitiesRequest::DataCreate { .. } => "data_create",
3822            CapabilitiesRequest::ConnectorRouterCreate { .. } => "connector_router_create",
3823            CapabilitiesRequest::DirConnectorRouterCreate { .. } => "dir_connector_router_create",
3824            CapabilitiesRequest::DictionaryRouterCreate { .. } => "dictionary_router_create",
3825            CapabilitiesRequest::DataRouterCreate { .. } => "data_router_create",
3826            CapabilitiesRequest::InstanceTokenCreate { .. } => "instance_token_create",
3827            CapabilitiesRequest::ConnectorOpen { .. } => "connector_open",
3828            CapabilitiesRequest::DirConnectorOpen { .. } => "dir_connector_open",
3829            CapabilitiesRequest::DictionaryInsert { .. } => "dictionary_insert",
3830            CapabilitiesRequest::DictionaryGet { .. } => "dictionary_get",
3831            CapabilitiesRequest::DictionaryRemove { .. } => "dictionary_remove",
3832            CapabilitiesRequest::DictionaryIterateKeys { .. } => "dictionary_iterate_keys",
3833            CapabilitiesRequest::DataGet { .. } => "data_get",
3834            CapabilitiesRequest::ConnectorRouterRoute { .. } => "connector_router_route",
3835            CapabilitiesRequest::DirConnectorRouterRoute { .. } => "dir_connector_router_route",
3836            CapabilitiesRequest::DictionaryRouterRoute { .. } => "dictionary_router_route",
3837            CapabilitiesRequest::DataRouterRoute { .. } => "data_router_route",
3838            CapabilitiesRequest::CapabilityAssociateHandle { .. } => "capability_associate_handle",
3839            CapabilitiesRequest::_UnknownMethod {
3840                method_type: fidl::MethodType::OneWay, ..
3841            } => "unknown one-way method",
3842            CapabilitiesRequest::_UnknownMethod {
3843                method_type: fidl::MethodType::TwoWay, ..
3844            } => "unknown two-way method",
3845        }
3846    }
3847}
3848
3849#[derive(Debug, Clone)]
3850pub struct CapabilitiesControlHandle {
3851    inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
3852}
3853
3854impl fidl::endpoints::ControlHandle for CapabilitiesControlHandle {
3855    fn shutdown(&self) {
3856        self.inner.shutdown()
3857    }
3858
3859    fn shutdown_with_epitaph(&self, status: zx_status::Status) {
3860        self.inner.shutdown_with_epitaph(status)
3861    }
3862
3863    fn is_closed(&self) -> bool {
3864        self.inner.channel().is_closed()
3865    }
3866    fn on_closed(&self) -> fidl::OnSignalsRef<'_> {
3867        self.inner.channel().on_closed()
3868    }
3869
3870    #[cfg(target_os = "fuchsia")]
3871    fn signal_peer(
3872        &self,
3873        clear_mask: zx::Signals,
3874        set_mask: zx::Signals,
3875    ) -> Result<(), zx_status::Status> {
3876        use fidl::Peered;
3877        self.inner.channel().signal_peer(clear_mask, set_mask)
3878    }
3879}
3880
3881impl CapabilitiesControlHandle {}
3882
3883#[must_use = "FIDL methods require a response to be sent"]
3884#[derive(Debug)]
3885pub struct CapabilitiesConnectorCreateResponder {
3886    control_handle: std::mem::ManuallyDrop<CapabilitiesControlHandle>,
3887    tx_id: u32,
3888}
3889
3890/// Set the the channel to be shutdown (see [`CapabilitiesControlHandle::shutdown`])
3891/// if the responder is dropped without sending a response, so that the client
3892/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
3893impl std::ops::Drop for CapabilitiesConnectorCreateResponder {
3894    fn drop(&mut self) {
3895        self.control_handle.shutdown();
3896        // Safety: drops once, never accessed again
3897        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
3898    }
3899}
3900
3901impl fidl::endpoints::Responder for CapabilitiesConnectorCreateResponder {
3902    type ControlHandle = CapabilitiesControlHandle;
3903
3904    fn control_handle(&self) -> &CapabilitiesControlHandle {
3905        &self.control_handle
3906    }
3907
3908    fn drop_without_shutdown(mut self) {
3909        // Safety: drops once, never accessed again due to mem::forget
3910        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
3911        // Prevent Drop from running (which would shut down the channel)
3912        std::mem::forget(self);
3913    }
3914}
3915
3916impl CapabilitiesConnectorCreateResponder {
3917    /// Sends a response to the FIDL transaction.
3918    ///
3919    /// Sets the channel to shutdown if an error occurs.
3920    pub fn send(self, mut result: Result<(), CapabilitiesError>) -> Result<(), fidl::Error> {
3921        let _result = self.send_raw(result);
3922        if _result.is_err() {
3923            self.control_handle.shutdown();
3924        }
3925        self.drop_without_shutdown();
3926        _result
3927    }
3928
3929    /// Similar to "send" but does not shutdown the channel if an error occurs.
3930    pub fn send_no_shutdown_on_err(
3931        self,
3932        mut result: Result<(), CapabilitiesError>,
3933    ) -> Result<(), fidl::Error> {
3934        let _result = self.send_raw(result);
3935        self.drop_without_shutdown();
3936        _result
3937    }
3938
3939    fn send_raw(&self, mut result: Result<(), CapabilitiesError>) -> Result<(), fidl::Error> {
3940        self.control_handle.inner.send::<fidl::encoding::FlexibleResultType<
3941            fidl::encoding::EmptyStruct,
3942            CapabilitiesError,
3943        >>(
3944            fidl::encoding::FlexibleResult::new(result),
3945            self.tx_id,
3946            0xac2bc2dbd7033d1,
3947            fidl::encoding::DynamicFlags::FLEXIBLE,
3948        )
3949    }
3950}
3951
3952#[must_use = "FIDL methods require a response to be sent"]
3953#[derive(Debug)]
3954pub struct CapabilitiesDirConnectorCreateResponder {
3955    control_handle: std::mem::ManuallyDrop<CapabilitiesControlHandle>,
3956    tx_id: u32,
3957}
3958
3959/// Set the the channel to be shutdown (see [`CapabilitiesControlHandle::shutdown`])
3960/// if the responder is dropped without sending a response, so that the client
3961/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
3962impl std::ops::Drop for CapabilitiesDirConnectorCreateResponder {
3963    fn drop(&mut self) {
3964        self.control_handle.shutdown();
3965        // Safety: drops once, never accessed again
3966        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
3967    }
3968}
3969
3970impl fidl::endpoints::Responder for CapabilitiesDirConnectorCreateResponder {
3971    type ControlHandle = CapabilitiesControlHandle;
3972
3973    fn control_handle(&self) -> &CapabilitiesControlHandle {
3974        &self.control_handle
3975    }
3976
3977    fn drop_without_shutdown(mut self) {
3978        // Safety: drops once, never accessed again due to mem::forget
3979        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
3980        // Prevent Drop from running (which would shut down the channel)
3981        std::mem::forget(self);
3982    }
3983}
3984
3985impl CapabilitiesDirConnectorCreateResponder {
3986    /// Sends a response to the FIDL transaction.
3987    ///
3988    /// Sets the channel to shutdown if an error occurs.
3989    pub fn send(self, mut result: Result<(), CapabilitiesError>) -> Result<(), fidl::Error> {
3990        let _result = self.send_raw(result);
3991        if _result.is_err() {
3992            self.control_handle.shutdown();
3993        }
3994        self.drop_without_shutdown();
3995        _result
3996    }
3997
3998    /// Similar to "send" but does not shutdown the channel if an error occurs.
3999    pub fn send_no_shutdown_on_err(
4000        self,
4001        mut result: Result<(), CapabilitiesError>,
4002    ) -> Result<(), fidl::Error> {
4003        let _result = self.send_raw(result);
4004        self.drop_without_shutdown();
4005        _result
4006    }
4007
4008    fn send_raw(&self, mut result: Result<(), CapabilitiesError>) -> Result<(), fidl::Error> {
4009        self.control_handle.inner.send::<fidl::encoding::FlexibleResultType<
4010            fidl::encoding::EmptyStruct,
4011            CapabilitiesError,
4012        >>(
4013            fidl::encoding::FlexibleResult::new(result),
4014            self.tx_id,
4015            0x721911e05da2a3bf,
4016            fidl::encoding::DynamicFlags::FLEXIBLE,
4017        )
4018    }
4019}
4020
4021#[must_use = "FIDL methods require a response to be sent"]
4022#[derive(Debug)]
4023pub struct CapabilitiesDictionaryCreateResponder {
4024    control_handle: std::mem::ManuallyDrop<CapabilitiesControlHandle>,
4025    tx_id: u32,
4026}
4027
4028/// Set the the channel to be shutdown (see [`CapabilitiesControlHandle::shutdown`])
4029/// if the responder is dropped without sending a response, so that the client
4030/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
4031impl std::ops::Drop for CapabilitiesDictionaryCreateResponder {
4032    fn drop(&mut self) {
4033        self.control_handle.shutdown();
4034        // Safety: drops once, never accessed again
4035        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
4036    }
4037}
4038
4039impl fidl::endpoints::Responder for CapabilitiesDictionaryCreateResponder {
4040    type ControlHandle = CapabilitiesControlHandle;
4041
4042    fn control_handle(&self) -> &CapabilitiesControlHandle {
4043        &self.control_handle
4044    }
4045
4046    fn drop_without_shutdown(mut self) {
4047        // Safety: drops once, never accessed again due to mem::forget
4048        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
4049        // Prevent Drop from running (which would shut down the channel)
4050        std::mem::forget(self);
4051    }
4052}
4053
4054impl CapabilitiesDictionaryCreateResponder {
4055    /// Sends a response to the FIDL transaction.
4056    ///
4057    /// Sets the channel to shutdown if an error occurs.
4058    pub fn send(self, mut result: Result<(), CapabilitiesError>) -> Result<(), fidl::Error> {
4059        let _result = self.send_raw(result);
4060        if _result.is_err() {
4061            self.control_handle.shutdown();
4062        }
4063        self.drop_without_shutdown();
4064        _result
4065    }
4066
4067    /// Similar to "send" but does not shutdown the channel if an error occurs.
4068    pub fn send_no_shutdown_on_err(
4069        self,
4070        mut result: Result<(), CapabilitiesError>,
4071    ) -> Result<(), fidl::Error> {
4072        let _result = self.send_raw(result);
4073        self.drop_without_shutdown();
4074        _result
4075    }
4076
4077    fn send_raw(&self, mut result: Result<(), CapabilitiesError>) -> Result<(), fidl::Error> {
4078        self.control_handle.inner.send::<fidl::encoding::FlexibleResultType<
4079            fidl::encoding::EmptyStruct,
4080            CapabilitiesError,
4081        >>(
4082            fidl::encoding::FlexibleResult::new(result),
4083            self.tx_id,
4084            0x7f8bd91f0942a36e,
4085            fidl::encoding::DynamicFlags::FLEXIBLE,
4086        )
4087    }
4088}
4089
4090#[must_use = "FIDL methods require a response to be sent"]
4091#[derive(Debug)]
4092pub struct CapabilitiesDataCreateResponder {
4093    control_handle: std::mem::ManuallyDrop<CapabilitiesControlHandle>,
4094    tx_id: u32,
4095}
4096
4097/// Set the the channel to be shutdown (see [`CapabilitiesControlHandle::shutdown`])
4098/// if the responder is dropped without sending a response, so that the client
4099/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
4100impl std::ops::Drop for CapabilitiesDataCreateResponder {
4101    fn drop(&mut self) {
4102        self.control_handle.shutdown();
4103        // Safety: drops once, never accessed again
4104        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
4105    }
4106}
4107
4108impl fidl::endpoints::Responder for CapabilitiesDataCreateResponder {
4109    type ControlHandle = CapabilitiesControlHandle;
4110
4111    fn control_handle(&self) -> &CapabilitiesControlHandle {
4112        &self.control_handle
4113    }
4114
4115    fn drop_without_shutdown(mut self) {
4116        // Safety: drops once, never accessed again due to mem::forget
4117        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
4118        // Prevent Drop from running (which would shut down the channel)
4119        std::mem::forget(self);
4120    }
4121}
4122
4123impl CapabilitiesDataCreateResponder {
4124    /// Sends a response to the FIDL transaction.
4125    ///
4126    /// Sets the channel to shutdown if an error occurs.
4127    pub fn send(self, mut result: Result<(), CapabilitiesError>) -> Result<(), fidl::Error> {
4128        let _result = self.send_raw(result);
4129        if _result.is_err() {
4130            self.control_handle.shutdown();
4131        }
4132        self.drop_without_shutdown();
4133        _result
4134    }
4135
4136    /// Similar to "send" but does not shutdown the channel if an error occurs.
4137    pub fn send_no_shutdown_on_err(
4138        self,
4139        mut result: Result<(), CapabilitiesError>,
4140    ) -> Result<(), fidl::Error> {
4141        let _result = self.send_raw(result);
4142        self.drop_without_shutdown();
4143        _result
4144    }
4145
4146    fn send_raw(&self, mut result: Result<(), CapabilitiesError>) -> Result<(), fidl::Error> {
4147        self.control_handle.inner.send::<fidl::encoding::FlexibleResultType<
4148            fidl::encoding::EmptyStruct,
4149            CapabilitiesError,
4150        >>(
4151            fidl::encoding::FlexibleResult::new(result),
4152            self.tx_id,
4153            0x40ef43e45372ee6a,
4154            fidl::encoding::DynamicFlags::FLEXIBLE,
4155        )
4156    }
4157}
4158
4159#[must_use = "FIDL methods require a response to be sent"]
4160#[derive(Debug)]
4161pub struct CapabilitiesConnectorRouterCreateResponder {
4162    control_handle: std::mem::ManuallyDrop<CapabilitiesControlHandle>,
4163    tx_id: u32,
4164}
4165
4166/// Set the the channel to be shutdown (see [`CapabilitiesControlHandle::shutdown`])
4167/// if the responder is dropped without sending a response, so that the client
4168/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
4169impl std::ops::Drop for CapabilitiesConnectorRouterCreateResponder {
4170    fn drop(&mut self) {
4171        self.control_handle.shutdown();
4172        // Safety: drops once, never accessed again
4173        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
4174    }
4175}
4176
4177impl fidl::endpoints::Responder for CapabilitiesConnectorRouterCreateResponder {
4178    type ControlHandle = CapabilitiesControlHandle;
4179
4180    fn control_handle(&self) -> &CapabilitiesControlHandle {
4181        &self.control_handle
4182    }
4183
4184    fn drop_without_shutdown(mut self) {
4185        // Safety: drops once, never accessed again due to mem::forget
4186        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
4187        // Prevent Drop from running (which would shut down the channel)
4188        std::mem::forget(self);
4189    }
4190}
4191
4192impl CapabilitiesConnectorRouterCreateResponder {
4193    /// Sends a response to the FIDL transaction.
4194    ///
4195    /// Sets the channel to shutdown if an error occurs.
4196    pub fn send(self, mut result: Result<(), CapabilitiesError>) -> Result<(), fidl::Error> {
4197        let _result = self.send_raw(result);
4198        if _result.is_err() {
4199            self.control_handle.shutdown();
4200        }
4201        self.drop_without_shutdown();
4202        _result
4203    }
4204
4205    /// Similar to "send" but does not shutdown the channel if an error occurs.
4206    pub fn send_no_shutdown_on_err(
4207        self,
4208        mut result: Result<(), CapabilitiesError>,
4209    ) -> Result<(), fidl::Error> {
4210        let _result = self.send_raw(result);
4211        self.drop_without_shutdown();
4212        _result
4213    }
4214
4215    fn send_raw(&self, mut result: Result<(), CapabilitiesError>) -> Result<(), fidl::Error> {
4216        self.control_handle.inner.send::<fidl::encoding::FlexibleResultType<
4217            fidl::encoding::EmptyStruct,
4218            CapabilitiesError,
4219        >>(
4220            fidl::encoding::FlexibleResult::new(result),
4221            self.tx_id,
4222            0x7f7e7fbafcdf1761,
4223            fidl::encoding::DynamicFlags::FLEXIBLE,
4224        )
4225    }
4226}
4227
4228#[must_use = "FIDL methods require a response to be sent"]
4229#[derive(Debug)]
4230pub struct CapabilitiesDirConnectorRouterCreateResponder {
4231    control_handle: std::mem::ManuallyDrop<CapabilitiesControlHandle>,
4232    tx_id: u32,
4233}
4234
4235/// Set the the channel to be shutdown (see [`CapabilitiesControlHandle::shutdown`])
4236/// if the responder is dropped without sending a response, so that the client
4237/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
4238impl std::ops::Drop for CapabilitiesDirConnectorRouterCreateResponder {
4239    fn drop(&mut self) {
4240        self.control_handle.shutdown();
4241        // Safety: drops once, never accessed again
4242        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
4243    }
4244}
4245
4246impl fidl::endpoints::Responder for CapabilitiesDirConnectorRouterCreateResponder {
4247    type ControlHandle = CapabilitiesControlHandle;
4248
4249    fn control_handle(&self) -> &CapabilitiesControlHandle {
4250        &self.control_handle
4251    }
4252
4253    fn drop_without_shutdown(mut self) {
4254        // Safety: drops once, never accessed again due to mem::forget
4255        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
4256        // Prevent Drop from running (which would shut down the channel)
4257        std::mem::forget(self);
4258    }
4259}
4260
4261impl CapabilitiesDirConnectorRouterCreateResponder {
4262    /// Sends a response to the FIDL transaction.
4263    ///
4264    /// Sets the channel to shutdown if an error occurs.
4265    pub fn send(self, mut result: Result<(), CapabilitiesError>) -> Result<(), fidl::Error> {
4266        let _result = self.send_raw(result);
4267        if _result.is_err() {
4268            self.control_handle.shutdown();
4269        }
4270        self.drop_without_shutdown();
4271        _result
4272    }
4273
4274    /// Similar to "send" but does not shutdown the channel if an error occurs.
4275    pub fn send_no_shutdown_on_err(
4276        self,
4277        mut result: Result<(), CapabilitiesError>,
4278    ) -> Result<(), fidl::Error> {
4279        let _result = self.send_raw(result);
4280        self.drop_without_shutdown();
4281        _result
4282    }
4283
4284    fn send_raw(&self, mut result: Result<(), CapabilitiesError>) -> Result<(), fidl::Error> {
4285        self.control_handle.inner.send::<fidl::encoding::FlexibleResultType<
4286            fidl::encoding::EmptyStruct,
4287            CapabilitiesError,
4288        >>(
4289            fidl::encoding::FlexibleResult::new(result),
4290            self.tx_id,
4291            0x56520da453fad19f,
4292            fidl::encoding::DynamicFlags::FLEXIBLE,
4293        )
4294    }
4295}
4296
4297#[must_use = "FIDL methods require a response to be sent"]
4298#[derive(Debug)]
4299pub struct CapabilitiesDictionaryRouterCreateResponder {
4300    control_handle: std::mem::ManuallyDrop<CapabilitiesControlHandle>,
4301    tx_id: u32,
4302}
4303
4304/// Set the the channel to be shutdown (see [`CapabilitiesControlHandle::shutdown`])
4305/// if the responder is dropped without sending a response, so that the client
4306/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
4307impl std::ops::Drop for CapabilitiesDictionaryRouterCreateResponder {
4308    fn drop(&mut self) {
4309        self.control_handle.shutdown();
4310        // Safety: drops once, never accessed again
4311        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
4312    }
4313}
4314
4315impl fidl::endpoints::Responder for CapabilitiesDictionaryRouterCreateResponder {
4316    type ControlHandle = CapabilitiesControlHandle;
4317
4318    fn control_handle(&self) -> &CapabilitiesControlHandle {
4319        &self.control_handle
4320    }
4321
4322    fn drop_without_shutdown(mut self) {
4323        // Safety: drops once, never accessed again due to mem::forget
4324        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
4325        // Prevent Drop from running (which would shut down the channel)
4326        std::mem::forget(self);
4327    }
4328}
4329
4330impl CapabilitiesDictionaryRouterCreateResponder {
4331    /// Sends a response to the FIDL transaction.
4332    ///
4333    /// Sets the channel to shutdown if an error occurs.
4334    pub fn send(self, mut result: Result<(), CapabilitiesError>) -> Result<(), fidl::Error> {
4335        let _result = self.send_raw(result);
4336        if _result.is_err() {
4337            self.control_handle.shutdown();
4338        }
4339        self.drop_without_shutdown();
4340        _result
4341    }
4342
4343    /// Similar to "send" but does not shutdown the channel if an error occurs.
4344    pub fn send_no_shutdown_on_err(
4345        self,
4346        mut result: Result<(), CapabilitiesError>,
4347    ) -> Result<(), fidl::Error> {
4348        let _result = self.send_raw(result);
4349        self.drop_without_shutdown();
4350        _result
4351    }
4352
4353    fn send_raw(&self, mut result: Result<(), CapabilitiesError>) -> Result<(), fidl::Error> {
4354        self.control_handle.inner.send::<fidl::encoding::FlexibleResultType<
4355            fidl::encoding::EmptyStruct,
4356            CapabilitiesError,
4357        >>(
4358            fidl::encoding::FlexibleResult::new(result),
4359            self.tx_id,
4360            0x37acef18cd423d42,
4361            fidl::encoding::DynamicFlags::FLEXIBLE,
4362        )
4363    }
4364}
4365
4366#[must_use = "FIDL methods require a response to be sent"]
4367#[derive(Debug)]
4368pub struct CapabilitiesDataRouterCreateResponder {
4369    control_handle: std::mem::ManuallyDrop<CapabilitiesControlHandle>,
4370    tx_id: u32,
4371}
4372
4373/// Set the the channel to be shutdown (see [`CapabilitiesControlHandle::shutdown`])
4374/// if the responder is dropped without sending a response, so that the client
4375/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
4376impl std::ops::Drop for CapabilitiesDataRouterCreateResponder {
4377    fn drop(&mut self) {
4378        self.control_handle.shutdown();
4379        // Safety: drops once, never accessed again
4380        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
4381    }
4382}
4383
4384impl fidl::endpoints::Responder for CapabilitiesDataRouterCreateResponder {
4385    type ControlHandle = CapabilitiesControlHandle;
4386
4387    fn control_handle(&self) -> &CapabilitiesControlHandle {
4388        &self.control_handle
4389    }
4390
4391    fn drop_without_shutdown(mut self) {
4392        // Safety: drops once, never accessed again due to mem::forget
4393        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
4394        // Prevent Drop from running (which would shut down the channel)
4395        std::mem::forget(self);
4396    }
4397}
4398
4399impl CapabilitiesDataRouterCreateResponder {
4400    /// Sends a response to the FIDL transaction.
4401    ///
4402    /// Sets the channel to shutdown if an error occurs.
4403    pub fn send(self, mut result: Result<(), CapabilitiesError>) -> Result<(), fidl::Error> {
4404        let _result = self.send_raw(result);
4405        if _result.is_err() {
4406            self.control_handle.shutdown();
4407        }
4408        self.drop_without_shutdown();
4409        _result
4410    }
4411
4412    /// Similar to "send" but does not shutdown the channel if an error occurs.
4413    pub fn send_no_shutdown_on_err(
4414        self,
4415        mut result: Result<(), CapabilitiesError>,
4416    ) -> Result<(), fidl::Error> {
4417        let _result = self.send_raw(result);
4418        self.drop_without_shutdown();
4419        _result
4420    }
4421
4422    fn send_raw(&self, mut result: Result<(), CapabilitiesError>) -> Result<(), fidl::Error> {
4423        self.control_handle.inner.send::<fidl::encoding::FlexibleResultType<
4424            fidl::encoding::EmptyStruct,
4425            CapabilitiesError,
4426        >>(
4427            fidl::encoding::FlexibleResult::new(result),
4428            self.tx_id,
4429            0x24e471395b95088,
4430            fidl::encoding::DynamicFlags::FLEXIBLE,
4431        )
4432    }
4433}
4434
4435#[must_use = "FIDL methods require a response to be sent"]
4436#[derive(Debug)]
4437pub struct CapabilitiesInstanceTokenCreateResponder {
4438    control_handle: std::mem::ManuallyDrop<CapabilitiesControlHandle>,
4439    tx_id: u32,
4440}
4441
4442/// Set the the channel to be shutdown (see [`CapabilitiesControlHandle::shutdown`])
4443/// if the responder is dropped without sending a response, so that the client
4444/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
4445impl std::ops::Drop for CapabilitiesInstanceTokenCreateResponder {
4446    fn drop(&mut self) {
4447        self.control_handle.shutdown();
4448        // Safety: drops once, never accessed again
4449        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
4450    }
4451}
4452
4453impl fidl::endpoints::Responder for CapabilitiesInstanceTokenCreateResponder {
4454    type ControlHandle = CapabilitiesControlHandle;
4455
4456    fn control_handle(&self) -> &CapabilitiesControlHandle {
4457        &self.control_handle
4458    }
4459
4460    fn drop_without_shutdown(mut self) {
4461        // Safety: drops once, never accessed again due to mem::forget
4462        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
4463        // Prevent Drop from running (which would shut down the channel)
4464        std::mem::forget(self);
4465    }
4466}
4467
4468impl CapabilitiesInstanceTokenCreateResponder {
4469    /// Sends a response to the FIDL transaction.
4470    ///
4471    /// Sets the channel to shutdown if an error occurs.
4472    pub fn send(self, mut result: Result<(), CapabilitiesError>) -> Result<(), fidl::Error> {
4473        let _result = self.send_raw(result);
4474        if _result.is_err() {
4475            self.control_handle.shutdown();
4476        }
4477        self.drop_without_shutdown();
4478        _result
4479    }
4480
4481    /// Similar to "send" but does not shutdown the channel if an error occurs.
4482    pub fn send_no_shutdown_on_err(
4483        self,
4484        mut result: Result<(), CapabilitiesError>,
4485    ) -> Result<(), fidl::Error> {
4486        let _result = self.send_raw(result);
4487        self.drop_without_shutdown();
4488        _result
4489    }
4490
4491    fn send_raw(&self, mut result: Result<(), CapabilitiesError>) -> Result<(), fidl::Error> {
4492        self.control_handle.inner.send::<fidl::encoding::FlexibleResultType<
4493            fidl::encoding::EmptyStruct,
4494            CapabilitiesError,
4495        >>(
4496            fidl::encoding::FlexibleResult::new(result),
4497            self.tx_id,
4498            0x3576e31727c40813,
4499            fidl::encoding::DynamicFlags::FLEXIBLE,
4500        )
4501    }
4502}
4503
4504#[must_use = "FIDL methods require a response to be sent"]
4505#[derive(Debug)]
4506pub struct CapabilitiesConnectorOpenResponder {
4507    control_handle: std::mem::ManuallyDrop<CapabilitiesControlHandle>,
4508    tx_id: u32,
4509}
4510
4511/// Set the the channel to be shutdown (see [`CapabilitiesControlHandle::shutdown`])
4512/// if the responder is dropped without sending a response, so that the client
4513/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
4514impl std::ops::Drop for CapabilitiesConnectorOpenResponder {
4515    fn drop(&mut self) {
4516        self.control_handle.shutdown();
4517        // Safety: drops once, never accessed again
4518        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
4519    }
4520}
4521
4522impl fidl::endpoints::Responder for CapabilitiesConnectorOpenResponder {
4523    type ControlHandle = CapabilitiesControlHandle;
4524
4525    fn control_handle(&self) -> &CapabilitiesControlHandle {
4526        &self.control_handle
4527    }
4528
4529    fn drop_without_shutdown(mut self) {
4530        // Safety: drops once, never accessed again due to mem::forget
4531        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
4532        // Prevent Drop from running (which would shut down the channel)
4533        std::mem::forget(self);
4534    }
4535}
4536
4537impl CapabilitiesConnectorOpenResponder {
4538    /// Sends a response to the FIDL transaction.
4539    ///
4540    /// Sets the channel to shutdown if an error occurs.
4541    pub fn send(self, mut result: Result<(), CapabilitiesError>) -> Result<(), fidl::Error> {
4542        let _result = self.send_raw(result);
4543        if _result.is_err() {
4544            self.control_handle.shutdown();
4545        }
4546        self.drop_without_shutdown();
4547        _result
4548    }
4549
4550    /// Similar to "send" but does not shutdown the channel if an error occurs.
4551    pub fn send_no_shutdown_on_err(
4552        self,
4553        mut result: Result<(), CapabilitiesError>,
4554    ) -> Result<(), fidl::Error> {
4555        let _result = self.send_raw(result);
4556        self.drop_without_shutdown();
4557        _result
4558    }
4559
4560    fn send_raw(&self, mut result: Result<(), CapabilitiesError>) -> Result<(), fidl::Error> {
4561        self.control_handle.inner.send::<fidl::encoding::FlexibleResultType<
4562            fidl::encoding::EmptyStruct,
4563            CapabilitiesError,
4564        >>(
4565            fidl::encoding::FlexibleResult::new(result),
4566            self.tx_id,
4567            0xc0646965f1884eb,
4568            fidl::encoding::DynamicFlags::FLEXIBLE,
4569        )
4570    }
4571}
4572
4573#[must_use = "FIDL methods require a response to be sent"]
4574#[derive(Debug)]
4575pub struct CapabilitiesDirConnectorOpenResponder {
4576    control_handle: std::mem::ManuallyDrop<CapabilitiesControlHandle>,
4577    tx_id: u32,
4578}
4579
4580/// Set the the channel to be shutdown (see [`CapabilitiesControlHandle::shutdown`])
4581/// if the responder is dropped without sending a response, so that the client
4582/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
4583impl std::ops::Drop for CapabilitiesDirConnectorOpenResponder {
4584    fn drop(&mut self) {
4585        self.control_handle.shutdown();
4586        // Safety: drops once, never accessed again
4587        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
4588    }
4589}
4590
4591impl fidl::endpoints::Responder for CapabilitiesDirConnectorOpenResponder {
4592    type ControlHandle = CapabilitiesControlHandle;
4593
4594    fn control_handle(&self) -> &CapabilitiesControlHandle {
4595        &self.control_handle
4596    }
4597
4598    fn drop_without_shutdown(mut self) {
4599        // Safety: drops once, never accessed again due to mem::forget
4600        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
4601        // Prevent Drop from running (which would shut down the channel)
4602        std::mem::forget(self);
4603    }
4604}
4605
4606impl CapabilitiesDirConnectorOpenResponder {
4607    /// Sends a response to the FIDL transaction.
4608    ///
4609    /// Sets the channel to shutdown if an error occurs.
4610    pub fn send(self, mut result: Result<(), CapabilitiesError>) -> Result<(), fidl::Error> {
4611        let _result = self.send_raw(result);
4612        if _result.is_err() {
4613            self.control_handle.shutdown();
4614        }
4615        self.drop_without_shutdown();
4616        _result
4617    }
4618
4619    /// Similar to "send" but does not shutdown the channel if an error occurs.
4620    pub fn send_no_shutdown_on_err(
4621        self,
4622        mut result: Result<(), CapabilitiesError>,
4623    ) -> Result<(), fidl::Error> {
4624        let _result = self.send_raw(result);
4625        self.drop_without_shutdown();
4626        _result
4627    }
4628
4629    fn send_raw(&self, mut result: Result<(), CapabilitiesError>) -> Result<(), fidl::Error> {
4630        self.control_handle.inner.send::<fidl::encoding::FlexibleResultType<
4631            fidl::encoding::EmptyStruct,
4632            CapabilitiesError,
4633        >>(
4634            fidl::encoding::FlexibleResult::new(result),
4635            self.tx_id,
4636            0x1332bbf5debd6c20,
4637            fidl::encoding::DynamicFlags::FLEXIBLE,
4638        )
4639    }
4640}
4641
4642#[must_use = "FIDL methods require a response to be sent"]
4643#[derive(Debug)]
4644pub struct CapabilitiesDictionaryInsertResponder {
4645    control_handle: std::mem::ManuallyDrop<CapabilitiesControlHandle>,
4646    tx_id: u32,
4647}
4648
4649/// Set the the channel to be shutdown (see [`CapabilitiesControlHandle::shutdown`])
4650/// if the responder is dropped without sending a response, so that the client
4651/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
4652impl std::ops::Drop for CapabilitiesDictionaryInsertResponder {
4653    fn drop(&mut self) {
4654        self.control_handle.shutdown();
4655        // Safety: drops once, never accessed again
4656        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
4657    }
4658}
4659
4660impl fidl::endpoints::Responder for CapabilitiesDictionaryInsertResponder {
4661    type ControlHandle = CapabilitiesControlHandle;
4662
4663    fn control_handle(&self) -> &CapabilitiesControlHandle {
4664        &self.control_handle
4665    }
4666
4667    fn drop_without_shutdown(mut self) {
4668        // Safety: drops once, never accessed again due to mem::forget
4669        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
4670        // Prevent Drop from running (which would shut down the channel)
4671        std::mem::forget(self);
4672    }
4673}
4674
4675impl CapabilitiesDictionaryInsertResponder {
4676    /// Sends a response to the FIDL transaction.
4677    ///
4678    /// Sets the channel to shutdown if an error occurs.
4679    pub fn send(self, mut result: Result<(), CapabilitiesError>) -> Result<(), fidl::Error> {
4680        let _result = self.send_raw(result);
4681        if _result.is_err() {
4682            self.control_handle.shutdown();
4683        }
4684        self.drop_without_shutdown();
4685        _result
4686    }
4687
4688    /// Similar to "send" but does not shutdown the channel if an error occurs.
4689    pub fn send_no_shutdown_on_err(
4690        self,
4691        mut result: Result<(), CapabilitiesError>,
4692    ) -> Result<(), fidl::Error> {
4693        let _result = self.send_raw(result);
4694        self.drop_without_shutdown();
4695        _result
4696    }
4697
4698    fn send_raw(&self, mut result: Result<(), CapabilitiesError>) -> Result<(), fidl::Error> {
4699        self.control_handle.inner.send::<fidl::encoding::FlexibleResultType<
4700            fidl::encoding::EmptyStruct,
4701            CapabilitiesError,
4702        >>(
4703            fidl::encoding::FlexibleResult::new(result),
4704            self.tx_id,
4705            0x5972e3061a760e7a,
4706            fidl::encoding::DynamicFlags::FLEXIBLE,
4707        )
4708    }
4709}
4710
4711#[must_use = "FIDL methods require a response to be sent"]
4712#[derive(Debug)]
4713pub struct CapabilitiesDictionaryGetResponder {
4714    control_handle: std::mem::ManuallyDrop<CapabilitiesControlHandle>,
4715    tx_id: u32,
4716}
4717
4718/// Set the the channel to be shutdown (see [`CapabilitiesControlHandle::shutdown`])
4719/// if the responder is dropped without sending a response, so that the client
4720/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
4721impl std::ops::Drop for CapabilitiesDictionaryGetResponder {
4722    fn drop(&mut self) {
4723        self.control_handle.shutdown();
4724        // Safety: drops once, never accessed again
4725        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
4726    }
4727}
4728
4729impl fidl::endpoints::Responder for CapabilitiesDictionaryGetResponder {
4730    type ControlHandle = CapabilitiesControlHandle;
4731
4732    fn control_handle(&self) -> &CapabilitiesControlHandle {
4733        &self.control_handle
4734    }
4735
4736    fn drop_without_shutdown(mut self) {
4737        // Safety: drops once, never accessed again due to mem::forget
4738        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
4739        // Prevent Drop from running (which would shut down the channel)
4740        std::mem::forget(self);
4741    }
4742}
4743
4744impl CapabilitiesDictionaryGetResponder {
4745    /// Sends a response to the FIDL transaction.
4746    ///
4747    /// Sets the channel to shutdown if an error occurs.
4748    pub fn send(
4749        self,
4750        mut result: Result<CapabilityType, CapabilitiesError>,
4751    ) -> Result<(), fidl::Error> {
4752        let _result = self.send_raw(result);
4753        if _result.is_err() {
4754            self.control_handle.shutdown();
4755        }
4756        self.drop_without_shutdown();
4757        _result
4758    }
4759
4760    /// Similar to "send" but does not shutdown the channel if an error occurs.
4761    pub fn send_no_shutdown_on_err(
4762        self,
4763        mut result: Result<CapabilityType, CapabilitiesError>,
4764    ) -> Result<(), fidl::Error> {
4765        let _result = self.send_raw(result);
4766        self.drop_without_shutdown();
4767        _result
4768    }
4769
4770    fn send_raw(
4771        &self,
4772        mut result: Result<CapabilityType, CapabilitiesError>,
4773    ) -> Result<(), fidl::Error> {
4774        self.control_handle.inner.send::<fidl::encoding::FlexibleResultType<
4775            CapabilitiesDictionaryGetResponse,
4776            CapabilitiesError,
4777        >>(
4778            fidl::encoding::FlexibleResult::new(result.map(|capability_type| (capability_type,))),
4779            self.tx_id,
4780            0x31fafe2280a283d5,
4781            fidl::encoding::DynamicFlags::FLEXIBLE,
4782        )
4783    }
4784}
4785
4786#[must_use = "FIDL methods require a response to be sent"]
4787#[derive(Debug)]
4788pub struct CapabilitiesDictionaryRemoveResponder {
4789    control_handle: std::mem::ManuallyDrop<CapabilitiesControlHandle>,
4790    tx_id: u32,
4791}
4792
4793/// Set the the channel to be shutdown (see [`CapabilitiesControlHandle::shutdown`])
4794/// if the responder is dropped without sending a response, so that the client
4795/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
4796impl std::ops::Drop for CapabilitiesDictionaryRemoveResponder {
4797    fn drop(&mut self) {
4798        self.control_handle.shutdown();
4799        // Safety: drops once, never accessed again
4800        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
4801    }
4802}
4803
4804impl fidl::endpoints::Responder for CapabilitiesDictionaryRemoveResponder {
4805    type ControlHandle = CapabilitiesControlHandle;
4806
4807    fn control_handle(&self) -> &CapabilitiesControlHandle {
4808        &self.control_handle
4809    }
4810
4811    fn drop_without_shutdown(mut self) {
4812        // Safety: drops once, never accessed again due to mem::forget
4813        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
4814        // Prevent Drop from running (which would shut down the channel)
4815        std::mem::forget(self);
4816    }
4817}
4818
4819impl CapabilitiesDictionaryRemoveResponder {
4820    /// Sends a response to the FIDL transaction.
4821    ///
4822    /// Sets the channel to shutdown if an error occurs.
4823    pub fn send(
4824        self,
4825        mut result: Result<CapabilityType, CapabilitiesError>,
4826    ) -> Result<(), fidl::Error> {
4827        let _result = self.send_raw(result);
4828        if _result.is_err() {
4829            self.control_handle.shutdown();
4830        }
4831        self.drop_without_shutdown();
4832        _result
4833    }
4834
4835    /// Similar to "send" but does not shutdown the channel if an error occurs.
4836    pub fn send_no_shutdown_on_err(
4837        self,
4838        mut result: Result<CapabilityType, CapabilitiesError>,
4839    ) -> Result<(), fidl::Error> {
4840        let _result = self.send_raw(result);
4841        self.drop_without_shutdown();
4842        _result
4843    }
4844
4845    fn send_raw(
4846        &self,
4847        mut result: Result<CapabilityType, CapabilitiesError>,
4848    ) -> Result<(), fidl::Error> {
4849        self.control_handle.inner.send::<fidl::encoding::FlexibleResultType<
4850            CapabilitiesDictionaryRemoveResponse,
4851            CapabilitiesError,
4852        >>(
4853            fidl::encoding::FlexibleResult::new(result.map(|capability_type| (capability_type,))),
4854            self.tx_id,
4855            0x6827c83106ac5a2c,
4856            fidl::encoding::DynamicFlags::FLEXIBLE,
4857        )
4858    }
4859}
4860
4861#[must_use = "FIDL methods require a response to be sent"]
4862#[derive(Debug)]
4863pub struct CapabilitiesDictionaryIterateKeysResponder {
4864    control_handle: std::mem::ManuallyDrop<CapabilitiesControlHandle>,
4865    tx_id: u32,
4866}
4867
4868/// Set the the channel to be shutdown (see [`CapabilitiesControlHandle::shutdown`])
4869/// if the responder is dropped without sending a response, so that the client
4870/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
4871impl std::ops::Drop for CapabilitiesDictionaryIterateKeysResponder {
4872    fn drop(&mut self) {
4873        self.control_handle.shutdown();
4874        // Safety: drops once, never accessed again
4875        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
4876    }
4877}
4878
4879impl fidl::endpoints::Responder for CapabilitiesDictionaryIterateKeysResponder {
4880    type ControlHandle = CapabilitiesControlHandle;
4881
4882    fn control_handle(&self) -> &CapabilitiesControlHandle {
4883        &self.control_handle
4884    }
4885
4886    fn drop_without_shutdown(mut self) {
4887        // Safety: drops once, never accessed again due to mem::forget
4888        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
4889        // Prevent Drop from running (which would shut down the channel)
4890        std::mem::forget(self);
4891    }
4892}
4893
4894impl CapabilitiesDictionaryIterateKeysResponder {
4895    /// Sends a response to the FIDL transaction.
4896    ///
4897    /// Sets the channel to shutdown if an error occurs.
4898    pub fn send(self, mut result: Result<(), CapabilitiesError>) -> Result<(), fidl::Error> {
4899        let _result = self.send_raw(result);
4900        if _result.is_err() {
4901            self.control_handle.shutdown();
4902        }
4903        self.drop_without_shutdown();
4904        _result
4905    }
4906
4907    /// Similar to "send" but does not shutdown the channel if an error occurs.
4908    pub fn send_no_shutdown_on_err(
4909        self,
4910        mut result: Result<(), CapabilitiesError>,
4911    ) -> Result<(), fidl::Error> {
4912        let _result = self.send_raw(result);
4913        self.drop_without_shutdown();
4914        _result
4915    }
4916
4917    fn send_raw(&self, mut result: Result<(), CapabilitiesError>) -> Result<(), fidl::Error> {
4918        self.control_handle.inner.send::<fidl::encoding::FlexibleResultType<
4919            fidl::encoding::EmptyStruct,
4920            CapabilitiesError,
4921        >>(
4922            fidl::encoding::FlexibleResult::new(result),
4923            self.tx_id,
4924            0x3d4ea59c80df9bb8,
4925            fidl::encoding::DynamicFlags::FLEXIBLE,
4926        )
4927    }
4928}
4929
4930#[must_use = "FIDL methods require a response to be sent"]
4931#[derive(Debug)]
4932pub struct CapabilitiesDataGetResponder {
4933    control_handle: std::mem::ManuallyDrop<CapabilitiesControlHandle>,
4934    tx_id: u32,
4935}
4936
4937/// Set the the channel to be shutdown (see [`CapabilitiesControlHandle::shutdown`])
4938/// if the responder is dropped without sending a response, so that the client
4939/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
4940impl std::ops::Drop for CapabilitiesDataGetResponder {
4941    fn drop(&mut self) {
4942        self.control_handle.shutdown();
4943        // Safety: drops once, never accessed again
4944        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
4945    }
4946}
4947
4948impl fidl::endpoints::Responder for CapabilitiesDataGetResponder {
4949    type ControlHandle = CapabilitiesControlHandle;
4950
4951    fn control_handle(&self) -> &CapabilitiesControlHandle {
4952        &self.control_handle
4953    }
4954
4955    fn drop_without_shutdown(mut self) {
4956        // Safety: drops once, never accessed again due to mem::forget
4957        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
4958        // Prevent Drop from running (which would shut down the channel)
4959        std::mem::forget(self);
4960    }
4961}
4962
4963impl CapabilitiesDataGetResponder {
4964    /// Sends a response to the FIDL transaction.
4965    ///
4966    /// Sets the channel to shutdown if an error occurs.
4967    pub fn send(self, mut result: Result<&Data, CapabilitiesError>) -> Result<(), fidl::Error> {
4968        let _result = self.send_raw(result);
4969        if _result.is_err() {
4970            self.control_handle.shutdown();
4971        }
4972        self.drop_without_shutdown();
4973        _result
4974    }
4975
4976    /// Similar to "send" but does not shutdown the channel if an error occurs.
4977    pub fn send_no_shutdown_on_err(
4978        self,
4979        mut result: Result<&Data, CapabilitiesError>,
4980    ) -> Result<(), fidl::Error> {
4981        let _result = self.send_raw(result);
4982        self.drop_without_shutdown();
4983        _result
4984    }
4985
4986    fn send_raw(&self, mut result: Result<&Data, CapabilitiesError>) -> Result<(), fidl::Error> {
4987        self.control_handle
4988            .inner
4989            .send::<fidl::encoding::FlexibleResultType<Data, CapabilitiesError>>(
4990                fidl::encoding::FlexibleResult::new(result),
4991                self.tx_id,
4992                0x65ae25b59f9e0daf,
4993                fidl::encoding::DynamicFlags::FLEXIBLE,
4994            )
4995    }
4996}
4997
4998#[must_use = "FIDL methods require a response to be sent"]
4999#[derive(Debug)]
5000pub struct CapabilitiesConnectorRouterRouteResponder {
5001    control_handle: std::mem::ManuallyDrop<CapabilitiesControlHandle>,
5002    tx_id: u32,
5003}
5004
5005/// Set the the channel to be shutdown (see [`CapabilitiesControlHandle::shutdown`])
5006/// if the responder is dropped without sending a response, so that the client
5007/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
5008impl std::ops::Drop for CapabilitiesConnectorRouterRouteResponder {
5009    fn drop(&mut self) {
5010        self.control_handle.shutdown();
5011        // Safety: drops once, never accessed again
5012        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
5013    }
5014}
5015
5016impl fidl::endpoints::Responder for CapabilitiesConnectorRouterRouteResponder {
5017    type ControlHandle = CapabilitiesControlHandle;
5018
5019    fn control_handle(&self) -> &CapabilitiesControlHandle {
5020        &self.control_handle
5021    }
5022
5023    fn drop_without_shutdown(mut self) {
5024        // Safety: drops once, never accessed again due to mem::forget
5025        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
5026        // Prevent Drop from running (which would shut down the channel)
5027        std::mem::forget(self);
5028    }
5029}
5030
5031impl CapabilitiesConnectorRouterRouteResponder {
5032    /// Sends a response to the FIDL transaction.
5033    ///
5034    /// Sets the channel to shutdown if an error occurs.
5035    pub fn send(self, mut result: Result<RouterResponse, i32>) -> Result<(), fidl::Error> {
5036        let _result = self.send_raw(result);
5037        if _result.is_err() {
5038            self.control_handle.shutdown();
5039        }
5040        self.drop_without_shutdown();
5041        _result
5042    }
5043
5044    /// Similar to "send" but does not shutdown the channel if an error occurs.
5045    pub fn send_no_shutdown_on_err(
5046        self,
5047        mut result: Result<RouterResponse, i32>,
5048    ) -> Result<(), fidl::Error> {
5049        let _result = self.send_raw(result);
5050        self.drop_without_shutdown();
5051        _result
5052    }
5053
5054    fn send_raw(&self, mut result: Result<RouterResponse, i32>) -> Result<(), fidl::Error> {
5055        self.control_handle.inner.send::<fidl::encoding::FlexibleResultType<
5056            CapabilitiesConnectorRouterRouteResponse,
5057            i32,
5058        >>(
5059            fidl::encoding::FlexibleResult::new(result.map(|response| (response,))),
5060            self.tx_id,
5061            0x1bd9c6e7e3dd487e,
5062            fidl::encoding::DynamicFlags::FLEXIBLE,
5063        )
5064    }
5065}
5066
5067#[must_use = "FIDL methods require a response to be sent"]
5068#[derive(Debug)]
5069pub struct CapabilitiesDirConnectorRouterRouteResponder {
5070    control_handle: std::mem::ManuallyDrop<CapabilitiesControlHandle>,
5071    tx_id: u32,
5072}
5073
5074/// Set the the channel to be shutdown (see [`CapabilitiesControlHandle::shutdown`])
5075/// if the responder is dropped without sending a response, so that the client
5076/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
5077impl std::ops::Drop for CapabilitiesDirConnectorRouterRouteResponder {
5078    fn drop(&mut self) {
5079        self.control_handle.shutdown();
5080        // Safety: drops once, never accessed again
5081        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
5082    }
5083}
5084
5085impl fidl::endpoints::Responder for CapabilitiesDirConnectorRouterRouteResponder {
5086    type ControlHandle = CapabilitiesControlHandle;
5087
5088    fn control_handle(&self) -> &CapabilitiesControlHandle {
5089        &self.control_handle
5090    }
5091
5092    fn drop_without_shutdown(mut self) {
5093        // Safety: drops once, never accessed again due to mem::forget
5094        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
5095        // Prevent Drop from running (which would shut down the channel)
5096        std::mem::forget(self);
5097    }
5098}
5099
5100impl CapabilitiesDirConnectorRouterRouteResponder {
5101    /// Sends a response to the FIDL transaction.
5102    ///
5103    /// Sets the channel to shutdown if an error occurs.
5104    pub fn send(self, mut result: Result<RouterResponse, i32>) -> Result<(), fidl::Error> {
5105        let _result = self.send_raw(result);
5106        if _result.is_err() {
5107            self.control_handle.shutdown();
5108        }
5109        self.drop_without_shutdown();
5110        _result
5111    }
5112
5113    /// Similar to "send" but does not shutdown the channel if an error occurs.
5114    pub fn send_no_shutdown_on_err(
5115        self,
5116        mut result: Result<RouterResponse, i32>,
5117    ) -> Result<(), fidl::Error> {
5118        let _result = self.send_raw(result);
5119        self.drop_without_shutdown();
5120        _result
5121    }
5122
5123    fn send_raw(&self, mut result: Result<RouterResponse, i32>) -> Result<(), fidl::Error> {
5124        self.control_handle.inner.send::<fidl::encoding::FlexibleResultType<
5125            CapabilitiesDirConnectorRouterRouteResponse,
5126            i32,
5127        >>(
5128            fidl::encoding::FlexibleResult::new(result.map(|response| (response,))),
5129            self.tx_id,
5130            0x3afdcc1b79e0799d,
5131            fidl::encoding::DynamicFlags::FLEXIBLE,
5132        )
5133    }
5134}
5135
5136#[must_use = "FIDL methods require a response to be sent"]
5137#[derive(Debug)]
5138pub struct CapabilitiesDictionaryRouterRouteResponder {
5139    control_handle: std::mem::ManuallyDrop<CapabilitiesControlHandle>,
5140    tx_id: u32,
5141}
5142
5143/// Set the the channel to be shutdown (see [`CapabilitiesControlHandle::shutdown`])
5144/// if the responder is dropped without sending a response, so that the client
5145/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
5146impl std::ops::Drop for CapabilitiesDictionaryRouterRouteResponder {
5147    fn drop(&mut self) {
5148        self.control_handle.shutdown();
5149        // Safety: drops once, never accessed again
5150        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
5151    }
5152}
5153
5154impl fidl::endpoints::Responder for CapabilitiesDictionaryRouterRouteResponder {
5155    type ControlHandle = CapabilitiesControlHandle;
5156
5157    fn control_handle(&self) -> &CapabilitiesControlHandle {
5158        &self.control_handle
5159    }
5160
5161    fn drop_without_shutdown(mut self) {
5162        // Safety: drops once, never accessed again due to mem::forget
5163        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
5164        // Prevent Drop from running (which would shut down the channel)
5165        std::mem::forget(self);
5166    }
5167}
5168
5169impl CapabilitiesDictionaryRouterRouteResponder {
5170    /// Sends a response to the FIDL transaction.
5171    ///
5172    /// Sets the channel to shutdown if an error occurs.
5173    pub fn send(self, mut result: Result<RouterResponse, i32>) -> Result<(), fidl::Error> {
5174        let _result = self.send_raw(result);
5175        if _result.is_err() {
5176            self.control_handle.shutdown();
5177        }
5178        self.drop_without_shutdown();
5179        _result
5180    }
5181
5182    /// Similar to "send" but does not shutdown the channel if an error occurs.
5183    pub fn send_no_shutdown_on_err(
5184        self,
5185        mut result: Result<RouterResponse, i32>,
5186    ) -> Result<(), fidl::Error> {
5187        let _result = self.send_raw(result);
5188        self.drop_without_shutdown();
5189        _result
5190    }
5191
5192    fn send_raw(&self, mut result: Result<RouterResponse, i32>) -> Result<(), fidl::Error> {
5193        self.control_handle.inner.send::<fidl::encoding::FlexibleResultType<
5194            CapabilitiesDictionaryRouterRouteResponse,
5195            i32,
5196        >>(
5197            fidl::encoding::FlexibleResult::new(result.map(|response| (response,))),
5198            self.tx_id,
5199            0xcf72de10714a708,
5200            fidl::encoding::DynamicFlags::FLEXIBLE,
5201        )
5202    }
5203}
5204
5205#[must_use = "FIDL methods require a response to be sent"]
5206#[derive(Debug)]
5207pub struct CapabilitiesDataRouterRouteResponder {
5208    control_handle: std::mem::ManuallyDrop<CapabilitiesControlHandle>,
5209    tx_id: u32,
5210}
5211
5212/// Set the the channel to be shutdown (see [`CapabilitiesControlHandle::shutdown`])
5213/// if the responder is dropped without sending a response, so that the client
5214/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
5215impl std::ops::Drop for CapabilitiesDataRouterRouteResponder {
5216    fn drop(&mut self) {
5217        self.control_handle.shutdown();
5218        // Safety: drops once, never accessed again
5219        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
5220    }
5221}
5222
5223impl fidl::endpoints::Responder for CapabilitiesDataRouterRouteResponder {
5224    type ControlHandle = CapabilitiesControlHandle;
5225
5226    fn control_handle(&self) -> &CapabilitiesControlHandle {
5227        &self.control_handle
5228    }
5229
5230    fn drop_without_shutdown(mut self) {
5231        // Safety: drops once, never accessed again due to mem::forget
5232        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
5233        // Prevent Drop from running (which would shut down the channel)
5234        std::mem::forget(self);
5235    }
5236}
5237
5238impl CapabilitiesDataRouterRouteResponder {
5239    /// Sends a response to the FIDL transaction.
5240    ///
5241    /// Sets the channel to shutdown if an error occurs.
5242    pub fn send(self, mut result: Result<RouterResponse, i32>) -> Result<(), fidl::Error> {
5243        let _result = self.send_raw(result);
5244        if _result.is_err() {
5245            self.control_handle.shutdown();
5246        }
5247        self.drop_without_shutdown();
5248        _result
5249    }
5250
5251    /// Similar to "send" but does not shutdown the channel if an error occurs.
5252    pub fn send_no_shutdown_on_err(
5253        self,
5254        mut result: Result<RouterResponse, i32>,
5255    ) -> Result<(), fidl::Error> {
5256        let _result = self.send_raw(result);
5257        self.drop_without_shutdown();
5258        _result
5259    }
5260
5261    fn send_raw(&self, mut result: Result<RouterResponse, i32>) -> Result<(), fidl::Error> {
5262        self.control_handle.inner.send::<fidl::encoding::FlexibleResultType<
5263            CapabilitiesDataRouterRouteResponse,
5264            i32,
5265        >>(
5266            fidl::encoding::FlexibleResult::new(result.map(|response| (response,))),
5267            self.tx_id,
5268            0x61ab188455ed0643,
5269            fidl::encoding::DynamicFlags::FLEXIBLE,
5270        )
5271    }
5272}
5273
5274#[must_use = "FIDL methods require a response to be sent"]
5275#[derive(Debug)]
5276pub struct CapabilitiesCapabilityAssociateHandleResponder {
5277    control_handle: std::mem::ManuallyDrop<CapabilitiesControlHandle>,
5278    tx_id: u32,
5279}
5280
5281/// Set the the channel to be shutdown (see [`CapabilitiesControlHandle::shutdown`])
5282/// if the responder is dropped without sending a response, so that the client
5283/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
5284impl std::ops::Drop for CapabilitiesCapabilityAssociateHandleResponder {
5285    fn drop(&mut self) {
5286        self.control_handle.shutdown();
5287        // Safety: drops once, never accessed again
5288        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
5289    }
5290}
5291
5292impl fidl::endpoints::Responder for CapabilitiesCapabilityAssociateHandleResponder {
5293    type ControlHandle = CapabilitiesControlHandle;
5294
5295    fn control_handle(&self) -> &CapabilitiesControlHandle {
5296        &self.control_handle
5297    }
5298
5299    fn drop_without_shutdown(mut self) {
5300        // Safety: drops once, never accessed again due to mem::forget
5301        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
5302        // Prevent Drop from running (which would shut down the channel)
5303        std::mem::forget(self);
5304    }
5305}
5306
5307impl CapabilitiesCapabilityAssociateHandleResponder {
5308    /// Sends a response to the FIDL transaction.
5309    ///
5310    /// Sets the channel to shutdown if an error occurs.
5311    pub fn send(self, mut result: Result<(), CapabilitiesError>) -> Result<(), fidl::Error> {
5312        let _result = self.send_raw(result);
5313        if _result.is_err() {
5314            self.control_handle.shutdown();
5315        }
5316        self.drop_without_shutdown();
5317        _result
5318    }
5319
5320    /// Similar to "send" but does not shutdown the channel if an error occurs.
5321    pub fn send_no_shutdown_on_err(
5322        self,
5323        mut result: Result<(), CapabilitiesError>,
5324    ) -> Result<(), fidl::Error> {
5325        let _result = self.send_raw(result);
5326        self.drop_without_shutdown();
5327        _result
5328    }
5329
5330    fn send_raw(&self, mut result: Result<(), CapabilitiesError>) -> Result<(), fidl::Error> {
5331        self.control_handle.inner.send::<fidl::encoding::FlexibleResultType<
5332            fidl::encoding::EmptyStruct,
5333            CapabilitiesError,
5334        >>(
5335            fidl::encoding::FlexibleResult::new(result),
5336            self.tx_id,
5337            0x1d69bb61953d8e7,
5338            fidl::encoding::DynamicFlags::FLEXIBLE,
5339        )
5340    }
5341}
5342
5343#[derive(Debug, Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash)]
5344pub struct CapabilityFactoryMarker;
5345
5346impl fidl::endpoints::ProtocolMarker for CapabilityFactoryMarker {
5347    type Proxy = CapabilityFactoryProxy;
5348    type RequestStream = CapabilityFactoryRequestStream;
5349    #[cfg(target_os = "fuchsia")]
5350    type SynchronousProxy = CapabilityFactorySynchronousProxy;
5351
5352    const DEBUG_NAME: &'static str = "fuchsia.component.runtime.CapabilityFactory";
5353}
5354impl fidl::endpoints::DiscoverableProtocolMarker for CapabilityFactoryMarker {}
5355
5356pub trait CapabilityFactoryProxyInterface: Send + Sync {
5357    fn r#create_connector(
5358        &self,
5359        receiver_client_end: fidl::endpoints::ClientEnd<ReceiverMarker>,
5360        connector_server_end: fidl::endpoints::ServerEnd<ConnectorMarker>,
5361    ) -> Result<(), fidl::Error>;
5362    fn r#create_dir_connector(
5363        &self,
5364        dir_receiver_client_end: fidl::endpoints::ClientEnd<DirReceiverDeprecatedMarker>,
5365        dir_connector_server_end: fidl::endpoints::ServerEnd<DirConnectorMarker>,
5366    ) -> Result<(), fidl::Error>;
5367    fn r#create_dictionary(
5368        &self,
5369        dictionary_server_end: fidl::endpoints::ServerEnd<DictionaryMarker>,
5370    ) -> Result<(), fidl::Error>;
5371    fn r#create_connector_router(
5372        &self,
5373        router_client_end: fidl::endpoints::ClientEnd<ConnectorRouterDeprecatedMarker>,
5374        router_server_end: fidl::endpoints::ServerEnd<ConnectorRouterDeprecatedMarker>,
5375    ) -> Result<(), fidl::Error>;
5376    fn r#create_dir_connector_router(
5377        &self,
5378        router_client_end: fidl::endpoints::ClientEnd<DirConnectorRouterDeprecatedMarker>,
5379        router_server_end: fidl::endpoints::ServerEnd<DirConnectorRouterDeprecatedMarker>,
5380    ) -> Result<(), fidl::Error>;
5381    fn r#create_dictionary_router(
5382        &self,
5383        router_client_end: fidl::endpoints::ClientEnd<DictionaryRouterDeprecatedMarker>,
5384        router_server_end: fidl::endpoints::ServerEnd<DictionaryRouterDeprecatedMarker>,
5385    ) -> Result<(), fidl::Error>;
5386    fn r#create_data_router(
5387        &self,
5388        router_client_end: fidl::endpoints::ClientEnd<DataRouterDeprecatedMarker>,
5389        router_server_end: fidl::endpoints::ServerEnd<DataRouterDeprecatedMarker>,
5390    ) -> Result<(), fidl::Error>;
5391}
5392#[derive(Debug)]
5393#[cfg(target_os = "fuchsia")]
5394pub struct CapabilityFactorySynchronousProxy {
5395    client: fidl::client::sync::Client,
5396}
5397
5398#[cfg(target_os = "fuchsia")]
5399impl fidl::endpoints::SynchronousProxy for CapabilityFactorySynchronousProxy {
5400    type Proxy = CapabilityFactoryProxy;
5401    type Protocol = CapabilityFactoryMarker;
5402
5403    fn from_channel(inner: fidl::Channel) -> Self {
5404        Self::new(inner)
5405    }
5406
5407    fn into_channel(self) -> fidl::Channel {
5408        self.client.into_channel()
5409    }
5410
5411    fn as_channel(&self) -> &fidl::Channel {
5412        self.client.as_channel()
5413    }
5414}
5415
5416#[cfg(target_os = "fuchsia")]
5417impl CapabilityFactorySynchronousProxy {
5418    pub fn new(channel: fidl::Channel) -> Self {
5419        let protocol_name =
5420            <CapabilityFactoryMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
5421        Self { client: fidl::client::sync::Client::new(channel, protocol_name) }
5422    }
5423
5424    pub fn into_channel(self) -> fidl::Channel {
5425        self.client.into_channel()
5426    }
5427
5428    /// Waits until an event arrives and returns it. It is safe for other
5429    /// threads to make concurrent requests while waiting for an event.
5430    pub fn wait_for_event(
5431        &self,
5432        deadline: zx::MonotonicInstant,
5433    ) -> Result<CapabilityFactoryEvent, fidl::Error> {
5434        CapabilityFactoryEvent::decode(self.client.wait_for_event(deadline)?)
5435    }
5436
5437    pub fn r#create_connector(
5438        &self,
5439        mut receiver_client_end: fidl::endpoints::ClientEnd<ReceiverMarker>,
5440        mut connector_server_end: fidl::endpoints::ServerEnd<ConnectorMarker>,
5441    ) -> Result<(), fidl::Error> {
5442        self.client.send::<CapabilityFactoryCreateConnectorRequest>(
5443            (receiver_client_end, connector_server_end),
5444            0x58be7506ad9c0d1b,
5445            fidl::encoding::DynamicFlags::FLEXIBLE,
5446        )
5447    }
5448
5449    pub fn r#create_dir_connector(
5450        &self,
5451        mut dir_receiver_client_end: fidl::endpoints::ClientEnd<DirReceiverDeprecatedMarker>,
5452        mut dir_connector_server_end: fidl::endpoints::ServerEnd<DirConnectorMarker>,
5453    ) -> Result<(), fidl::Error> {
5454        self.client.send::<CapabilityFactoryCreateDirConnectorRequest>(
5455            (dir_receiver_client_end, dir_connector_server_end),
5456            0x47e63805e1a638fa,
5457            fidl::encoding::DynamicFlags::FLEXIBLE,
5458        )
5459    }
5460
5461    pub fn r#create_dictionary(
5462        &self,
5463        mut dictionary_server_end: fidl::endpoints::ServerEnd<DictionaryMarker>,
5464    ) -> Result<(), fidl::Error> {
5465        self.client.send::<CapabilityFactoryCreateDictionaryRequest>(
5466            (dictionary_server_end,),
5467            0x1d9473d8c1e82b02,
5468            fidl::encoding::DynamicFlags::FLEXIBLE,
5469        )
5470    }
5471
5472    pub fn r#create_connector_router(
5473        &self,
5474        mut router_client_end: fidl::endpoints::ClientEnd<ConnectorRouterDeprecatedMarker>,
5475        mut router_server_end: fidl::endpoints::ServerEnd<ConnectorRouterDeprecatedMarker>,
5476    ) -> Result<(), fidl::Error> {
5477        self.client.send::<CapabilityFactoryCreateConnectorRouterRequest>(
5478            (router_client_end, router_server_end),
5479            0x10a5577bdd065d17,
5480            fidl::encoding::DynamicFlags::FLEXIBLE,
5481        )
5482    }
5483
5484    pub fn r#create_dir_connector_router(
5485        &self,
5486        mut router_client_end: fidl::endpoints::ClientEnd<DirConnectorRouterDeprecatedMarker>,
5487        mut router_server_end: fidl::endpoints::ServerEnd<DirConnectorRouterDeprecatedMarker>,
5488    ) -> Result<(), fidl::Error> {
5489        self.client.send::<CapabilityFactoryCreateDirConnectorRouterRequest>(
5490            (router_client_end, router_server_end),
5491            0x6da0f55bc0cb6916,
5492            fidl::encoding::DynamicFlags::FLEXIBLE,
5493        )
5494    }
5495
5496    pub fn r#create_dictionary_router(
5497        &self,
5498        mut router_client_end: fidl::endpoints::ClientEnd<DictionaryRouterDeprecatedMarker>,
5499        mut router_server_end: fidl::endpoints::ServerEnd<DictionaryRouterDeprecatedMarker>,
5500    ) -> Result<(), fidl::Error> {
5501        self.client.send::<CapabilityFactoryCreateDictionaryRouterRequest>(
5502            (router_client_end, router_server_end),
5503            0x22f371a3e3cbdf05,
5504            fidl::encoding::DynamicFlags::FLEXIBLE,
5505        )
5506    }
5507
5508    pub fn r#create_data_router(
5509        &self,
5510        mut router_client_end: fidl::endpoints::ClientEnd<DataRouterDeprecatedMarker>,
5511        mut router_server_end: fidl::endpoints::ServerEnd<DataRouterDeprecatedMarker>,
5512    ) -> Result<(), fidl::Error> {
5513        self.client.send::<CapabilityFactoryCreateDataRouterRequest>(
5514            (router_client_end, router_server_end),
5515            0x42ca43500520bd20,
5516            fidl::encoding::DynamicFlags::FLEXIBLE,
5517        )
5518    }
5519}
5520
5521#[cfg(target_os = "fuchsia")]
5522impl From<CapabilityFactorySynchronousProxy> for zx::NullableHandle {
5523    fn from(value: CapabilityFactorySynchronousProxy) -> Self {
5524        value.into_channel().into()
5525    }
5526}
5527
5528#[cfg(target_os = "fuchsia")]
5529impl From<fidl::Channel> for CapabilityFactorySynchronousProxy {
5530    fn from(value: fidl::Channel) -> Self {
5531        Self::new(value)
5532    }
5533}
5534
5535#[cfg(target_os = "fuchsia")]
5536impl fidl::endpoints::FromClient for CapabilityFactorySynchronousProxy {
5537    type Protocol = CapabilityFactoryMarker;
5538
5539    fn from_client(value: fidl::endpoints::ClientEnd<CapabilityFactoryMarker>) -> Self {
5540        Self::new(value.into_channel())
5541    }
5542}
5543
5544#[derive(Debug, Clone)]
5545pub struct CapabilityFactoryProxy {
5546    client: fidl::client::Client<fidl::encoding::DefaultFuchsiaResourceDialect>,
5547}
5548
5549impl fidl::endpoints::Proxy for CapabilityFactoryProxy {
5550    type Protocol = CapabilityFactoryMarker;
5551
5552    fn from_channel(inner: ::fidl::AsyncChannel) -> Self {
5553        Self::new(inner)
5554    }
5555
5556    fn into_channel(self) -> Result<::fidl::AsyncChannel, Self> {
5557        self.client.into_channel().map_err(|client| Self { client })
5558    }
5559
5560    fn as_channel(&self) -> &::fidl::AsyncChannel {
5561        self.client.as_channel()
5562    }
5563}
5564
5565impl CapabilityFactoryProxy {
5566    /// Create a new Proxy for fuchsia.component.runtime/CapabilityFactory.
5567    pub fn new(channel: ::fidl::AsyncChannel) -> Self {
5568        let protocol_name =
5569            <CapabilityFactoryMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
5570        Self { client: fidl::client::Client::new(channel, protocol_name) }
5571    }
5572
5573    /// Get a Stream of events from the remote end of the protocol.
5574    ///
5575    /// # Panics
5576    ///
5577    /// Panics if the event stream was already taken.
5578    pub fn take_event_stream(&self) -> CapabilityFactoryEventStream {
5579        CapabilityFactoryEventStream { event_receiver: self.client.take_event_receiver() }
5580    }
5581
5582    pub fn r#create_connector(
5583        &self,
5584        mut receiver_client_end: fidl::endpoints::ClientEnd<ReceiverMarker>,
5585        mut connector_server_end: fidl::endpoints::ServerEnd<ConnectorMarker>,
5586    ) -> Result<(), fidl::Error> {
5587        CapabilityFactoryProxyInterface::r#create_connector(
5588            self,
5589            receiver_client_end,
5590            connector_server_end,
5591        )
5592    }
5593
5594    pub fn r#create_dir_connector(
5595        &self,
5596        mut dir_receiver_client_end: fidl::endpoints::ClientEnd<DirReceiverDeprecatedMarker>,
5597        mut dir_connector_server_end: fidl::endpoints::ServerEnd<DirConnectorMarker>,
5598    ) -> Result<(), fidl::Error> {
5599        CapabilityFactoryProxyInterface::r#create_dir_connector(
5600            self,
5601            dir_receiver_client_end,
5602            dir_connector_server_end,
5603        )
5604    }
5605
5606    pub fn r#create_dictionary(
5607        &self,
5608        mut dictionary_server_end: fidl::endpoints::ServerEnd<DictionaryMarker>,
5609    ) -> Result<(), fidl::Error> {
5610        CapabilityFactoryProxyInterface::r#create_dictionary(self, dictionary_server_end)
5611    }
5612
5613    pub fn r#create_connector_router(
5614        &self,
5615        mut router_client_end: fidl::endpoints::ClientEnd<ConnectorRouterDeprecatedMarker>,
5616        mut router_server_end: fidl::endpoints::ServerEnd<ConnectorRouterDeprecatedMarker>,
5617    ) -> Result<(), fidl::Error> {
5618        CapabilityFactoryProxyInterface::r#create_connector_router(
5619            self,
5620            router_client_end,
5621            router_server_end,
5622        )
5623    }
5624
5625    pub fn r#create_dir_connector_router(
5626        &self,
5627        mut router_client_end: fidl::endpoints::ClientEnd<DirConnectorRouterDeprecatedMarker>,
5628        mut router_server_end: fidl::endpoints::ServerEnd<DirConnectorRouterDeprecatedMarker>,
5629    ) -> Result<(), fidl::Error> {
5630        CapabilityFactoryProxyInterface::r#create_dir_connector_router(
5631            self,
5632            router_client_end,
5633            router_server_end,
5634        )
5635    }
5636
5637    pub fn r#create_dictionary_router(
5638        &self,
5639        mut router_client_end: fidl::endpoints::ClientEnd<DictionaryRouterDeprecatedMarker>,
5640        mut router_server_end: fidl::endpoints::ServerEnd<DictionaryRouterDeprecatedMarker>,
5641    ) -> Result<(), fidl::Error> {
5642        CapabilityFactoryProxyInterface::r#create_dictionary_router(
5643            self,
5644            router_client_end,
5645            router_server_end,
5646        )
5647    }
5648
5649    pub fn r#create_data_router(
5650        &self,
5651        mut router_client_end: fidl::endpoints::ClientEnd<DataRouterDeprecatedMarker>,
5652        mut router_server_end: fidl::endpoints::ServerEnd<DataRouterDeprecatedMarker>,
5653    ) -> Result<(), fidl::Error> {
5654        CapabilityFactoryProxyInterface::r#create_data_router(
5655            self,
5656            router_client_end,
5657            router_server_end,
5658        )
5659    }
5660}
5661
5662impl CapabilityFactoryProxyInterface for CapabilityFactoryProxy {
5663    fn r#create_connector(
5664        &self,
5665        mut receiver_client_end: fidl::endpoints::ClientEnd<ReceiverMarker>,
5666        mut connector_server_end: fidl::endpoints::ServerEnd<ConnectorMarker>,
5667    ) -> Result<(), fidl::Error> {
5668        self.client.send::<CapabilityFactoryCreateConnectorRequest>(
5669            (receiver_client_end, connector_server_end),
5670            0x58be7506ad9c0d1b,
5671            fidl::encoding::DynamicFlags::FLEXIBLE,
5672        )
5673    }
5674
5675    fn r#create_dir_connector(
5676        &self,
5677        mut dir_receiver_client_end: fidl::endpoints::ClientEnd<DirReceiverDeprecatedMarker>,
5678        mut dir_connector_server_end: fidl::endpoints::ServerEnd<DirConnectorMarker>,
5679    ) -> Result<(), fidl::Error> {
5680        self.client.send::<CapabilityFactoryCreateDirConnectorRequest>(
5681            (dir_receiver_client_end, dir_connector_server_end),
5682            0x47e63805e1a638fa,
5683            fidl::encoding::DynamicFlags::FLEXIBLE,
5684        )
5685    }
5686
5687    fn r#create_dictionary(
5688        &self,
5689        mut dictionary_server_end: fidl::endpoints::ServerEnd<DictionaryMarker>,
5690    ) -> Result<(), fidl::Error> {
5691        self.client.send::<CapabilityFactoryCreateDictionaryRequest>(
5692            (dictionary_server_end,),
5693            0x1d9473d8c1e82b02,
5694            fidl::encoding::DynamicFlags::FLEXIBLE,
5695        )
5696    }
5697
5698    fn r#create_connector_router(
5699        &self,
5700        mut router_client_end: fidl::endpoints::ClientEnd<ConnectorRouterDeprecatedMarker>,
5701        mut router_server_end: fidl::endpoints::ServerEnd<ConnectorRouterDeprecatedMarker>,
5702    ) -> Result<(), fidl::Error> {
5703        self.client.send::<CapabilityFactoryCreateConnectorRouterRequest>(
5704            (router_client_end, router_server_end),
5705            0x10a5577bdd065d17,
5706            fidl::encoding::DynamicFlags::FLEXIBLE,
5707        )
5708    }
5709
5710    fn r#create_dir_connector_router(
5711        &self,
5712        mut router_client_end: fidl::endpoints::ClientEnd<DirConnectorRouterDeprecatedMarker>,
5713        mut router_server_end: fidl::endpoints::ServerEnd<DirConnectorRouterDeprecatedMarker>,
5714    ) -> Result<(), fidl::Error> {
5715        self.client.send::<CapabilityFactoryCreateDirConnectorRouterRequest>(
5716            (router_client_end, router_server_end),
5717            0x6da0f55bc0cb6916,
5718            fidl::encoding::DynamicFlags::FLEXIBLE,
5719        )
5720    }
5721
5722    fn r#create_dictionary_router(
5723        &self,
5724        mut router_client_end: fidl::endpoints::ClientEnd<DictionaryRouterDeprecatedMarker>,
5725        mut router_server_end: fidl::endpoints::ServerEnd<DictionaryRouterDeprecatedMarker>,
5726    ) -> Result<(), fidl::Error> {
5727        self.client.send::<CapabilityFactoryCreateDictionaryRouterRequest>(
5728            (router_client_end, router_server_end),
5729            0x22f371a3e3cbdf05,
5730            fidl::encoding::DynamicFlags::FLEXIBLE,
5731        )
5732    }
5733
5734    fn r#create_data_router(
5735        &self,
5736        mut router_client_end: fidl::endpoints::ClientEnd<DataRouterDeprecatedMarker>,
5737        mut router_server_end: fidl::endpoints::ServerEnd<DataRouterDeprecatedMarker>,
5738    ) -> Result<(), fidl::Error> {
5739        self.client.send::<CapabilityFactoryCreateDataRouterRequest>(
5740            (router_client_end, router_server_end),
5741            0x42ca43500520bd20,
5742            fidl::encoding::DynamicFlags::FLEXIBLE,
5743        )
5744    }
5745}
5746
5747pub struct CapabilityFactoryEventStream {
5748    event_receiver: fidl::client::EventReceiver<fidl::encoding::DefaultFuchsiaResourceDialect>,
5749}
5750
5751impl std::marker::Unpin for CapabilityFactoryEventStream {}
5752
5753impl futures::stream::FusedStream for CapabilityFactoryEventStream {
5754    fn is_terminated(&self) -> bool {
5755        self.event_receiver.is_terminated()
5756    }
5757}
5758
5759impl futures::Stream for CapabilityFactoryEventStream {
5760    type Item = Result<CapabilityFactoryEvent, fidl::Error>;
5761
5762    fn poll_next(
5763        mut self: std::pin::Pin<&mut Self>,
5764        cx: &mut std::task::Context<'_>,
5765    ) -> std::task::Poll<Option<Self::Item>> {
5766        match futures::ready!(futures::stream::StreamExt::poll_next_unpin(
5767            &mut self.event_receiver,
5768            cx
5769        )?) {
5770            Some(buf) => std::task::Poll::Ready(Some(CapabilityFactoryEvent::decode(buf))),
5771            None => std::task::Poll::Ready(None),
5772        }
5773    }
5774}
5775
5776#[derive(Debug)]
5777pub enum CapabilityFactoryEvent {
5778    #[non_exhaustive]
5779    _UnknownEvent {
5780        /// Ordinal of the event that was sent.
5781        ordinal: u64,
5782    },
5783}
5784
5785impl CapabilityFactoryEvent {
5786    /// Decodes a message buffer as a [`CapabilityFactoryEvent`].
5787    fn decode(
5788        mut buf: <fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc,
5789    ) -> Result<CapabilityFactoryEvent, fidl::Error> {
5790        let (bytes, _handles) = buf.split_mut();
5791        let (tx_header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
5792        debug_assert_eq!(tx_header.tx_id, 0);
5793        match tx_header.ordinal {
5794            _ if tx_header.dynamic_flags().contains(fidl::encoding::DynamicFlags::FLEXIBLE) => {
5795                Ok(CapabilityFactoryEvent::_UnknownEvent { ordinal: tx_header.ordinal })
5796            }
5797            _ => Err(fidl::Error::UnknownOrdinal {
5798                ordinal: tx_header.ordinal,
5799                protocol_name:
5800                    <CapabilityFactoryMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
5801            }),
5802        }
5803    }
5804}
5805
5806/// A Stream of incoming requests for fuchsia.component.runtime/CapabilityFactory.
5807pub struct CapabilityFactoryRequestStream {
5808    inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
5809    is_terminated: bool,
5810}
5811
5812impl std::marker::Unpin for CapabilityFactoryRequestStream {}
5813
5814impl futures::stream::FusedStream for CapabilityFactoryRequestStream {
5815    fn is_terminated(&self) -> bool {
5816        self.is_terminated
5817    }
5818}
5819
5820impl fidl::endpoints::RequestStream for CapabilityFactoryRequestStream {
5821    type Protocol = CapabilityFactoryMarker;
5822    type ControlHandle = CapabilityFactoryControlHandle;
5823
5824    fn from_channel(channel: ::fidl::AsyncChannel) -> Self {
5825        Self { inner: std::sync::Arc::new(fidl::ServeInner::new(channel)), is_terminated: false }
5826    }
5827
5828    fn control_handle(&self) -> Self::ControlHandle {
5829        CapabilityFactoryControlHandle { inner: self.inner.clone() }
5830    }
5831
5832    fn into_inner(
5833        self,
5834    ) -> (::std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>, bool)
5835    {
5836        (self.inner, self.is_terminated)
5837    }
5838
5839    fn from_inner(
5840        inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
5841        is_terminated: bool,
5842    ) -> Self {
5843        Self { inner, is_terminated }
5844    }
5845}
5846
5847impl futures::Stream for CapabilityFactoryRequestStream {
5848    type Item = Result<CapabilityFactoryRequest, fidl::Error>;
5849
5850    fn poll_next(
5851        mut self: std::pin::Pin<&mut Self>,
5852        cx: &mut std::task::Context<'_>,
5853    ) -> std::task::Poll<Option<Self::Item>> {
5854        let this = &mut *self;
5855        if this.inner.check_shutdown(cx) {
5856            this.is_terminated = true;
5857            return std::task::Poll::Ready(None);
5858        }
5859        if this.is_terminated {
5860            panic!("polled CapabilityFactoryRequestStream after completion");
5861        }
5862        fidl::encoding::with_tls_decode_buf::<_, fidl::encoding::DefaultFuchsiaResourceDialect>(
5863            |bytes, handles| {
5864                match this.inner.channel().read_etc(cx, bytes, handles) {
5865                    std::task::Poll::Ready(Ok(())) => {}
5866                    std::task::Poll::Pending => return std::task::Poll::Pending,
5867                    std::task::Poll::Ready(Err(zx_status::Status::PEER_CLOSED)) => {
5868                        this.is_terminated = true;
5869                        return std::task::Poll::Ready(None);
5870                    }
5871                    std::task::Poll::Ready(Err(e)) => {
5872                        return std::task::Poll::Ready(Some(Err(fidl::Error::ServerRequestRead(
5873                            e.into(),
5874                        ))));
5875                    }
5876                }
5877
5878                // A message has been received from the channel
5879                let (header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
5880
5881                std::task::Poll::Ready(Some(match header.ordinal {
5882                    0x58be7506ad9c0d1b => {
5883                        header.validate_request_tx_id(fidl::MethodType::OneWay)?;
5884                        let mut req = fidl::new_empty!(
5885                            CapabilityFactoryCreateConnectorRequest,
5886                            fidl::encoding::DefaultFuchsiaResourceDialect
5887                        );
5888                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<CapabilityFactoryCreateConnectorRequest>(&header, _body_bytes, handles, &mut req)?;
5889                        let control_handle =
5890                            CapabilityFactoryControlHandle { inner: this.inner.clone() };
5891                        Ok(CapabilityFactoryRequest::CreateConnector {
5892                            receiver_client_end: req.receiver_client_end,
5893                            connector_server_end: req.connector_server_end,
5894
5895                            control_handle,
5896                        })
5897                    }
5898                    0x47e63805e1a638fa => {
5899                        header.validate_request_tx_id(fidl::MethodType::OneWay)?;
5900                        let mut req = fidl::new_empty!(
5901                            CapabilityFactoryCreateDirConnectorRequest,
5902                            fidl::encoding::DefaultFuchsiaResourceDialect
5903                        );
5904                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<CapabilityFactoryCreateDirConnectorRequest>(&header, _body_bytes, handles, &mut req)?;
5905                        let control_handle =
5906                            CapabilityFactoryControlHandle { inner: this.inner.clone() };
5907                        Ok(CapabilityFactoryRequest::CreateDirConnector {
5908                            dir_receiver_client_end: req.dir_receiver_client_end,
5909                            dir_connector_server_end: req.dir_connector_server_end,
5910
5911                            control_handle,
5912                        })
5913                    }
5914                    0x1d9473d8c1e82b02 => {
5915                        header.validate_request_tx_id(fidl::MethodType::OneWay)?;
5916                        let mut req = fidl::new_empty!(
5917                            CapabilityFactoryCreateDictionaryRequest,
5918                            fidl::encoding::DefaultFuchsiaResourceDialect
5919                        );
5920                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<CapabilityFactoryCreateDictionaryRequest>(&header, _body_bytes, handles, &mut req)?;
5921                        let control_handle =
5922                            CapabilityFactoryControlHandle { inner: this.inner.clone() };
5923                        Ok(CapabilityFactoryRequest::CreateDictionary {
5924                            dictionary_server_end: req.dictionary_server_end,
5925
5926                            control_handle,
5927                        })
5928                    }
5929                    0x10a5577bdd065d17 => {
5930                        header.validate_request_tx_id(fidl::MethodType::OneWay)?;
5931                        let mut req = fidl::new_empty!(
5932                            CapabilityFactoryCreateConnectorRouterRequest,
5933                            fidl::encoding::DefaultFuchsiaResourceDialect
5934                        );
5935                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<CapabilityFactoryCreateConnectorRouterRequest>(&header, _body_bytes, handles, &mut req)?;
5936                        let control_handle =
5937                            CapabilityFactoryControlHandle { inner: this.inner.clone() };
5938                        Ok(CapabilityFactoryRequest::CreateConnectorRouter {
5939                            router_client_end: req.router_client_end,
5940                            router_server_end: req.router_server_end,
5941
5942                            control_handle,
5943                        })
5944                    }
5945                    0x6da0f55bc0cb6916 => {
5946                        header.validate_request_tx_id(fidl::MethodType::OneWay)?;
5947                        let mut req = fidl::new_empty!(
5948                            CapabilityFactoryCreateDirConnectorRouterRequest,
5949                            fidl::encoding::DefaultFuchsiaResourceDialect
5950                        );
5951                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<CapabilityFactoryCreateDirConnectorRouterRequest>(&header, _body_bytes, handles, &mut req)?;
5952                        let control_handle =
5953                            CapabilityFactoryControlHandle { inner: this.inner.clone() };
5954                        Ok(CapabilityFactoryRequest::CreateDirConnectorRouter {
5955                            router_client_end: req.router_client_end,
5956                            router_server_end: req.router_server_end,
5957
5958                            control_handle,
5959                        })
5960                    }
5961                    0x22f371a3e3cbdf05 => {
5962                        header.validate_request_tx_id(fidl::MethodType::OneWay)?;
5963                        let mut req = fidl::new_empty!(
5964                            CapabilityFactoryCreateDictionaryRouterRequest,
5965                            fidl::encoding::DefaultFuchsiaResourceDialect
5966                        );
5967                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<CapabilityFactoryCreateDictionaryRouterRequest>(&header, _body_bytes, handles, &mut req)?;
5968                        let control_handle =
5969                            CapabilityFactoryControlHandle { inner: this.inner.clone() };
5970                        Ok(CapabilityFactoryRequest::CreateDictionaryRouter {
5971                            router_client_end: req.router_client_end,
5972                            router_server_end: req.router_server_end,
5973
5974                            control_handle,
5975                        })
5976                    }
5977                    0x42ca43500520bd20 => {
5978                        header.validate_request_tx_id(fidl::MethodType::OneWay)?;
5979                        let mut req = fidl::new_empty!(
5980                            CapabilityFactoryCreateDataRouterRequest,
5981                            fidl::encoding::DefaultFuchsiaResourceDialect
5982                        );
5983                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<CapabilityFactoryCreateDataRouterRequest>(&header, _body_bytes, handles, &mut req)?;
5984                        let control_handle =
5985                            CapabilityFactoryControlHandle { inner: this.inner.clone() };
5986                        Ok(CapabilityFactoryRequest::CreateDataRouter {
5987                            router_client_end: req.router_client_end,
5988                            router_server_end: req.router_server_end,
5989
5990                            control_handle,
5991                        })
5992                    }
5993                    _ if header.tx_id == 0
5994                        && header
5995                            .dynamic_flags()
5996                            .contains(fidl::encoding::DynamicFlags::FLEXIBLE) =>
5997                    {
5998                        Ok(CapabilityFactoryRequest::_UnknownMethod {
5999                            ordinal: header.ordinal,
6000                            control_handle: CapabilityFactoryControlHandle {
6001                                inner: this.inner.clone(),
6002                            },
6003                            method_type: fidl::MethodType::OneWay,
6004                        })
6005                    }
6006                    _ if header
6007                        .dynamic_flags()
6008                        .contains(fidl::encoding::DynamicFlags::FLEXIBLE) =>
6009                    {
6010                        this.inner.send_framework_err(
6011                            fidl::encoding::FrameworkErr::UnknownMethod,
6012                            header.tx_id,
6013                            header.ordinal,
6014                            header.dynamic_flags(),
6015                            (bytes, handles),
6016                        )?;
6017                        Ok(CapabilityFactoryRequest::_UnknownMethod {
6018                            ordinal: header.ordinal,
6019                            control_handle: CapabilityFactoryControlHandle {
6020                                inner: this.inner.clone(),
6021                            },
6022                            method_type: fidl::MethodType::TwoWay,
6023                        })
6024                    }
6025                    _ => Err(fidl::Error::UnknownOrdinal {
6026                        ordinal: header.ordinal,
6027                        protocol_name:
6028                            <CapabilityFactoryMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
6029                    }),
6030                }))
6031            },
6032        )
6033    }
6034}
6035
6036/// The `CapabilityFactory` can be used to create new runtime capabilities.
6037#[derive(Debug)]
6038pub enum CapabilityFactoryRequest {
6039    CreateConnector {
6040        receiver_client_end: fidl::endpoints::ClientEnd<ReceiverMarker>,
6041        connector_server_end: fidl::endpoints::ServerEnd<ConnectorMarker>,
6042        control_handle: CapabilityFactoryControlHandle,
6043    },
6044    CreateDirConnector {
6045        dir_receiver_client_end: fidl::endpoints::ClientEnd<DirReceiverDeprecatedMarker>,
6046        dir_connector_server_end: fidl::endpoints::ServerEnd<DirConnectorMarker>,
6047        control_handle: CapabilityFactoryControlHandle,
6048    },
6049    CreateDictionary {
6050        dictionary_server_end: fidl::endpoints::ServerEnd<DictionaryMarker>,
6051        control_handle: CapabilityFactoryControlHandle,
6052    },
6053    CreateConnectorRouter {
6054        router_client_end: fidl::endpoints::ClientEnd<ConnectorRouterDeprecatedMarker>,
6055        router_server_end: fidl::endpoints::ServerEnd<ConnectorRouterDeprecatedMarker>,
6056        control_handle: CapabilityFactoryControlHandle,
6057    },
6058    CreateDirConnectorRouter {
6059        router_client_end: fidl::endpoints::ClientEnd<DirConnectorRouterDeprecatedMarker>,
6060        router_server_end: fidl::endpoints::ServerEnd<DirConnectorRouterDeprecatedMarker>,
6061        control_handle: CapabilityFactoryControlHandle,
6062    },
6063    CreateDictionaryRouter {
6064        router_client_end: fidl::endpoints::ClientEnd<DictionaryRouterDeprecatedMarker>,
6065        router_server_end: fidl::endpoints::ServerEnd<DictionaryRouterDeprecatedMarker>,
6066        control_handle: CapabilityFactoryControlHandle,
6067    },
6068    CreateDataRouter {
6069        router_client_end: fidl::endpoints::ClientEnd<DataRouterDeprecatedMarker>,
6070        router_server_end: fidl::endpoints::ServerEnd<DataRouterDeprecatedMarker>,
6071        control_handle: CapabilityFactoryControlHandle,
6072    },
6073    /// An interaction was received which does not match any known method.
6074    #[non_exhaustive]
6075    _UnknownMethod {
6076        /// Ordinal of the method that was called.
6077        ordinal: u64,
6078        control_handle: CapabilityFactoryControlHandle,
6079        method_type: fidl::MethodType,
6080    },
6081}
6082
6083impl CapabilityFactoryRequest {
6084    #[allow(irrefutable_let_patterns)]
6085    pub fn into_create_connector(
6086        self,
6087    ) -> Option<(
6088        fidl::endpoints::ClientEnd<ReceiverMarker>,
6089        fidl::endpoints::ServerEnd<ConnectorMarker>,
6090        CapabilityFactoryControlHandle,
6091    )> {
6092        if let CapabilityFactoryRequest::CreateConnector {
6093            receiver_client_end,
6094            connector_server_end,
6095            control_handle,
6096        } = self
6097        {
6098            Some((receiver_client_end, connector_server_end, control_handle))
6099        } else {
6100            None
6101        }
6102    }
6103
6104    #[allow(irrefutable_let_patterns)]
6105    pub fn into_create_dir_connector(
6106        self,
6107    ) -> Option<(
6108        fidl::endpoints::ClientEnd<DirReceiverDeprecatedMarker>,
6109        fidl::endpoints::ServerEnd<DirConnectorMarker>,
6110        CapabilityFactoryControlHandle,
6111    )> {
6112        if let CapabilityFactoryRequest::CreateDirConnector {
6113            dir_receiver_client_end,
6114            dir_connector_server_end,
6115            control_handle,
6116        } = self
6117        {
6118            Some((dir_receiver_client_end, dir_connector_server_end, control_handle))
6119        } else {
6120            None
6121        }
6122    }
6123
6124    #[allow(irrefutable_let_patterns)]
6125    pub fn into_create_dictionary(
6126        self,
6127    ) -> Option<(fidl::endpoints::ServerEnd<DictionaryMarker>, CapabilityFactoryControlHandle)>
6128    {
6129        if let CapabilityFactoryRequest::CreateDictionary {
6130            dictionary_server_end,
6131            control_handle,
6132        } = self
6133        {
6134            Some((dictionary_server_end, control_handle))
6135        } else {
6136            None
6137        }
6138    }
6139
6140    #[allow(irrefutable_let_patterns)]
6141    pub fn into_create_connector_router(
6142        self,
6143    ) -> Option<(
6144        fidl::endpoints::ClientEnd<ConnectorRouterDeprecatedMarker>,
6145        fidl::endpoints::ServerEnd<ConnectorRouterDeprecatedMarker>,
6146        CapabilityFactoryControlHandle,
6147    )> {
6148        if let CapabilityFactoryRequest::CreateConnectorRouter {
6149            router_client_end,
6150            router_server_end,
6151            control_handle,
6152        } = self
6153        {
6154            Some((router_client_end, router_server_end, control_handle))
6155        } else {
6156            None
6157        }
6158    }
6159
6160    #[allow(irrefutable_let_patterns)]
6161    pub fn into_create_dir_connector_router(
6162        self,
6163    ) -> Option<(
6164        fidl::endpoints::ClientEnd<DirConnectorRouterDeprecatedMarker>,
6165        fidl::endpoints::ServerEnd<DirConnectorRouterDeprecatedMarker>,
6166        CapabilityFactoryControlHandle,
6167    )> {
6168        if let CapabilityFactoryRequest::CreateDirConnectorRouter {
6169            router_client_end,
6170            router_server_end,
6171            control_handle,
6172        } = self
6173        {
6174            Some((router_client_end, router_server_end, control_handle))
6175        } else {
6176            None
6177        }
6178    }
6179
6180    #[allow(irrefutable_let_patterns)]
6181    pub fn into_create_dictionary_router(
6182        self,
6183    ) -> Option<(
6184        fidl::endpoints::ClientEnd<DictionaryRouterDeprecatedMarker>,
6185        fidl::endpoints::ServerEnd<DictionaryRouterDeprecatedMarker>,
6186        CapabilityFactoryControlHandle,
6187    )> {
6188        if let CapabilityFactoryRequest::CreateDictionaryRouter {
6189            router_client_end,
6190            router_server_end,
6191            control_handle,
6192        } = self
6193        {
6194            Some((router_client_end, router_server_end, control_handle))
6195        } else {
6196            None
6197        }
6198    }
6199
6200    #[allow(irrefutable_let_patterns)]
6201    pub fn into_create_data_router(
6202        self,
6203    ) -> Option<(
6204        fidl::endpoints::ClientEnd<DataRouterDeprecatedMarker>,
6205        fidl::endpoints::ServerEnd<DataRouterDeprecatedMarker>,
6206        CapabilityFactoryControlHandle,
6207    )> {
6208        if let CapabilityFactoryRequest::CreateDataRouter {
6209            router_client_end,
6210            router_server_end,
6211            control_handle,
6212        } = self
6213        {
6214            Some((router_client_end, router_server_end, control_handle))
6215        } else {
6216            None
6217        }
6218    }
6219
6220    /// Name of the method defined in FIDL
6221    pub fn method_name(&self) -> &'static str {
6222        match *self {
6223            CapabilityFactoryRequest::CreateConnector { .. } => "create_connector",
6224            CapabilityFactoryRequest::CreateDirConnector { .. } => "create_dir_connector",
6225            CapabilityFactoryRequest::CreateDictionary { .. } => "create_dictionary",
6226            CapabilityFactoryRequest::CreateConnectorRouter { .. } => "create_connector_router",
6227            CapabilityFactoryRequest::CreateDirConnectorRouter { .. } => {
6228                "create_dir_connector_router"
6229            }
6230            CapabilityFactoryRequest::CreateDictionaryRouter { .. } => "create_dictionary_router",
6231            CapabilityFactoryRequest::CreateDataRouter { .. } => "create_data_router",
6232            CapabilityFactoryRequest::_UnknownMethod {
6233                method_type: fidl::MethodType::OneWay,
6234                ..
6235            } => "unknown one-way method",
6236            CapabilityFactoryRequest::_UnknownMethod {
6237                method_type: fidl::MethodType::TwoWay,
6238                ..
6239            } => "unknown two-way method",
6240        }
6241    }
6242}
6243
6244#[derive(Debug, Clone)]
6245pub struct CapabilityFactoryControlHandle {
6246    inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
6247}
6248
6249impl fidl::endpoints::ControlHandle for CapabilityFactoryControlHandle {
6250    fn shutdown(&self) {
6251        self.inner.shutdown()
6252    }
6253
6254    fn shutdown_with_epitaph(&self, status: zx_status::Status) {
6255        self.inner.shutdown_with_epitaph(status)
6256    }
6257
6258    fn is_closed(&self) -> bool {
6259        self.inner.channel().is_closed()
6260    }
6261    fn on_closed(&self) -> fidl::OnSignalsRef<'_> {
6262        self.inner.channel().on_closed()
6263    }
6264
6265    #[cfg(target_os = "fuchsia")]
6266    fn signal_peer(
6267        &self,
6268        clear_mask: zx::Signals,
6269        set_mask: zx::Signals,
6270    ) -> Result<(), zx_status::Status> {
6271        use fidl::Peered;
6272        self.inner.channel().signal_peer(clear_mask, set_mask)
6273    }
6274}
6275
6276impl CapabilityFactoryControlHandle {}
6277
6278#[derive(Debug, Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash)]
6279pub struct ConnectorMarker;
6280
6281impl fidl::endpoints::ProtocolMarker for ConnectorMarker {
6282    type Proxy = ConnectorProxy;
6283    type RequestStream = ConnectorRequestStream;
6284    #[cfg(target_os = "fuchsia")]
6285    type SynchronousProxy = ConnectorSynchronousProxy;
6286
6287    const DEBUG_NAME: &'static str = "(anonymous) Connector";
6288}
6289
6290pub trait ConnectorProxyInterface: Send + Sync {
6291    fn r#clone(
6292        &self,
6293        request: fidl::endpoints::ServerEnd<fidl_fuchsia_unknown::CloneableMarker>,
6294    ) -> Result<(), fidl::Error>;
6295    fn r#connect(&self, channel: fidl::Channel) -> Result<(), fidl::Error>;
6296}
6297#[derive(Debug)]
6298#[cfg(target_os = "fuchsia")]
6299pub struct ConnectorSynchronousProxy {
6300    client: fidl::client::sync::Client,
6301}
6302
6303#[cfg(target_os = "fuchsia")]
6304impl fidl::endpoints::SynchronousProxy for ConnectorSynchronousProxy {
6305    type Proxy = ConnectorProxy;
6306    type Protocol = ConnectorMarker;
6307
6308    fn from_channel(inner: fidl::Channel) -> Self {
6309        Self::new(inner)
6310    }
6311
6312    fn into_channel(self) -> fidl::Channel {
6313        self.client.into_channel()
6314    }
6315
6316    fn as_channel(&self) -> &fidl::Channel {
6317        self.client.as_channel()
6318    }
6319}
6320
6321#[cfg(target_os = "fuchsia")]
6322impl ConnectorSynchronousProxy {
6323    pub fn new(channel: fidl::Channel) -> Self {
6324        let protocol_name = <ConnectorMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
6325        Self { client: fidl::client::sync::Client::new(channel, protocol_name) }
6326    }
6327
6328    pub fn into_channel(self) -> fidl::Channel {
6329        self.client.into_channel()
6330    }
6331
6332    /// Waits until an event arrives and returns it. It is safe for other
6333    /// threads to make concurrent requests while waiting for an event.
6334    pub fn wait_for_event(
6335        &self,
6336        deadline: zx::MonotonicInstant,
6337    ) -> Result<ConnectorEvent, fidl::Error> {
6338        ConnectorEvent::decode(self.client.wait_for_event(deadline)?)
6339    }
6340
6341    pub fn r#clone(
6342        &self,
6343        mut request: fidl::endpoints::ServerEnd<fidl_fuchsia_unknown::CloneableMarker>,
6344    ) -> Result<(), fidl::Error> {
6345        self.client.send::<fidl_fuchsia_unknown::CloneableCloneRequest>(
6346            (request,),
6347            0x20d8a7aba2168a79,
6348            fidl::encoding::DynamicFlags::empty(),
6349        )
6350    }
6351
6352    /// Sends a channel to the `Receiver` associated with this `Connector`.
6353    pub fn r#connect(&self, mut channel: fidl::Channel) -> Result<(), fidl::Error> {
6354        self.client.send::<ConnectorConnectRequest>(
6355            (channel,),
6356            0x1c0c1727bd474e02,
6357            fidl::encoding::DynamicFlags::FLEXIBLE,
6358        )
6359    }
6360}
6361
6362#[cfg(target_os = "fuchsia")]
6363impl From<ConnectorSynchronousProxy> for zx::NullableHandle {
6364    fn from(value: ConnectorSynchronousProxy) -> Self {
6365        value.into_channel().into()
6366    }
6367}
6368
6369#[cfg(target_os = "fuchsia")]
6370impl From<fidl::Channel> for ConnectorSynchronousProxy {
6371    fn from(value: fidl::Channel) -> Self {
6372        Self::new(value)
6373    }
6374}
6375
6376#[cfg(target_os = "fuchsia")]
6377impl fidl::endpoints::FromClient for ConnectorSynchronousProxy {
6378    type Protocol = ConnectorMarker;
6379
6380    fn from_client(value: fidl::endpoints::ClientEnd<ConnectorMarker>) -> Self {
6381        Self::new(value.into_channel())
6382    }
6383}
6384
6385#[derive(Debug, Clone)]
6386pub struct ConnectorProxy {
6387    client: fidl::client::Client<fidl::encoding::DefaultFuchsiaResourceDialect>,
6388}
6389
6390impl fidl::endpoints::Proxy for ConnectorProxy {
6391    type Protocol = ConnectorMarker;
6392
6393    fn from_channel(inner: ::fidl::AsyncChannel) -> Self {
6394        Self::new(inner)
6395    }
6396
6397    fn into_channel(self) -> Result<::fidl::AsyncChannel, Self> {
6398        self.client.into_channel().map_err(|client| Self { client })
6399    }
6400
6401    fn as_channel(&self) -> &::fidl::AsyncChannel {
6402        self.client.as_channel()
6403    }
6404}
6405
6406impl ConnectorProxy {
6407    /// Create a new Proxy for fuchsia.component.runtime/Connector.
6408    pub fn new(channel: ::fidl::AsyncChannel) -> Self {
6409        let protocol_name = <ConnectorMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
6410        Self { client: fidl::client::Client::new(channel, protocol_name) }
6411    }
6412
6413    /// Get a Stream of events from the remote end of the protocol.
6414    ///
6415    /// # Panics
6416    ///
6417    /// Panics if the event stream was already taken.
6418    pub fn take_event_stream(&self) -> ConnectorEventStream {
6419        ConnectorEventStream { event_receiver: self.client.take_event_receiver() }
6420    }
6421
6422    pub fn r#clone(
6423        &self,
6424        mut request: fidl::endpoints::ServerEnd<fidl_fuchsia_unknown::CloneableMarker>,
6425    ) -> Result<(), fidl::Error> {
6426        ConnectorProxyInterface::r#clone(self, request)
6427    }
6428
6429    /// Sends a channel to the `Receiver` associated with this `Connector`.
6430    pub fn r#connect(&self, mut channel: fidl::Channel) -> Result<(), fidl::Error> {
6431        ConnectorProxyInterface::r#connect(self, channel)
6432    }
6433}
6434
6435impl ConnectorProxyInterface for ConnectorProxy {
6436    fn r#clone(
6437        &self,
6438        mut request: fidl::endpoints::ServerEnd<fidl_fuchsia_unknown::CloneableMarker>,
6439    ) -> Result<(), fidl::Error> {
6440        self.client.send::<fidl_fuchsia_unknown::CloneableCloneRequest>(
6441            (request,),
6442            0x20d8a7aba2168a79,
6443            fidl::encoding::DynamicFlags::empty(),
6444        )
6445    }
6446
6447    fn r#connect(&self, mut channel: fidl::Channel) -> Result<(), fidl::Error> {
6448        self.client.send::<ConnectorConnectRequest>(
6449            (channel,),
6450            0x1c0c1727bd474e02,
6451            fidl::encoding::DynamicFlags::FLEXIBLE,
6452        )
6453    }
6454}
6455
6456pub struct ConnectorEventStream {
6457    event_receiver: fidl::client::EventReceiver<fidl::encoding::DefaultFuchsiaResourceDialect>,
6458}
6459
6460impl std::marker::Unpin for ConnectorEventStream {}
6461
6462impl futures::stream::FusedStream for ConnectorEventStream {
6463    fn is_terminated(&self) -> bool {
6464        self.event_receiver.is_terminated()
6465    }
6466}
6467
6468impl futures::Stream for ConnectorEventStream {
6469    type Item = Result<ConnectorEvent, fidl::Error>;
6470
6471    fn poll_next(
6472        mut self: std::pin::Pin<&mut Self>,
6473        cx: &mut std::task::Context<'_>,
6474    ) -> std::task::Poll<Option<Self::Item>> {
6475        match futures::ready!(futures::stream::StreamExt::poll_next_unpin(
6476            &mut self.event_receiver,
6477            cx
6478        )?) {
6479            Some(buf) => std::task::Poll::Ready(Some(ConnectorEvent::decode(buf))),
6480            None => std::task::Poll::Ready(None),
6481        }
6482    }
6483}
6484
6485#[derive(Debug)]
6486pub enum ConnectorEvent {
6487    #[non_exhaustive]
6488    _UnknownEvent {
6489        /// Ordinal of the event that was sent.
6490        ordinal: u64,
6491    },
6492}
6493
6494impl ConnectorEvent {
6495    /// Decodes a message buffer as a [`ConnectorEvent`].
6496    fn decode(
6497        mut buf: <fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc,
6498    ) -> Result<ConnectorEvent, fidl::Error> {
6499        let (bytes, _handles) = buf.split_mut();
6500        let (tx_header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
6501        debug_assert_eq!(tx_header.tx_id, 0);
6502        match tx_header.ordinal {
6503            _ if tx_header.dynamic_flags().contains(fidl::encoding::DynamicFlags::FLEXIBLE) => {
6504                Ok(ConnectorEvent::_UnknownEvent { ordinal: tx_header.ordinal })
6505            }
6506            _ => Err(fidl::Error::UnknownOrdinal {
6507                ordinal: tx_header.ordinal,
6508                protocol_name: <ConnectorMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
6509            }),
6510        }
6511    }
6512}
6513
6514/// A Stream of incoming requests for fuchsia.component.runtime/Connector.
6515pub struct ConnectorRequestStream {
6516    inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
6517    is_terminated: bool,
6518}
6519
6520impl std::marker::Unpin for ConnectorRequestStream {}
6521
6522impl futures::stream::FusedStream for ConnectorRequestStream {
6523    fn is_terminated(&self) -> bool {
6524        self.is_terminated
6525    }
6526}
6527
6528impl fidl::endpoints::RequestStream for ConnectorRequestStream {
6529    type Protocol = ConnectorMarker;
6530    type ControlHandle = ConnectorControlHandle;
6531
6532    fn from_channel(channel: ::fidl::AsyncChannel) -> Self {
6533        Self { inner: std::sync::Arc::new(fidl::ServeInner::new(channel)), is_terminated: false }
6534    }
6535
6536    fn control_handle(&self) -> Self::ControlHandle {
6537        ConnectorControlHandle { inner: self.inner.clone() }
6538    }
6539
6540    fn into_inner(
6541        self,
6542    ) -> (::std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>, bool)
6543    {
6544        (self.inner, self.is_terminated)
6545    }
6546
6547    fn from_inner(
6548        inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
6549        is_terminated: bool,
6550    ) -> Self {
6551        Self { inner, is_terminated }
6552    }
6553}
6554
6555impl futures::Stream for ConnectorRequestStream {
6556    type Item = Result<ConnectorRequest, fidl::Error>;
6557
6558    fn poll_next(
6559        mut self: std::pin::Pin<&mut Self>,
6560        cx: &mut std::task::Context<'_>,
6561    ) -> std::task::Poll<Option<Self::Item>> {
6562        let this = &mut *self;
6563        if this.inner.check_shutdown(cx) {
6564            this.is_terminated = true;
6565            return std::task::Poll::Ready(None);
6566        }
6567        if this.is_terminated {
6568            panic!("polled ConnectorRequestStream after completion");
6569        }
6570        fidl::encoding::with_tls_decode_buf::<_, fidl::encoding::DefaultFuchsiaResourceDialect>(
6571            |bytes, handles| {
6572                match this.inner.channel().read_etc(cx, bytes, handles) {
6573                    std::task::Poll::Ready(Ok(())) => {}
6574                    std::task::Poll::Pending => return std::task::Poll::Pending,
6575                    std::task::Poll::Ready(Err(zx_status::Status::PEER_CLOSED)) => {
6576                        this.is_terminated = true;
6577                        return std::task::Poll::Ready(None);
6578                    }
6579                    std::task::Poll::Ready(Err(e)) => {
6580                        return std::task::Poll::Ready(Some(Err(fidl::Error::ServerRequestRead(
6581                            e.into(),
6582                        ))));
6583                    }
6584                }
6585
6586                // A message has been received from the channel
6587                let (header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
6588
6589                std::task::Poll::Ready(Some(match header.ordinal {
6590                    0x20d8a7aba2168a79 => {
6591                        header.validate_request_tx_id(fidl::MethodType::OneWay)?;
6592                        let mut req = fidl::new_empty!(
6593                            fidl_fuchsia_unknown::CloneableCloneRequest,
6594                            fidl::encoding::DefaultFuchsiaResourceDialect
6595                        );
6596                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_unknown::CloneableCloneRequest>(&header, _body_bytes, handles, &mut req)?;
6597                        let control_handle = ConnectorControlHandle { inner: this.inner.clone() };
6598                        Ok(ConnectorRequest::Clone { request: req.request, control_handle })
6599                    }
6600                    0x1c0c1727bd474e02 => {
6601                        header.validate_request_tx_id(fidl::MethodType::OneWay)?;
6602                        let mut req = fidl::new_empty!(
6603                            ConnectorConnectRequest,
6604                            fidl::encoding::DefaultFuchsiaResourceDialect
6605                        );
6606                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<ConnectorConnectRequest>(&header, _body_bytes, handles, &mut req)?;
6607                        let control_handle = ConnectorControlHandle { inner: this.inner.clone() };
6608                        Ok(ConnectorRequest::Connect { channel: req.channel, control_handle })
6609                    }
6610                    _ if header.tx_id == 0
6611                        && header
6612                            .dynamic_flags()
6613                            .contains(fidl::encoding::DynamicFlags::FLEXIBLE) =>
6614                    {
6615                        Ok(ConnectorRequest::_UnknownMethod {
6616                            ordinal: header.ordinal,
6617                            control_handle: ConnectorControlHandle { inner: this.inner.clone() },
6618                            method_type: fidl::MethodType::OneWay,
6619                        })
6620                    }
6621                    _ if header
6622                        .dynamic_flags()
6623                        .contains(fidl::encoding::DynamicFlags::FLEXIBLE) =>
6624                    {
6625                        this.inner.send_framework_err(
6626                            fidl::encoding::FrameworkErr::UnknownMethod,
6627                            header.tx_id,
6628                            header.ordinal,
6629                            header.dynamic_flags(),
6630                            (bytes, handles),
6631                        )?;
6632                        Ok(ConnectorRequest::_UnknownMethod {
6633                            ordinal: header.ordinal,
6634                            control_handle: ConnectorControlHandle { inner: this.inner.clone() },
6635                            method_type: fidl::MethodType::TwoWay,
6636                        })
6637                    }
6638                    _ => Err(fidl::Error::UnknownOrdinal {
6639                        ordinal: header.ordinal,
6640                        protocol_name:
6641                            <ConnectorMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
6642                    }),
6643                }))
6644            },
6645        )
6646    }
6647}
6648
6649/// A `Connector` represents the sending end of a connection to a capability. A
6650/// `Connector` presents as a service node when inserted into a
6651/// `fuchsia.io.Directory`.
6652#[derive(Debug)]
6653pub enum ConnectorRequest {
6654    Clone {
6655        request: fidl::endpoints::ServerEnd<fidl_fuchsia_unknown::CloneableMarker>,
6656        control_handle: ConnectorControlHandle,
6657    },
6658    /// Sends a channel to the `Receiver` associated with this `Connector`.
6659    Connect { channel: fidl::Channel, control_handle: ConnectorControlHandle },
6660    /// An interaction was received which does not match any known method.
6661    #[non_exhaustive]
6662    _UnknownMethod {
6663        /// Ordinal of the method that was called.
6664        ordinal: u64,
6665        control_handle: ConnectorControlHandle,
6666        method_type: fidl::MethodType,
6667    },
6668}
6669
6670impl ConnectorRequest {
6671    #[allow(irrefutable_let_patterns)]
6672    pub fn into_clone(
6673        self,
6674    ) -> Option<(
6675        fidl::endpoints::ServerEnd<fidl_fuchsia_unknown::CloneableMarker>,
6676        ConnectorControlHandle,
6677    )> {
6678        if let ConnectorRequest::Clone { request, control_handle } = self {
6679            Some((request, control_handle))
6680        } else {
6681            None
6682        }
6683    }
6684
6685    #[allow(irrefutable_let_patterns)]
6686    pub fn into_connect(self) -> Option<(fidl::Channel, ConnectorControlHandle)> {
6687        if let ConnectorRequest::Connect { channel, control_handle } = self {
6688            Some((channel, control_handle))
6689        } else {
6690            None
6691        }
6692    }
6693
6694    /// Name of the method defined in FIDL
6695    pub fn method_name(&self) -> &'static str {
6696        match *self {
6697            ConnectorRequest::Clone { .. } => "clone",
6698            ConnectorRequest::Connect { .. } => "connect",
6699            ConnectorRequest::_UnknownMethod { method_type: fidl::MethodType::OneWay, .. } => {
6700                "unknown one-way method"
6701            }
6702            ConnectorRequest::_UnknownMethod { method_type: fidl::MethodType::TwoWay, .. } => {
6703                "unknown two-way method"
6704            }
6705        }
6706    }
6707}
6708
6709#[derive(Debug, Clone)]
6710pub struct ConnectorControlHandle {
6711    inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
6712}
6713
6714impl fidl::endpoints::ControlHandle for ConnectorControlHandle {
6715    fn shutdown(&self) {
6716        self.inner.shutdown()
6717    }
6718
6719    fn shutdown_with_epitaph(&self, status: zx_status::Status) {
6720        self.inner.shutdown_with_epitaph(status)
6721    }
6722
6723    fn is_closed(&self) -> bool {
6724        self.inner.channel().is_closed()
6725    }
6726    fn on_closed(&self) -> fidl::OnSignalsRef<'_> {
6727        self.inner.channel().on_closed()
6728    }
6729
6730    #[cfg(target_os = "fuchsia")]
6731    fn signal_peer(
6732        &self,
6733        clear_mask: zx::Signals,
6734        set_mask: zx::Signals,
6735    ) -> Result<(), zx_status::Status> {
6736        use fidl::Peered;
6737        self.inner.channel().signal_peer(clear_mask, set_mask)
6738    }
6739}
6740
6741impl ConnectorControlHandle {}
6742
6743#[derive(Debug, Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash)]
6744pub struct ConnectorRouterMarker;
6745
6746impl fidl::endpoints::ProtocolMarker for ConnectorRouterMarker {
6747    type Proxy = ConnectorRouterProxy;
6748    type RequestStream = ConnectorRouterRequestStream;
6749    #[cfg(target_os = "fuchsia")]
6750    type SynchronousProxy = ConnectorRouterSynchronousProxy;
6751
6752    const DEBUG_NAME: &'static str = "(anonymous) ConnectorRouter";
6753}
6754pub type ConnectorRouterRouteResult = Result<RouterResponse, RouterError>;
6755
6756pub trait ConnectorRouterProxyInterface: Send + Sync {
6757    type RouteResponseFut: std::future::Future<Output = Result<ConnectorRouterRouteResult, fidl::Error>>
6758        + Send;
6759    fn r#route(
6760        &self,
6761        request: RouteRequest,
6762        instance_token: fidl::EventPair,
6763        handle: fidl::EventPair,
6764    ) -> Self::RouteResponseFut;
6765}
6766#[derive(Debug)]
6767#[cfg(target_os = "fuchsia")]
6768pub struct ConnectorRouterSynchronousProxy {
6769    client: fidl::client::sync::Client,
6770}
6771
6772#[cfg(target_os = "fuchsia")]
6773impl fidl::endpoints::SynchronousProxy for ConnectorRouterSynchronousProxy {
6774    type Proxy = ConnectorRouterProxy;
6775    type Protocol = ConnectorRouterMarker;
6776
6777    fn from_channel(inner: fidl::Channel) -> Self {
6778        Self::new(inner)
6779    }
6780
6781    fn into_channel(self) -> fidl::Channel {
6782        self.client.into_channel()
6783    }
6784
6785    fn as_channel(&self) -> &fidl::Channel {
6786        self.client.as_channel()
6787    }
6788}
6789
6790#[cfg(target_os = "fuchsia")]
6791impl ConnectorRouterSynchronousProxy {
6792    pub fn new(channel: fidl::Channel) -> Self {
6793        let protocol_name = <ConnectorRouterMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
6794        Self { client: fidl::client::sync::Client::new(channel, protocol_name) }
6795    }
6796
6797    pub fn into_channel(self) -> fidl::Channel {
6798        self.client.into_channel()
6799    }
6800
6801    /// Waits until an event arrives and returns it. It is safe for other
6802    /// threads to make concurrent requests while waiting for an event.
6803    pub fn wait_for_event(
6804        &self,
6805        deadline: zx::MonotonicInstant,
6806    ) -> Result<ConnectorRouterEvent, fidl::Error> {
6807        ConnectorRouterEvent::decode(self.client.wait_for_event(deadline)?)
6808    }
6809
6810    /// Attempts to produce a `Connector` capability from this
6811    /// `ConnectorRouter`.
6812    ///
6813    /// `request` contains context for this route, and `instance_token`
6814    /// references the component that the routing operation is being performed
6815    /// for.
6816    ///
6817    /// This will return:
6818    ///
6819    /// - `SUCCESS` if `handle` has been associated with a connector.
6820    /// - `UNAVAILABLE` if the capability is unavailable, in which case `handle`
6821    ///   will be closed.
6822    /// - An error, if the operation failed.
6823    pub fn r#route(
6824        &self,
6825        mut request: RouteRequest,
6826        mut instance_token: fidl::EventPair,
6827        mut handle: fidl::EventPair,
6828        ___deadline: zx::MonotonicInstant,
6829    ) -> Result<ConnectorRouterRouteResult, fidl::Error> {
6830        let _response = self.client.send_query::<
6831            ConnectorRouterRouteRequest,
6832            fidl::encoding::FlexibleResultType<ConnectorRouterRouteResponse, RouterError>,
6833        >(
6834            (&mut request, instance_token, handle,),
6835            0x57a912c92a38f9f8,
6836            fidl::encoding::DynamicFlags::FLEXIBLE,
6837            ___deadline,
6838        )?
6839        .into_result::<ConnectorRouterMarker>("route")?;
6840        Ok(_response.map(|x| x.response))
6841    }
6842}
6843
6844#[cfg(target_os = "fuchsia")]
6845impl From<ConnectorRouterSynchronousProxy> for zx::NullableHandle {
6846    fn from(value: ConnectorRouterSynchronousProxy) -> Self {
6847        value.into_channel().into()
6848    }
6849}
6850
6851#[cfg(target_os = "fuchsia")]
6852impl From<fidl::Channel> for ConnectorRouterSynchronousProxy {
6853    fn from(value: fidl::Channel) -> Self {
6854        Self::new(value)
6855    }
6856}
6857
6858#[cfg(target_os = "fuchsia")]
6859impl fidl::endpoints::FromClient for ConnectorRouterSynchronousProxy {
6860    type Protocol = ConnectorRouterMarker;
6861
6862    fn from_client(value: fidl::endpoints::ClientEnd<ConnectorRouterMarker>) -> Self {
6863        Self::new(value.into_channel())
6864    }
6865}
6866
6867#[derive(Debug, Clone)]
6868pub struct ConnectorRouterProxy {
6869    client: fidl::client::Client<fidl::encoding::DefaultFuchsiaResourceDialect>,
6870}
6871
6872impl fidl::endpoints::Proxy for ConnectorRouterProxy {
6873    type Protocol = ConnectorRouterMarker;
6874
6875    fn from_channel(inner: ::fidl::AsyncChannel) -> Self {
6876        Self::new(inner)
6877    }
6878
6879    fn into_channel(self) -> Result<::fidl::AsyncChannel, Self> {
6880        self.client.into_channel().map_err(|client| Self { client })
6881    }
6882
6883    fn as_channel(&self) -> &::fidl::AsyncChannel {
6884        self.client.as_channel()
6885    }
6886}
6887
6888impl ConnectorRouterProxy {
6889    /// Create a new Proxy for fuchsia.component.runtime/ConnectorRouter.
6890    pub fn new(channel: ::fidl::AsyncChannel) -> Self {
6891        let protocol_name = <ConnectorRouterMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
6892        Self { client: fidl::client::Client::new(channel, protocol_name) }
6893    }
6894
6895    /// Get a Stream of events from the remote end of the protocol.
6896    ///
6897    /// # Panics
6898    ///
6899    /// Panics if the event stream was already taken.
6900    pub fn take_event_stream(&self) -> ConnectorRouterEventStream {
6901        ConnectorRouterEventStream { event_receiver: self.client.take_event_receiver() }
6902    }
6903
6904    /// Attempts to produce a `Connector` capability from this
6905    /// `ConnectorRouter`.
6906    ///
6907    /// `request` contains context for this route, and `instance_token`
6908    /// references the component that the routing operation is being performed
6909    /// for.
6910    ///
6911    /// This will return:
6912    ///
6913    /// - `SUCCESS` if `handle` has been associated with a connector.
6914    /// - `UNAVAILABLE` if the capability is unavailable, in which case `handle`
6915    ///   will be closed.
6916    /// - An error, if the operation failed.
6917    pub fn r#route(
6918        &self,
6919        mut request: RouteRequest,
6920        mut instance_token: fidl::EventPair,
6921        mut handle: fidl::EventPair,
6922    ) -> fidl::client::QueryResponseFut<
6923        ConnectorRouterRouteResult,
6924        fidl::encoding::DefaultFuchsiaResourceDialect,
6925    > {
6926        ConnectorRouterProxyInterface::r#route(self, request, instance_token, handle)
6927    }
6928}
6929
6930impl ConnectorRouterProxyInterface for ConnectorRouterProxy {
6931    type RouteResponseFut = fidl::client::QueryResponseFut<
6932        ConnectorRouterRouteResult,
6933        fidl::encoding::DefaultFuchsiaResourceDialect,
6934    >;
6935    fn r#route(
6936        &self,
6937        mut request: RouteRequest,
6938        mut instance_token: fidl::EventPair,
6939        mut handle: fidl::EventPair,
6940    ) -> Self::RouteResponseFut {
6941        fn _decode(
6942            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
6943        ) -> Result<ConnectorRouterRouteResult, fidl::Error> {
6944            let _response = fidl::client::decode_transaction_body::<
6945                fidl::encoding::FlexibleResultType<ConnectorRouterRouteResponse, RouterError>,
6946                fidl::encoding::DefaultFuchsiaResourceDialect,
6947                0x57a912c92a38f9f8,
6948            >(_buf?)?
6949            .into_result::<ConnectorRouterMarker>("route")?;
6950            Ok(_response.map(|x| x.response))
6951        }
6952        self.client
6953            .send_query_and_decode::<ConnectorRouterRouteRequest, ConnectorRouterRouteResult>(
6954                (&mut request, instance_token, handle),
6955                0x57a912c92a38f9f8,
6956                fidl::encoding::DynamicFlags::FLEXIBLE,
6957                _decode,
6958            )
6959    }
6960}
6961
6962pub struct ConnectorRouterEventStream {
6963    event_receiver: fidl::client::EventReceiver<fidl::encoding::DefaultFuchsiaResourceDialect>,
6964}
6965
6966impl std::marker::Unpin for ConnectorRouterEventStream {}
6967
6968impl futures::stream::FusedStream for ConnectorRouterEventStream {
6969    fn is_terminated(&self) -> bool {
6970        self.event_receiver.is_terminated()
6971    }
6972}
6973
6974impl futures::Stream for ConnectorRouterEventStream {
6975    type Item = Result<ConnectorRouterEvent, fidl::Error>;
6976
6977    fn poll_next(
6978        mut self: std::pin::Pin<&mut Self>,
6979        cx: &mut std::task::Context<'_>,
6980    ) -> std::task::Poll<Option<Self::Item>> {
6981        match futures::ready!(futures::stream::StreamExt::poll_next_unpin(
6982            &mut self.event_receiver,
6983            cx
6984        )?) {
6985            Some(buf) => std::task::Poll::Ready(Some(ConnectorRouterEvent::decode(buf))),
6986            None => std::task::Poll::Ready(None),
6987        }
6988    }
6989}
6990
6991#[derive(Debug)]
6992pub enum ConnectorRouterEvent {
6993    #[non_exhaustive]
6994    _UnknownEvent {
6995        /// Ordinal of the event that was sent.
6996        ordinal: u64,
6997    },
6998}
6999
7000impl ConnectorRouterEvent {
7001    /// Decodes a message buffer as a [`ConnectorRouterEvent`].
7002    fn decode(
7003        mut buf: <fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc,
7004    ) -> Result<ConnectorRouterEvent, fidl::Error> {
7005        let (bytes, _handles) = buf.split_mut();
7006        let (tx_header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
7007        debug_assert_eq!(tx_header.tx_id, 0);
7008        match tx_header.ordinal {
7009            _ if tx_header.dynamic_flags().contains(fidl::encoding::DynamicFlags::FLEXIBLE) => {
7010                Ok(ConnectorRouterEvent::_UnknownEvent { ordinal: tx_header.ordinal })
7011            }
7012            _ => Err(fidl::Error::UnknownOrdinal {
7013                ordinal: tx_header.ordinal,
7014                protocol_name:
7015                    <ConnectorRouterMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
7016            }),
7017        }
7018    }
7019}
7020
7021/// A Stream of incoming requests for fuchsia.component.runtime/ConnectorRouter.
7022pub struct ConnectorRouterRequestStream {
7023    inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
7024    is_terminated: bool,
7025}
7026
7027impl std::marker::Unpin for ConnectorRouterRequestStream {}
7028
7029impl futures::stream::FusedStream for ConnectorRouterRequestStream {
7030    fn is_terminated(&self) -> bool {
7031        self.is_terminated
7032    }
7033}
7034
7035impl fidl::endpoints::RequestStream for ConnectorRouterRequestStream {
7036    type Protocol = ConnectorRouterMarker;
7037    type ControlHandle = ConnectorRouterControlHandle;
7038
7039    fn from_channel(channel: ::fidl::AsyncChannel) -> Self {
7040        Self { inner: std::sync::Arc::new(fidl::ServeInner::new(channel)), is_terminated: false }
7041    }
7042
7043    fn control_handle(&self) -> Self::ControlHandle {
7044        ConnectorRouterControlHandle { inner: self.inner.clone() }
7045    }
7046
7047    fn into_inner(
7048        self,
7049    ) -> (::std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>, bool)
7050    {
7051        (self.inner, self.is_terminated)
7052    }
7053
7054    fn from_inner(
7055        inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
7056        is_terminated: bool,
7057    ) -> Self {
7058        Self { inner, is_terminated }
7059    }
7060}
7061
7062impl futures::Stream for ConnectorRouterRequestStream {
7063    type Item = Result<ConnectorRouterRequest, fidl::Error>;
7064
7065    fn poll_next(
7066        mut self: std::pin::Pin<&mut Self>,
7067        cx: &mut std::task::Context<'_>,
7068    ) -> std::task::Poll<Option<Self::Item>> {
7069        let this = &mut *self;
7070        if this.inner.check_shutdown(cx) {
7071            this.is_terminated = true;
7072            return std::task::Poll::Ready(None);
7073        }
7074        if this.is_terminated {
7075            panic!("polled ConnectorRouterRequestStream after completion");
7076        }
7077        fidl::encoding::with_tls_decode_buf::<_, fidl::encoding::DefaultFuchsiaResourceDialect>(
7078            |bytes, handles| {
7079                match this.inner.channel().read_etc(cx, bytes, handles) {
7080                    std::task::Poll::Ready(Ok(())) => {}
7081                    std::task::Poll::Pending => return std::task::Poll::Pending,
7082                    std::task::Poll::Ready(Err(zx_status::Status::PEER_CLOSED)) => {
7083                        this.is_terminated = true;
7084                        return std::task::Poll::Ready(None);
7085                    }
7086                    std::task::Poll::Ready(Err(e)) => {
7087                        return std::task::Poll::Ready(Some(Err(fidl::Error::ServerRequestRead(
7088                            e.into(),
7089                        ))));
7090                    }
7091                }
7092
7093                // A message has been received from the channel
7094                let (header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
7095
7096                std::task::Poll::Ready(Some(match header.ordinal {
7097                    0x57a912c92a38f9f8 => {
7098                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7099                        let mut req = fidl::new_empty!(
7100                            ConnectorRouterRouteRequest,
7101                            fidl::encoding::DefaultFuchsiaResourceDialect
7102                        );
7103                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<ConnectorRouterRouteRequest>(&header, _body_bytes, handles, &mut req)?;
7104                        let control_handle =
7105                            ConnectorRouterControlHandle { inner: this.inner.clone() };
7106                        Ok(ConnectorRouterRequest::Route {
7107                            request: req.request,
7108                            instance_token: req.instance_token,
7109                            handle: req.handle,
7110
7111                            responder: ConnectorRouterRouteResponder {
7112                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7113                                tx_id: header.tx_id,
7114                            },
7115                        })
7116                    }
7117                    _ if header.tx_id == 0
7118                        && header
7119                            .dynamic_flags()
7120                            .contains(fidl::encoding::DynamicFlags::FLEXIBLE) =>
7121                    {
7122                        Ok(ConnectorRouterRequest::_UnknownMethod {
7123                            ordinal: header.ordinal,
7124                            control_handle: ConnectorRouterControlHandle {
7125                                inner: this.inner.clone(),
7126                            },
7127                            method_type: fidl::MethodType::OneWay,
7128                        })
7129                    }
7130                    _ if header
7131                        .dynamic_flags()
7132                        .contains(fidl::encoding::DynamicFlags::FLEXIBLE) =>
7133                    {
7134                        this.inner.send_framework_err(
7135                            fidl::encoding::FrameworkErr::UnknownMethod,
7136                            header.tx_id,
7137                            header.ordinal,
7138                            header.dynamic_flags(),
7139                            (bytes, handles),
7140                        )?;
7141                        Ok(ConnectorRouterRequest::_UnknownMethod {
7142                            ordinal: header.ordinal,
7143                            control_handle: ConnectorRouterControlHandle {
7144                                inner: this.inner.clone(),
7145                            },
7146                            method_type: fidl::MethodType::TwoWay,
7147                        })
7148                    }
7149                    _ => Err(fidl::Error::UnknownOrdinal {
7150                        ordinal: header.ordinal,
7151                        protocol_name:
7152                            <ConnectorRouterMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
7153                    }),
7154                }))
7155            },
7156        )
7157    }
7158}
7159
7160/// A factory for `Connector` capabilities.
7161#[derive(Debug)]
7162pub enum ConnectorRouterRequest {
7163    /// Attempts to produce a `Connector` capability from this
7164    /// `ConnectorRouter`.
7165    ///
7166    /// `request` contains context for this route, and `instance_token`
7167    /// references the component that the routing operation is being performed
7168    /// for.
7169    ///
7170    /// This will return:
7171    ///
7172    /// - `SUCCESS` if `handle` has been associated with a connector.
7173    /// - `UNAVAILABLE` if the capability is unavailable, in which case `handle`
7174    ///   will be closed.
7175    /// - An error, if the operation failed.
7176    Route {
7177        request: RouteRequest,
7178        instance_token: fidl::EventPair,
7179        handle: fidl::EventPair,
7180        responder: ConnectorRouterRouteResponder,
7181    },
7182    /// An interaction was received which does not match any known method.
7183    #[non_exhaustive]
7184    _UnknownMethod {
7185        /// Ordinal of the method that was called.
7186        ordinal: u64,
7187        control_handle: ConnectorRouterControlHandle,
7188        method_type: fidl::MethodType,
7189    },
7190}
7191
7192impl ConnectorRouterRequest {
7193    #[allow(irrefutable_let_patterns)]
7194    pub fn into_route(
7195        self,
7196    ) -> Option<(RouteRequest, fidl::EventPair, fidl::EventPair, ConnectorRouterRouteResponder)>
7197    {
7198        if let ConnectorRouterRequest::Route { request, instance_token, handle, responder } = self {
7199            Some((request, instance_token, handle, responder))
7200        } else {
7201            None
7202        }
7203    }
7204
7205    /// Name of the method defined in FIDL
7206    pub fn method_name(&self) -> &'static str {
7207        match *self {
7208            ConnectorRouterRequest::Route { .. } => "route",
7209            ConnectorRouterRequest::_UnknownMethod {
7210                method_type: fidl::MethodType::OneWay,
7211                ..
7212            } => "unknown one-way method",
7213            ConnectorRouterRequest::_UnknownMethod {
7214                method_type: fidl::MethodType::TwoWay,
7215                ..
7216            } => "unknown two-way method",
7217        }
7218    }
7219}
7220
7221#[derive(Debug, Clone)]
7222pub struct ConnectorRouterControlHandle {
7223    inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
7224}
7225
7226impl fidl::endpoints::ControlHandle for ConnectorRouterControlHandle {
7227    fn shutdown(&self) {
7228        self.inner.shutdown()
7229    }
7230
7231    fn shutdown_with_epitaph(&self, status: zx_status::Status) {
7232        self.inner.shutdown_with_epitaph(status)
7233    }
7234
7235    fn is_closed(&self) -> bool {
7236        self.inner.channel().is_closed()
7237    }
7238    fn on_closed(&self) -> fidl::OnSignalsRef<'_> {
7239        self.inner.channel().on_closed()
7240    }
7241
7242    #[cfg(target_os = "fuchsia")]
7243    fn signal_peer(
7244        &self,
7245        clear_mask: zx::Signals,
7246        set_mask: zx::Signals,
7247    ) -> Result<(), zx_status::Status> {
7248        use fidl::Peered;
7249        self.inner.channel().signal_peer(clear_mask, set_mask)
7250    }
7251}
7252
7253impl ConnectorRouterControlHandle {}
7254
7255#[must_use = "FIDL methods require a response to be sent"]
7256#[derive(Debug)]
7257pub struct ConnectorRouterRouteResponder {
7258    control_handle: std::mem::ManuallyDrop<ConnectorRouterControlHandle>,
7259    tx_id: u32,
7260}
7261
7262/// Set the the channel to be shutdown (see [`ConnectorRouterControlHandle::shutdown`])
7263/// if the responder is dropped without sending a response, so that the client
7264/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
7265impl std::ops::Drop for ConnectorRouterRouteResponder {
7266    fn drop(&mut self) {
7267        self.control_handle.shutdown();
7268        // Safety: drops once, never accessed again
7269        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
7270    }
7271}
7272
7273impl fidl::endpoints::Responder for ConnectorRouterRouteResponder {
7274    type ControlHandle = ConnectorRouterControlHandle;
7275
7276    fn control_handle(&self) -> &ConnectorRouterControlHandle {
7277        &self.control_handle
7278    }
7279
7280    fn drop_without_shutdown(mut self) {
7281        // Safety: drops once, never accessed again due to mem::forget
7282        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
7283        // Prevent Drop from running (which would shut down the channel)
7284        std::mem::forget(self);
7285    }
7286}
7287
7288impl ConnectorRouterRouteResponder {
7289    /// Sends a response to the FIDL transaction.
7290    ///
7291    /// Sets the channel to shutdown if an error occurs.
7292    pub fn send(self, mut result: Result<RouterResponse, RouterError>) -> Result<(), fidl::Error> {
7293        let _result = self.send_raw(result);
7294        if _result.is_err() {
7295            self.control_handle.shutdown();
7296        }
7297        self.drop_without_shutdown();
7298        _result
7299    }
7300
7301    /// Similar to "send" but does not shutdown the channel if an error occurs.
7302    pub fn send_no_shutdown_on_err(
7303        self,
7304        mut result: Result<RouterResponse, RouterError>,
7305    ) -> Result<(), fidl::Error> {
7306        let _result = self.send_raw(result);
7307        self.drop_without_shutdown();
7308        _result
7309    }
7310
7311    fn send_raw(&self, mut result: Result<RouterResponse, RouterError>) -> Result<(), fidl::Error> {
7312        self.control_handle.inner.send::<fidl::encoding::FlexibleResultType<
7313            ConnectorRouterRouteResponse,
7314            RouterError,
7315        >>(
7316            fidl::encoding::FlexibleResult::new(result.map(|response| (response,))),
7317            self.tx_id,
7318            0x57a912c92a38f9f8,
7319            fidl::encoding::DynamicFlags::FLEXIBLE,
7320        )
7321    }
7322}
7323
7324#[derive(Debug, Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash)]
7325pub struct ConnectorRouterDeprecatedMarker;
7326
7327impl fidl::endpoints::ProtocolMarker for ConnectorRouterDeprecatedMarker {
7328    type Proxy = ConnectorRouterDeprecatedProxy;
7329    type RequestStream = ConnectorRouterDeprecatedRequestStream;
7330    #[cfg(target_os = "fuchsia")]
7331    type SynchronousProxy = ConnectorRouterDeprecatedSynchronousProxy;
7332
7333    const DEBUG_NAME: &'static str = "(anonymous) ConnectorRouterDeprecated";
7334}
7335pub type ConnectorRouterDeprecatedRouteResult = Result<RouterResponse, RouterError>;
7336
7337pub trait ConnectorRouterDeprecatedProxyInterface: Send + Sync {
7338    fn r#clone(
7339        &self,
7340        request: fidl::endpoints::ServerEnd<fidl_fuchsia_unknown::CloneableMarker>,
7341    ) -> Result<(), fidl::Error>;
7342    type RouteResponseFut: std::future::Future<Output = Result<ConnectorRouterDeprecatedRouteResult, fidl::Error>>
7343        + Send;
7344    fn r#route(
7345        &self,
7346        request: DeprecatedRouteRequest,
7347        connector_server_end: fidl::endpoints::ServerEnd<ConnectorMarker>,
7348    ) -> Self::RouteResponseFut;
7349}
7350#[derive(Debug)]
7351#[cfg(target_os = "fuchsia")]
7352pub struct ConnectorRouterDeprecatedSynchronousProxy {
7353    client: fidl::client::sync::Client,
7354}
7355
7356#[cfg(target_os = "fuchsia")]
7357impl fidl::endpoints::SynchronousProxy for ConnectorRouterDeprecatedSynchronousProxy {
7358    type Proxy = ConnectorRouterDeprecatedProxy;
7359    type Protocol = ConnectorRouterDeprecatedMarker;
7360
7361    fn from_channel(inner: fidl::Channel) -> Self {
7362        Self::new(inner)
7363    }
7364
7365    fn into_channel(self) -> fidl::Channel {
7366        self.client.into_channel()
7367    }
7368
7369    fn as_channel(&self) -> &fidl::Channel {
7370        self.client.as_channel()
7371    }
7372}
7373
7374#[cfg(target_os = "fuchsia")]
7375impl ConnectorRouterDeprecatedSynchronousProxy {
7376    pub fn new(channel: fidl::Channel) -> Self {
7377        let protocol_name =
7378            <ConnectorRouterDeprecatedMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
7379        Self { client: fidl::client::sync::Client::new(channel, protocol_name) }
7380    }
7381
7382    pub fn into_channel(self) -> fidl::Channel {
7383        self.client.into_channel()
7384    }
7385
7386    /// Waits until an event arrives and returns it. It is safe for other
7387    /// threads to make concurrent requests while waiting for an event.
7388    pub fn wait_for_event(
7389        &self,
7390        deadline: zx::MonotonicInstant,
7391    ) -> Result<ConnectorRouterDeprecatedEvent, fidl::Error> {
7392        ConnectorRouterDeprecatedEvent::decode(self.client.wait_for_event(deadline)?)
7393    }
7394
7395    pub fn r#clone(
7396        &self,
7397        mut request: fidl::endpoints::ServerEnd<fidl_fuchsia_unknown::CloneableMarker>,
7398    ) -> Result<(), fidl::Error> {
7399        self.client.send::<fidl_fuchsia_unknown::CloneableCloneRequest>(
7400            (request,),
7401            0x20d8a7aba2168a79,
7402            fidl::encoding::DynamicFlags::empty(),
7403        )
7404    }
7405
7406    /// Attempts to produce a `Connector` capability from this
7407    /// `ConnectorRouter`. This will return:
7408    ///
7409    /// - A `Connector` if the operation is successful.
7410    /// - An empty value if there is no issue found but the capability is not
7411    ///   being provided (for example, an optional route ended in an offer from
7412    ///   void).
7413    /// - An error, if the operation failed.
7414    pub fn r#route(
7415        &self,
7416        mut request: DeprecatedRouteRequest,
7417        mut connector_server_end: fidl::endpoints::ServerEnd<ConnectorMarker>,
7418        ___deadline: zx::MonotonicInstant,
7419    ) -> Result<ConnectorRouterDeprecatedRouteResult, fidl::Error> {
7420        let _response = self.client.send_query::<
7421            ConnectorRouterDeprecatedRouteRequest,
7422            fidl::encoding::FlexibleResultType<ConnectorRouterDeprecatedRouteResponse, RouterError>,
7423        >(
7424            (&mut request, connector_server_end,),
7425            0x1b7810fe6a37ff32,
7426            fidl::encoding::DynamicFlags::FLEXIBLE,
7427            ___deadline,
7428        )?
7429        .into_result::<ConnectorRouterDeprecatedMarker>("route")?;
7430        Ok(_response.map(|x| x.response))
7431    }
7432}
7433
7434#[cfg(target_os = "fuchsia")]
7435impl From<ConnectorRouterDeprecatedSynchronousProxy> for zx::NullableHandle {
7436    fn from(value: ConnectorRouterDeprecatedSynchronousProxy) -> Self {
7437        value.into_channel().into()
7438    }
7439}
7440
7441#[cfg(target_os = "fuchsia")]
7442impl From<fidl::Channel> for ConnectorRouterDeprecatedSynchronousProxy {
7443    fn from(value: fidl::Channel) -> Self {
7444        Self::new(value)
7445    }
7446}
7447
7448#[cfg(target_os = "fuchsia")]
7449impl fidl::endpoints::FromClient for ConnectorRouterDeprecatedSynchronousProxy {
7450    type Protocol = ConnectorRouterDeprecatedMarker;
7451
7452    fn from_client(value: fidl::endpoints::ClientEnd<ConnectorRouterDeprecatedMarker>) -> Self {
7453        Self::new(value.into_channel())
7454    }
7455}
7456
7457#[derive(Debug, Clone)]
7458pub struct ConnectorRouterDeprecatedProxy {
7459    client: fidl::client::Client<fidl::encoding::DefaultFuchsiaResourceDialect>,
7460}
7461
7462impl fidl::endpoints::Proxy for ConnectorRouterDeprecatedProxy {
7463    type Protocol = ConnectorRouterDeprecatedMarker;
7464
7465    fn from_channel(inner: ::fidl::AsyncChannel) -> Self {
7466        Self::new(inner)
7467    }
7468
7469    fn into_channel(self) -> Result<::fidl::AsyncChannel, Self> {
7470        self.client.into_channel().map_err(|client| Self { client })
7471    }
7472
7473    fn as_channel(&self) -> &::fidl::AsyncChannel {
7474        self.client.as_channel()
7475    }
7476}
7477
7478impl ConnectorRouterDeprecatedProxy {
7479    /// Create a new Proxy for fuchsia.component.runtime/ConnectorRouterDeprecated.
7480    pub fn new(channel: ::fidl::AsyncChannel) -> Self {
7481        let protocol_name =
7482            <ConnectorRouterDeprecatedMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
7483        Self { client: fidl::client::Client::new(channel, protocol_name) }
7484    }
7485
7486    /// Get a Stream of events from the remote end of the protocol.
7487    ///
7488    /// # Panics
7489    ///
7490    /// Panics if the event stream was already taken.
7491    pub fn take_event_stream(&self) -> ConnectorRouterDeprecatedEventStream {
7492        ConnectorRouterDeprecatedEventStream { event_receiver: self.client.take_event_receiver() }
7493    }
7494
7495    pub fn r#clone(
7496        &self,
7497        mut request: fidl::endpoints::ServerEnd<fidl_fuchsia_unknown::CloneableMarker>,
7498    ) -> Result<(), fidl::Error> {
7499        ConnectorRouterDeprecatedProxyInterface::r#clone(self, request)
7500    }
7501
7502    /// Attempts to produce a `Connector` capability from this
7503    /// `ConnectorRouter`. This will return:
7504    ///
7505    /// - A `Connector` if the operation is successful.
7506    /// - An empty value if there is no issue found but the capability is not
7507    ///   being provided (for example, an optional route ended in an offer from
7508    ///   void).
7509    /// - An error, if the operation failed.
7510    pub fn r#route(
7511        &self,
7512        mut request: DeprecatedRouteRequest,
7513        mut connector_server_end: fidl::endpoints::ServerEnd<ConnectorMarker>,
7514    ) -> fidl::client::QueryResponseFut<
7515        ConnectorRouterDeprecatedRouteResult,
7516        fidl::encoding::DefaultFuchsiaResourceDialect,
7517    > {
7518        ConnectorRouterDeprecatedProxyInterface::r#route(self, request, connector_server_end)
7519    }
7520}
7521
7522impl ConnectorRouterDeprecatedProxyInterface for ConnectorRouterDeprecatedProxy {
7523    fn r#clone(
7524        &self,
7525        mut request: fidl::endpoints::ServerEnd<fidl_fuchsia_unknown::CloneableMarker>,
7526    ) -> Result<(), fidl::Error> {
7527        self.client.send::<fidl_fuchsia_unknown::CloneableCloneRequest>(
7528            (request,),
7529            0x20d8a7aba2168a79,
7530            fidl::encoding::DynamicFlags::empty(),
7531        )
7532    }
7533
7534    type RouteResponseFut = fidl::client::QueryResponseFut<
7535        ConnectorRouterDeprecatedRouteResult,
7536        fidl::encoding::DefaultFuchsiaResourceDialect,
7537    >;
7538    fn r#route(
7539        &self,
7540        mut request: DeprecatedRouteRequest,
7541        mut connector_server_end: fidl::endpoints::ServerEnd<ConnectorMarker>,
7542    ) -> Self::RouteResponseFut {
7543        fn _decode(
7544            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
7545        ) -> Result<ConnectorRouterDeprecatedRouteResult, fidl::Error> {
7546            let _response = fidl::client::decode_transaction_body::<
7547                fidl::encoding::FlexibleResultType<
7548                    ConnectorRouterDeprecatedRouteResponse,
7549                    RouterError,
7550                >,
7551                fidl::encoding::DefaultFuchsiaResourceDialect,
7552                0x1b7810fe6a37ff32,
7553            >(_buf?)?
7554            .into_result::<ConnectorRouterDeprecatedMarker>("route")?;
7555            Ok(_response.map(|x| x.response))
7556        }
7557        self.client.send_query_and_decode::<
7558            ConnectorRouterDeprecatedRouteRequest,
7559            ConnectorRouterDeprecatedRouteResult,
7560        >(
7561            (&mut request, connector_server_end,),
7562            0x1b7810fe6a37ff32,
7563            fidl::encoding::DynamicFlags::FLEXIBLE,
7564            _decode,
7565        )
7566    }
7567}
7568
7569pub struct ConnectorRouterDeprecatedEventStream {
7570    event_receiver: fidl::client::EventReceiver<fidl::encoding::DefaultFuchsiaResourceDialect>,
7571}
7572
7573impl std::marker::Unpin for ConnectorRouterDeprecatedEventStream {}
7574
7575impl futures::stream::FusedStream for ConnectorRouterDeprecatedEventStream {
7576    fn is_terminated(&self) -> bool {
7577        self.event_receiver.is_terminated()
7578    }
7579}
7580
7581impl futures::Stream for ConnectorRouterDeprecatedEventStream {
7582    type Item = Result<ConnectorRouterDeprecatedEvent, fidl::Error>;
7583
7584    fn poll_next(
7585        mut self: std::pin::Pin<&mut Self>,
7586        cx: &mut std::task::Context<'_>,
7587    ) -> std::task::Poll<Option<Self::Item>> {
7588        match futures::ready!(futures::stream::StreamExt::poll_next_unpin(
7589            &mut self.event_receiver,
7590            cx
7591        )?) {
7592            Some(buf) => std::task::Poll::Ready(Some(ConnectorRouterDeprecatedEvent::decode(buf))),
7593            None => std::task::Poll::Ready(None),
7594        }
7595    }
7596}
7597
7598#[derive(Debug)]
7599pub enum ConnectorRouterDeprecatedEvent {
7600    #[non_exhaustive]
7601    _UnknownEvent {
7602        /// Ordinal of the event that was sent.
7603        ordinal: u64,
7604    },
7605}
7606
7607impl ConnectorRouterDeprecatedEvent {
7608    /// Decodes a message buffer as a [`ConnectorRouterDeprecatedEvent`].
7609    fn decode(
7610        mut buf: <fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc,
7611    ) -> Result<ConnectorRouterDeprecatedEvent, fidl::Error> {
7612        let (bytes, _handles) = buf.split_mut();
7613        let (tx_header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
7614        debug_assert_eq!(tx_header.tx_id, 0);
7615        match tx_header.ordinal {
7616            _ if tx_header.dynamic_flags().contains(fidl::encoding::DynamicFlags::FLEXIBLE) => {
7617                Ok(ConnectorRouterDeprecatedEvent::_UnknownEvent { ordinal: tx_header.ordinal })
7618            }
7619            _ => Err(fidl::Error::UnknownOrdinal {
7620                ordinal: tx_header.ordinal,
7621                protocol_name:
7622                    <ConnectorRouterDeprecatedMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
7623            }),
7624        }
7625    }
7626}
7627
7628/// A Stream of incoming requests for fuchsia.component.runtime/ConnectorRouterDeprecated.
7629pub struct ConnectorRouterDeprecatedRequestStream {
7630    inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
7631    is_terminated: bool,
7632}
7633
7634impl std::marker::Unpin for ConnectorRouterDeprecatedRequestStream {}
7635
7636impl futures::stream::FusedStream for ConnectorRouterDeprecatedRequestStream {
7637    fn is_terminated(&self) -> bool {
7638        self.is_terminated
7639    }
7640}
7641
7642impl fidl::endpoints::RequestStream for ConnectorRouterDeprecatedRequestStream {
7643    type Protocol = ConnectorRouterDeprecatedMarker;
7644    type ControlHandle = ConnectorRouterDeprecatedControlHandle;
7645
7646    fn from_channel(channel: ::fidl::AsyncChannel) -> Self {
7647        Self { inner: std::sync::Arc::new(fidl::ServeInner::new(channel)), is_terminated: false }
7648    }
7649
7650    fn control_handle(&self) -> Self::ControlHandle {
7651        ConnectorRouterDeprecatedControlHandle { inner: self.inner.clone() }
7652    }
7653
7654    fn into_inner(
7655        self,
7656    ) -> (::std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>, bool)
7657    {
7658        (self.inner, self.is_terminated)
7659    }
7660
7661    fn from_inner(
7662        inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
7663        is_terminated: bool,
7664    ) -> Self {
7665        Self { inner, is_terminated }
7666    }
7667}
7668
7669impl futures::Stream for ConnectorRouterDeprecatedRequestStream {
7670    type Item = Result<ConnectorRouterDeprecatedRequest, fidl::Error>;
7671
7672    fn poll_next(
7673        mut self: std::pin::Pin<&mut Self>,
7674        cx: &mut std::task::Context<'_>,
7675    ) -> std::task::Poll<Option<Self::Item>> {
7676        let this = &mut *self;
7677        if this.inner.check_shutdown(cx) {
7678            this.is_terminated = true;
7679            return std::task::Poll::Ready(None);
7680        }
7681        if this.is_terminated {
7682            panic!("polled ConnectorRouterDeprecatedRequestStream after completion");
7683        }
7684        fidl::encoding::with_tls_decode_buf::<_, fidl::encoding::DefaultFuchsiaResourceDialect>(
7685            |bytes, handles| {
7686                match this.inner.channel().read_etc(cx, bytes, handles) {
7687                    std::task::Poll::Ready(Ok(())) => {}
7688                    std::task::Poll::Pending => return std::task::Poll::Pending,
7689                    std::task::Poll::Ready(Err(zx_status::Status::PEER_CLOSED)) => {
7690                        this.is_terminated = true;
7691                        return std::task::Poll::Ready(None);
7692                    }
7693                    std::task::Poll::Ready(Err(e)) => {
7694                        return std::task::Poll::Ready(Some(Err(fidl::Error::ServerRequestRead(
7695                            e.into(),
7696                        ))));
7697                    }
7698                }
7699
7700                // A message has been received from the channel
7701                let (header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
7702
7703                std::task::Poll::Ready(Some(match header.ordinal {
7704                0x20d8a7aba2168a79 => {
7705                    header.validate_request_tx_id(fidl::MethodType::OneWay)?;
7706                    let mut req = fidl::new_empty!(fidl_fuchsia_unknown::CloneableCloneRequest, fidl::encoding::DefaultFuchsiaResourceDialect);
7707                    fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_unknown::CloneableCloneRequest>(&header, _body_bytes, handles, &mut req)?;
7708                    let control_handle = ConnectorRouterDeprecatedControlHandle {
7709                        inner: this.inner.clone(),
7710                    };
7711                    Ok(ConnectorRouterDeprecatedRequest::Clone {request: req.request,
7712
7713                        control_handle,
7714                    })
7715                }
7716                0x1b7810fe6a37ff32 => {
7717                    header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7718                    let mut req = fidl::new_empty!(ConnectorRouterDeprecatedRouteRequest, fidl::encoding::DefaultFuchsiaResourceDialect);
7719                    fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<ConnectorRouterDeprecatedRouteRequest>(&header, _body_bytes, handles, &mut req)?;
7720                    let control_handle = ConnectorRouterDeprecatedControlHandle {
7721                        inner: this.inner.clone(),
7722                    };
7723                    Ok(ConnectorRouterDeprecatedRequest::Route {request: req.request,
7724connector_server_end: req.connector_server_end,
7725
7726                        responder: ConnectorRouterDeprecatedRouteResponder {
7727                            control_handle: std::mem::ManuallyDrop::new(control_handle),
7728                            tx_id: header.tx_id,
7729                        },
7730                    })
7731                }
7732                _ if header.tx_id == 0 && header.dynamic_flags().contains(fidl::encoding::DynamicFlags::FLEXIBLE) => {
7733                    Ok(ConnectorRouterDeprecatedRequest::_UnknownMethod {
7734                        ordinal: header.ordinal,
7735                        control_handle: ConnectorRouterDeprecatedControlHandle { inner: this.inner.clone() },
7736                        method_type: fidl::MethodType::OneWay,
7737                    })
7738                }
7739                _ if header.dynamic_flags().contains(fidl::encoding::DynamicFlags::FLEXIBLE) => {
7740                    this.inner.send_framework_err(
7741                        fidl::encoding::FrameworkErr::UnknownMethod,
7742                        header.tx_id,
7743                        header.ordinal,
7744                        header.dynamic_flags(),
7745                        (bytes, handles),
7746                    )?;
7747                    Ok(ConnectorRouterDeprecatedRequest::_UnknownMethod {
7748                        ordinal: header.ordinal,
7749                        control_handle: ConnectorRouterDeprecatedControlHandle { inner: this.inner.clone() },
7750                        method_type: fidl::MethodType::TwoWay,
7751                    })
7752                }
7753                _ => Err(fidl::Error::UnknownOrdinal {
7754                    ordinal: header.ordinal,
7755                    protocol_name: <ConnectorRouterDeprecatedMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
7756                }),
7757            }))
7758            },
7759        )
7760    }
7761}
7762
7763/// A factory for `Connector` capabilities.
7764#[derive(Debug)]
7765pub enum ConnectorRouterDeprecatedRequest {
7766    Clone {
7767        request: fidl::endpoints::ServerEnd<fidl_fuchsia_unknown::CloneableMarker>,
7768        control_handle: ConnectorRouterDeprecatedControlHandle,
7769    },
7770    /// Attempts to produce a `Connector` capability from this
7771    /// `ConnectorRouter`. This will return:
7772    ///
7773    /// - A `Connector` if the operation is successful.
7774    /// - An empty value if there is no issue found but the capability is not
7775    ///   being provided (for example, an optional route ended in an offer from
7776    ///   void).
7777    /// - An error, if the operation failed.
7778    Route {
7779        request: DeprecatedRouteRequest,
7780        connector_server_end: fidl::endpoints::ServerEnd<ConnectorMarker>,
7781        responder: ConnectorRouterDeprecatedRouteResponder,
7782    },
7783    /// An interaction was received which does not match any known method.
7784    #[non_exhaustive]
7785    _UnknownMethod {
7786        /// Ordinal of the method that was called.
7787        ordinal: u64,
7788        control_handle: ConnectorRouterDeprecatedControlHandle,
7789        method_type: fidl::MethodType,
7790    },
7791}
7792
7793impl ConnectorRouterDeprecatedRequest {
7794    #[allow(irrefutable_let_patterns)]
7795    pub fn into_clone(
7796        self,
7797    ) -> Option<(
7798        fidl::endpoints::ServerEnd<fidl_fuchsia_unknown::CloneableMarker>,
7799        ConnectorRouterDeprecatedControlHandle,
7800    )> {
7801        if let ConnectorRouterDeprecatedRequest::Clone { request, control_handle } = self {
7802            Some((request, control_handle))
7803        } else {
7804            None
7805        }
7806    }
7807
7808    #[allow(irrefutable_let_patterns)]
7809    pub fn into_route(
7810        self,
7811    ) -> Option<(
7812        DeprecatedRouteRequest,
7813        fidl::endpoints::ServerEnd<ConnectorMarker>,
7814        ConnectorRouterDeprecatedRouteResponder,
7815    )> {
7816        if let ConnectorRouterDeprecatedRequest::Route {
7817            request,
7818            connector_server_end,
7819            responder,
7820        } = self
7821        {
7822            Some((request, connector_server_end, responder))
7823        } else {
7824            None
7825        }
7826    }
7827
7828    /// Name of the method defined in FIDL
7829    pub fn method_name(&self) -> &'static str {
7830        match *self {
7831            ConnectorRouterDeprecatedRequest::Clone { .. } => "clone",
7832            ConnectorRouterDeprecatedRequest::Route { .. } => "route",
7833            ConnectorRouterDeprecatedRequest::_UnknownMethod {
7834                method_type: fidl::MethodType::OneWay,
7835                ..
7836            } => "unknown one-way method",
7837            ConnectorRouterDeprecatedRequest::_UnknownMethod {
7838                method_type: fidl::MethodType::TwoWay,
7839                ..
7840            } => "unknown two-way method",
7841        }
7842    }
7843}
7844
7845#[derive(Debug, Clone)]
7846pub struct ConnectorRouterDeprecatedControlHandle {
7847    inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
7848}
7849
7850impl fidl::endpoints::ControlHandle for ConnectorRouterDeprecatedControlHandle {
7851    fn shutdown(&self) {
7852        self.inner.shutdown()
7853    }
7854
7855    fn shutdown_with_epitaph(&self, status: zx_status::Status) {
7856        self.inner.shutdown_with_epitaph(status)
7857    }
7858
7859    fn is_closed(&self) -> bool {
7860        self.inner.channel().is_closed()
7861    }
7862    fn on_closed(&self) -> fidl::OnSignalsRef<'_> {
7863        self.inner.channel().on_closed()
7864    }
7865
7866    #[cfg(target_os = "fuchsia")]
7867    fn signal_peer(
7868        &self,
7869        clear_mask: zx::Signals,
7870        set_mask: zx::Signals,
7871    ) -> Result<(), zx_status::Status> {
7872        use fidl::Peered;
7873        self.inner.channel().signal_peer(clear_mask, set_mask)
7874    }
7875}
7876
7877impl ConnectorRouterDeprecatedControlHandle {}
7878
7879#[must_use = "FIDL methods require a response to be sent"]
7880#[derive(Debug)]
7881pub struct ConnectorRouterDeprecatedRouteResponder {
7882    control_handle: std::mem::ManuallyDrop<ConnectorRouterDeprecatedControlHandle>,
7883    tx_id: u32,
7884}
7885
7886/// Set the the channel to be shutdown (see [`ConnectorRouterDeprecatedControlHandle::shutdown`])
7887/// if the responder is dropped without sending a response, so that the client
7888/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
7889impl std::ops::Drop for ConnectorRouterDeprecatedRouteResponder {
7890    fn drop(&mut self) {
7891        self.control_handle.shutdown();
7892        // Safety: drops once, never accessed again
7893        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
7894    }
7895}
7896
7897impl fidl::endpoints::Responder for ConnectorRouterDeprecatedRouteResponder {
7898    type ControlHandle = ConnectorRouterDeprecatedControlHandle;
7899
7900    fn control_handle(&self) -> &ConnectorRouterDeprecatedControlHandle {
7901        &self.control_handle
7902    }
7903
7904    fn drop_without_shutdown(mut self) {
7905        // Safety: drops once, never accessed again due to mem::forget
7906        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
7907        // Prevent Drop from running (which would shut down the channel)
7908        std::mem::forget(self);
7909    }
7910}
7911
7912impl ConnectorRouterDeprecatedRouteResponder {
7913    /// Sends a response to the FIDL transaction.
7914    ///
7915    /// Sets the channel to shutdown if an error occurs.
7916    pub fn send(self, mut result: Result<RouterResponse, RouterError>) -> Result<(), fidl::Error> {
7917        let _result = self.send_raw(result);
7918        if _result.is_err() {
7919            self.control_handle.shutdown();
7920        }
7921        self.drop_without_shutdown();
7922        _result
7923    }
7924
7925    /// Similar to "send" but does not shutdown the channel if an error occurs.
7926    pub fn send_no_shutdown_on_err(
7927        self,
7928        mut result: Result<RouterResponse, RouterError>,
7929    ) -> Result<(), fidl::Error> {
7930        let _result = self.send_raw(result);
7931        self.drop_without_shutdown();
7932        _result
7933    }
7934
7935    fn send_raw(&self, mut result: Result<RouterResponse, RouterError>) -> Result<(), fidl::Error> {
7936        self.control_handle.inner.send::<fidl::encoding::FlexibleResultType<
7937            ConnectorRouterDeprecatedRouteResponse,
7938            RouterError,
7939        >>(
7940            fidl::encoding::FlexibleResult::new(result.map(|response| (response,))),
7941            self.tx_id,
7942            0x1b7810fe6a37ff32,
7943            fidl::encoding::DynamicFlags::FLEXIBLE,
7944        )
7945    }
7946}
7947
7948#[derive(Debug, Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash)]
7949pub struct DataRouterMarker;
7950
7951impl fidl::endpoints::ProtocolMarker for DataRouterMarker {
7952    type Proxy = DataRouterProxy;
7953    type RequestStream = DataRouterRequestStream;
7954    #[cfg(target_os = "fuchsia")]
7955    type SynchronousProxy = DataRouterSynchronousProxy;
7956
7957    const DEBUG_NAME: &'static str = "(anonymous) DataRouter";
7958}
7959pub type DataRouterRouteResult = Result<RouterResponse, RouterError>;
7960
7961pub trait DataRouterProxyInterface: Send + Sync {
7962    type RouteResponseFut: std::future::Future<Output = Result<DataRouterRouteResult, fidl::Error>>
7963        + Send;
7964    fn r#route(
7965        &self,
7966        request: RouteRequest,
7967        instance_token: fidl::EventPair,
7968        handle: fidl::EventPair,
7969    ) -> Self::RouteResponseFut;
7970}
7971#[derive(Debug)]
7972#[cfg(target_os = "fuchsia")]
7973pub struct DataRouterSynchronousProxy {
7974    client: fidl::client::sync::Client,
7975}
7976
7977#[cfg(target_os = "fuchsia")]
7978impl fidl::endpoints::SynchronousProxy for DataRouterSynchronousProxy {
7979    type Proxy = DataRouterProxy;
7980    type Protocol = DataRouterMarker;
7981
7982    fn from_channel(inner: fidl::Channel) -> Self {
7983        Self::new(inner)
7984    }
7985
7986    fn into_channel(self) -> fidl::Channel {
7987        self.client.into_channel()
7988    }
7989
7990    fn as_channel(&self) -> &fidl::Channel {
7991        self.client.as_channel()
7992    }
7993}
7994
7995#[cfg(target_os = "fuchsia")]
7996impl DataRouterSynchronousProxy {
7997    pub fn new(channel: fidl::Channel) -> Self {
7998        let protocol_name = <DataRouterMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
7999        Self { client: fidl::client::sync::Client::new(channel, protocol_name) }
8000    }
8001
8002    pub fn into_channel(self) -> fidl::Channel {
8003        self.client.into_channel()
8004    }
8005
8006    /// Waits until an event arrives and returns it. It is safe for other
8007    /// threads to make concurrent requests while waiting for an event.
8008    pub fn wait_for_event(
8009        &self,
8010        deadline: zx::MonotonicInstant,
8011    ) -> Result<DataRouterEvent, fidl::Error> {
8012        DataRouterEvent::decode(self.client.wait_for_event(deadline)?)
8013    }
8014
8015    /// Attempts to produce a `Data` capability from this
8016    /// `DataRouter`.
8017    ///
8018    /// `request` contains context for this route, and `instance_token`
8019    /// references the component that the routing operation is being performed
8020    /// for.
8021    ///
8022    /// This will return:
8023    ///
8024    /// - `SUCCESS` if `handle` has been associated with a connector.
8025    /// - `UNAVAILABLE` if the capability is unavailable, in which case `handle`
8026    ///   will be closed.
8027    /// - An error, if the operation failed.
8028    pub fn r#route(
8029        &self,
8030        mut request: RouteRequest,
8031        mut instance_token: fidl::EventPair,
8032        mut handle: fidl::EventPair,
8033        ___deadline: zx::MonotonicInstant,
8034    ) -> Result<DataRouterRouteResult, fidl::Error> {
8035        let _response = self.client.send_query::<
8036            DataRouterRouteRequest,
8037            fidl::encoding::FlexibleResultType<DataRouterRouteResponse, RouterError>,
8038        >(
8039            (&mut request, instance_token, handle,),
8040            0x646885ba7e10ceeb,
8041            fidl::encoding::DynamicFlags::FLEXIBLE,
8042            ___deadline,
8043        )?
8044        .into_result::<DataRouterMarker>("route")?;
8045        Ok(_response.map(|x| x.response))
8046    }
8047}
8048
8049#[cfg(target_os = "fuchsia")]
8050impl From<DataRouterSynchronousProxy> for zx::NullableHandle {
8051    fn from(value: DataRouterSynchronousProxy) -> Self {
8052        value.into_channel().into()
8053    }
8054}
8055
8056#[cfg(target_os = "fuchsia")]
8057impl From<fidl::Channel> for DataRouterSynchronousProxy {
8058    fn from(value: fidl::Channel) -> Self {
8059        Self::new(value)
8060    }
8061}
8062
8063#[cfg(target_os = "fuchsia")]
8064impl fidl::endpoints::FromClient for DataRouterSynchronousProxy {
8065    type Protocol = DataRouterMarker;
8066
8067    fn from_client(value: fidl::endpoints::ClientEnd<DataRouterMarker>) -> Self {
8068        Self::new(value.into_channel())
8069    }
8070}
8071
8072#[derive(Debug, Clone)]
8073pub struct DataRouterProxy {
8074    client: fidl::client::Client<fidl::encoding::DefaultFuchsiaResourceDialect>,
8075}
8076
8077impl fidl::endpoints::Proxy for DataRouterProxy {
8078    type Protocol = DataRouterMarker;
8079
8080    fn from_channel(inner: ::fidl::AsyncChannel) -> Self {
8081        Self::new(inner)
8082    }
8083
8084    fn into_channel(self) -> Result<::fidl::AsyncChannel, Self> {
8085        self.client.into_channel().map_err(|client| Self { client })
8086    }
8087
8088    fn as_channel(&self) -> &::fidl::AsyncChannel {
8089        self.client.as_channel()
8090    }
8091}
8092
8093impl DataRouterProxy {
8094    /// Create a new Proxy for fuchsia.component.runtime/DataRouter.
8095    pub fn new(channel: ::fidl::AsyncChannel) -> Self {
8096        let protocol_name = <DataRouterMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
8097        Self { client: fidl::client::Client::new(channel, protocol_name) }
8098    }
8099
8100    /// Get a Stream of events from the remote end of the protocol.
8101    ///
8102    /// # Panics
8103    ///
8104    /// Panics if the event stream was already taken.
8105    pub fn take_event_stream(&self) -> DataRouterEventStream {
8106        DataRouterEventStream { event_receiver: self.client.take_event_receiver() }
8107    }
8108
8109    /// Attempts to produce a `Data` capability from this
8110    /// `DataRouter`.
8111    ///
8112    /// `request` contains context for this route, and `instance_token`
8113    /// references the component that the routing operation is being performed
8114    /// for.
8115    ///
8116    /// This will return:
8117    ///
8118    /// - `SUCCESS` if `handle` has been associated with a connector.
8119    /// - `UNAVAILABLE` if the capability is unavailable, in which case `handle`
8120    ///   will be closed.
8121    /// - An error, if the operation failed.
8122    pub fn r#route(
8123        &self,
8124        mut request: RouteRequest,
8125        mut instance_token: fidl::EventPair,
8126        mut handle: fidl::EventPair,
8127    ) -> fidl::client::QueryResponseFut<
8128        DataRouterRouteResult,
8129        fidl::encoding::DefaultFuchsiaResourceDialect,
8130    > {
8131        DataRouterProxyInterface::r#route(self, request, instance_token, handle)
8132    }
8133}
8134
8135impl DataRouterProxyInterface for DataRouterProxy {
8136    type RouteResponseFut = fidl::client::QueryResponseFut<
8137        DataRouterRouteResult,
8138        fidl::encoding::DefaultFuchsiaResourceDialect,
8139    >;
8140    fn r#route(
8141        &self,
8142        mut request: RouteRequest,
8143        mut instance_token: fidl::EventPair,
8144        mut handle: fidl::EventPair,
8145    ) -> Self::RouteResponseFut {
8146        fn _decode(
8147            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
8148        ) -> Result<DataRouterRouteResult, fidl::Error> {
8149            let _response = fidl::client::decode_transaction_body::<
8150                fidl::encoding::FlexibleResultType<DataRouterRouteResponse, RouterError>,
8151                fidl::encoding::DefaultFuchsiaResourceDialect,
8152                0x646885ba7e10ceeb,
8153            >(_buf?)?
8154            .into_result::<DataRouterMarker>("route")?;
8155            Ok(_response.map(|x| x.response))
8156        }
8157        self.client.send_query_and_decode::<DataRouterRouteRequest, DataRouterRouteResult>(
8158            (&mut request, instance_token, handle),
8159            0x646885ba7e10ceeb,
8160            fidl::encoding::DynamicFlags::FLEXIBLE,
8161            _decode,
8162        )
8163    }
8164}
8165
8166pub struct DataRouterEventStream {
8167    event_receiver: fidl::client::EventReceiver<fidl::encoding::DefaultFuchsiaResourceDialect>,
8168}
8169
8170impl std::marker::Unpin for DataRouterEventStream {}
8171
8172impl futures::stream::FusedStream for DataRouterEventStream {
8173    fn is_terminated(&self) -> bool {
8174        self.event_receiver.is_terminated()
8175    }
8176}
8177
8178impl futures::Stream for DataRouterEventStream {
8179    type Item = Result<DataRouterEvent, fidl::Error>;
8180
8181    fn poll_next(
8182        mut self: std::pin::Pin<&mut Self>,
8183        cx: &mut std::task::Context<'_>,
8184    ) -> std::task::Poll<Option<Self::Item>> {
8185        match futures::ready!(futures::stream::StreamExt::poll_next_unpin(
8186            &mut self.event_receiver,
8187            cx
8188        )?) {
8189            Some(buf) => std::task::Poll::Ready(Some(DataRouterEvent::decode(buf))),
8190            None => std::task::Poll::Ready(None),
8191        }
8192    }
8193}
8194
8195#[derive(Debug)]
8196pub enum DataRouterEvent {
8197    #[non_exhaustive]
8198    _UnknownEvent {
8199        /// Ordinal of the event that was sent.
8200        ordinal: u64,
8201    },
8202}
8203
8204impl DataRouterEvent {
8205    /// Decodes a message buffer as a [`DataRouterEvent`].
8206    fn decode(
8207        mut buf: <fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc,
8208    ) -> Result<DataRouterEvent, fidl::Error> {
8209        let (bytes, _handles) = buf.split_mut();
8210        let (tx_header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
8211        debug_assert_eq!(tx_header.tx_id, 0);
8212        match tx_header.ordinal {
8213            _ if tx_header.dynamic_flags().contains(fidl::encoding::DynamicFlags::FLEXIBLE) => {
8214                Ok(DataRouterEvent::_UnknownEvent { ordinal: tx_header.ordinal })
8215            }
8216            _ => Err(fidl::Error::UnknownOrdinal {
8217                ordinal: tx_header.ordinal,
8218                protocol_name: <DataRouterMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
8219            }),
8220        }
8221    }
8222}
8223
8224/// A Stream of incoming requests for fuchsia.component.runtime/DataRouter.
8225pub struct DataRouterRequestStream {
8226    inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
8227    is_terminated: bool,
8228}
8229
8230impl std::marker::Unpin for DataRouterRequestStream {}
8231
8232impl futures::stream::FusedStream for DataRouterRequestStream {
8233    fn is_terminated(&self) -> bool {
8234        self.is_terminated
8235    }
8236}
8237
8238impl fidl::endpoints::RequestStream for DataRouterRequestStream {
8239    type Protocol = DataRouterMarker;
8240    type ControlHandle = DataRouterControlHandle;
8241
8242    fn from_channel(channel: ::fidl::AsyncChannel) -> Self {
8243        Self { inner: std::sync::Arc::new(fidl::ServeInner::new(channel)), is_terminated: false }
8244    }
8245
8246    fn control_handle(&self) -> Self::ControlHandle {
8247        DataRouterControlHandle { inner: self.inner.clone() }
8248    }
8249
8250    fn into_inner(
8251        self,
8252    ) -> (::std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>, bool)
8253    {
8254        (self.inner, self.is_terminated)
8255    }
8256
8257    fn from_inner(
8258        inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
8259        is_terminated: bool,
8260    ) -> Self {
8261        Self { inner, is_terminated }
8262    }
8263}
8264
8265impl futures::Stream for DataRouterRequestStream {
8266    type Item = Result<DataRouterRequest, fidl::Error>;
8267
8268    fn poll_next(
8269        mut self: std::pin::Pin<&mut Self>,
8270        cx: &mut std::task::Context<'_>,
8271    ) -> std::task::Poll<Option<Self::Item>> {
8272        let this = &mut *self;
8273        if this.inner.check_shutdown(cx) {
8274            this.is_terminated = true;
8275            return std::task::Poll::Ready(None);
8276        }
8277        if this.is_terminated {
8278            panic!("polled DataRouterRequestStream after completion");
8279        }
8280        fidl::encoding::with_tls_decode_buf::<_, fidl::encoding::DefaultFuchsiaResourceDialect>(
8281            |bytes, handles| {
8282                match this.inner.channel().read_etc(cx, bytes, handles) {
8283                    std::task::Poll::Ready(Ok(())) => {}
8284                    std::task::Poll::Pending => return std::task::Poll::Pending,
8285                    std::task::Poll::Ready(Err(zx_status::Status::PEER_CLOSED)) => {
8286                        this.is_terminated = true;
8287                        return std::task::Poll::Ready(None);
8288                    }
8289                    std::task::Poll::Ready(Err(e)) => {
8290                        return std::task::Poll::Ready(Some(Err(fidl::Error::ServerRequestRead(
8291                            e.into(),
8292                        ))));
8293                    }
8294                }
8295
8296                // A message has been received from the channel
8297                let (header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
8298
8299                std::task::Poll::Ready(Some(match header.ordinal {
8300                    0x646885ba7e10ceeb => {
8301                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
8302                        let mut req = fidl::new_empty!(
8303                            DataRouterRouteRequest,
8304                            fidl::encoding::DefaultFuchsiaResourceDialect
8305                        );
8306                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<DataRouterRouteRequest>(&header, _body_bytes, handles, &mut req)?;
8307                        let control_handle = DataRouterControlHandle { inner: this.inner.clone() };
8308                        Ok(DataRouterRequest::Route {
8309                            request: req.request,
8310                            instance_token: req.instance_token,
8311                            handle: req.handle,
8312
8313                            responder: DataRouterRouteResponder {
8314                                control_handle: std::mem::ManuallyDrop::new(control_handle),
8315                                tx_id: header.tx_id,
8316                            },
8317                        })
8318                    }
8319                    _ if header.tx_id == 0
8320                        && header
8321                            .dynamic_flags()
8322                            .contains(fidl::encoding::DynamicFlags::FLEXIBLE) =>
8323                    {
8324                        Ok(DataRouterRequest::_UnknownMethod {
8325                            ordinal: header.ordinal,
8326                            control_handle: DataRouterControlHandle { inner: this.inner.clone() },
8327                            method_type: fidl::MethodType::OneWay,
8328                        })
8329                    }
8330                    _ if header
8331                        .dynamic_flags()
8332                        .contains(fidl::encoding::DynamicFlags::FLEXIBLE) =>
8333                    {
8334                        this.inner.send_framework_err(
8335                            fidl::encoding::FrameworkErr::UnknownMethod,
8336                            header.tx_id,
8337                            header.ordinal,
8338                            header.dynamic_flags(),
8339                            (bytes, handles),
8340                        )?;
8341                        Ok(DataRouterRequest::_UnknownMethod {
8342                            ordinal: header.ordinal,
8343                            control_handle: DataRouterControlHandle { inner: this.inner.clone() },
8344                            method_type: fidl::MethodType::TwoWay,
8345                        })
8346                    }
8347                    _ => Err(fidl::Error::UnknownOrdinal {
8348                        ordinal: header.ordinal,
8349                        protocol_name:
8350                            <DataRouterMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
8351                    }),
8352                }))
8353            },
8354        )
8355    }
8356}
8357
8358/// A factory for `Data` capabilities.
8359#[derive(Debug)]
8360pub enum DataRouterRequest {
8361    /// Attempts to produce a `Data` capability from this
8362    /// `DataRouter`.
8363    ///
8364    /// `request` contains context for this route, and `instance_token`
8365    /// references the component that the routing operation is being performed
8366    /// for.
8367    ///
8368    /// This will return:
8369    ///
8370    /// - `SUCCESS` if `handle` has been associated with a connector.
8371    /// - `UNAVAILABLE` if the capability is unavailable, in which case `handle`
8372    ///   will be closed.
8373    /// - An error, if the operation failed.
8374    Route {
8375        request: RouteRequest,
8376        instance_token: fidl::EventPair,
8377        handle: fidl::EventPair,
8378        responder: DataRouterRouteResponder,
8379    },
8380    /// An interaction was received which does not match any known method.
8381    #[non_exhaustive]
8382    _UnknownMethod {
8383        /// Ordinal of the method that was called.
8384        ordinal: u64,
8385        control_handle: DataRouterControlHandle,
8386        method_type: fidl::MethodType,
8387    },
8388}
8389
8390impl DataRouterRequest {
8391    #[allow(irrefutable_let_patterns)]
8392    pub fn into_route(
8393        self,
8394    ) -> Option<(RouteRequest, fidl::EventPair, fidl::EventPair, DataRouterRouteResponder)> {
8395        if let DataRouterRequest::Route { request, instance_token, handle, responder } = self {
8396            Some((request, instance_token, handle, responder))
8397        } else {
8398            None
8399        }
8400    }
8401
8402    /// Name of the method defined in FIDL
8403    pub fn method_name(&self) -> &'static str {
8404        match *self {
8405            DataRouterRequest::Route { .. } => "route",
8406            DataRouterRequest::_UnknownMethod { method_type: fidl::MethodType::OneWay, .. } => {
8407                "unknown one-way method"
8408            }
8409            DataRouterRequest::_UnknownMethod { method_type: fidl::MethodType::TwoWay, .. } => {
8410                "unknown two-way method"
8411            }
8412        }
8413    }
8414}
8415
8416#[derive(Debug, Clone)]
8417pub struct DataRouterControlHandle {
8418    inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
8419}
8420
8421impl fidl::endpoints::ControlHandle for DataRouterControlHandle {
8422    fn shutdown(&self) {
8423        self.inner.shutdown()
8424    }
8425
8426    fn shutdown_with_epitaph(&self, status: zx_status::Status) {
8427        self.inner.shutdown_with_epitaph(status)
8428    }
8429
8430    fn is_closed(&self) -> bool {
8431        self.inner.channel().is_closed()
8432    }
8433    fn on_closed(&self) -> fidl::OnSignalsRef<'_> {
8434        self.inner.channel().on_closed()
8435    }
8436
8437    #[cfg(target_os = "fuchsia")]
8438    fn signal_peer(
8439        &self,
8440        clear_mask: zx::Signals,
8441        set_mask: zx::Signals,
8442    ) -> Result<(), zx_status::Status> {
8443        use fidl::Peered;
8444        self.inner.channel().signal_peer(clear_mask, set_mask)
8445    }
8446}
8447
8448impl DataRouterControlHandle {}
8449
8450#[must_use = "FIDL methods require a response to be sent"]
8451#[derive(Debug)]
8452pub struct DataRouterRouteResponder {
8453    control_handle: std::mem::ManuallyDrop<DataRouterControlHandle>,
8454    tx_id: u32,
8455}
8456
8457/// Set the the channel to be shutdown (see [`DataRouterControlHandle::shutdown`])
8458/// if the responder is dropped without sending a response, so that the client
8459/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
8460impl std::ops::Drop for DataRouterRouteResponder {
8461    fn drop(&mut self) {
8462        self.control_handle.shutdown();
8463        // Safety: drops once, never accessed again
8464        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
8465    }
8466}
8467
8468impl fidl::endpoints::Responder for DataRouterRouteResponder {
8469    type ControlHandle = DataRouterControlHandle;
8470
8471    fn control_handle(&self) -> &DataRouterControlHandle {
8472        &self.control_handle
8473    }
8474
8475    fn drop_without_shutdown(mut self) {
8476        // Safety: drops once, never accessed again due to mem::forget
8477        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
8478        // Prevent Drop from running (which would shut down the channel)
8479        std::mem::forget(self);
8480    }
8481}
8482
8483impl DataRouterRouteResponder {
8484    /// Sends a response to the FIDL transaction.
8485    ///
8486    /// Sets the channel to shutdown if an error occurs.
8487    pub fn send(self, mut result: Result<RouterResponse, RouterError>) -> Result<(), fidl::Error> {
8488        let _result = self.send_raw(result);
8489        if _result.is_err() {
8490            self.control_handle.shutdown();
8491        }
8492        self.drop_without_shutdown();
8493        _result
8494    }
8495
8496    /// Similar to "send" but does not shutdown the channel if an error occurs.
8497    pub fn send_no_shutdown_on_err(
8498        self,
8499        mut result: Result<RouterResponse, RouterError>,
8500    ) -> Result<(), fidl::Error> {
8501        let _result = self.send_raw(result);
8502        self.drop_without_shutdown();
8503        _result
8504    }
8505
8506    fn send_raw(&self, mut result: Result<RouterResponse, RouterError>) -> Result<(), fidl::Error> {
8507        self.control_handle.inner.send::<fidl::encoding::FlexibleResultType<
8508            DataRouterRouteResponse,
8509            RouterError,
8510        >>(
8511            fidl::encoding::FlexibleResult::new(result.map(|response| (response,))),
8512            self.tx_id,
8513            0x646885ba7e10ceeb,
8514            fidl::encoding::DynamicFlags::FLEXIBLE,
8515        )
8516    }
8517}
8518
8519#[derive(Debug, Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash)]
8520pub struct DataRouterDeprecatedMarker;
8521
8522impl fidl::endpoints::ProtocolMarker for DataRouterDeprecatedMarker {
8523    type Proxy = DataRouterDeprecatedProxy;
8524    type RequestStream = DataRouterDeprecatedRequestStream;
8525    #[cfg(target_os = "fuchsia")]
8526    type SynchronousProxy = DataRouterDeprecatedSynchronousProxy;
8527
8528    const DEBUG_NAME: &'static str = "(anonymous) DataRouterDeprecated";
8529}
8530pub type DataRouterDeprecatedRouteResult = Result<(RouterResponse, Option<Box<Data>>), RouterError>;
8531
8532pub trait DataRouterDeprecatedProxyInterface: Send + Sync {
8533    fn r#clone(
8534        &self,
8535        request: fidl::endpoints::ServerEnd<fidl_fuchsia_unknown::CloneableMarker>,
8536    ) -> Result<(), fidl::Error>;
8537    type RouteResponseFut: std::future::Future<Output = Result<DataRouterDeprecatedRouteResult, fidl::Error>>
8538        + Send;
8539    fn r#route(&self, request: DeprecatedRouteRequest) -> Self::RouteResponseFut;
8540}
8541#[derive(Debug)]
8542#[cfg(target_os = "fuchsia")]
8543pub struct DataRouterDeprecatedSynchronousProxy {
8544    client: fidl::client::sync::Client,
8545}
8546
8547#[cfg(target_os = "fuchsia")]
8548impl fidl::endpoints::SynchronousProxy for DataRouterDeprecatedSynchronousProxy {
8549    type Proxy = DataRouterDeprecatedProxy;
8550    type Protocol = DataRouterDeprecatedMarker;
8551
8552    fn from_channel(inner: fidl::Channel) -> Self {
8553        Self::new(inner)
8554    }
8555
8556    fn into_channel(self) -> fidl::Channel {
8557        self.client.into_channel()
8558    }
8559
8560    fn as_channel(&self) -> &fidl::Channel {
8561        self.client.as_channel()
8562    }
8563}
8564
8565#[cfg(target_os = "fuchsia")]
8566impl DataRouterDeprecatedSynchronousProxy {
8567    pub fn new(channel: fidl::Channel) -> Self {
8568        let protocol_name =
8569            <DataRouterDeprecatedMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
8570        Self { client: fidl::client::sync::Client::new(channel, protocol_name) }
8571    }
8572
8573    pub fn into_channel(self) -> fidl::Channel {
8574        self.client.into_channel()
8575    }
8576
8577    /// Waits until an event arrives and returns it. It is safe for other
8578    /// threads to make concurrent requests while waiting for an event.
8579    pub fn wait_for_event(
8580        &self,
8581        deadline: zx::MonotonicInstant,
8582    ) -> Result<DataRouterDeprecatedEvent, fidl::Error> {
8583        DataRouterDeprecatedEvent::decode(self.client.wait_for_event(deadline)?)
8584    }
8585
8586    pub fn r#clone(
8587        &self,
8588        mut request: fidl::endpoints::ServerEnd<fidl_fuchsia_unknown::CloneableMarker>,
8589    ) -> Result<(), fidl::Error> {
8590        self.client.send::<fidl_fuchsia_unknown::CloneableCloneRequest>(
8591            (request,),
8592            0x20d8a7aba2168a79,
8593            fidl::encoding::DynamicFlags::empty(),
8594        )
8595    }
8596
8597    /// Attempts to produce a `Data` capability from this
8598    /// `DataRouter`. This will return:
8599    ///
8600    /// - A `Data` value if the operation is successful.
8601    /// - An empty value if there is no issue found but the capability is not
8602    ///   being provided (for example, an optional route ended in an offer from
8603    ///   void).
8604    /// - An error, if the operation failed.
8605    pub fn r#route(
8606        &self,
8607        mut request: DeprecatedRouteRequest,
8608        ___deadline: zx::MonotonicInstant,
8609    ) -> Result<DataRouterDeprecatedRouteResult, fidl::Error> {
8610        let _response = self.client.send_query::<
8611            DataRouterDeprecatedRouteRequest,
8612            fidl::encoding::FlexibleResultType<DataRouterDeprecatedRouteResponse, RouterError>,
8613        >(
8614            (&mut request,),
8615            0x9a0b381e65e9ed3,
8616            fidl::encoding::DynamicFlags::FLEXIBLE,
8617            ___deadline,
8618        )?
8619        .into_result::<DataRouterDeprecatedMarker>("route")?;
8620        Ok(_response.map(|x| (x.response, x.data)))
8621    }
8622}
8623
8624#[cfg(target_os = "fuchsia")]
8625impl From<DataRouterDeprecatedSynchronousProxy> for zx::NullableHandle {
8626    fn from(value: DataRouterDeprecatedSynchronousProxy) -> Self {
8627        value.into_channel().into()
8628    }
8629}
8630
8631#[cfg(target_os = "fuchsia")]
8632impl From<fidl::Channel> for DataRouterDeprecatedSynchronousProxy {
8633    fn from(value: fidl::Channel) -> Self {
8634        Self::new(value)
8635    }
8636}
8637
8638#[cfg(target_os = "fuchsia")]
8639impl fidl::endpoints::FromClient for DataRouterDeprecatedSynchronousProxy {
8640    type Protocol = DataRouterDeprecatedMarker;
8641
8642    fn from_client(value: fidl::endpoints::ClientEnd<DataRouterDeprecatedMarker>) -> Self {
8643        Self::new(value.into_channel())
8644    }
8645}
8646
8647#[derive(Debug, Clone)]
8648pub struct DataRouterDeprecatedProxy {
8649    client: fidl::client::Client<fidl::encoding::DefaultFuchsiaResourceDialect>,
8650}
8651
8652impl fidl::endpoints::Proxy for DataRouterDeprecatedProxy {
8653    type Protocol = DataRouterDeprecatedMarker;
8654
8655    fn from_channel(inner: ::fidl::AsyncChannel) -> Self {
8656        Self::new(inner)
8657    }
8658
8659    fn into_channel(self) -> Result<::fidl::AsyncChannel, Self> {
8660        self.client.into_channel().map_err(|client| Self { client })
8661    }
8662
8663    fn as_channel(&self) -> &::fidl::AsyncChannel {
8664        self.client.as_channel()
8665    }
8666}
8667
8668impl DataRouterDeprecatedProxy {
8669    /// Create a new Proxy for fuchsia.component.runtime/DataRouterDeprecated.
8670    pub fn new(channel: ::fidl::AsyncChannel) -> Self {
8671        let protocol_name =
8672            <DataRouterDeprecatedMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
8673        Self { client: fidl::client::Client::new(channel, protocol_name) }
8674    }
8675
8676    /// Get a Stream of events from the remote end of the protocol.
8677    ///
8678    /// # Panics
8679    ///
8680    /// Panics if the event stream was already taken.
8681    pub fn take_event_stream(&self) -> DataRouterDeprecatedEventStream {
8682        DataRouterDeprecatedEventStream { event_receiver: self.client.take_event_receiver() }
8683    }
8684
8685    pub fn r#clone(
8686        &self,
8687        mut request: fidl::endpoints::ServerEnd<fidl_fuchsia_unknown::CloneableMarker>,
8688    ) -> Result<(), fidl::Error> {
8689        DataRouterDeprecatedProxyInterface::r#clone(self, request)
8690    }
8691
8692    /// Attempts to produce a `Data` capability from this
8693    /// `DataRouter`. This will return:
8694    ///
8695    /// - A `Data` value if the operation is successful.
8696    /// - An empty value if there is no issue found but the capability is not
8697    ///   being provided (for example, an optional route ended in an offer from
8698    ///   void).
8699    /// - An error, if the operation failed.
8700    pub fn r#route(
8701        &self,
8702        mut request: DeprecatedRouteRequest,
8703    ) -> fidl::client::QueryResponseFut<
8704        DataRouterDeprecatedRouteResult,
8705        fidl::encoding::DefaultFuchsiaResourceDialect,
8706    > {
8707        DataRouterDeprecatedProxyInterface::r#route(self, request)
8708    }
8709}
8710
8711impl DataRouterDeprecatedProxyInterface for DataRouterDeprecatedProxy {
8712    fn r#clone(
8713        &self,
8714        mut request: fidl::endpoints::ServerEnd<fidl_fuchsia_unknown::CloneableMarker>,
8715    ) -> Result<(), fidl::Error> {
8716        self.client.send::<fidl_fuchsia_unknown::CloneableCloneRequest>(
8717            (request,),
8718            0x20d8a7aba2168a79,
8719            fidl::encoding::DynamicFlags::empty(),
8720        )
8721    }
8722
8723    type RouteResponseFut = fidl::client::QueryResponseFut<
8724        DataRouterDeprecatedRouteResult,
8725        fidl::encoding::DefaultFuchsiaResourceDialect,
8726    >;
8727    fn r#route(&self, mut request: DeprecatedRouteRequest) -> Self::RouteResponseFut {
8728        fn _decode(
8729            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
8730        ) -> Result<DataRouterDeprecatedRouteResult, fidl::Error> {
8731            let _response = fidl::client::decode_transaction_body::<
8732                fidl::encoding::FlexibleResultType<DataRouterDeprecatedRouteResponse, RouterError>,
8733                fidl::encoding::DefaultFuchsiaResourceDialect,
8734                0x9a0b381e65e9ed3,
8735            >(_buf?)?
8736            .into_result::<DataRouterDeprecatedMarker>("route")?;
8737            Ok(_response.map(|x| (x.response, x.data)))
8738        }
8739        self.client.send_query_and_decode::<
8740            DataRouterDeprecatedRouteRequest,
8741            DataRouterDeprecatedRouteResult,
8742        >(
8743            (&mut request,),
8744            0x9a0b381e65e9ed3,
8745            fidl::encoding::DynamicFlags::FLEXIBLE,
8746            _decode,
8747        )
8748    }
8749}
8750
8751pub struct DataRouterDeprecatedEventStream {
8752    event_receiver: fidl::client::EventReceiver<fidl::encoding::DefaultFuchsiaResourceDialect>,
8753}
8754
8755impl std::marker::Unpin for DataRouterDeprecatedEventStream {}
8756
8757impl futures::stream::FusedStream for DataRouterDeprecatedEventStream {
8758    fn is_terminated(&self) -> bool {
8759        self.event_receiver.is_terminated()
8760    }
8761}
8762
8763impl futures::Stream for DataRouterDeprecatedEventStream {
8764    type Item = Result<DataRouterDeprecatedEvent, fidl::Error>;
8765
8766    fn poll_next(
8767        mut self: std::pin::Pin<&mut Self>,
8768        cx: &mut std::task::Context<'_>,
8769    ) -> std::task::Poll<Option<Self::Item>> {
8770        match futures::ready!(futures::stream::StreamExt::poll_next_unpin(
8771            &mut self.event_receiver,
8772            cx
8773        )?) {
8774            Some(buf) => std::task::Poll::Ready(Some(DataRouterDeprecatedEvent::decode(buf))),
8775            None => std::task::Poll::Ready(None),
8776        }
8777    }
8778}
8779
8780#[derive(Debug)]
8781pub enum DataRouterDeprecatedEvent {
8782    #[non_exhaustive]
8783    _UnknownEvent {
8784        /// Ordinal of the event that was sent.
8785        ordinal: u64,
8786    },
8787}
8788
8789impl DataRouterDeprecatedEvent {
8790    /// Decodes a message buffer as a [`DataRouterDeprecatedEvent`].
8791    fn decode(
8792        mut buf: <fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc,
8793    ) -> Result<DataRouterDeprecatedEvent, fidl::Error> {
8794        let (bytes, _handles) = buf.split_mut();
8795        let (tx_header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
8796        debug_assert_eq!(tx_header.tx_id, 0);
8797        match tx_header.ordinal {
8798            _ if tx_header.dynamic_flags().contains(fidl::encoding::DynamicFlags::FLEXIBLE) => {
8799                Ok(DataRouterDeprecatedEvent::_UnknownEvent { ordinal: tx_header.ordinal })
8800            }
8801            _ => Err(fidl::Error::UnknownOrdinal {
8802                ordinal: tx_header.ordinal,
8803                protocol_name:
8804                    <DataRouterDeprecatedMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
8805            }),
8806        }
8807    }
8808}
8809
8810/// A Stream of incoming requests for fuchsia.component.runtime/DataRouterDeprecated.
8811pub struct DataRouterDeprecatedRequestStream {
8812    inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
8813    is_terminated: bool,
8814}
8815
8816impl std::marker::Unpin for DataRouterDeprecatedRequestStream {}
8817
8818impl futures::stream::FusedStream for DataRouterDeprecatedRequestStream {
8819    fn is_terminated(&self) -> bool {
8820        self.is_terminated
8821    }
8822}
8823
8824impl fidl::endpoints::RequestStream for DataRouterDeprecatedRequestStream {
8825    type Protocol = DataRouterDeprecatedMarker;
8826    type ControlHandle = DataRouterDeprecatedControlHandle;
8827
8828    fn from_channel(channel: ::fidl::AsyncChannel) -> Self {
8829        Self { inner: std::sync::Arc::new(fidl::ServeInner::new(channel)), is_terminated: false }
8830    }
8831
8832    fn control_handle(&self) -> Self::ControlHandle {
8833        DataRouterDeprecatedControlHandle { inner: self.inner.clone() }
8834    }
8835
8836    fn into_inner(
8837        self,
8838    ) -> (::std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>, bool)
8839    {
8840        (self.inner, self.is_terminated)
8841    }
8842
8843    fn from_inner(
8844        inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
8845        is_terminated: bool,
8846    ) -> Self {
8847        Self { inner, is_terminated }
8848    }
8849}
8850
8851impl futures::Stream for DataRouterDeprecatedRequestStream {
8852    type Item = Result<DataRouterDeprecatedRequest, fidl::Error>;
8853
8854    fn poll_next(
8855        mut self: std::pin::Pin<&mut Self>,
8856        cx: &mut std::task::Context<'_>,
8857    ) -> std::task::Poll<Option<Self::Item>> {
8858        let this = &mut *self;
8859        if this.inner.check_shutdown(cx) {
8860            this.is_terminated = true;
8861            return std::task::Poll::Ready(None);
8862        }
8863        if this.is_terminated {
8864            panic!("polled DataRouterDeprecatedRequestStream after completion");
8865        }
8866        fidl::encoding::with_tls_decode_buf::<_, fidl::encoding::DefaultFuchsiaResourceDialect>(
8867            |bytes, handles| {
8868                match this.inner.channel().read_etc(cx, bytes, handles) {
8869                    std::task::Poll::Ready(Ok(())) => {}
8870                    std::task::Poll::Pending => return std::task::Poll::Pending,
8871                    std::task::Poll::Ready(Err(zx_status::Status::PEER_CLOSED)) => {
8872                        this.is_terminated = true;
8873                        return std::task::Poll::Ready(None);
8874                    }
8875                    std::task::Poll::Ready(Err(e)) => {
8876                        return std::task::Poll::Ready(Some(Err(fidl::Error::ServerRequestRead(
8877                            e.into(),
8878                        ))));
8879                    }
8880                }
8881
8882                // A message has been received from the channel
8883                let (header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
8884
8885                std::task::Poll::Ready(Some(match header.ordinal {
8886                0x20d8a7aba2168a79 => {
8887                    header.validate_request_tx_id(fidl::MethodType::OneWay)?;
8888                    let mut req = fidl::new_empty!(fidl_fuchsia_unknown::CloneableCloneRequest, fidl::encoding::DefaultFuchsiaResourceDialect);
8889                    fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_unknown::CloneableCloneRequest>(&header, _body_bytes, handles, &mut req)?;
8890                    let control_handle = DataRouterDeprecatedControlHandle {
8891                        inner: this.inner.clone(),
8892                    };
8893                    Ok(DataRouterDeprecatedRequest::Clone {request: req.request,
8894
8895                        control_handle,
8896                    })
8897                }
8898                0x9a0b381e65e9ed3 => {
8899                    header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
8900                    let mut req = fidl::new_empty!(DataRouterDeprecatedRouteRequest, fidl::encoding::DefaultFuchsiaResourceDialect);
8901                    fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<DataRouterDeprecatedRouteRequest>(&header, _body_bytes, handles, &mut req)?;
8902                    let control_handle = DataRouterDeprecatedControlHandle {
8903                        inner: this.inner.clone(),
8904                    };
8905                    Ok(DataRouterDeprecatedRequest::Route {request: req.request,
8906
8907                        responder: DataRouterDeprecatedRouteResponder {
8908                            control_handle: std::mem::ManuallyDrop::new(control_handle),
8909                            tx_id: header.tx_id,
8910                        },
8911                    })
8912                }
8913                _ if header.tx_id == 0 && header.dynamic_flags().contains(fidl::encoding::DynamicFlags::FLEXIBLE) => {
8914                    Ok(DataRouterDeprecatedRequest::_UnknownMethod {
8915                        ordinal: header.ordinal,
8916                        control_handle: DataRouterDeprecatedControlHandle { inner: this.inner.clone() },
8917                        method_type: fidl::MethodType::OneWay,
8918                    })
8919                }
8920                _ if header.dynamic_flags().contains(fidl::encoding::DynamicFlags::FLEXIBLE) => {
8921                    this.inner.send_framework_err(
8922                        fidl::encoding::FrameworkErr::UnknownMethod,
8923                        header.tx_id,
8924                        header.ordinal,
8925                        header.dynamic_flags(),
8926                        (bytes, handles),
8927                    )?;
8928                    Ok(DataRouterDeprecatedRequest::_UnknownMethod {
8929                        ordinal: header.ordinal,
8930                        control_handle: DataRouterDeprecatedControlHandle { inner: this.inner.clone() },
8931                        method_type: fidl::MethodType::TwoWay,
8932                    })
8933                }
8934                _ => Err(fidl::Error::UnknownOrdinal {
8935                    ordinal: header.ordinal,
8936                    protocol_name: <DataRouterDeprecatedMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
8937                }),
8938            }))
8939            },
8940        )
8941    }
8942}
8943
8944/// A factory for `Data` capabilities.
8945#[derive(Debug)]
8946pub enum DataRouterDeprecatedRequest {
8947    Clone {
8948        request: fidl::endpoints::ServerEnd<fidl_fuchsia_unknown::CloneableMarker>,
8949        control_handle: DataRouterDeprecatedControlHandle,
8950    },
8951    /// Attempts to produce a `Data` capability from this
8952    /// `DataRouter`. This will return:
8953    ///
8954    /// - A `Data` value if the operation is successful.
8955    /// - An empty value if there is no issue found but the capability is not
8956    ///   being provided (for example, an optional route ended in an offer from
8957    ///   void).
8958    /// - An error, if the operation failed.
8959    Route { request: DeprecatedRouteRequest, responder: DataRouterDeprecatedRouteResponder },
8960    /// An interaction was received which does not match any known method.
8961    #[non_exhaustive]
8962    _UnknownMethod {
8963        /// Ordinal of the method that was called.
8964        ordinal: u64,
8965        control_handle: DataRouterDeprecatedControlHandle,
8966        method_type: fidl::MethodType,
8967    },
8968}
8969
8970impl DataRouterDeprecatedRequest {
8971    #[allow(irrefutable_let_patterns)]
8972    pub fn into_clone(
8973        self,
8974    ) -> Option<(
8975        fidl::endpoints::ServerEnd<fidl_fuchsia_unknown::CloneableMarker>,
8976        DataRouterDeprecatedControlHandle,
8977    )> {
8978        if let DataRouterDeprecatedRequest::Clone { request, control_handle } = self {
8979            Some((request, control_handle))
8980        } else {
8981            None
8982        }
8983    }
8984
8985    #[allow(irrefutable_let_patterns)]
8986    pub fn into_route(
8987        self,
8988    ) -> Option<(DeprecatedRouteRequest, DataRouterDeprecatedRouteResponder)> {
8989        if let DataRouterDeprecatedRequest::Route { request, responder } = self {
8990            Some((request, responder))
8991        } else {
8992            None
8993        }
8994    }
8995
8996    /// Name of the method defined in FIDL
8997    pub fn method_name(&self) -> &'static str {
8998        match *self {
8999            DataRouterDeprecatedRequest::Clone { .. } => "clone",
9000            DataRouterDeprecatedRequest::Route { .. } => "route",
9001            DataRouterDeprecatedRequest::_UnknownMethod {
9002                method_type: fidl::MethodType::OneWay,
9003                ..
9004            } => "unknown one-way method",
9005            DataRouterDeprecatedRequest::_UnknownMethod {
9006                method_type: fidl::MethodType::TwoWay,
9007                ..
9008            } => "unknown two-way method",
9009        }
9010    }
9011}
9012
9013#[derive(Debug, Clone)]
9014pub struct DataRouterDeprecatedControlHandle {
9015    inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
9016}
9017
9018impl fidl::endpoints::ControlHandle for DataRouterDeprecatedControlHandle {
9019    fn shutdown(&self) {
9020        self.inner.shutdown()
9021    }
9022
9023    fn shutdown_with_epitaph(&self, status: zx_status::Status) {
9024        self.inner.shutdown_with_epitaph(status)
9025    }
9026
9027    fn is_closed(&self) -> bool {
9028        self.inner.channel().is_closed()
9029    }
9030    fn on_closed(&self) -> fidl::OnSignalsRef<'_> {
9031        self.inner.channel().on_closed()
9032    }
9033
9034    #[cfg(target_os = "fuchsia")]
9035    fn signal_peer(
9036        &self,
9037        clear_mask: zx::Signals,
9038        set_mask: zx::Signals,
9039    ) -> Result<(), zx_status::Status> {
9040        use fidl::Peered;
9041        self.inner.channel().signal_peer(clear_mask, set_mask)
9042    }
9043}
9044
9045impl DataRouterDeprecatedControlHandle {}
9046
9047#[must_use = "FIDL methods require a response to be sent"]
9048#[derive(Debug)]
9049pub struct DataRouterDeprecatedRouteResponder {
9050    control_handle: std::mem::ManuallyDrop<DataRouterDeprecatedControlHandle>,
9051    tx_id: u32,
9052}
9053
9054/// Set the the channel to be shutdown (see [`DataRouterDeprecatedControlHandle::shutdown`])
9055/// if the responder is dropped without sending a response, so that the client
9056/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
9057impl std::ops::Drop for DataRouterDeprecatedRouteResponder {
9058    fn drop(&mut self) {
9059        self.control_handle.shutdown();
9060        // Safety: drops once, never accessed again
9061        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
9062    }
9063}
9064
9065impl fidl::endpoints::Responder for DataRouterDeprecatedRouteResponder {
9066    type ControlHandle = DataRouterDeprecatedControlHandle;
9067
9068    fn control_handle(&self) -> &DataRouterDeprecatedControlHandle {
9069        &self.control_handle
9070    }
9071
9072    fn drop_without_shutdown(mut self) {
9073        // Safety: drops once, never accessed again due to mem::forget
9074        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
9075        // Prevent Drop from running (which would shut down the channel)
9076        std::mem::forget(self);
9077    }
9078}
9079
9080impl DataRouterDeprecatedRouteResponder {
9081    /// Sends a response to the FIDL transaction.
9082    ///
9083    /// Sets the channel to shutdown if an error occurs.
9084    pub fn send(
9085        self,
9086        mut result: Result<(RouterResponse, Option<&Data>), RouterError>,
9087    ) -> Result<(), fidl::Error> {
9088        let _result = self.send_raw(result);
9089        if _result.is_err() {
9090            self.control_handle.shutdown();
9091        }
9092        self.drop_without_shutdown();
9093        _result
9094    }
9095
9096    /// Similar to "send" but does not shutdown the channel if an error occurs.
9097    pub fn send_no_shutdown_on_err(
9098        self,
9099        mut result: Result<(RouterResponse, Option<&Data>), RouterError>,
9100    ) -> Result<(), fidl::Error> {
9101        let _result = self.send_raw(result);
9102        self.drop_without_shutdown();
9103        _result
9104    }
9105
9106    fn send_raw(
9107        &self,
9108        mut result: Result<(RouterResponse, Option<&Data>), RouterError>,
9109    ) -> Result<(), fidl::Error> {
9110        self.control_handle.inner.send::<fidl::encoding::FlexibleResultType<
9111            DataRouterDeprecatedRouteResponse,
9112            RouterError,
9113        >>(
9114            fidl::encoding::FlexibleResult::new(result),
9115            self.tx_id,
9116            0x9a0b381e65e9ed3,
9117            fidl::encoding::DynamicFlags::FLEXIBLE,
9118        )
9119    }
9120}
9121
9122#[derive(Debug, Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash)]
9123pub struct DictionaryMarker;
9124
9125impl fidl::endpoints::ProtocolMarker for DictionaryMarker {
9126    type Proxy = DictionaryProxy;
9127    type RequestStream = DictionaryRequestStream;
9128    #[cfg(target_os = "fuchsia")]
9129    type SynchronousProxy = DictionarySynchronousProxy;
9130
9131    const DEBUG_NAME: &'static str = "(anonymous) Dictionary";
9132}
9133
9134pub trait DictionaryProxyInterface: Send + Sync {
9135    fn r#clone(
9136        &self,
9137        request: fidl::endpoints::ServerEnd<fidl_fuchsia_unknown::CloneableMarker>,
9138    ) -> Result<(), fidl::Error>;
9139    fn r#insert(&self, key: &str, capability: CapabilityDeprecated) -> Result<(), fidl::Error>;
9140    type GetResponseFut: std::future::Future<Output = Result<Option<Box<CapabilityDeprecated>>, fidl::Error>>
9141        + Send;
9142    fn r#get(&self, key: &str) -> Self::GetResponseFut;
9143    type RemoveResponseFut: std::future::Future<Output = Result<Option<Box<CapabilityDeprecated>>, fidl::Error>>
9144        + Send;
9145    fn r#remove(&self, key: &str) -> Self::RemoveResponseFut;
9146    fn r#iterate_keys(
9147        &self,
9148        key_iterator: fidl::endpoints::ServerEnd<DictionaryKeyIteratorMarker>,
9149    ) -> Result<(), fidl::Error>;
9150    type LegacyExportResponseFut: std::future::Future<
9151            Output = Result<fidl_fuchsia_component_sandbox::DictionaryRef, fidl::Error>,
9152        > + Send;
9153    fn r#legacy_export(&self) -> Self::LegacyExportResponseFut;
9154}
9155#[derive(Debug)]
9156#[cfg(target_os = "fuchsia")]
9157pub struct DictionarySynchronousProxy {
9158    client: fidl::client::sync::Client,
9159}
9160
9161#[cfg(target_os = "fuchsia")]
9162impl fidl::endpoints::SynchronousProxy for DictionarySynchronousProxy {
9163    type Proxy = DictionaryProxy;
9164    type Protocol = DictionaryMarker;
9165
9166    fn from_channel(inner: fidl::Channel) -> Self {
9167        Self::new(inner)
9168    }
9169
9170    fn into_channel(self) -> fidl::Channel {
9171        self.client.into_channel()
9172    }
9173
9174    fn as_channel(&self) -> &fidl::Channel {
9175        self.client.as_channel()
9176    }
9177}
9178
9179#[cfg(target_os = "fuchsia")]
9180impl DictionarySynchronousProxy {
9181    pub fn new(channel: fidl::Channel) -> Self {
9182        let protocol_name = <DictionaryMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
9183        Self { client: fidl::client::sync::Client::new(channel, protocol_name) }
9184    }
9185
9186    pub fn into_channel(self) -> fidl::Channel {
9187        self.client.into_channel()
9188    }
9189
9190    /// Waits until an event arrives and returns it. It is safe for other
9191    /// threads to make concurrent requests while waiting for an event.
9192    pub fn wait_for_event(
9193        &self,
9194        deadline: zx::MonotonicInstant,
9195    ) -> Result<DictionaryEvent, fidl::Error> {
9196        DictionaryEvent::decode(self.client.wait_for_event(deadline)?)
9197    }
9198
9199    pub fn r#clone(
9200        &self,
9201        mut request: fidl::endpoints::ServerEnd<fidl_fuchsia_unknown::CloneableMarker>,
9202    ) -> Result<(), fidl::Error> {
9203        self.client.send::<fidl_fuchsia_unknown::CloneableCloneRequest>(
9204            (request,),
9205            0x20d8a7aba2168a79,
9206            fidl::encoding::DynamicFlags::empty(),
9207        )
9208    }
9209
9210    /// Inserts a new `Capability` into this `Dictionary` under the name `key`.
9211    /// Overwrites any existing entry.
9212    ///
9213    /// The server end associated with the provided client end must be owned by
9214    /// component manager.
9215    pub fn r#insert(
9216        &self,
9217        mut key: &str,
9218        mut capability: CapabilityDeprecated,
9219    ) -> Result<(), fidl::Error> {
9220        self.client.send::<DictionaryInsertRequest>(
9221            (key, &mut capability),
9222            0x673364c89c4b0ed7,
9223            fidl::encoding::DynamicFlags::FLEXIBLE,
9224        )
9225    }
9226
9227    /// Returns a clone of the `Capability` named `key` in this dictionary, if
9228    /// that capability both exists and can be cloned.
9229    pub fn r#get(
9230        &self,
9231        mut key: &str,
9232        ___deadline: zx::MonotonicInstant,
9233    ) -> Result<Option<Box<CapabilityDeprecated>>, fidl::Error> {
9234        let _response = self.client.send_query::<
9235            DictionaryGetRequest,
9236            fidl::encoding::FlexibleType<DictionaryGetResponse>,
9237        >(
9238            (key,),
9239            0x46d4b1dcd30feed9,
9240            fidl::encoding::DynamicFlags::FLEXIBLE,
9241            ___deadline,
9242        )?
9243        .into_result::<DictionaryMarker>("get")?;
9244        Ok(_response.capability)
9245    }
9246
9247    /// Removes the `Capability` named `key` from this dictionary and returns
9248    /// it, if that capability exists.
9249    pub fn r#remove(
9250        &self,
9251        mut key: &str,
9252        ___deadline: zx::MonotonicInstant,
9253    ) -> Result<Option<Box<CapabilityDeprecated>>, fidl::Error> {
9254        let _response = self.client.send_query::<
9255            DictionaryRemoveRequest,
9256            fidl::encoding::FlexibleType<DictionaryRemoveResponse>,
9257        >(
9258            (key,),
9259            0x7931ac0ea29dffe7,
9260            fidl::encoding::DynamicFlags::FLEXIBLE,
9261            ___deadline,
9262        )?
9263        .into_result::<DictionaryMarker>("remove")?;
9264        Ok(_response.capability)
9265    }
9266
9267    /// Opens an iterator which can be used to iterate over the keys of this
9268    /// dictionary.
9269    pub fn r#iterate_keys(
9270        &self,
9271        mut key_iterator: fidl::endpoints::ServerEnd<DictionaryKeyIteratorMarker>,
9272    ) -> Result<(), fidl::Error> {
9273        self.client.send::<DictionaryIterateKeysRequest>(
9274            (key_iterator,),
9275            0x331df1e1e73158a1,
9276            fidl::encoding::DynamicFlags::FLEXIBLE,
9277        )
9278    }
9279
9280    /// Exports this dictionary for use in a
9281    /// `fuchsia.component.Realm/CreateChild` call.
9282    pub fn r#legacy_export(
9283        &self,
9284        ___deadline: zx::MonotonicInstant,
9285    ) -> Result<fidl_fuchsia_component_sandbox::DictionaryRef, fidl::Error> {
9286        let _response = self.client.send_query::<
9287            fidl::encoding::EmptyPayload,
9288            fidl::encoding::FlexibleType<DictionaryLegacyExportResponse>,
9289        >(
9290            (),
9291            0x722a26456a1ee1d0,
9292            fidl::encoding::DynamicFlags::FLEXIBLE,
9293            ___deadline,
9294        )?
9295        .into_result::<DictionaryMarker>("legacy_export")?;
9296        Ok(_response.dictionary_ref)
9297    }
9298}
9299
9300#[cfg(target_os = "fuchsia")]
9301impl From<DictionarySynchronousProxy> for zx::NullableHandle {
9302    fn from(value: DictionarySynchronousProxy) -> Self {
9303        value.into_channel().into()
9304    }
9305}
9306
9307#[cfg(target_os = "fuchsia")]
9308impl From<fidl::Channel> for DictionarySynchronousProxy {
9309    fn from(value: fidl::Channel) -> Self {
9310        Self::new(value)
9311    }
9312}
9313
9314#[cfg(target_os = "fuchsia")]
9315impl fidl::endpoints::FromClient for DictionarySynchronousProxy {
9316    type Protocol = DictionaryMarker;
9317
9318    fn from_client(value: fidl::endpoints::ClientEnd<DictionaryMarker>) -> Self {
9319        Self::new(value.into_channel())
9320    }
9321}
9322
9323#[derive(Debug, Clone)]
9324pub struct DictionaryProxy {
9325    client: fidl::client::Client<fidl::encoding::DefaultFuchsiaResourceDialect>,
9326}
9327
9328impl fidl::endpoints::Proxy for DictionaryProxy {
9329    type Protocol = DictionaryMarker;
9330
9331    fn from_channel(inner: ::fidl::AsyncChannel) -> Self {
9332        Self::new(inner)
9333    }
9334
9335    fn into_channel(self) -> Result<::fidl::AsyncChannel, Self> {
9336        self.client.into_channel().map_err(|client| Self { client })
9337    }
9338
9339    fn as_channel(&self) -> &::fidl::AsyncChannel {
9340        self.client.as_channel()
9341    }
9342}
9343
9344impl DictionaryProxy {
9345    /// Create a new Proxy for fuchsia.component.runtime/Dictionary.
9346    pub fn new(channel: ::fidl::AsyncChannel) -> Self {
9347        let protocol_name = <DictionaryMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
9348        Self { client: fidl::client::Client::new(channel, protocol_name) }
9349    }
9350
9351    /// Get a Stream of events from the remote end of the protocol.
9352    ///
9353    /// # Panics
9354    ///
9355    /// Panics if the event stream was already taken.
9356    pub fn take_event_stream(&self) -> DictionaryEventStream {
9357        DictionaryEventStream { event_receiver: self.client.take_event_receiver() }
9358    }
9359
9360    pub fn r#clone(
9361        &self,
9362        mut request: fidl::endpoints::ServerEnd<fidl_fuchsia_unknown::CloneableMarker>,
9363    ) -> Result<(), fidl::Error> {
9364        DictionaryProxyInterface::r#clone(self, request)
9365    }
9366
9367    /// Inserts a new `Capability` into this `Dictionary` under the name `key`.
9368    /// Overwrites any existing entry.
9369    ///
9370    /// The server end associated with the provided client end must be owned by
9371    /// component manager.
9372    pub fn r#insert(
9373        &self,
9374        mut key: &str,
9375        mut capability: CapabilityDeprecated,
9376    ) -> Result<(), fidl::Error> {
9377        DictionaryProxyInterface::r#insert(self, key, capability)
9378    }
9379
9380    /// Returns a clone of the `Capability` named `key` in this dictionary, if
9381    /// that capability both exists and can be cloned.
9382    pub fn r#get(
9383        &self,
9384        mut key: &str,
9385    ) -> fidl::client::QueryResponseFut<
9386        Option<Box<CapabilityDeprecated>>,
9387        fidl::encoding::DefaultFuchsiaResourceDialect,
9388    > {
9389        DictionaryProxyInterface::r#get(self, key)
9390    }
9391
9392    /// Removes the `Capability` named `key` from this dictionary and returns
9393    /// it, if that capability exists.
9394    pub fn r#remove(
9395        &self,
9396        mut key: &str,
9397    ) -> fidl::client::QueryResponseFut<
9398        Option<Box<CapabilityDeprecated>>,
9399        fidl::encoding::DefaultFuchsiaResourceDialect,
9400    > {
9401        DictionaryProxyInterface::r#remove(self, key)
9402    }
9403
9404    /// Opens an iterator which can be used to iterate over the keys of this
9405    /// dictionary.
9406    pub fn r#iterate_keys(
9407        &self,
9408        mut key_iterator: fidl::endpoints::ServerEnd<DictionaryKeyIteratorMarker>,
9409    ) -> Result<(), fidl::Error> {
9410        DictionaryProxyInterface::r#iterate_keys(self, key_iterator)
9411    }
9412
9413    /// Exports this dictionary for use in a
9414    /// `fuchsia.component.Realm/CreateChild` call.
9415    pub fn r#legacy_export(
9416        &self,
9417    ) -> fidl::client::QueryResponseFut<
9418        fidl_fuchsia_component_sandbox::DictionaryRef,
9419        fidl::encoding::DefaultFuchsiaResourceDialect,
9420    > {
9421        DictionaryProxyInterface::r#legacy_export(self)
9422    }
9423}
9424
9425impl DictionaryProxyInterface for DictionaryProxy {
9426    fn r#clone(
9427        &self,
9428        mut request: fidl::endpoints::ServerEnd<fidl_fuchsia_unknown::CloneableMarker>,
9429    ) -> Result<(), fidl::Error> {
9430        self.client.send::<fidl_fuchsia_unknown::CloneableCloneRequest>(
9431            (request,),
9432            0x20d8a7aba2168a79,
9433            fidl::encoding::DynamicFlags::empty(),
9434        )
9435    }
9436
9437    fn r#insert(
9438        &self,
9439        mut key: &str,
9440        mut capability: CapabilityDeprecated,
9441    ) -> Result<(), fidl::Error> {
9442        self.client.send::<DictionaryInsertRequest>(
9443            (key, &mut capability),
9444            0x673364c89c4b0ed7,
9445            fidl::encoding::DynamicFlags::FLEXIBLE,
9446        )
9447    }
9448
9449    type GetResponseFut = fidl::client::QueryResponseFut<
9450        Option<Box<CapabilityDeprecated>>,
9451        fidl::encoding::DefaultFuchsiaResourceDialect,
9452    >;
9453    fn r#get(&self, mut key: &str) -> Self::GetResponseFut {
9454        fn _decode(
9455            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
9456        ) -> Result<Option<Box<CapabilityDeprecated>>, fidl::Error> {
9457            let _response = fidl::client::decode_transaction_body::<
9458                fidl::encoding::FlexibleType<DictionaryGetResponse>,
9459                fidl::encoding::DefaultFuchsiaResourceDialect,
9460                0x46d4b1dcd30feed9,
9461            >(_buf?)?
9462            .into_result::<DictionaryMarker>("get")?;
9463            Ok(_response.capability)
9464        }
9465        self.client
9466            .send_query_and_decode::<DictionaryGetRequest, Option<Box<CapabilityDeprecated>>>(
9467                (key,),
9468                0x46d4b1dcd30feed9,
9469                fidl::encoding::DynamicFlags::FLEXIBLE,
9470                _decode,
9471            )
9472    }
9473
9474    type RemoveResponseFut = fidl::client::QueryResponseFut<
9475        Option<Box<CapabilityDeprecated>>,
9476        fidl::encoding::DefaultFuchsiaResourceDialect,
9477    >;
9478    fn r#remove(&self, mut key: &str) -> Self::RemoveResponseFut {
9479        fn _decode(
9480            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
9481        ) -> Result<Option<Box<CapabilityDeprecated>>, fidl::Error> {
9482            let _response = fidl::client::decode_transaction_body::<
9483                fidl::encoding::FlexibleType<DictionaryRemoveResponse>,
9484                fidl::encoding::DefaultFuchsiaResourceDialect,
9485                0x7931ac0ea29dffe7,
9486            >(_buf?)?
9487            .into_result::<DictionaryMarker>("remove")?;
9488            Ok(_response.capability)
9489        }
9490        self.client
9491            .send_query_and_decode::<DictionaryRemoveRequest, Option<Box<CapabilityDeprecated>>>(
9492                (key,),
9493                0x7931ac0ea29dffe7,
9494                fidl::encoding::DynamicFlags::FLEXIBLE,
9495                _decode,
9496            )
9497    }
9498
9499    fn r#iterate_keys(
9500        &self,
9501        mut key_iterator: fidl::endpoints::ServerEnd<DictionaryKeyIteratorMarker>,
9502    ) -> Result<(), fidl::Error> {
9503        self.client.send::<DictionaryIterateKeysRequest>(
9504            (key_iterator,),
9505            0x331df1e1e73158a1,
9506            fidl::encoding::DynamicFlags::FLEXIBLE,
9507        )
9508    }
9509
9510    type LegacyExportResponseFut = fidl::client::QueryResponseFut<
9511        fidl_fuchsia_component_sandbox::DictionaryRef,
9512        fidl::encoding::DefaultFuchsiaResourceDialect,
9513    >;
9514    fn r#legacy_export(&self) -> Self::LegacyExportResponseFut {
9515        fn _decode(
9516            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
9517        ) -> Result<fidl_fuchsia_component_sandbox::DictionaryRef, fidl::Error> {
9518            let _response = fidl::client::decode_transaction_body::<
9519                fidl::encoding::FlexibleType<DictionaryLegacyExportResponse>,
9520                fidl::encoding::DefaultFuchsiaResourceDialect,
9521                0x722a26456a1ee1d0,
9522            >(_buf?)?
9523            .into_result::<DictionaryMarker>("legacy_export")?;
9524            Ok(_response.dictionary_ref)
9525        }
9526        self.client.send_query_and_decode::<
9527            fidl::encoding::EmptyPayload,
9528            fidl_fuchsia_component_sandbox::DictionaryRef,
9529        >(
9530            (),
9531            0x722a26456a1ee1d0,
9532            fidl::encoding::DynamicFlags::FLEXIBLE,
9533            _decode,
9534        )
9535    }
9536}
9537
9538pub struct DictionaryEventStream {
9539    event_receiver: fidl::client::EventReceiver<fidl::encoding::DefaultFuchsiaResourceDialect>,
9540}
9541
9542impl std::marker::Unpin for DictionaryEventStream {}
9543
9544impl futures::stream::FusedStream for DictionaryEventStream {
9545    fn is_terminated(&self) -> bool {
9546        self.event_receiver.is_terminated()
9547    }
9548}
9549
9550impl futures::Stream for DictionaryEventStream {
9551    type Item = Result<DictionaryEvent, fidl::Error>;
9552
9553    fn poll_next(
9554        mut self: std::pin::Pin<&mut Self>,
9555        cx: &mut std::task::Context<'_>,
9556    ) -> std::task::Poll<Option<Self::Item>> {
9557        match futures::ready!(futures::stream::StreamExt::poll_next_unpin(
9558            &mut self.event_receiver,
9559            cx
9560        )?) {
9561            Some(buf) => std::task::Poll::Ready(Some(DictionaryEvent::decode(buf))),
9562            None => std::task::Poll::Ready(None),
9563        }
9564    }
9565}
9566
9567#[derive(Debug)]
9568pub enum DictionaryEvent {
9569    #[non_exhaustive]
9570    _UnknownEvent {
9571        /// Ordinal of the event that was sent.
9572        ordinal: u64,
9573    },
9574}
9575
9576impl DictionaryEvent {
9577    /// Decodes a message buffer as a [`DictionaryEvent`].
9578    fn decode(
9579        mut buf: <fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc,
9580    ) -> Result<DictionaryEvent, fidl::Error> {
9581        let (bytes, _handles) = buf.split_mut();
9582        let (tx_header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
9583        debug_assert_eq!(tx_header.tx_id, 0);
9584        match tx_header.ordinal {
9585            _ if tx_header.dynamic_flags().contains(fidl::encoding::DynamicFlags::FLEXIBLE) => {
9586                Ok(DictionaryEvent::_UnknownEvent { ordinal: tx_header.ordinal })
9587            }
9588            _ => Err(fidl::Error::UnknownOrdinal {
9589                ordinal: tx_header.ordinal,
9590                protocol_name: <DictionaryMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
9591            }),
9592        }
9593    }
9594}
9595
9596/// A Stream of incoming requests for fuchsia.component.runtime/Dictionary.
9597pub struct DictionaryRequestStream {
9598    inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
9599    is_terminated: bool,
9600}
9601
9602impl std::marker::Unpin for DictionaryRequestStream {}
9603
9604impl futures::stream::FusedStream for DictionaryRequestStream {
9605    fn is_terminated(&self) -> bool {
9606        self.is_terminated
9607    }
9608}
9609
9610impl fidl::endpoints::RequestStream for DictionaryRequestStream {
9611    type Protocol = DictionaryMarker;
9612    type ControlHandle = DictionaryControlHandle;
9613
9614    fn from_channel(channel: ::fidl::AsyncChannel) -> Self {
9615        Self { inner: std::sync::Arc::new(fidl::ServeInner::new(channel)), is_terminated: false }
9616    }
9617
9618    fn control_handle(&self) -> Self::ControlHandle {
9619        DictionaryControlHandle { inner: self.inner.clone() }
9620    }
9621
9622    fn into_inner(
9623        self,
9624    ) -> (::std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>, bool)
9625    {
9626        (self.inner, self.is_terminated)
9627    }
9628
9629    fn from_inner(
9630        inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
9631        is_terminated: bool,
9632    ) -> Self {
9633        Self { inner, is_terminated }
9634    }
9635}
9636
9637impl futures::Stream for DictionaryRequestStream {
9638    type Item = Result<DictionaryRequest, fidl::Error>;
9639
9640    fn poll_next(
9641        mut self: std::pin::Pin<&mut Self>,
9642        cx: &mut std::task::Context<'_>,
9643    ) -> std::task::Poll<Option<Self::Item>> {
9644        let this = &mut *self;
9645        if this.inner.check_shutdown(cx) {
9646            this.is_terminated = true;
9647            return std::task::Poll::Ready(None);
9648        }
9649        if this.is_terminated {
9650            panic!("polled DictionaryRequestStream after completion");
9651        }
9652        fidl::encoding::with_tls_decode_buf::<_, fidl::encoding::DefaultFuchsiaResourceDialect>(
9653            |bytes, handles| {
9654                match this.inner.channel().read_etc(cx, bytes, handles) {
9655                    std::task::Poll::Ready(Ok(())) => {}
9656                    std::task::Poll::Pending => return std::task::Poll::Pending,
9657                    std::task::Poll::Ready(Err(zx_status::Status::PEER_CLOSED)) => {
9658                        this.is_terminated = true;
9659                        return std::task::Poll::Ready(None);
9660                    }
9661                    std::task::Poll::Ready(Err(e)) => {
9662                        return std::task::Poll::Ready(Some(Err(fidl::Error::ServerRequestRead(
9663                            e.into(),
9664                        ))));
9665                    }
9666                }
9667
9668                // A message has been received from the channel
9669                let (header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
9670
9671                std::task::Poll::Ready(Some(match header.ordinal {
9672                    0x20d8a7aba2168a79 => {
9673                        header.validate_request_tx_id(fidl::MethodType::OneWay)?;
9674                        let mut req = fidl::new_empty!(
9675                            fidl_fuchsia_unknown::CloneableCloneRequest,
9676                            fidl::encoding::DefaultFuchsiaResourceDialect
9677                        );
9678                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_unknown::CloneableCloneRequest>(&header, _body_bytes, handles, &mut req)?;
9679                        let control_handle = DictionaryControlHandle { inner: this.inner.clone() };
9680                        Ok(DictionaryRequest::Clone { request: req.request, control_handle })
9681                    }
9682                    0x673364c89c4b0ed7 => {
9683                        header.validate_request_tx_id(fidl::MethodType::OneWay)?;
9684                        let mut req = fidl::new_empty!(
9685                            DictionaryInsertRequest,
9686                            fidl::encoding::DefaultFuchsiaResourceDialect
9687                        );
9688                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<DictionaryInsertRequest>(&header, _body_bytes, handles, &mut req)?;
9689                        let control_handle = DictionaryControlHandle { inner: this.inner.clone() };
9690                        Ok(DictionaryRequest::Insert {
9691                            key: req.key,
9692                            capability: req.capability,
9693
9694                            control_handle,
9695                        })
9696                    }
9697                    0x46d4b1dcd30feed9 => {
9698                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
9699                        let mut req = fidl::new_empty!(
9700                            DictionaryGetRequest,
9701                            fidl::encoding::DefaultFuchsiaResourceDialect
9702                        );
9703                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<DictionaryGetRequest>(&header, _body_bytes, handles, &mut req)?;
9704                        let control_handle = DictionaryControlHandle { inner: this.inner.clone() };
9705                        Ok(DictionaryRequest::Get {
9706                            key: req.key,
9707
9708                            responder: DictionaryGetResponder {
9709                                control_handle: std::mem::ManuallyDrop::new(control_handle),
9710                                tx_id: header.tx_id,
9711                            },
9712                        })
9713                    }
9714                    0x7931ac0ea29dffe7 => {
9715                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
9716                        let mut req = fidl::new_empty!(
9717                            DictionaryRemoveRequest,
9718                            fidl::encoding::DefaultFuchsiaResourceDialect
9719                        );
9720                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<DictionaryRemoveRequest>(&header, _body_bytes, handles, &mut req)?;
9721                        let control_handle = DictionaryControlHandle { inner: this.inner.clone() };
9722                        Ok(DictionaryRequest::Remove {
9723                            key: req.key,
9724
9725                            responder: DictionaryRemoveResponder {
9726                                control_handle: std::mem::ManuallyDrop::new(control_handle),
9727                                tx_id: header.tx_id,
9728                            },
9729                        })
9730                    }
9731                    0x331df1e1e73158a1 => {
9732                        header.validate_request_tx_id(fidl::MethodType::OneWay)?;
9733                        let mut req = fidl::new_empty!(
9734                            DictionaryIterateKeysRequest,
9735                            fidl::encoding::DefaultFuchsiaResourceDialect
9736                        );
9737                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<DictionaryIterateKeysRequest>(&header, _body_bytes, handles, &mut req)?;
9738                        let control_handle = DictionaryControlHandle { inner: this.inner.clone() };
9739                        Ok(DictionaryRequest::IterateKeys {
9740                            key_iterator: req.key_iterator,
9741
9742                            control_handle,
9743                        })
9744                    }
9745                    0x722a26456a1ee1d0 => {
9746                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
9747                        let mut req = fidl::new_empty!(
9748                            fidl::encoding::EmptyPayload,
9749                            fidl::encoding::DefaultFuchsiaResourceDialect
9750                        );
9751                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
9752                        let control_handle = DictionaryControlHandle { inner: this.inner.clone() };
9753                        Ok(DictionaryRequest::LegacyExport {
9754                            responder: DictionaryLegacyExportResponder {
9755                                control_handle: std::mem::ManuallyDrop::new(control_handle),
9756                                tx_id: header.tx_id,
9757                            },
9758                        })
9759                    }
9760                    _ if header.tx_id == 0
9761                        && header
9762                            .dynamic_flags()
9763                            .contains(fidl::encoding::DynamicFlags::FLEXIBLE) =>
9764                    {
9765                        Ok(DictionaryRequest::_UnknownMethod {
9766                            ordinal: header.ordinal,
9767                            control_handle: DictionaryControlHandle { inner: this.inner.clone() },
9768                            method_type: fidl::MethodType::OneWay,
9769                        })
9770                    }
9771                    _ if header
9772                        .dynamic_flags()
9773                        .contains(fidl::encoding::DynamicFlags::FLEXIBLE) =>
9774                    {
9775                        this.inner.send_framework_err(
9776                            fidl::encoding::FrameworkErr::UnknownMethod,
9777                            header.tx_id,
9778                            header.ordinal,
9779                            header.dynamic_flags(),
9780                            (bytes, handles),
9781                        )?;
9782                        Ok(DictionaryRequest::_UnknownMethod {
9783                            ordinal: header.ordinal,
9784                            control_handle: DictionaryControlHandle { inner: this.inner.clone() },
9785                            method_type: fidl::MethodType::TwoWay,
9786                        })
9787                    }
9788                    _ => Err(fidl::Error::UnknownOrdinal {
9789                        ordinal: header.ordinal,
9790                        protocol_name:
9791                            <DictionaryMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
9792                    }),
9793                }))
9794            },
9795        )
9796    }
9797}
9798
9799/// A `Dictionary` is a bundle of named runtime capabilities.
9800#[derive(Debug)]
9801pub enum DictionaryRequest {
9802    Clone {
9803        request: fidl::endpoints::ServerEnd<fidl_fuchsia_unknown::CloneableMarker>,
9804        control_handle: DictionaryControlHandle,
9805    },
9806    /// Inserts a new `Capability` into this `Dictionary` under the name `key`.
9807    /// Overwrites any existing entry.
9808    ///
9809    /// The server end associated with the provided client end must be owned by
9810    /// component manager.
9811    Insert {
9812        key: String,
9813        capability: CapabilityDeprecated,
9814        control_handle: DictionaryControlHandle,
9815    },
9816    /// Returns a clone of the `Capability` named `key` in this dictionary, if
9817    /// that capability both exists and can be cloned.
9818    Get { key: String, responder: DictionaryGetResponder },
9819    /// Removes the `Capability` named `key` from this dictionary and returns
9820    /// it, if that capability exists.
9821    Remove { key: String, responder: DictionaryRemoveResponder },
9822    /// Opens an iterator which can be used to iterate over the keys of this
9823    /// dictionary.
9824    IterateKeys {
9825        key_iterator: fidl::endpoints::ServerEnd<DictionaryKeyIteratorMarker>,
9826        control_handle: DictionaryControlHandle,
9827    },
9828    /// Exports this dictionary for use in a
9829    /// `fuchsia.component.Realm/CreateChild` call.
9830    LegacyExport { responder: DictionaryLegacyExportResponder },
9831    /// An interaction was received which does not match any known method.
9832    #[non_exhaustive]
9833    _UnknownMethod {
9834        /// Ordinal of the method that was called.
9835        ordinal: u64,
9836        control_handle: DictionaryControlHandle,
9837        method_type: fidl::MethodType,
9838    },
9839}
9840
9841impl DictionaryRequest {
9842    #[allow(irrefutable_let_patterns)]
9843    pub fn into_clone(
9844        self,
9845    ) -> Option<(
9846        fidl::endpoints::ServerEnd<fidl_fuchsia_unknown::CloneableMarker>,
9847        DictionaryControlHandle,
9848    )> {
9849        if let DictionaryRequest::Clone { request, control_handle } = self {
9850            Some((request, control_handle))
9851        } else {
9852            None
9853        }
9854    }
9855
9856    #[allow(irrefutable_let_patterns)]
9857    pub fn into_insert(self) -> Option<(String, CapabilityDeprecated, DictionaryControlHandle)> {
9858        if let DictionaryRequest::Insert { key, capability, control_handle } = self {
9859            Some((key, capability, control_handle))
9860        } else {
9861            None
9862        }
9863    }
9864
9865    #[allow(irrefutable_let_patterns)]
9866    pub fn into_get(self) -> Option<(String, DictionaryGetResponder)> {
9867        if let DictionaryRequest::Get { key, responder } = self {
9868            Some((key, responder))
9869        } else {
9870            None
9871        }
9872    }
9873
9874    #[allow(irrefutable_let_patterns)]
9875    pub fn into_remove(self) -> Option<(String, DictionaryRemoveResponder)> {
9876        if let DictionaryRequest::Remove { key, responder } = self {
9877            Some((key, responder))
9878        } else {
9879            None
9880        }
9881    }
9882
9883    #[allow(irrefutable_let_patterns)]
9884    pub fn into_iterate_keys(
9885        self,
9886    ) -> Option<(fidl::endpoints::ServerEnd<DictionaryKeyIteratorMarker>, DictionaryControlHandle)>
9887    {
9888        if let DictionaryRequest::IterateKeys { key_iterator, control_handle } = self {
9889            Some((key_iterator, control_handle))
9890        } else {
9891            None
9892        }
9893    }
9894
9895    #[allow(irrefutable_let_patterns)]
9896    pub fn into_legacy_export(self) -> Option<(DictionaryLegacyExportResponder)> {
9897        if let DictionaryRequest::LegacyExport { responder } = self {
9898            Some((responder))
9899        } else {
9900            None
9901        }
9902    }
9903
9904    /// Name of the method defined in FIDL
9905    pub fn method_name(&self) -> &'static str {
9906        match *self {
9907            DictionaryRequest::Clone { .. } => "clone",
9908            DictionaryRequest::Insert { .. } => "insert",
9909            DictionaryRequest::Get { .. } => "get",
9910            DictionaryRequest::Remove { .. } => "remove",
9911            DictionaryRequest::IterateKeys { .. } => "iterate_keys",
9912            DictionaryRequest::LegacyExport { .. } => "legacy_export",
9913            DictionaryRequest::_UnknownMethod { method_type: fidl::MethodType::OneWay, .. } => {
9914                "unknown one-way method"
9915            }
9916            DictionaryRequest::_UnknownMethod { method_type: fidl::MethodType::TwoWay, .. } => {
9917                "unknown two-way method"
9918            }
9919        }
9920    }
9921}
9922
9923#[derive(Debug, Clone)]
9924pub struct DictionaryControlHandle {
9925    inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
9926}
9927
9928impl fidl::endpoints::ControlHandle for DictionaryControlHandle {
9929    fn shutdown(&self) {
9930        self.inner.shutdown()
9931    }
9932
9933    fn shutdown_with_epitaph(&self, status: zx_status::Status) {
9934        self.inner.shutdown_with_epitaph(status)
9935    }
9936
9937    fn is_closed(&self) -> bool {
9938        self.inner.channel().is_closed()
9939    }
9940    fn on_closed(&self) -> fidl::OnSignalsRef<'_> {
9941        self.inner.channel().on_closed()
9942    }
9943
9944    #[cfg(target_os = "fuchsia")]
9945    fn signal_peer(
9946        &self,
9947        clear_mask: zx::Signals,
9948        set_mask: zx::Signals,
9949    ) -> Result<(), zx_status::Status> {
9950        use fidl::Peered;
9951        self.inner.channel().signal_peer(clear_mask, set_mask)
9952    }
9953}
9954
9955impl DictionaryControlHandle {}
9956
9957#[must_use = "FIDL methods require a response to be sent"]
9958#[derive(Debug)]
9959pub struct DictionaryGetResponder {
9960    control_handle: std::mem::ManuallyDrop<DictionaryControlHandle>,
9961    tx_id: u32,
9962}
9963
9964/// Set the the channel to be shutdown (see [`DictionaryControlHandle::shutdown`])
9965/// if the responder is dropped without sending a response, so that the client
9966/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
9967impl std::ops::Drop for DictionaryGetResponder {
9968    fn drop(&mut self) {
9969        self.control_handle.shutdown();
9970        // Safety: drops once, never accessed again
9971        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
9972    }
9973}
9974
9975impl fidl::endpoints::Responder for DictionaryGetResponder {
9976    type ControlHandle = DictionaryControlHandle;
9977
9978    fn control_handle(&self) -> &DictionaryControlHandle {
9979        &self.control_handle
9980    }
9981
9982    fn drop_without_shutdown(mut self) {
9983        // Safety: drops once, never accessed again due to mem::forget
9984        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
9985        // Prevent Drop from running (which would shut down the channel)
9986        std::mem::forget(self);
9987    }
9988}
9989
9990impl DictionaryGetResponder {
9991    /// Sends a response to the FIDL transaction.
9992    ///
9993    /// Sets the channel to shutdown if an error occurs.
9994    pub fn send(self, mut capability: Option<CapabilityDeprecated>) -> Result<(), fidl::Error> {
9995        let _result = self.send_raw(capability);
9996        if _result.is_err() {
9997            self.control_handle.shutdown();
9998        }
9999        self.drop_without_shutdown();
10000        _result
10001    }
10002
10003    /// Similar to "send" but does not shutdown the channel if an error occurs.
10004    pub fn send_no_shutdown_on_err(
10005        self,
10006        mut capability: Option<CapabilityDeprecated>,
10007    ) -> Result<(), fidl::Error> {
10008        let _result = self.send_raw(capability);
10009        self.drop_without_shutdown();
10010        _result
10011    }
10012
10013    fn send_raw(&self, mut capability: Option<CapabilityDeprecated>) -> Result<(), fidl::Error> {
10014        self.control_handle.inner.send::<fidl::encoding::FlexibleType<DictionaryGetResponse>>(
10015            fidl::encoding::Flexible::new((capability.as_mut(),)),
10016            self.tx_id,
10017            0x46d4b1dcd30feed9,
10018            fidl::encoding::DynamicFlags::FLEXIBLE,
10019        )
10020    }
10021}
10022
10023#[must_use = "FIDL methods require a response to be sent"]
10024#[derive(Debug)]
10025pub struct DictionaryRemoveResponder {
10026    control_handle: std::mem::ManuallyDrop<DictionaryControlHandle>,
10027    tx_id: u32,
10028}
10029
10030/// Set the the channel to be shutdown (see [`DictionaryControlHandle::shutdown`])
10031/// if the responder is dropped without sending a response, so that the client
10032/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
10033impl std::ops::Drop for DictionaryRemoveResponder {
10034    fn drop(&mut self) {
10035        self.control_handle.shutdown();
10036        // Safety: drops once, never accessed again
10037        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
10038    }
10039}
10040
10041impl fidl::endpoints::Responder for DictionaryRemoveResponder {
10042    type ControlHandle = DictionaryControlHandle;
10043
10044    fn control_handle(&self) -> &DictionaryControlHandle {
10045        &self.control_handle
10046    }
10047
10048    fn drop_without_shutdown(mut self) {
10049        // Safety: drops once, never accessed again due to mem::forget
10050        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
10051        // Prevent Drop from running (which would shut down the channel)
10052        std::mem::forget(self);
10053    }
10054}
10055
10056impl DictionaryRemoveResponder {
10057    /// Sends a response to the FIDL transaction.
10058    ///
10059    /// Sets the channel to shutdown if an error occurs.
10060    pub fn send(self, mut capability: Option<CapabilityDeprecated>) -> Result<(), fidl::Error> {
10061        let _result = self.send_raw(capability);
10062        if _result.is_err() {
10063            self.control_handle.shutdown();
10064        }
10065        self.drop_without_shutdown();
10066        _result
10067    }
10068
10069    /// Similar to "send" but does not shutdown the channel if an error occurs.
10070    pub fn send_no_shutdown_on_err(
10071        self,
10072        mut capability: Option<CapabilityDeprecated>,
10073    ) -> Result<(), fidl::Error> {
10074        let _result = self.send_raw(capability);
10075        self.drop_without_shutdown();
10076        _result
10077    }
10078
10079    fn send_raw(&self, mut capability: Option<CapabilityDeprecated>) -> Result<(), fidl::Error> {
10080        self.control_handle.inner.send::<fidl::encoding::FlexibleType<DictionaryRemoveResponse>>(
10081            fidl::encoding::Flexible::new((capability.as_mut(),)),
10082            self.tx_id,
10083            0x7931ac0ea29dffe7,
10084            fidl::encoding::DynamicFlags::FLEXIBLE,
10085        )
10086    }
10087}
10088
10089#[must_use = "FIDL methods require a response to be sent"]
10090#[derive(Debug)]
10091pub struct DictionaryLegacyExportResponder {
10092    control_handle: std::mem::ManuallyDrop<DictionaryControlHandle>,
10093    tx_id: u32,
10094}
10095
10096/// Set the the channel to be shutdown (see [`DictionaryControlHandle::shutdown`])
10097/// if the responder is dropped without sending a response, so that the client
10098/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
10099impl std::ops::Drop for DictionaryLegacyExportResponder {
10100    fn drop(&mut self) {
10101        self.control_handle.shutdown();
10102        // Safety: drops once, never accessed again
10103        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
10104    }
10105}
10106
10107impl fidl::endpoints::Responder for DictionaryLegacyExportResponder {
10108    type ControlHandle = DictionaryControlHandle;
10109
10110    fn control_handle(&self) -> &DictionaryControlHandle {
10111        &self.control_handle
10112    }
10113
10114    fn drop_without_shutdown(mut self) {
10115        // Safety: drops once, never accessed again due to mem::forget
10116        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
10117        // Prevent Drop from running (which would shut down the channel)
10118        std::mem::forget(self);
10119    }
10120}
10121
10122impl DictionaryLegacyExportResponder {
10123    /// Sends a response to the FIDL transaction.
10124    ///
10125    /// Sets the channel to shutdown if an error occurs.
10126    pub fn send(
10127        self,
10128        mut dictionary_ref: fidl_fuchsia_component_sandbox::DictionaryRef,
10129    ) -> Result<(), fidl::Error> {
10130        let _result = self.send_raw(dictionary_ref);
10131        if _result.is_err() {
10132            self.control_handle.shutdown();
10133        }
10134        self.drop_without_shutdown();
10135        _result
10136    }
10137
10138    /// Similar to "send" but does not shutdown the channel if an error occurs.
10139    pub fn send_no_shutdown_on_err(
10140        self,
10141        mut dictionary_ref: fidl_fuchsia_component_sandbox::DictionaryRef,
10142    ) -> Result<(), fidl::Error> {
10143        let _result = self.send_raw(dictionary_ref);
10144        self.drop_without_shutdown();
10145        _result
10146    }
10147
10148    fn send_raw(
10149        &self,
10150        mut dictionary_ref: fidl_fuchsia_component_sandbox::DictionaryRef,
10151    ) -> Result<(), fidl::Error> {
10152        self.control_handle
10153            .inner
10154            .send::<fidl::encoding::FlexibleType<DictionaryLegacyExportResponse>>(
10155                fidl::encoding::Flexible::new((&mut dictionary_ref,)),
10156                self.tx_id,
10157                0x722a26456a1ee1d0,
10158                fidl::encoding::DynamicFlags::FLEXIBLE,
10159            )
10160    }
10161}
10162
10163#[derive(Debug, Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash)]
10164pub struct DictionaryKeyIteratorMarker;
10165
10166impl fidl::endpoints::ProtocolMarker for DictionaryKeyIteratorMarker {
10167    type Proxy = DictionaryKeyIteratorProxy;
10168    type RequestStream = DictionaryKeyIteratorRequestStream;
10169    #[cfg(target_os = "fuchsia")]
10170    type SynchronousProxy = DictionaryKeyIteratorSynchronousProxy;
10171
10172    const DEBUG_NAME: &'static str = "(anonymous) DictionaryKeyIterator";
10173}
10174
10175pub trait DictionaryKeyIteratorProxyInterface: Send + Sync {
10176    type GetNextResponseFut: std::future::Future<Output = Result<Vec<String>, fidl::Error>> + Send;
10177    fn r#get_next(&self) -> Self::GetNextResponseFut;
10178}
10179#[derive(Debug)]
10180#[cfg(target_os = "fuchsia")]
10181pub struct DictionaryKeyIteratorSynchronousProxy {
10182    client: fidl::client::sync::Client,
10183}
10184
10185#[cfg(target_os = "fuchsia")]
10186impl fidl::endpoints::SynchronousProxy for DictionaryKeyIteratorSynchronousProxy {
10187    type Proxy = DictionaryKeyIteratorProxy;
10188    type Protocol = DictionaryKeyIteratorMarker;
10189
10190    fn from_channel(inner: fidl::Channel) -> Self {
10191        Self::new(inner)
10192    }
10193
10194    fn into_channel(self) -> fidl::Channel {
10195        self.client.into_channel()
10196    }
10197
10198    fn as_channel(&self) -> &fidl::Channel {
10199        self.client.as_channel()
10200    }
10201}
10202
10203#[cfg(target_os = "fuchsia")]
10204impl DictionaryKeyIteratorSynchronousProxy {
10205    pub fn new(channel: fidl::Channel) -> Self {
10206        let protocol_name =
10207            <DictionaryKeyIteratorMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
10208        Self { client: fidl::client::sync::Client::new(channel, protocol_name) }
10209    }
10210
10211    pub fn into_channel(self) -> fidl::Channel {
10212        self.client.into_channel()
10213    }
10214
10215    /// Waits until an event arrives and returns it. It is safe for other
10216    /// threads to make concurrent requests while waiting for an event.
10217    pub fn wait_for_event(
10218        &self,
10219        deadline: zx::MonotonicInstant,
10220    ) -> Result<DictionaryKeyIteratorEvent, fidl::Error> {
10221        DictionaryKeyIteratorEvent::decode(self.client.wait_for_event(deadline)?)
10222    }
10223
10224    /// Returns the next set of keys in this dictionary. Returns an empty vector
10225    /// when there are no more keys to iterate.
10226    pub fn r#get_next(
10227        &self,
10228        ___deadline: zx::MonotonicInstant,
10229    ) -> Result<Vec<String>, fidl::Error> {
10230        let _response = self
10231            .client
10232            .send_query::<fidl::encoding::EmptyPayload, DictionaryKeyIteratorGetNextResponse>(
10233                (),
10234                0x3806bda34433db54,
10235                fidl::encoding::DynamicFlags::empty(),
10236                ___deadline,
10237            )?;
10238        Ok(_response.keys)
10239    }
10240}
10241
10242#[cfg(target_os = "fuchsia")]
10243impl From<DictionaryKeyIteratorSynchronousProxy> for zx::NullableHandle {
10244    fn from(value: DictionaryKeyIteratorSynchronousProxy) -> Self {
10245        value.into_channel().into()
10246    }
10247}
10248
10249#[cfg(target_os = "fuchsia")]
10250impl From<fidl::Channel> for DictionaryKeyIteratorSynchronousProxy {
10251    fn from(value: fidl::Channel) -> Self {
10252        Self::new(value)
10253    }
10254}
10255
10256#[cfg(target_os = "fuchsia")]
10257impl fidl::endpoints::FromClient for DictionaryKeyIteratorSynchronousProxy {
10258    type Protocol = DictionaryKeyIteratorMarker;
10259
10260    fn from_client(value: fidl::endpoints::ClientEnd<DictionaryKeyIteratorMarker>) -> Self {
10261        Self::new(value.into_channel())
10262    }
10263}
10264
10265#[derive(Debug, Clone)]
10266pub struct DictionaryKeyIteratorProxy {
10267    client: fidl::client::Client<fidl::encoding::DefaultFuchsiaResourceDialect>,
10268}
10269
10270impl fidl::endpoints::Proxy for DictionaryKeyIteratorProxy {
10271    type Protocol = DictionaryKeyIteratorMarker;
10272
10273    fn from_channel(inner: ::fidl::AsyncChannel) -> Self {
10274        Self::new(inner)
10275    }
10276
10277    fn into_channel(self) -> Result<::fidl::AsyncChannel, Self> {
10278        self.client.into_channel().map_err(|client| Self { client })
10279    }
10280
10281    fn as_channel(&self) -> &::fidl::AsyncChannel {
10282        self.client.as_channel()
10283    }
10284}
10285
10286impl DictionaryKeyIteratorProxy {
10287    /// Create a new Proxy for fuchsia.component.runtime/DictionaryKeyIterator.
10288    pub fn new(channel: ::fidl::AsyncChannel) -> Self {
10289        let protocol_name =
10290            <DictionaryKeyIteratorMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
10291        Self { client: fidl::client::Client::new(channel, protocol_name) }
10292    }
10293
10294    /// Get a Stream of events from the remote end of the protocol.
10295    ///
10296    /// # Panics
10297    ///
10298    /// Panics if the event stream was already taken.
10299    pub fn take_event_stream(&self) -> DictionaryKeyIteratorEventStream {
10300        DictionaryKeyIteratorEventStream { event_receiver: self.client.take_event_receiver() }
10301    }
10302
10303    /// Returns the next set of keys in this dictionary. Returns an empty vector
10304    /// when there are no more keys to iterate.
10305    pub fn r#get_next(
10306        &self,
10307    ) -> fidl::client::QueryResponseFut<Vec<String>, fidl::encoding::DefaultFuchsiaResourceDialect>
10308    {
10309        DictionaryKeyIteratorProxyInterface::r#get_next(self)
10310    }
10311}
10312
10313impl DictionaryKeyIteratorProxyInterface for DictionaryKeyIteratorProxy {
10314    type GetNextResponseFut =
10315        fidl::client::QueryResponseFut<Vec<String>, fidl::encoding::DefaultFuchsiaResourceDialect>;
10316    fn r#get_next(&self) -> Self::GetNextResponseFut {
10317        fn _decode(
10318            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
10319        ) -> Result<Vec<String>, fidl::Error> {
10320            let _response = fidl::client::decode_transaction_body::<
10321                DictionaryKeyIteratorGetNextResponse,
10322                fidl::encoding::DefaultFuchsiaResourceDialect,
10323                0x3806bda34433db54,
10324            >(_buf?)?;
10325            Ok(_response.keys)
10326        }
10327        self.client.send_query_and_decode::<fidl::encoding::EmptyPayload, Vec<String>>(
10328            (),
10329            0x3806bda34433db54,
10330            fidl::encoding::DynamicFlags::empty(),
10331            _decode,
10332        )
10333    }
10334}
10335
10336pub struct DictionaryKeyIteratorEventStream {
10337    event_receiver: fidl::client::EventReceiver<fidl::encoding::DefaultFuchsiaResourceDialect>,
10338}
10339
10340impl std::marker::Unpin for DictionaryKeyIteratorEventStream {}
10341
10342impl futures::stream::FusedStream for DictionaryKeyIteratorEventStream {
10343    fn is_terminated(&self) -> bool {
10344        self.event_receiver.is_terminated()
10345    }
10346}
10347
10348impl futures::Stream for DictionaryKeyIteratorEventStream {
10349    type Item = Result<DictionaryKeyIteratorEvent, fidl::Error>;
10350
10351    fn poll_next(
10352        mut self: std::pin::Pin<&mut Self>,
10353        cx: &mut std::task::Context<'_>,
10354    ) -> std::task::Poll<Option<Self::Item>> {
10355        match futures::ready!(futures::stream::StreamExt::poll_next_unpin(
10356            &mut self.event_receiver,
10357            cx
10358        )?) {
10359            Some(buf) => std::task::Poll::Ready(Some(DictionaryKeyIteratorEvent::decode(buf))),
10360            None => std::task::Poll::Ready(None),
10361        }
10362    }
10363}
10364
10365#[derive(Debug)]
10366pub enum DictionaryKeyIteratorEvent {}
10367
10368impl DictionaryKeyIteratorEvent {
10369    /// Decodes a message buffer as a [`DictionaryKeyIteratorEvent`].
10370    fn decode(
10371        mut buf: <fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc,
10372    ) -> Result<DictionaryKeyIteratorEvent, fidl::Error> {
10373        let (bytes, _handles) = buf.split_mut();
10374        let (tx_header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
10375        debug_assert_eq!(tx_header.tx_id, 0);
10376        match tx_header.ordinal {
10377            _ => Err(fidl::Error::UnknownOrdinal {
10378                ordinal: tx_header.ordinal,
10379                protocol_name:
10380                    <DictionaryKeyIteratorMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
10381            }),
10382        }
10383    }
10384}
10385
10386/// A Stream of incoming requests for fuchsia.component.runtime/DictionaryKeyIterator.
10387pub struct DictionaryKeyIteratorRequestStream {
10388    inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
10389    is_terminated: bool,
10390}
10391
10392impl std::marker::Unpin for DictionaryKeyIteratorRequestStream {}
10393
10394impl futures::stream::FusedStream for DictionaryKeyIteratorRequestStream {
10395    fn is_terminated(&self) -> bool {
10396        self.is_terminated
10397    }
10398}
10399
10400impl fidl::endpoints::RequestStream for DictionaryKeyIteratorRequestStream {
10401    type Protocol = DictionaryKeyIteratorMarker;
10402    type ControlHandle = DictionaryKeyIteratorControlHandle;
10403
10404    fn from_channel(channel: ::fidl::AsyncChannel) -> Self {
10405        Self { inner: std::sync::Arc::new(fidl::ServeInner::new(channel)), is_terminated: false }
10406    }
10407
10408    fn control_handle(&self) -> Self::ControlHandle {
10409        DictionaryKeyIteratorControlHandle { inner: self.inner.clone() }
10410    }
10411
10412    fn into_inner(
10413        self,
10414    ) -> (::std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>, bool)
10415    {
10416        (self.inner, self.is_terminated)
10417    }
10418
10419    fn from_inner(
10420        inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
10421        is_terminated: bool,
10422    ) -> Self {
10423        Self { inner, is_terminated }
10424    }
10425}
10426
10427impl futures::Stream for DictionaryKeyIteratorRequestStream {
10428    type Item = Result<DictionaryKeyIteratorRequest, fidl::Error>;
10429
10430    fn poll_next(
10431        mut self: std::pin::Pin<&mut Self>,
10432        cx: &mut std::task::Context<'_>,
10433    ) -> std::task::Poll<Option<Self::Item>> {
10434        let this = &mut *self;
10435        if this.inner.check_shutdown(cx) {
10436            this.is_terminated = true;
10437            return std::task::Poll::Ready(None);
10438        }
10439        if this.is_terminated {
10440            panic!("polled DictionaryKeyIteratorRequestStream after completion");
10441        }
10442        fidl::encoding::with_tls_decode_buf::<_, fidl::encoding::DefaultFuchsiaResourceDialect>(
10443            |bytes, handles| {
10444                match this.inner.channel().read_etc(cx, bytes, handles) {
10445                    std::task::Poll::Ready(Ok(())) => {}
10446                    std::task::Poll::Pending => return std::task::Poll::Pending,
10447                    std::task::Poll::Ready(Err(zx_status::Status::PEER_CLOSED)) => {
10448                        this.is_terminated = true;
10449                        return std::task::Poll::Ready(None);
10450                    }
10451                    std::task::Poll::Ready(Err(e)) => {
10452                        return std::task::Poll::Ready(Some(Err(fidl::Error::ServerRequestRead(
10453                            e.into(),
10454                        ))));
10455                    }
10456                }
10457
10458                // A message has been received from the channel
10459                let (header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
10460
10461                std::task::Poll::Ready(Some(match header.ordinal {
10462                0x3806bda34433db54 => {
10463                    header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
10464                    let mut req = fidl::new_empty!(fidl::encoding::EmptyPayload, fidl::encoding::DefaultFuchsiaResourceDialect);
10465                    fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
10466                    let control_handle = DictionaryKeyIteratorControlHandle {
10467                        inner: this.inner.clone(),
10468                    };
10469                    Ok(DictionaryKeyIteratorRequest::GetNext {
10470                        responder: DictionaryKeyIteratorGetNextResponder {
10471                            control_handle: std::mem::ManuallyDrop::new(control_handle),
10472                            tx_id: header.tx_id,
10473                        },
10474                    })
10475                }
10476                _ => Err(fidl::Error::UnknownOrdinal {
10477                    ordinal: header.ordinal,
10478                    protocol_name: <DictionaryKeyIteratorMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
10479                }),
10480            }))
10481            },
10482        )
10483    }
10484}
10485
10486#[derive(Debug)]
10487pub enum DictionaryKeyIteratorRequest {
10488    /// Returns the next set of keys in this dictionary. Returns an empty vector
10489    /// when there are no more keys to iterate.
10490    GetNext { responder: DictionaryKeyIteratorGetNextResponder },
10491}
10492
10493impl DictionaryKeyIteratorRequest {
10494    #[allow(irrefutable_let_patterns)]
10495    pub fn into_get_next(self) -> Option<(DictionaryKeyIteratorGetNextResponder)> {
10496        if let DictionaryKeyIteratorRequest::GetNext { responder } = self {
10497            Some((responder))
10498        } else {
10499            None
10500        }
10501    }
10502
10503    /// Name of the method defined in FIDL
10504    pub fn method_name(&self) -> &'static str {
10505        match *self {
10506            DictionaryKeyIteratorRequest::GetNext { .. } => "get_next",
10507        }
10508    }
10509}
10510
10511#[derive(Debug, Clone)]
10512pub struct DictionaryKeyIteratorControlHandle {
10513    inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
10514}
10515
10516impl fidl::endpoints::ControlHandle for DictionaryKeyIteratorControlHandle {
10517    fn shutdown(&self) {
10518        self.inner.shutdown()
10519    }
10520
10521    fn shutdown_with_epitaph(&self, status: zx_status::Status) {
10522        self.inner.shutdown_with_epitaph(status)
10523    }
10524
10525    fn is_closed(&self) -> bool {
10526        self.inner.channel().is_closed()
10527    }
10528    fn on_closed(&self) -> fidl::OnSignalsRef<'_> {
10529        self.inner.channel().on_closed()
10530    }
10531
10532    #[cfg(target_os = "fuchsia")]
10533    fn signal_peer(
10534        &self,
10535        clear_mask: zx::Signals,
10536        set_mask: zx::Signals,
10537    ) -> Result<(), zx_status::Status> {
10538        use fidl::Peered;
10539        self.inner.channel().signal_peer(clear_mask, set_mask)
10540    }
10541}
10542
10543impl DictionaryKeyIteratorControlHandle {}
10544
10545#[must_use = "FIDL methods require a response to be sent"]
10546#[derive(Debug)]
10547pub struct DictionaryKeyIteratorGetNextResponder {
10548    control_handle: std::mem::ManuallyDrop<DictionaryKeyIteratorControlHandle>,
10549    tx_id: u32,
10550}
10551
10552/// Set the the channel to be shutdown (see [`DictionaryKeyIteratorControlHandle::shutdown`])
10553/// if the responder is dropped without sending a response, so that the client
10554/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
10555impl std::ops::Drop for DictionaryKeyIteratorGetNextResponder {
10556    fn drop(&mut self) {
10557        self.control_handle.shutdown();
10558        // Safety: drops once, never accessed again
10559        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
10560    }
10561}
10562
10563impl fidl::endpoints::Responder for DictionaryKeyIteratorGetNextResponder {
10564    type ControlHandle = DictionaryKeyIteratorControlHandle;
10565
10566    fn control_handle(&self) -> &DictionaryKeyIteratorControlHandle {
10567        &self.control_handle
10568    }
10569
10570    fn drop_without_shutdown(mut self) {
10571        // Safety: drops once, never accessed again due to mem::forget
10572        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
10573        // Prevent Drop from running (which would shut down the channel)
10574        std::mem::forget(self);
10575    }
10576}
10577
10578impl DictionaryKeyIteratorGetNextResponder {
10579    /// Sends a response to the FIDL transaction.
10580    ///
10581    /// Sets the channel to shutdown if an error occurs.
10582    pub fn send(self, mut keys: &[String]) -> Result<(), fidl::Error> {
10583        let _result = self.send_raw(keys);
10584        if _result.is_err() {
10585            self.control_handle.shutdown();
10586        }
10587        self.drop_without_shutdown();
10588        _result
10589    }
10590
10591    /// Similar to "send" but does not shutdown the channel if an error occurs.
10592    pub fn send_no_shutdown_on_err(self, mut keys: &[String]) -> Result<(), fidl::Error> {
10593        let _result = self.send_raw(keys);
10594        self.drop_without_shutdown();
10595        _result
10596    }
10597
10598    fn send_raw(&self, mut keys: &[String]) -> Result<(), fidl::Error> {
10599        self.control_handle.inner.send::<DictionaryKeyIteratorGetNextResponse>(
10600            (keys,),
10601            self.tx_id,
10602            0x3806bda34433db54,
10603            fidl::encoding::DynamicFlags::empty(),
10604        )
10605    }
10606}
10607
10608#[derive(Debug, Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash)]
10609pub struct DictionaryRouterMarker;
10610
10611impl fidl::endpoints::ProtocolMarker for DictionaryRouterMarker {
10612    type Proxy = DictionaryRouterProxy;
10613    type RequestStream = DictionaryRouterRequestStream;
10614    #[cfg(target_os = "fuchsia")]
10615    type SynchronousProxy = DictionaryRouterSynchronousProxy;
10616
10617    const DEBUG_NAME: &'static str = "(anonymous) DictionaryRouter";
10618}
10619pub type DictionaryRouterRouteResult = Result<RouterResponse, RouterError>;
10620
10621pub trait DictionaryRouterProxyInterface: Send + Sync {
10622    type RouteResponseFut: std::future::Future<Output = Result<DictionaryRouterRouteResult, fidl::Error>>
10623        + Send;
10624    fn r#route(
10625        &self,
10626        request: RouteRequest,
10627        instance_token: fidl::EventPair,
10628        handle: fidl::EventPair,
10629    ) -> Self::RouteResponseFut;
10630}
10631#[derive(Debug)]
10632#[cfg(target_os = "fuchsia")]
10633pub struct DictionaryRouterSynchronousProxy {
10634    client: fidl::client::sync::Client,
10635}
10636
10637#[cfg(target_os = "fuchsia")]
10638impl fidl::endpoints::SynchronousProxy for DictionaryRouterSynchronousProxy {
10639    type Proxy = DictionaryRouterProxy;
10640    type Protocol = DictionaryRouterMarker;
10641
10642    fn from_channel(inner: fidl::Channel) -> Self {
10643        Self::new(inner)
10644    }
10645
10646    fn into_channel(self) -> fidl::Channel {
10647        self.client.into_channel()
10648    }
10649
10650    fn as_channel(&self) -> &fidl::Channel {
10651        self.client.as_channel()
10652    }
10653}
10654
10655#[cfg(target_os = "fuchsia")]
10656impl DictionaryRouterSynchronousProxy {
10657    pub fn new(channel: fidl::Channel) -> Self {
10658        let protocol_name = <DictionaryRouterMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
10659        Self { client: fidl::client::sync::Client::new(channel, protocol_name) }
10660    }
10661
10662    pub fn into_channel(self) -> fidl::Channel {
10663        self.client.into_channel()
10664    }
10665
10666    /// Waits until an event arrives and returns it. It is safe for other
10667    /// threads to make concurrent requests while waiting for an event.
10668    pub fn wait_for_event(
10669        &self,
10670        deadline: zx::MonotonicInstant,
10671    ) -> Result<DictionaryRouterEvent, fidl::Error> {
10672        DictionaryRouterEvent::decode(self.client.wait_for_event(deadline)?)
10673    }
10674
10675    /// Attempts to produce a `Dictionary` capability from this
10676    /// `DictionaryRouter`.
10677    ///
10678    /// `request` contains context for this route, and `instance_token`
10679    /// references the component that the routing operation is being performed
10680    /// for.
10681    ///
10682    /// This will return:
10683    ///
10684    /// - `SUCCESS` if `handle` has been associated with a connector.
10685    /// - `UNAVAILABLE` if the capability is unavailable, in which case `handle`
10686    ///   will be closed.
10687    /// - An error, if the operation failed.
10688    pub fn r#route(
10689        &self,
10690        mut request: RouteRequest,
10691        mut instance_token: fidl::EventPair,
10692        mut handle: fidl::EventPair,
10693        ___deadline: zx::MonotonicInstant,
10694    ) -> Result<DictionaryRouterRouteResult, fidl::Error> {
10695        let _response = self.client.send_query::<
10696            DictionaryRouterRouteRequest,
10697            fidl::encoding::FlexibleResultType<DictionaryRouterRouteResponse, RouterError>,
10698        >(
10699            (&mut request, instance_token, handle,),
10700            0x199389f437b3937b,
10701            fidl::encoding::DynamicFlags::FLEXIBLE,
10702            ___deadline,
10703        )?
10704        .into_result::<DictionaryRouterMarker>("route")?;
10705        Ok(_response.map(|x| x.response))
10706    }
10707}
10708
10709#[cfg(target_os = "fuchsia")]
10710impl From<DictionaryRouterSynchronousProxy> for zx::NullableHandle {
10711    fn from(value: DictionaryRouterSynchronousProxy) -> Self {
10712        value.into_channel().into()
10713    }
10714}
10715
10716#[cfg(target_os = "fuchsia")]
10717impl From<fidl::Channel> for DictionaryRouterSynchronousProxy {
10718    fn from(value: fidl::Channel) -> Self {
10719        Self::new(value)
10720    }
10721}
10722
10723#[cfg(target_os = "fuchsia")]
10724impl fidl::endpoints::FromClient for DictionaryRouterSynchronousProxy {
10725    type Protocol = DictionaryRouterMarker;
10726
10727    fn from_client(value: fidl::endpoints::ClientEnd<DictionaryRouterMarker>) -> Self {
10728        Self::new(value.into_channel())
10729    }
10730}
10731
10732#[derive(Debug, Clone)]
10733pub struct DictionaryRouterProxy {
10734    client: fidl::client::Client<fidl::encoding::DefaultFuchsiaResourceDialect>,
10735}
10736
10737impl fidl::endpoints::Proxy for DictionaryRouterProxy {
10738    type Protocol = DictionaryRouterMarker;
10739
10740    fn from_channel(inner: ::fidl::AsyncChannel) -> Self {
10741        Self::new(inner)
10742    }
10743
10744    fn into_channel(self) -> Result<::fidl::AsyncChannel, Self> {
10745        self.client.into_channel().map_err(|client| Self { client })
10746    }
10747
10748    fn as_channel(&self) -> &::fidl::AsyncChannel {
10749        self.client.as_channel()
10750    }
10751}
10752
10753impl DictionaryRouterProxy {
10754    /// Create a new Proxy for fuchsia.component.runtime/DictionaryRouter.
10755    pub fn new(channel: ::fidl::AsyncChannel) -> Self {
10756        let protocol_name = <DictionaryRouterMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
10757        Self { client: fidl::client::Client::new(channel, protocol_name) }
10758    }
10759
10760    /// Get a Stream of events from the remote end of the protocol.
10761    ///
10762    /// # Panics
10763    ///
10764    /// Panics if the event stream was already taken.
10765    pub fn take_event_stream(&self) -> DictionaryRouterEventStream {
10766        DictionaryRouterEventStream { event_receiver: self.client.take_event_receiver() }
10767    }
10768
10769    /// Attempts to produce a `Dictionary` capability from this
10770    /// `DictionaryRouter`.
10771    ///
10772    /// `request` contains context for this route, and `instance_token`
10773    /// references the component that the routing operation is being performed
10774    /// for.
10775    ///
10776    /// This will return:
10777    ///
10778    /// - `SUCCESS` if `handle` has been associated with a connector.
10779    /// - `UNAVAILABLE` if the capability is unavailable, in which case `handle`
10780    ///   will be closed.
10781    /// - An error, if the operation failed.
10782    pub fn r#route(
10783        &self,
10784        mut request: RouteRequest,
10785        mut instance_token: fidl::EventPair,
10786        mut handle: fidl::EventPair,
10787    ) -> fidl::client::QueryResponseFut<
10788        DictionaryRouterRouteResult,
10789        fidl::encoding::DefaultFuchsiaResourceDialect,
10790    > {
10791        DictionaryRouterProxyInterface::r#route(self, request, instance_token, handle)
10792    }
10793}
10794
10795impl DictionaryRouterProxyInterface for DictionaryRouterProxy {
10796    type RouteResponseFut = fidl::client::QueryResponseFut<
10797        DictionaryRouterRouteResult,
10798        fidl::encoding::DefaultFuchsiaResourceDialect,
10799    >;
10800    fn r#route(
10801        &self,
10802        mut request: RouteRequest,
10803        mut instance_token: fidl::EventPair,
10804        mut handle: fidl::EventPair,
10805    ) -> Self::RouteResponseFut {
10806        fn _decode(
10807            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
10808        ) -> Result<DictionaryRouterRouteResult, fidl::Error> {
10809            let _response = fidl::client::decode_transaction_body::<
10810                fidl::encoding::FlexibleResultType<DictionaryRouterRouteResponse, RouterError>,
10811                fidl::encoding::DefaultFuchsiaResourceDialect,
10812                0x199389f437b3937b,
10813            >(_buf?)?
10814            .into_result::<DictionaryRouterMarker>("route")?;
10815            Ok(_response.map(|x| x.response))
10816        }
10817        self.client
10818            .send_query_and_decode::<DictionaryRouterRouteRequest, DictionaryRouterRouteResult>(
10819                (&mut request, instance_token, handle),
10820                0x199389f437b3937b,
10821                fidl::encoding::DynamicFlags::FLEXIBLE,
10822                _decode,
10823            )
10824    }
10825}
10826
10827pub struct DictionaryRouterEventStream {
10828    event_receiver: fidl::client::EventReceiver<fidl::encoding::DefaultFuchsiaResourceDialect>,
10829}
10830
10831impl std::marker::Unpin for DictionaryRouterEventStream {}
10832
10833impl futures::stream::FusedStream for DictionaryRouterEventStream {
10834    fn is_terminated(&self) -> bool {
10835        self.event_receiver.is_terminated()
10836    }
10837}
10838
10839impl futures::Stream for DictionaryRouterEventStream {
10840    type Item = Result<DictionaryRouterEvent, fidl::Error>;
10841
10842    fn poll_next(
10843        mut self: std::pin::Pin<&mut Self>,
10844        cx: &mut std::task::Context<'_>,
10845    ) -> std::task::Poll<Option<Self::Item>> {
10846        match futures::ready!(futures::stream::StreamExt::poll_next_unpin(
10847            &mut self.event_receiver,
10848            cx
10849        )?) {
10850            Some(buf) => std::task::Poll::Ready(Some(DictionaryRouterEvent::decode(buf))),
10851            None => std::task::Poll::Ready(None),
10852        }
10853    }
10854}
10855
10856#[derive(Debug)]
10857pub enum DictionaryRouterEvent {
10858    #[non_exhaustive]
10859    _UnknownEvent {
10860        /// Ordinal of the event that was sent.
10861        ordinal: u64,
10862    },
10863}
10864
10865impl DictionaryRouterEvent {
10866    /// Decodes a message buffer as a [`DictionaryRouterEvent`].
10867    fn decode(
10868        mut buf: <fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc,
10869    ) -> Result<DictionaryRouterEvent, fidl::Error> {
10870        let (bytes, _handles) = buf.split_mut();
10871        let (tx_header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
10872        debug_assert_eq!(tx_header.tx_id, 0);
10873        match tx_header.ordinal {
10874            _ if tx_header.dynamic_flags().contains(fidl::encoding::DynamicFlags::FLEXIBLE) => {
10875                Ok(DictionaryRouterEvent::_UnknownEvent { ordinal: tx_header.ordinal })
10876            }
10877            _ => Err(fidl::Error::UnknownOrdinal {
10878                ordinal: tx_header.ordinal,
10879                protocol_name:
10880                    <DictionaryRouterMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
10881            }),
10882        }
10883    }
10884}
10885
10886/// A Stream of incoming requests for fuchsia.component.runtime/DictionaryRouter.
10887pub struct DictionaryRouterRequestStream {
10888    inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
10889    is_terminated: bool,
10890}
10891
10892impl std::marker::Unpin for DictionaryRouterRequestStream {}
10893
10894impl futures::stream::FusedStream for DictionaryRouterRequestStream {
10895    fn is_terminated(&self) -> bool {
10896        self.is_terminated
10897    }
10898}
10899
10900impl fidl::endpoints::RequestStream for DictionaryRouterRequestStream {
10901    type Protocol = DictionaryRouterMarker;
10902    type ControlHandle = DictionaryRouterControlHandle;
10903
10904    fn from_channel(channel: ::fidl::AsyncChannel) -> Self {
10905        Self { inner: std::sync::Arc::new(fidl::ServeInner::new(channel)), is_terminated: false }
10906    }
10907
10908    fn control_handle(&self) -> Self::ControlHandle {
10909        DictionaryRouterControlHandle { inner: self.inner.clone() }
10910    }
10911
10912    fn into_inner(
10913        self,
10914    ) -> (::std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>, bool)
10915    {
10916        (self.inner, self.is_terminated)
10917    }
10918
10919    fn from_inner(
10920        inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
10921        is_terminated: bool,
10922    ) -> Self {
10923        Self { inner, is_terminated }
10924    }
10925}
10926
10927impl futures::Stream for DictionaryRouterRequestStream {
10928    type Item = Result<DictionaryRouterRequest, fidl::Error>;
10929
10930    fn poll_next(
10931        mut self: std::pin::Pin<&mut Self>,
10932        cx: &mut std::task::Context<'_>,
10933    ) -> std::task::Poll<Option<Self::Item>> {
10934        let this = &mut *self;
10935        if this.inner.check_shutdown(cx) {
10936            this.is_terminated = true;
10937            return std::task::Poll::Ready(None);
10938        }
10939        if this.is_terminated {
10940            panic!("polled DictionaryRouterRequestStream after completion");
10941        }
10942        fidl::encoding::with_tls_decode_buf::<_, fidl::encoding::DefaultFuchsiaResourceDialect>(
10943            |bytes, handles| {
10944                match this.inner.channel().read_etc(cx, bytes, handles) {
10945                    std::task::Poll::Ready(Ok(())) => {}
10946                    std::task::Poll::Pending => return std::task::Poll::Pending,
10947                    std::task::Poll::Ready(Err(zx_status::Status::PEER_CLOSED)) => {
10948                        this.is_terminated = true;
10949                        return std::task::Poll::Ready(None);
10950                    }
10951                    std::task::Poll::Ready(Err(e)) => {
10952                        return std::task::Poll::Ready(Some(Err(fidl::Error::ServerRequestRead(
10953                            e.into(),
10954                        ))));
10955                    }
10956                }
10957
10958                // A message has been received from the channel
10959                let (header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
10960
10961                std::task::Poll::Ready(Some(match header.ordinal {
10962                    0x199389f437b3937b => {
10963                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
10964                        let mut req = fidl::new_empty!(
10965                            DictionaryRouterRouteRequest,
10966                            fidl::encoding::DefaultFuchsiaResourceDialect
10967                        );
10968                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<DictionaryRouterRouteRequest>(&header, _body_bytes, handles, &mut req)?;
10969                        let control_handle =
10970                            DictionaryRouterControlHandle { inner: this.inner.clone() };
10971                        Ok(DictionaryRouterRequest::Route {
10972                            request: req.request,
10973                            instance_token: req.instance_token,
10974                            handle: req.handle,
10975
10976                            responder: DictionaryRouterRouteResponder {
10977                                control_handle: std::mem::ManuallyDrop::new(control_handle),
10978                                tx_id: header.tx_id,
10979                            },
10980                        })
10981                    }
10982                    _ if header.tx_id == 0
10983                        && header
10984                            .dynamic_flags()
10985                            .contains(fidl::encoding::DynamicFlags::FLEXIBLE) =>
10986                    {
10987                        Ok(DictionaryRouterRequest::_UnknownMethod {
10988                            ordinal: header.ordinal,
10989                            control_handle: DictionaryRouterControlHandle {
10990                                inner: this.inner.clone(),
10991                            },
10992                            method_type: fidl::MethodType::OneWay,
10993                        })
10994                    }
10995                    _ if header
10996                        .dynamic_flags()
10997                        .contains(fidl::encoding::DynamicFlags::FLEXIBLE) =>
10998                    {
10999                        this.inner.send_framework_err(
11000                            fidl::encoding::FrameworkErr::UnknownMethod,
11001                            header.tx_id,
11002                            header.ordinal,
11003                            header.dynamic_flags(),
11004                            (bytes, handles),
11005                        )?;
11006                        Ok(DictionaryRouterRequest::_UnknownMethod {
11007                            ordinal: header.ordinal,
11008                            control_handle: DictionaryRouterControlHandle {
11009                                inner: this.inner.clone(),
11010                            },
11011                            method_type: fidl::MethodType::TwoWay,
11012                        })
11013                    }
11014                    _ => Err(fidl::Error::UnknownOrdinal {
11015                        ordinal: header.ordinal,
11016                        protocol_name:
11017                            <DictionaryRouterMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
11018                    }),
11019                }))
11020            },
11021        )
11022    }
11023}
11024
11025/// A factory for `Dictionary` capabilities.
11026#[derive(Debug)]
11027pub enum DictionaryRouterRequest {
11028    /// Attempts to produce a `Dictionary` capability from this
11029    /// `DictionaryRouter`.
11030    ///
11031    /// `request` contains context for this route, and `instance_token`
11032    /// references the component that the routing operation is being performed
11033    /// for.
11034    ///
11035    /// This will return:
11036    ///
11037    /// - `SUCCESS` if `handle` has been associated with a connector.
11038    /// - `UNAVAILABLE` if the capability is unavailable, in which case `handle`
11039    ///   will be closed.
11040    /// - An error, if the operation failed.
11041    Route {
11042        request: RouteRequest,
11043        instance_token: fidl::EventPair,
11044        handle: fidl::EventPair,
11045        responder: DictionaryRouterRouteResponder,
11046    },
11047    /// An interaction was received which does not match any known method.
11048    #[non_exhaustive]
11049    _UnknownMethod {
11050        /// Ordinal of the method that was called.
11051        ordinal: u64,
11052        control_handle: DictionaryRouterControlHandle,
11053        method_type: fidl::MethodType,
11054    },
11055}
11056
11057impl DictionaryRouterRequest {
11058    #[allow(irrefutable_let_patterns)]
11059    pub fn into_route(
11060        self,
11061    ) -> Option<(RouteRequest, fidl::EventPair, fidl::EventPair, DictionaryRouterRouteResponder)>
11062    {
11063        if let DictionaryRouterRequest::Route { request, instance_token, handle, responder } = self
11064        {
11065            Some((request, instance_token, handle, responder))
11066        } else {
11067            None
11068        }
11069    }
11070
11071    /// Name of the method defined in FIDL
11072    pub fn method_name(&self) -> &'static str {
11073        match *self {
11074            DictionaryRouterRequest::Route { .. } => "route",
11075            DictionaryRouterRequest::_UnknownMethod {
11076                method_type: fidl::MethodType::OneWay,
11077                ..
11078            } => "unknown one-way method",
11079            DictionaryRouterRequest::_UnknownMethod {
11080                method_type: fidl::MethodType::TwoWay,
11081                ..
11082            } => "unknown two-way method",
11083        }
11084    }
11085}
11086
11087#[derive(Debug, Clone)]
11088pub struct DictionaryRouterControlHandle {
11089    inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
11090}
11091
11092impl fidl::endpoints::ControlHandle for DictionaryRouterControlHandle {
11093    fn shutdown(&self) {
11094        self.inner.shutdown()
11095    }
11096
11097    fn shutdown_with_epitaph(&self, status: zx_status::Status) {
11098        self.inner.shutdown_with_epitaph(status)
11099    }
11100
11101    fn is_closed(&self) -> bool {
11102        self.inner.channel().is_closed()
11103    }
11104    fn on_closed(&self) -> fidl::OnSignalsRef<'_> {
11105        self.inner.channel().on_closed()
11106    }
11107
11108    #[cfg(target_os = "fuchsia")]
11109    fn signal_peer(
11110        &self,
11111        clear_mask: zx::Signals,
11112        set_mask: zx::Signals,
11113    ) -> Result<(), zx_status::Status> {
11114        use fidl::Peered;
11115        self.inner.channel().signal_peer(clear_mask, set_mask)
11116    }
11117}
11118
11119impl DictionaryRouterControlHandle {}
11120
11121#[must_use = "FIDL methods require a response to be sent"]
11122#[derive(Debug)]
11123pub struct DictionaryRouterRouteResponder {
11124    control_handle: std::mem::ManuallyDrop<DictionaryRouterControlHandle>,
11125    tx_id: u32,
11126}
11127
11128/// Set the the channel to be shutdown (see [`DictionaryRouterControlHandle::shutdown`])
11129/// if the responder is dropped without sending a response, so that the client
11130/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
11131impl std::ops::Drop for DictionaryRouterRouteResponder {
11132    fn drop(&mut self) {
11133        self.control_handle.shutdown();
11134        // Safety: drops once, never accessed again
11135        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
11136    }
11137}
11138
11139impl fidl::endpoints::Responder for DictionaryRouterRouteResponder {
11140    type ControlHandle = DictionaryRouterControlHandle;
11141
11142    fn control_handle(&self) -> &DictionaryRouterControlHandle {
11143        &self.control_handle
11144    }
11145
11146    fn drop_without_shutdown(mut self) {
11147        // Safety: drops once, never accessed again due to mem::forget
11148        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
11149        // Prevent Drop from running (which would shut down the channel)
11150        std::mem::forget(self);
11151    }
11152}
11153
11154impl DictionaryRouterRouteResponder {
11155    /// Sends a response to the FIDL transaction.
11156    ///
11157    /// Sets the channel to shutdown if an error occurs.
11158    pub fn send(self, mut result: Result<RouterResponse, RouterError>) -> Result<(), fidl::Error> {
11159        let _result = self.send_raw(result);
11160        if _result.is_err() {
11161            self.control_handle.shutdown();
11162        }
11163        self.drop_without_shutdown();
11164        _result
11165    }
11166
11167    /// Similar to "send" but does not shutdown the channel if an error occurs.
11168    pub fn send_no_shutdown_on_err(
11169        self,
11170        mut result: Result<RouterResponse, RouterError>,
11171    ) -> Result<(), fidl::Error> {
11172        let _result = self.send_raw(result);
11173        self.drop_without_shutdown();
11174        _result
11175    }
11176
11177    fn send_raw(&self, mut result: Result<RouterResponse, RouterError>) -> Result<(), fidl::Error> {
11178        self.control_handle.inner.send::<fidl::encoding::FlexibleResultType<
11179            DictionaryRouterRouteResponse,
11180            RouterError,
11181        >>(
11182            fidl::encoding::FlexibleResult::new(result.map(|response| (response,))),
11183            self.tx_id,
11184            0x199389f437b3937b,
11185            fidl::encoding::DynamicFlags::FLEXIBLE,
11186        )
11187    }
11188}
11189
11190#[derive(Debug, Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash)]
11191pub struct DictionaryRouterDeprecatedMarker;
11192
11193impl fidl::endpoints::ProtocolMarker for DictionaryRouterDeprecatedMarker {
11194    type Proxy = DictionaryRouterDeprecatedProxy;
11195    type RequestStream = DictionaryRouterDeprecatedRequestStream;
11196    #[cfg(target_os = "fuchsia")]
11197    type SynchronousProxy = DictionaryRouterDeprecatedSynchronousProxy;
11198
11199    const DEBUG_NAME: &'static str = "(anonymous) DictionaryRouterDeprecated";
11200}
11201pub type DictionaryRouterDeprecatedRouteResult = Result<RouterResponse, RouterError>;
11202
11203pub trait DictionaryRouterDeprecatedProxyInterface: Send + Sync {
11204    fn r#clone(
11205        &self,
11206        request: fidl::endpoints::ServerEnd<fidl_fuchsia_unknown::CloneableMarker>,
11207    ) -> Result<(), fidl::Error>;
11208    type RouteResponseFut: std::future::Future<Output = Result<DictionaryRouterDeprecatedRouteResult, fidl::Error>>
11209        + Send;
11210    fn r#route(
11211        &self,
11212        request: DeprecatedRouteRequest,
11213        dictionary_server_end: fidl::endpoints::ServerEnd<DictionaryMarker>,
11214    ) -> Self::RouteResponseFut;
11215}
11216#[derive(Debug)]
11217#[cfg(target_os = "fuchsia")]
11218pub struct DictionaryRouterDeprecatedSynchronousProxy {
11219    client: fidl::client::sync::Client,
11220}
11221
11222#[cfg(target_os = "fuchsia")]
11223impl fidl::endpoints::SynchronousProxy for DictionaryRouterDeprecatedSynchronousProxy {
11224    type Proxy = DictionaryRouterDeprecatedProxy;
11225    type Protocol = DictionaryRouterDeprecatedMarker;
11226
11227    fn from_channel(inner: fidl::Channel) -> Self {
11228        Self::new(inner)
11229    }
11230
11231    fn into_channel(self) -> fidl::Channel {
11232        self.client.into_channel()
11233    }
11234
11235    fn as_channel(&self) -> &fidl::Channel {
11236        self.client.as_channel()
11237    }
11238}
11239
11240#[cfg(target_os = "fuchsia")]
11241impl DictionaryRouterDeprecatedSynchronousProxy {
11242    pub fn new(channel: fidl::Channel) -> Self {
11243        let protocol_name =
11244            <DictionaryRouterDeprecatedMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
11245        Self { client: fidl::client::sync::Client::new(channel, protocol_name) }
11246    }
11247
11248    pub fn into_channel(self) -> fidl::Channel {
11249        self.client.into_channel()
11250    }
11251
11252    /// Waits until an event arrives and returns it. It is safe for other
11253    /// threads to make concurrent requests while waiting for an event.
11254    pub fn wait_for_event(
11255        &self,
11256        deadline: zx::MonotonicInstant,
11257    ) -> Result<DictionaryRouterDeprecatedEvent, fidl::Error> {
11258        DictionaryRouterDeprecatedEvent::decode(self.client.wait_for_event(deadline)?)
11259    }
11260
11261    pub fn r#clone(
11262        &self,
11263        mut request: fidl::endpoints::ServerEnd<fidl_fuchsia_unknown::CloneableMarker>,
11264    ) -> Result<(), fidl::Error> {
11265        self.client.send::<fidl_fuchsia_unknown::CloneableCloneRequest>(
11266            (request,),
11267            0x20d8a7aba2168a79,
11268            fidl::encoding::DynamicFlags::empty(),
11269        )
11270    }
11271
11272    /// Attempts to produce a `Dictionary` capability from this
11273    /// `DictionaryRouter`. This will return:
11274    ///
11275    /// - A `Dictionary` if the operation is successful.
11276    /// - An empty value if there is no issue found but the capability is not
11277    ///   being provided (for example, an optional route ended in an offer from
11278    ///   void).
11279    /// - An error, if the operation failed.
11280    pub fn r#route(
11281        &self,
11282        mut request: DeprecatedRouteRequest,
11283        mut dictionary_server_end: fidl::endpoints::ServerEnd<DictionaryMarker>,
11284        ___deadline: zx::MonotonicInstant,
11285    ) -> Result<DictionaryRouterDeprecatedRouteResult, fidl::Error> {
11286        let _response = self.client.send_query::<
11287            DictionaryRouterDeprecatedRouteRequest,
11288            fidl::encoding::FlexibleResultType<DictionaryRouterDeprecatedRouteResponse, RouterError>,
11289        >(
11290            (&mut request, dictionary_server_end,),
11291            0x10b86c8a8e9eb51a,
11292            fidl::encoding::DynamicFlags::FLEXIBLE,
11293            ___deadline,
11294        )?
11295        .into_result::<DictionaryRouterDeprecatedMarker>("route")?;
11296        Ok(_response.map(|x| x.response))
11297    }
11298}
11299
11300#[cfg(target_os = "fuchsia")]
11301impl From<DictionaryRouterDeprecatedSynchronousProxy> for zx::NullableHandle {
11302    fn from(value: DictionaryRouterDeprecatedSynchronousProxy) -> Self {
11303        value.into_channel().into()
11304    }
11305}
11306
11307#[cfg(target_os = "fuchsia")]
11308impl From<fidl::Channel> for DictionaryRouterDeprecatedSynchronousProxy {
11309    fn from(value: fidl::Channel) -> Self {
11310        Self::new(value)
11311    }
11312}
11313
11314#[cfg(target_os = "fuchsia")]
11315impl fidl::endpoints::FromClient for DictionaryRouterDeprecatedSynchronousProxy {
11316    type Protocol = DictionaryRouterDeprecatedMarker;
11317
11318    fn from_client(value: fidl::endpoints::ClientEnd<DictionaryRouterDeprecatedMarker>) -> Self {
11319        Self::new(value.into_channel())
11320    }
11321}
11322
11323#[derive(Debug, Clone)]
11324pub struct DictionaryRouterDeprecatedProxy {
11325    client: fidl::client::Client<fidl::encoding::DefaultFuchsiaResourceDialect>,
11326}
11327
11328impl fidl::endpoints::Proxy for DictionaryRouterDeprecatedProxy {
11329    type Protocol = DictionaryRouterDeprecatedMarker;
11330
11331    fn from_channel(inner: ::fidl::AsyncChannel) -> Self {
11332        Self::new(inner)
11333    }
11334
11335    fn into_channel(self) -> Result<::fidl::AsyncChannel, Self> {
11336        self.client.into_channel().map_err(|client| Self { client })
11337    }
11338
11339    fn as_channel(&self) -> &::fidl::AsyncChannel {
11340        self.client.as_channel()
11341    }
11342}
11343
11344impl DictionaryRouterDeprecatedProxy {
11345    /// Create a new Proxy for fuchsia.component.runtime/DictionaryRouterDeprecated.
11346    pub fn new(channel: ::fidl::AsyncChannel) -> Self {
11347        let protocol_name =
11348            <DictionaryRouterDeprecatedMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
11349        Self { client: fidl::client::Client::new(channel, protocol_name) }
11350    }
11351
11352    /// Get a Stream of events from the remote end of the protocol.
11353    ///
11354    /// # Panics
11355    ///
11356    /// Panics if the event stream was already taken.
11357    pub fn take_event_stream(&self) -> DictionaryRouterDeprecatedEventStream {
11358        DictionaryRouterDeprecatedEventStream { event_receiver: self.client.take_event_receiver() }
11359    }
11360
11361    pub fn r#clone(
11362        &self,
11363        mut request: fidl::endpoints::ServerEnd<fidl_fuchsia_unknown::CloneableMarker>,
11364    ) -> Result<(), fidl::Error> {
11365        DictionaryRouterDeprecatedProxyInterface::r#clone(self, request)
11366    }
11367
11368    /// Attempts to produce a `Dictionary` capability from this
11369    /// `DictionaryRouter`. This will return:
11370    ///
11371    /// - A `Dictionary` if the operation is successful.
11372    /// - An empty value if there is no issue found but the capability is not
11373    ///   being provided (for example, an optional route ended in an offer from
11374    ///   void).
11375    /// - An error, if the operation failed.
11376    pub fn r#route(
11377        &self,
11378        mut request: DeprecatedRouteRequest,
11379        mut dictionary_server_end: fidl::endpoints::ServerEnd<DictionaryMarker>,
11380    ) -> fidl::client::QueryResponseFut<
11381        DictionaryRouterDeprecatedRouteResult,
11382        fidl::encoding::DefaultFuchsiaResourceDialect,
11383    > {
11384        DictionaryRouterDeprecatedProxyInterface::r#route(self, request, dictionary_server_end)
11385    }
11386}
11387
11388impl DictionaryRouterDeprecatedProxyInterface for DictionaryRouterDeprecatedProxy {
11389    fn r#clone(
11390        &self,
11391        mut request: fidl::endpoints::ServerEnd<fidl_fuchsia_unknown::CloneableMarker>,
11392    ) -> Result<(), fidl::Error> {
11393        self.client.send::<fidl_fuchsia_unknown::CloneableCloneRequest>(
11394            (request,),
11395            0x20d8a7aba2168a79,
11396            fidl::encoding::DynamicFlags::empty(),
11397        )
11398    }
11399
11400    type RouteResponseFut = fidl::client::QueryResponseFut<
11401        DictionaryRouterDeprecatedRouteResult,
11402        fidl::encoding::DefaultFuchsiaResourceDialect,
11403    >;
11404    fn r#route(
11405        &self,
11406        mut request: DeprecatedRouteRequest,
11407        mut dictionary_server_end: fidl::endpoints::ServerEnd<DictionaryMarker>,
11408    ) -> Self::RouteResponseFut {
11409        fn _decode(
11410            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
11411        ) -> Result<DictionaryRouterDeprecatedRouteResult, fidl::Error> {
11412            let _response = fidl::client::decode_transaction_body::<
11413                fidl::encoding::FlexibleResultType<
11414                    DictionaryRouterDeprecatedRouteResponse,
11415                    RouterError,
11416                >,
11417                fidl::encoding::DefaultFuchsiaResourceDialect,
11418                0x10b86c8a8e9eb51a,
11419            >(_buf?)?
11420            .into_result::<DictionaryRouterDeprecatedMarker>("route")?;
11421            Ok(_response.map(|x| x.response))
11422        }
11423        self.client.send_query_and_decode::<
11424            DictionaryRouterDeprecatedRouteRequest,
11425            DictionaryRouterDeprecatedRouteResult,
11426        >(
11427            (&mut request, dictionary_server_end,),
11428            0x10b86c8a8e9eb51a,
11429            fidl::encoding::DynamicFlags::FLEXIBLE,
11430            _decode,
11431        )
11432    }
11433}
11434
11435pub struct DictionaryRouterDeprecatedEventStream {
11436    event_receiver: fidl::client::EventReceiver<fidl::encoding::DefaultFuchsiaResourceDialect>,
11437}
11438
11439impl std::marker::Unpin for DictionaryRouterDeprecatedEventStream {}
11440
11441impl futures::stream::FusedStream for DictionaryRouterDeprecatedEventStream {
11442    fn is_terminated(&self) -> bool {
11443        self.event_receiver.is_terminated()
11444    }
11445}
11446
11447impl futures::Stream for DictionaryRouterDeprecatedEventStream {
11448    type Item = Result<DictionaryRouterDeprecatedEvent, fidl::Error>;
11449
11450    fn poll_next(
11451        mut self: std::pin::Pin<&mut Self>,
11452        cx: &mut std::task::Context<'_>,
11453    ) -> std::task::Poll<Option<Self::Item>> {
11454        match futures::ready!(futures::stream::StreamExt::poll_next_unpin(
11455            &mut self.event_receiver,
11456            cx
11457        )?) {
11458            Some(buf) => std::task::Poll::Ready(Some(DictionaryRouterDeprecatedEvent::decode(buf))),
11459            None => std::task::Poll::Ready(None),
11460        }
11461    }
11462}
11463
11464#[derive(Debug)]
11465pub enum DictionaryRouterDeprecatedEvent {
11466    #[non_exhaustive]
11467    _UnknownEvent {
11468        /// Ordinal of the event that was sent.
11469        ordinal: u64,
11470    },
11471}
11472
11473impl DictionaryRouterDeprecatedEvent {
11474    /// Decodes a message buffer as a [`DictionaryRouterDeprecatedEvent`].
11475    fn decode(
11476        mut buf: <fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc,
11477    ) -> Result<DictionaryRouterDeprecatedEvent, fidl::Error> {
11478        let (bytes, _handles) = buf.split_mut();
11479        let (tx_header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
11480        debug_assert_eq!(tx_header.tx_id, 0);
11481        match tx_header.ordinal {
11482            _ if tx_header.dynamic_flags().contains(fidl::encoding::DynamicFlags::FLEXIBLE) => {
11483                Ok(DictionaryRouterDeprecatedEvent::_UnknownEvent {
11484                    ordinal: tx_header.ordinal,
11485                })
11486            }
11487            _ => Err(fidl::Error::UnknownOrdinal {
11488                ordinal: tx_header.ordinal,
11489                protocol_name: <DictionaryRouterDeprecatedMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
11490            })
11491        }
11492    }
11493}
11494
11495/// A Stream of incoming requests for fuchsia.component.runtime/DictionaryRouterDeprecated.
11496pub struct DictionaryRouterDeprecatedRequestStream {
11497    inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
11498    is_terminated: bool,
11499}
11500
11501impl std::marker::Unpin for DictionaryRouterDeprecatedRequestStream {}
11502
11503impl futures::stream::FusedStream for DictionaryRouterDeprecatedRequestStream {
11504    fn is_terminated(&self) -> bool {
11505        self.is_terminated
11506    }
11507}
11508
11509impl fidl::endpoints::RequestStream for DictionaryRouterDeprecatedRequestStream {
11510    type Protocol = DictionaryRouterDeprecatedMarker;
11511    type ControlHandle = DictionaryRouterDeprecatedControlHandle;
11512
11513    fn from_channel(channel: ::fidl::AsyncChannel) -> Self {
11514        Self { inner: std::sync::Arc::new(fidl::ServeInner::new(channel)), is_terminated: false }
11515    }
11516
11517    fn control_handle(&self) -> Self::ControlHandle {
11518        DictionaryRouterDeprecatedControlHandle { inner: self.inner.clone() }
11519    }
11520
11521    fn into_inner(
11522        self,
11523    ) -> (::std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>, bool)
11524    {
11525        (self.inner, self.is_terminated)
11526    }
11527
11528    fn from_inner(
11529        inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
11530        is_terminated: bool,
11531    ) -> Self {
11532        Self { inner, is_terminated }
11533    }
11534}
11535
11536impl futures::Stream for DictionaryRouterDeprecatedRequestStream {
11537    type Item = Result<DictionaryRouterDeprecatedRequest, fidl::Error>;
11538
11539    fn poll_next(
11540        mut self: std::pin::Pin<&mut Self>,
11541        cx: &mut std::task::Context<'_>,
11542    ) -> std::task::Poll<Option<Self::Item>> {
11543        let this = &mut *self;
11544        if this.inner.check_shutdown(cx) {
11545            this.is_terminated = true;
11546            return std::task::Poll::Ready(None);
11547        }
11548        if this.is_terminated {
11549            panic!("polled DictionaryRouterDeprecatedRequestStream after completion");
11550        }
11551        fidl::encoding::with_tls_decode_buf::<_, fidl::encoding::DefaultFuchsiaResourceDialect>(
11552            |bytes, handles| {
11553                match this.inner.channel().read_etc(cx, bytes, handles) {
11554                    std::task::Poll::Ready(Ok(())) => {}
11555                    std::task::Poll::Pending => return std::task::Poll::Pending,
11556                    std::task::Poll::Ready(Err(zx_status::Status::PEER_CLOSED)) => {
11557                        this.is_terminated = true;
11558                        return std::task::Poll::Ready(None);
11559                    }
11560                    std::task::Poll::Ready(Err(e)) => {
11561                        return std::task::Poll::Ready(Some(Err(fidl::Error::ServerRequestRead(
11562                            e.into(),
11563                        ))));
11564                    }
11565                }
11566
11567                // A message has been received from the channel
11568                let (header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
11569
11570                std::task::Poll::Ready(Some(match header.ordinal {
11571                0x20d8a7aba2168a79 => {
11572                    header.validate_request_tx_id(fidl::MethodType::OneWay)?;
11573                    let mut req = fidl::new_empty!(fidl_fuchsia_unknown::CloneableCloneRequest, fidl::encoding::DefaultFuchsiaResourceDialect);
11574                    fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_unknown::CloneableCloneRequest>(&header, _body_bytes, handles, &mut req)?;
11575                    let control_handle = DictionaryRouterDeprecatedControlHandle {
11576                        inner: this.inner.clone(),
11577                    };
11578                    Ok(DictionaryRouterDeprecatedRequest::Clone {request: req.request,
11579
11580                        control_handle,
11581                    })
11582                }
11583                0x10b86c8a8e9eb51a => {
11584                    header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
11585                    let mut req = fidl::new_empty!(DictionaryRouterDeprecatedRouteRequest, fidl::encoding::DefaultFuchsiaResourceDialect);
11586                    fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<DictionaryRouterDeprecatedRouteRequest>(&header, _body_bytes, handles, &mut req)?;
11587                    let control_handle = DictionaryRouterDeprecatedControlHandle {
11588                        inner: this.inner.clone(),
11589                    };
11590                    Ok(DictionaryRouterDeprecatedRequest::Route {request: req.request,
11591dictionary_server_end: req.dictionary_server_end,
11592
11593                        responder: DictionaryRouterDeprecatedRouteResponder {
11594                            control_handle: std::mem::ManuallyDrop::new(control_handle),
11595                            tx_id: header.tx_id,
11596                        },
11597                    })
11598                }
11599                _ if header.tx_id == 0 && header.dynamic_flags().contains(fidl::encoding::DynamicFlags::FLEXIBLE) => {
11600                    Ok(DictionaryRouterDeprecatedRequest::_UnknownMethod {
11601                        ordinal: header.ordinal,
11602                        control_handle: DictionaryRouterDeprecatedControlHandle { inner: this.inner.clone() },
11603                        method_type: fidl::MethodType::OneWay,
11604                    })
11605                }
11606                _ if header.dynamic_flags().contains(fidl::encoding::DynamicFlags::FLEXIBLE) => {
11607                    this.inner.send_framework_err(
11608                        fidl::encoding::FrameworkErr::UnknownMethod,
11609                        header.tx_id,
11610                        header.ordinal,
11611                        header.dynamic_flags(),
11612                        (bytes, handles),
11613                    )?;
11614                    Ok(DictionaryRouterDeprecatedRequest::_UnknownMethod {
11615                        ordinal: header.ordinal,
11616                        control_handle: DictionaryRouterDeprecatedControlHandle { inner: this.inner.clone() },
11617                        method_type: fidl::MethodType::TwoWay,
11618                    })
11619                }
11620                _ => Err(fidl::Error::UnknownOrdinal {
11621                    ordinal: header.ordinal,
11622                    protocol_name: <DictionaryRouterDeprecatedMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
11623                }),
11624            }))
11625            },
11626        )
11627    }
11628}
11629
11630/// A factory for `Dictionary` capabilities.
11631#[derive(Debug)]
11632pub enum DictionaryRouterDeprecatedRequest {
11633    Clone {
11634        request: fidl::endpoints::ServerEnd<fidl_fuchsia_unknown::CloneableMarker>,
11635        control_handle: DictionaryRouterDeprecatedControlHandle,
11636    },
11637    /// Attempts to produce a `Dictionary` capability from this
11638    /// `DictionaryRouter`. This will return:
11639    ///
11640    /// - A `Dictionary` if the operation is successful.
11641    /// - An empty value if there is no issue found but the capability is not
11642    ///   being provided (for example, an optional route ended in an offer from
11643    ///   void).
11644    /// - An error, if the operation failed.
11645    Route {
11646        request: DeprecatedRouteRequest,
11647        dictionary_server_end: fidl::endpoints::ServerEnd<DictionaryMarker>,
11648        responder: DictionaryRouterDeprecatedRouteResponder,
11649    },
11650    /// An interaction was received which does not match any known method.
11651    #[non_exhaustive]
11652    _UnknownMethod {
11653        /// Ordinal of the method that was called.
11654        ordinal: u64,
11655        control_handle: DictionaryRouterDeprecatedControlHandle,
11656        method_type: fidl::MethodType,
11657    },
11658}
11659
11660impl DictionaryRouterDeprecatedRequest {
11661    #[allow(irrefutable_let_patterns)]
11662    pub fn into_clone(
11663        self,
11664    ) -> Option<(
11665        fidl::endpoints::ServerEnd<fidl_fuchsia_unknown::CloneableMarker>,
11666        DictionaryRouterDeprecatedControlHandle,
11667    )> {
11668        if let DictionaryRouterDeprecatedRequest::Clone { request, control_handle } = self {
11669            Some((request, control_handle))
11670        } else {
11671            None
11672        }
11673    }
11674
11675    #[allow(irrefutable_let_patterns)]
11676    pub fn into_route(
11677        self,
11678    ) -> Option<(
11679        DeprecatedRouteRequest,
11680        fidl::endpoints::ServerEnd<DictionaryMarker>,
11681        DictionaryRouterDeprecatedRouteResponder,
11682    )> {
11683        if let DictionaryRouterDeprecatedRequest::Route {
11684            request,
11685            dictionary_server_end,
11686            responder,
11687        } = self
11688        {
11689            Some((request, dictionary_server_end, responder))
11690        } else {
11691            None
11692        }
11693    }
11694
11695    /// Name of the method defined in FIDL
11696    pub fn method_name(&self) -> &'static str {
11697        match *self {
11698            DictionaryRouterDeprecatedRequest::Clone { .. } => "clone",
11699            DictionaryRouterDeprecatedRequest::Route { .. } => "route",
11700            DictionaryRouterDeprecatedRequest::_UnknownMethod {
11701                method_type: fidl::MethodType::OneWay,
11702                ..
11703            } => "unknown one-way method",
11704            DictionaryRouterDeprecatedRequest::_UnknownMethod {
11705                method_type: fidl::MethodType::TwoWay,
11706                ..
11707            } => "unknown two-way method",
11708        }
11709    }
11710}
11711
11712#[derive(Debug, Clone)]
11713pub struct DictionaryRouterDeprecatedControlHandle {
11714    inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
11715}
11716
11717impl fidl::endpoints::ControlHandle for DictionaryRouterDeprecatedControlHandle {
11718    fn shutdown(&self) {
11719        self.inner.shutdown()
11720    }
11721
11722    fn shutdown_with_epitaph(&self, status: zx_status::Status) {
11723        self.inner.shutdown_with_epitaph(status)
11724    }
11725
11726    fn is_closed(&self) -> bool {
11727        self.inner.channel().is_closed()
11728    }
11729    fn on_closed(&self) -> fidl::OnSignalsRef<'_> {
11730        self.inner.channel().on_closed()
11731    }
11732
11733    #[cfg(target_os = "fuchsia")]
11734    fn signal_peer(
11735        &self,
11736        clear_mask: zx::Signals,
11737        set_mask: zx::Signals,
11738    ) -> Result<(), zx_status::Status> {
11739        use fidl::Peered;
11740        self.inner.channel().signal_peer(clear_mask, set_mask)
11741    }
11742}
11743
11744impl DictionaryRouterDeprecatedControlHandle {}
11745
11746#[must_use = "FIDL methods require a response to be sent"]
11747#[derive(Debug)]
11748pub struct DictionaryRouterDeprecatedRouteResponder {
11749    control_handle: std::mem::ManuallyDrop<DictionaryRouterDeprecatedControlHandle>,
11750    tx_id: u32,
11751}
11752
11753/// Set the the channel to be shutdown (see [`DictionaryRouterDeprecatedControlHandle::shutdown`])
11754/// if the responder is dropped without sending a response, so that the client
11755/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
11756impl std::ops::Drop for DictionaryRouterDeprecatedRouteResponder {
11757    fn drop(&mut self) {
11758        self.control_handle.shutdown();
11759        // Safety: drops once, never accessed again
11760        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
11761    }
11762}
11763
11764impl fidl::endpoints::Responder for DictionaryRouterDeprecatedRouteResponder {
11765    type ControlHandle = DictionaryRouterDeprecatedControlHandle;
11766
11767    fn control_handle(&self) -> &DictionaryRouterDeprecatedControlHandle {
11768        &self.control_handle
11769    }
11770
11771    fn drop_without_shutdown(mut self) {
11772        // Safety: drops once, never accessed again due to mem::forget
11773        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
11774        // Prevent Drop from running (which would shut down the channel)
11775        std::mem::forget(self);
11776    }
11777}
11778
11779impl DictionaryRouterDeprecatedRouteResponder {
11780    /// Sends a response to the FIDL transaction.
11781    ///
11782    /// Sets the channel to shutdown if an error occurs.
11783    pub fn send(self, mut result: Result<RouterResponse, RouterError>) -> Result<(), fidl::Error> {
11784        let _result = self.send_raw(result);
11785        if _result.is_err() {
11786            self.control_handle.shutdown();
11787        }
11788        self.drop_without_shutdown();
11789        _result
11790    }
11791
11792    /// Similar to "send" but does not shutdown the channel if an error occurs.
11793    pub fn send_no_shutdown_on_err(
11794        self,
11795        mut result: Result<RouterResponse, RouterError>,
11796    ) -> Result<(), fidl::Error> {
11797        let _result = self.send_raw(result);
11798        self.drop_without_shutdown();
11799        _result
11800    }
11801
11802    fn send_raw(&self, mut result: Result<RouterResponse, RouterError>) -> Result<(), fidl::Error> {
11803        self.control_handle.inner.send::<fidl::encoding::FlexibleResultType<
11804            DictionaryRouterDeprecatedRouteResponse,
11805            RouterError,
11806        >>(
11807            fidl::encoding::FlexibleResult::new(result.map(|response| (response,))),
11808            self.tx_id,
11809            0x10b86c8a8e9eb51a,
11810            fidl::encoding::DynamicFlags::FLEXIBLE,
11811        )
11812    }
11813}
11814
11815#[derive(Debug, Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash)]
11816pub struct DirConnectorMarker;
11817
11818impl fidl::endpoints::ProtocolMarker for DirConnectorMarker {
11819    type Proxy = DirConnectorProxy;
11820    type RequestStream = DirConnectorRequestStream;
11821    #[cfg(target_os = "fuchsia")]
11822    type SynchronousProxy = DirConnectorSynchronousProxy;
11823
11824    const DEBUG_NAME: &'static str = "(anonymous) DirConnector";
11825}
11826
11827pub trait DirConnectorProxyInterface: Send + Sync {
11828    fn r#clone(
11829        &self,
11830        request: fidl::endpoints::ServerEnd<fidl_fuchsia_unknown::CloneableMarker>,
11831    ) -> Result<(), fidl::Error>;
11832    fn r#connect(
11833        &self,
11834        channel: fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>,
11835    ) -> Result<(), fidl::Error>;
11836}
11837#[derive(Debug)]
11838#[cfg(target_os = "fuchsia")]
11839pub struct DirConnectorSynchronousProxy {
11840    client: fidl::client::sync::Client,
11841}
11842
11843#[cfg(target_os = "fuchsia")]
11844impl fidl::endpoints::SynchronousProxy for DirConnectorSynchronousProxy {
11845    type Proxy = DirConnectorProxy;
11846    type Protocol = DirConnectorMarker;
11847
11848    fn from_channel(inner: fidl::Channel) -> Self {
11849        Self::new(inner)
11850    }
11851
11852    fn into_channel(self) -> fidl::Channel {
11853        self.client.into_channel()
11854    }
11855
11856    fn as_channel(&self) -> &fidl::Channel {
11857        self.client.as_channel()
11858    }
11859}
11860
11861#[cfg(target_os = "fuchsia")]
11862impl DirConnectorSynchronousProxy {
11863    pub fn new(channel: fidl::Channel) -> Self {
11864        let protocol_name = <DirConnectorMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
11865        Self { client: fidl::client::sync::Client::new(channel, protocol_name) }
11866    }
11867
11868    pub fn into_channel(self) -> fidl::Channel {
11869        self.client.into_channel()
11870    }
11871
11872    /// Waits until an event arrives and returns it. It is safe for other
11873    /// threads to make concurrent requests while waiting for an event.
11874    pub fn wait_for_event(
11875        &self,
11876        deadline: zx::MonotonicInstant,
11877    ) -> Result<DirConnectorEvent, fidl::Error> {
11878        DirConnectorEvent::decode(self.client.wait_for_event(deadline)?)
11879    }
11880
11881    pub fn r#clone(
11882        &self,
11883        mut request: fidl::endpoints::ServerEnd<fidl_fuchsia_unknown::CloneableMarker>,
11884    ) -> Result<(), fidl::Error> {
11885        self.client.send::<fidl_fuchsia_unknown::CloneableCloneRequest>(
11886            (request,),
11887            0x20d8a7aba2168a79,
11888            fidl::encoding::DynamicFlags::empty(),
11889        )
11890    }
11891
11892    /// Sends a channel to the `DirReceiver` associated with this `DirConnector`.
11893    pub fn r#connect(
11894        &self,
11895        mut channel: fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>,
11896    ) -> Result<(), fidl::Error> {
11897        self.client.send::<DirConnectorConnectRequest>(
11898            (channel,),
11899            0x23fbb3d289ca7e5b,
11900            fidl::encoding::DynamicFlags::FLEXIBLE,
11901        )
11902    }
11903}
11904
11905#[cfg(target_os = "fuchsia")]
11906impl From<DirConnectorSynchronousProxy> for zx::NullableHandle {
11907    fn from(value: DirConnectorSynchronousProxy) -> Self {
11908        value.into_channel().into()
11909    }
11910}
11911
11912#[cfg(target_os = "fuchsia")]
11913impl From<fidl::Channel> for DirConnectorSynchronousProxy {
11914    fn from(value: fidl::Channel) -> Self {
11915        Self::new(value)
11916    }
11917}
11918
11919#[cfg(target_os = "fuchsia")]
11920impl fidl::endpoints::FromClient for DirConnectorSynchronousProxy {
11921    type Protocol = DirConnectorMarker;
11922
11923    fn from_client(value: fidl::endpoints::ClientEnd<DirConnectorMarker>) -> Self {
11924        Self::new(value.into_channel())
11925    }
11926}
11927
11928#[derive(Debug, Clone)]
11929pub struct DirConnectorProxy {
11930    client: fidl::client::Client<fidl::encoding::DefaultFuchsiaResourceDialect>,
11931}
11932
11933impl fidl::endpoints::Proxy for DirConnectorProxy {
11934    type Protocol = DirConnectorMarker;
11935
11936    fn from_channel(inner: ::fidl::AsyncChannel) -> Self {
11937        Self::new(inner)
11938    }
11939
11940    fn into_channel(self) -> Result<::fidl::AsyncChannel, Self> {
11941        self.client.into_channel().map_err(|client| Self { client })
11942    }
11943
11944    fn as_channel(&self) -> &::fidl::AsyncChannel {
11945        self.client.as_channel()
11946    }
11947}
11948
11949impl DirConnectorProxy {
11950    /// Create a new Proxy for fuchsia.component.runtime/DirConnector.
11951    pub fn new(channel: ::fidl::AsyncChannel) -> Self {
11952        let protocol_name = <DirConnectorMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
11953        Self { client: fidl::client::Client::new(channel, protocol_name) }
11954    }
11955
11956    /// Get a Stream of events from the remote end of the protocol.
11957    ///
11958    /// # Panics
11959    ///
11960    /// Panics if the event stream was already taken.
11961    pub fn take_event_stream(&self) -> DirConnectorEventStream {
11962        DirConnectorEventStream { event_receiver: self.client.take_event_receiver() }
11963    }
11964
11965    pub fn r#clone(
11966        &self,
11967        mut request: fidl::endpoints::ServerEnd<fidl_fuchsia_unknown::CloneableMarker>,
11968    ) -> Result<(), fidl::Error> {
11969        DirConnectorProxyInterface::r#clone(self, request)
11970    }
11971
11972    /// Sends a channel to the `DirReceiver` associated with this `DirConnector`.
11973    pub fn r#connect(
11974        &self,
11975        mut channel: fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>,
11976    ) -> Result<(), fidl::Error> {
11977        DirConnectorProxyInterface::r#connect(self, channel)
11978    }
11979}
11980
11981impl DirConnectorProxyInterface for DirConnectorProxy {
11982    fn r#clone(
11983        &self,
11984        mut request: fidl::endpoints::ServerEnd<fidl_fuchsia_unknown::CloneableMarker>,
11985    ) -> Result<(), fidl::Error> {
11986        self.client.send::<fidl_fuchsia_unknown::CloneableCloneRequest>(
11987            (request,),
11988            0x20d8a7aba2168a79,
11989            fidl::encoding::DynamicFlags::empty(),
11990        )
11991    }
11992
11993    fn r#connect(
11994        &self,
11995        mut channel: fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>,
11996    ) -> Result<(), fidl::Error> {
11997        self.client.send::<DirConnectorConnectRequest>(
11998            (channel,),
11999            0x23fbb3d289ca7e5b,
12000            fidl::encoding::DynamicFlags::FLEXIBLE,
12001        )
12002    }
12003}
12004
12005pub struct DirConnectorEventStream {
12006    event_receiver: fidl::client::EventReceiver<fidl::encoding::DefaultFuchsiaResourceDialect>,
12007}
12008
12009impl std::marker::Unpin for DirConnectorEventStream {}
12010
12011impl futures::stream::FusedStream for DirConnectorEventStream {
12012    fn is_terminated(&self) -> bool {
12013        self.event_receiver.is_terminated()
12014    }
12015}
12016
12017impl futures::Stream for DirConnectorEventStream {
12018    type Item = Result<DirConnectorEvent, fidl::Error>;
12019
12020    fn poll_next(
12021        mut self: std::pin::Pin<&mut Self>,
12022        cx: &mut std::task::Context<'_>,
12023    ) -> std::task::Poll<Option<Self::Item>> {
12024        match futures::ready!(futures::stream::StreamExt::poll_next_unpin(
12025            &mut self.event_receiver,
12026            cx
12027        )?) {
12028            Some(buf) => std::task::Poll::Ready(Some(DirConnectorEvent::decode(buf))),
12029            None => std::task::Poll::Ready(None),
12030        }
12031    }
12032}
12033
12034#[derive(Debug)]
12035pub enum DirConnectorEvent {
12036    #[non_exhaustive]
12037    _UnknownEvent {
12038        /// Ordinal of the event that was sent.
12039        ordinal: u64,
12040    },
12041}
12042
12043impl DirConnectorEvent {
12044    /// Decodes a message buffer as a [`DirConnectorEvent`].
12045    fn decode(
12046        mut buf: <fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc,
12047    ) -> Result<DirConnectorEvent, fidl::Error> {
12048        let (bytes, _handles) = buf.split_mut();
12049        let (tx_header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
12050        debug_assert_eq!(tx_header.tx_id, 0);
12051        match tx_header.ordinal {
12052            _ if tx_header.dynamic_flags().contains(fidl::encoding::DynamicFlags::FLEXIBLE) => {
12053                Ok(DirConnectorEvent::_UnknownEvent { ordinal: tx_header.ordinal })
12054            }
12055            _ => Err(fidl::Error::UnknownOrdinal {
12056                ordinal: tx_header.ordinal,
12057                protocol_name: <DirConnectorMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
12058            }),
12059        }
12060    }
12061}
12062
12063/// A Stream of incoming requests for fuchsia.component.runtime/DirConnector.
12064pub struct DirConnectorRequestStream {
12065    inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
12066    is_terminated: bool,
12067}
12068
12069impl std::marker::Unpin for DirConnectorRequestStream {}
12070
12071impl futures::stream::FusedStream for DirConnectorRequestStream {
12072    fn is_terminated(&self) -> bool {
12073        self.is_terminated
12074    }
12075}
12076
12077impl fidl::endpoints::RequestStream for DirConnectorRequestStream {
12078    type Protocol = DirConnectorMarker;
12079    type ControlHandle = DirConnectorControlHandle;
12080
12081    fn from_channel(channel: ::fidl::AsyncChannel) -> Self {
12082        Self { inner: std::sync::Arc::new(fidl::ServeInner::new(channel)), is_terminated: false }
12083    }
12084
12085    fn control_handle(&self) -> Self::ControlHandle {
12086        DirConnectorControlHandle { inner: self.inner.clone() }
12087    }
12088
12089    fn into_inner(
12090        self,
12091    ) -> (::std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>, bool)
12092    {
12093        (self.inner, self.is_terminated)
12094    }
12095
12096    fn from_inner(
12097        inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
12098        is_terminated: bool,
12099    ) -> Self {
12100        Self { inner, is_terminated }
12101    }
12102}
12103
12104impl futures::Stream for DirConnectorRequestStream {
12105    type Item = Result<DirConnectorRequest, fidl::Error>;
12106
12107    fn poll_next(
12108        mut self: std::pin::Pin<&mut Self>,
12109        cx: &mut std::task::Context<'_>,
12110    ) -> std::task::Poll<Option<Self::Item>> {
12111        let this = &mut *self;
12112        if this.inner.check_shutdown(cx) {
12113            this.is_terminated = true;
12114            return std::task::Poll::Ready(None);
12115        }
12116        if this.is_terminated {
12117            panic!("polled DirConnectorRequestStream after completion");
12118        }
12119        fidl::encoding::with_tls_decode_buf::<_, fidl::encoding::DefaultFuchsiaResourceDialect>(
12120            |bytes, handles| {
12121                match this.inner.channel().read_etc(cx, bytes, handles) {
12122                    std::task::Poll::Ready(Ok(())) => {}
12123                    std::task::Poll::Pending => return std::task::Poll::Pending,
12124                    std::task::Poll::Ready(Err(zx_status::Status::PEER_CLOSED)) => {
12125                        this.is_terminated = true;
12126                        return std::task::Poll::Ready(None);
12127                    }
12128                    std::task::Poll::Ready(Err(e)) => {
12129                        return std::task::Poll::Ready(Some(Err(fidl::Error::ServerRequestRead(
12130                            e.into(),
12131                        ))));
12132                    }
12133                }
12134
12135                // A message has been received from the channel
12136                let (header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
12137
12138                std::task::Poll::Ready(Some(match header.ordinal {
12139                    0x20d8a7aba2168a79 => {
12140                        header.validate_request_tx_id(fidl::MethodType::OneWay)?;
12141                        let mut req = fidl::new_empty!(
12142                            fidl_fuchsia_unknown::CloneableCloneRequest,
12143                            fidl::encoding::DefaultFuchsiaResourceDialect
12144                        );
12145                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_unknown::CloneableCloneRequest>(&header, _body_bytes, handles, &mut req)?;
12146                        let control_handle =
12147                            DirConnectorControlHandle { inner: this.inner.clone() };
12148                        Ok(DirConnectorRequest::Clone { request: req.request, control_handle })
12149                    }
12150                    0x23fbb3d289ca7e5b => {
12151                        header.validate_request_tx_id(fidl::MethodType::OneWay)?;
12152                        let mut req = fidl::new_empty!(
12153                            DirConnectorConnectRequest,
12154                            fidl::encoding::DefaultFuchsiaResourceDialect
12155                        );
12156                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<DirConnectorConnectRequest>(&header, _body_bytes, handles, &mut req)?;
12157                        let control_handle =
12158                            DirConnectorControlHandle { inner: this.inner.clone() };
12159                        Ok(DirConnectorRequest::Connect { channel: req.channel, control_handle })
12160                    }
12161                    _ if header.tx_id == 0
12162                        && header
12163                            .dynamic_flags()
12164                            .contains(fidl::encoding::DynamicFlags::FLEXIBLE) =>
12165                    {
12166                        Ok(DirConnectorRequest::_UnknownMethod {
12167                            ordinal: header.ordinal,
12168                            control_handle: DirConnectorControlHandle { inner: this.inner.clone() },
12169                            method_type: fidl::MethodType::OneWay,
12170                        })
12171                    }
12172                    _ if header
12173                        .dynamic_flags()
12174                        .contains(fidl::encoding::DynamicFlags::FLEXIBLE) =>
12175                    {
12176                        this.inner.send_framework_err(
12177                            fidl::encoding::FrameworkErr::UnknownMethod,
12178                            header.tx_id,
12179                            header.ordinal,
12180                            header.dynamic_flags(),
12181                            (bytes, handles),
12182                        )?;
12183                        Ok(DirConnectorRequest::_UnknownMethod {
12184                            ordinal: header.ordinal,
12185                            control_handle: DirConnectorControlHandle { inner: this.inner.clone() },
12186                            method_type: fidl::MethodType::TwoWay,
12187                        })
12188                    }
12189                    _ => Err(fidl::Error::UnknownOrdinal {
12190                        ordinal: header.ordinal,
12191                        protocol_name:
12192                            <DirConnectorMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
12193                    }),
12194                }))
12195            },
12196        )
12197    }
12198}
12199
12200/// A `DirConnector` represents the sending end of a connection to a capability.
12201/// A `DirConnector` presents as a directory node when inserted into a
12202/// `fuchsia.io.Directory`.
12203#[derive(Debug)]
12204pub enum DirConnectorRequest {
12205    Clone {
12206        request: fidl::endpoints::ServerEnd<fidl_fuchsia_unknown::CloneableMarker>,
12207        control_handle: DirConnectorControlHandle,
12208    },
12209    /// Sends a channel to the `DirReceiver` associated with this `DirConnector`.
12210    Connect {
12211        channel: fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>,
12212        control_handle: DirConnectorControlHandle,
12213    },
12214    /// An interaction was received which does not match any known method.
12215    #[non_exhaustive]
12216    _UnknownMethod {
12217        /// Ordinal of the method that was called.
12218        ordinal: u64,
12219        control_handle: DirConnectorControlHandle,
12220        method_type: fidl::MethodType,
12221    },
12222}
12223
12224impl DirConnectorRequest {
12225    #[allow(irrefutable_let_patterns)]
12226    pub fn into_clone(
12227        self,
12228    ) -> Option<(
12229        fidl::endpoints::ServerEnd<fidl_fuchsia_unknown::CloneableMarker>,
12230        DirConnectorControlHandle,
12231    )> {
12232        if let DirConnectorRequest::Clone { request, control_handle } = self {
12233            Some((request, control_handle))
12234        } else {
12235            None
12236        }
12237    }
12238
12239    #[allow(irrefutable_let_patterns)]
12240    pub fn into_connect(
12241        self,
12242    ) -> Option<(
12243        fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>,
12244        DirConnectorControlHandle,
12245    )> {
12246        if let DirConnectorRequest::Connect { channel, control_handle } = self {
12247            Some((channel, control_handle))
12248        } else {
12249            None
12250        }
12251    }
12252
12253    /// Name of the method defined in FIDL
12254    pub fn method_name(&self) -> &'static str {
12255        match *self {
12256            DirConnectorRequest::Clone { .. } => "clone",
12257            DirConnectorRequest::Connect { .. } => "connect",
12258            DirConnectorRequest::_UnknownMethod {
12259                method_type: fidl::MethodType::OneWay, ..
12260            } => "unknown one-way method",
12261            DirConnectorRequest::_UnknownMethod {
12262                method_type: fidl::MethodType::TwoWay, ..
12263            } => "unknown two-way method",
12264        }
12265    }
12266}
12267
12268#[derive(Debug, Clone)]
12269pub struct DirConnectorControlHandle {
12270    inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
12271}
12272
12273impl fidl::endpoints::ControlHandle for DirConnectorControlHandle {
12274    fn shutdown(&self) {
12275        self.inner.shutdown()
12276    }
12277
12278    fn shutdown_with_epitaph(&self, status: zx_status::Status) {
12279        self.inner.shutdown_with_epitaph(status)
12280    }
12281
12282    fn is_closed(&self) -> bool {
12283        self.inner.channel().is_closed()
12284    }
12285    fn on_closed(&self) -> fidl::OnSignalsRef<'_> {
12286        self.inner.channel().on_closed()
12287    }
12288
12289    #[cfg(target_os = "fuchsia")]
12290    fn signal_peer(
12291        &self,
12292        clear_mask: zx::Signals,
12293        set_mask: zx::Signals,
12294    ) -> Result<(), zx_status::Status> {
12295        use fidl::Peered;
12296        self.inner.channel().signal_peer(clear_mask, set_mask)
12297    }
12298}
12299
12300impl DirConnectorControlHandle {}
12301
12302#[derive(Debug, Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash)]
12303pub struct DirConnectorRouterMarker;
12304
12305impl fidl::endpoints::ProtocolMarker for DirConnectorRouterMarker {
12306    type Proxy = DirConnectorRouterProxy;
12307    type RequestStream = DirConnectorRouterRequestStream;
12308    #[cfg(target_os = "fuchsia")]
12309    type SynchronousProxy = DirConnectorRouterSynchronousProxy;
12310
12311    const DEBUG_NAME: &'static str = "(anonymous) DirConnectorRouter";
12312}
12313pub type DirConnectorRouterRouteResult = Result<RouterResponse, RouterError>;
12314
12315pub trait DirConnectorRouterProxyInterface: Send + Sync {
12316    type RouteResponseFut: std::future::Future<Output = Result<DirConnectorRouterRouteResult, fidl::Error>>
12317        + Send;
12318    fn r#route(
12319        &self,
12320        request: RouteRequest,
12321        instance_token: fidl::EventPair,
12322        handle: fidl::EventPair,
12323    ) -> Self::RouteResponseFut;
12324}
12325#[derive(Debug)]
12326#[cfg(target_os = "fuchsia")]
12327pub struct DirConnectorRouterSynchronousProxy {
12328    client: fidl::client::sync::Client,
12329}
12330
12331#[cfg(target_os = "fuchsia")]
12332impl fidl::endpoints::SynchronousProxy for DirConnectorRouterSynchronousProxy {
12333    type Proxy = DirConnectorRouterProxy;
12334    type Protocol = DirConnectorRouterMarker;
12335
12336    fn from_channel(inner: fidl::Channel) -> Self {
12337        Self::new(inner)
12338    }
12339
12340    fn into_channel(self) -> fidl::Channel {
12341        self.client.into_channel()
12342    }
12343
12344    fn as_channel(&self) -> &fidl::Channel {
12345        self.client.as_channel()
12346    }
12347}
12348
12349#[cfg(target_os = "fuchsia")]
12350impl DirConnectorRouterSynchronousProxy {
12351    pub fn new(channel: fidl::Channel) -> Self {
12352        let protocol_name =
12353            <DirConnectorRouterMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
12354        Self { client: fidl::client::sync::Client::new(channel, protocol_name) }
12355    }
12356
12357    pub fn into_channel(self) -> fidl::Channel {
12358        self.client.into_channel()
12359    }
12360
12361    /// Waits until an event arrives and returns it. It is safe for other
12362    /// threads to make concurrent requests while waiting for an event.
12363    pub fn wait_for_event(
12364        &self,
12365        deadline: zx::MonotonicInstant,
12366    ) -> Result<DirConnectorRouterEvent, fidl::Error> {
12367        DirConnectorRouterEvent::decode(self.client.wait_for_event(deadline)?)
12368    }
12369
12370    /// Attempts to produce a `DirConnector` capability from this
12371    /// `DirConnectorRouter`.
12372    ///
12373    /// `request` contains context for this route, and `instance_token`
12374    /// references the component that the routing operation is being performed
12375    /// for.
12376    ///
12377    /// This will return:
12378    ///
12379    /// - `SUCCESS` if `handle` has been associated with a connector.
12380    /// - `UNAVAILABLE` if the capability is unavailable, in which case `handle`
12381    ///   will be closed.
12382    /// - An error, if the operation failed.
12383    pub fn r#route(
12384        &self,
12385        mut request: RouteRequest,
12386        mut instance_token: fidl::EventPair,
12387        mut handle: fidl::EventPair,
12388        ___deadline: zx::MonotonicInstant,
12389    ) -> Result<DirConnectorRouterRouteResult, fidl::Error> {
12390        let _response = self.client.send_query::<
12391            DirConnectorRouterRouteRequest,
12392            fidl::encoding::FlexibleResultType<DirConnectorRouterRouteResponse, RouterError>,
12393        >(
12394            (&mut request, instance_token, handle,),
12395            0x233f2ac038127462,
12396            fidl::encoding::DynamicFlags::FLEXIBLE,
12397            ___deadline,
12398        )?
12399        .into_result::<DirConnectorRouterMarker>("route")?;
12400        Ok(_response.map(|x| x.response))
12401    }
12402}
12403
12404#[cfg(target_os = "fuchsia")]
12405impl From<DirConnectorRouterSynchronousProxy> for zx::NullableHandle {
12406    fn from(value: DirConnectorRouterSynchronousProxy) -> Self {
12407        value.into_channel().into()
12408    }
12409}
12410
12411#[cfg(target_os = "fuchsia")]
12412impl From<fidl::Channel> for DirConnectorRouterSynchronousProxy {
12413    fn from(value: fidl::Channel) -> Self {
12414        Self::new(value)
12415    }
12416}
12417
12418#[cfg(target_os = "fuchsia")]
12419impl fidl::endpoints::FromClient for DirConnectorRouterSynchronousProxy {
12420    type Protocol = DirConnectorRouterMarker;
12421
12422    fn from_client(value: fidl::endpoints::ClientEnd<DirConnectorRouterMarker>) -> Self {
12423        Self::new(value.into_channel())
12424    }
12425}
12426
12427#[derive(Debug, Clone)]
12428pub struct DirConnectorRouterProxy {
12429    client: fidl::client::Client<fidl::encoding::DefaultFuchsiaResourceDialect>,
12430}
12431
12432impl fidl::endpoints::Proxy for DirConnectorRouterProxy {
12433    type Protocol = DirConnectorRouterMarker;
12434
12435    fn from_channel(inner: ::fidl::AsyncChannel) -> Self {
12436        Self::new(inner)
12437    }
12438
12439    fn into_channel(self) -> Result<::fidl::AsyncChannel, Self> {
12440        self.client.into_channel().map_err(|client| Self { client })
12441    }
12442
12443    fn as_channel(&self) -> &::fidl::AsyncChannel {
12444        self.client.as_channel()
12445    }
12446}
12447
12448impl DirConnectorRouterProxy {
12449    /// Create a new Proxy for fuchsia.component.runtime/DirConnectorRouter.
12450    pub fn new(channel: ::fidl::AsyncChannel) -> Self {
12451        let protocol_name =
12452            <DirConnectorRouterMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
12453        Self { client: fidl::client::Client::new(channel, protocol_name) }
12454    }
12455
12456    /// Get a Stream of events from the remote end of the protocol.
12457    ///
12458    /// # Panics
12459    ///
12460    /// Panics if the event stream was already taken.
12461    pub fn take_event_stream(&self) -> DirConnectorRouterEventStream {
12462        DirConnectorRouterEventStream { event_receiver: self.client.take_event_receiver() }
12463    }
12464
12465    /// Attempts to produce a `DirConnector` capability from this
12466    /// `DirConnectorRouter`.
12467    ///
12468    /// `request` contains context for this route, and `instance_token`
12469    /// references the component that the routing operation is being performed
12470    /// for.
12471    ///
12472    /// This will return:
12473    ///
12474    /// - `SUCCESS` if `handle` has been associated with a connector.
12475    /// - `UNAVAILABLE` if the capability is unavailable, in which case `handle`
12476    ///   will be closed.
12477    /// - An error, if the operation failed.
12478    pub fn r#route(
12479        &self,
12480        mut request: RouteRequest,
12481        mut instance_token: fidl::EventPair,
12482        mut handle: fidl::EventPair,
12483    ) -> fidl::client::QueryResponseFut<
12484        DirConnectorRouterRouteResult,
12485        fidl::encoding::DefaultFuchsiaResourceDialect,
12486    > {
12487        DirConnectorRouterProxyInterface::r#route(self, request, instance_token, handle)
12488    }
12489}
12490
12491impl DirConnectorRouterProxyInterface for DirConnectorRouterProxy {
12492    type RouteResponseFut = fidl::client::QueryResponseFut<
12493        DirConnectorRouterRouteResult,
12494        fidl::encoding::DefaultFuchsiaResourceDialect,
12495    >;
12496    fn r#route(
12497        &self,
12498        mut request: RouteRequest,
12499        mut instance_token: fidl::EventPair,
12500        mut handle: fidl::EventPair,
12501    ) -> Self::RouteResponseFut {
12502        fn _decode(
12503            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
12504        ) -> Result<DirConnectorRouterRouteResult, fidl::Error> {
12505            let _response = fidl::client::decode_transaction_body::<
12506                fidl::encoding::FlexibleResultType<DirConnectorRouterRouteResponse, RouterError>,
12507                fidl::encoding::DefaultFuchsiaResourceDialect,
12508                0x233f2ac038127462,
12509            >(_buf?)?
12510            .into_result::<DirConnectorRouterMarker>("route")?;
12511            Ok(_response.map(|x| x.response))
12512        }
12513        self.client
12514            .send_query_and_decode::<DirConnectorRouterRouteRequest, DirConnectorRouterRouteResult>(
12515                (&mut request, instance_token, handle),
12516                0x233f2ac038127462,
12517                fidl::encoding::DynamicFlags::FLEXIBLE,
12518                _decode,
12519            )
12520    }
12521}
12522
12523pub struct DirConnectorRouterEventStream {
12524    event_receiver: fidl::client::EventReceiver<fidl::encoding::DefaultFuchsiaResourceDialect>,
12525}
12526
12527impl std::marker::Unpin for DirConnectorRouterEventStream {}
12528
12529impl futures::stream::FusedStream for DirConnectorRouterEventStream {
12530    fn is_terminated(&self) -> bool {
12531        self.event_receiver.is_terminated()
12532    }
12533}
12534
12535impl futures::Stream for DirConnectorRouterEventStream {
12536    type Item = Result<DirConnectorRouterEvent, fidl::Error>;
12537
12538    fn poll_next(
12539        mut self: std::pin::Pin<&mut Self>,
12540        cx: &mut std::task::Context<'_>,
12541    ) -> std::task::Poll<Option<Self::Item>> {
12542        match futures::ready!(futures::stream::StreamExt::poll_next_unpin(
12543            &mut self.event_receiver,
12544            cx
12545        )?) {
12546            Some(buf) => std::task::Poll::Ready(Some(DirConnectorRouterEvent::decode(buf))),
12547            None => std::task::Poll::Ready(None),
12548        }
12549    }
12550}
12551
12552#[derive(Debug)]
12553pub enum DirConnectorRouterEvent {
12554    #[non_exhaustive]
12555    _UnknownEvent {
12556        /// Ordinal of the event that was sent.
12557        ordinal: u64,
12558    },
12559}
12560
12561impl DirConnectorRouterEvent {
12562    /// Decodes a message buffer as a [`DirConnectorRouterEvent`].
12563    fn decode(
12564        mut buf: <fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc,
12565    ) -> Result<DirConnectorRouterEvent, fidl::Error> {
12566        let (bytes, _handles) = buf.split_mut();
12567        let (tx_header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
12568        debug_assert_eq!(tx_header.tx_id, 0);
12569        match tx_header.ordinal {
12570            _ if tx_header.dynamic_flags().contains(fidl::encoding::DynamicFlags::FLEXIBLE) => {
12571                Ok(DirConnectorRouterEvent::_UnknownEvent { ordinal: tx_header.ordinal })
12572            }
12573            _ => Err(fidl::Error::UnknownOrdinal {
12574                ordinal: tx_header.ordinal,
12575                protocol_name:
12576                    <DirConnectorRouterMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
12577            }),
12578        }
12579    }
12580}
12581
12582/// A Stream of incoming requests for fuchsia.component.runtime/DirConnectorRouter.
12583pub struct DirConnectorRouterRequestStream {
12584    inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
12585    is_terminated: bool,
12586}
12587
12588impl std::marker::Unpin for DirConnectorRouterRequestStream {}
12589
12590impl futures::stream::FusedStream for DirConnectorRouterRequestStream {
12591    fn is_terminated(&self) -> bool {
12592        self.is_terminated
12593    }
12594}
12595
12596impl fidl::endpoints::RequestStream for DirConnectorRouterRequestStream {
12597    type Protocol = DirConnectorRouterMarker;
12598    type ControlHandle = DirConnectorRouterControlHandle;
12599
12600    fn from_channel(channel: ::fidl::AsyncChannel) -> Self {
12601        Self { inner: std::sync::Arc::new(fidl::ServeInner::new(channel)), is_terminated: false }
12602    }
12603
12604    fn control_handle(&self) -> Self::ControlHandle {
12605        DirConnectorRouterControlHandle { inner: self.inner.clone() }
12606    }
12607
12608    fn into_inner(
12609        self,
12610    ) -> (::std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>, bool)
12611    {
12612        (self.inner, self.is_terminated)
12613    }
12614
12615    fn from_inner(
12616        inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
12617        is_terminated: bool,
12618    ) -> Self {
12619        Self { inner, is_terminated }
12620    }
12621}
12622
12623impl futures::Stream for DirConnectorRouterRequestStream {
12624    type Item = Result<DirConnectorRouterRequest, fidl::Error>;
12625
12626    fn poll_next(
12627        mut self: std::pin::Pin<&mut Self>,
12628        cx: &mut std::task::Context<'_>,
12629    ) -> std::task::Poll<Option<Self::Item>> {
12630        let this = &mut *self;
12631        if this.inner.check_shutdown(cx) {
12632            this.is_terminated = true;
12633            return std::task::Poll::Ready(None);
12634        }
12635        if this.is_terminated {
12636            panic!("polled DirConnectorRouterRequestStream after completion");
12637        }
12638        fidl::encoding::with_tls_decode_buf::<_, fidl::encoding::DefaultFuchsiaResourceDialect>(
12639            |bytes, handles| {
12640                match this.inner.channel().read_etc(cx, bytes, handles) {
12641                    std::task::Poll::Ready(Ok(())) => {}
12642                    std::task::Poll::Pending => return std::task::Poll::Pending,
12643                    std::task::Poll::Ready(Err(zx_status::Status::PEER_CLOSED)) => {
12644                        this.is_terminated = true;
12645                        return std::task::Poll::Ready(None);
12646                    }
12647                    std::task::Poll::Ready(Err(e)) => {
12648                        return std::task::Poll::Ready(Some(Err(fidl::Error::ServerRequestRead(
12649                            e.into(),
12650                        ))));
12651                    }
12652                }
12653
12654                // A message has been received from the channel
12655                let (header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
12656
12657                std::task::Poll::Ready(Some(match header.ordinal {
12658                0x233f2ac038127462 => {
12659                    header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
12660                    let mut req = fidl::new_empty!(DirConnectorRouterRouteRequest, fidl::encoding::DefaultFuchsiaResourceDialect);
12661                    fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<DirConnectorRouterRouteRequest>(&header, _body_bytes, handles, &mut req)?;
12662                    let control_handle = DirConnectorRouterControlHandle {
12663                        inner: this.inner.clone(),
12664                    };
12665                    Ok(DirConnectorRouterRequest::Route {request: req.request,
12666instance_token: req.instance_token,
12667handle: req.handle,
12668
12669                        responder: DirConnectorRouterRouteResponder {
12670                            control_handle: std::mem::ManuallyDrop::new(control_handle),
12671                            tx_id: header.tx_id,
12672                        },
12673                    })
12674                }
12675                _ if header.tx_id == 0 && header.dynamic_flags().contains(fidl::encoding::DynamicFlags::FLEXIBLE) => {
12676                    Ok(DirConnectorRouterRequest::_UnknownMethod {
12677                        ordinal: header.ordinal,
12678                        control_handle: DirConnectorRouterControlHandle { inner: this.inner.clone() },
12679                        method_type: fidl::MethodType::OneWay,
12680                    })
12681                }
12682                _ if header.dynamic_flags().contains(fidl::encoding::DynamicFlags::FLEXIBLE) => {
12683                    this.inner.send_framework_err(
12684                        fidl::encoding::FrameworkErr::UnknownMethod,
12685                        header.tx_id,
12686                        header.ordinal,
12687                        header.dynamic_flags(),
12688                        (bytes, handles),
12689                    )?;
12690                    Ok(DirConnectorRouterRequest::_UnknownMethod {
12691                        ordinal: header.ordinal,
12692                        control_handle: DirConnectorRouterControlHandle { inner: this.inner.clone() },
12693                        method_type: fidl::MethodType::TwoWay,
12694                    })
12695                }
12696                _ => Err(fidl::Error::UnknownOrdinal {
12697                    ordinal: header.ordinal,
12698                    protocol_name: <DirConnectorRouterMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
12699                }),
12700            }))
12701            },
12702        )
12703    }
12704}
12705
12706/// A factory for `DirConnector` capabilities.
12707#[derive(Debug)]
12708pub enum DirConnectorRouterRequest {
12709    /// Attempts to produce a `DirConnector` capability from this
12710    /// `DirConnectorRouter`.
12711    ///
12712    /// `request` contains context for this route, and `instance_token`
12713    /// references the component that the routing operation is being performed
12714    /// for.
12715    ///
12716    /// This will return:
12717    ///
12718    /// - `SUCCESS` if `handle` has been associated with a connector.
12719    /// - `UNAVAILABLE` if the capability is unavailable, in which case `handle`
12720    ///   will be closed.
12721    /// - An error, if the operation failed.
12722    Route {
12723        request: RouteRequest,
12724        instance_token: fidl::EventPair,
12725        handle: fidl::EventPair,
12726        responder: DirConnectorRouterRouteResponder,
12727    },
12728    /// An interaction was received which does not match any known method.
12729    #[non_exhaustive]
12730    _UnknownMethod {
12731        /// Ordinal of the method that was called.
12732        ordinal: u64,
12733        control_handle: DirConnectorRouterControlHandle,
12734        method_type: fidl::MethodType,
12735    },
12736}
12737
12738impl DirConnectorRouterRequest {
12739    #[allow(irrefutable_let_patterns)]
12740    pub fn into_route(
12741        self,
12742    ) -> Option<(RouteRequest, fidl::EventPair, fidl::EventPair, DirConnectorRouterRouteResponder)>
12743    {
12744        if let DirConnectorRouterRequest::Route { request, instance_token, handle, responder } =
12745            self
12746        {
12747            Some((request, instance_token, handle, responder))
12748        } else {
12749            None
12750        }
12751    }
12752
12753    /// Name of the method defined in FIDL
12754    pub fn method_name(&self) -> &'static str {
12755        match *self {
12756            DirConnectorRouterRequest::Route { .. } => "route",
12757            DirConnectorRouterRequest::_UnknownMethod {
12758                method_type: fidl::MethodType::OneWay,
12759                ..
12760            } => "unknown one-way method",
12761            DirConnectorRouterRequest::_UnknownMethod {
12762                method_type: fidl::MethodType::TwoWay,
12763                ..
12764            } => "unknown two-way method",
12765        }
12766    }
12767}
12768
12769#[derive(Debug, Clone)]
12770pub struct DirConnectorRouterControlHandle {
12771    inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
12772}
12773
12774impl fidl::endpoints::ControlHandle for DirConnectorRouterControlHandle {
12775    fn shutdown(&self) {
12776        self.inner.shutdown()
12777    }
12778
12779    fn shutdown_with_epitaph(&self, status: zx_status::Status) {
12780        self.inner.shutdown_with_epitaph(status)
12781    }
12782
12783    fn is_closed(&self) -> bool {
12784        self.inner.channel().is_closed()
12785    }
12786    fn on_closed(&self) -> fidl::OnSignalsRef<'_> {
12787        self.inner.channel().on_closed()
12788    }
12789
12790    #[cfg(target_os = "fuchsia")]
12791    fn signal_peer(
12792        &self,
12793        clear_mask: zx::Signals,
12794        set_mask: zx::Signals,
12795    ) -> Result<(), zx_status::Status> {
12796        use fidl::Peered;
12797        self.inner.channel().signal_peer(clear_mask, set_mask)
12798    }
12799}
12800
12801impl DirConnectorRouterControlHandle {}
12802
12803#[must_use = "FIDL methods require a response to be sent"]
12804#[derive(Debug)]
12805pub struct DirConnectorRouterRouteResponder {
12806    control_handle: std::mem::ManuallyDrop<DirConnectorRouterControlHandle>,
12807    tx_id: u32,
12808}
12809
12810/// Set the the channel to be shutdown (see [`DirConnectorRouterControlHandle::shutdown`])
12811/// if the responder is dropped without sending a response, so that the client
12812/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
12813impl std::ops::Drop for DirConnectorRouterRouteResponder {
12814    fn drop(&mut self) {
12815        self.control_handle.shutdown();
12816        // Safety: drops once, never accessed again
12817        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
12818    }
12819}
12820
12821impl fidl::endpoints::Responder for DirConnectorRouterRouteResponder {
12822    type ControlHandle = DirConnectorRouterControlHandle;
12823
12824    fn control_handle(&self) -> &DirConnectorRouterControlHandle {
12825        &self.control_handle
12826    }
12827
12828    fn drop_without_shutdown(mut self) {
12829        // Safety: drops once, never accessed again due to mem::forget
12830        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
12831        // Prevent Drop from running (which would shut down the channel)
12832        std::mem::forget(self);
12833    }
12834}
12835
12836impl DirConnectorRouterRouteResponder {
12837    /// Sends a response to the FIDL transaction.
12838    ///
12839    /// Sets the channel to shutdown if an error occurs.
12840    pub fn send(self, mut result: Result<RouterResponse, RouterError>) -> Result<(), fidl::Error> {
12841        let _result = self.send_raw(result);
12842        if _result.is_err() {
12843            self.control_handle.shutdown();
12844        }
12845        self.drop_without_shutdown();
12846        _result
12847    }
12848
12849    /// Similar to "send" but does not shutdown the channel if an error occurs.
12850    pub fn send_no_shutdown_on_err(
12851        self,
12852        mut result: Result<RouterResponse, RouterError>,
12853    ) -> Result<(), fidl::Error> {
12854        let _result = self.send_raw(result);
12855        self.drop_without_shutdown();
12856        _result
12857    }
12858
12859    fn send_raw(&self, mut result: Result<RouterResponse, RouterError>) -> Result<(), fidl::Error> {
12860        self.control_handle.inner.send::<fidl::encoding::FlexibleResultType<
12861            DirConnectorRouterRouteResponse,
12862            RouterError,
12863        >>(
12864            fidl::encoding::FlexibleResult::new(result.map(|response| (response,))),
12865            self.tx_id,
12866            0x233f2ac038127462,
12867            fidl::encoding::DynamicFlags::FLEXIBLE,
12868        )
12869    }
12870}
12871
12872#[derive(Debug, Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash)]
12873pub struct DirConnectorRouterDeprecatedMarker;
12874
12875impl fidl::endpoints::ProtocolMarker for DirConnectorRouterDeprecatedMarker {
12876    type Proxy = DirConnectorRouterDeprecatedProxy;
12877    type RequestStream = DirConnectorRouterDeprecatedRequestStream;
12878    #[cfg(target_os = "fuchsia")]
12879    type SynchronousProxy = DirConnectorRouterDeprecatedSynchronousProxy;
12880
12881    const DEBUG_NAME: &'static str = "(anonymous) DirConnectorRouterDeprecated";
12882}
12883pub type DirConnectorRouterDeprecatedRouteResult = Result<RouterResponse, RouterError>;
12884
12885pub trait DirConnectorRouterDeprecatedProxyInterface: Send + Sync {
12886    fn r#clone(
12887        &self,
12888        request: fidl::endpoints::ServerEnd<fidl_fuchsia_unknown::CloneableMarker>,
12889    ) -> Result<(), fidl::Error>;
12890    type RouteResponseFut: std::future::Future<Output = Result<DirConnectorRouterDeprecatedRouteResult, fidl::Error>>
12891        + Send;
12892    fn r#route(
12893        &self,
12894        request: DeprecatedRouteRequest,
12895        dir_connector_server_end: fidl::endpoints::ServerEnd<DirConnectorMarker>,
12896    ) -> Self::RouteResponseFut;
12897}
12898#[derive(Debug)]
12899#[cfg(target_os = "fuchsia")]
12900pub struct DirConnectorRouterDeprecatedSynchronousProxy {
12901    client: fidl::client::sync::Client,
12902}
12903
12904#[cfg(target_os = "fuchsia")]
12905impl fidl::endpoints::SynchronousProxy for DirConnectorRouterDeprecatedSynchronousProxy {
12906    type Proxy = DirConnectorRouterDeprecatedProxy;
12907    type Protocol = DirConnectorRouterDeprecatedMarker;
12908
12909    fn from_channel(inner: fidl::Channel) -> Self {
12910        Self::new(inner)
12911    }
12912
12913    fn into_channel(self) -> fidl::Channel {
12914        self.client.into_channel()
12915    }
12916
12917    fn as_channel(&self) -> &fidl::Channel {
12918        self.client.as_channel()
12919    }
12920}
12921
12922#[cfg(target_os = "fuchsia")]
12923impl DirConnectorRouterDeprecatedSynchronousProxy {
12924    pub fn new(channel: fidl::Channel) -> Self {
12925        let protocol_name =
12926            <DirConnectorRouterDeprecatedMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
12927        Self { client: fidl::client::sync::Client::new(channel, protocol_name) }
12928    }
12929
12930    pub fn into_channel(self) -> fidl::Channel {
12931        self.client.into_channel()
12932    }
12933
12934    /// Waits until an event arrives and returns it. It is safe for other
12935    /// threads to make concurrent requests while waiting for an event.
12936    pub fn wait_for_event(
12937        &self,
12938        deadline: zx::MonotonicInstant,
12939    ) -> Result<DirConnectorRouterDeprecatedEvent, fidl::Error> {
12940        DirConnectorRouterDeprecatedEvent::decode(self.client.wait_for_event(deadline)?)
12941    }
12942
12943    pub fn r#clone(
12944        &self,
12945        mut request: fidl::endpoints::ServerEnd<fidl_fuchsia_unknown::CloneableMarker>,
12946    ) -> Result<(), fidl::Error> {
12947        self.client.send::<fidl_fuchsia_unknown::CloneableCloneRequest>(
12948            (request,),
12949            0x20d8a7aba2168a79,
12950            fidl::encoding::DynamicFlags::empty(),
12951        )
12952    }
12953
12954    /// Attempts to produce a `DirConnector` capability from this
12955    /// `DirConnectorRouter`. This will return:
12956    ///
12957    /// - A `DirConnector` if the operation is successful.
12958    /// - An empty value if there is no issue found but the capability is not
12959    ///   being provided (for example, an optional route ended in an offer from
12960    ///   void).
12961    /// - An error, if the operation failed.
12962    pub fn r#route(
12963        &self,
12964        mut request: DeprecatedRouteRequest,
12965        mut dir_connector_server_end: fidl::endpoints::ServerEnd<DirConnectorMarker>,
12966        ___deadline: zx::MonotonicInstant,
12967    ) -> Result<DirConnectorRouterDeprecatedRouteResult, fidl::Error> {
12968        let _response = self.client.send_query::<
12969            DirConnectorRouterDeprecatedRouteRequest,
12970            fidl::encoding::FlexibleResultType<DirConnectorRouterDeprecatedRouteResponse, RouterError>,
12971        >(
12972            (&mut request, dir_connector_server_end,),
12973            0x199e1dee6ba3d71a,
12974            fidl::encoding::DynamicFlags::FLEXIBLE,
12975            ___deadline,
12976        )?
12977        .into_result::<DirConnectorRouterDeprecatedMarker>("route")?;
12978        Ok(_response.map(|x| x.response))
12979    }
12980}
12981
12982#[cfg(target_os = "fuchsia")]
12983impl From<DirConnectorRouterDeprecatedSynchronousProxy> for zx::NullableHandle {
12984    fn from(value: DirConnectorRouterDeprecatedSynchronousProxy) -> Self {
12985        value.into_channel().into()
12986    }
12987}
12988
12989#[cfg(target_os = "fuchsia")]
12990impl From<fidl::Channel> for DirConnectorRouterDeprecatedSynchronousProxy {
12991    fn from(value: fidl::Channel) -> Self {
12992        Self::new(value)
12993    }
12994}
12995
12996#[cfg(target_os = "fuchsia")]
12997impl fidl::endpoints::FromClient for DirConnectorRouterDeprecatedSynchronousProxy {
12998    type Protocol = DirConnectorRouterDeprecatedMarker;
12999
13000    fn from_client(value: fidl::endpoints::ClientEnd<DirConnectorRouterDeprecatedMarker>) -> Self {
13001        Self::new(value.into_channel())
13002    }
13003}
13004
13005#[derive(Debug, Clone)]
13006pub struct DirConnectorRouterDeprecatedProxy {
13007    client: fidl::client::Client<fidl::encoding::DefaultFuchsiaResourceDialect>,
13008}
13009
13010impl fidl::endpoints::Proxy for DirConnectorRouterDeprecatedProxy {
13011    type Protocol = DirConnectorRouterDeprecatedMarker;
13012
13013    fn from_channel(inner: ::fidl::AsyncChannel) -> Self {
13014        Self::new(inner)
13015    }
13016
13017    fn into_channel(self) -> Result<::fidl::AsyncChannel, Self> {
13018        self.client.into_channel().map_err(|client| Self { client })
13019    }
13020
13021    fn as_channel(&self) -> &::fidl::AsyncChannel {
13022        self.client.as_channel()
13023    }
13024}
13025
13026impl DirConnectorRouterDeprecatedProxy {
13027    /// Create a new Proxy for fuchsia.component.runtime/DirConnectorRouterDeprecated.
13028    pub fn new(channel: ::fidl::AsyncChannel) -> Self {
13029        let protocol_name =
13030            <DirConnectorRouterDeprecatedMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
13031        Self { client: fidl::client::Client::new(channel, protocol_name) }
13032    }
13033
13034    /// Get a Stream of events from the remote end of the protocol.
13035    ///
13036    /// # Panics
13037    ///
13038    /// Panics if the event stream was already taken.
13039    pub fn take_event_stream(&self) -> DirConnectorRouterDeprecatedEventStream {
13040        DirConnectorRouterDeprecatedEventStream {
13041            event_receiver: self.client.take_event_receiver(),
13042        }
13043    }
13044
13045    pub fn r#clone(
13046        &self,
13047        mut request: fidl::endpoints::ServerEnd<fidl_fuchsia_unknown::CloneableMarker>,
13048    ) -> Result<(), fidl::Error> {
13049        DirConnectorRouterDeprecatedProxyInterface::r#clone(self, request)
13050    }
13051
13052    /// Attempts to produce a `DirConnector` capability from this
13053    /// `DirConnectorRouter`. This will return:
13054    ///
13055    /// - A `DirConnector` if the operation is successful.
13056    /// - An empty value if there is no issue found but the capability is not
13057    ///   being provided (for example, an optional route ended in an offer from
13058    ///   void).
13059    /// - An error, if the operation failed.
13060    pub fn r#route(
13061        &self,
13062        mut request: DeprecatedRouteRequest,
13063        mut dir_connector_server_end: fidl::endpoints::ServerEnd<DirConnectorMarker>,
13064    ) -> fidl::client::QueryResponseFut<
13065        DirConnectorRouterDeprecatedRouteResult,
13066        fidl::encoding::DefaultFuchsiaResourceDialect,
13067    > {
13068        DirConnectorRouterDeprecatedProxyInterface::r#route(self, request, dir_connector_server_end)
13069    }
13070}
13071
13072impl DirConnectorRouterDeprecatedProxyInterface for DirConnectorRouterDeprecatedProxy {
13073    fn r#clone(
13074        &self,
13075        mut request: fidl::endpoints::ServerEnd<fidl_fuchsia_unknown::CloneableMarker>,
13076    ) -> Result<(), fidl::Error> {
13077        self.client.send::<fidl_fuchsia_unknown::CloneableCloneRequest>(
13078            (request,),
13079            0x20d8a7aba2168a79,
13080            fidl::encoding::DynamicFlags::empty(),
13081        )
13082    }
13083
13084    type RouteResponseFut = fidl::client::QueryResponseFut<
13085        DirConnectorRouterDeprecatedRouteResult,
13086        fidl::encoding::DefaultFuchsiaResourceDialect,
13087    >;
13088    fn r#route(
13089        &self,
13090        mut request: DeprecatedRouteRequest,
13091        mut dir_connector_server_end: fidl::endpoints::ServerEnd<DirConnectorMarker>,
13092    ) -> Self::RouteResponseFut {
13093        fn _decode(
13094            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
13095        ) -> Result<DirConnectorRouterDeprecatedRouteResult, fidl::Error> {
13096            let _response = fidl::client::decode_transaction_body::<
13097                fidl::encoding::FlexibleResultType<
13098                    DirConnectorRouterDeprecatedRouteResponse,
13099                    RouterError,
13100                >,
13101                fidl::encoding::DefaultFuchsiaResourceDialect,
13102                0x199e1dee6ba3d71a,
13103            >(_buf?)?
13104            .into_result::<DirConnectorRouterDeprecatedMarker>("route")?;
13105            Ok(_response.map(|x| x.response))
13106        }
13107        self.client.send_query_and_decode::<
13108            DirConnectorRouterDeprecatedRouteRequest,
13109            DirConnectorRouterDeprecatedRouteResult,
13110        >(
13111            (&mut request, dir_connector_server_end,),
13112            0x199e1dee6ba3d71a,
13113            fidl::encoding::DynamicFlags::FLEXIBLE,
13114            _decode,
13115        )
13116    }
13117}
13118
13119pub struct DirConnectorRouterDeprecatedEventStream {
13120    event_receiver: fidl::client::EventReceiver<fidl::encoding::DefaultFuchsiaResourceDialect>,
13121}
13122
13123impl std::marker::Unpin for DirConnectorRouterDeprecatedEventStream {}
13124
13125impl futures::stream::FusedStream for DirConnectorRouterDeprecatedEventStream {
13126    fn is_terminated(&self) -> bool {
13127        self.event_receiver.is_terminated()
13128    }
13129}
13130
13131impl futures::Stream for DirConnectorRouterDeprecatedEventStream {
13132    type Item = Result<DirConnectorRouterDeprecatedEvent, fidl::Error>;
13133
13134    fn poll_next(
13135        mut self: std::pin::Pin<&mut Self>,
13136        cx: &mut std::task::Context<'_>,
13137    ) -> std::task::Poll<Option<Self::Item>> {
13138        match futures::ready!(futures::stream::StreamExt::poll_next_unpin(
13139            &mut self.event_receiver,
13140            cx
13141        )?) {
13142            Some(buf) => {
13143                std::task::Poll::Ready(Some(DirConnectorRouterDeprecatedEvent::decode(buf)))
13144            }
13145            None => std::task::Poll::Ready(None),
13146        }
13147    }
13148}
13149
13150#[derive(Debug)]
13151pub enum DirConnectorRouterDeprecatedEvent {
13152    #[non_exhaustive]
13153    _UnknownEvent {
13154        /// Ordinal of the event that was sent.
13155        ordinal: u64,
13156    },
13157}
13158
13159impl DirConnectorRouterDeprecatedEvent {
13160    /// Decodes a message buffer as a [`DirConnectorRouterDeprecatedEvent`].
13161    fn decode(
13162        mut buf: <fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc,
13163    ) -> Result<DirConnectorRouterDeprecatedEvent, fidl::Error> {
13164        let (bytes, _handles) = buf.split_mut();
13165        let (tx_header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
13166        debug_assert_eq!(tx_header.tx_id, 0);
13167        match tx_header.ordinal {
13168            _ if tx_header.dynamic_flags().contains(fidl::encoding::DynamicFlags::FLEXIBLE) => {
13169                Ok(DirConnectorRouterDeprecatedEvent::_UnknownEvent {
13170                    ordinal: tx_header.ordinal,
13171                })
13172            }
13173            _ => Err(fidl::Error::UnknownOrdinal {
13174                ordinal: tx_header.ordinal,
13175                protocol_name: <DirConnectorRouterDeprecatedMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
13176            })
13177        }
13178    }
13179}
13180
13181/// A Stream of incoming requests for fuchsia.component.runtime/DirConnectorRouterDeprecated.
13182pub struct DirConnectorRouterDeprecatedRequestStream {
13183    inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
13184    is_terminated: bool,
13185}
13186
13187impl std::marker::Unpin for DirConnectorRouterDeprecatedRequestStream {}
13188
13189impl futures::stream::FusedStream for DirConnectorRouterDeprecatedRequestStream {
13190    fn is_terminated(&self) -> bool {
13191        self.is_terminated
13192    }
13193}
13194
13195impl fidl::endpoints::RequestStream for DirConnectorRouterDeprecatedRequestStream {
13196    type Protocol = DirConnectorRouterDeprecatedMarker;
13197    type ControlHandle = DirConnectorRouterDeprecatedControlHandle;
13198
13199    fn from_channel(channel: ::fidl::AsyncChannel) -> Self {
13200        Self { inner: std::sync::Arc::new(fidl::ServeInner::new(channel)), is_terminated: false }
13201    }
13202
13203    fn control_handle(&self) -> Self::ControlHandle {
13204        DirConnectorRouterDeprecatedControlHandle { inner: self.inner.clone() }
13205    }
13206
13207    fn into_inner(
13208        self,
13209    ) -> (::std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>, bool)
13210    {
13211        (self.inner, self.is_terminated)
13212    }
13213
13214    fn from_inner(
13215        inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
13216        is_terminated: bool,
13217    ) -> Self {
13218        Self { inner, is_terminated }
13219    }
13220}
13221
13222impl futures::Stream for DirConnectorRouterDeprecatedRequestStream {
13223    type Item = Result<DirConnectorRouterDeprecatedRequest, fidl::Error>;
13224
13225    fn poll_next(
13226        mut self: std::pin::Pin<&mut Self>,
13227        cx: &mut std::task::Context<'_>,
13228    ) -> std::task::Poll<Option<Self::Item>> {
13229        let this = &mut *self;
13230        if this.inner.check_shutdown(cx) {
13231            this.is_terminated = true;
13232            return std::task::Poll::Ready(None);
13233        }
13234        if this.is_terminated {
13235            panic!("polled DirConnectorRouterDeprecatedRequestStream after completion");
13236        }
13237        fidl::encoding::with_tls_decode_buf::<_, fidl::encoding::DefaultFuchsiaResourceDialect>(
13238            |bytes, handles| {
13239                match this.inner.channel().read_etc(cx, bytes, handles) {
13240                    std::task::Poll::Ready(Ok(())) => {}
13241                    std::task::Poll::Pending => return std::task::Poll::Pending,
13242                    std::task::Poll::Ready(Err(zx_status::Status::PEER_CLOSED)) => {
13243                        this.is_terminated = true;
13244                        return std::task::Poll::Ready(None);
13245                    }
13246                    std::task::Poll::Ready(Err(e)) => {
13247                        return std::task::Poll::Ready(Some(Err(fidl::Error::ServerRequestRead(
13248                            e.into(),
13249                        ))));
13250                    }
13251                }
13252
13253                // A message has been received from the channel
13254                let (header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
13255
13256                std::task::Poll::Ready(Some(match header.ordinal {
13257                0x20d8a7aba2168a79 => {
13258                    header.validate_request_tx_id(fidl::MethodType::OneWay)?;
13259                    let mut req = fidl::new_empty!(fidl_fuchsia_unknown::CloneableCloneRequest, fidl::encoding::DefaultFuchsiaResourceDialect);
13260                    fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_unknown::CloneableCloneRequest>(&header, _body_bytes, handles, &mut req)?;
13261                    let control_handle = DirConnectorRouterDeprecatedControlHandle {
13262                        inner: this.inner.clone(),
13263                    };
13264                    Ok(DirConnectorRouterDeprecatedRequest::Clone {request: req.request,
13265
13266                        control_handle,
13267                    })
13268                }
13269                0x199e1dee6ba3d71a => {
13270                    header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
13271                    let mut req = fidl::new_empty!(DirConnectorRouterDeprecatedRouteRequest, fidl::encoding::DefaultFuchsiaResourceDialect);
13272                    fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<DirConnectorRouterDeprecatedRouteRequest>(&header, _body_bytes, handles, &mut req)?;
13273                    let control_handle = DirConnectorRouterDeprecatedControlHandle {
13274                        inner: this.inner.clone(),
13275                    };
13276                    Ok(DirConnectorRouterDeprecatedRequest::Route {request: req.request,
13277dir_connector_server_end: req.dir_connector_server_end,
13278
13279                        responder: DirConnectorRouterDeprecatedRouteResponder {
13280                            control_handle: std::mem::ManuallyDrop::new(control_handle),
13281                            tx_id: header.tx_id,
13282                        },
13283                    })
13284                }
13285                _ if header.tx_id == 0 && header.dynamic_flags().contains(fidl::encoding::DynamicFlags::FLEXIBLE) => {
13286                    Ok(DirConnectorRouterDeprecatedRequest::_UnknownMethod {
13287                        ordinal: header.ordinal,
13288                        control_handle: DirConnectorRouterDeprecatedControlHandle { inner: this.inner.clone() },
13289                        method_type: fidl::MethodType::OneWay,
13290                    })
13291                }
13292                _ if header.dynamic_flags().contains(fidl::encoding::DynamicFlags::FLEXIBLE) => {
13293                    this.inner.send_framework_err(
13294                        fidl::encoding::FrameworkErr::UnknownMethod,
13295                        header.tx_id,
13296                        header.ordinal,
13297                        header.dynamic_flags(),
13298                        (bytes, handles),
13299                    )?;
13300                    Ok(DirConnectorRouterDeprecatedRequest::_UnknownMethod {
13301                        ordinal: header.ordinal,
13302                        control_handle: DirConnectorRouterDeprecatedControlHandle { inner: this.inner.clone() },
13303                        method_type: fidl::MethodType::TwoWay,
13304                    })
13305                }
13306                _ => Err(fidl::Error::UnknownOrdinal {
13307                    ordinal: header.ordinal,
13308                    protocol_name: <DirConnectorRouterDeprecatedMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
13309                }),
13310            }))
13311            },
13312        )
13313    }
13314}
13315
13316/// A factory for `DirConnector` capabilities.
13317#[derive(Debug)]
13318pub enum DirConnectorRouterDeprecatedRequest {
13319    Clone {
13320        request: fidl::endpoints::ServerEnd<fidl_fuchsia_unknown::CloneableMarker>,
13321        control_handle: DirConnectorRouterDeprecatedControlHandle,
13322    },
13323    /// Attempts to produce a `DirConnector` capability from this
13324    /// `DirConnectorRouter`. This will return:
13325    ///
13326    /// - A `DirConnector` if the operation is successful.
13327    /// - An empty value if there is no issue found but the capability is not
13328    ///   being provided (for example, an optional route ended in an offer from
13329    ///   void).
13330    /// - An error, if the operation failed.
13331    Route {
13332        request: DeprecatedRouteRequest,
13333        dir_connector_server_end: fidl::endpoints::ServerEnd<DirConnectorMarker>,
13334        responder: DirConnectorRouterDeprecatedRouteResponder,
13335    },
13336    /// An interaction was received which does not match any known method.
13337    #[non_exhaustive]
13338    _UnknownMethod {
13339        /// Ordinal of the method that was called.
13340        ordinal: u64,
13341        control_handle: DirConnectorRouterDeprecatedControlHandle,
13342        method_type: fidl::MethodType,
13343    },
13344}
13345
13346impl DirConnectorRouterDeprecatedRequest {
13347    #[allow(irrefutable_let_patterns)]
13348    pub fn into_clone(
13349        self,
13350    ) -> Option<(
13351        fidl::endpoints::ServerEnd<fidl_fuchsia_unknown::CloneableMarker>,
13352        DirConnectorRouterDeprecatedControlHandle,
13353    )> {
13354        if let DirConnectorRouterDeprecatedRequest::Clone { request, control_handle } = self {
13355            Some((request, control_handle))
13356        } else {
13357            None
13358        }
13359    }
13360
13361    #[allow(irrefutable_let_patterns)]
13362    pub fn into_route(
13363        self,
13364    ) -> Option<(
13365        DeprecatedRouteRequest,
13366        fidl::endpoints::ServerEnd<DirConnectorMarker>,
13367        DirConnectorRouterDeprecatedRouteResponder,
13368    )> {
13369        if let DirConnectorRouterDeprecatedRequest::Route {
13370            request,
13371            dir_connector_server_end,
13372            responder,
13373        } = self
13374        {
13375            Some((request, dir_connector_server_end, responder))
13376        } else {
13377            None
13378        }
13379    }
13380
13381    /// Name of the method defined in FIDL
13382    pub fn method_name(&self) -> &'static str {
13383        match *self {
13384            DirConnectorRouterDeprecatedRequest::Clone { .. } => "clone",
13385            DirConnectorRouterDeprecatedRequest::Route { .. } => "route",
13386            DirConnectorRouterDeprecatedRequest::_UnknownMethod {
13387                method_type: fidl::MethodType::OneWay,
13388                ..
13389            } => "unknown one-way method",
13390            DirConnectorRouterDeprecatedRequest::_UnknownMethod {
13391                method_type: fidl::MethodType::TwoWay,
13392                ..
13393            } => "unknown two-way method",
13394        }
13395    }
13396}
13397
13398#[derive(Debug, Clone)]
13399pub struct DirConnectorRouterDeprecatedControlHandle {
13400    inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
13401}
13402
13403impl fidl::endpoints::ControlHandle for DirConnectorRouterDeprecatedControlHandle {
13404    fn shutdown(&self) {
13405        self.inner.shutdown()
13406    }
13407
13408    fn shutdown_with_epitaph(&self, status: zx_status::Status) {
13409        self.inner.shutdown_with_epitaph(status)
13410    }
13411
13412    fn is_closed(&self) -> bool {
13413        self.inner.channel().is_closed()
13414    }
13415    fn on_closed(&self) -> fidl::OnSignalsRef<'_> {
13416        self.inner.channel().on_closed()
13417    }
13418
13419    #[cfg(target_os = "fuchsia")]
13420    fn signal_peer(
13421        &self,
13422        clear_mask: zx::Signals,
13423        set_mask: zx::Signals,
13424    ) -> Result<(), zx_status::Status> {
13425        use fidl::Peered;
13426        self.inner.channel().signal_peer(clear_mask, set_mask)
13427    }
13428}
13429
13430impl DirConnectorRouterDeprecatedControlHandle {}
13431
13432#[must_use = "FIDL methods require a response to be sent"]
13433#[derive(Debug)]
13434pub struct DirConnectorRouterDeprecatedRouteResponder {
13435    control_handle: std::mem::ManuallyDrop<DirConnectorRouterDeprecatedControlHandle>,
13436    tx_id: u32,
13437}
13438
13439/// Set the the channel to be shutdown (see [`DirConnectorRouterDeprecatedControlHandle::shutdown`])
13440/// if the responder is dropped without sending a response, so that the client
13441/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
13442impl std::ops::Drop for DirConnectorRouterDeprecatedRouteResponder {
13443    fn drop(&mut self) {
13444        self.control_handle.shutdown();
13445        // Safety: drops once, never accessed again
13446        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
13447    }
13448}
13449
13450impl fidl::endpoints::Responder for DirConnectorRouterDeprecatedRouteResponder {
13451    type ControlHandle = DirConnectorRouterDeprecatedControlHandle;
13452
13453    fn control_handle(&self) -> &DirConnectorRouterDeprecatedControlHandle {
13454        &self.control_handle
13455    }
13456
13457    fn drop_without_shutdown(mut self) {
13458        // Safety: drops once, never accessed again due to mem::forget
13459        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
13460        // Prevent Drop from running (which would shut down the channel)
13461        std::mem::forget(self);
13462    }
13463}
13464
13465impl DirConnectorRouterDeprecatedRouteResponder {
13466    /// Sends a response to the FIDL transaction.
13467    ///
13468    /// Sets the channel to shutdown if an error occurs.
13469    pub fn send(self, mut result: Result<RouterResponse, RouterError>) -> Result<(), fidl::Error> {
13470        let _result = self.send_raw(result);
13471        if _result.is_err() {
13472            self.control_handle.shutdown();
13473        }
13474        self.drop_without_shutdown();
13475        _result
13476    }
13477
13478    /// Similar to "send" but does not shutdown the channel if an error occurs.
13479    pub fn send_no_shutdown_on_err(
13480        self,
13481        mut result: Result<RouterResponse, RouterError>,
13482    ) -> Result<(), fidl::Error> {
13483        let _result = self.send_raw(result);
13484        self.drop_without_shutdown();
13485        _result
13486    }
13487
13488    fn send_raw(&self, mut result: Result<RouterResponse, RouterError>) -> Result<(), fidl::Error> {
13489        self.control_handle.inner.send::<fidl::encoding::FlexibleResultType<
13490            DirConnectorRouterDeprecatedRouteResponse,
13491            RouterError,
13492        >>(
13493            fidl::encoding::FlexibleResult::new(result.map(|response| (response,))),
13494            self.tx_id,
13495            0x199e1dee6ba3d71a,
13496            fidl::encoding::DynamicFlags::FLEXIBLE,
13497        )
13498    }
13499}
13500
13501#[derive(Debug, Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash)]
13502pub struct DirReceiverMarker;
13503
13504impl fidl::endpoints::ProtocolMarker for DirReceiverMarker {
13505    type Proxy = DirReceiverProxy;
13506    type RequestStream = DirReceiverRequestStream;
13507    #[cfg(target_os = "fuchsia")]
13508    type SynchronousProxy = DirReceiverSynchronousProxy;
13509
13510    const DEBUG_NAME: &'static str = "(anonymous) DirReceiver";
13511}
13512
13513pub trait DirReceiverProxyInterface: Send + Sync {
13514    fn r#receive(
13515        &self,
13516        channel: fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>,
13517        path: &str,
13518        rights: fidl_fuchsia_io::Flags,
13519    ) -> Result<(), fidl::Error>;
13520}
13521#[derive(Debug)]
13522#[cfg(target_os = "fuchsia")]
13523pub struct DirReceiverSynchronousProxy {
13524    client: fidl::client::sync::Client,
13525}
13526
13527#[cfg(target_os = "fuchsia")]
13528impl fidl::endpoints::SynchronousProxy for DirReceiverSynchronousProxy {
13529    type Proxy = DirReceiverProxy;
13530    type Protocol = DirReceiverMarker;
13531
13532    fn from_channel(inner: fidl::Channel) -> Self {
13533        Self::new(inner)
13534    }
13535
13536    fn into_channel(self) -> fidl::Channel {
13537        self.client.into_channel()
13538    }
13539
13540    fn as_channel(&self) -> &fidl::Channel {
13541        self.client.as_channel()
13542    }
13543}
13544
13545#[cfg(target_os = "fuchsia")]
13546impl DirReceiverSynchronousProxy {
13547    pub fn new(channel: fidl::Channel) -> Self {
13548        let protocol_name = <DirReceiverMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
13549        Self { client: fidl::client::sync::Client::new(channel, protocol_name) }
13550    }
13551
13552    pub fn into_channel(self) -> fidl::Channel {
13553        self.client.into_channel()
13554    }
13555
13556    /// Waits until an event arrives and returns it. It is safe for other
13557    /// threads to make concurrent requests while waiting for an event.
13558    pub fn wait_for_event(
13559        &self,
13560        deadline: zx::MonotonicInstant,
13561    ) -> Result<DirReceiverEvent, fidl::Error> {
13562        DirReceiverEvent::decode(self.client.wait_for_event(deadline)?)
13563    }
13564
13565    /// `Receive` will be called by component manager whenever a new handle has
13566    /// been given to any `DirConnector` associated with this `DirReceiver`.
13567    pub fn r#receive(
13568        &self,
13569        mut channel: fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>,
13570        mut path: &str,
13571        mut rights: fidl_fuchsia_io::Flags,
13572    ) -> Result<(), fidl::Error> {
13573        self.client.send::<DirReceiverReceiveRequest>(
13574            (channel, path, rights),
13575            0x4ac564d726bb325e,
13576            fidl::encoding::DynamicFlags::empty(),
13577        )
13578    }
13579}
13580
13581#[cfg(target_os = "fuchsia")]
13582impl From<DirReceiverSynchronousProxy> for zx::NullableHandle {
13583    fn from(value: DirReceiverSynchronousProxy) -> Self {
13584        value.into_channel().into()
13585    }
13586}
13587
13588#[cfg(target_os = "fuchsia")]
13589impl From<fidl::Channel> for DirReceiverSynchronousProxy {
13590    fn from(value: fidl::Channel) -> Self {
13591        Self::new(value)
13592    }
13593}
13594
13595#[cfg(target_os = "fuchsia")]
13596impl fidl::endpoints::FromClient for DirReceiverSynchronousProxy {
13597    type Protocol = DirReceiverMarker;
13598
13599    fn from_client(value: fidl::endpoints::ClientEnd<DirReceiverMarker>) -> Self {
13600        Self::new(value.into_channel())
13601    }
13602}
13603
13604#[derive(Debug, Clone)]
13605pub struct DirReceiverProxy {
13606    client: fidl::client::Client<fidl::encoding::DefaultFuchsiaResourceDialect>,
13607}
13608
13609impl fidl::endpoints::Proxy for DirReceiverProxy {
13610    type Protocol = DirReceiverMarker;
13611
13612    fn from_channel(inner: ::fidl::AsyncChannel) -> Self {
13613        Self::new(inner)
13614    }
13615
13616    fn into_channel(self) -> Result<::fidl::AsyncChannel, Self> {
13617        self.client.into_channel().map_err(|client| Self { client })
13618    }
13619
13620    fn as_channel(&self) -> &::fidl::AsyncChannel {
13621        self.client.as_channel()
13622    }
13623}
13624
13625impl DirReceiverProxy {
13626    /// Create a new Proxy for fuchsia.component.runtime/DirReceiver.
13627    pub fn new(channel: ::fidl::AsyncChannel) -> Self {
13628        let protocol_name = <DirReceiverMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
13629        Self { client: fidl::client::Client::new(channel, protocol_name) }
13630    }
13631
13632    /// Get a Stream of events from the remote end of the protocol.
13633    ///
13634    /// # Panics
13635    ///
13636    /// Panics if the event stream was already taken.
13637    pub fn take_event_stream(&self) -> DirReceiverEventStream {
13638        DirReceiverEventStream { event_receiver: self.client.take_event_receiver() }
13639    }
13640
13641    /// `Receive` will be called by component manager whenever a new handle has
13642    /// been given to any `DirConnector` associated with this `DirReceiver`.
13643    pub fn r#receive(
13644        &self,
13645        mut channel: fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>,
13646        mut path: &str,
13647        mut rights: fidl_fuchsia_io::Flags,
13648    ) -> Result<(), fidl::Error> {
13649        DirReceiverProxyInterface::r#receive(self, channel, path, rights)
13650    }
13651}
13652
13653impl DirReceiverProxyInterface for DirReceiverProxy {
13654    fn r#receive(
13655        &self,
13656        mut channel: fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>,
13657        mut path: &str,
13658        mut rights: fidl_fuchsia_io::Flags,
13659    ) -> Result<(), fidl::Error> {
13660        self.client.send::<DirReceiverReceiveRequest>(
13661            (channel, path, rights),
13662            0x4ac564d726bb325e,
13663            fidl::encoding::DynamicFlags::empty(),
13664        )
13665    }
13666}
13667
13668pub struct DirReceiverEventStream {
13669    event_receiver: fidl::client::EventReceiver<fidl::encoding::DefaultFuchsiaResourceDialect>,
13670}
13671
13672impl std::marker::Unpin for DirReceiverEventStream {}
13673
13674impl futures::stream::FusedStream for DirReceiverEventStream {
13675    fn is_terminated(&self) -> bool {
13676        self.event_receiver.is_terminated()
13677    }
13678}
13679
13680impl futures::Stream for DirReceiverEventStream {
13681    type Item = Result<DirReceiverEvent, fidl::Error>;
13682
13683    fn poll_next(
13684        mut self: std::pin::Pin<&mut Self>,
13685        cx: &mut std::task::Context<'_>,
13686    ) -> std::task::Poll<Option<Self::Item>> {
13687        match futures::ready!(futures::stream::StreamExt::poll_next_unpin(
13688            &mut self.event_receiver,
13689            cx
13690        )?) {
13691            Some(buf) => std::task::Poll::Ready(Some(DirReceiverEvent::decode(buf))),
13692            None => std::task::Poll::Ready(None),
13693        }
13694    }
13695}
13696
13697#[derive(Debug)]
13698pub enum DirReceiverEvent {}
13699
13700impl DirReceiverEvent {
13701    /// Decodes a message buffer as a [`DirReceiverEvent`].
13702    fn decode(
13703        mut buf: <fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc,
13704    ) -> Result<DirReceiverEvent, fidl::Error> {
13705        let (bytes, _handles) = buf.split_mut();
13706        let (tx_header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
13707        debug_assert_eq!(tx_header.tx_id, 0);
13708        match tx_header.ordinal {
13709            _ => Err(fidl::Error::UnknownOrdinal {
13710                ordinal: tx_header.ordinal,
13711                protocol_name: <DirReceiverMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
13712            }),
13713        }
13714    }
13715}
13716
13717/// A Stream of incoming requests for fuchsia.component.runtime/DirReceiver.
13718pub struct DirReceiverRequestStream {
13719    inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
13720    is_terminated: bool,
13721}
13722
13723impl std::marker::Unpin for DirReceiverRequestStream {}
13724
13725impl futures::stream::FusedStream for DirReceiverRequestStream {
13726    fn is_terminated(&self) -> bool {
13727        self.is_terminated
13728    }
13729}
13730
13731impl fidl::endpoints::RequestStream for DirReceiverRequestStream {
13732    type Protocol = DirReceiverMarker;
13733    type ControlHandle = DirReceiverControlHandle;
13734
13735    fn from_channel(channel: ::fidl::AsyncChannel) -> Self {
13736        Self { inner: std::sync::Arc::new(fidl::ServeInner::new(channel)), is_terminated: false }
13737    }
13738
13739    fn control_handle(&self) -> Self::ControlHandle {
13740        DirReceiverControlHandle { inner: self.inner.clone() }
13741    }
13742
13743    fn into_inner(
13744        self,
13745    ) -> (::std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>, bool)
13746    {
13747        (self.inner, self.is_terminated)
13748    }
13749
13750    fn from_inner(
13751        inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
13752        is_terminated: bool,
13753    ) -> Self {
13754        Self { inner, is_terminated }
13755    }
13756}
13757
13758impl futures::Stream for DirReceiverRequestStream {
13759    type Item = Result<DirReceiverRequest, fidl::Error>;
13760
13761    fn poll_next(
13762        mut self: std::pin::Pin<&mut Self>,
13763        cx: &mut std::task::Context<'_>,
13764    ) -> std::task::Poll<Option<Self::Item>> {
13765        let this = &mut *self;
13766        if this.inner.check_shutdown(cx) {
13767            this.is_terminated = true;
13768            return std::task::Poll::Ready(None);
13769        }
13770        if this.is_terminated {
13771            panic!("polled DirReceiverRequestStream after completion");
13772        }
13773        fidl::encoding::with_tls_decode_buf::<_, fidl::encoding::DefaultFuchsiaResourceDialect>(
13774            |bytes, handles| {
13775                match this.inner.channel().read_etc(cx, bytes, handles) {
13776                    std::task::Poll::Ready(Ok(())) => {}
13777                    std::task::Poll::Pending => return std::task::Poll::Pending,
13778                    std::task::Poll::Ready(Err(zx_status::Status::PEER_CLOSED)) => {
13779                        this.is_terminated = true;
13780                        return std::task::Poll::Ready(None);
13781                    }
13782                    std::task::Poll::Ready(Err(e)) => {
13783                        return std::task::Poll::Ready(Some(Err(fidl::Error::ServerRequestRead(
13784                            e.into(),
13785                        ))));
13786                    }
13787                }
13788
13789                // A message has been received from the channel
13790                let (header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
13791
13792                std::task::Poll::Ready(Some(match header.ordinal {
13793                    0x4ac564d726bb325e => {
13794                        header.validate_request_tx_id(fidl::MethodType::OneWay)?;
13795                        let mut req = fidl::new_empty!(
13796                            DirReceiverReceiveRequest,
13797                            fidl::encoding::DefaultFuchsiaResourceDialect
13798                        );
13799                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<DirReceiverReceiveRequest>(&header, _body_bytes, handles, &mut req)?;
13800                        let control_handle = DirReceiverControlHandle { inner: this.inner.clone() };
13801                        Ok(DirReceiverRequest::Receive {
13802                            channel: req.channel,
13803                            path: req.path,
13804                            rights: req.rights,
13805
13806                            control_handle,
13807                        })
13808                    }
13809                    _ => Err(fidl::Error::UnknownOrdinal {
13810                        ordinal: header.ordinal,
13811                        protocol_name:
13812                            <DirReceiverMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
13813                    }),
13814                }))
13815            },
13816        )
13817    }
13818}
13819
13820/// A `DirReceiver` represents the receiving end of a `DirConnector`.
13821#[derive(Debug)]
13822pub enum DirReceiverRequest {
13823    /// `Receive` will be called by component manager whenever a new handle has
13824    /// been given to any `DirConnector` associated with this `DirReceiver`.
13825    Receive {
13826        channel: fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>,
13827        path: String,
13828        rights: fidl_fuchsia_io::Flags,
13829        control_handle: DirReceiverControlHandle,
13830    },
13831}
13832
13833impl DirReceiverRequest {
13834    #[allow(irrefutable_let_patterns)]
13835    pub fn into_receive(
13836        self,
13837    ) -> Option<(
13838        fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>,
13839        String,
13840        fidl_fuchsia_io::Flags,
13841        DirReceiverControlHandle,
13842    )> {
13843        if let DirReceiverRequest::Receive { channel, path, rights, control_handle } = self {
13844            Some((channel, path, rights, control_handle))
13845        } else {
13846            None
13847        }
13848    }
13849
13850    /// Name of the method defined in FIDL
13851    pub fn method_name(&self) -> &'static str {
13852        match *self {
13853            DirReceiverRequest::Receive { .. } => "receive",
13854        }
13855    }
13856}
13857
13858#[derive(Debug, Clone)]
13859pub struct DirReceiverControlHandle {
13860    inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
13861}
13862
13863impl fidl::endpoints::ControlHandle for DirReceiverControlHandle {
13864    fn shutdown(&self) {
13865        self.inner.shutdown()
13866    }
13867
13868    fn shutdown_with_epitaph(&self, status: zx_status::Status) {
13869        self.inner.shutdown_with_epitaph(status)
13870    }
13871
13872    fn is_closed(&self) -> bool {
13873        self.inner.channel().is_closed()
13874    }
13875    fn on_closed(&self) -> fidl::OnSignalsRef<'_> {
13876        self.inner.channel().on_closed()
13877    }
13878
13879    #[cfg(target_os = "fuchsia")]
13880    fn signal_peer(
13881        &self,
13882        clear_mask: zx::Signals,
13883        set_mask: zx::Signals,
13884    ) -> Result<(), zx_status::Status> {
13885        use fidl::Peered;
13886        self.inner.channel().signal_peer(clear_mask, set_mask)
13887    }
13888}
13889
13890impl DirReceiverControlHandle {}
13891
13892#[derive(Debug, Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash)]
13893pub struct DirReceiverDeprecatedMarker;
13894
13895impl fidl::endpoints::ProtocolMarker for DirReceiverDeprecatedMarker {
13896    type Proxy = DirReceiverDeprecatedProxy;
13897    type RequestStream = DirReceiverDeprecatedRequestStream;
13898    #[cfg(target_os = "fuchsia")]
13899    type SynchronousProxy = DirReceiverDeprecatedSynchronousProxy;
13900
13901    const DEBUG_NAME: &'static str = "(anonymous) DirReceiverDeprecated";
13902}
13903
13904pub trait DirReceiverDeprecatedProxyInterface: Send + Sync {
13905    fn r#receive(
13906        &self,
13907        channel: fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>,
13908    ) -> Result<(), fidl::Error>;
13909}
13910#[derive(Debug)]
13911#[cfg(target_os = "fuchsia")]
13912pub struct DirReceiverDeprecatedSynchronousProxy {
13913    client: fidl::client::sync::Client,
13914}
13915
13916#[cfg(target_os = "fuchsia")]
13917impl fidl::endpoints::SynchronousProxy for DirReceiverDeprecatedSynchronousProxy {
13918    type Proxy = DirReceiverDeprecatedProxy;
13919    type Protocol = DirReceiverDeprecatedMarker;
13920
13921    fn from_channel(inner: fidl::Channel) -> Self {
13922        Self::new(inner)
13923    }
13924
13925    fn into_channel(self) -> fidl::Channel {
13926        self.client.into_channel()
13927    }
13928
13929    fn as_channel(&self) -> &fidl::Channel {
13930        self.client.as_channel()
13931    }
13932}
13933
13934#[cfg(target_os = "fuchsia")]
13935impl DirReceiverDeprecatedSynchronousProxy {
13936    pub fn new(channel: fidl::Channel) -> Self {
13937        let protocol_name =
13938            <DirReceiverDeprecatedMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
13939        Self { client: fidl::client::sync::Client::new(channel, protocol_name) }
13940    }
13941
13942    pub fn into_channel(self) -> fidl::Channel {
13943        self.client.into_channel()
13944    }
13945
13946    /// Waits until an event arrives and returns it. It is safe for other
13947    /// threads to make concurrent requests while waiting for an event.
13948    pub fn wait_for_event(
13949        &self,
13950        deadline: zx::MonotonicInstant,
13951    ) -> Result<DirReceiverDeprecatedEvent, fidl::Error> {
13952        DirReceiverDeprecatedEvent::decode(self.client.wait_for_event(deadline)?)
13953    }
13954
13955    /// `Receive` will be called by component manager whenever a new handle has
13956    /// been given to any `DirConnector` associated with this `DirReceiver`.
13957    pub fn r#receive(
13958        &self,
13959        mut channel: fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>,
13960    ) -> Result<(), fidl::Error> {
13961        self.client.send::<DirReceiverDeprecatedReceiveRequest>(
13962            (channel,),
13963            0x6351363b40e73f58,
13964            fidl::encoding::DynamicFlags::FLEXIBLE,
13965        )
13966    }
13967}
13968
13969#[cfg(target_os = "fuchsia")]
13970impl From<DirReceiverDeprecatedSynchronousProxy> for zx::NullableHandle {
13971    fn from(value: DirReceiverDeprecatedSynchronousProxy) -> Self {
13972        value.into_channel().into()
13973    }
13974}
13975
13976#[cfg(target_os = "fuchsia")]
13977impl From<fidl::Channel> for DirReceiverDeprecatedSynchronousProxy {
13978    fn from(value: fidl::Channel) -> Self {
13979        Self::new(value)
13980    }
13981}
13982
13983#[cfg(target_os = "fuchsia")]
13984impl fidl::endpoints::FromClient for DirReceiverDeprecatedSynchronousProxy {
13985    type Protocol = DirReceiverDeprecatedMarker;
13986
13987    fn from_client(value: fidl::endpoints::ClientEnd<DirReceiverDeprecatedMarker>) -> Self {
13988        Self::new(value.into_channel())
13989    }
13990}
13991
13992#[derive(Debug, Clone)]
13993pub struct DirReceiverDeprecatedProxy {
13994    client: fidl::client::Client<fidl::encoding::DefaultFuchsiaResourceDialect>,
13995}
13996
13997impl fidl::endpoints::Proxy for DirReceiverDeprecatedProxy {
13998    type Protocol = DirReceiverDeprecatedMarker;
13999
14000    fn from_channel(inner: ::fidl::AsyncChannel) -> Self {
14001        Self::new(inner)
14002    }
14003
14004    fn into_channel(self) -> Result<::fidl::AsyncChannel, Self> {
14005        self.client.into_channel().map_err(|client| Self { client })
14006    }
14007
14008    fn as_channel(&self) -> &::fidl::AsyncChannel {
14009        self.client.as_channel()
14010    }
14011}
14012
14013impl DirReceiverDeprecatedProxy {
14014    /// Create a new Proxy for fuchsia.component.runtime/DirReceiverDeprecated.
14015    pub fn new(channel: ::fidl::AsyncChannel) -> Self {
14016        let protocol_name =
14017            <DirReceiverDeprecatedMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
14018        Self { client: fidl::client::Client::new(channel, protocol_name) }
14019    }
14020
14021    /// Get a Stream of events from the remote end of the protocol.
14022    ///
14023    /// # Panics
14024    ///
14025    /// Panics if the event stream was already taken.
14026    pub fn take_event_stream(&self) -> DirReceiverDeprecatedEventStream {
14027        DirReceiverDeprecatedEventStream { event_receiver: self.client.take_event_receiver() }
14028    }
14029
14030    /// `Receive` will be called by component manager whenever a new handle has
14031    /// been given to any `DirConnector` associated with this `DirReceiver`.
14032    pub fn r#receive(
14033        &self,
14034        mut channel: fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>,
14035    ) -> Result<(), fidl::Error> {
14036        DirReceiverDeprecatedProxyInterface::r#receive(self, channel)
14037    }
14038}
14039
14040impl DirReceiverDeprecatedProxyInterface for DirReceiverDeprecatedProxy {
14041    fn r#receive(
14042        &self,
14043        mut channel: fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>,
14044    ) -> Result<(), fidl::Error> {
14045        self.client.send::<DirReceiverDeprecatedReceiveRequest>(
14046            (channel,),
14047            0x6351363b40e73f58,
14048            fidl::encoding::DynamicFlags::FLEXIBLE,
14049        )
14050    }
14051}
14052
14053pub struct DirReceiverDeprecatedEventStream {
14054    event_receiver: fidl::client::EventReceiver<fidl::encoding::DefaultFuchsiaResourceDialect>,
14055}
14056
14057impl std::marker::Unpin for DirReceiverDeprecatedEventStream {}
14058
14059impl futures::stream::FusedStream for DirReceiverDeprecatedEventStream {
14060    fn is_terminated(&self) -> bool {
14061        self.event_receiver.is_terminated()
14062    }
14063}
14064
14065impl futures::Stream for DirReceiverDeprecatedEventStream {
14066    type Item = Result<DirReceiverDeprecatedEvent, fidl::Error>;
14067
14068    fn poll_next(
14069        mut self: std::pin::Pin<&mut Self>,
14070        cx: &mut std::task::Context<'_>,
14071    ) -> std::task::Poll<Option<Self::Item>> {
14072        match futures::ready!(futures::stream::StreamExt::poll_next_unpin(
14073            &mut self.event_receiver,
14074            cx
14075        )?) {
14076            Some(buf) => std::task::Poll::Ready(Some(DirReceiverDeprecatedEvent::decode(buf))),
14077            None => std::task::Poll::Ready(None),
14078        }
14079    }
14080}
14081
14082#[derive(Debug)]
14083pub enum DirReceiverDeprecatedEvent {
14084    #[non_exhaustive]
14085    _UnknownEvent {
14086        /// Ordinal of the event that was sent.
14087        ordinal: u64,
14088    },
14089}
14090
14091impl DirReceiverDeprecatedEvent {
14092    /// Decodes a message buffer as a [`DirReceiverDeprecatedEvent`].
14093    fn decode(
14094        mut buf: <fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc,
14095    ) -> Result<DirReceiverDeprecatedEvent, fidl::Error> {
14096        let (bytes, _handles) = buf.split_mut();
14097        let (tx_header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
14098        debug_assert_eq!(tx_header.tx_id, 0);
14099        match tx_header.ordinal {
14100            _ if tx_header.dynamic_flags().contains(fidl::encoding::DynamicFlags::FLEXIBLE) => {
14101                Ok(DirReceiverDeprecatedEvent::_UnknownEvent { ordinal: tx_header.ordinal })
14102            }
14103            _ => Err(fidl::Error::UnknownOrdinal {
14104                ordinal: tx_header.ordinal,
14105                protocol_name:
14106                    <DirReceiverDeprecatedMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
14107            }),
14108        }
14109    }
14110}
14111
14112/// A Stream of incoming requests for fuchsia.component.runtime/DirReceiverDeprecated.
14113pub struct DirReceiverDeprecatedRequestStream {
14114    inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
14115    is_terminated: bool,
14116}
14117
14118impl std::marker::Unpin for DirReceiverDeprecatedRequestStream {}
14119
14120impl futures::stream::FusedStream for DirReceiverDeprecatedRequestStream {
14121    fn is_terminated(&self) -> bool {
14122        self.is_terminated
14123    }
14124}
14125
14126impl fidl::endpoints::RequestStream for DirReceiverDeprecatedRequestStream {
14127    type Protocol = DirReceiverDeprecatedMarker;
14128    type ControlHandle = DirReceiverDeprecatedControlHandle;
14129
14130    fn from_channel(channel: ::fidl::AsyncChannel) -> Self {
14131        Self { inner: std::sync::Arc::new(fidl::ServeInner::new(channel)), is_terminated: false }
14132    }
14133
14134    fn control_handle(&self) -> Self::ControlHandle {
14135        DirReceiverDeprecatedControlHandle { inner: self.inner.clone() }
14136    }
14137
14138    fn into_inner(
14139        self,
14140    ) -> (::std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>, bool)
14141    {
14142        (self.inner, self.is_terminated)
14143    }
14144
14145    fn from_inner(
14146        inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
14147        is_terminated: bool,
14148    ) -> Self {
14149        Self { inner, is_terminated }
14150    }
14151}
14152
14153impl futures::Stream for DirReceiverDeprecatedRequestStream {
14154    type Item = Result<DirReceiverDeprecatedRequest, fidl::Error>;
14155
14156    fn poll_next(
14157        mut self: std::pin::Pin<&mut Self>,
14158        cx: &mut std::task::Context<'_>,
14159    ) -> std::task::Poll<Option<Self::Item>> {
14160        let this = &mut *self;
14161        if this.inner.check_shutdown(cx) {
14162            this.is_terminated = true;
14163            return std::task::Poll::Ready(None);
14164        }
14165        if this.is_terminated {
14166            panic!("polled DirReceiverDeprecatedRequestStream after completion");
14167        }
14168        fidl::encoding::with_tls_decode_buf::<_, fidl::encoding::DefaultFuchsiaResourceDialect>(
14169            |bytes, handles| {
14170                match this.inner.channel().read_etc(cx, bytes, handles) {
14171                    std::task::Poll::Ready(Ok(())) => {}
14172                    std::task::Poll::Pending => return std::task::Poll::Pending,
14173                    std::task::Poll::Ready(Err(zx_status::Status::PEER_CLOSED)) => {
14174                        this.is_terminated = true;
14175                        return std::task::Poll::Ready(None);
14176                    }
14177                    std::task::Poll::Ready(Err(e)) => {
14178                        return std::task::Poll::Ready(Some(Err(fidl::Error::ServerRequestRead(
14179                            e.into(),
14180                        ))));
14181                    }
14182                }
14183
14184                // A message has been received from the channel
14185                let (header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
14186
14187                std::task::Poll::Ready(Some(match header.ordinal {
14188                0x6351363b40e73f58 => {
14189                    header.validate_request_tx_id(fidl::MethodType::OneWay)?;
14190                    let mut req = fidl::new_empty!(DirReceiverDeprecatedReceiveRequest, fidl::encoding::DefaultFuchsiaResourceDialect);
14191                    fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<DirReceiverDeprecatedReceiveRequest>(&header, _body_bytes, handles, &mut req)?;
14192                    let control_handle = DirReceiverDeprecatedControlHandle {
14193                        inner: this.inner.clone(),
14194                    };
14195                    Ok(DirReceiverDeprecatedRequest::Receive {channel: req.channel,
14196
14197                        control_handle,
14198                    })
14199                }
14200                _ if header.tx_id == 0 && header.dynamic_flags().contains(fidl::encoding::DynamicFlags::FLEXIBLE) => {
14201                    Ok(DirReceiverDeprecatedRequest::_UnknownMethod {
14202                        ordinal: header.ordinal,
14203                        control_handle: DirReceiverDeprecatedControlHandle { inner: this.inner.clone() },
14204                        method_type: fidl::MethodType::OneWay,
14205                    })
14206                }
14207                _ if header.dynamic_flags().contains(fidl::encoding::DynamicFlags::FLEXIBLE) => {
14208                    this.inner.send_framework_err(
14209                        fidl::encoding::FrameworkErr::UnknownMethod,
14210                        header.tx_id,
14211                        header.ordinal,
14212                        header.dynamic_flags(),
14213                        (bytes, handles),
14214                    )?;
14215                    Ok(DirReceiverDeprecatedRequest::_UnknownMethod {
14216                        ordinal: header.ordinal,
14217                        control_handle: DirReceiverDeprecatedControlHandle { inner: this.inner.clone() },
14218                        method_type: fidl::MethodType::TwoWay,
14219                    })
14220                }
14221                _ => Err(fidl::Error::UnknownOrdinal {
14222                    ordinal: header.ordinal,
14223                    protocol_name: <DirReceiverDeprecatedMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
14224                }),
14225            }))
14226            },
14227        )
14228    }
14229}
14230
14231/// A `DirReceiver` represents the receiving end of a connection to a
14232/// capability.
14233#[derive(Debug)]
14234pub enum DirReceiverDeprecatedRequest {
14235    /// `Receive` will be called by component manager whenever a new handle has
14236    /// been given to any `DirConnector` associated with this `DirReceiver`.
14237    Receive {
14238        channel: fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>,
14239        control_handle: DirReceiverDeprecatedControlHandle,
14240    },
14241    /// An interaction was received which does not match any known method.
14242    #[non_exhaustive]
14243    _UnknownMethod {
14244        /// Ordinal of the method that was called.
14245        ordinal: u64,
14246        control_handle: DirReceiverDeprecatedControlHandle,
14247        method_type: fidl::MethodType,
14248    },
14249}
14250
14251impl DirReceiverDeprecatedRequest {
14252    #[allow(irrefutable_let_patterns)]
14253    pub fn into_receive(
14254        self,
14255    ) -> Option<(
14256        fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>,
14257        DirReceiverDeprecatedControlHandle,
14258    )> {
14259        if let DirReceiverDeprecatedRequest::Receive { channel, control_handle } = self {
14260            Some((channel, control_handle))
14261        } else {
14262            None
14263        }
14264    }
14265
14266    /// Name of the method defined in FIDL
14267    pub fn method_name(&self) -> &'static str {
14268        match *self {
14269            DirReceiverDeprecatedRequest::Receive { .. } => "receive",
14270            DirReceiverDeprecatedRequest::_UnknownMethod {
14271                method_type: fidl::MethodType::OneWay,
14272                ..
14273            } => "unknown one-way method",
14274            DirReceiverDeprecatedRequest::_UnknownMethod {
14275                method_type: fidl::MethodType::TwoWay,
14276                ..
14277            } => "unknown two-way method",
14278        }
14279    }
14280}
14281
14282#[derive(Debug, Clone)]
14283pub struct DirReceiverDeprecatedControlHandle {
14284    inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
14285}
14286
14287impl fidl::endpoints::ControlHandle for DirReceiverDeprecatedControlHandle {
14288    fn shutdown(&self) {
14289        self.inner.shutdown()
14290    }
14291
14292    fn shutdown_with_epitaph(&self, status: zx_status::Status) {
14293        self.inner.shutdown_with_epitaph(status)
14294    }
14295
14296    fn is_closed(&self) -> bool {
14297        self.inner.channel().is_closed()
14298    }
14299    fn on_closed(&self) -> fidl::OnSignalsRef<'_> {
14300        self.inner.channel().on_closed()
14301    }
14302
14303    #[cfg(target_os = "fuchsia")]
14304    fn signal_peer(
14305        &self,
14306        clear_mask: zx::Signals,
14307        set_mask: zx::Signals,
14308    ) -> Result<(), zx_status::Status> {
14309        use fidl::Peered;
14310        self.inner.channel().signal_peer(clear_mask, set_mask)
14311    }
14312}
14313
14314impl DirReceiverDeprecatedControlHandle {}
14315
14316#[derive(Debug, Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash)]
14317pub struct ReceiverMarker;
14318
14319impl fidl::endpoints::ProtocolMarker for ReceiverMarker {
14320    type Proxy = ReceiverProxy;
14321    type RequestStream = ReceiverRequestStream;
14322    #[cfg(target_os = "fuchsia")]
14323    type SynchronousProxy = ReceiverSynchronousProxy;
14324
14325    const DEBUG_NAME: &'static str = "(anonymous) Receiver";
14326}
14327
14328pub trait ReceiverProxyInterface: Send + Sync {
14329    fn r#receive(&self, channel: fidl::Channel) -> Result<(), fidl::Error>;
14330}
14331#[derive(Debug)]
14332#[cfg(target_os = "fuchsia")]
14333pub struct ReceiverSynchronousProxy {
14334    client: fidl::client::sync::Client,
14335}
14336
14337#[cfg(target_os = "fuchsia")]
14338impl fidl::endpoints::SynchronousProxy for ReceiverSynchronousProxy {
14339    type Proxy = ReceiverProxy;
14340    type Protocol = ReceiverMarker;
14341
14342    fn from_channel(inner: fidl::Channel) -> Self {
14343        Self::new(inner)
14344    }
14345
14346    fn into_channel(self) -> fidl::Channel {
14347        self.client.into_channel()
14348    }
14349
14350    fn as_channel(&self) -> &fidl::Channel {
14351        self.client.as_channel()
14352    }
14353}
14354
14355#[cfg(target_os = "fuchsia")]
14356impl ReceiverSynchronousProxy {
14357    pub fn new(channel: fidl::Channel) -> Self {
14358        let protocol_name = <ReceiverMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
14359        Self { client: fidl::client::sync::Client::new(channel, protocol_name) }
14360    }
14361
14362    pub fn into_channel(self) -> fidl::Channel {
14363        self.client.into_channel()
14364    }
14365
14366    /// Waits until an event arrives and returns it. It is safe for other
14367    /// threads to make concurrent requests while waiting for an event.
14368    pub fn wait_for_event(
14369        &self,
14370        deadline: zx::MonotonicInstant,
14371    ) -> Result<ReceiverEvent, fidl::Error> {
14372        ReceiverEvent::decode(self.client.wait_for_event(deadline)?)
14373    }
14374
14375    /// `Receive` will be called by component manager whenever an new handle has
14376    /// been given to any `Connector` associated with this `Receiver`.
14377    pub fn r#receive(&self, mut channel: fidl::Channel) -> Result<(), fidl::Error> {
14378        self.client.send::<ReceiverReceiveRequest>(
14379            (channel,),
14380            0x609ca5c7943b58d0,
14381            fidl::encoding::DynamicFlags::empty(),
14382        )
14383    }
14384}
14385
14386#[cfg(target_os = "fuchsia")]
14387impl From<ReceiverSynchronousProxy> for zx::NullableHandle {
14388    fn from(value: ReceiverSynchronousProxy) -> Self {
14389        value.into_channel().into()
14390    }
14391}
14392
14393#[cfg(target_os = "fuchsia")]
14394impl From<fidl::Channel> for ReceiverSynchronousProxy {
14395    fn from(value: fidl::Channel) -> Self {
14396        Self::new(value)
14397    }
14398}
14399
14400#[cfg(target_os = "fuchsia")]
14401impl fidl::endpoints::FromClient for ReceiverSynchronousProxy {
14402    type Protocol = ReceiverMarker;
14403
14404    fn from_client(value: fidl::endpoints::ClientEnd<ReceiverMarker>) -> Self {
14405        Self::new(value.into_channel())
14406    }
14407}
14408
14409#[derive(Debug, Clone)]
14410pub struct ReceiverProxy {
14411    client: fidl::client::Client<fidl::encoding::DefaultFuchsiaResourceDialect>,
14412}
14413
14414impl fidl::endpoints::Proxy for ReceiverProxy {
14415    type Protocol = ReceiverMarker;
14416
14417    fn from_channel(inner: ::fidl::AsyncChannel) -> Self {
14418        Self::new(inner)
14419    }
14420
14421    fn into_channel(self) -> Result<::fidl::AsyncChannel, Self> {
14422        self.client.into_channel().map_err(|client| Self { client })
14423    }
14424
14425    fn as_channel(&self) -> &::fidl::AsyncChannel {
14426        self.client.as_channel()
14427    }
14428}
14429
14430impl ReceiverProxy {
14431    /// Create a new Proxy for fuchsia.component.runtime/Receiver.
14432    pub fn new(channel: ::fidl::AsyncChannel) -> Self {
14433        let protocol_name = <ReceiverMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
14434        Self { client: fidl::client::Client::new(channel, protocol_name) }
14435    }
14436
14437    /// Get a Stream of events from the remote end of the protocol.
14438    ///
14439    /// # Panics
14440    ///
14441    /// Panics if the event stream was already taken.
14442    pub fn take_event_stream(&self) -> ReceiverEventStream {
14443        ReceiverEventStream { event_receiver: self.client.take_event_receiver() }
14444    }
14445
14446    /// `Receive` will be called by component manager whenever an new handle has
14447    /// been given to any `Connector` associated with this `Receiver`.
14448    pub fn r#receive(&self, mut channel: fidl::Channel) -> Result<(), fidl::Error> {
14449        ReceiverProxyInterface::r#receive(self, channel)
14450    }
14451}
14452
14453impl ReceiverProxyInterface for ReceiverProxy {
14454    fn r#receive(&self, mut channel: fidl::Channel) -> Result<(), fidl::Error> {
14455        self.client.send::<ReceiverReceiveRequest>(
14456            (channel,),
14457            0x609ca5c7943b58d0,
14458            fidl::encoding::DynamicFlags::empty(),
14459        )
14460    }
14461}
14462
14463pub struct ReceiverEventStream {
14464    event_receiver: fidl::client::EventReceiver<fidl::encoding::DefaultFuchsiaResourceDialect>,
14465}
14466
14467impl std::marker::Unpin for ReceiverEventStream {}
14468
14469impl futures::stream::FusedStream for ReceiverEventStream {
14470    fn is_terminated(&self) -> bool {
14471        self.event_receiver.is_terminated()
14472    }
14473}
14474
14475impl futures::Stream for ReceiverEventStream {
14476    type Item = Result<ReceiverEvent, fidl::Error>;
14477
14478    fn poll_next(
14479        mut self: std::pin::Pin<&mut Self>,
14480        cx: &mut std::task::Context<'_>,
14481    ) -> std::task::Poll<Option<Self::Item>> {
14482        match futures::ready!(futures::stream::StreamExt::poll_next_unpin(
14483            &mut self.event_receiver,
14484            cx
14485        )?) {
14486            Some(buf) => std::task::Poll::Ready(Some(ReceiverEvent::decode(buf))),
14487            None => std::task::Poll::Ready(None),
14488        }
14489    }
14490}
14491
14492#[derive(Debug)]
14493pub enum ReceiverEvent {}
14494
14495impl ReceiverEvent {
14496    /// Decodes a message buffer as a [`ReceiverEvent`].
14497    fn decode(
14498        mut buf: <fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc,
14499    ) -> Result<ReceiverEvent, fidl::Error> {
14500        let (bytes, _handles) = buf.split_mut();
14501        let (tx_header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
14502        debug_assert_eq!(tx_header.tx_id, 0);
14503        match tx_header.ordinal {
14504            _ => Err(fidl::Error::UnknownOrdinal {
14505                ordinal: tx_header.ordinal,
14506                protocol_name: <ReceiverMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
14507            }),
14508        }
14509    }
14510}
14511
14512/// A Stream of incoming requests for fuchsia.component.runtime/Receiver.
14513pub struct ReceiverRequestStream {
14514    inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
14515    is_terminated: bool,
14516}
14517
14518impl std::marker::Unpin for ReceiverRequestStream {}
14519
14520impl futures::stream::FusedStream for ReceiverRequestStream {
14521    fn is_terminated(&self) -> bool {
14522        self.is_terminated
14523    }
14524}
14525
14526impl fidl::endpoints::RequestStream for ReceiverRequestStream {
14527    type Protocol = ReceiverMarker;
14528    type ControlHandle = ReceiverControlHandle;
14529
14530    fn from_channel(channel: ::fidl::AsyncChannel) -> Self {
14531        Self { inner: std::sync::Arc::new(fidl::ServeInner::new(channel)), is_terminated: false }
14532    }
14533
14534    fn control_handle(&self) -> Self::ControlHandle {
14535        ReceiverControlHandle { inner: self.inner.clone() }
14536    }
14537
14538    fn into_inner(
14539        self,
14540    ) -> (::std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>, bool)
14541    {
14542        (self.inner, self.is_terminated)
14543    }
14544
14545    fn from_inner(
14546        inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
14547        is_terminated: bool,
14548    ) -> Self {
14549        Self { inner, is_terminated }
14550    }
14551}
14552
14553impl futures::Stream for ReceiverRequestStream {
14554    type Item = Result<ReceiverRequest, fidl::Error>;
14555
14556    fn poll_next(
14557        mut self: std::pin::Pin<&mut Self>,
14558        cx: &mut std::task::Context<'_>,
14559    ) -> std::task::Poll<Option<Self::Item>> {
14560        let this = &mut *self;
14561        if this.inner.check_shutdown(cx) {
14562            this.is_terminated = true;
14563            return std::task::Poll::Ready(None);
14564        }
14565        if this.is_terminated {
14566            panic!("polled ReceiverRequestStream after completion");
14567        }
14568        fidl::encoding::with_tls_decode_buf::<_, fidl::encoding::DefaultFuchsiaResourceDialect>(
14569            |bytes, handles| {
14570                match this.inner.channel().read_etc(cx, bytes, handles) {
14571                    std::task::Poll::Ready(Ok(())) => {}
14572                    std::task::Poll::Pending => return std::task::Poll::Pending,
14573                    std::task::Poll::Ready(Err(zx_status::Status::PEER_CLOSED)) => {
14574                        this.is_terminated = true;
14575                        return std::task::Poll::Ready(None);
14576                    }
14577                    std::task::Poll::Ready(Err(e)) => {
14578                        return std::task::Poll::Ready(Some(Err(fidl::Error::ServerRequestRead(
14579                            e.into(),
14580                        ))));
14581                    }
14582                }
14583
14584                // A message has been received from the channel
14585                let (header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
14586
14587                std::task::Poll::Ready(Some(match header.ordinal {
14588                    0x609ca5c7943b58d0 => {
14589                        header.validate_request_tx_id(fidl::MethodType::OneWay)?;
14590                        let mut req = fidl::new_empty!(
14591                            ReceiverReceiveRequest,
14592                            fidl::encoding::DefaultFuchsiaResourceDialect
14593                        );
14594                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<ReceiverReceiveRequest>(&header, _body_bytes, handles, &mut req)?;
14595                        let control_handle = ReceiverControlHandle { inner: this.inner.clone() };
14596                        Ok(ReceiverRequest::Receive { channel: req.channel, control_handle })
14597                    }
14598                    _ => Err(fidl::Error::UnknownOrdinal {
14599                        ordinal: header.ordinal,
14600                        protocol_name:
14601                            <ReceiverMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
14602                    }),
14603                }))
14604            },
14605        )
14606    }
14607}
14608
14609/// A `Receiver` represents the receiving end of a `Connector`.
14610#[derive(Debug)]
14611pub enum ReceiverRequest {
14612    /// `Receive` will be called by component manager whenever an new handle has
14613    /// been given to any `Connector` associated with this `Receiver`.
14614    Receive { channel: fidl::Channel, control_handle: ReceiverControlHandle },
14615}
14616
14617impl ReceiverRequest {
14618    #[allow(irrefutable_let_patterns)]
14619    pub fn into_receive(self) -> Option<(fidl::Channel, ReceiverControlHandle)> {
14620        if let ReceiverRequest::Receive { channel, control_handle } = self {
14621            Some((channel, control_handle))
14622        } else {
14623            None
14624        }
14625    }
14626
14627    /// Name of the method defined in FIDL
14628    pub fn method_name(&self) -> &'static str {
14629        match *self {
14630            ReceiverRequest::Receive { .. } => "receive",
14631        }
14632    }
14633}
14634
14635#[derive(Debug, Clone)]
14636pub struct ReceiverControlHandle {
14637    inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
14638}
14639
14640impl fidl::endpoints::ControlHandle for ReceiverControlHandle {
14641    fn shutdown(&self) {
14642        self.inner.shutdown()
14643    }
14644
14645    fn shutdown_with_epitaph(&self, status: zx_status::Status) {
14646        self.inner.shutdown_with_epitaph(status)
14647    }
14648
14649    fn is_closed(&self) -> bool {
14650        self.inner.channel().is_closed()
14651    }
14652    fn on_closed(&self) -> fidl::OnSignalsRef<'_> {
14653        self.inner.channel().on_closed()
14654    }
14655
14656    #[cfg(target_os = "fuchsia")]
14657    fn signal_peer(
14658        &self,
14659        clear_mask: zx::Signals,
14660        set_mask: zx::Signals,
14661    ) -> Result<(), zx_status::Status> {
14662        use fidl::Peered;
14663        self.inner.channel().signal_peer(clear_mask, set_mask)
14664    }
14665}
14666
14667impl ReceiverControlHandle {}
14668
14669mod internal {
14670    use super::*;
14671
14672    impl fidl::encoding::ResourceTypeMarker for CapabilitiesCapabilityAssociateHandleRequest {
14673        type Borrowed<'a> = &'a mut Self;
14674        fn take_or_borrow<'a>(
14675            value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
14676        ) -> Self::Borrowed<'a> {
14677            value
14678        }
14679    }
14680
14681    unsafe impl fidl::encoding::TypeMarker for CapabilitiesCapabilityAssociateHandleRequest {
14682        type Owned = Self;
14683
14684        #[inline(always)]
14685        fn inline_align(_context: fidl::encoding::Context) -> usize {
14686            4
14687        }
14688
14689        #[inline(always)]
14690        fn inline_size(_context: fidl::encoding::Context) -> usize {
14691            8
14692        }
14693    }
14694
14695    unsafe impl
14696        fidl::encoding::Encode<
14697            CapabilitiesCapabilityAssociateHandleRequest,
14698            fidl::encoding::DefaultFuchsiaResourceDialect,
14699        > for &mut CapabilitiesCapabilityAssociateHandleRequest
14700    {
14701        #[inline]
14702        unsafe fn encode(
14703            self,
14704            encoder: &mut fidl::encoding::Encoder<
14705                '_,
14706                fidl::encoding::DefaultFuchsiaResourceDialect,
14707            >,
14708            offset: usize,
14709            _depth: fidl::encoding::Depth,
14710        ) -> fidl::Result<()> {
14711            encoder.debug_check_bounds::<CapabilitiesCapabilityAssociateHandleRequest>(offset);
14712            // Delegate to tuple encoding.
14713            fidl::encoding::Encode::<
14714                CapabilitiesCapabilityAssociateHandleRequest,
14715                fidl::encoding::DefaultFuchsiaResourceDialect,
14716            >::encode(
14717                (
14718                    <fidl::encoding::HandleType<
14719                        fidl::EventPair,
14720                        { fidl::ObjectType::EVENTPAIR.into_raw() },
14721                        2147483648,
14722                    > as fidl::encoding::ResourceTypeMarker>::take_or_borrow(
14723                        &mut self.capability_handle,
14724                    ),
14725                    <fidl::encoding::HandleType<
14726                        fidl::EventPair,
14727                        { fidl::ObjectType::EVENTPAIR.into_raw() },
14728                        2147483648,
14729                    > as fidl::encoding::ResourceTypeMarker>::take_or_borrow(
14730                        &mut self.other_handle,
14731                    ),
14732                ),
14733                encoder,
14734                offset,
14735                _depth,
14736            )
14737        }
14738    }
14739    unsafe impl<
14740        T0: fidl::encoding::Encode<
14741                fidl::encoding::HandleType<
14742                    fidl::EventPair,
14743                    { fidl::ObjectType::EVENTPAIR.into_raw() },
14744                    2147483648,
14745                >,
14746                fidl::encoding::DefaultFuchsiaResourceDialect,
14747            >,
14748        T1: fidl::encoding::Encode<
14749                fidl::encoding::HandleType<
14750                    fidl::EventPair,
14751                    { fidl::ObjectType::EVENTPAIR.into_raw() },
14752                    2147483648,
14753                >,
14754                fidl::encoding::DefaultFuchsiaResourceDialect,
14755            >,
14756    >
14757        fidl::encoding::Encode<
14758            CapabilitiesCapabilityAssociateHandleRequest,
14759            fidl::encoding::DefaultFuchsiaResourceDialect,
14760        > for (T0, T1)
14761    {
14762        #[inline]
14763        unsafe fn encode(
14764            self,
14765            encoder: &mut fidl::encoding::Encoder<
14766                '_,
14767                fidl::encoding::DefaultFuchsiaResourceDialect,
14768            >,
14769            offset: usize,
14770            depth: fidl::encoding::Depth,
14771        ) -> fidl::Result<()> {
14772            encoder.debug_check_bounds::<CapabilitiesCapabilityAssociateHandleRequest>(offset);
14773            // Zero out padding regions. There's no need to apply masks
14774            // because the unmasked parts will be overwritten by fields.
14775            // Write the fields.
14776            self.0.encode(encoder, offset + 0, depth)?;
14777            self.1.encode(encoder, offset + 4, depth)?;
14778            Ok(())
14779        }
14780    }
14781
14782    impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
14783        for CapabilitiesCapabilityAssociateHandleRequest
14784    {
14785        #[inline(always)]
14786        fn new_empty() -> Self {
14787            Self {
14788                capability_handle: fidl::new_empty!(fidl::encoding::HandleType<fidl::EventPair, { fidl::ObjectType::EVENTPAIR.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect),
14789                other_handle: fidl::new_empty!(fidl::encoding::HandleType<fidl::EventPair, { fidl::ObjectType::EVENTPAIR.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect),
14790            }
14791        }
14792
14793        #[inline]
14794        unsafe fn decode(
14795            &mut self,
14796            decoder: &mut fidl::encoding::Decoder<
14797                '_,
14798                fidl::encoding::DefaultFuchsiaResourceDialect,
14799            >,
14800            offset: usize,
14801            _depth: fidl::encoding::Depth,
14802        ) -> fidl::Result<()> {
14803            decoder.debug_check_bounds::<Self>(offset);
14804            // Verify that padding bytes are zero.
14805            fidl::decode!(fidl::encoding::HandleType<fidl::EventPair, { fidl::ObjectType::EVENTPAIR.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect, &mut self.capability_handle, decoder, offset + 0, _depth)?;
14806            fidl::decode!(fidl::encoding::HandleType<fidl::EventPair, { fidl::ObjectType::EVENTPAIR.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect, &mut self.other_handle, decoder, offset + 4, _depth)?;
14807            Ok(())
14808        }
14809    }
14810
14811    impl fidl::encoding::ResourceTypeMarker for CapabilitiesConnectorCreateRequest {
14812        type Borrowed<'a> = &'a mut Self;
14813        fn take_or_borrow<'a>(
14814            value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
14815        ) -> Self::Borrowed<'a> {
14816            value
14817        }
14818    }
14819
14820    unsafe impl fidl::encoding::TypeMarker for CapabilitiesConnectorCreateRequest {
14821        type Owned = Self;
14822
14823        #[inline(always)]
14824        fn inline_align(_context: fidl::encoding::Context) -> usize {
14825            4
14826        }
14827
14828        #[inline(always)]
14829        fn inline_size(_context: fidl::encoding::Context) -> usize {
14830            8
14831        }
14832    }
14833
14834    unsafe impl
14835        fidl::encoding::Encode<
14836            CapabilitiesConnectorCreateRequest,
14837            fidl::encoding::DefaultFuchsiaResourceDialect,
14838        > for &mut CapabilitiesConnectorCreateRequest
14839    {
14840        #[inline]
14841        unsafe fn encode(
14842            self,
14843            encoder: &mut fidl::encoding::Encoder<
14844                '_,
14845                fidl::encoding::DefaultFuchsiaResourceDialect,
14846            >,
14847            offset: usize,
14848            _depth: fidl::encoding::Depth,
14849        ) -> fidl::Result<()> {
14850            encoder.debug_check_bounds::<CapabilitiesConnectorCreateRequest>(offset);
14851            // Delegate to tuple encoding.
14852            fidl::encoding::Encode::<CapabilitiesConnectorCreateRequest, fidl::encoding::DefaultFuchsiaResourceDialect>::encode(
14853                (
14854                    <fidl::encoding::HandleType<fidl::EventPair, { fidl::ObjectType::EVENTPAIR.into_raw() }, 2147483648> as fidl::encoding::ResourceTypeMarker>::take_or_borrow(&mut self.connector),
14855                    <fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<ReceiverMarker>> as fidl::encoding::ResourceTypeMarker>::take_or_borrow(&mut self.receiver_client_end),
14856                ),
14857                encoder, offset, _depth
14858            )
14859        }
14860    }
14861    unsafe impl<
14862        T0: fidl::encoding::Encode<
14863                fidl::encoding::HandleType<
14864                    fidl::EventPair,
14865                    { fidl::ObjectType::EVENTPAIR.into_raw() },
14866                    2147483648,
14867                >,
14868                fidl::encoding::DefaultFuchsiaResourceDialect,
14869            >,
14870        T1: fidl::encoding::Encode<
14871                fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<ReceiverMarker>>,
14872                fidl::encoding::DefaultFuchsiaResourceDialect,
14873            >,
14874    >
14875        fidl::encoding::Encode<
14876            CapabilitiesConnectorCreateRequest,
14877            fidl::encoding::DefaultFuchsiaResourceDialect,
14878        > for (T0, T1)
14879    {
14880        #[inline]
14881        unsafe fn encode(
14882            self,
14883            encoder: &mut fidl::encoding::Encoder<
14884                '_,
14885                fidl::encoding::DefaultFuchsiaResourceDialect,
14886            >,
14887            offset: usize,
14888            depth: fidl::encoding::Depth,
14889        ) -> fidl::Result<()> {
14890            encoder.debug_check_bounds::<CapabilitiesConnectorCreateRequest>(offset);
14891            // Zero out padding regions. There's no need to apply masks
14892            // because the unmasked parts will be overwritten by fields.
14893            // Write the fields.
14894            self.0.encode(encoder, offset + 0, depth)?;
14895            self.1.encode(encoder, offset + 4, depth)?;
14896            Ok(())
14897        }
14898    }
14899
14900    impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
14901        for CapabilitiesConnectorCreateRequest
14902    {
14903        #[inline(always)]
14904        fn new_empty() -> Self {
14905            Self {
14906                connector: fidl::new_empty!(fidl::encoding::HandleType<fidl::EventPair, { fidl::ObjectType::EVENTPAIR.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect),
14907                receiver_client_end: fidl::new_empty!(
14908                    fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<ReceiverMarker>>,
14909                    fidl::encoding::DefaultFuchsiaResourceDialect
14910                ),
14911            }
14912        }
14913
14914        #[inline]
14915        unsafe fn decode(
14916            &mut self,
14917            decoder: &mut fidl::encoding::Decoder<
14918                '_,
14919                fidl::encoding::DefaultFuchsiaResourceDialect,
14920            >,
14921            offset: usize,
14922            _depth: fidl::encoding::Depth,
14923        ) -> fidl::Result<()> {
14924            decoder.debug_check_bounds::<Self>(offset);
14925            // Verify that padding bytes are zero.
14926            fidl::decode!(fidl::encoding::HandleType<fidl::EventPair, { fidl::ObjectType::EVENTPAIR.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect, &mut self.connector, decoder, offset + 0, _depth)?;
14927            fidl::decode!(
14928                fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<ReceiverMarker>>,
14929                fidl::encoding::DefaultFuchsiaResourceDialect,
14930                &mut self.receiver_client_end,
14931                decoder,
14932                offset + 4,
14933                _depth
14934            )?;
14935            Ok(())
14936        }
14937    }
14938
14939    impl fidl::encoding::ResourceTypeMarker for CapabilitiesConnectorOpenRequest {
14940        type Borrowed<'a> = &'a mut Self;
14941        fn take_or_borrow<'a>(
14942            value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
14943        ) -> Self::Borrowed<'a> {
14944            value
14945        }
14946    }
14947
14948    unsafe impl fidl::encoding::TypeMarker for CapabilitiesConnectorOpenRequest {
14949        type Owned = Self;
14950
14951        #[inline(always)]
14952        fn inline_align(_context: fidl::encoding::Context) -> usize {
14953            4
14954        }
14955
14956        #[inline(always)]
14957        fn inline_size(_context: fidl::encoding::Context) -> usize {
14958            8
14959        }
14960    }
14961
14962    unsafe impl
14963        fidl::encoding::Encode<
14964            CapabilitiesConnectorOpenRequest,
14965            fidl::encoding::DefaultFuchsiaResourceDialect,
14966        > for &mut CapabilitiesConnectorOpenRequest
14967    {
14968        #[inline]
14969        unsafe fn encode(
14970            self,
14971            encoder: &mut fidl::encoding::Encoder<
14972                '_,
14973                fidl::encoding::DefaultFuchsiaResourceDialect,
14974            >,
14975            offset: usize,
14976            _depth: fidl::encoding::Depth,
14977        ) -> fidl::Result<()> {
14978            encoder.debug_check_bounds::<CapabilitiesConnectorOpenRequest>(offset);
14979            // Delegate to tuple encoding.
14980            fidl::encoding::Encode::<
14981                CapabilitiesConnectorOpenRequest,
14982                fidl::encoding::DefaultFuchsiaResourceDialect,
14983            >::encode(
14984                (
14985                    <fidl::encoding::HandleType<
14986                        fidl::EventPair,
14987                        { fidl::ObjectType::EVENTPAIR.into_raw() },
14988                        2147483648,
14989                    > as fidl::encoding::ResourceTypeMarker>::take_or_borrow(
14990                        &mut self.connector
14991                    ),
14992                    <fidl::encoding::HandleType<
14993                        fidl::Channel,
14994                        { fidl::ObjectType::CHANNEL.into_raw() },
14995                        2147483648,
14996                    > as fidl::encoding::ResourceTypeMarker>::take_or_borrow(
14997                        &mut self.channel
14998                    ),
14999                ),
15000                encoder,
15001                offset,
15002                _depth,
15003            )
15004        }
15005    }
15006    unsafe impl<
15007        T0: fidl::encoding::Encode<
15008                fidl::encoding::HandleType<
15009                    fidl::EventPair,
15010                    { fidl::ObjectType::EVENTPAIR.into_raw() },
15011                    2147483648,
15012                >,
15013                fidl::encoding::DefaultFuchsiaResourceDialect,
15014            >,
15015        T1: fidl::encoding::Encode<
15016                fidl::encoding::HandleType<
15017                    fidl::Channel,
15018                    { fidl::ObjectType::CHANNEL.into_raw() },
15019                    2147483648,
15020                >,
15021                fidl::encoding::DefaultFuchsiaResourceDialect,
15022            >,
15023    >
15024        fidl::encoding::Encode<
15025            CapabilitiesConnectorOpenRequest,
15026            fidl::encoding::DefaultFuchsiaResourceDialect,
15027        > for (T0, T1)
15028    {
15029        #[inline]
15030        unsafe fn encode(
15031            self,
15032            encoder: &mut fidl::encoding::Encoder<
15033                '_,
15034                fidl::encoding::DefaultFuchsiaResourceDialect,
15035            >,
15036            offset: usize,
15037            depth: fidl::encoding::Depth,
15038        ) -> fidl::Result<()> {
15039            encoder.debug_check_bounds::<CapabilitiesConnectorOpenRequest>(offset);
15040            // Zero out padding regions. There's no need to apply masks
15041            // because the unmasked parts will be overwritten by fields.
15042            // Write the fields.
15043            self.0.encode(encoder, offset + 0, depth)?;
15044            self.1.encode(encoder, offset + 4, depth)?;
15045            Ok(())
15046        }
15047    }
15048
15049    impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
15050        for CapabilitiesConnectorOpenRequest
15051    {
15052        #[inline(always)]
15053        fn new_empty() -> Self {
15054            Self {
15055                connector: fidl::new_empty!(fidl::encoding::HandleType<fidl::EventPair, { fidl::ObjectType::EVENTPAIR.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect),
15056                channel: fidl::new_empty!(fidl::encoding::HandleType<fidl::Channel, { fidl::ObjectType::CHANNEL.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect),
15057            }
15058        }
15059
15060        #[inline]
15061        unsafe fn decode(
15062            &mut self,
15063            decoder: &mut fidl::encoding::Decoder<
15064                '_,
15065                fidl::encoding::DefaultFuchsiaResourceDialect,
15066            >,
15067            offset: usize,
15068            _depth: fidl::encoding::Depth,
15069        ) -> fidl::Result<()> {
15070            decoder.debug_check_bounds::<Self>(offset);
15071            // Verify that padding bytes are zero.
15072            fidl::decode!(fidl::encoding::HandleType<fidl::EventPair, { fidl::ObjectType::EVENTPAIR.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect, &mut self.connector, decoder, offset + 0, _depth)?;
15073            fidl::decode!(fidl::encoding::HandleType<fidl::Channel, { fidl::ObjectType::CHANNEL.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect, &mut self.channel, decoder, offset + 4, _depth)?;
15074            Ok(())
15075        }
15076    }
15077
15078    impl fidl::encoding::ResourceTypeMarker for CapabilitiesConnectorRouterCreateRequest {
15079        type Borrowed<'a> = &'a mut Self;
15080        fn take_or_borrow<'a>(
15081            value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
15082        ) -> Self::Borrowed<'a> {
15083            value
15084        }
15085    }
15086
15087    unsafe impl fidl::encoding::TypeMarker for CapabilitiesConnectorRouterCreateRequest {
15088        type Owned = Self;
15089
15090        #[inline(always)]
15091        fn inline_align(_context: fidl::encoding::Context) -> usize {
15092            4
15093        }
15094
15095        #[inline(always)]
15096        fn inline_size(_context: fidl::encoding::Context) -> usize {
15097            8
15098        }
15099    }
15100
15101    unsafe impl
15102        fidl::encoding::Encode<
15103            CapabilitiesConnectorRouterCreateRequest,
15104            fidl::encoding::DefaultFuchsiaResourceDialect,
15105        > for &mut CapabilitiesConnectorRouterCreateRequest
15106    {
15107        #[inline]
15108        unsafe fn encode(
15109            self,
15110            encoder: &mut fidl::encoding::Encoder<
15111                '_,
15112                fidl::encoding::DefaultFuchsiaResourceDialect,
15113            >,
15114            offset: usize,
15115            _depth: fidl::encoding::Depth,
15116        ) -> fidl::Result<()> {
15117            encoder.debug_check_bounds::<CapabilitiesConnectorRouterCreateRequest>(offset);
15118            // Delegate to tuple encoding.
15119            fidl::encoding::Encode::<CapabilitiesConnectorRouterCreateRequest, fidl::encoding::DefaultFuchsiaResourceDialect>::encode(
15120                (
15121                    <fidl::encoding::HandleType<fidl::EventPair, { fidl::ObjectType::EVENTPAIR.into_raw() }, 2147483648> as fidl::encoding::ResourceTypeMarker>::take_or_borrow(&mut self.router),
15122                    <fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<ConnectorRouterMarker>> as fidl::encoding::ResourceTypeMarker>::take_or_borrow(&mut self.router_client_end),
15123                ),
15124                encoder, offset, _depth
15125            )
15126        }
15127    }
15128    unsafe impl<
15129        T0: fidl::encoding::Encode<
15130                fidl::encoding::HandleType<
15131                    fidl::EventPair,
15132                    { fidl::ObjectType::EVENTPAIR.into_raw() },
15133                    2147483648,
15134                >,
15135                fidl::encoding::DefaultFuchsiaResourceDialect,
15136            >,
15137        T1: fidl::encoding::Encode<
15138                fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<ConnectorRouterMarker>>,
15139                fidl::encoding::DefaultFuchsiaResourceDialect,
15140            >,
15141    >
15142        fidl::encoding::Encode<
15143            CapabilitiesConnectorRouterCreateRequest,
15144            fidl::encoding::DefaultFuchsiaResourceDialect,
15145        > for (T0, T1)
15146    {
15147        #[inline]
15148        unsafe fn encode(
15149            self,
15150            encoder: &mut fidl::encoding::Encoder<
15151                '_,
15152                fidl::encoding::DefaultFuchsiaResourceDialect,
15153            >,
15154            offset: usize,
15155            depth: fidl::encoding::Depth,
15156        ) -> fidl::Result<()> {
15157            encoder.debug_check_bounds::<CapabilitiesConnectorRouterCreateRequest>(offset);
15158            // Zero out padding regions. There's no need to apply masks
15159            // because the unmasked parts will be overwritten by fields.
15160            // Write the fields.
15161            self.0.encode(encoder, offset + 0, depth)?;
15162            self.1.encode(encoder, offset + 4, depth)?;
15163            Ok(())
15164        }
15165    }
15166
15167    impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
15168        for CapabilitiesConnectorRouterCreateRequest
15169    {
15170        #[inline(always)]
15171        fn new_empty() -> Self {
15172            Self {
15173                router: fidl::new_empty!(fidl::encoding::HandleType<fidl::EventPair, { fidl::ObjectType::EVENTPAIR.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect),
15174                router_client_end: fidl::new_empty!(
15175                    fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<ConnectorRouterMarker>>,
15176                    fidl::encoding::DefaultFuchsiaResourceDialect
15177                ),
15178            }
15179        }
15180
15181        #[inline]
15182        unsafe fn decode(
15183            &mut self,
15184            decoder: &mut fidl::encoding::Decoder<
15185                '_,
15186                fidl::encoding::DefaultFuchsiaResourceDialect,
15187            >,
15188            offset: usize,
15189            _depth: fidl::encoding::Depth,
15190        ) -> fidl::Result<()> {
15191            decoder.debug_check_bounds::<Self>(offset);
15192            // Verify that padding bytes are zero.
15193            fidl::decode!(fidl::encoding::HandleType<fidl::EventPair, { fidl::ObjectType::EVENTPAIR.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect, &mut self.router, decoder, offset + 0, _depth)?;
15194            fidl::decode!(
15195                fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<ConnectorRouterMarker>>,
15196                fidl::encoding::DefaultFuchsiaResourceDialect,
15197                &mut self.router_client_end,
15198                decoder,
15199                offset + 4,
15200                _depth
15201            )?;
15202            Ok(())
15203        }
15204    }
15205
15206    impl fidl::encoding::ResourceTypeMarker for CapabilitiesConnectorRouterRouteRequest {
15207        type Borrowed<'a> = &'a mut Self;
15208        fn take_or_borrow<'a>(
15209            value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
15210        ) -> Self::Borrowed<'a> {
15211            value
15212        }
15213    }
15214
15215    unsafe impl fidl::encoding::TypeMarker for CapabilitiesConnectorRouterRouteRequest {
15216        type Owned = Self;
15217
15218        #[inline(always)]
15219        fn inline_align(_context: fidl::encoding::Context) -> usize {
15220            8
15221        }
15222
15223        #[inline(always)]
15224        fn inline_size(_context: fidl::encoding::Context) -> usize {
15225            32
15226        }
15227    }
15228
15229    unsafe impl
15230        fidl::encoding::Encode<
15231            CapabilitiesConnectorRouterRouteRequest,
15232            fidl::encoding::DefaultFuchsiaResourceDialect,
15233        > for &mut CapabilitiesConnectorRouterRouteRequest
15234    {
15235        #[inline]
15236        unsafe fn encode(
15237            self,
15238            encoder: &mut fidl::encoding::Encoder<
15239                '_,
15240                fidl::encoding::DefaultFuchsiaResourceDialect,
15241            >,
15242            offset: usize,
15243            _depth: fidl::encoding::Depth,
15244        ) -> fidl::Result<()> {
15245            encoder.debug_check_bounds::<CapabilitiesConnectorRouterRouteRequest>(offset);
15246            // Delegate to tuple encoding.
15247            fidl::encoding::Encode::<
15248                CapabilitiesConnectorRouterRouteRequest,
15249                fidl::encoding::DefaultFuchsiaResourceDialect,
15250            >::encode(
15251                (
15252                    <fidl::encoding::HandleType<
15253                        fidl::EventPair,
15254                        { fidl::ObjectType::EVENTPAIR.into_raw() },
15255                        2147483648,
15256                    > as fidl::encoding::ResourceTypeMarker>::take_or_borrow(
15257                        &mut self.router
15258                    ),
15259                    <RouteRequest as fidl::encoding::ResourceTypeMarker>::take_or_borrow(
15260                        &mut self.request,
15261                    ),
15262                    <fidl::encoding::HandleType<
15263                        fidl::EventPair,
15264                        { fidl::ObjectType::EVENTPAIR.into_raw() },
15265                        2147483648,
15266                    > as fidl::encoding::ResourceTypeMarker>::take_or_borrow(
15267                        &mut self.instance_token,
15268                    ),
15269                    <fidl::encoding::HandleType<
15270                        fidl::EventPair,
15271                        { fidl::ObjectType::EVENTPAIR.into_raw() },
15272                        2147483648,
15273                    > as fidl::encoding::ResourceTypeMarker>::take_or_borrow(
15274                        &mut self.connector
15275                    ),
15276                ),
15277                encoder,
15278                offset,
15279                _depth,
15280            )
15281        }
15282    }
15283    unsafe impl<
15284        T0: fidl::encoding::Encode<
15285                fidl::encoding::HandleType<
15286                    fidl::EventPair,
15287                    { fidl::ObjectType::EVENTPAIR.into_raw() },
15288                    2147483648,
15289                >,
15290                fidl::encoding::DefaultFuchsiaResourceDialect,
15291            >,
15292        T1: fidl::encoding::Encode<RouteRequest, fidl::encoding::DefaultFuchsiaResourceDialect>,
15293        T2: fidl::encoding::Encode<
15294                fidl::encoding::HandleType<
15295                    fidl::EventPair,
15296                    { fidl::ObjectType::EVENTPAIR.into_raw() },
15297                    2147483648,
15298                >,
15299                fidl::encoding::DefaultFuchsiaResourceDialect,
15300            >,
15301        T3: fidl::encoding::Encode<
15302                fidl::encoding::HandleType<
15303                    fidl::EventPair,
15304                    { fidl::ObjectType::EVENTPAIR.into_raw() },
15305                    2147483648,
15306                >,
15307                fidl::encoding::DefaultFuchsiaResourceDialect,
15308            >,
15309    >
15310        fidl::encoding::Encode<
15311            CapabilitiesConnectorRouterRouteRequest,
15312            fidl::encoding::DefaultFuchsiaResourceDialect,
15313        > for (T0, T1, T2, T3)
15314    {
15315        #[inline]
15316        unsafe fn encode(
15317            self,
15318            encoder: &mut fidl::encoding::Encoder<
15319                '_,
15320                fidl::encoding::DefaultFuchsiaResourceDialect,
15321            >,
15322            offset: usize,
15323            depth: fidl::encoding::Depth,
15324        ) -> fidl::Result<()> {
15325            encoder.debug_check_bounds::<CapabilitiesConnectorRouterRouteRequest>(offset);
15326            // Zero out padding regions. There's no need to apply masks
15327            // because the unmasked parts will be overwritten by fields.
15328            unsafe {
15329                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(0);
15330                (ptr as *mut u64).write_unaligned(0);
15331            }
15332            // Write the fields.
15333            self.0.encode(encoder, offset + 0, depth)?;
15334            self.1.encode(encoder, offset + 8, depth)?;
15335            self.2.encode(encoder, offset + 24, depth)?;
15336            self.3.encode(encoder, offset + 28, depth)?;
15337            Ok(())
15338        }
15339    }
15340
15341    impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
15342        for CapabilitiesConnectorRouterRouteRequest
15343    {
15344        #[inline(always)]
15345        fn new_empty() -> Self {
15346            Self {
15347                router: fidl::new_empty!(fidl::encoding::HandleType<fidl::EventPair, { fidl::ObjectType::EVENTPAIR.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect),
15348                request: fidl::new_empty!(
15349                    RouteRequest,
15350                    fidl::encoding::DefaultFuchsiaResourceDialect
15351                ),
15352                instance_token: fidl::new_empty!(fidl::encoding::HandleType<fidl::EventPair, { fidl::ObjectType::EVENTPAIR.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect),
15353                connector: fidl::new_empty!(fidl::encoding::HandleType<fidl::EventPair, { fidl::ObjectType::EVENTPAIR.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect),
15354            }
15355        }
15356
15357        #[inline]
15358        unsafe fn decode(
15359            &mut self,
15360            decoder: &mut fidl::encoding::Decoder<
15361                '_,
15362                fidl::encoding::DefaultFuchsiaResourceDialect,
15363            >,
15364            offset: usize,
15365            _depth: fidl::encoding::Depth,
15366        ) -> fidl::Result<()> {
15367            decoder.debug_check_bounds::<Self>(offset);
15368            // Verify that padding bytes are zero.
15369            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(0) };
15370            let padval = unsafe { (ptr as *const u64).read_unaligned() };
15371            let mask = 0xffffffff00000000u64;
15372            let maskedval = padval & mask;
15373            if maskedval != 0 {
15374                return Err(fidl::Error::NonZeroPadding {
15375                    padding_start: offset + 0 + ((mask as u64).trailing_zeros() / 8) as usize,
15376                });
15377            }
15378            fidl::decode!(fidl::encoding::HandleType<fidl::EventPair, { fidl::ObjectType::EVENTPAIR.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect, &mut self.router, decoder, offset + 0, _depth)?;
15379            fidl::decode!(
15380                RouteRequest,
15381                fidl::encoding::DefaultFuchsiaResourceDialect,
15382                &mut self.request,
15383                decoder,
15384                offset + 8,
15385                _depth
15386            )?;
15387            fidl::decode!(fidl::encoding::HandleType<fidl::EventPair, { fidl::ObjectType::EVENTPAIR.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect, &mut self.instance_token, decoder, offset + 24, _depth)?;
15388            fidl::decode!(fidl::encoding::HandleType<fidl::EventPair, { fidl::ObjectType::EVENTPAIR.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect, &mut self.connector, decoder, offset + 28, _depth)?;
15389            Ok(())
15390        }
15391    }
15392
15393    impl fidl::encoding::ResourceTypeMarker for CapabilitiesDataCreateRequest {
15394        type Borrowed<'a> = &'a mut Self;
15395        fn take_or_borrow<'a>(
15396            value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
15397        ) -> Self::Borrowed<'a> {
15398            value
15399        }
15400    }
15401
15402    unsafe impl fidl::encoding::TypeMarker for CapabilitiesDataCreateRequest {
15403        type Owned = Self;
15404
15405        #[inline(always)]
15406        fn inline_align(_context: fidl::encoding::Context) -> usize {
15407            8
15408        }
15409
15410        #[inline(always)]
15411        fn inline_size(_context: fidl::encoding::Context) -> usize {
15412            24
15413        }
15414    }
15415
15416    unsafe impl
15417        fidl::encoding::Encode<
15418            CapabilitiesDataCreateRequest,
15419            fidl::encoding::DefaultFuchsiaResourceDialect,
15420        > for &mut CapabilitiesDataCreateRequest
15421    {
15422        #[inline]
15423        unsafe fn encode(
15424            self,
15425            encoder: &mut fidl::encoding::Encoder<
15426                '_,
15427                fidl::encoding::DefaultFuchsiaResourceDialect,
15428            >,
15429            offset: usize,
15430            _depth: fidl::encoding::Depth,
15431        ) -> fidl::Result<()> {
15432            encoder.debug_check_bounds::<CapabilitiesDataCreateRequest>(offset);
15433            // Delegate to tuple encoding.
15434            fidl::encoding::Encode::<
15435                CapabilitiesDataCreateRequest,
15436                fidl::encoding::DefaultFuchsiaResourceDialect,
15437            >::encode(
15438                (
15439                    <fidl::encoding::HandleType<
15440                        fidl::EventPair,
15441                        { fidl::ObjectType::EVENTPAIR.into_raw() },
15442                        2147483648,
15443                    > as fidl::encoding::ResourceTypeMarker>::take_or_borrow(
15444                        &mut self.data_handle
15445                    ),
15446                    <Data as fidl::encoding::ValueTypeMarker>::borrow(&self.data),
15447                ),
15448                encoder,
15449                offset,
15450                _depth,
15451            )
15452        }
15453    }
15454    unsafe impl<
15455        T0: fidl::encoding::Encode<
15456                fidl::encoding::HandleType<
15457                    fidl::EventPair,
15458                    { fidl::ObjectType::EVENTPAIR.into_raw() },
15459                    2147483648,
15460                >,
15461                fidl::encoding::DefaultFuchsiaResourceDialect,
15462            >,
15463        T1: fidl::encoding::Encode<Data, fidl::encoding::DefaultFuchsiaResourceDialect>,
15464    >
15465        fidl::encoding::Encode<
15466            CapabilitiesDataCreateRequest,
15467            fidl::encoding::DefaultFuchsiaResourceDialect,
15468        > for (T0, T1)
15469    {
15470        #[inline]
15471        unsafe fn encode(
15472            self,
15473            encoder: &mut fidl::encoding::Encoder<
15474                '_,
15475                fidl::encoding::DefaultFuchsiaResourceDialect,
15476            >,
15477            offset: usize,
15478            depth: fidl::encoding::Depth,
15479        ) -> fidl::Result<()> {
15480            encoder.debug_check_bounds::<CapabilitiesDataCreateRequest>(offset);
15481            // Zero out padding regions. There's no need to apply masks
15482            // because the unmasked parts will be overwritten by fields.
15483            unsafe {
15484                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(0);
15485                (ptr as *mut u64).write_unaligned(0);
15486            }
15487            // Write the fields.
15488            self.0.encode(encoder, offset + 0, depth)?;
15489            self.1.encode(encoder, offset + 8, depth)?;
15490            Ok(())
15491        }
15492    }
15493
15494    impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
15495        for CapabilitiesDataCreateRequest
15496    {
15497        #[inline(always)]
15498        fn new_empty() -> Self {
15499            Self {
15500                data_handle: fidl::new_empty!(fidl::encoding::HandleType<fidl::EventPair, { fidl::ObjectType::EVENTPAIR.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect),
15501                data: fidl::new_empty!(Data, fidl::encoding::DefaultFuchsiaResourceDialect),
15502            }
15503        }
15504
15505        #[inline]
15506        unsafe fn decode(
15507            &mut self,
15508            decoder: &mut fidl::encoding::Decoder<
15509                '_,
15510                fidl::encoding::DefaultFuchsiaResourceDialect,
15511            >,
15512            offset: usize,
15513            _depth: fidl::encoding::Depth,
15514        ) -> fidl::Result<()> {
15515            decoder.debug_check_bounds::<Self>(offset);
15516            // Verify that padding bytes are zero.
15517            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(0) };
15518            let padval = unsafe { (ptr as *const u64).read_unaligned() };
15519            let mask = 0xffffffff00000000u64;
15520            let maskedval = padval & mask;
15521            if maskedval != 0 {
15522                return Err(fidl::Error::NonZeroPadding {
15523                    padding_start: offset + 0 + ((mask as u64).trailing_zeros() / 8) as usize,
15524                });
15525            }
15526            fidl::decode!(fidl::encoding::HandleType<fidl::EventPair, { fidl::ObjectType::EVENTPAIR.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect, &mut self.data_handle, decoder, offset + 0, _depth)?;
15527            fidl::decode!(
15528                Data,
15529                fidl::encoding::DefaultFuchsiaResourceDialect,
15530                &mut self.data,
15531                decoder,
15532                offset + 8,
15533                _depth
15534            )?;
15535            Ok(())
15536        }
15537    }
15538
15539    impl fidl::encoding::ResourceTypeMarker for CapabilitiesDataGetRequest {
15540        type Borrowed<'a> = &'a mut Self;
15541        fn take_or_borrow<'a>(
15542            value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
15543        ) -> Self::Borrowed<'a> {
15544            value
15545        }
15546    }
15547
15548    unsafe impl fidl::encoding::TypeMarker for CapabilitiesDataGetRequest {
15549        type Owned = Self;
15550
15551        #[inline(always)]
15552        fn inline_align(_context: fidl::encoding::Context) -> usize {
15553            4
15554        }
15555
15556        #[inline(always)]
15557        fn inline_size(_context: fidl::encoding::Context) -> usize {
15558            4
15559        }
15560    }
15561
15562    unsafe impl
15563        fidl::encoding::Encode<
15564            CapabilitiesDataGetRequest,
15565            fidl::encoding::DefaultFuchsiaResourceDialect,
15566        > for &mut CapabilitiesDataGetRequest
15567    {
15568        #[inline]
15569        unsafe fn encode(
15570            self,
15571            encoder: &mut fidl::encoding::Encoder<
15572                '_,
15573                fidl::encoding::DefaultFuchsiaResourceDialect,
15574            >,
15575            offset: usize,
15576            _depth: fidl::encoding::Depth,
15577        ) -> fidl::Result<()> {
15578            encoder.debug_check_bounds::<CapabilitiesDataGetRequest>(offset);
15579            // Delegate to tuple encoding.
15580            fidl::encoding::Encode::<
15581                CapabilitiesDataGetRequest,
15582                fidl::encoding::DefaultFuchsiaResourceDialect,
15583            >::encode(
15584                (<fidl::encoding::HandleType<
15585                    fidl::EventPair,
15586                    { fidl::ObjectType::EVENTPAIR.into_raw() },
15587                    2147483648,
15588                > as fidl::encoding::ResourceTypeMarker>::take_or_borrow(
15589                    &mut self.data_handle
15590                ),),
15591                encoder,
15592                offset,
15593                _depth,
15594            )
15595        }
15596    }
15597    unsafe impl<
15598        T0: fidl::encoding::Encode<
15599                fidl::encoding::HandleType<
15600                    fidl::EventPair,
15601                    { fidl::ObjectType::EVENTPAIR.into_raw() },
15602                    2147483648,
15603                >,
15604                fidl::encoding::DefaultFuchsiaResourceDialect,
15605            >,
15606    >
15607        fidl::encoding::Encode<
15608            CapabilitiesDataGetRequest,
15609            fidl::encoding::DefaultFuchsiaResourceDialect,
15610        > for (T0,)
15611    {
15612        #[inline]
15613        unsafe fn encode(
15614            self,
15615            encoder: &mut fidl::encoding::Encoder<
15616                '_,
15617                fidl::encoding::DefaultFuchsiaResourceDialect,
15618            >,
15619            offset: usize,
15620            depth: fidl::encoding::Depth,
15621        ) -> fidl::Result<()> {
15622            encoder.debug_check_bounds::<CapabilitiesDataGetRequest>(offset);
15623            // Zero out padding regions. There's no need to apply masks
15624            // because the unmasked parts will be overwritten by fields.
15625            // Write the fields.
15626            self.0.encode(encoder, offset + 0, depth)?;
15627            Ok(())
15628        }
15629    }
15630
15631    impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
15632        for CapabilitiesDataGetRequest
15633    {
15634        #[inline(always)]
15635        fn new_empty() -> Self {
15636            Self {
15637                data_handle: fidl::new_empty!(fidl::encoding::HandleType<fidl::EventPair, { fidl::ObjectType::EVENTPAIR.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect),
15638            }
15639        }
15640
15641        #[inline]
15642        unsafe fn decode(
15643            &mut self,
15644            decoder: &mut fidl::encoding::Decoder<
15645                '_,
15646                fidl::encoding::DefaultFuchsiaResourceDialect,
15647            >,
15648            offset: usize,
15649            _depth: fidl::encoding::Depth,
15650        ) -> fidl::Result<()> {
15651            decoder.debug_check_bounds::<Self>(offset);
15652            // Verify that padding bytes are zero.
15653            fidl::decode!(fidl::encoding::HandleType<fidl::EventPair, { fidl::ObjectType::EVENTPAIR.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect, &mut self.data_handle, decoder, offset + 0, _depth)?;
15654            Ok(())
15655        }
15656    }
15657
15658    impl fidl::encoding::ResourceTypeMarker for CapabilitiesDataRouterCreateRequest {
15659        type Borrowed<'a> = &'a mut Self;
15660        fn take_or_borrow<'a>(
15661            value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
15662        ) -> Self::Borrowed<'a> {
15663            value
15664        }
15665    }
15666
15667    unsafe impl fidl::encoding::TypeMarker for CapabilitiesDataRouterCreateRequest {
15668        type Owned = Self;
15669
15670        #[inline(always)]
15671        fn inline_align(_context: fidl::encoding::Context) -> usize {
15672            4
15673        }
15674
15675        #[inline(always)]
15676        fn inline_size(_context: fidl::encoding::Context) -> usize {
15677            8
15678        }
15679    }
15680
15681    unsafe impl
15682        fidl::encoding::Encode<
15683            CapabilitiesDataRouterCreateRequest,
15684            fidl::encoding::DefaultFuchsiaResourceDialect,
15685        > for &mut CapabilitiesDataRouterCreateRequest
15686    {
15687        #[inline]
15688        unsafe fn encode(
15689            self,
15690            encoder: &mut fidl::encoding::Encoder<
15691                '_,
15692                fidl::encoding::DefaultFuchsiaResourceDialect,
15693            >,
15694            offset: usize,
15695            _depth: fidl::encoding::Depth,
15696        ) -> fidl::Result<()> {
15697            encoder.debug_check_bounds::<CapabilitiesDataRouterCreateRequest>(offset);
15698            // Delegate to tuple encoding.
15699            fidl::encoding::Encode::<CapabilitiesDataRouterCreateRequest, fidl::encoding::DefaultFuchsiaResourceDialect>::encode(
15700                (
15701                    <fidl::encoding::HandleType<fidl::EventPair, { fidl::ObjectType::EVENTPAIR.into_raw() }, 2147483648> as fidl::encoding::ResourceTypeMarker>::take_or_borrow(&mut self.router),
15702                    <fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<DataRouterMarker>> as fidl::encoding::ResourceTypeMarker>::take_or_borrow(&mut self.router_client_end),
15703                ),
15704                encoder, offset, _depth
15705            )
15706        }
15707    }
15708    unsafe impl<
15709        T0: fidl::encoding::Encode<
15710                fidl::encoding::HandleType<
15711                    fidl::EventPair,
15712                    { fidl::ObjectType::EVENTPAIR.into_raw() },
15713                    2147483648,
15714                >,
15715                fidl::encoding::DefaultFuchsiaResourceDialect,
15716            >,
15717        T1: fidl::encoding::Encode<
15718                fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<DataRouterMarker>>,
15719                fidl::encoding::DefaultFuchsiaResourceDialect,
15720            >,
15721    >
15722        fidl::encoding::Encode<
15723            CapabilitiesDataRouterCreateRequest,
15724            fidl::encoding::DefaultFuchsiaResourceDialect,
15725        > for (T0, T1)
15726    {
15727        #[inline]
15728        unsafe fn encode(
15729            self,
15730            encoder: &mut fidl::encoding::Encoder<
15731                '_,
15732                fidl::encoding::DefaultFuchsiaResourceDialect,
15733            >,
15734            offset: usize,
15735            depth: fidl::encoding::Depth,
15736        ) -> fidl::Result<()> {
15737            encoder.debug_check_bounds::<CapabilitiesDataRouterCreateRequest>(offset);
15738            // Zero out padding regions. There's no need to apply masks
15739            // because the unmasked parts will be overwritten by fields.
15740            // Write the fields.
15741            self.0.encode(encoder, offset + 0, depth)?;
15742            self.1.encode(encoder, offset + 4, depth)?;
15743            Ok(())
15744        }
15745    }
15746
15747    impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
15748        for CapabilitiesDataRouterCreateRequest
15749    {
15750        #[inline(always)]
15751        fn new_empty() -> Self {
15752            Self {
15753                router: fidl::new_empty!(fidl::encoding::HandleType<fidl::EventPair, { fidl::ObjectType::EVENTPAIR.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect),
15754                router_client_end: fidl::new_empty!(
15755                    fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<DataRouterMarker>>,
15756                    fidl::encoding::DefaultFuchsiaResourceDialect
15757                ),
15758            }
15759        }
15760
15761        #[inline]
15762        unsafe fn decode(
15763            &mut self,
15764            decoder: &mut fidl::encoding::Decoder<
15765                '_,
15766                fidl::encoding::DefaultFuchsiaResourceDialect,
15767            >,
15768            offset: usize,
15769            _depth: fidl::encoding::Depth,
15770        ) -> fidl::Result<()> {
15771            decoder.debug_check_bounds::<Self>(offset);
15772            // Verify that padding bytes are zero.
15773            fidl::decode!(fidl::encoding::HandleType<fidl::EventPair, { fidl::ObjectType::EVENTPAIR.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect, &mut self.router, decoder, offset + 0, _depth)?;
15774            fidl::decode!(
15775                fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<DataRouterMarker>>,
15776                fidl::encoding::DefaultFuchsiaResourceDialect,
15777                &mut self.router_client_end,
15778                decoder,
15779                offset + 4,
15780                _depth
15781            )?;
15782            Ok(())
15783        }
15784    }
15785
15786    impl fidl::encoding::ResourceTypeMarker for CapabilitiesDataRouterRouteRequest {
15787        type Borrowed<'a> = &'a mut Self;
15788        fn take_or_borrow<'a>(
15789            value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
15790        ) -> Self::Borrowed<'a> {
15791            value
15792        }
15793    }
15794
15795    unsafe impl fidl::encoding::TypeMarker for CapabilitiesDataRouterRouteRequest {
15796        type Owned = Self;
15797
15798        #[inline(always)]
15799        fn inline_align(_context: fidl::encoding::Context) -> usize {
15800            8
15801        }
15802
15803        #[inline(always)]
15804        fn inline_size(_context: fidl::encoding::Context) -> usize {
15805            32
15806        }
15807    }
15808
15809    unsafe impl
15810        fidl::encoding::Encode<
15811            CapabilitiesDataRouterRouteRequest,
15812            fidl::encoding::DefaultFuchsiaResourceDialect,
15813        > for &mut CapabilitiesDataRouterRouteRequest
15814    {
15815        #[inline]
15816        unsafe fn encode(
15817            self,
15818            encoder: &mut fidl::encoding::Encoder<
15819                '_,
15820                fidl::encoding::DefaultFuchsiaResourceDialect,
15821            >,
15822            offset: usize,
15823            _depth: fidl::encoding::Depth,
15824        ) -> fidl::Result<()> {
15825            encoder.debug_check_bounds::<CapabilitiesDataRouterRouteRequest>(offset);
15826            // Delegate to tuple encoding.
15827            fidl::encoding::Encode::<
15828                CapabilitiesDataRouterRouteRequest,
15829                fidl::encoding::DefaultFuchsiaResourceDialect,
15830            >::encode(
15831                (
15832                    <fidl::encoding::HandleType<
15833                        fidl::EventPair,
15834                        { fidl::ObjectType::EVENTPAIR.into_raw() },
15835                        2147483648,
15836                    > as fidl::encoding::ResourceTypeMarker>::take_or_borrow(
15837                        &mut self.router
15838                    ),
15839                    <RouteRequest as fidl::encoding::ResourceTypeMarker>::take_or_borrow(
15840                        &mut self.request,
15841                    ),
15842                    <fidl::encoding::HandleType<
15843                        fidl::EventPair,
15844                        { fidl::ObjectType::EVENTPAIR.into_raw() },
15845                        2147483648,
15846                    > as fidl::encoding::ResourceTypeMarker>::take_or_borrow(
15847                        &mut self.instance_token,
15848                    ),
15849                    <fidl::encoding::HandleType<
15850                        fidl::EventPair,
15851                        { fidl::ObjectType::EVENTPAIR.into_raw() },
15852                        2147483648,
15853                    > as fidl::encoding::ResourceTypeMarker>::take_or_borrow(
15854                        &mut self.data
15855                    ),
15856                ),
15857                encoder,
15858                offset,
15859                _depth,
15860            )
15861        }
15862    }
15863    unsafe impl<
15864        T0: fidl::encoding::Encode<
15865                fidl::encoding::HandleType<
15866                    fidl::EventPair,
15867                    { fidl::ObjectType::EVENTPAIR.into_raw() },
15868                    2147483648,
15869                >,
15870                fidl::encoding::DefaultFuchsiaResourceDialect,
15871            >,
15872        T1: fidl::encoding::Encode<RouteRequest, fidl::encoding::DefaultFuchsiaResourceDialect>,
15873        T2: fidl::encoding::Encode<
15874                fidl::encoding::HandleType<
15875                    fidl::EventPair,
15876                    { fidl::ObjectType::EVENTPAIR.into_raw() },
15877                    2147483648,
15878                >,
15879                fidl::encoding::DefaultFuchsiaResourceDialect,
15880            >,
15881        T3: fidl::encoding::Encode<
15882                fidl::encoding::HandleType<
15883                    fidl::EventPair,
15884                    { fidl::ObjectType::EVENTPAIR.into_raw() },
15885                    2147483648,
15886                >,
15887                fidl::encoding::DefaultFuchsiaResourceDialect,
15888            >,
15889    >
15890        fidl::encoding::Encode<
15891            CapabilitiesDataRouterRouteRequest,
15892            fidl::encoding::DefaultFuchsiaResourceDialect,
15893        > for (T0, T1, T2, T3)
15894    {
15895        #[inline]
15896        unsafe fn encode(
15897            self,
15898            encoder: &mut fidl::encoding::Encoder<
15899                '_,
15900                fidl::encoding::DefaultFuchsiaResourceDialect,
15901            >,
15902            offset: usize,
15903            depth: fidl::encoding::Depth,
15904        ) -> fidl::Result<()> {
15905            encoder.debug_check_bounds::<CapabilitiesDataRouterRouteRequest>(offset);
15906            // Zero out padding regions. There's no need to apply masks
15907            // because the unmasked parts will be overwritten by fields.
15908            unsafe {
15909                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(0);
15910                (ptr as *mut u64).write_unaligned(0);
15911            }
15912            // Write the fields.
15913            self.0.encode(encoder, offset + 0, depth)?;
15914            self.1.encode(encoder, offset + 8, depth)?;
15915            self.2.encode(encoder, offset + 24, depth)?;
15916            self.3.encode(encoder, offset + 28, depth)?;
15917            Ok(())
15918        }
15919    }
15920
15921    impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
15922        for CapabilitiesDataRouterRouteRequest
15923    {
15924        #[inline(always)]
15925        fn new_empty() -> Self {
15926            Self {
15927                router: fidl::new_empty!(fidl::encoding::HandleType<fidl::EventPair, { fidl::ObjectType::EVENTPAIR.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect),
15928                request: fidl::new_empty!(
15929                    RouteRequest,
15930                    fidl::encoding::DefaultFuchsiaResourceDialect
15931                ),
15932                instance_token: fidl::new_empty!(fidl::encoding::HandleType<fidl::EventPair, { fidl::ObjectType::EVENTPAIR.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect),
15933                data: fidl::new_empty!(fidl::encoding::HandleType<fidl::EventPair, { fidl::ObjectType::EVENTPAIR.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect),
15934            }
15935        }
15936
15937        #[inline]
15938        unsafe fn decode(
15939            &mut self,
15940            decoder: &mut fidl::encoding::Decoder<
15941                '_,
15942                fidl::encoding::DefaultFuchsiaResourceDialect,
15943            >,
15944            offset: usize,
15945            _depth: fidl::encoding::Depth,
15946        ) -> fidl::Result<()> {
15947            decoder.debug_check_bounds::<Self>(offset);
15948            // Verify that padding bytes are zero.
15949            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(0) };
15950            let padval = unsafe { (ptr as *const u64).read_unaligned() };
15951            let mask = 0xffffffff00000000u64;
15952            let maskedval = padval & mask;
15953            if maskedval != 0 {
15954                return Err(fidl::Error::NonZeroPadding {
15955                    padding_start: offset + 0 + ((mask as u64).trailing_zeros() / 8) as usize,
15956                });
15957            }
15958            fidl::decode!(fidl::encoding::HandleType<fidl::EventPair, { fidl::ObjectType::EVENTPAIR.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect, &mut self.router, decoder, offset + 0, _depth)?;
15959            fidl::decode!(
15960                RouteRequest,
15961                fidl::encoding::DefaultFuchsiaResourceDialect,
15962                &mut self.request,
15963                decoder,
15964                offset + 8,
15965                _depth
15966            )?;
15967            fidl::decode!(fidl::encoding::HandleType<fidl::EventPair, { fidl::ObjectType::EVENTPAIR.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect, &mut self.instance_token, decoder, offset + 24, _depth)?;
15968            fidl::decode!(fidl::encoding::HandleType<fidl::EventPair, { fidl::ObjectType::EVENTPAIR.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect, &mut self.data, decoder, offset + 28, _depth)?;
15969            Ok(())
15970        }
15971    }
15972
15973    impl fidl::encoding::ResourceTypeMarker for CapabilitiesDictionaryCreateRequest {
15974        type Borrowed<'a> = &'a mut Self;
15975        fn take_or_borrow<'a>(
15976            value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
15977        ) -> Self::Borrowed<'a> {
15978            value
15979        }
15980    }
15981
15982    unsafe impl fidl::encoding::TypeMarker for CapabilitiesDictionaryCreateRequest {
15983        type Owned = Self;
15984
15985        #[inline(always)]
15986        fn inline_align(_context: fidl::encoding::Context) -> usize {
15987            4
15988        }
15989
15990        #[inline(always)]
15991        fn inline_size(_context: fidl::encoding::Context) -> usize {
15992            4
15993        }
15994    }
15995
15996    unsafe impl
15997        fidl::encoding::Encode<
15998            CapabilitiesDictionaryCreateRequest,
15999            fidl::encoding::DefaultFuchsiaResourceDialect,
16000        > for &mut CapabilitiesDictionaryCreateRequest
16001    {
16002        #[inline]
16003        unsafe fn encode(
16004            self,
16005            encoder: &mut fidl::encoding::Encoder<
16006                '_,
16007                fidl::encoding::DefaultFuchsiaResourceDialect,
16008            >,
16009            offset: usize,
16010            _depth: fidl::encoding::Depth,
16011        ) -> fidl::Result<()> {
16012            encoder.debug_check_bounds::<CapabilitiesDictionaryCreateRequest>(offset);
16013            // Delegate to tuple encoding.
16014            fidl::encoding::Encode::<
16015                CapabilitiesDictionaryCreateRequest,
16016                fidl::encoding::DefaultFuchsiaResourceDialect,
16017            >::encode(
16018                (<fidl::encoding::HandleType<
16019                    fidl::EventPair,
16020                    { fidl::ObjectType::EVENTPAIR.into_raw() },
16021                    2147483648,
16022                > as fidl::encoding::ResourceTypeMarker>::take_or_borrow(
16023                    &mut self.dictionary
16024                ),),
16025                encoder,
16026                offset,
16027                _depth,
16028            )
16029        }
16030    }
16031    unsafe impl<
16032        T0: fidl::encoding::Encode<
16033                fidl::encoding::HandleType<
16034                    fidl::EventPair,
16035                    { fidl::ObjectType::EVENTPAIR.into_raw() },
16036                    2147483648,
16037                >,
16038                fidl::encoding::DefaultFuchsiaResourceDialect,
16039            >,
16040    >
16041        fidl::encoding::Encode<
16042            CapabilitiesDictionaryCreateRequest,
16043            fidl::encoding::DefaultFuchsiaResourceDialect,
16044        > for (T0,)
16045    {
16046        #[inline]
16047        unsafe fn encode(
16048            self,
16049            encoder: &mut fidl::encoding::Encoder<
16050                '_,
16051                fidl::encoding::DefaultFuchsiaResourceDialect,
16052            >,
16053            offset: usize,
16054            depth: fidl::encoding::Depth,
16055        ) -> fidl::Result<()> {
16056            encoder.debug_check_bounds::<CapabilitiesDictionaryCreateRequest>(offset);
16057            // Zero out padding regions. There's no need to apply masks
16058            // because the unmasked parts will be overwritten by fields.
16059            // Write the fields.
16060            self.0.encode(encoder, offset + 0, depth)?;
16061            Ok(())
16062        }
16063    }
16064
16065    impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
16066        for CapabilitiesDictionaryCreateRequest
16067    {
16068        #[inline(always)]
16069        fn new_empty() -> Self {
16070            Self {
16071                dictionary: fidl::new_empty!(fidl::encoding::HandleType<fidl::EventPair, { fidl::ObjectType::EVENTPAIR.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect),
16072            }
16073        }
16074
16075        #[inline]
16076        unsafe fn decode(
16077            &mut self,
16078            decoder: &mut fidl::encoding::Decoder<
16079                '_,
16080                fidl::encoding::DefaultFuchsiaResourceDialect,
16081            >,
16082            offset: usize,
16083            _depth: fidl::encoding::Depth,
16084        ) -> fidl::Result<()> {
16085            decoder.debug_check_bounds::<Self>(offset);
16086            // Verify that padding bytes are zero.
16087            fidl::decode!(fidl::encoding::HandleType<fidl::EventPair, { fidl::ObjectType::EVENTPAIR.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect, &mut self.dictionary, decoder, offset + 0, _depth)?;
16088            Ok(())
16089        }
16090    }
16091
16092    impl fidl::encoding::ResourceTypeMarker for CapabilitiesDictionaryGetRequest {
16093        type Borrowed<'a> = &'a mut Self;
16094        fn take_or_borrow<'a>(
16095            value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
16096        ) -> Self::Borrowed<'a> {
16097            value
16098        }
16099    }
16100
16101    unsafe impl fidl::encoding::TypeMarker for CapabilitiesDictionaryGetRequest {
16102        type Owned = Self;
16103
16104        #[inline(always)]
16105        fn inline_align(_context: fidl::encoding::Context) -> usize {
16106            8
16107        }
16108
16109        #[inline(always)]
16110        fn inline_size(_context: fidl::encoding::Context) -> usize {
16111            32
16112        }
16113    }
16114
16115    unsafe impl
16116        fidl::encoding::Encode<
16117            CapabilitiesDictionaryGetRequest,
16118            fidl::encoding::DefaultFuchsiaResourceDialect,
16119        > for &mut CapabilitiesDictionaryGetRequest
16120    {
16121        #[inline]
16122        unsafe fn encode(
16123            self,
16124            encoder: &mut fidl::encoding::Encoder<
16125                '_,
16126                fidl::encoding::DefaultFuchsiaResourceDialect,
16127            >,
16128            offset: usize,
16129            _depth: fidl::encoding::Depth,
16130        ) -> fidl::Result<()> {
16131            encoder.debug_check_bounds::<CapabilitiesDictionaryGetRequest>(offset);
16132            // Delegate to tuple encoding.
16133            fidl::encoding::Encode::<
16134                CapabilitiesDictionaryGetRequest,
16135                fidl::encoding::DefaultFuchsiaResourceDialect,
16136            >::encode(
16137                (
16138                    <fidl::encoding::HandleType<
16139                        fidl::EventPair,
16140                        { fidl::ObjectType::EVENTPAIR.into_raw() },
16141                        2147483648,
16142                    > as fidl::encoding::ResourceTypeMarker>::take_or_borrow(
16143                        &mut self.dictionary
16144                    ),
16145                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow(
16146                        &self.key,
16147                    ),
16148                    <fidl::encoding::HandleType<
16149                        fidl::EventPair,
16150                        { fidl::ObjectType::EVENTPAIR.into_raw() },
16151                        2147483648,
16152                    > as fidl::encoding::ResourceTypeMarker>::take_or_borrow(
16153                        &mut self.value
16154                    ),
16155                ),
16156                encoder,
16157                offset,
16158                _depth,
16159            )
16160        }
16161    }
16162    unsafe impl<
16163        T0: fidl::encoding::Encode<
16164                fidl::encoding::HandleType<
16165                    fidl::EventPair,
16166                    { fidl::ObjectType::EVENTPAIR.into_raw() },
16167                    2147483648,
16168                >,
16169                fidl::encoding::DefaultFuchsiaResourceDialect,
16170            >,
16171        T1: fidl::encoding::Encode<
16172                fidl::encoding::BoundedString<100>,
16173                fidl::encoding::DefaultFuchsiaResourceDialect,
16174            >,
16175        T2: fidl::encoding::Encode<
16176                fidl::encoding::HandleType<
16177                    fidl::EventPair,
16178                    { fidl::ObjectType::EVENTPAIR.into_raw() },
16179                    2147483648,
16180                >,
16181                fidl::encoding::DefaultFuchsiaResourceDialect,
16182            >,
16183    >
16184        fidl::encoding::Encode<
16185            CapabilitiesDictionaryGetRequest,
16186            fidl::encoding::DefaultFuchsiaResourceDialect,
16187        > for (T0, T1, T2)
16188    {
16189        #[inline]
16190        unsafe fn encode(
16191            self,
16192            encoder: &mut fidl::encoding::Encoder<
16193                '_,
16194                fidl::encoding::DefaultFuchsiaResourceDialect,
16195            >,
16196            offset: usize,
16197            depth: fidl::encoding::Depth,
16198        ) -> fidl::Result<()> {
16199            encoder.debug_check_bounds::<CapabilitiesDictionaryGetRequest>(offset);
16200            // Zero out padding regions. There's no need to apply masks
16201            // because the unmasked parts will be overwritten by fields.
16202            unsafe {
16203                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(0);
16204                (ptr as *mut u64).write_unaligned(0);
16205            }
16206            unsafe {
16207                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(24);
16208                (ptr as *mut u64).write_unaligned(0);
16209            }
16210            // Write the fields.
16211            self.0.encode(encoder, offset + 0, depth)?;
16212            self.1.encode(encoder, offset + 8, depth)?;
16213            self.2.encode(encoder, offset + 24, depth)?;
16214            Ok(())
16215        }
16216    }
16217
16218    impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
16219        for CapabilitiesDictionaryGetRequest
16220    {
16221        #[inline(always)]
16222        fn new_empty() -> Self {
16223            Self {
16224                dictionary: fidl::new_empty!(fidl::encoding::HandleType<fidl::EventPair, { fidl::ObjectType::EVENTPAIR.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect),
16225                key: fidl::new_empty!(
16226                    fidl::encoding::BoundedString<100>,
16227                    fidl::encoding::DefaultFuchsiaResourceDialect
16228                ),
16229                value: fidl::new_empty!(fidl::encoding::HandleType<fidl::EventPair, { fidl::ObjectType::EVENTPAIR.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect),
16230            }
16231        }
16232
16233        #[inline]
16234        unsafe fn decode(
16235            &mut self,
16236            decoder: &mut fidl::encoding::Decoder<
16237                '_,
16238                fidl::encoding::DefaultFuchsiaResourceDialect,
16239            >,
16240            offset: usize,
16241            _depth: fidl::encoding::Depth,
16242        ) -> fidl::Result<()> {
16243            decoder.debug_check_bounds::<Self>(offset);
16244            // Verify that padding bytes are zero.
16245            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(0) };
16246            let padval = unsafe { (ptr as *const u64).read_unaligned() };
16247            let mask = 0xffffffff00000000u64;
16248            let maskedval = padval & mask;
16249            if maskedval != 0 {
16250                return Err(fidl::Error::NonZeroPadding {
16251                    padding_start: offset + 0 + ((mask as u64).trailing_zeros() / 8) as usize,
16252                });
16253            }
16254            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(24) };
16255            let padval = unsafe { (ptr as *const u64).read_unaligned() };
16256            let mask = 0xffffffff00000000u64;
16257            let maskedval = padval & mask;
16258            if maskedval != 0 {
16259                return Err(fidl::Error::NonZeroPadding {
16260                    padding_start: offset + 24 + ((mask as u64).trailing_zeros() / 8) as usize,
16261                });
16262            }
16263            fidl::decode!(fidl::encoding::HandleType<fidl::EventPair, { fidl::ObjectType::EVENTPAIR.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect, &mut self.dictionary, decoder, offset + 0, _depth)?;
16264            fidl::decode!(
16265                fidl::encoding::BoundedString<100>,
16266                fidl::encoding::DefaultFuchsiaResourceDialect,
16267                &mut self.key,
16268                decoder,
16269                offset + 8,
16270                _depth
16271            )?;
16272            fidl::decode!(fidl::encoding::HandleType<fidl::EventPair, { fidl::ObjectType::EVENTPAIR.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect, &mut self.value, decoder, offset + 24, _depth)?;
16273            Ok(())
16274        }
16275    }
16276
16277    impl fidl::encoding::ResourceTypeMarker for CapabilitiesDictionaryInsertRequest {
16278        type Borrowed<'a> = &'a mut Self;
16279        fn take_or_borrow<'a>(
16280            value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
16281        ) -> Self::Borrowed<'a> {
16282            value
16283        }
16284    }
16285
16286    unsafe impl fidl::encoding::TypeMarker for CapabilitiesDictionaryInsertRequest {
16287        type Owned = Self;
16288
16289        #[inline(always)]
16290        fn inline_align(_context: fidl::encoding::Context) -> usize {
16291            8
16292        }
16293
16294        #[inline(always)]
16295        fn inline_size(_context: fidl::encoding::Context) -> usize {
16296            32
16297        }
16298    }
16299
16300    unsafe impl
16301        fidl::encoding::Encode<
16302            CapabilitiesDictionaryInsertRequest,
16303            fidl::encoding::DefaultFuchsiaResourceDialect,
16304        > for &mut CapabilitiesDictionaryInsertRequest
16305    {
16306        #[inline]
16307        unsafe fn encode(
16308            self,
16309            encoder: &mut fidl::encoding::Encoder<
16310                '_,
16311                fidl::encoding::DefaultFuchsiaResourceDialect,
16312            >,
16313            offset: usize,
16314            _depth: fidl::encoding::Depth,
16315        ) -> fidl::Result<()> {
16316            encoder.debug_check_bounds::<CapabilitiesDictionaryInsertRequest>(offset);
16317            // Delegate to tuple encoding.
16318            fidl::encoding::Encode::<
16319                CapabilitiesDictionaryInsertRequest,
16320                fidl::encoding::DefaultFuchsiaResourceDialect,
16321            >::encode(
16322                (
16323                    <fidl::encoding::HandleType<
16324                        fidl::EventPair,
16325                        { fidl::ObjectType::EVENTPAIR.into_raw() },
16326                        2147483648,
16327                    > as fidl::encoding::ResourceTypeMarker>::take_or_borrow(
16328                        &mut self.dictionary
16329                    ),
16330                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow(
16331                        &self.key,
16332                    ),
16333                    <fidl::encoding::HandleType<
16334                        fidl::EventPair,
16335                        { fidl::ObjectType::EVENTPAIR.into_raw() },
16336                        2147483648,
16337                    > as fidl::encoding::ResourceTypeMarker>::take_or_borrow(
16338                        &mut self.value
16339                    ),
16340                ),
16341                encoder,
16342                offset,
16343                _depth,
16344            )
16345        }
16346    }
16347    unsafe impl<
16348        T0: fidl::encoding::Encode<
16349                fidl::encoding::HandleType<
16350                    fidl::EventPair,
16351                    { fidl::ObjectType::EVENTPAIR.into_raw() },
16352                    2147483648,
16353                >,
16354                fidl::encoding::DefaultFuchsiaResourceDialect,
16355            >,
16356        T1: fidl::encoding::Encode<
16357                fidl::encoding::BoundedString<100>,
16358                fidl::encoding::DefaultFuchsiaResourceDialect,
16359            >,
16360        T2: fidl::encoding::Encode<
16361                fidl::encoding::HandleType<
16362                    fidl::EventPair,
16363                    { fidl::ObjectType::EVENTPAIR.into_raw() },
16364                    2147483648,
16365                >,
16366                fidl::encoding::DefaultFuchsiaResourceDialect,
16367            >,
16368    >
16369        fidl::encoding::Encode<
16370            CapabilitiesDictionaryInsertRequest,
16371            fidl::encoding::DefaultFuchsiaResourceDialect,
16372        > for (T0, T1, T2)
16373    {
16374        #[inline]
16375        unsafe fn encode(
16376            self,
16377            encoder: &mut fidl::encoding::Encoder<
16378                '_,
16379                fidl::encoding::DefaultFuchsiaResourceDialect,
16380            >,
16381            offset: usize,
16382            depth: fidl::encoding::Depth,
16383        ) -> fidl::Result<()> {
16384            encoder.debug_check_bounds::<CapabilitiesDictionaryInsertRequest>(offset);
16385            // Zero out padding regions. There's no need to apply masks
16386            // because the unmasked parts will be overwritten by fields.
16387            unsafe {
16388                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(0);
16389                (ptr as *mut u64).write_unaligned(0);
16390            }
16391            unsafe {
16392                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(24);
16393                (ptr as *mut u64).write_unaligned(0);
16394            }
16395            // Write the fields.
16396            self.0.encode(encoder, offset + 0, depth)?;
16397            self.1.encode(encoder, offset + 8, depth)?;
16398            self.2.encode(encoder, offset + 24, depth)?;
16399            Ok(())
16400        }
16401    }
16402
16403    impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
16404        for CapabilitiesDictionaryInsertRequest
16405    {
16406        #[inline(always)]
16407        fn new_empty() -> Self {
16408            Self {
16409                dictionary: fidl::new_empty!(fidl::encoding::HandleType<fidl::EventPair, { fidl::ObjectType::EVENTPAIR.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect),
16410                key: fidl::new_empty!(
16411                    fidl::encoding::BoundedString<100>,
16412                    fidl::encoding::DefaultFuchsiaResourceDialect
16413                ),
16414                value: fidl::new_empty!(fidl::encoding::HandleType<fidl::EventPair, { fidl::ObjectType::EVENTPAIR.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect),
16415            }
16416        }
16417
16418        #[inline]
16419        unsafe fn decode(
16420            &mut self,
16421            decoder: &mut fidl::encoding::Decoder<
16422                '_,
16423                fidl::encoding::DefaultFuchsiaResourceDialect,
16424            >,
16425            offset: usize,
16426            _depth: fidl::encoding::Depth,
16427        ) -> fidl::Result<()> {
16428            decoder.debug_check_bounds::<Self>(offset);
16429            // Verify that padding bytes are zero.
16430            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(0) };
16431            let padval = unsafe { (ptr as *const u64).read_unaligned() };
16432            let mask = 0xffffffff00000000u64;
16433            let maskedval = padval & mask;
16434            if maskedval != 0 {
16435                return Err(fidl::Error::NonZeroPadding {
16436                    padding_start: offset + 0 + ((mask as u64).trailing_zeros() / 8) as usize,
16437                });
16438            }
16439            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(24) };
16440            let padval = unsafe { (ptr as *const u64).read_unaligned() };
16441            let mask = 0xffffffff00000000u64;
16442            let maskedval = padval & mask;
16443            if maskedval != 0 {
16444                return Err(fidl::Error::NonZeroPadding {
16445                    padding_start: offset + 24 + ((mask as u64).trailing_zeros() / 8) as usize,
16446                });
16447            }
16448            fidl::decode!(fidl::encoding::HandleType<fidl::EventPair, { fidl::ObjectType::EVENTPAIR.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect, &mut self.dictionary, decoder, offset + 0, _depth)?;
16449            fidl::decode!(
16450                fidl::encoding::BoundedString<100>,
16451                fidl::encoding::DefaultFuchsiaResourceDialect,
16452                &mut self.key,
16453                decoder,
16454                offset + 8,
16455                _depth
16456            )?;
16457            fidl::decode!(fidl::encoding::HandleType<fidl::EventPair, { fidl::ObjectType::EVENTPAIR.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect, &mut self.value, decoder, offset + 24, _depth)?;
16458            Ok(())
16459        }
16460    }
16461
16462    impl fidl::encoding::ResourceTypeMarker for CapabilitiesDictionaryIterateKeysRequest {
16463        type Borrowed<'a> = &'a mut Self;
16464        fn take_or_borrow<'a>(
16465            value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
16466        ) -> Self::Borrowed<'a> {
16467            value
16468        }
16469    }
16470
16471    unsafe impl fidl::encoding::TypeMarker for CapabilitiesDictionaryIterateKeysRequest {
16472        type Owned = Self;
16473
16474        #[inline(always)]
16475        fn inline_align(_context: fidl::encoding::Context) -> usize {
16476            4
16477        }
16478
16479        #[inline(always)]
16480        fn inline_size(_context: fidl::encoding::Context) -> usize {
16481            8
16482        }
16483    }
16484
16485    unsafe impl
16486        fidl::encoding::Encode<
16487            CapabilitiesDictionaryIterateKeysRequest,
16488            fidl::encoding::DefaultFuchsiaResourceDialect,
16489        > for &mut CapabilitiesDictionaryIterateKeysRequest
16490    {
16491        #[inline]
16492        unsafe fn encode(
16493            self,
16494            encoder: &mut fidl::encoding::Encoder<
16495                '_,
16496                fidl::encoding::DefaultFuchsiaResourceDialect,
16497            >,
16498            offset: usize,
16499            _depth: fidl::encoding::Depth,
16500        ) -> fidl::Result<()> {
16501            encoder.debug_check_bounds::<CapabilitiesDictionaryIterateKeysRequest>(offset);
16502            // Delegate to tuple encoding.
16503            fidl::encoding::Encode::<
16504                CapabilitiesDictionaryIterateKeysRequest,
16505                fidl::encoding::DefaultFuchsiaResourceDialect,
16506            >::encode(
16507                (
16508                    <fidl::encoding::HandleType<
16509                        fidl::EventPair,
16510                        { fidl::ObjectType::EVENTPAIR.into_raw() },
16511                        2147483648,
16512                    > as fidl::encoding::ResourceTypeMarker>::take_or_borrow(
16513                        &mut self.dictionary
16514                    ),
16515                    <fidl::encoding::Endpoint<
16516                        fidl::endpoints::ServerEnd<DictionaryKeyIteratorMarker>,
16517                    > as fidl::encoding::ResourceTypeMarker>::take_or_borrow(
16518                        &mut self.key_iterator,
16519                    ),
16520                ),
16521                encoder,
16522                offset,
16523                _depth,
16524            )
16525        }
16526    }
16527    unsafe impl<
16528        T0: fidl::encoding::Encode<
16529                fidl::encoding::HandleType<
16530                    fidl::EventPair,
16531                    { fidl::ObjectType::EVENTPAIR.into_raw() },
16532                    2147483648,
16533                >,
16534                fidl::encoding::DefaultFuchsiaResourceDialect,
16535            >,
16536        T1: fidl::encoding::Encode<
16537                fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<DictionaryKeyIteratorMarker>>,
16538                fidl::encoding::DefaultFuchsiaResourceDialect,
16539            >,
16540    >
16541        fidl::encoding::Encode<
16542            CapabilitiesDictionaryIterateKeysRequest,
16543            fidl::encoding::DefaultFuchsiaResourceDialect,
16544        > for (T0, T1)
16545    {
16546        #[inline]
16547        unsafe fn encode(
16548            self,
16549            encoder: &mut fidl::encoding::Encoder<
16550                '_,
16551                fidl::encoding::DefaultFuchsiaResourceDialect,
16552            >,
16553            offset: usize,
16554            depth: fidl::encoding::Depth,
16555        ) -> fidl::Result<()> {
16556            encoder.debug_check_bounds::<CapabilitiesDictionaryIterateKeysRequest>(offset);
16557            // Zero out padding regions. There's no need to apply masks
16558            // because the unmasked parts will be overwritten by fields.
16559            // Write the fields.
16560            self.0.encode(encoder, offset + 0, depth)?;
16561            self.1.encode(encoder, offset + 4, depth)?;
16562            Ok(())
16563        }
16564    }
16565
16566    impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
16567        for CapabilitiesDictionaryIterateKeysRequest
16568    {
16569        #[inline(always)]
16570        fn new_empty() -> Self {
16571            Self {
16572                dictionary: fidl::new_empty!(fidl::encoding::HandleType<fidl::EventPair, { fidl::ObjectType::EVENTPAIR.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect),
16573                key_iterator: fidl::new_empty!(
16574                    fidl::encoding::Endpoint<
16575                        fidl::endpoints::ServerEnd<DictionaryKeyIteratorMarker>,
16576                    >,
16577                    fidl::encoding::DefaultFuchsiaResourceDialect
16578                ),
16579            }
16580        }
16581
16582        #[inline]
16583        unsafe fn decode(
16584            &mut self,
16585            decoder: &mut fidl::encoding::Decoder<
16586                '_,
16587                fidl::encoding::DefaultFuchsiaResourceDialect,
16588            >,
16589            offset: usize,
16590            _depth: fidl::encoding::Depth,
16591        ) -> fidl::Result<()> {
16592            decoder.debug_check_bounds::<Self>(offset);
16593            // Verify that padding bytes are zero.
16594            fidl::decode!(fidl::encoding::HandleType<fidl::EventPair, { fidl::ObjectType::EVENTPAIR.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect, &mut self.dictionary, decoder, offset + 0, _depth)?;
16595            fidl::decode!(
16596                fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<DictionaryKeyIteratorMarker>>,
16597                fidl::encoding::DefaultFuchsiaResourceDialect,
16598                &mut self.key_iterator,
16599                decoder,
16600                offset + 4,
16601                _depth
16602            )?;
16603            Ok(())
16604        }
16605    }
16606
16607    impl fidl::encoding::ResourceTypeMarker for CapabilitiesDictionaryRouterCreateRequest {
16608        type Borrowed<'a> = &'a mut Self;
16609        fn take_or_borrow<'a>(
16610            value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
16611        ) -> Self::Borrowed<'a> {
16612            value
16613        }
16614    }
16615
16616    unsafe impl fidl::encoding::TypeMarker for CapabilitiesDictionaryRouterCreateRequest {
16617        type Owned = Self;
16618
16619        #[inline(always)]
16620        fn inline_align(_context: fidl::encoding::Context) -> usize {
16621            4
16622        }
16623
16624        #[inline(always)]
16625        fn inline_size(_context: fidl::encoding::Context) -> usize {
16626            8
16627        }
16628    }
16629
16630    unsafe impl
16631        fidl::encoding::Encode<
16632            CapabilitiesDictionaryRouterCreateRequest,
16633            fidl::encoding::DefaultFuchsiaResourceDialect,
16634        > for &mut CapabilitiesDictionaryRouterCreateRequest
16635    {
16636        #[inline]
16637        unsafe fn encode(
16638            self,
16639            encoder: &mut fidl::encoding::Encoder<
16640                '_,
16641                fidl::encoding::DefaultFuchsiaResourceDialect,
16642            >,
16643            offset: usize,
16644            _depth: fidl::encoding::Depth,
16645        ) -> fidl::Result<()> {
16646            encoder.debug_check_bounds::<CapabilitiesDictionaryRouterCreateRequest>(offset);
16647            // Delegate to tuple encoding.
16648            fidl::encoding::Encode::<CapabilitiesDictionaryRouterCreateRequest, fidl::encoding::DefaultFuchsiaResourceDialect>::encode(
16649                (
16650                    <fidl::encoding::HandleType<fidl::EventPair, { fidl::ObjectType::EVENTPAIR.into_raw() }, 2147483648> as fidl::encoding::ResourceTypeMarker>::take_or_borrow(&mut self.router),
16651                    <fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<DictionaryRouterMarker>> as fidl::encoding::ResourceTypeMarker>::take_or_borrow(&mut self.router_client_end),
16652                ),
16653                encoder, offset, _depth
16654            )
16655        }
16656    }
16657    unsafe impl<
16658        T0: fidl::encoding::Encode<
16659                fidl::encoding::HandleType<
16660                    fidl::EventPair,
16661                    { fidl::ObjectType::EVENTPAIR.into_raw() },
16662                    2147483648,
16663                >,
16664                fidl::encoding::DefaultFuchsiaResourceDialect,
16665            >,
16666        T1: fidl::encoding::Encode<
16667                fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<DictionaryRouterMarker>>,
16668                fidl::encoding::DefaultFuchsiaResourceDialect,
16669            >,
16670    >
16671        fidl::encoding::Encode<
16672            CapabilitiesDictionaryRouterCreateRequest,
16673            fidl::encoding::DefaultFuchsiaResourceDialect,
16674        > for (T0, T1)
16675    {
16676        #[inline]
16677        unsafe fn encode(
16678            self,
16679            encoder: &mut fidl::encoding::Encoder<
16680                '_,
16681                fidl::encoding::DefaultFuchsiaResourceDialect,
16682            >,
16683            offset: usize,
16684            depth: fidl::encoding::Depth,
16685        ) -> fidl::Result<()> {
16686            encoder.debug_check_bounds::<CapabilitiesDictionaryRouterCreateRequest>(offset);
16687            // Zero out padding regions. There's no need to apply masks
16688            // because the unmasked parts will be overwritten by fields.
16689            // Write the fields.
16690            self.0.encode(encoder, offset + 0, depth)?;
16691            self.1.encode(encoder, offset + 4, depth)?;
16692            Ok(())
16693        }
16694    }
16695
16696    impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
16697        for CapabilitiesDictionaryRouterCreateRequest
16698    {
16699        #[inline(always)]
16700        fn new_empty() -> Self {
16701            Self {
16702                router: fidl::new_empty!(fidl::encoding::HandleType<fidl::EventPair, { fidl::ObjectType::EVENTPAIR.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect),
16703                router_client_end: fidl::new_empty!(
16704                    fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<DictionaryRouterMarker>>,
16705                    fidl::encoding::DefaultFuchsiaResourceDialect
16706                ),
16707            }
16708        }
16709
16710        #[inline]
16711        unsafe fn decode(
16712            &mut self,
16713            decoder: &mut fidl::encoding::Decoder<
16714                '_,
16715                fidl::encoding::DefaultFuchsiaResourceDialect,
16716            >,
16717            offset: usize,
16718            _depth: fidl::encoding::Depth,
16719        ) -> fidl::Result<()> {
16720            decoder.debug_check_bounds::<Self>(offset);
16721            // Verify that padding bytes are zero.
16722            fidl::decode!(fidl::encoding::HandleType<fidl::EventPair, { fidl::ObjectType::EVENTPAIR.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect, &mut self.router, decoder, offset + 0, _depth)?;
16723            fidl::decode!(
16724                fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<DictionaryRouterMarker>>,
16725                fidl::encoding::DefaultFuchsiaResourceDialect,
16726                &mut self.router_client_end,
16727                decoder,
16728                offset + 4,
16729                _depth
16730            )?;
16731            Ok(())
16732        }
16733    }
16734
16735    impl fidl::encoding::ResourceTypeMarker for CapabilitiesDictionaryRouterRouteRequest {
16736        type Borrowed<'a> = &'a mut Self;
16737        fn take_or_borrow<'a>(
16738            value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
16739        ) -> Self::Borrowed<'a> {
16740            value
16741        }
16742    }
16743
16744    unsafe impl fidl::encoding::TypeMarker for CapabilitiesDictionaryRouterRouteRequest {
16745        type Owned = Self;
16746
16747        #[inline(always)]
16748        fn inline_align(_context: fidl::encoding::Context) -> usize {
16749            8
16750        }
16751
16752        #[inline(always)]
16753        fn inline_size(_context: fidl::encoding::Context) -> usize {
16754            32
16755        }
16756    }
16757
16758    unsafe impl
16759        fidl::encoding::Encode<
16760            CapabilitiesDictionaryRouterRouteRequest,
16761            fidl::encoding::DefaultFuchsiaResourceDialect,
16762        > for &mut CapabilitiesDictionaryRouterRouteRequest
16763    {
16764        #[inline]
16765        unsafe fn encode(
16766            self,
16767            encoder: &mut fidl::encoding::Encoder<
16768                '_,
16769                fidl::encoding::DefaultFuchsiaResourceDialect,
16770            >,
16771            offset: usize,
16772            _depth: fidl::encoding::Depth,
16773        ) -> fidl::Result<()> {
16774            encoder.debug_check_bounds::<CapabilitiesDictionaryRouterRouteRequest>(offset);
16775            // Delegate to tuple encoding.
16776            fidl::encoding::Encode::<
16777                CapabilitiesDictionaryRouterRouteRequest,
16778                fidl::encoding::DefaultFuchsiaResourceDialect,
16779            >::encode(
16780                (
16781                    <fidl::encoding::HandleType<
16782                        fidl::EventPair,
16783                        { fidl::ObjectType::EVENTPAIR.into_raw() },
16784                        2147483648,
16785                    > as fidl::encoding::ResourceTypeMarker>::take_or_borrow(
16786                        &mut self.router
16787                    ),
16788                    <RouteRequest as fidl::encoding::ResourceTypeMarker>::take_or_borrow(
16789                        &mut self.request,
16790                    ),
16791                    <fidl::encoding::HandleType<
16792                        fidl::EventPair,
16793                        { fidl::ObjectType::EVENTPAIR.into_raw() },
16794                        2147483648,
16795                    > as fidl::encoding::ResourceTypeMarker>::take_or_borrow(
16796                        &mut self.instance_token,
16797                    ),
16798                    <fidl::encoding::HandleType<
16799                        fidl::EventPair,
16800                        { fidl::ObjectType::EVENTPAIR.into_raw() },
16801                        2147483648,
16802                    > as fidl::encoding::ResourceTypeMarker>::take_or_borrow(
16803                        &mut self.dictionary
16804                    ),
16805                ),
16806                encoder,
16807                offset,
16808                _depth,
16809            )
16810        }
16811    }
16812    unsafe impl<
16813        T0: fidl::encoding::Encode<
16814                fidl::encoding::HandleType<
16815                    fidl::EventPair,
16816                    { fidl::ObjectType::EVENTPAIR.into_raw() },
16817                    2147483648,
16818                >,
16819                fidl::encoding::DefaultFuchsiaResourceDialect,
16820            >,
16821        T1: fidl::encoding::Encode<RouteRequest, fidl::encoding::DefaultFuchsiaResourceDialect>,
16822        T2: fidl::encoding::Encode<
16823                fidl::encoding::HandleType<
16824                    fidl::EventPair,
16825                    { fidl::ObjectType::EVENTPAIR.into_raw() },
16826                    2147483648,
16827                >,
16828                fidl::encoding::DefaultFuchsiaResourceDialect,
16829            >,
16830        T3: fidl::encoding::Encode<
16831                fidl::encoding::HandleType<
16832                    fidl::EventPair,
16833                    { fidl::ObjectType::EVENTPAIR.into_raw() },
16834                    2147483648,
16835                >,
16836                fidl::encoding::DefaultFuchsiaResourceDialect,
16837            >,
16838    >
16839        fidl::encoding::Encode<
16840            CapabilitiesDictionaryRouterRouteRequest,
16841            fidl::encoding::DefaultFuchsiaResourceDialect,
16842        > for (T0, T1, T2, T3)
16843    {
16844        #[inline]
16845        unsafe fn encode(
16846            self,
16847            encoder: &mut fidl::encoding::Encoder<
16848                '_,
16849                fidl::encoding::DefaultFuchsiaResourceDialect,
16850            >,
16851            offset: usize,
16852            depth: fidl::encoding::Depth,
16853        ) -> fidl::Result<()> {
16854            encoder.debug_check_bounds::<CapabilitiesDictionaryRouterRouteRequest>(offset);
16855            // Zero out padding regions. There's no need to apply masks
16856            // because the unmasked parts will be overwritten by fields.
16857            unsafe {
16858                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(0);
16859                (ptr as *mut u64).write_unaligned(0);
16860            }
16861            // Write the fields.
16862            self.0.encode(encoder, offset + 0, depth)?;
16863            self.1.encode(encoder, offset + 8, depth)?;
16864            self.2.encode(encoder, offset + 24, depth)?;
16865            self.3.encode(encoder, offset + 28, depth)?;
16866            Ok(())
16867        }
16868    }
16869
16870    impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
16871        for CapabilitiesDictionaryRouterRouteRequest
16872    {
16873        #[inline(always)]
16874        fn new_empty() -> Self {
16875            Self {
16876                router: fidl::new_empty!(fidl::encoding::HandleType<fidl::EventPair, { fidl::ObjectType::EVENTPAIR.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect),
16877                request: fidl::new_empty!(
16878                    RouteRequest,
16879                    fidl::encoding::DefaultFuchsiaResourceDialect
16880                ),
16881                instance_token: fidl::new_empty!(fidl::encoding::HandleType<fidl::EventPair, { fidl::ObjectType::EVENTPAIR.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect),
16882                dictionary: fidl::new_empty!(fidl::encoding::HandleType<fidl::EventPair, { fidl::ObjectType::EVENTPAIR.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect),
16883            }
16884        }
16885
16886        #[inline]
16887        unsafe fn decode(
16888            &mut self,
16889            decoder: &mut fidl::encoding::Decoder<
16890                '_,
16891                fidl::encoding::DefaultFuchsiaResourceDialect,
16892            >,
16893            offset: usize,
16894            _depth: fidl::encoding::Depth,
16895        ) -> fidl::Result<()> {
16896            decoder.debug_check_bounds::<Self>(offset);
16897            // Verify that padding bytes are zero.
16898            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(0) };
16899            let padval = unsafe { (ptr as *const u64).read_unaligned() };
16900            let mask = 0xffffffff00000000u64;
16901            let maskedval = padval & mask;
16902            if maskedval != 0 {
16903                return Err(fidl::Error::NonZeroPadding {
16904                    padding_start: offset + 0 + ((mask as u64).trailing_zeros() / 8) as usize,
16905                });
16906            }
16907            fidl::decode!(fidl::encoding::HandleType<fidl::EventPair, { fidl::ObjectType::EVENTPAIR.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect, &mut self.router, decoder, offset + 0, _depth)?;
16908            fidl::decode!(
16909                RouteRequest,
16910                fidl::encoding::DefaultFuchsiaResourceDialect,
16911                &mut self.request,
16912                decoder,
16913                offset + 8,
16914                _depth
16915            )?;
16916            fidl::decode!(fidl::encoding::HandleType<fidl::EventPair, { fidl::ObjectType::EVENTPAIR.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect, &mut self.instance_token, decoder, offset + 24, _depth)?;
16917            fidl::decode!(fidl::encoding::HandleType<fidl::EventPair, { fidl::ObjectType::EVENTPAIR.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect, &mut self.dictionary, decoder, offset + 28, _depth)?;
16918            Ok(())
16919        }
16920    }
16921
16922    impl fidl::encoding::ResourceTypeMarker for CapabilitiesDirConnectorCreateRequest {
16923        type Borrowed<'a> = &'a mut Self;
16924        fn take_or_borrow<'a>(
16925            value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
16926        ) -> Self::Borrowed<'a> {
16927            value
16928        }
16929    }
16930
16931    unsafe impl fidl::encoding::TypeMarker for CapabilitiesDirConnectorCreateRequest {
16932        type Owned = Self;
16933
16934        #[inline(always)]
16935        fn inline_align(_context: fidl::encoding::Context) -> usize {
16936            4
16937        }
16938
16939        #[inline(always)]
16940        fn inline_size(_context: fidl::encoding::Context) -> usize {
16941            8
16942        }
16943    }
16944
16945    unsafe impl
16946        fidl::encoding::Encode<
16947            CapabilitiesDirConnectorCreateRequest,
16948            fidl::encoding::DefaultFuchsiaResourceDialect,
16949        > for &mut CapabilitiesDirConnectorCreateRequest
16950    {
16951        #[inline]
16952        unsafe fn encode(
16953            self,
16954            encoder: &mut fidl::encoding::Encoder<
16955                '_,
16956                fidl::encoding::DefaultFuchsiaResourceDialect,
16957            >,
16958            offset: usize,
16959            _depth: fidl::encoding::Depth,
16960        ) -> fidl::Result<()> {
16961            encoder.debug_check_bounds::<CapabilitiesDirConnectorCreateRequest>(offset);
16962            // Delegate to tuple encoding.
16963            fidl::encoding::Encode::<CapabilitiesDirConnectorCreateRequest, fidl::encoding::DefaultFuchsiaResourceDialect>::encode(
16964                (
16965                    <fidl::encoding::HandleType<fidl::EventPair, { fidl::ObjectType::EVENTPAIR.into_raw() }, 2147483648> as fidl::encoding::ResourceTypeMarker>::take_or_borrow(&mut self.dir_connector),
16966                    <fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<DirReceiverMarker>> as fidl::encoding::ResourceTypeMarker>::take_or_borrow(&mut self.receiver_client_end),
16967                ),
16968                encoder, offset, _depth
16969            )
16970        }
16971    }
16972    unsafe impl<
16973        T0: fidl::encoding::Encode<
16974                fidl::encoding::HandleType<
16975                    fidl::EventPair,
16976                    { fidl::ObjectType::EVENTPAIR.into_raw() },
16977                    2147483648,
16978                >,
16979                fidl::encoding::DefaultFuchsiaResourceDialect,
16980            >,
16981        T1: fidl::encoding::Encode<
16982                fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<DirReceiverMarker>>,
16983                fidl::encoding::DefaultFuchsiaResourceDialect,
16984            >,
16985    >
16986        fidl::encoding::Encode<
16987            CapabilitiesDirConnectorCreateRequest,
16988            fidl::encoding::DefaultFuchsiaResourceDialect,
16989        > for (T0, T1)
16990    {
16991        #[inline]
16992        unsafe fn encode(
16993            self,
16994            encoder: &mut fidl::encoding::Encoder<
16995                '_,
16996                fidl::encoding::DefaultFuchsiaResourceDialect,
16997            >,
16998            offset: usize,
16999            depth: fidl::encoding::Depth,
17000        ) -> fidl::Result<()> {
17001            encoder.debug_check_bounds::<CapabilitiesDirConnectorCreateRequest>(offset);
17002            // Zero out padding regions. There's no need to apply masks
17003            // because the unmasked parts will be overwritten by fields.
17004            // Write the fields.
17005            self.0.encode(encoder, offset + 0, depth)?;
17006            self.1.encode(encoder, offset + 4, depth)?;
17007            Ok(())
17008        }
17009    }
17010
17011    impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
17012        for CapabilitiesDirConnectorCreateRequest
17013    {
17014        #[inline(always)]
17015        fn new_empty() -> Self {
17016            Self {
17017                dir_connector: fidl::new_empty!(fidl::encoding::HandleType<fidl::EventPair, { fidl::ObjectType::EVENTPAIR.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect),
17018                receiver_client_end: fidl::new_empty!(
17019                    fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<DirReceiverMarker>>,
17020                    fidl::encoding::DefaultFuchsiaResourceDialect
17021                ),
17022            }
17023        }
17024
17025        #[inline]
17026        unsafe fn decode(
17027            &mut self,
17028            decoder: &mut fidl::encoding::Decoder<
17029                '_,
17030                fidl::encoding::DefaultFuchsiaResourceDialect,
17031            >,
17032            offset: usize,
17033            _depth: fidl::encoding::Depth,
17034        ) -> fidl::Result<()> {
17035            decoder.debug_check_bounds::<Self>(offset);
17036            // Verify that padding bytes are zero.
17037            fidl::decode!(fidl::encoding::HandleType<fidl::EventPair, { fidl::ObjectType::EVENTPAIR.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect, &mut self.dir_connector, decoder, offset + 0, _depth)?;
17038            fidl::decode!(
17039                fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<DirReceiverMarker>>,
17040                fidl::encoding::DefaultFuchsiaResourceDialect,
17041                &mut self.receiver_client_end,
17042                decoder,
17043                offset + 4,
17044                _depth
17045            )?;
17046            Ok(())
17047        }
17048    }
17049
17050    impl fidl::encoding::ResourceTypeMarker for CapabilitiesDirConnectorRouterCreateRequest {
17051        type Borrowed<'a> = &'a mut Self;
17052        fn take_or_borrow<'a>(
17053            value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
17054        ) -> Self::Borrowed<'a> {
17055            value
17056        }
17057    }
17058
17059    unsafe impl fidl::encoding::TypeMarker for CapabilitiesDirConnectorRouterCreateRequest {
17060        type Owned = Self;
17061
17062        #[inline(always)]
17063        fn inline_align(_context: fidl::encoding::Context) -> usize {
17064            4
17065        }
17066
17067        #[inline(always)]
17068        fn inline_size(_context: fidl::encoding::Context) -> usize {
17069            8
17070        }
17071    }
17072
17073    unsafe impl
17074        fidl::encoding::Encode<
17075            CapabilitiesDirConnectorRouterCreateRequest,
17076            fidl::encoding::DefaultFuchsiaResourceDialect,
17077        > for &mut CapabilitiesDirConnectorRouterCreateRequest
17078    {
17079        #[inline]
17080        unsafe fn encode(
17081            self,
17082            encoder: &mut fidl::encoding::Encoder<
17083                '_,
17084                fidl::encoding::DefaultFuchsiaResourceDialect,
17085            >,
17086            offset: usize,
17087            _depth: fidl::encoding::Depth,
17088        ) -> fidl::Result<()> {
17089            encoder.debug_check_bounds::<CapabilitiesDirConnectorRouterCreateRequest>(offset);
17090            // Delegate to tuple encoding.
17091            fidl::encoding::Encode::<CapabilitiesDirConnectorRouterCreateRequest, fidl::encoding::DefaultFuchsiaResourceDialect>::encode(
17092                (
17093                    <fidl::encoding::HandleType<fidl::EventPair, { fidl::ObjectType::EVENTPAIR.into_raw() }, 2147483648> as fidl::encoding::ResourceTypeMarker>::take_or_borrow(&mut self.router),
17094                    <fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<DirConnectorRouterMarker>> as fidl::encoding::ResourceTypeMarker>::take_or_borrow(&mut self.router_client_end),
17095                ),
17096                encoder, offset, _depth
17097            )
17098        }
17099    }
17100    unsafe impl<
17101        T0: fidl::encoding::Encode<
17102                fidl::encoding::HandleType<
17103                    fidl::EventPair,
17104                    { fidl::ObjectType::EVENTPAIR.into_raw() },
17105                    2147483648,
17106                >,
17107                fidl::encoding::DefaultFuchsiaResourceDialect,
17108            >,
17109        T1: fidl::encoding::Encode<
17110                fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<DirConnectorRouterMarker>>,
17111                fidl::encoding::DefaultFuchsiaResourceDialect,
17112            >,
17113    >
17114        fidl::encoding::Encode<
17115            CapabilitiesDirConnectorRouterCreateRequest,
17116            fidl::encoding::DefaultFuchsiaResourceDialect,
17117        > for (T0, T1)
17118    {
17119        #[inline]
17120        unsafe fn encode(
17121            self,
17122            encoder: &mut fidl::encoding::Encoder<
17123                '_,
17124                fidl::encoding::DefaultFuchsiaResourceDialect,
17125            >,
17126            offset: usize,
17127            depth: fidl::encoding::Depth,
17128        ) -> fidl::Result<()> {
17129            encoder.debug_check_bounds::<CapabilitiesDirConnectorRouterCreateRequest>(offset);
17130            // Zero out padding regions. There's no need to apply masks
17131            // because the unmasked parts will be overwritten by fields.
17132            // Write the fields.
17133            self.0.encode(encoder, offset + 0, depth)?;
17134            self.1.encode(encoder, offset + 4, depth)?;
17135            Ok(())
17136        }
17137    }
17138
17139    impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
17140        for CapabilitiesDirConnectorRouterCreateRequest
17141    {
17142        #[inline(always)]
17143        fn new_empty() -> Self {
17144            Self {
17145                router: fidl::new_empty!(fidl::encoding::HandleType<fidl::EventPair, { fidl::ObjectType::EVENTPAIR.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect),
17146                router_client_end: fidl::new_empty!(
17147                    fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<DirConnectorRouterMarker>>,
17148                    fidl::encoding::DefaultFuchsiaResourceDialect
17149                ),
17150            }
17151        }
17152
17153        #[inline]
17154        unsafe fn decode(
17155            &mut self,
17156            decoder: &mut fidl::encoding::Decoder<
17157                '_,
17158                fidl::encoding::DefaultFuchsiaResourceDialect,
17159            >,
17160            offset: usize,
17161            _depth: fidl::encoding::Depth,
17162        ) -> fidl::Result<()> {
17163            decoder.debug_check_bounds::<Self>(offset);
17164            // Verify that padding bytes are zero.
17165            fidl::decode!(fidl::encoding::HandleType<fidl::EventPair, { fidl::ObjectType::EVENTPAIR.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect, &mut self.router, decoder, offset + 0, _depth)?;
17166            fidl::decode!(
17167                fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<DirConnectorRouterMarker>>,
17168                fidl::encoding::DefaultFuchsiaResourceDialect,
17169                &mut self.router_client_end,
17170                decoder,
17171                offset + 4,
17172                _depth
17173            )?;
17174            Ok(())
17175        }
17176    }
17177
17178    impl fidl::encoding::ResourceTypeMarker for CapabilitiesDirConnectorRouterRouteRequest {
17179        type Borrowed<'a> = &'a mut Self;
17180        fn take_or_borrow<'a>(
17181            value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
17182        ) -> Self::Borrowed<'a> {
17183            value
17184        }
17185    }
17186
17187    unsafe impl fidl::encoding::TypeMarker for CapabilitiesDirConnectorRouterRouteRequest {
17188        type Owned = Self;
17189
17190        #[inline(always)]
17191        fn inline_align(_context: fidl::encoding::Context) -> usize {
17192            8
17193        }
17194
17195        #[inline(always)]
17196        fn inline_size(_context: fidl::encoding::Context) -> usize {
17197            32
17198        }
17199    }
17200
17201    unsafe impl
17202        fidl::encoding::Encode<
17203            CapabilitiesDirConnectorRouterRouteRequest,
17204            fidl::encoding::DefaultFuchsiaResourceDialect,
17205        > for &mut CapabilitiesDirConnectorRouterRouteRequest
17206    {
17207        #[inline]
17208        unsafe fn encode(
17209            self,
17210            encoder: &mut fidl::encoding::Encoder<
17211                '_,
17212                fidl::encoding::DefaultFuchsiaResourceDialect,
17213            >,
17214            offset: usize,
17215            _depth: fidl::encoding::Depth,
17216        ) -> fidl::Result<()> {
17217            encoder.debug_check_bounds::<CapabilitiesDirConnectorRouterRouteRequest>(offset);
17218            // Delegate to tuple encoding.
17219            fidl::encoding::Encode::<
17220                CapabilitiesDirConnectorRouterRouteRequest,
17221                fidl::encoding::DefaultFuchsiaResourceDialect,
17222            >::encode(
17223                (
17224                    <fidl::encoding::HandleType<
17225                        fidl::EventPair,
17226                        { fidl::ObjectType::EVENTPAIR.into_raw() },
17227                        2147483648,
17228                    > as fidl::encoding::ResourceTypeMarker>::take_or_borrow(
17229                        &mut self.router
17230                    ),
17231                    <RouteRequest as fidl::encoding::ResourceTypeMarker>::take_or_borrow(
17232                        &mut self.request,
17233                    ),
17234                    <fidl::encoding::HandleType<
17235                        fidl::EventPair,
17236                        { fidl::ObjectType::EVENTPAIR.into_raw() },
17237                        2147483648,
17238                    > as fidl::encoding::ResourceTypeMarker>::take_or_borrow(
17239                        &mut self.instance_token,
17240                    ),
17241                    <fidl::encoding::HandleType<
17242                        fidl::EventPair,
17243                        { fidl::ObjectType::EVENTPAIR.into_raw() },
17244                        2147483648,
17245                    > as fidl::encoding::ResourceTypeMarker>::take_or_borrow(
17246                        &mut self.dir_connector,
17247                    ),
17248                ),
17249                encoder,
17250                offset,
17251                _depth,
17252            )
17253        }
17254    }
17255    unsafe impl<
17256        T0: fidl::encoding::Encode<
17257                fidl::encoding::HandleType<
17258                    fidl::EventPair,
17259                    { fidl::ObjectType::EVENTPAIR.into_raw() },
17260                    2147483648,
17261                >,
17262                fidl::encoding::DefaultFuchsiaResourceDialect,
17263            >,
17264        T1: fidl::encoding::Encode<RouteRequest, fidl::encoding::DefaultFuchsiaResourceDialect>,
17265        T2: fidl::encoding::Encode<
17266                fidl::encoding::HandleType<
17267                    fidl::EventPair,
17268                    { fidl::ObjectType::EVENTPAIR.into_raw() },
17269                    2147483648,
17270                >,
17271                fidl::encoding::DefaultFuchsiaResourceDialect,
17272            >,
17273        T3: fidl::encoding::Encode<
17274                fidl::encoding::HandleType<
17275                    fidl::EventPair,
17276                    { fidl::ObjectType::EVENTPAIR.into_raw() },
17277                    2147483648,
17278                >,
17279                fidl::encoding::DefaultFuchsiaResourceDialect,
17280            >,
17281    >
17282        fidl::encoding::Encode<
17283            CapabilitiesDirConnectorRouterRouteRequest,
17284            fidl::encoding::DefaultFuchsiaResourceDialect,
17285        > for (T0, T1, T2, T3)
17286    {
17287        #[inline]
17288        unsafe fn encode(
17289            self,
17290            encoder: &mut fidl::encoding::Encoder<
17291                '_,
17292                fidl::encoding::DefaultFuchsiaResourceDialect,
17293            >,
17294            offset: usize,
17295            depth: fidl::encoding::Depth,
17296        ) -> fidl::Result<()> {
17297            encoder.debug_check_bounds::<CapabilitiesDirConnectorRouterRouteRequest>(offset);
17298            // Zero out padding regions. There's no need to apply masks
17299            // because the unmasked parts will be overwritten by fields.
17300            unsafe {
17301                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(0);
17302                (ptr as *mut u64).write_unaligned(0);
17303            }
17304            // Write the fields.
17305            self.0.encode(encoder, offset + 0, depth)?;
17306            self.1.encode(encoder, offset + 8, depth)?;
17307            self.2.encode(encoder, offset + 24, depth)?;
17308            self.3.encode(encoder, offset + 28, depth)?;
17309            Ok(())
17310        }
17311    }
17312
17313    impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
17314        for CapabilitiesDirConnectorRouterRouteRequest
17315    {
17316        #[inline(always)]
17317        fn new_empty() -> Self {
17318            Self {
17319                router: fidl::new_empty!(fidl::encoding::HandleType<fidl::EventPair, { fidl::ObjectType::EVENTPAIR.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect),
17320                request: fidl::new_empty!(
17321                    RouteRequest,
17322                    fidl::encoding::DefaultFuchsiaResourceDialect
17323                ),
17324                instance_token: fidl::new_empty!(fidl::encoding::HandleType<fidl::EventPair, { fidl::ObjectType::EVENTPAIR.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect),
17325                dir_connector: fidl::new_empty!(fidl::encoding::HandleType<fidl::EventPair, { fidl::ObjectType::EVENTPAIR.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect),
17326            }
17327        }
17328
17329        #[inline]
17330        unsafe fn decode(
17331            &mut self,
17332            decoder: &mut fidl::encoding::Decoder<
17333                '_,
17334                fidl::encoding::DefaultFuchsiaResourceDialect,
17335            >,
17336            offset: usize,
17337            _depth: fidl::encoding::Depth,
17338        ) -> fidl::Result<()> {
17339            decoder.debug_check_bounds::<Self>(offset);
17340            // Verify that padding bytes are zero.
17341            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(0) };
17342            let padval = unsafe { (ptr as *const u64).read_unaligned() };
17343            let mask = 0xffffffff00000000u64;
17344            let maskedval = padval & mask;
17345            if maskedval != 0 {
17346                return Err(fidl::Error::NonZeroPadding {
17347                    padding_start: offset + 0 + ((mask as u64).trailing_zeros() / 8) as usize,
17348                });
17349            }
17350            fidl::decode!(fidl::encoding::HandleType<fidl::EventPair, { fidl::ObjectType::EVENTPAIR.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect, &mut self.router, decoder, offset + 0, _depth)?;
17351            fidl::decode!(
17352                RouteRequest,
17353                fidl::encoding::DefaultFuchsiaResourceDialect,
17354                &mut self.request,
17355                decoder,
17356                offset + 8,
17357                _depth
17358            )?;
17359            fidl::decode!(fidl::encoding::HandleType<fidl::EventPair, { fidl::ObjectType::EVENTPAIR.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect, &mut self.instance_token, decoder, offset + 24, _depth)?;
17360            fidl::decode!(fidl::encoding::HandleType<fidl::EventPair, { fidl::ObjectType::EVENTPAIR.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect, &mut self.dir_connector, decoder, offset + 28, _depth)?;
17361            Ok(())
17362        }
17363    }
17364
17365    impl fidl::encoding::ResourceTypeMarker for CapabilitiesInstanceTokenCreateRequest {
17366        type Borrowed<'a> = &'a mut Self;
17367        fn take_or_borrow<'a>(
17368            value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
17369        ) -> Self::Borrowed<'a> {
17370            value
17371        }
17372    }
17373
17374    unsafe impl fidl::encoding::TypeMarker for CapabilitiesInstanceTokenCreateRequest {
17375        type Owned = Self;
17376
17377        #[inline(always)]
17378        fn inline_align(_context: fidl::encoding::Context) -> usize {
17379            4
17380        }
17381
17382        #[inline(always)]
17383        fn inline_size(_context: fidl::encoding::Context) -> usize {
17384            4
17385        }
17386    }
17387
17388    unsafe impl
17389        fidl::encoding::Encode<
17390            CapabilitiesInstanceTokenCreateRequest,
17391            fidl::encoding::DefaultFuchsiaResourceDialect,
17392        > for &mut CapabilitiesInstanceTokenCreateRequest
17393    {
17394        #[inline]
17395        unsafe fn encode(
17396            self,
17397            encoder: &mut fidl::encoding::Encoder<
17398                '_,
17399                fidl::encoding::DefaultFuchsiaResourceDialect,
17400            >,
17401            offset: usize,
17402            _depth: fidl::encoding::Depth,
17403        ) -> fidl::Result<()> {
17404            encoder.debug_check_bounds::<CapabilitiesInstanceTokenCreateRequest>(offset);
17405            // Delegate to tuple encoding.
17406            fidl::encoding::Encode::<
17407                CapabilitiesInstanceTokenCreateRequest,
17408                fidl::encoding::DefaultFuchsiaResourceDialect,
17409            >::encode(
17410                (<fidl::encoding::HandleType<
17411                    fidl::EventPair,
17412                    { fidl::ObjectType::EVENTPAIR.into_raw() },
17413                    2147483648,
17414                > as fidl::encoding::ResourceTypeMarker>::take_or_borrow(
17415                    &mut self.instance_token
17416                ),),
17417                encoder,
17418                offset,
17419                _depth,
17420            )
17421        }
17422    }
17423    unsafe impl<
17424        T0: fidl::encoding::Encode<
17425                fidl::encoding::HandleType<
17426                    fidl::EventPair,
17427                    { fidl::ObjectType::EVENTPAIR.into_raw() },
17428                    2147483648,
17429                >,
17430                fidl::encoding::DefaultFuchsiaResourceDialect,
17431            >,
17432    >
17433        fidl::encoding::Encode<
17434            CapabilitiesInstanceTokenCreateRequest,
17435            fidl::encoding::DefaultFuchsiaResourceDialect,
17436        > for (T0,)
17437    {
17438        #[inline]
17439        unsafe fn encode(
17440            self,
17441            encoder: &mut fidl::encoding::Encoder<
17442                '_,
17443                fidl::encoding::DefaultFuchsiaResourceDialect,
17444            >,
17445            offset: usize,
17446            depth: fidl::encoding::Depth,
17447        ) -> fidl::Result<()> {
17448            encoder.debug_check_bounds::<CapabilitiesInstanceTokenCreateRequest>(offset);
17449            // Zero out padding regions. There's no need to apply masks
17450            // because the unmasked parts will be overwritten by fields.
17451            // Write the fields.
17452            self.0.encode(encoder, offset + 0, depth)?;
17453            Ok(())
17454        }
17455    }
17456
17457    impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
17458        for CapabilitiesInstanceTokenCreateRequest
17459    {
17460        #[inline(always)]
17461        fn new_empty() -> Self {
17462            Self {
17463                instance_token: fidl::new_empty!(fidl::encoding::HandleType<fidl::EventPair, { fidl::ObjectType::EVENTPAIR.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect),
17464            }
17465        }
17466
17467        #[inline]
17468        unsafe fn decode(
17469            &mut self,
17470            decoder: &mut fidl::encoding::Decoder<
17471                '_,
17472                fidl::encoding::DefaultFuchsiaResourceDialect,
17473            >,
17474            offset: usize,
17475            _depth: fidl::encoding::Depth,
17476        ) -> fidl::Result<()> {
17477            decoder.debug_check_bounds::<Self>(offset);
17478            // Verify that padding bytes are zero.
17479            fidl::decode!(fidl::encoding::HandleType<fidl::EventPair, { fidl::ObjectType::EVENTPAIR.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect, &mut self.instance_token, decoder, offset + 0, _depth)?;
17480            Ok(())
17481        }
17482    }
17483
17484    impl fidl::encoding::ResourceTypeMarker for CapabilitiesDictionaryGetResponse {
17485        type Borrowed<'a> = &'a mut Self;
17486        fn take_or_borrow<'a>(
17487            value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
17488        ) -> Self::Borrowed<'a> {
17489            value
17490        }
17491    }
17492
17493    unsafe impl fidl::encoding::TypeMarker for CapabilitiesDictionaryGetResponse {
17494        type Owned = Self;
17495
17496        #[inline(always)]
17497        fn inline_align(_context: fidl::encoding::Context) -> usize {
17498            4
17499        }
17500
17501        #[inline(always)]
17502        fn inline_size(_context: fidl::encoding::Context) -> usize {
17503            4
17504        }
17505    }
17506
17507    unsafe impl
17508        fidl::encoding::Encode<
17509            CapabilitiesDictionaryGetResponse,
17510            fidl::encoding::DefaultFuchsiaResourceDialect,
17511        > for &mut CapabilitiesDictionaryGetResponse
17512    {
17513        #[inline]
17514        unsafe fn encode(
17515            self,
17516            encoder: &mut fidl::encoding::Encoder<
17517                '_,
17518                fidl::encoding::DefaultFuchsiaResourceDialect,
17519            >,
17520            offset: usize,
17521            _depth: fidl::encoding::Depth,
17522        ) -> fidl::Result<()> {
17523            encoder.debug_check_bounds::<CapabilitiesDictionaryGetResponse>(offset);
17524            // Delegate to tuple encoding.
17525            fidl::encoding::Encode::<
17526                CapabilitiesDictionaryGetResponse,
17527                fidl::encoding::DefaultFuchsiaResourceDialect,
17528            >::encode(
17529                (<CapabilityType as fidl::encoding::ValueTypeMarker>::borrow(
17530                    &self.capability_type,
17531                ),),
17532                encoder,
17533                offset,
17534                _depth,
17535            )
17536        }
17537    }
17538    unsafe impl<
17539        T0: fidl::encoding::Encode<CapabilityType, fidl::encoding::DefaultFuchsiaResourceDialect>,
17540    >
17541        fidl::encoding::Encode<
17542            CapabilitiesDictionaryGetResponse,
17543            fidl::encoding::DefaultFuchsiaResourceDialect,
17544        > for (T0,)
17545    {
17546        #[inline]
17547        unsafe fn encode(
17548            self,
17549            encoder: &mut fidl::encoding::Encoder<
17550                '_,
17551                fidl::encoding::DefaultFuchsiaResourceDialect,
17552            >,
17553            offset: usize,
17554            depth: fidl::encoding::Depth,
17555        ) -> fidl::Result<()> {
17556            encoder.debug_check_bounds::<CapabilitiesDictionaryGetResponse>(offset);
17557            // Zero out padding regions. There's no need to apply masks
17558            // because the unmasked parts will be overwritten by fields.
17559            // Write the fields.
17560            self.0.encode(encoder, offset + 0, depth)?;
17561            Ok(())
17562        }
17563    }
17564
17565    impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
17566        for CapabilitiesDictionaryGetResponse
17567    {
17568        #[inline(always)]
17569        fn new_empty() -> Self {
17570            Self {
17571                capability_type: fidl::new_empty!(
17572                    CapabilityType,
17573                    fidl::encoding::DefaultFuchsiaResourceDialect
17574                ),
17575            }
17576        }
17577
17578        #[inline]
17579        unsafe fn decode(
17580            &mut self,
17581            decoder: &mut fidl::encoding::Decoder<
17582                '_,
17583                fidl::encoding::DefaultFuchsiaResourceDialect,
17584            >,
17585            offset: usize,
17586            _depth: fidl::encoding::Depth,
17587        ) -> fidl::Result<()> {
17588            decoder.debug_check_bounds::<Self>(offset);
17589            // Verify that padding bytes are zero.
17590            fidl::decode!(
17591                CapabilityType,
17592                fidl::encoding::DefaultFuchsiaResourceDialect,
17593                &mut self.capability_type,
17594                decoder,
17595                offset + 0,
17596                _depth
17597            )?;
17598            Ok(())
17599        }
17600    }
17601
17602    impl fidl::encoding::ResourceTypeMarker for CapabilitiesDictionaryRemoveResponse {
17603        type Borrowed<'a> = &'a mut Self;
17604        fn take_or_borrow<'a>(
17605            value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
17606        ) -> Self::Borrowed<'a> {
17607            value
17608        }
17609    }
17610
17611    unsafe impl fidl::encoding::TypeMarker for CapabilitiesDictionaryRemoveResponse {
17612        type Owned = Self;
17613
17614        #[inline(always)]
17615        fn inline_align(_context: fidl::encoding::Context) -> usize {
17616            4
17617        }
17618
17619        #[inline(always)]
17620        fn inline_size(_context: fidl::encoding::Context) -> usize {
17621            4
17622        }
17623    }
17624
17625    unsafe impl
17626        fidl::encoding::Encode<
17627            CapabilitiesDictionaryRemoveResponse,
17628            fidl::encoding::DefaultFuchsiaResourceDialect,
17629        > for &mut CapabilitiesDictionaryRemoveResponse
17630    {
17631        #[inline]
17632        unsafe fn encode(
17633            self,
17634            encoder: &mut fidl::encoding::Encoder<
17635                '_,
17636                fidl::encoding::DefaultFuchsiaResourceDialect,
17637            >,
17638            offset: usize,
17639            _depth: fidl::encoding::Depth,
17640        ) -> fidl::Result<()> {
17641            encoder.debug_check_bounds::<CapabilitiesDictionaryRemoveResponse>(offset);
17642            // Delegate to tuple encoding.
17643            fidl::encoding::Encode::<
17644                CapabilitiesDictionaryRemoveResponse,
17645                fidl::encoding::DefaultFuchsiaResourceDialect,
17646            >::encode(
17647                (<CapabilityType as fidl::encoding::ValueTypeMarker>::borrow(
17648                    &self.capability_type,
17649                ),),
17650                encoder,
17651                offset,
17652                _depth,
17653            )
17654        }
17655    }
17656    unsafe impl<
17657        T0: fidl::encoding::Encode<CapabilityType, fidl::encoding::DefaultFuchsiaResourceDialect>,
17658    >
17659        fidl::encoding::Encode<
17660            CapabilitiesDictionaryRemoveResponse,
17661            fidl::encoding::DefaultFuchsiaResourceDialect,
17662        > for (T0,)
17663    {
17664        #[inline]
17665        unsafe fn encode(
17666            self,
17667            encoder: &mut fidl::encoding::Encoder<
17668                '_,
17669                fidl::encoding::DefaultFuchsiaResourceDialect,
17670            >,
17671            offset: usize,
17672            depth: fidl::encoding::Depth,
17673        ) -> fidl::Result<()> {
17674            encoder.debug_check_bounds::<CapabilitiesDictionaryRemoveResponse>(offset);
17675            // Zero out padding regions. There's no need to apply masks
17676            // because the unmasked parts will be overwritten by fields.
17677            // Write the fields.
17678            self.0.encode(encoder, offset + 0, depth)?;
17679            Ok(())
17680        }
17681    }
17682
17683    impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
17684        for CapabilitiesDictionaryRemoveResponse
17685    {
17686        #[inline(always)]
17687        fn new_empty() -> Self {
17688            Self {
17689                capability_type: fidl::new_empty!(
17690                    CapabilityType,
17691                    fidl::encoding::DefaultFuchsiaResourceDialect
17692                ),
17693            }
17694        }
17695
17696        #[inline]
17697        unsafe fn decode(
17698            &mut self,
17699            decoder: &mut fidl::encoding::Decoder<
17700                '_,
17701                fidl::encoding::DefaultFuchsiaResourceDialect,
17702            >,
17703            offset: usize,
17704            _depth: fidl::encoding::Depth,
17705        ) -> fidl::Result<()> {
17706            decoder.debug_check_bounds::<Self>(offset);
17707            // Verify that padding bytes are zero.
17708            fidl::decode!(
17709                CapabilityType,
17710                fidl::encoding::DefaultFuchsiaResourceDialect,
17711                &mut self.capability_type,
17712                decoder,
17713                offset + 0,
17714                _depth
17715            )?;
17716            Ok(())
17717        }
17718    }
17719
17720    impl fidl::encoding::ResourceTypeMarker for CapabilityFactoryCreateConnectorRequest {
17721        type Borrowed<'a> = &'a mut Self;
17722        fn take_or_borrow<'a>(
17723            value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
17724        ) -> Self::Borrowed<'a> {
17725            value
17726        }
17727    }
17728
17729    unsafe impl fidl::encoding::TypeMarker for CapabilityFactoryCreateConnectorRequest {
17730        type Owned = Self;
17731
17732        #[inline(always)]
17733        fn inline_align(_context: fidl::encoding::Context) -> usize {
17734            4
17735        }
17736
17737        #[inline(always)]
17738        fn inline_size(_context: fidl::encoding::Context) -> usize {
17739            8
17740        }
17741    }
17742
17743    unsafe impl
17744        fidl::encoding::Encode<
17745            CapabilityFactoryCreateConnectorRequest,
17746            fidl::encoding::DefaultFuchsiaResourceDialect,
17747        > for &mut CapabilityFactoryCreateConnectorRequest
17748    {
17749        #[inline]
17750        unsafe fn encode(
17751            self,
17752            encoder: &mut fidl::encoding::Encoder<
17753                '_,
17754                fidl::encoding::DefaultFuchsiaResourceDialect,
17755            >,
17756            offset: usize,
17757            _depth: fidl::encoding::Depth,
17758        ) -> fidl::Result<()> {
17759            encoder.debug_check_bounds::<CapabilityFactoryCreateConnectorRequest>(offset);
17760            // Delegate to tuple encoding.
17761            fidl::encoding::Encode::<CapabilityFactoryCreateConnectorRequest, fidl::encoding::DefaultFuchsiaResourceDialect>::encode(
17762                (
17763                    <fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<ReceiverMarker>> as fidl::encoding::ResourceTypeMarker>::take_or_borrow(&mut self.receiver_client_end),
17764                    <fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<ConnectorMarker>> as fidl::encoding::ResourceTypeMarker>::take_or_borrow(&mut self.connector_server_end),
17765                ),
17766                encoder, offset, _depth
17767            )
17768        }
17769    }
17770    unsafe impl<
17771        T0: fidl::encoding::Encode<
17772                fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<ReceiverMarker>>,
17773                fidl::encoding::DefaultFuchsiaResourceDialect,
17774            >,
17775        T1: fidl::encoding::Encode<
17776                fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<ConnectorMarker>>,
17777                fidl::encoding::DefaultFuchsiaResourceDialect,
17778            >,
17779    >
17780        fidl::encoding::Encode<
17781            CapabilityFactoryCreateConnectorRequest,
17782            fidl::encoding::DefaultFuchsiaResourceDialect,
17783        > for (T0, T1)
17784    {
17785        #[inline]
17786        unsafe fn encode(
17787            self,
17788            encoder: &mut fidl::encoding::Encoder<
17789                '_,
17790                fidl::encoding::DefaultFuchsiaResourceDialect,
17791            >,
17792            offset: usize,
17793            depth: fidl::encoding::Depth,
17794        ) -> fidl::Result<()> {
17795            encoder.debug_check_bounds::<CapabilityFactoryCreateConnectorRequest>(offset);
17796            // Zero out padding regions. There's no need to apply masks
17797            // because the unmasked parts will be overwritten by fields.
17798            // Write the fields.
17799            self.0.encode(encoder, offset + 0, depth)?;
17800            self.1.encode(encoder, offset + 4, depth)?;
17801            Ok(())
17802        }
17803    }
17804
17805    impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
17806        for CapabilityFactoryCreateConnectorRequest
17807    {
17808        #[inline(always)]
17809        fn new_empty() -> Self {
17810            Self {
17811                receiver_client_end: fidl::new_empty!(
17812                    fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<ReceiverMarker>>,
17813                    fidl::encoding::DefaultFuchsiaResourceDialect
17814                ),
17815                connector_server_end: fidl::new_empty!(
17816                    fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<ConnectorMarker>>,
17817                    fidl::encoding::DefaultFuchsiaResourceDialect
17818                ),
17819            }
17820        }
17821
17822        #[inline]
17823        unsafe fn decode(
17824            &mut self,
17825            decoder: &mut fidl::encoding::Decoder<
17826                '_,
17827                fidl::encoding::DefaultFuchsiaResourceDialect,
17828            >,
17829            offset: usize,
17830            _depth: fidl::encoding::Depth,
17831        ) -> fidl::Result<()> {
17832            decoder.debug_check_bounds::<Self>(offset);
17833            // Verify that padding bytes are zero.
17834            fidl::decode!(
17835                fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<ReceiverMarker>>,
17836                fidl::encoding::DefaultFuchsiaResourceDialect,
17837                &mut self.receiver_client_end,
17838                decoder,
17839                offset + 0,
17840                _depth
17841            )?;
17842            fidl::decode!(
17843                fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<ConnectorMarker>>,
17844                fidl::encoding::DefaultFuchsiaResourceDialect,
17845                &mut self.connector_server_end,
17846                decoder,
17847                offset + 4,
17848                _depth
17849            )?;
17850            Ok(())
17851        }
17852    }
17853
17854    impl fidl::encoding::ResourceTypeMarker for CapabilityFactoryCreateConnectorRouterRequest {
17855        type Borrowed<'a> = &'a mut Self;
17856        fn take_or_borrow<'a>(
17857            value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
17858        ) -> Self::Borrowed<'a> {
17859            value
17860        }
17861    }
17862
17863    unsafe impl fidl::encoding::TypeMarker for CapabilityFactoryCreateConnectorRouterRequest {
17864        type Owned = Self;
17865
17866        #[inline(always)]
17867        fn inline_align(_context: fidl::encoding::Context) -> usize {
17868            4
17869        }
17870
17871        #[inline(always)]
17872        fn inline_size(_context: fidl::encoding::Context) -> usize {
17873            8
17874        }
17875    }
17876
17877    unsafe impl
17878        fidl::encoding::Encode<
17879            CapabilityFactoryCreateConnectorRouterRequest,
17880            fidl::encoding::DefaultFuchsiaResourceDialect,
17881        > for &mut CapabilityFactoryCreateConnectorRouterRequest
17882    {
17883        #[inline]
17884        unsafe fn encode(
17885            self,
17886            encoder: &mut fidl::encoding::Encoder<
17887                '_,
17888                fidl::encoding::DefaultFuchsiaResourceDialect,
17889            >,
17890            offset: usize,
17891            _depth: fidl::encoding::Depth,
17892        ) -> fidl::Result<()> {
17893            encoder.debug_check_bounds::<CapabilityFactoryCreateConnectorRouterRequest>(offset);
17894            // Delegate to tuple encoding.
17895            fidl::encoding::Encode::<
17896                CapabilityFactoryCreateConnectorRouterRequest,
17897                fidl::encoding::DefaultFuchsiaResourceDialect,
17898            >::encode(
17899                (
17900                    <fidl::encoding::Endpoint<
17901                        fidl::endpoints::ClientEnd<ConnectorRouterDeprecatedMarker>,
17902                    > as fidl::encoding::ResourceTypeMarker>::take_or_borrow(
17903                        &mut self.router_client_end,
17904                    ),
17905                    <fidl::encoding::Endpoint<
17906                        fidl::endpoints::ServerEnd<ConnectorRouterDeprecatedMarker>,
17907                    > as fidl::encoding::ResourceTypeMarker>::take_or_borrow(
17908                        &mut self.router_server_end,
17909                    ),
17910                ),
17911                encoder,
17912                offset,
17913                _depth,
17914            )
17915        }
17916    }
17917    unsafe impl<
17918        T0: fidl::encoding::Encode<
17919                fidl::encoding::Endpoint<
17920                    fidl::endpoints::ClientEnd<ConnectorRouterDeprecatedMarker>,
17921                >,
17922                fidl::encoding::DefaultFuchsiaResourceDialect,
17923            >,
17924        T1: fidl::encoding::Encode<
17925                fidl::encoding::Endpoint<
17926                    fidl::endpoints::ServerEnd<ConnectorRouterDeprecatedMarker>,
17927                >,
17928                fidl::encoding::DefaultFuchsiaResourceDialect,
17929            >,
17930    >
17931        fidl::encoding::Encode<
17932            CapabilityFactoryCreateConnectorRouterRequest,
17933            fidl::encoding::DefaultFuchsiaResourceDialect,
17934        > for (T0, T1)
17935    {
17936        #[inline]
17937        unsafe fn encode(
17938            self,
17939            encoder: &mut fidl::encoding::Encoder<
17940                '_,
17941                fidl::encoding::DefaultFuchsiaResourceDialect,
17942            >,
17943            offset: usize,
17944            depth: fidl::encoding::Depth,
17945        ) -> fidl::Result<()> {
17946            encoder.debug_check_bounds::<CapabilityFactoryCreateConnectorRouterRequest>(offset);
17947            // Zero out padding regions. There's no need to apply masks
17948            // because the unmasked parts will be overwritten by fields.
17949            // Write the fields.
17950            self.0.encode(encoder, offset + 0, depth)?;
17951            self.1.encode(encoder, offset + 4, depth)?;
17952            Ok(())
17953        }
17954    }
17955
17956    impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
17957        for CapabilityFactoryCreateConnectorRouterRequest
17958    {
17959        #[inline(always)]
17960        fn new_empty() -> Self {
17961            Self {
17962                router_client_end: fidl::new_empty!(
17963                    fidl::encoding::Endpoint<
17964                        fidl::endpoints::ClientEnd<ConnectorRouterDeprecatedMarker>,
17965                    >,
17966                    fidl::encoding::DefaultFuchsiaResourceDialect
17967                ),
17968                router_server_end: fidl::new_empty!(
17969                    fidl::encoding::Endpoint<
17970                        fidl::endpoints::ServerEnd<ConnectorRouterDeprecatedMarker>,
17971                    >,
17972                    fidl::encoding::DefaultFuchsiaResourceDialect
17973                ),
17974            }
17975        }
17976
17977        #[inline]
17978        unsafe fn decode(
17979            &mut self,
17980            decoder: &mut fidl::encoding::Decoder<
17981                '_,
17982                fidl::encoding::DefaultFuchsiaResourceDialect,
17983            >,
17984            offset: usize,
17985            _depth: fidl::encoding::Depth,
17986        ) -> fidl::Result<()> {
17987            decoder.debug_check_bounds::<Self>(offset);
17988            // Verify that padding bytes are zero.
17989            fidl::decode!(
17990                fidl::encoding::Endpoint<
17991                    fidl::endpoints::ClientEnd<ConnectorRouterDeprecatedMarker>,
17992                >,
17993                fidl::encoding::DefaultFuchsiaResourceDialect,
17994                &mut self.router_client_end,
17995                decoder,
17996                offset + 0,
17997                _depth
17998            )?;
17999            fidl::decode!(
18000                fidl::encoding::Endpoint<
18001                    fidl::endpoints::ServerEnd<ConnectorRouterDeprecatedMarker>,
18002                >,
18003                fidl::encoding::DefaultFuchsiaResourceDialect,
18004                &mut self.router_server_end,
18005                decoder,
18006                offset + 4,
18007                _depth
18008            )?;
18009            Ok(())
18010        }
18011    }
18012
18013    impl fidl::encoding::ResourceTypeMarker for CapabilityFactoryCreateDataRouterRequest {
18014        type Borrowed<'a> = &'a mut Self;
18015        fn take_or_borrow<'a>(
18016            value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
18017        ) -> Self::Borrowed<'a> {
18018            value
18019        }
18020    }
18021
18022    unsafe impl fidl::encoding::TypeMarker for CapabilityFactoryCreateDataRouterRequest {
18023        type Owned = Self;
18024
18025        #[inline(always)]
18026        fn inline_align(_context: fidl::encoding::Context) -> usize {
18027            4
18028        }
18029
18030        #[inline(always)]
18031        fn inline_size(_context: fidl::encoding::Context) -> usize {
18032            8
18033        }
18034    }
18035
18036    unsafe impl
18037        fidl::encoding::Encode<
18038            CapabilityFactoryCreateDataRouterRequest,
18039            fidl::encoding::DefaultFuchsiaResourceDialect,
18040        > for &mut CapabilityFactoryCreateDataRouterRequest
18041    {
18042        #[inline]
18043        unsafe fn encode(
18044            self,
18045            encoder: &mut fidl::encoding::Encoder<
18046                '_,
18047                fidl::encoding::DefaultFuchsiaResourceDialect,
18048            >,
18049            offset: usize,
18050            _depth: fidl::encoding::Depth,
18051        ) -> fidl::Result<()> {
18052            encoder.debug_check_bounds::<CapabilityFactoryCreateDataRouterRequest>(offset);
18053            // Delegate to tuple encoding.
18054            fidl::encoding::Encode::<
18055                CapabilityFactoryCreateDataRouterRequest,
18056                fidl::encoding::DefaultFuchsiaResourceDialect,
18057            >::encode(
18058                (
18059                    <fidl::encoding::Endpoint<
18060                        fidl::endpoints::ClientEnd<DataRouterDeprecatedMarker>,
18061                    > as fidl::encoding::ResourceTypeMarker>::take_or_borrow(
18062                        &mut self.router_client_end,
18063                    ),
18064                    <fidl::encoding::Endpoint<
18065                        fidl::endpoints::ServerEnd<DataRouterDeprecatedMarker>,
18066                    > as fidl::encoding::ResourceTypeMarker>::take_or_borrow(
18067                        &mut self.router_server_end,
18068                    ),
18069                ),
18070                encoder,
18071                offset,
18072                _depth,
18073            )
18074        }
18075    }
18076    unsafe impl<
18077        T0: fidl::encoding::Encode<
18078                fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<DataRouterDeprecatedMarker>>,
18079                fidl::encoding::DefaultFuchsiaResourceDialect,
18080            >,
18081        T1: fidl::encoding::Encode<
18082                fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<DataRouterDeprecatedMarker>>,
18083                fidl::encoding::DefaultFuchsiaResourceDialect,
18084            >,
18085    >
18086        fidl::encoding::Encode<
18087            CapabilityFactoryCreateDataRouterRequest,
18088            fidl::encoding::DefaultFuchsiaResourceDialect,
18089        > for (T0, T1)
18090    {
18091        #[inline]
18092        unsafe fn encode(
18093            self,
18094            encoder: &mut fidl::encoding::Encoder<
18095                '_,
18096                fidl::encoding::DefaultFuchsiaResourceDialect,
18097            >,
18098            offset: usize,
18099            depth: fidl::encoding::Depth,
18100        ) -> fidl::Result<()> {
18101            encoder.debug_check_bounds::<CapabilityFactoryCreateDataRouterRequest>(offset);
18102            // Zero out padding regions. There's no need to apply masks
18103            // because the unmasked parts will be overwritten by fields.
18104            // Write the fields.
18105            self.0.encode(encoder, offset + 0, depth)?;
18106            self.1.encode(encoder, offset + 4, depth)?;
18107            Ok(())
18108        }
18109    }
18110
18111    impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
18112        for CapabilityFactoryCreateDataRouterRequest
18113    {
18114        #[inline(always)]
18115        fn new_empty() -> Self {
18116            Self {
18117                router_client_end: fidl::new_empty!(
18118                    fidl::encoding::Endpoint<
18119                        fidl::endpoints::ClientEnd<DataRouterDeprecatedMarker>,
18120                    >,
18121                    fidl::encoding::DefaultFuchsiaResourceDialect
18122                ),
18123                router_server_end: fidl::new_empty!(
18124                    fidl::encoding::Endpoint<
18125                        fidl::endpoints::ServerEnd<DataRouterDeprecatedMarker>,
18126                    >,
18127                    fidl::encoding::DefaultFuchsiaResourceDialect
18128                ),
18129            }
18130        }
18131
18132        #[inline]
18133        unsafe fn decode(
18134            &mut self,
18135            decoder: &mut fidl::encoding::Decoder<
18136                '_,
18137                fidl::encoding::DefaultFuchsiaResourceDialect,
18138            >,
18139            offset: usize,
18140            _depth: fidl::encoding::Depth,
18141        ) -> fidl::Result<()> {
18142            decoder.debug_check_bounds::<Self>(offset);
18143            // Verify that padding bytes are zero.
18144            fidl::decode!(
18145                fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<DataRouterDeprecatedMarker>>,
18146                fidl::encoding::DefaultFuchsiaResourceDialect,
18147                &mut self.router_client_end,
18148                decoder,
18149                offset + 0,
18150                _depth
18151            )?;
18152            fidl::decode!(
18153                fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<DataRouterDeprecatedMarker>>,
18154                fidl::encoding::DefaultFuchsiaResourceDialect,
18155                &mut self.router_server_end,
18156                decoder,
18157                offset + 4,
18158                _depth
18159            )?;
18160            Ok(())
18161        }
18162    }
18163
18164    impl fidl::encoding::ResourceTypeMarker for CapabilityFactoryCreateDictionaryRequest {
18165        type Borrowed<'a> = &'a mut Self;
18166        fn take_or_borrow<'a>(
18167            value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
18168        ) -> Self::Borrowed<'a> {
18169            value
18170        }
18171    }
18172
18173    unsafe impl fidl::encoding::TypeMarker for CapabilityFactoryCreateDictionaryRequest {
18174        type Owned = Self;
18175
18176        #[inline(always)]
18177        fn inline_align(_context: fidl::encoding::Context) -> usize {
18178            4
18179        }
18180
18181        #[inline(always)]
18182        fn inline_size(_context: fidl::encoding::Context) -> usize {
18183            4
18184        }
18185    }
18186
18187    unsafe impl
18188        fidl::encoding::Encode<
18189            CapabilityFactoryCreateDictionaryRequest,
18190            fidl::encoding::DefaultFuchsiaResourceDialect,
18191        > for &mut CapabilityFactoryCreateDictionaryRequest
18192    {
18193        #[inline]
18194        unsafe fn encode(
18195            self,
18196            encoder: &mut fidl::encoding::Encoder<
18197                '_,
18198                fidl::encoding::DefaultFuchsiaResourceDialect,
18199            >,
18200            offset: usize,
18201            _depth: fidl::encoding::Depth,
18202        ) -> fidl::Result<()> {
18203            encoder.debug_check_bounds::<CapabilityFactoryCreateDictionaryRequest>(offset);
18204            // Delegate to tuple encoding.
18205            fidl::encoding::Encode::<CapabilityFactoryCreateDictionaryRequest, fidl::encoding::DefaultFuchsiaResourceDialect>::encode(
18206                (
18207                    <fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<DictionaryMarker>> as fidl::encoding::ResourceTypeMarker>::take_or_borrow(&mut self.dictionary_server_end),
18208                ),
18209                encoder, offset, _depth
18210            )
18211        }
18212    }
18213    unsafe impl<
18214        T0: fidl::encoding::Encode<
18215                fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<DictionaryMarker>>,
18216                fidl::encoding::DefaultFuchsiaResourceDialect,
18217            >,
18218    >
18219        fidl::encoding::Encode<
18220            CapabilityFactoryCreateDictionaryRequest,
18221            fidl::encoding::DefaultFuchsiaResourceDialect,
18222        > for (T0,)
18223    {
18224        #[inline]
18225        unsafe fn encode(
18226            self,
18227            encoder: &mut fidl::encoding::Encoder<
18228                '_,
18229                fidl::encoding::DefaultFuchsiaResourceDialect,
18230            >,
18231            offset: usize,
18232            depth: fidl::encoding::Depth,
18233        ) -> fidl::Result<()> {
18234            encoder.debug_check_bounds::<CapabilityFactoryCreateDictionaryRequest>(offset);
18235            // Zero out padding regions. There's no need to apply masks
18236            // because the unmasked parts will be overwritten by fields.
18237            // Write the fields.
18238            self.0.encode(encoder, offset + 0, depth)?;
18239            Ok(())
18240        }
18241    }
18242
18243    impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
18244        for CapabilityFactoryCreateDictionaryRequest
18245    {
18246        #[inline(always)]
18247        fn new_empty() -> Self {
18248            Self {
18249                dictionary_server_end: fidl::new_empty!(
18250                    fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<DictionaryMarker>>,
18251                    fidl::encoding::DefaultFuchsiaResourceDialect
18252                ),
18253            }
18254        }
18255
18256        #[inline]
18257        unsafe fn decode(
18258            &mut self,
18259            decoder: &mut fidl::encoding::Decoder<
18260                '_,
18261                fidl::encoding::DefaultFuchsiaResourceDialect,
18262            >,
18263            offset: usize,
18264            _depth: fidl::encoding::Depth,
18265        ) -> fidl::Result<()> {
18266            decoder.debug_check_bounds::<Self>(offset);
18267            // Verify that padding bytes are zero.
18268            fidl::decode!(
18269                fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<DictionaryMarker>>,
18270                fidl::encoding::DefaultFuchsiaResourceDialect,
18271                &mut self.dictionary_server_end,
18272                decoder,
18273                offset + 0,
18274                _depth
18275            )?;
18276            Ok(())
18277        }
18278    }
18279
18280    impl fidl::encoding::ResourceTypeMarker for CapabilityFactoryCreateDictionaryRouterRequest {
18281        type Borrowed<'a> = &'a mut Self;
18282        fn take_or_borrow<'a>(
18283            value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
18284        ) -> Self::Borrowed<'a> {
18285            value
18286        }
18287    }
18288
18289    unsafe impl fidl::encoding::TypeMarker for CapabilityFactoryCreateDictionaryRouterRequest {
18290        type Owned = Self;
18291
18292        #[inline(always)]
18293        fn inline_align(_context: fidl::encoding::Context) -> usize {
18294            4
18295        }
18296
18297        #[inline(always)]
18298        fn inline_size(_context: fidl::encoding::Context) -> usize {
18299            8
18300        }
18301    }
18302
18303    unsafe impl
18304        fidl::encoding::Encode<
18305            CapabilityFactoryCreateDictionaryRouterRequest,
18306            fidl::encoding::DefaultFuchsiaResourceDialect,
18307        > for &mut CapabilityFactoryCreateDictionaryRouterRequest
18308    {
18309        #[inline]
18310        unsafe fn encode(
18311            self,
18312            encoder: &mut fidl::encoding::Encoder<
18313                '_,
18314                fidl::encoding::DefaultFuchsiaResourceDialect,
18315            >,
18316            offset: usize,
18317            _depth: fidl::encoding::Depth,
18318        ) -> fidl::Result<()> {
18319            encoder.debug_check_bounds::<CapabilityFactoryCreateDictionaryRouterRequest>(offset);
18320            // Delegate to tuple encoding.
18321            fidl::encoding::Encode::<
18322                CapabilityFactoryCreateDictionaryRouterRequest,
18323                fidl::encoding::DefaultFuchsiaResourceDialect,
18324            >::encode(
18325                (
18326                    <fidl::encoding::Endpoint<
18327                        fidl::endpoints::ClientEnd<DictionaryRouterDeprecatedMarker>,
18328                    > as fidl::encoding::ResourceTypeMarker>::take_or_borrow(
18329                        &mut self.router_client_end,
18330                    ),
18331                    <fidl::encoding::Endpoint<
18332                        fidl::endpoints::ServerEnd<DictionaryRouterDeprecatedMarker>,
18333                    > as fidl::encoding::ResourceTypeMarker>::take_or_borrow(
18334                        &mut self.router_server_end,
18335                    ),
18336                ),
18337                encoder,
18338                offset,
18339                _depth,
18340            )
18341        }
18342    }
18343    unsafe impl<
18344        T0: fidl::encoding::Encode<
18345                fidl::encoding::Endpoint<
18346                    fidl::endpoints::ClientEnd<DictionaryRouterDeprecatedMarker>,
18347                >,
18348                fidl::encoding::DefaultFuchsiaResourceDialect,
18349            >,
18350        T1: fidl::encoding::Encode<
18351                fidl::encoding::Endpoint<
18352                    fidl::endpoints::ServerEnd<DictionaryRouterDeprecatedMarker>,
18353                >,
18354                fidl::encoding::DefaultFuchsiaResourceDialect,
18355            >,
18356    >
18357        fidl::encoding::Encode<
18358            CapabilityFactoryCreateDictionaryRouterRequest,
18359            fidl::encoding::DefaultFuchsiaResourceDialect,
18360        > for (T0, T1)
18361    {
18362        #[inline]
18363        unsafe fn encode(
18364            self,
18365            encoder: &mut fidl::encoding::Encoder<
18366                '_,
18367                fidl::encoding::DefaultFuchsiaResourceDialect,
18368            >,
18369            offset: usize,
18370            depth: fidl::encoding::Depth,
18371        ) -> fidl::Result<()> {
18372            encoder.debug_check_bounds::<CapabilityFactoryCreateDictionaryRouterRequest>(offset);
18373            // Zero out padding regions. There's no need to apply masks
18374            // because the unmasked parts will be overwritten by fields.
18375            // Write the fields.
18376            self.0.encode(encoder, offset + 0, depth)?;
18377            self.1.encode(encoder, offset + 4, depth)?;
18378            Ok(())
18379        }
18380    }
18381
18382    impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
18383        for CapabilityFactoryCreateDictionaryRouterRequest
18384    {
18385        #[inline(always)]
18386        fn new_empty() -> Self {
18387            Self {
18388                router_client_end: fidl::new_empty!(
18389                    fidl::encoding::Endpoint<
18390                        fidl::endpoints::ClientEnd<DictionaryRouterDeprecatedMarker>,
18391                    >,
18392                    fidl::encoding::DefaultFuchsiaResourceDialect
18393                ),
18394                router_server_end: fidl::new_empty!(
18395                    fidl::encoding::Endpoint<
18396                        fidl::endpoints::ServerEnd<DictionaryRouterDeprecatedMarker>,
18397                    >,
18398                    fidl::encoding::DefaultFuchsiaResourceDialect
18399                ),
18400            }
18401        }
18402
18403        #[inline]
18404        unsafe fn decode(
18405            &mut self,
18406            decoder: &mut fidl::encoding::Decoder<
18407                '_,
18408                fidl::encoding::DefaultFuchsiaResourceDialect,
18409            >,
18410            offset: usize,
18411            _depth: fidl::encoding::Depth,
18412        ) -> fidl::Result<()> {
18413            decoder.debug_check_bounds::<Self>(offset);
18414            // Verify that padding bytes are zero.
18415            fidl::decode!(
18416                fidl::encoding::Endpoint<
18417                    fidl::endpoints::ClientEnd<DictionaryRouterDeprecatedMarker>,
18418                >,
18419                fidl::encoding::DefaultFuchsiaResourceDialect,
18420                &mut self.router_client_end,
18421                decoder,
18422                offset + 0,
18423                _depth
18424            )?;
18425            fidl::decode!(
18426                fidl::encoding::Endpoint<
18427                    fidl::endpoints::ServerEnd<DictionaryRouterDeprecatedMarker>,
18428                >,
18429                fidl::encoding::DefaultFuchsiaResourceDialect,
18430                &mut self.router_server_end,
18431                decoder,
18432                offset + 4,
18433                _depth
18434            )?;
18435            Ok(())
18436        }
18437    }
18438
18439    impl fidl::encoding::ResourceTypeMarker for CapabilityFactoryCreateDirConnectorRequest {
18440        type Borrowed<'a> = &'a mut Self;
18441        fn take_or_borrow<'a>(
18442            value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
18443        ) -> Self::Borrowed<'a> {
18444            value
18445        }
18446    }
18447
18448    unsafe impl fidl::encoding::TypeMarker for CapabilityFactoryCreateDirConnectorRequest {
18449        type Owned = Self;
18450
18451        #[inline(always)]
18452        fn inline_align(_context: fidl::encoding::Context) -> usize {
18453            4
18454        }
18455
18456        #[inline(always)]
18457        fn inline_size(_context: fidl::encoding::Context) -> usize {
18458            8
18459        }
18460    }
18461
18462    unsafe impl
18463        fidl::encoding::Encode<
18464            CapabilityFactoryCreateDirConnectorRequest,
18465            fidl::encoding::DefaultFuchsiaResourceDialect,
18466        > for &mut CapabilityFactoryCreateDirConnectorRequest
18467    {
18468        #[inline]
18469        unsafe fn encode(
18470            self,
18471            encoder: &mut fidl::encoding::Encoder<
18472                '_,
18473                fidl::encoding::DefaultFuchsiaResourceDialect,
18474            >,
18475            offset: usize,
18476            _depth: fidl::encoding::Depth,
18477        ) -> fidl::Result<()> {
18478            encoder.debug_check_bounds::<CapabilityFactoryCreateDirConnectorRequest>(offset);
18479            // Delegate to tuple encoding.
18480            fidl::encoding::Encode::<CapabilityFactoryCreateDirConnectorRequest, fidl::encoding::DefaultFuchsiaResourceDialect>::encode(
18481                (
18482                    <fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<DirReceiverDeprecatedMarker>> as fidl::encoding::ResourceTypeMarker>::take_or_borrow(&mut self.dir_receiver_client_end),
18483                    <fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<DirConnectorMarker>> as fidl::encoding::ResourceTypeMarker>::take_or_borrow(&mut self.dir_connector_server_end),
18484                ),
18485                encoder, offset, _depth
18486            )
18487        }
18488    }
18489    unsafe impl<
18490        T0: fidl::encoding::Encode<
18491                fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<DirReceiverDeprecatedMarker>>,
18492                fidl::encoding::DefaultFuchsiaResourceDialect,
18493            >,
18494        T1: fidl::encoding::Encode<
18495                fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<DirConnectorMarker>>,
18496                fidl::encoding::DefaultFuchsiaResourceDialect,
18497            >,
18498    >
18499        fidl::encoding::Encode<
18500            CapabilityFactoryCreateDirConnectorRequest,
18501            fidl::encoding::DefaultFuchsiaResourceDialect,
18502        > for (T0, T1)
18503    {
18504        #[inline]
18505        unsafe fn encode(
18506            self,
18507            encoder: &mut fidl::encoding::Encoder<
18508                '_,
18509                fidl::encoding::DefaultFuchsiaResourceDialect,
18510            >,
18511            offset: usize,
18512            depth: fidl::encoding::Depth,
18513        ) -> fidl::Result<()> {
18514            encoder.debug_check_bounds::<CapabilityFactoryCreateDirConnectorRequest>(offset);
18515            // Zero out padding regions. There's no need to apply masks
18516            // because the unmasked parts will be overwritten by fields.
18517            // Write the fields.
18518            self.0.encode(encoder, offset + 0, depth)?;
18519            self.1.encode(encoder, offset + 4, depth)?;
18520            Ok(())
18521        }
18522    }
18523
18524    impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
18525        for CapabilityFactoryCreateDirConnectorRequest
18526    {
18527        #[inline(always)]
18528        fn new_empty() -> Self {
18529            Self {
18530                dir_receiver_client_end: fidl::new_empty!(
18531                    fidl::encoding::Endpoint<
18532                        fidl::endpoints::ClientEnd<DirReceiverDeprecatedMarker>,
18533                    >,
18534                    fidl::encoding::DefaultFuchsiaResourceDialect
18535                ),
18536                dir_connector_server_end: fidl::new_empty!(
18537                    fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<DirConnectorMarker>>,
18538                    fidl::encoding::DefaultFuchsiaResourceDialect
18539                ),
18540            }
18541        }
18542
18543        #[inline]
18544        unsafe fn decode(
18545            &mut self,
18546            decoder: &mut fidl::encoding::Decoder<
18547                '_,
18548                fidl::encoding::DefaultFuchsiaResourceDialect,
18549            >,
18550            offset: usize,
18551            _depth: fidl::encoding::Depth,
18552        ) -> fidl::Result<()> {
18553            decoder.debug_check_bounds::<Self>(offset);
18554            // Verify that padding bytes are zero.
18555            fidl::decode!(
18556                fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<DirReceiverDeprecatedMarker>>,
18557                fidl::encoding::DefaultFuchsiaResourceDialect,
18558                &mut self.dir_receiver_client_end,
18559                decoder,
18560                offset + 0,
18561                _depth
18562            )?;
18563            fidl::decode!(
18564                fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<DirConnectorMarker>>,
18565                fidl::encoding::DefaultFuchsiaResourceDialect,
18566                &mut self.dir_connector_server_end,
18567                decoder,
18568                offset + 4,
18569                _depth
18570            )?;
18571            Ok(())
18572        }
18573    }
18574
18575    impl fidl::encoding::ResourceTypeMarker for CapabilityFactoryCreateDirConnectorRouterRequest {
18576        type Borrowed<'a> = &'a mut Self;
18577        fn take_or_borrow<'a>(
18578            value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
18579        ) -> Self::Borrowed<'a> {
18580            value
18581        }
18582    }
18583
18584    unsafe impl fidl::encoding::TypeMarker for CapabilityFactoryCreateDirConnectorRouterRequest {
18585        type Owned = Self;
18586
18587        #[inline(always)]
18588        fn inline_align(_context: fidl::encoding::Context) -> usize {
18589            4
18590        }
18591
18592        #[inline(always)]
18593        fn inline_size(_context: fidl::encoding::Context) -> usize {
18594            8
18595        }
18596    }
18597
18598    unsafe impl
18599        fidl::encoding::Encode<
18600            CapabilityFactoryCreateDirConnectorRouterRequest,
18601            fidl::encoding::DefaultFuchsiaResourceDialect,
18602        > for &mut CapabilityFactoryCreateDirConnectorRouterRequest
18603    {
18604        #[inline]
18605        unsafe fn encode(
18606            self,
18607            encoder: &mut fidl::encoding::Encoder<
18608                '_,
18609                fidl::encoding::DefaultFuchsiaResourceDialect,
18610            >,
18611            offset: usize,
18612            _depth: fidl::encoding::Depth,
18613        ) -> fidl::Result<()> {
18614            encoder.debug_check_bounds::<CapabilityFactoryCreateDirConnectorRouterRequest>(offset);
18615            // Delegate to tuple encoding.
18616            fidl::encoding::Encode::<
18617                CapabilityFactoryCreateDirConnectorRouterRequest,
18618                fidl::encoding::DefaultFuchsiaResourceDialect,
18619            >::encode(
18620                (
18621                    <fidl::encoding::Endpoint<
18622                        fidl::endpoints::ClientEnd<DirConnectorRouterDeprecatedMarker>,
18623                    > as fidl::encoding::ResourceTypeMarker>::take_or_borrow(
18624                        &mut self.router_client_end,
18625                    ),
18626                    <fidl::encoding::Endpoint<
18627                        fidl::endpoints::ServerEnd<DirConnectorRouterDeprecatedMarker>,
18628                    > as fidl::encoding::ResourceTypeMarker>::take_or_borrow(
18629                        &mut self.router_server_end,
18630                    ),
18631                ),
18632                encoder,
18633                offset,
18634                _depth,
18635            )
18636        }
18637    }
18638    unsafe impl<
18639        T0: fidl::encoding::Encode<
18640                fidl::encoding::Endpoint<
18641                    fidl::endpoints::ClientEnd<DirConnectorRouterDeprecatedMarker>,
18642                >,
18643                fidl::encoding::DefaultFuchsiaResourceDialect,
18644            >,
18645        T1: fidl::encoding::Encode<
18646                fidl::encoding::Endpoint<
18647                    fidl::endpoints::ServerEnd<DirConnectorRouterDeprecatedMarker>,
18648                >,
18649                fidl::encoding::DefaultFuchsiaResourceDialect,
18650            >,
18651    >
18652        fidl::encoding::Encode<
18653            CapabilityFactoryCreateDirConnectorRouterRequest,
18654            fidl::encoding::DefaultFuchsiaResourceDialect,
18655        > for (T0, T1)
18656    {
18657        #[inline]
18658        unsafe fn encode(
18659            self,
18660            encoder: &mut fidl::encoding::Encoder<
18661                '_,
18662                fidl::encoding::DefaultFuchsiaResourceDialect,
18663            >,
18664            offset: usize,
18665            depth: fidl::encoding::Depth,
18666        ) -> fidl::Result<()> {
18667            encoder.debug_check_bounds::<CapabilityFactoryCreateDirConnectorRouterRequest>(offset);
18668            // Zero out padding regions. There's no need to apply masks
18669            // because the unmasked parts will be overwritten by fields.
18670            // Write the fields.
18671            self.0.encode(encoder, offset + 0, depth)?;
18672            self.1.encode(encoder, offset + 4, depth)?;
18673            Ok(())
18674        }
18675    }
18676
18677    impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
18678        for CapabilityFactoryCreateDirConnectorRouterRequest
18679    {
18680        #[inline(always)]
18681        fn new_empty() -> Self {
18682            Self {
18683                router_client_end: fidl::new_empty!(
18684                    fidl::encoding::Endpoint<
18685                        fidl::endpoints::ClientEnd<DirConnectorRouterDeprecatedMarker>,
18686                    >,
18687                    fidl::encoding::DefaultFuchsiaResourceDialect
18688                ),
18689                router_server_end: fidl::new_empty!(
18690                    fidl::encoding::Endpoint<
18691                        fidl::endpoints::ServerEnd<DirConnectorRouterDeprecatedMarker>,
18692                    >,
18693                    fidl::encoding::DefaultFuchsiaResourceDialect
18694                ),
18695            }
18696        }
18697
18698        #[inline]
18699        unsafe fn decode(
18700            &mut self,
18701            decoder: &mut fidl::encoding::Decoder<
18702                '_,
18703                fidl::encoding::DefaultFuchsiaResourceDialect,
18704            >,
18705            offset: usize,
18706            _depth: fidl::encoding::Depth,
18707        ) -> fidl::Result<()> {
18708            decoder.debug_check_bounds::<Self>(offset);
18709            // Verify that padding bytes are zero.
18710            fidl::decode!(
18711                fidl::encoding::Endpoint<
18712                    fidl::endpoints::ClientEnd<DirConnectorRouterDeprecatedMarker>,
18713                >,
18714                fidl::encoding::DefaultFuchsiaResourceDialect,
18715                &mut self.router_client_end,
18716                decoder,
18717                offset + 0,
18718                _depth
18719            )?;
18720            fidl::decode!(
18721                fidl::encoding::Endpoint<
18722                    fidl::endpoints::ServerEnd<DirConnectorRouterDeprecatedMarker>,
18723                >,
18724                fidl::encoding::DefaultFuchsiaResourceDialect,
18725                &mut self.router_server_end,
18726                decoder,
18727                offset + 4,
18728                _depth
18729            )?;
18730            Ok(())
18731        }
18732    }
18733
18734    impl fidl::encoding::ResourceTypeMarker for ConnectorConnectRequest {
18735        type Borrowed<'a> = &'a mut Self;
18736        fn take_or_borrow<'a>(
18737            value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
18738        ) -> Self::Borrowed<'a> {
18739            value
18740        }
18741    }
18742
18743    unsafe impl fidl::encoding::TypeMarker for ConnectorConnectRequest {
18744        type Owned = Self;
18745
18746        #[inline(always)]
18747        fn inline_align(_context: fidl::encoding::Context) -> usize {
18748            4
18749        }
18750
18751        #[inline(always)]
18752        fn inline_size(_context: fidl::encoding::Context) -> usize {
18753            4
18754        }
18755    }
18756
18757    unsafe impl
18758        fidl::encoding::Encode<
18759            ConnectorConnectRequest,
18760            fidl::encoding::DefaultFuchsiaResourceDialect,
18761        > for &mut ConnectorConnectRequest
18762    {
18763        #[inline]
18764        unsafe fn encode(
18765            self,
18766            encoder: &mut fidl::encoding::Encoder<
18767                '_,
18768                fidl::encoding::DefaultFuchsiaResourceDialect,
18769            >,
18770            offset: usize,
18771            _depth: fidl::encoding::Depth,
18772        ) -> fidl::Result<()> {
18773            encoder.debug_check_bounds::<ConnectorConnectRequest>(offset);
18774            // Delegate to tuple encoding.
18775            fidl::encoding::Encode::<
18776                ConnectorConnectRequest,
18777                fidl::encoding::DefaultFuchsiaResourceDialect,
18778            >::encode(
18779                (<fidl::encoding::HandleType<
18780                    fidl::Channel,
18781                    { fidl::ObjectType::CHANNEL.into_raw() },
18782                    2147483648,
18783                > as fidl::encoding::ResourceTypeMarker>::take_or_borrow(
18784                    &mut self.channel
18785                ),),
18786                encoder,
18787                offset,
18788                _depth,
18789            )
18790        }
18791    }
18792    unsafe impl<
18793        T0: fidl::encoding::Encode<
18794                fidl::encoding::HandleType<
18795                    fidl::Channel,
18796                    { fidl::ObjectType::CHANNEL.into_raw() },
18797                    2147483648,
18798                >,
18799                fidl::encoding::DefaultFuchsiaResourceDialect,
18800            >,
18801    >
18802        fidl::encoding::Encode<
18803            ConnectorConnectRequest,
18804            fidl::encoding::DefaultFuchsiaResourceDialect,
18805        > for (T0,)
18806    {
18807        #[inline]
18808        unsafe fn encode(
18809            self,
18810            encoder: &mut fidl::encoding::Encoder<
18811                '_,
18812                fidl::encoding::DefaultFuchsiaResourceDialect,
18813            >,
18814            offset: usize,
18815            depth: fidl::encoding::Depth,
18816        ) -> fidl::Result<()> {
18817            encoder.debug_check_bounds::<ConnectorConnectRequest>(offset);
18818            // Zero out padding regions. There's no need to apply masks
18819            // because the unmasked parts will be overwritten by fields.
18820            // Write the fields.
18821            self.0.encode(encoder, offset + 0, depth)?;
18822            Ok(())
18823        }
18824    }
18825
18826    impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
18827        for ConnectorConnectRequest
18828    {
18829        #[inline(always)]
18830        fn new_empty() -> Self {
18831            Self {
18832                channel: fidl::new_empty!(fidl::encoding::HandleType<fidl::Channel, { fidl::ObjectType::CHANNEL.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect),
18833            }
18834        }
18835
18836        #[inline]
18837        unsafe fn decode(
18838            &mut self,
18839            decoder: &mut fidl::encoding::Decoder<
18840                '_,
18841                fidl::encoding::DefaultFuchsiaResourceDialect,
18842            >,
18843            offset: usize,
18844            _depth: fidl::encoding::Depth,
18845        ) -> fidl::Result<()> {
18846            decoder.debug_check_bounds::<Self>(offset);
18847            // Verify that padding bytes are zero.
18848            fidl::decode!(fidl::encoding::HandleType<fidl::Channel, { fidl::ObjectType::CHANNEL.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect, &mut self.channel, decoder, offset + 0, _depth)?;
18849            Ok(())
18850        }
18851    }
18852
18853    impl fidl::encoding::ResourceTypeMarker for ConnectorRouterDeprecatedRouteRequest {
18854        type Borrowed<'a> = &'a mut Self;
18855        fn take_or_borrow<'a>(
18856            value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
18857        ) -> Self::Borrowed<'a> {
18858            value
18859        }
18860    }
18861
18862    unsafe impl fidl::encoding::TypeMarker for ConnectorRouterDeprecatedRouteRequest {
18863        type Owned = Self;
18864
18865        #[inline(always)]
18866        fn inline_align(_context: fidl::encoding::Context) -> usize {
18867            8
18868        }
18869
18870        #[inline(always)]
18871        fn inline_size(_context: fidl::encoding::Context) -> usize {
18872            24
18873        }
18874    }
18875
18876    unsafe impl
18877        fidl::encoding::Encode<
18878            ConnectorRouterDeprecatedRouteRequest,
18879            fidl::encoding::DefaultFuchsiaResourceDialect,
18880        > for &mut ConnectorRouterDeprecatedRouteRequest
18881    {
18882        #[inline]
18883        unsafe fn encode(
18884            self,
18885            encoder: &mut fidl::encoding::Encoder<
18886                '_,
18887                fidl::encoding::DefaultFuchsiaResourceDialect,
18888            >,
18889            offset: usize,
18890            _depth: fidl::encoding::Depth,
18891        ) -> fidl::Result<()> {
18892            encoder.debug_check_bounds::<ConnectorRouterDeprecatedRouteRequest>(offset);
18893            // Delegate to tuple encoding.
18894            fidl::encoding::Encode::<ConnectorRouterDeprecatedRouteRequest, fidl::encoding::DefaultFuchsiaResourceDialect>::encode(
18895                (
18896                    <DeprecatedRouteRequest as fidl::encoding::ResourceTypeMarker>::take_or_borrow(&mut self.request),
18897                    <fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<ConnectorMarker>> as fidl::encoding::ResourceTypeMarker>::take_or_borrow(&mut self.connector_server_end),
18898                ),
18899                encoder, offset, _depth
18900            )
18901        }
18902    }
18903    unsafe impl<
18904        T0: fidl::encoding::Encode<
18905                DeprecatedRouteRequest,
18906                fidl::encoding::DefaultFuchsiaResourceDialect,
18907            >,
18908        T1: fidl::encoding::Encode<
18909                fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<ConnectorMarker>>,
18910                fidl::encoding::DefaultFuchsiaResourceDialect,
18911            >,
18912    >
18913        fidl::encoding::Encode<
18914            ConnectorRouterDeprecatedRouteRequest,
18915            fidl::encoding::DefaultFuchsiaResourceDialect,
18916        > for (T0, T1)
18917    {
18918        #[inline]
18919        unsafe fn encode(
18920            self,
18921            encoder: &mut fidl::encoding::Encoder<
18922                '_,
18923                fidl::encoding::DefaultFuchsiaResourceDialect,
18924            >,
18925            offset: usize,
18926            depth: fidl::encoding::Depth,
18927        ) -> fidl::Result<()> {
18928            encoder.debug_check_bounds::<ConnectorRouterDeprecatedRouteRequest>(offset);
18929            // Zero out padding regions. There's no need to apply masks
18930            // because the unmasked parts will be overwritten by fields.
18931            unsafe {
18932                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(16);
18933                (ptr as *mut u64).write_unaligned(0);
18934            }
18935            // Write the fields.
18936            self.0.encode(encoder, offset + 0, depth)?;
18937            self.1.encode(encoder, offset + 16, depth)?;
18938            Ok(())
18939        }
18940    }
18941
18942    impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
18943        for ConnectorRouterDeprecatedRouteRequest
18944    {
18945        #[inline(always)]
18946        fn new_empty() -> Self {
18947            Self {
18948                request: fidl::new_empty!(
18949                    DeprecatedRouteRequest,
18950                    fidl::encoding::DefaultFuchsiaResourceDialect
18951                ),
18952                connector_server_end: fidl::new_empty!(
18953                    fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<ConnectorMarker>>,
18954                    fidl::encoding::DefaultFuchsiaResourceDialect
18955                ),
18956            }
18957        }
18958
18959        #[inline]
18960        unsafe fn decode(
18961            &mut self,
18962            decoder: &mut fidl::encoding::Decoder<
18963                '_,
18964                fidl::encoding::DefaultFuchsiaResourceDialect,
18965            >,
18966            offset: usize,
18967            _depth: fidl::encoding::Depth,
18968        ) -> fidl::Result<()> {
18969            decoder.debug_check_bounds::<Self>(offset);
18970            // Verify that padding bytes are zero.
18971            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(16) };
18972            let padval = unsafe { (ptr as *const u64).read_unaligned() };
18973            let mask = 0xffffffff00000000u64;
18974            let maskedval = padval & mask;
18975            if maskedval != 0 {
18976                return Err(fidl::Error::NonZeroPadding {
18977                    padding_start: offset + 16 + ((mask as u64).trailing_zeros() / 8) as usize,
18978                });
18979            }
18980            fidl::decode!(
18981                DeprecatedRouteRequest,
18982                fidl::encoding::DefaultFuchsiaResourceDialect,
18983                &mut self.request,
18984                decoder,
18985                offset + 0,
18986                _depth
18987            )?;
18988            fidl::decode!(
18989                fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<ConnectorMarker>>,
18990                fidl::encoding::DefaultFuchsiaResourceDialect,
18991                &mut self.connector_server_end,
18992                decoder,
18993                offset + 16,
18994                _depth
18995            )?;
18996            Ok(())
18997        }
18998    }
18999
19000    impl fidl::encoding::ResourceTypeMarker for ConnectorRouterDeprecatedRouteResponse {
19001        type Borrowed<'a> = &'a mut Self;
19002        fn take_or_borrow<'a>(
19003            value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
19004        ) -> Self::Borrowed<'a> {
19005            value
19006        }
19007    }
19008
19009    unsafe impl fidl::encoding::TypeMarker for ConnectorRouterDeprecatedRouteResponse {
19010        type Owned = Self;
19011
19012        #[inline(always)]
19013        fn inline_align(_context: fidl::encoding::Context) -> usize {
19014            4
19015        }
19016
19017        #[inline(always)]
19018        fn inline_size(_context: fidl::encoding::Context) -> usize {
19019            4
19020        }
19021    }
19022
19023    unsafe impl
19024        fidl::encoding::Encode<
19025            ConnectorRouterDeprecatedRouteResponse,
19026            fidl::encoding::DefaultFuchsiaResourceDialect,
19027        > for &mut ConnectorRouterDeprecatedRouteResponse
19028    {
19029        #[inline]
19030        unsafe fn encode(
19031            self,
19032            encoder: &mut fidl::encoding::Encoder<
19033                '_,
19034                fidl::encoding::DefaultFuchsiaResourceDialect,
19035            >,
19036            offset: usize,
19037            _depth: fidl::encoding::Depth,
19038        ) -> fidl::Result<()> {
19039            encoder.debug_check_bounds::<ConnectorRouterDeprecatedRouteResponse>(offset);
19040            // Delegate to tuple encoding.
19041            fidl::encoding::Encode::<
19042                ConnectorRouterDeprecatedRouteResponse,
19043                fidl::encoding::DefaultFuchsiaResourceDialect,
19044            >::encode(
19045                (<RouterResponse as fidl::encoding::ValueTypeMarker>::borrow(&self.response),),
19046                encoder,
19047                offset,
19048                _depth,
19049            )
19050        }
19051    }
19052    unsafe impl<
19053        T0: fidl::encoding::Encode<RouterResponse, fidl::encoding::DefaultFuchsiaResourceDialect>,
19054    >
19055        fidl::encoding::Encode<
19056            ConnectorRouterDeprecatedRouteResponse,
19057            fidl::encoding::DefaultFuchsiaResourceDialect,
19058        > for (T0,)
19059    {
19060        #[inline]
19061        unsafe fn encode(
19062            self,
19063            encoder: &mut fidl::encoding::Encoder<
19064                '_,
19065                fidl::encoding::DefaultFuchsiaResourceDialect,
19066            >,
19067            offset: usize,
19068            depth: fidl::encoding::Depth,
19069        ) -> fidl::Result<()> {
19070            encoder.debug_check_bounds::<ConnectorRouterDeprecatedRouteResponse>(offset);
19071            // Zero out padding regions. There's no need to apply masks
19072            // because the unmasked parts will be overwritten by fields.
19073            // Write the fields.
19074            self.0.encode(encoder, offset + 0, depth)?;
19075            Ok(())
19076        }
19077    }
19078
19079    impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
19080        for ConnectorRouterDeprecatedRouteResponse
19081    {
19082        #[inline(always)]
19083        fn new_empty() -> Self {
19084            Self {
19085                response: fidl::new_empty!(
19086                    RouterResponse,
19087                    fidl::encoding::DefaultFuchsiaResourceDialect
19088                ),
19089            }
19090        }
19091
19092        #[inline]
19093        unsafe fn decode(
19094            &mut self,
19095            decoder: &mut fidl::encoding::Decoder<
19096                '_,
19097                fidl::encoding::DefaultFuchsiaResourceDialect,
19098            >,
19099            offset: usize,
19100            _depth: fidl::encoding::Depth,
19101        ) -> fidl::Result<()> {
19102            decoder.debug_check_bounds::<Self>(offset);
19103            // Verify that padding bytes are zero.
19104            fidl::decode!(
19105                RouterResponse,
19106                fidl::encoding::DefaultFuchsiaResourceDialect,
19107                &mut self.response,
19108                decoder,
19109                offset + 0,
19110                _depth
19111            )?;
19112            Ok(())
19113        }
19114    }
19115
19116    impl fidl::encoding::ResourceTypeMarker for ConnectorRouterRouteRequest {
19117        type Borrowed<'a> = &'a mut Self;
19118        fn take_or_borrow<'a>(
19119            value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
19120        ) -> Self::Borrowed<'a> {
19121            value
19122        }
19123    }
19124
19125    unsafe impl fidl::encoding::TypeMarker for ConnectorRouterRouteRequest {
19126        type Owned = Self;
19127
19128        #[inline(always)]
19129        fn inline_align(_context: fidl::encoding::Context) -> usize {
19130            8
19131        }
19132
19133        #[inline(always)]
19134        fn inline_size(_context: fidl::encoding::Context) -> usize {
19135            24
19136        }
19137    }
19138
19139    unsafe impl
19140        fidl::encoding::Encode<
19141            ConnectorRouterRouteRequest,
19142            fidl::encoding::DefaultFuchsiaResourceDialect,
19143        > for &mut ConnectorRouterRouteRequest
19144    {
19145        #[inline]
19146        unsafe fn encode(
19147            self,
19148            encoder: &mut fidl::encoding::Encoder<
19149                '_,
19150                fidl::encoding::DefaultFuchsiaResourceDialect,
19151            >,
19152            offset: usize,
19153            _depth: fidl::encoding::Depth,
19154        ) -> fidl::Result<()> {
19155            encoder.debug_check_bounds::<ConnectorRouterRouteRequest>(offset);
19156            // Delegate to tuple encoding.
19157            fidl::encoding::Encode::<
19158                ConnectorRouterRouteRequest,
19159                fidl::encoding::DefaultFuchsiaResourceDialect,
19160            >::encode(
19161                (
19162                    <RouteRequest as fidl::encoding::ResourceTypeMarker>::take_or_borrow(
19163                        &mut self.request,
19164                    ),
19165                    <fidl::encoding::HandleType<
19166                        fidl::EventPair,
19167                        { fidl::ObjectType::EVENTPAIR.into_raw() },
19168                        2147483648,
19169                    > as fidl::encoding::ResourceTypeMarker>::take_or_borrow(
19170                        &mut self.instance_token,
19171                    ),
19172                    <fidl::encoding::HandleType<
19173                        fidl::EventPair,
19174                        { fidl::ObjectType::EVENTPAIR.into_raw() },
19175                        2147483648,
19176                    > as fidl::encoding::ResourceTypeMarker>::take_or_borrow(
19177                        &mut self.handle
19178                    ),
19179                ),
19180                encoder,
19181                offset,
19182                _depth,
19183            )
19184        }
19185    }
19186    unsafe impl<
19187        T0: fidl::encoding::Encode<RouteRequest, fidl::encoding::DefaultFuchsiaResourceDialect>,
19188        T1: fidl::encoding::Encode<
19189                fidl::encoding::HandleType<
19190                    fidl::EventPair,
19191                    { fidl::ObjectType::EVENTPAIR.into_raw() },
19192                    2147483648,
19193                >,
19194                fidl::encoding::DefaultFuchsiaResourceDialect,
19195            >,
19196        T2: fidl::encoding::Encode<
19197                fidl::encoding::HandleType<
19198                    fidl::EventPair,
19199                    { fidl::ObjectType::EVENTPAIR.into_raw() },
19200                    2147483648,
19201                >,
19202                fidl::encoding::DefaultFuchsiaResourceDialect,
19203            >,
19204    >
19205        fidl::encoding::Encode<
19206            ConnectorRouterRouteRequest,
19207            fidl::encoding::DefaultFuchsiaResourceDialect,
19208        > for (T0, T1, T2)
19209    {
19210        #[inline]
19211        unsafe fn encode(
19212            self,
19213            encoder: &mut fidl::encoding::Encoder<
19214                '_,
19215                fidl::encoding::DefaultFuchsiaResourceDialect,
19216            >,
19217            offset: usize,
19218            depth: fidl::encoding::Depth,
19219        ) -> fidl::Result<()> {
19220            encoder.debug_check_bounds::<ConnectorRouterRouteRequest>(offset);
19221            // Zero out padding regions. There's no need to apply masks
19222            // because the unmasked parts will be overwritten by fields.
19223            // Write the fields.
19224            self.0.encode(encoder, offset + 0, depth)?;
19225            self.1.encode(encoder, offset + 16, depth)?;
19226            self.2.encode(encoder, offset + 20, depth)?;
19227            Ok(())
19228        }
19229    }
19230
19231    impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
19232        for ConnectorRouterRouteRequest
19233    {
19234        #[inline(always)]
19235        fn new_empty() -> Self {
19236            Self {
19237                request: fidl::new_empty!(
19238                    RouteRequest,
19239                    fidl::encoding::DefaultFuchsiaResourceDialect
19240                ),
19241                instance_token: fidl::new_empty!(fidl::encoding::HandleType<fidl::EventPair, { fidl::ObjectType::EVENTPAIR.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect),
19242                handle: fidl::new_empty!(fidl::encoding::HandleType<fidl::EventPair, { fidl::ObjectType::EVENTPAIR.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect),
19243            }
19244        }
19245
19246        #[inline]
19247        unsafe fn decode(
19248            &mut self,
19249            decoder: &mut fidl::encoding::Decoder<
19250                '_,
19251                fidl::encoding::DefaultFuchsiaResourceDialect,
19252            >,
19253            offset: usize,
19254            _depth: fidl::encoding::Depth,
19255        ) -> fidl::Result<()> {
19256            decoder.debug_check_bounds::<Self>(offset);
19257            // Verify that padding bytes are zero.
19258            fidl::decode!(
19259                RouteRequest,
19260                fidl::encoding::DefaultFuchsiaResourceDialect,
19261                &mut self.request,
19262                decoder,
19263                offset + 0,
19264                _depth
19265            )?;
19266            fidl::decode!(fidl::encoding::HandleType<fidl::EventPair, { fidl::ObjectType::EVENTPAIR.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect, &mut self.instance_token, decoder, offset + 16, _depth)?;
19267            fidl::decode!(fidl::encoding::HandleType<fidl::EventPair, { fidl::ObjectType::EVENTPAIR.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect, &mut self.handle, decoder, offset + 20, _depth)?;
19268            Ok(())
19269        }
19270    }
19271
19272    impl fidl::encoding::ResourceTypeMarker for DataRouterDeprecatedRouteRequest {
19273        type Borrowed<'a> = &'a mut Self;
19274        fn take_or_borrow<'a>(
19275            value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
19276        ) -> Self::Borrowed<'a> {
19277            value
19278        }
19279    }
19280
19281    unsafe impl fidl::encoding::TypeMarker for DataRouterDeprecatedRouteRequest {
19282        type Owned = Self;
19283
19284        #[inline(always)]
19285        fn inline_align(_context: fidl::encoding::Context) -> usize {
19286            8
19287        }
19288
19289        #[inline(always)]
19290        fn inline_size(_context: fidl::encoding::Context) -> usize {
19291            16
19292        }
19293    }
19294
19295    unsafe impl
19296        fidl::encoding::Encode<
19297            DataRouterDeprecatedRouteRequest,
19298            fidl::encoding::DefaultFuchsiaResourceDialect,
19299        > for &mut DataRouterDeprecatedRouteRequest
19300    {
19301        #[inline]
19302        unsafe fn encode(
19303            self,
19304            encoder: &mut fidl::encoding::Encoder<
19305                '_,
19306                fidl::encoding::DefaultFuchsiaResourceDialect,
19307            >,
19308            offset: usize,
19309            _depth: fidl::encoding::Depth,
19310        ) -> fidl::Result<()> {
19311            encoder.debug_check_bounds::<DataRouterDeprecatedRouteRequest>(offset);
19312            // Delegate to tuple encoding.
19313            fidl::encoding::Encode::<
19314                DataRouterDeprecatedRouteRequest,
19315                fidl::encoding::DefaultFuchsiaResourceDialect,
19316            >::encode(
19317                (<DeprecatedRouteRequest as fidl::encoding::ResourceTypeMarker>::take_or_borrow(
19318                    &mut self.request,
19319                ),),
19320                encoder,
19321                offset,
19322                _depth,
19323            )
19324        }
19325    }
19326    unsafe impl<
19327        T0: fidl::encoding::Encode<
19328                DeprecatedRouteRequest,
19329                fidl::encoding::DefaultFuchsiaResourceDialect,
19330            >,
19331    >
19332        fidl::encoding::Encode<
19333            DataRouterDeprecatedRouteRequest,
19334            fidl::encoding::DefaultFuchsiaResourceDialect,
19335        > for (T0,)
19336    {
19337        #[inline]
19338        unsafe fn encode(
19339            self,
19340            encoder: &mut fidl::encoding::Encoder<
19341                '_,
19342                fidl::encoding::DefaultFuchsiaResourceDialect,
19343            >,
19344            offset: usize,
19345            depth: fidl::encoding::Depth,
19346        ) -> fidl::Result<()> {
19347            encoder.debug_check_bounds::<DataRouterDeprecatedRouteRequest>(offset);
19348            // Zero out padding regions. There's no need to apply masks
19349            // because the unmasked parts will be overwritten by fields.
19350            // Write the fields.
19351            self.0.encode(encoder, offset + 0, depth)?;
19352            Ok(())
19353        }
19354    }
19355
19356    impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
19357        for DataRouterDeprecatedRouteRequest
19358    {
19359        #[inline(always)]
19360        fn new_empty() -> Self {
19361            Self {
19362                request: fidl::new_empty!(
19363                    DeprecatedRouteRequest,
19364                    fidl::encoding::DefaultFuchsiaResourceDialect
19365                ),
19366            }
19367        }
19368
19369        #[inline]
19370        unsafe fn decode(
19371            &mut self,
19372            decoder: &mut fidl::encoding::Decoder<
19373                '_,
19374                fidl::encoding::DefaultFuchsiaResourceDialect,
19375            >,
19376            offset: usize,
19377            _depth: fidl::encoding::Depth,
19378        ) -> fidl::Result<()> {
19379            decoder.debug_check_bounds::<Self>(offset);
19380            // Verify that padding bytes are zero.
19381            fidl::decode!(
19382                DeprecatedRouteRequest,
19383                fidl::encoding::DefaultFuchsiaResourceDialect,
19384                &mut self.request,
19385                decoder,
19386                offset + 0,
19387                _depth
19388            )?;
19389            Ok(())
19390        }
19391    }
19392
19393    impl fidl::encoding::ResourceTypeMarker for DataRouterDeprecatedRouteResponse {
19394        type Borrowed<'a> = &'a mut Self;
19395        fn take_or_borrow<'a>(
19396            value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
19397        ) -> Self::Borrowed<'a> {
19398            value
19399        }
19400    }
19401
19402    unsafe impl fidl::encoding::TypeMarker for DataRouterDeprecatedRouteResponse {
19403        type Owned = Self;
19404
19405        #[inline(always)]
19406        fn inline_align(_context: fidl::encoding::Context) -> usize {
19407            8
19408        }
19409
19410        #[inline(always)]
19411        fn inline_size(_context: fidl::encoding::Context) -> usize {
19412            24
19413        }
19414    }
19415
19416    unsafe impl
19417        fidl::encoding::Encode<
19418            DataRouterDeprecatedRouteResponse,
19419            fidl::encoding::DefaultFuchsiaResourceDialect,
19420        > for &mut DataRouterDeprecatedRouteResponse
19421    {
19422        #[inline]
19423        unsafe fn encode(
19424            self,
19425            encoder: &mut fidl::encoding::Encoder<
19426                '_,
19427                fidl::encoding::DefaultFuchsiaResourceDialect,
19428            >,
19429            offset: usize,
19430            _depth: fidl::encoding::Depth,
19431        ) -> fidl::Result<()> {
19432            encoder.debug_check_bounds::<DataRouterDeprecatedRouteResponse>(offset);
19433            // Delegate to tuple encoding.
19434            fidl::encoding::Encode::<DataRouterDeprecatedRouteResponse, fidl::encoding::DefaultFuchsiaResourceDialect>::encode(
19435                (
19436                    <RouterResponse as fidl::encoding::ValueTypeMarker>::borrow(&self.response),
19437                    <fidl::encoding::OptionalUnion<Data> as fidl::encoding::ValueTypeMarker>::borrow(&self.data),
19438                ),
19439                encoder, offset, _depth
19440            )
19441        }
19442    }
19443    unsafe impl<
19444        T0: fidl::encoding::Encode<RouterResponse, fidl::encoding::DefaultFuchsiaResourceDialect>,
19445        T1: fidl::encoding::Encode<
19446                fidl::encoding::OptionalUnion<Data>,
19447                fidl::encoding::DefaultFuchsiaResourceDialect,
19448            >,
19449    >
19450        fidl::encoding::Encode<
19451            DataRouterDeprecatedRouteResponse,
19452            fidl::encoding::DefaultFuchsiaResourceDialect,
19453        > for (T0, T1)
19454    {
19455        #[inline]
19456        unsafe fn encode(
19457            self,
19458            encoder: &mut fidl::encoding::Encoder<
19459                '_,
19460                fidl::encoding::DefaultFuchsiaResourceDialect,
19461            >,
19462            offset: usize,
19463            depth: fidl::encoding::Depth,
19464        ) -> fidl::Result<()> {
19465            encoder.debug_check_bounds::<DataRouterDeprecatedRouteResponse>(offset);
19466            // Zero out padding regions. There's no need to apply masks
19467            // because the unmasked parts will be overwritten by fields.
19468            unsafe {
19469                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(0);
19470                (ptr as *mut u64).write_unaligned(0);
19471            }
19472            // Write the fields.
19473            self.0.encode(encoder, offset + 0, depth)?;
19474            self.1.encode(encoder, offset + 8, depth)?;
19475            Ok(())
19476        }
19477    }
19478
19479    impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
19480        for DataRouterDeprecatedRouteResponse
19481    {
19482        #[inline(always)]
19483        fn new_empty() -> Self {
19484            Self {
19485                response: fidl::new_empty!(
19486                    RouterResponse,
19487                    fidl::encoding::DefaultFuchsiaResourceDialect
19488                ),
19489                data: fidl::new_empty!(
19490                    fidl::encoding::OptionalUnion<Data>,
19491                    fidl::encoding::DefaultFuchsiaResourceDialect
19492                ),
19493            }
19494        }
19495
19496        #[inline]
19497        unsafe fn decode(
19498            &mut self,
19499            decoder: &mut fidl::encoding::Decoder<
19500                '_,
19501                fidl::encoding::DefaultFuchsiaResourceDialect,
19502            >,
19503            offset: usize,
19504            _depth: fidl::encoding::Depth,
19505        ) -> fidl::Result<()> {
19506            decoder.debug_check_bounds::<Self>(offset);
19507            // Verify that padding bytes are zero.
19508            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(0) };
19509            let padval = unsafe { (ptr as *const u64).read_unaligned() };
19510            let mask = 0xffffffff00000000u64;
19511            let maskedval = padval & mask;
19512            if maskedval != 0 {
19513                return Err(fidl::Error::NonZeroPadding {
19514                    padding_start: offset + 0 + ((mask as u64).trailing_zeros() / 8) as usize,
19515                });
19516            }
19517            fidl::decode!(
19518                RouterResponse,
19519                fidl::encoding::DefaultFuchsiaResourceDialect,
19520                &mut self.response,
19521                decoder,
19522                offset + 0,
19523                _depth
19524            )?;
19525            fidl::decode!(
19526                fidl::encoding::OptionalUnion<Data>,
19527                fidl::encoding::DefaultFuchsiaResourceDialect,
19528                &mut self.data,
19529                decoder,
19530                offset + 8,
19531                _depth
19532            )?;
19533            Ok(())
19534        }
19535    }
19536
19537    impl fidl::encoding::ResourceTypeMarker for DataRouterRouteRequest {
19538        type Borrowed<'a> = &'a mut Self;
19539        fn take_or_borrow<'a>(
19540            value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
19541        ) -> Self::Borrowed<'a> {
19542            value
19543        }
19544    }
19545
19546    unsafe impl fidl::encoding::TypeMarker for DataRouterRouteRequest {
19547        type Owned = Self;
19548
19549        #[inline(always)]
19550        fn inline_align(_context: fidl::encoding::Context) -> usize {
19551            8
19552        }
19553
19554        #[inline(always)]
19555        fn inline_size(_context: fidl::encoding::Context) -> usize {
19556            24
19557        }
19558    }
19559
19560    unsafe impl
19561        fidl::encoding::Encode<
19562            DataRouterRouteRequest,
19563            fidl::encoding::DefaultFuchsiaResourceDialect,
19564        > for &mut DataRouterRouteRequest
19565    {
19566        #[inline]
19567        unsafe fn encode(
19568            self,
19569            encoder: &mut fidl::encoding::Encoder<
19570                '_,
19571                fidl::encoding::DefaultFuchsiaResourceDialect,
19572            >,
19573            offset: usize,
19574            _depth: fidl::encoding::Depth,
19575        ) -> fidl::Result<()> {
19576            encoder.debug_check_bounds::<DataRouterRouteRequest>(offset);
19577            // Delegate to tuple encoding.
19578            fidl::encoding::Encode::<
19579                DataRouterRouteRequest,
19580                fidl::encoding::DefaultFuchsiaResourceDialect,
19581            >::encode(
19582                (
19583                    <RouteRequest as fidl::encoding::ResourceTypeMarker>::take_or_borrow(
19584                        &mut self.request,
19585                    ),
19586                    <fidl::encoding::HandleType<
19587                        fidl::EventPair,
19588                        { fidl::ObjectType::EVENTPAIR.into_raw() },
19589                        2147483648,
19590                    > as fidl::encoding::ResourceTypeMarker>::take_or_borrow(
19591                        &mut self.instance_token,
19592                    ),
19593                    <fidl::encoding::HandleType<
19594                        fidl::EventPair,
19595                        { fidl::ObjectType::EVENTPAIR.into_raw() },
19596                        2147483648,
19597                    > as fidl::encoding::ResourceTypeMarker>::take_or_borrow(
19598                        &mut self.handle
19599                    ),
19600                ),
19601                encoder,
19602                offset,
19603                _depth,
19604            )
19605        }
19606    }
19607    unsafe impl<
19608        T0: fidl::encoding::Encode<RouteRequest, fidl::encoding::DefaultFuchsiaResourceDialect>,
19609        T1: fidl::encoding::Encode<
19610                fidl::encoding::HandleType<
19611                    fidl::EventPair,
19612                    { fidl::ObjectType::EVENTPAIR.into_raw() },
19613                    2147483648,
19614                >,
19615                fidl::encoding::DefaultFuchsiaResourceDialect,
19616            >,
19617        T2: fidl::encoding::Encode<
19618                fidl::encoding::HandleType<
19619                    fidl::EventPair,
19620                    { fidl::ObjectType::EVENTPAIR.into_raw() },
19621                    2147483648,
19622                >,
19623                fidl::encoding::DefaultFuchsiaResourceDialect,
19624            >,
19625    >
19626        fidl::encoding::Encode<
19627            DataRouterRouteRequest,
19628            fidl::encoding::DefaultFuchsiaResourceDialect,
19629        > for (T0, T1, T2)
19630    {
19631        #[inline]
19632        unsafe fn encode(
19633            self,
19634            encoder: &mut fidl::encoding::Encoder<
19635                '_,
19636                fidl::encoding::DefaultFuchsiaResourceDialect,
19637            >,
19638            offset: usize,
19639            depth: fidl::encoding::Depth,
19640        ) -> fidl::Result<()> {
19641            encoder.debug_check_bounds::<DataRouterRouteRequest>(offset);
19642            // Zero out padding regions. There's no need to apply masks
19643            // because the unmasked parts will be overwritten by fields.
19644            // Write the fields.
19645            self.0.encode(encoder, offset + 0, depth)?;
19646            self.1.encode(encoder, offset + 16, depth)?;
19647            self.2.encode(encoder, offset + 20, depth)?;
19648            Ok(())
19649        }
19650    }
19651
19652    impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
19653        for DataRouterRouteRequest
19654    {
19655        #[inline(always)]
19656        fn new_empty() -> Self {
19657            Self {
19658                request: fidl::new_empty!(
19659                    RouteRequest,
19660                    fidl::encoding::DefaultFuchsiaResourceDialect
19661                ),
19662                instance_token: fidl::new_empty!(fidl::encoding::HandleType<fidl::EventPair, { fidl::ObjectType::EVENTPAIR.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect),
19663                handle: fidl::new_empty!(fidl::encoding::HandleType<fidl::EventPair, { fidl::ObjectType::EVENTPAIR.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect),
19664            }
19665        }
19666
19667        #[inline]
19668        unsafe fn decode(
19669            &mut self,
19670            decoder: &mut fidl::encoding::Decoder<
19671                '_,
19672                fidl::encoding::DefaultFuchsiaResourceDialect,
19673            >,
19674            offset: usize,
19675            _depth: fidl::encoding::Depth,
19676        ) -> fidl::Result<()> {
19677            decoder.debug_check_bounds::<Self>(offset);
19678            // Verify that padding bytes are zero.
19679            fidl::decode!(
19680                RouteRequest,
19681                fidl::encoding::DefaultFuchsiaResourceDialect,
19682                &mut self.request,
19683                decoder,
19684                offset + 0,
19685                _depth
19686            )?;
19687            fidl::decode!(fidl::encoding::HandleType<fidl::EventPair, { fidl::ObjectType::EVENTPAIR.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect, &mut self.instance_token, decoder, offset + 16, _depth)?;
19688            fidl::decode!(fidl::encoding::HandleType<fidl::EventPair, { fidl::ObjectType::EVENTPAIR.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect, &mut self.handle, decoder, offset + 20, _depth)?;
19689            Ok(())
19690        }
19691    }
19692
19693    impl fidl::encoding::ResourceTypeMarker for DictionaryGetRequest {
19694        type Borrowed<'a> = &'a mut Self;
19695        fn take_or_borrow<'a>(
19696            value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
19697        ) -> Self::Borrowed<'a> {
19698            value
19699        }
19700    }
19701
19702    unsafe impl fidl::encoding::TypeMarker for DictionaryGetRequest {
19703        type Owned = Self;
19704
19705        #[inline(always)]
19706        fn inline_align(_context: fidl::encoding::Context) -> usize {
19707            8
19708        }
19709
19710        #[inline(always)]
19711        fn inline_size(_context: fidl::encoding::Context) -> usize {
19712            16
19713        }
19714    }
19715
19716    unsafe impl
19717        fidl::encoding::Encode<DictionaryGetRequest, fidl::encoding::DefaultFuchsiaResourceDialect>
19718        for &mut DictionaryGetRequest
19719    {
19720        #[inline]
19721        unsafe fn encode(
19722            self,
19723            encoder: &mut fidl::encoding::Encoder<
19724                '_,
19725                fidl::encoding::DefaultFuchsiaResourceDialect,
19726            >,
19727            offset: usize,
19728            _depth: fidl::encoding::Depth,
19729        ) -> fidl::Result<()> {
19730            encoder.debug_check_bounds::<DictionaryGetRequest>(offset);
19731            // Delegate to tuple encoding.
19732            fidl::encoding::Encode::<
19733                DictionaryGetRequest,
19734                fidl::encoding::DefaultFuchsiaResourceDialect,
19735            >::encode(
19736                (<fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow(
19737                    &self.key,
19738                ),),
19739                encoder,
19740                offset,
19741                _depth,
19742            )
19743        }
19744    }
19745    unsafe impl<
19746        T0: fidl::encoding::Encode<
19747                fidl::encoding::BoundedString<100>,
19748                fidl::encoding::DefaultFuchsiaResourceDialect,
19749            >,
19750    >
19751        fidl::encoding::Encode<DictionaryGetRequest, fidl::encoding::DefaultFuchsiaResourceDialect>
19752        for (T0,)
19753    {
19754        #[inline]
19755        unsafe fn encode(
19756            self,
19757            encoder: &mut fidl::encoding::Encoder<
19758                '_,
19759                fidl::encoding::DefaultFuchsiaResourceDialect,
19760            >,
19761            offset: usize,
19762            depth: fidl::encoding::Depth,
19763        ) -> fidl::Result<()> {
19764            encoder.debug_check_bounds::<DictionaryGetRequest>(offset);
19765            // Zero out padding regions. There's no need to apply masks
19766            // because the unmasked parts will be overwritten by fields.
19767            // Write the fields.
19768            self.0.encode(encoder, offset + 0, depth)?;
19769            Ok(())
19770        }
19771    }
19772
19773    impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
19774        for DictionaryGetRequest
19775    {
19776        #[inline(always)]
19777        fn new_empty() -> Self {
19778            Self {
19779                key: fidl::new_empty!(
19780                    fidl::encoding::BoundedString<100>,
19781                    fidl::encoding::DefaultFuchsiaResourceDialect
19782                ),
19783            }
19784        }
19785
19786        #[inline]
19787        unsafe fn decode(
19788            &mut self,
19789            decoder: &mut fidl::encoding::Decoder<
19790                '_,
19791                fidl::encoding::DefaultFuchsiaResourceDialect,
19792            >,
19793            offset: usize,
19794            _depth: fidl::encoding::Depth,
19795        ) -> fidl::Result<()> {
19796            decoder.debug_check_bounds::<Self>(offset);
19797            // Verify that padding bytes are zero.
19798            fidl::decode!(
19799                fidl::encoding::BoundedString<100>,
19800                fidl::encoding::DefaultFuchsiaResourceDialect,
19801                &mut self.key,
19802                decoder,
19803                offset + 0,
19804                _depth
19805            )?;
19806            Ok(())
19807        }
19808    }
19809
19810    impl fidl::encoding::ResourceTypeMarker for DictionaryInsertRequest {
19811        type Borrowed<'a> = &'a mut Self;
19812        fn take_or_borrow<'a>(
19813            value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
19814        ) -> Self::Borrowed<'a> {
19815            value
19816        }
19817    }
19818
19819    unsafe impl fidl::encoding::TypeMarker for DictionaryInsertRequest {
19820        type Owned = Self;
19821
19822        #[inline(always)]
19823        fn inline_align(_context: fidl::encoding::Context) -> usize {
19824            8
19825        }
19826
19827        #[inline(always)]
19828        fn inline_size(_context: fidl::encoding::Context) -> usize {
19829            32
19830        }
19831    }
19832
19833    unsafe impl
19834        fidl::encoding::Encode<
19835            DictionaryInsertRequest,
19836            fidl::encoding::DefaultFuchsiaResourceDialect,
19837        > for &mut DictionaryInsertRequest
19838    {
19839        #[inline]
19840        unsafe fn encode(
19841            self,
19842            encoder: &mut fidl::encoding::Encoder<
19843                '_,
19844                fidl::encoding::DefaultFuchsiaResourceDialect,
19845            >,
19846            offset: usize,
19847            _depth: fidl::encoding::Depth,
19848        ) -> fidl::Result<()> {
19849            encoder.debug_check_bounds::<DictionaryInsertRequest>(offset);
19850            // Delegate to tuple encoding.
19851            fidl::encoding::Encode::<
19852                DictionaryInsertRequest,
19853                fidl::encoding::DefaultFuchsiaResourceDialect,
19854            >::encode(
19855                (
19856                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow(
19857                        &self.key,
19858                    ),
19859                    <CapabilityDeprecated as fidl::encoding::ResourceTypeMarker>::take_or_borrow(
19860                        &mut self.capability,
19861                    ),
19862                ),
19863                encoder,
19864                offset,
19865                _depth,
19866            )
19867        }
19868    }
19869    unsafe impl<
19870        T0: fidl::encoding::Encode<
19871                fidl::encoding::BoundedString<100>,
19872                fidl::encoding::DefaultFuchsiaResourceDialect,
19873            >,
19874        T1: fidl::encoding::Encode<CapabilityDeprecated, fidl::encoding::DefaultFuchsiaResourceDialect>,
19875    >
19876        fidl::encoding::Encode<
19877            DictionaryInsertRequest,
19878            fidl::encoding::DefaultFuchsiaResourceDialect,
19879        > for (T0, T1)
19880    {
19881        #[inline]
19882        unsafe fn encode(
19883            self,
19884            encoder: &mut fidl::encoding::Encoder<
19885                '_,
19886                fidl::encoding::DefaultFuchsiaResourceDialect,
19887            >,
19888            offset: usize,
19889            depth: fidl::encoding::Depth,
19890        ) -> fidl::Result<()> {
19891            encoder.debug_check_bounds::<DictionaryInsertRequest>(offset);
19892            // Zero out padding regions. There's no need to apply masks
19893            // because the unmasked parts will be overwritten by fields.
19894            // Write the fields.
19895            self.0.encode(encoder, offset + 0, depth)?;
19896            self.1.encode(encoder, offset + 16, depth)?;
19897            Ok(())
19898        }
19899    }
19900
19901    impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
19902        for DictionaryInsertRequest
19903    {
19904        #[inline(always)]
19905        fn new_empty() -> Self {
19906            Self {
19907                key: fidl::new_empty!(
19908                    fidl::encoding::BoundedString<100>,
19909                    fidl::encoding::DefaultFuchsiaResourceDialect
19910                ),
19911                capability: fidl::new_empty!(
19912                    CapabilityDeprecated,
19913                    fidl::encoding::DefaultFuchsiaResourceDialect
19914                ),
19915            }
19916        }
19917
19918        #[inline]
19919        unsafe fn decode(
19920            &mut self,
19921            decoder: &mut fidl::encoding::Decoder<
19922                '_,
19923                fidl::encoding::DefaultFuchsiaResourceDialect,
19924            >,
19925            offset: usize,
19926            _depth: fidl::encoding::Depth,
19927        ) -> fidl::Result<()> {
19928            decoder.debug_check_bounds::<Self>(offset);
19929            // Verify that padding bytes are zero.
19930            fidl::decode!(
19931                fidl::encoding::BoundedString<100>,
19932                fidl::encoding::DefaultFuchsiaResourceDialect,
19933                &mut self.key,
19934                decoder,
19935                offset + 0,
19936                _depth
19937            )?;
19938            fidl::decode!(
19939                CapabilityDeprecated,
19940                fidl::encoding::DefaultFuchsiaResourceDialect,
19941                &mut self.capability,
19942                decoder,
19943                offset + 16,
19944                _depth
19945            )?;
19946            Ok(())
19947        }
19948    }
19949
19950    impl fidl::encoding::ResourceTypeMarker for DictionaryIterateKeysRequest {
19951        type Borrowed<'a> = &'a mut Self;
19952        fn take_or_borrow<'a>(
19953            value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
19954        ) -> Self::Borrowed<'a> {
19955            value
19956        }
19957    }
19958
19959    unsafe impl fidl::encoding::TypeMarker for DictionaryIterateKeysRequest {
19960        type Owned = Self;
19961
19962        #[inline(always)]
19963        fn inline_align(_context: fidl::encoding::Context) -> usize {
19964            4
19965        }
19966
19967        #[inline(always)]
19968        fn inline_size(_context: fidl::encoding::Context) -> usize {
19969            4
19970        }
19971    }
19972
19973    unsafe impl
19974        fidl::encoding::Encode<
19975            DictionaryIterateKeysRequest,
19976            fidl::encoding::DefaultFuchsiaResourceDialect,
19977        > for &mut DictionaryIterateKeysRequest
19978    {
19979        #[inline]
19980        unsafe fn encode(
19981            self,
19982            encoder: &mut fidl::encoding::Encoder<
19983                '_,
19984                fidl::encoding::DefaultFuchsiaResourceDialect,
19985            >,
19986            offset: usize,
19987            _depth: fidl::encoding::Depth,
19988        ) -> fidl::Result<()> {
19989            encoder.debug_check_bounds::<DictionaryIterateKeysRequest>(offset);
19990            // Delegate to tuple encoding.
19991            fidl::encoding::Encode::<
19992                DictionaryIterateKeysRequest,
19993                fidl::encoding::DefaultFuchsiaResourceDialect,
19994            >::encode(
19995                (
19996                    <fidl::encoding::Endpoint<
19997                        fidl::endpoints::ServerEnd<DictionaryKeyIteratorMarker>,
19998                    > as fidl::encoding::ResourceTypeMarker>::take_or_borrow(
19999                        &mut self.key_iterator,
20000                    ),
20001                ),
20002                encoder,
20003                offset,
20004                _depth,
20005            )
20006        }
20007    }
20008    unsafe impl<
20009        T0: fidl::encoding::Encode<
20010                fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<DictionaryKeyIteratorMarker>>,
20011                fidl::encoding::DefaultFuchsiaResourceDialect,
20012            >,
20013    >
20014        fidl::encoding::Encode<
20015            DictionaryIterateKeysRequest,
20016            fidl::encoding::DefaultFuchsiaResourceDialect,
20017        > for (T0,)
20018    {
20019        #[inline]
20020        unsafe fn encode(
20021            self,
20022            encoder: &mut fidl::encoding::Encoder<
20023                '_,
20024                fidl::encoding::DefaultFuchsiaResourceDialect,
20025            >,
20026            offset: usize,
20027            depth: fidl::encoding::Depth,
20028        ) -> fidl::Result<()> {
20029            encoder.debug_check_bounds::<DictionaryIterateKeysRequest>(offset);
20030            // Zero out padding regions. There's no need to apply masks
20031            // because the unmasked parts will be overwritten by fields.
20032            // Write the fields.
20033            self.0.encode(encoder, offset + 0, depth)?;
20034            Ok(())
20035        }
20036    }
20037
20038    impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
20039        for DictionaryIterateKeysRequest
20040    {
20041        #[inline(always)]
20042        fn new_empty() -> Self {
20043            Self {
20044                key_iterator: fidl::new_empty!(
20045                    fidl::encoding::Endpoint<
20046                        fidl::endpoints::ServerEnd<DictionaryKeyIteratorMarker>,
20047                    >,
20048                    fidl::encoding::DefaultFuchsiaResourceDialect
20049                ),
20050            }
20051        }
20052
20053        #[inline]
20054        unsafe fn decode(
20055            &mut self,
20056            decoder: &mut fidl::encoding::Decoder<
20057                '_,
20058                fidl::encoding::DefaultFuchsiaResourceDialect,
20059            >,
20060            offset: usize,
20061            _depth: fidl::encoding::Depth,
20062        ) -> fidl::Result<()> {
20063            decoder.debug_check_bounds::<Self>(offset);
20064            // Verify that padding bytes are zero.
20065            fidl::decode!(
20066                fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<DictionaryKeyIteratorMarker>>,
20067                fidl::encoding::DefaultFuchsiaResourceDialect,
20068                &mut self.key_iterator,
20069                decoder,
20070                offset + 0,
20071                _depth
20072            )?;
20073            Ok(())
20074        }
20075    }
20076
20077    impl fidl::encoding::ResourceTypeMarker for DictionaryRemoveRequest {
20078        type Borrowed<'a> = &'a mut Self;
20079        fn take_or_borrow<'a>(
20080            value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
20081        ) -> Self::Borrowed<'a> {
20082            value
20083        }
20084    }
20085
20086    unsafe impl fidl::encoding::TypeMarker for DictionaryRemoveRequest {
20087        type Owned = Self;
20088
20089        #[inline(always)]
20090        fn inline_align(_context: fidl::encoding::Context) -> usize {
20091            8
20092        }
20093
20094        #[inline(always)]
20095        fn inline_size(_context: fidl::encoding::Context) -> usize {
20096            16
20097        }
20098    }
20099
20100    unsafe impl
20101        fidl::encoding::Encode<
20102            DictionaryRemoveRequest,
20103            fidl::encoding::DefaultFuchsiaResourceDialect,
20104        > for &mut DictionaryRemoveRequest
20105    {
20106        #[inline]
20107        unsafe fn encode(
20108            self,
20109            encoder: &mut fidl::encoding::Encoder<
20110                '_,
20111                fidl::encoding::DefaultFuchsiaResourceDialect,
20112            >,
20113            offset: usize,
20114            _depth: fidl::encoding::Depth,
20115        ) -> fidl::Result<()> {
20116            encoder.debug_check_bounds::<DictionaryRemoveRequest>(offset);
20117            // Delegate to tuple encoding.
20118            fidl::encoding::Encode::<
20119                DictionaryRemoveRequest,
20120                fidl::encoding::DefaultFuchsiaResourceDialect,
20121            >::encode(
20122                (<fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow(
20123                    &self.key,
20124                ),),
20125                encoder,
20126                offset,
20127                _depth,
20128            )
20129        }
20130    }
20131    unsafe impl<
20132        T0: fidl::encoding::Encode<
20133                fidl::encoding::BoundedString<100>,
20134                fidl::encoding::DefaultFuchsiaResourceDialect,
20135            >,
20136    >
20137        fidl::encoding::Encode<
20138            DictionaryRemoveRequest,
20139            fidl::encoding::DefaultFuchsiaResourceDialect,
20140        > for (T0,)
20141    {
20142        #[inline]
20143        unsafe fn encode(
20144            self,
20145            encoder: &mut fidl::encoding::Encoder<
20146                '_,
20147                fidl::encoding::DefaultFuchsiaResourceDialect,
20148            >,
20149            offset: usize,
20150            depth: fidl::encoding::Depth,
20151        ) -> fidl::Result<()> {
20152            encoder.debug_check_bounds::<DictionaryRemoveRequest>(offset);
20153            // Zero out padding regions. There's no need to apply masks
20154            // because the unmasked parts will be overwritten by fields.
20155            // Write the fields.
20156            self.0.encode(encoder, offset + 0, depth)?;
20157            Ok(())
20158        }
20159    }
20160
20161    impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
20162        for DictionaryRemoveRequest
20163    {
20164        #[inline(always)]
20165        fn new_empty() -> Self {
20166            Self {
20167                key: fidl::new_empty!(
20168                    fidl::encoding::BoundedString<100>,
20169                    fidl::encoding::DefaultFuchsiaResourceDialect
20170                ),
20171            }
20172        }
20173
20174        #[inline]
20175        unsafe fn decode(
20176            &mut self,
20177            decoder: &mut fidl::encoding::Decoder<
20178                '_,
20179                fidl::encoding::DefaultFuchsiaResourceDialect,
20180            >,
20181            offset: usize,
20182            _depth: fidl::encoding::Depth,
20183        ) -> fidl::Result<()> {
20184            decoder.debug_check_bounds::<Self>(offset);
20185            // Verify that padding bytes are zero.
20186            fidl::decode!(
20187                fidl::encoding::BoundedString<100>,
20188                fidl::encoding::DefaultFuchsiaResourceDialect,
20189                &mut self.key,
20190                decoder,
20191                offset + 0,
20192                _depth
20193            )?;
20194            Ok(())
20195        }
20196    }
20197
20198    impl fidl::encoding::ResourceTypeMarker for DictionaryRouterDeprecatedRouteRequest {
20199        type Borrowed<'a> = &'a mut Self;
20200        fn take_or_borrow<'a>(
20201            value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
20202        ) -> Self::Borrowed<'a> {
20203            value
20204        }
20205    }
20206
20207    unsafe impl fidl::encoding::TypeMarker for DictionaryRouterDeprecatedRouteRequest {
20208        type Owned = Self;
20209
20210        #[inline(always)]
20211        fn inline_align(_context: fidl::encoding::Context) -> usize {
20212            8
20213        }
20214
20215        #[inline(always)]
20216        fn inline_size(_context: fidl::encoding::Context) -> usize {
20217            24
20218        }
20219    }
20220
20221    unsafe impl
20222        fidl::encoding::Encode<
20223            DictionaryRouterDeprecatedRouteRequest,
20224            fidl::encoding::DefaultFuchsiaResourceDialect,
20225        > for &mut DictionaryRouterDeprecatedRouteRequest
20226    {
20227        #[inline]
20228        unsafe fn encode(
20229            self,
20230            encoder: &mut fidl::encoding::Encoder<
20231                '_,
20232                fidl::encoding::DefaultFuchsiaResourceDialect,
20233            >,
20234            offset: usize,
20235            _depth: fidl::encoding::Depth,
20236        ) -> fidl::Result<()> {
20237            encoder.debug_check_bounds::<DictionaryRouterDeprecatedRouteRequest>(offset);
20238            // Delegate to tuple encoding.
20239            fidl::encoding::Encode::<DictionaryRouterDeprecatedRouteRequest, fidl::encoding::DefaultFuchsiaResourceDialect>::encode(
20240                (
20241                    <DeprecatedRouteRequest as fidl::encoding::ResourceTypeMarker>::take_or_borrow(&mut self.request),
20242                    <fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<DictionaryMarker>> as fidl::encoding::ResourceTypeMarker>::take_or_borrow(&mut self.dictionary_server_end),
20243                ),
20244                encoder, offset, _depth
20245            )
20246        }
20247    }
20248    unsafe impl<
20249        T0: fidl::encoding::Encode<
20250                DeprecatedRouteRequest,
20251                fidl::encoding::DefaultFuchsiaResourceDialect,
20252            >,
20253        T1: fidl::encoding::Encode<
20254                fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<DictionaryMarker>>,
20255                fidl::encoding::DefaultFuchsiaResourceDialect,
20256            >,
20257    >
20258        fidl::encoding::Encode<
20259            DictionaryRouterDeprecatedRouteRequest,
20260            fidl::encoding::DefaultFuchsiaResourceDialect,
20261        > for (T0, T1)
20262    {
20263        #[inline]
20264        unsafe fn encode(
20265            self,
20266            encoder: &mut fidl::encoding::Encoder<
20267                '_,
20268                fidl::encoding::DefaultFuchsiaResourceDialect,
20269            >,
20270            offset: usize,
20271            depth: fidl::encoding::Depth,
20272        ) -> fidl::Result<()> {
20273            encoder.debug_check_bounds::<DictionaryRouterDeprecatedRouteRequest>(offset);
20274            // Zero out padding regions. There's no need to apply masks
20275            // because the unmasked parts will be overwritten by fields.
20276            unsafe {
20277                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(16);
20278                (ptr as *mut u64).write_unaligned(0);
20279            }
20280            // Write the fields.
20281            self.0.encode(encoder, offset + 0, depth)?;
20282            self.1.encode(encoder, offset + 16, depth)?;
20283            Ok(())
20284        }
20285    }
20286
20287    impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
20288        for DictionaryRouterDeprecatedRouteRequest
20289    {
20290        #[inline(always)]
20291        fn new_empty() -> Self {
20292            Self {
20293                request: fidl::new_empty!(
20294                    DeprecatedRouteRequest,
20295                    fidl::encoding::DefaultFuchsiaResourceDialect
20296                ),
20297                dictionary_server_end: fidl::new_empty!(
20298                    fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<DictionaryMarker>>,
20299                    fidl::encoding::DefaultFuchsiaResourceDialect
20300                ),
20301            }
20302        }
20303
20304        #[inline]
20305        unsafe fn decode(
20306            &mut self,
20307            decoder: &mut fidl::encoding::Decoder<
20308                '_,
20309                fidl::encoding::DefaultFuchsiaResourceDialect,
20310            >,
20311            offset: usize,
20312            _depth: fidl::encoding::Depth,
20313        ) -> fidl::Result<()> {
20314            decoder.debug_check_bounds::<Self>(offset);
20315            // Verify that padding bytes are zero.
20316            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(16) };
20317            let padval = unsafe { (ptr as *const u64).read_unaligned() };
20318            let mask = 0xffffffff00000000u64;
20319            let maskedval = padval & mask;
20320            if maskedval != 0 {
20321                return Err(fidl::Error::NonZeroPadding {
20322                    padding_start: offset + 16 + ((mask as u64).trailing_zeros() / 8) as usize,
20323                });
20324            }
20325            fidl::decode!(
20326                DeprecatedRouteRequest,
20327                fidl::encoding::DefaultFuchsiaResourceDialect,
20328                &mut self.request,
20329                decoder,
20330                offset + 0,
20331                _depth
20332            )?;
20333            fidl::decode!(
20334                fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<DictionaryMarker>>,
20335                fidl::encoding::DefaultFuchsiaResourceDialect,
20336                &mut self.dictionary_server_end,
20337                decoder,
20338                offset + 16,
20339                _depth
20340            )?;
20341            Ok(())
20342        }
20343    }
20344
20345    impl fidl::encoding::ResourceTypeMarker for DictionaryRouterDeprecatedRouteResponse {
20346        type Borrowed<'a> = &'a mut Self;
20347        fn take_or_borrow<'a>(
20348            value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
20349        ) -> Self::Borrowed<'a> {
20350            value
20351        }
20352    }
20353
20354    unsafe impl fidl::encoding::TypeMarker for DictionaryRouterDeprecatedRouteResponse {
20355        type Owned = Self;
20356
20357        #[inline(always)]
20358        fn inline_align(_context: fidl::encoding::Context) -> usize {
20359            4
20360        }
20361
20362        #[inline(always)]
20363        fn inline_size(_context: fidl::encoding::Context) -> usize {
20364            4
20365        }
20366    }
20367
20368    unsafe impl
20369        fidl::encoding::Encode<
20370            DictionaryRouterDeprecatedRouteResponse,
20371            fidl::encoding::DefaultFuchsiaResourceDialect,
20372        > for &mut DictionaryRouterDeprecatedRouteResponse
20373    {
20374        #[inline]
20375        unsafe fn encode(
20376            self,
20377            encoder: &mut fidl::encoding::Encoder<
20378                '_,
20379                fidl::encoding::DefaultFuchsiaResourceDialect,
20380            >,
20381            offset: usize,
20382            _depth: fidl::encoding::Depth,
20383        ) -> fidl::Result<()> {
20384            encoder.debug_check_bounds::<DictionaryRouterDeprecatedRouteResponse>(offset);
20385            // Delegate to tuple encoding.
20386            fidl::encoding::Encode::<
20387                DictionaryRouterDeprecatedRouteResponse,
20388                fidl::encoding::DefaultFuchsiaResourceDialect,
20389            >::encode(
20390                (<RouterResponse as fidl::encoding::ValueTypeMarker>::borrow(&self.response),),
20391                encoder,
20392                offset,
20393                _depth,
20394            )
20395        }
20396    }
20397    unsafe impl<
20398        T0: fidl::encoding::Encode<RouterResponse, fidl::encoding::DefaultFuchsiaResourceDialect>,
20399    >
20400        fidl::encoding::Encode<
20401            DictionaryRouterDeprecatedRouteResponse,
20402            fidl::encoding::DefaultFuchsiaResourceDialect,
20403        > for (T0,)
20404    {
20405        #[inline]
20406        unsafe fn encode(
20407            self,
20408            encoder: &mut fidl::encoding::Encoder<
20409                '_,
20410                fidl::encoding::DefaultFuchsiaResourceDialect,
20411            >,
20412            offset: usize,
20413            depth: fidl::encoding::Depth,
20414        ) -> fidl::Result<()> {
20415            encoder.debug_check_bounds::<DictionaryRouterDeprecatedRouteResponse>(offset);
20416            // Zero out padding regions. There's no need to apply masks
20417            // because the unmasked parts will be overwritten by fields.
20418            // Write the fields.
20419            self.0.encode(encoder, offset + 0, depth)?;
20420            Ok(())
20421        }
20422    }
20423
20424    impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
20425        for DictionaryRouterDeprecatedRouteResponse
20426    {
20427        #[inline(always)]
20428        fn new_empty() -> Self {
20429            Self {
20430                response: fidl::new_empty!(
20431                    RouterResponse,
20432                    fidl::encoding::DefaultFuchsiaResourceDialect
20433                ),
20434            }
20435        }
20436
20437        #[inline]
20438        unsafe fn decode(
20439            &mut self,
20440            decoder: &mut fidl::encoding::Decoder<
20441                '_,
20442                fidl::encoding::DefaultFuchsiaResourceDialect,
20443            >,
20444            offset: usize,
20445            _depth: fidl::encoding::Depth,
20446        ) -> fidl::Result<()> {
20447            decoder.debug_check_bounds::<Self>(offset);
20448            // Verify that padding bytes are zero.
20449            fidl::decode!(
20450                RouterResponse,
20451                fidl::encoding::DefaultFuchsiaResourceDialect,
20452                &mut self.response,
20453                decoder,
20454                offset + 0,
20455                _depth
20456            )?;
20457            Ok(())
20458        }
20459    }
20460
20461    impl fidl::encoding::ResourceTypeMarker for DictionaryRouterRouteRequest {
20462        type Borrowed<'a> = &'a mut Self;
20463        fn take_or_borrow<'a>(
20464            value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
20465        ) -> Self::Borrowed<'a> {
20466            value
20467        }
20468    }
20469
20470    unsafe impl fidl::encoding::TypeMarker for DictionaryRouterRouteRequest {
20471        type Owned = Self;
20472
20473        #[inline(always)]
20474        fn inline_align(_context: fidl::encoding::Context) -> usize {
20475            8
20476        }
20477
20478        #[inline(always)]
20479        fn inline_size(_context: fidl::encoding::Context) -> usize {
20480            24
20481        }
20482    }
20483
20484    unsafe impl
20485        fidl::encoding::Encode<
20486            DictionaryRouterRouteRequest,
20487            fidl::encoding::DefaultFuchsiaResourceDialect,
20488        > for &mut DictionaryRouterRouteRequest
20489    {
20490        #[inline]
20491        unsafe fn encode(
20492            self,
20493            encoder: &mut fidl::encoding::Encoder<
20494                '_,
20495                fidl::encoding::DefaultFuchsiaResourceDialect,
20496            >,
20497            offset: usize,
20498            _depth: fidl::encoding::Depth,
20499        ) -> fidl::Result<()> {
20500            encoder.debug_check_bounds::<DictionaryRouterRouteRequest>(offset);
20501            // Delegate to tuple encoding.
20502            fidl::encoding::Encode::<
20503                DictionaryRouterRouteRequest,
20504                fidl::encoding::DefaultFuchsiaResourceDialect,
20505            >::encode(
20506                (
20507                    <RouteRequest as fidl::encoding::ResourceTypeMarker>::take_or_borrow(
20508                        &mut self.request,
20509                    ),
20510                    <fidl::encoding::HandleType<
20511                        fidl::EventPair,
20512                        { fidl::ObjectType::EVENTPAIR.into_raw() },
20513                        2147483648,
20514                    > as fidl::encoding::ResourceTypeMarker>::take_or_borrow(
20515                        &mut self.instance_token,
20516                    ),
20517                    <fidl::encoding::HandleType<
20518                        fidl::EventPair,
20519                        { fidl::ObjectType::EVENTPAIR.into_raw() },
20520                        2147483648,
20521                    > as fidl::encoding::ResourceTypeMarker>::take_or_borrow(
20522                        &mut self.handle
20523                    ),
20524                ),
20525                encoder,
20526                offset,
20527                _depth,
20528            )
20529        }
20530    }
20531    unsafe impl<
20532        T0: fidl::encoding::Encode<RouteRequest, fidl::encoding::DefaultFuchsiaResourceDialect>,
20533        T1: fidl::encoding::Encode<
20534                fidl::encoding::HandleType<
20535                    fidl::EventPair,
20536                    { fidl::ObjectType::EVENTPAIR.into_raw() },
20537                    2147483648,
20538                >,
20539                fidl::encoding::DefaultFuchsiaResourceDialect,
20540            >,
20541        T2: fidl::encoding::Encode<
20542                fidl::encoding::HandleType<
20543                    fidl::EventPair,
20544                    { fidl::ObjectType::EVENTPAIR.into_raw() },
20545                    2147483648,
20546                >,
20547                fidl::encoding::DefaultFuchsiaResourceDialect,
20548            >,
20549    >
20550        fidl::encoding::Encode<
20551            DictionaryRouterRouteRequest,
20552            fidl::encoding::DefaultFuchsiaResourceDialect,
20553        > for (T0, T1, T2)
20554    {
20555        #[inline]
20556        unsafe fn encode(
20557            self,
20558            encoder: &mut fidl::encoding::Encoder<
20559                '_,
20560                fidl::encoding::DefaultFuchsiaResourceDialect,
20561            >,
20562            offset: usize,
20563            depth: fidl::encoding::Depth,
20564        ) -> fidl::Result<()> {
20565            encoder.debug_check_bounds::<DictionaryRouterRouteRequest>(offset);
20566            // Zero out padding regions. There's no need to apply masks
20567            // because the unmasked parts will be overwritten by fields.
20568            // Write the fields.
20569            self.0.encode(encoder, offset + 0, depth)?;
20570            self.1.encode(encoder, offset + 16, depth)?;
20571            self.2.encode(encoder, offset + 20, depth)?;
20572            Ok(())
20573        }
20574    }
20575
20576    impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
20577        for DictionaryRouterRouteRequest
20578    {
20579        #[inline(always)]
20580        fn new_empty() -> Self {
20581            Self {
20582                request: fidl::new_empty!(
20583                    RouteRequest,
20584                    fidl::encoding::DefaultFuchsiaResourceDialect
20585                ),
20586                instance_token: fidl::new_empty!(fidl::encoding::HandleType<fidl::EventPair, { fidl::ObjectType::EVENTPAIR.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect),
20587                handle: fidl::new_empty!(fidl::encoding::HandleType<fidl::EventPair, { fidl::ObjectType::EVENTPAIR.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect),
20588            }
20589        }
20590
20591        #[inline]
20592        unsafe fn decode(
20593            &mut self,
20594            decoder: &mut fidl::encoding::Decoder<
20595                '_,
20596                fidl::encoding::DefaultFuchsiaResourceDialect,
20597            >,
20598            offset: usize,
20599            _depth: fidl::encoding::Depth,
20600        ) -> fidl::Result<()> {
20601            decoder.debug_check_bounds::<Self>(offset);
20602            // Verify that padding bytes are zero.
20603            fidl::decode!(
20604                RouteRequest,
20605                fidl::encoding::DefaultFuchsiaResourceDialect,
20606                &mut self.request,
20607                decoder,
20608                offset + 0,
20609                _depth
20610            )?;
20611            fidl::decode!(fidl::encoding::HandleType<fidl::EventPair, { fidl::ObjectType::EVENTPAIR.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect, &mut self.instance_token, decoder, offset + 16, _depth)?;
20612            fidl::decode!(fidl::encoding::HandleType<fidl::EventPair, { fidl::ObjectType::EVENTPAIR.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect, &mut self.handle, decoder, offset + 20, _depth)?;
20613            Ok(())
20614        }
20615    }
20616
20617    impl fidl::encoding::ResourceTypeMarker for DictionaryGetResponse {
20618        type Borrowed<'a> = &'a mut Self;
20619        fn take_or_borrow<'a>(
20620            value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
20621        ) -> Self::Borrowed<'a> {
20622            value
20623        }
20624    }
20625
20626    unsafe impl fidl::encoding::TypeMarker for DictionaryGetResponse {
20627        type Owned = Self;
20628
20629        #[inline(always)]
20630        fn inline_align(_context: fidl::encoding::Context) -> usize {
20631            8
20632        }
20633
20634        #[inline(always)]
20635        fn inline_size(_context: fidl::encoding::Context) -> usize {
20636            16
20637        }
20638    }
20639
20640    unsafe impl
20641        fidl::encoding::Encode<DictionaryGetResponse, fidl::encoding::DefaultFuchsiaResourceDialect>
20642        for &mut DictionaryGetResponse
20643    {
20644        #[inline]
20645        unsafe fn encode(
20646            self,
20647            encoder: &mut fidl::encoding::Encoder<
20648                '_,
20649                fidl::encoding::DefaultFuchsiaResourceDialect,
20650            >,
20651            offset: usize,
20652            _depth: fidl::encoding::Depth,
20653        ) -> fidl::Result<()> {
20654            encoder.debug_check_bounds::<DictionaryGetResponse>(offset);
20655            // Delegate to tuple encoding.
20656            fidl::encoding::Encode::<DictionaryGetResponse, fidl::encoding::DefaultFuchsiaResourceDialect>::encode(
20657                (
20658                    <fidl::encoding::OptionalUnion<CapabilityDeprecated> as fidl::encoding::ResourceTypeMarker>::take_or_borrow(&mut self.capability),
20659                ),
20660                encoder, offset, _depth
20661            )
20662        }
20663    }
20664    unsafe impl<
20665        T0: fidl::encoding::Encode<
20666                fidl::encoding::OptionalUnion<CapabilityDeprecated>,
20667                fidl::encoding::DefaultFuchsiaResourceDialect,
20668            >,
20669    >
20670        fidl::encoding::Encode<DictionaryGetResponse, fidl::encoding::DefaultFuchsiaResourceDialect>
20671        for (T0,)
20672    {
20673        #[inline]
20674        unsafe fn encode(
20675            self,
20676            encoder: &mut fidl::encoding::Encoder<
20677                '_,
20678                fidl::encoding::DefaultFuchsiaResourceDialect,
20679            >,
20680            offset: usize,
20681            depth: fidl::encoding::Depth,
20682        ) -> fidl::Result<()> {
20683            encoder.debug_check_bounds::<DictionaryGetResponse>(offset);
20684            // Zero out padding regions. There's no need to apply masks
20685            // because the unmasked parts will be overwritten by fields.
20686            // Write the fields.
20687            self.0.encode(encoder, offset + 0, depth)?;
20688            Ok(())
20689        }
20690    }
20691
20692    impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
20693        for DictionaryGetResponse
20694    {
20695        #[inline(always)]
20696        fn new_empty() -> Self {
20697            Self {
20698                capability: fidl::new_empty!(
20699                    fidl::encoding::OptionalUnion<CapabilityDeprecated>,
20700                    fidl::encoding::DefaultFuchsiaResourceDialect
20701                ),
20702            }
20703        }
20704
20705        #[inline]
20706        unsafe fn decode(
20707            &mut self,
20708            decoder: &mut fidl::encoding::Decoder<
20709                '_,
20710                fidl::encoding::DefaultFuchsiaResourceDialect,
20711            >,
20712            offset: usize,
20713            _depth: fidl::encoding::Depth,
20714        ) -> fidl::Result<()> {
20715            decoder.debug_check_bounds::<Self>(offset);
20716            // Verify that padding bytes are zero.
20717            fidl::decode!(
20718                fidl::encoding::OptionalUnion<CapabilityDeprecated>,
20719                fidl::encoding::DefaultFuchsiaResourceDialect,
20720                &mut self.capability,
20721                decoder,
20722                offset + 0,
20723                _depth
20724            )?;
20725            Ok(())
20726        }
20727    }
20728
20729    impl fidl::encoding::ResourceTypeMarker for DictionaryLegacyExportResponse {
20730        type Borrowed<'a> = &'a mut Self;
20731        fn take_or_borrow<'a>(
20732            value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
20733        ) -> Self::Borrowed<'a> {
20734            value
20735        }
20736    }
20737
20738    unsafe impl fidl::encoding::TypeMarker for DictionaryLegacyExportResponse {
20739        type Owned = Self;
20740
20741        #[inline(always)]
20742        fn inline_align(_context: fidl::encoding::Context) -> usize {
20743            4
20744        }
20745
20746        #[inline(always)]
20747        fn inline_size(_context: fidl::encoding::Context) -> usize {
20748            4
20749        }
20750    }
20751
20752    unsafe impl
20753        fidl::encoding::Encode<
20754            DictionaryLegacyExportResponse,
20755            fidl::encoding::DefaultFuchsiaResourceDialect,
20756        > for &mut DictionaryLegacyExportResponse
20757    {
20758        #[inline]
20759        unsafe fn encode(
20760            self,
20761            encoder: &mut fidl::encoding::Encoder<
20762                '_,
20763                fidl::encoding::DefaultFuchsiaResourceDialect,
20764            >,
20765            offset: usize,
20766            _depth: fidl::encoding::Depth,
20767        ) -> fidl::Result<()> {
20768            encoder.debug_check_bounds::<DictionaryLegacyExportResponse>(offset);
20769            // Delegate to tuple encoding.
20770            fidl::encoding::Encode::<DictionaryLegacyExportResponse, fidl::encoding::DefaultFuchsiaResourceDialect>::encode(
20771                (
20772                    <fidl_fuchsia_component_sandbox::DictionaryRef as fidl::encoding::ResourceTypeMarker>::take_or_borrow(&mut self.dictionary_ref),
20773                ),
20774                encoder, offset, _depth
20775            )
20776        }
20777    }
20778    unsafe impl<
20779        T0: fidl::encoding::Encode<
20780                fidl_fuchsia_component_sandbox::DictionaryRef,
20781                fidl::encoding::DefaultFuchsiaResourceDialect,
20782            >,
20783    >
20784        fidl::encoding::Encode<
20785            DictionaryLegacyExportResponse,
20786            fidl::encoding::DefaultFuchsiaResourceDialect,
20787        > for (T0,)
20788    {
20789        #[inline]
20790        unsafe fn encode(
20791            self,
20792            encoder: &mut fidl::encoding::Encoder<
20793                '_,
20794                fidl::encoding::DefaultFuchsiaResourceDialect,
20795            >,
20796            offset: usize,
20797            depth: fidl::encoding::Depth,
20798        ) -> fidl::Result<()> {
20799            encoder.debug_check_bounds::<DictionaryLegacyExportResponse>(offset);
20800            // Zero out padding regions. There's no need to apply masks
20801            // because the unmasked parts will be overwritten by fields.
20802            // Write the fields.
20803            self.0.encode(encoder, offset + 0, depth)?;
20804            Ok(())
20805        }
20806    }
20807
20808    impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
20809        for DictionaryLegacyExportResponse
20810    {
20811        #[inline(always)]
20812        fn new_empty() -> Self {
20813            Self {
20814                dictionary_ref: fidl::new_empty!(
20815                    fidl_fuchsia_component_sandbox::DictionaryRef,
20816                    fidl::encoding::DefaultFuchsiaResourceDialect
20817                ),
20818            }
20819        }
20820
20821        #[inline]
20822        unsafe fn decode(
20823            &mut self,
20824            decoder: &mut fidl::encoding::Decoder<
20825                '_,
20826                fidl::encoding::DefaultFuchsiaResourceDialect,
20827            >,
20828            offset: usize,
20829            _depth: fidl::encoding::Depth,
20830        ) -> fidl::Result<()> {
20831            decoder.debug_check_bounds::<Self>(offset);
20832            // Verify that padding bytes are zero.
20833            fidl::decode!(
20834                fidl_fuchsia_component_sandbox::DictionaryRef,
20835                fidl::encoding::DefaultFuchsiaResourceDialect,
20836                &mut self.dictionary_ref,
20837                decoder,
20838                offset + 0,
20839                _depth
20840            )?;
20841            Ok(())
20842        }
20843    }
20844
20845    impl fidl::encoding::ResourceTypeMarker for DictionaryRemoveResponse {
20846        type Borrowed<'a> = &'a mut Self;
20847        fn take_or_borrow<'a>(
20848            value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
20849        ) -> Self::Borrowed<'a> {
20850            value
20851        }
20852    }
20853
20854    unsafe impl fidl::encoding::TypeMarker for DictionaryRemoveResponse {
20855        type Owned = Self;
20856
20857        #[inline(always)]
20858        fn inline_align(_context: fidl::encoding::Context) -> usize {
20859            8
20860        }
20861
20862        #[inline(always)]
20863        fn inline_size(_context: fidl::encoding::Context) -> usize {
20864            16
20865        }
20866    }
20867
20868    unsafe impl
20869        fidl::encoding::Encode<
20870            DictionaryRemoveResponse,
20871            fidl::encoding::DefaultFuchsiaResourceDialect,
20872        > for &mut DictionaryRemoveResponse
20873    {
20874        #[inline]
20875        unsafe fn encode(
20876            self,
20877            encoder: &mut fidl::encoding::Encoder<
20878                '_,
20879                fidl::encoding::DefaultFuchsiaResourceDialect,
20880            >,
20881            offset: usize,
20882            _depth: fidl::encoding::Depth,
20883        ) -> fidl::Result<()> {
20884            encoder.debug_check_bounds::<DictionaryRemoveResponse>(offset);
20885            // Delegate to tuple encoding.
20886            fidl::encoding::Encode::<DictionaryRemoveResponse, fidl::encoding::DefaultFuchsiaResourceDialect>::encode(
20887                (
20888                    <fidl::encoding::OptionalUnion<CapabilityDeprecated> as fidl::encoding::ResourceTypeMarker>::take_or_borrow(&mut self.capability),
20889                ),
20890                encoder, offset, _depth
20891            )
20892        }
20893    }
20894    unsafe impl<
20895        T0: fidl::encoding::Encode<
20896                fidl::encoding::OptionalUnion<CapabilityDeprecated>,
20897                fidl::encoding::DefaultFuchsiaResourceDialect,
20898            >,
20899    >
20900        fidl::encoding::Encode<
20901            DictionaryRemoveResponse,
20902            fidl::encoding::DefaultFuchsiaResourceDialect,
20903        > for (T0,)
20904    {
20905        #[inline]
20906        unsafe fn encode(
20907            self,
20908            encoder: &mut fidl::encoding::Encoder<
20909                '_,
20910                fidl::encoding::DefaultFuchsiaResourceDialect,
20911            >,
20912            offset: usize,
20913            depth: fidl::encoding::Depth,
20914        ) -> fidl::Result<()> {
20915            encoder.debug_check_bounds::<DictionaryRemoveResponse>(offset);
20916            // Zero out padding regions. There's no need to apply masks
20917            // because the unmasked parts will be overwritten by fields.
20918            // Write the fields.
20919            self.0.encode(encoder, offset + 0, depth)?;
20920            Ok(())
20921        }
20922    }
20923
20924    impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
20925        for DictionaryRemoveResponse
20926    {
20927        #[inline(always)]
20928        fn new_empty() -> Self {
20929            Self {
20930                capability: fidl::new_empty!(
20931                    fidl::encoding::OptionalUnion<CapabilityDeprecated>,
20932                    fidl::encoding::DefaultFuchsiaResourceDialect
20933                ),
20934            }
20935        }
20936
20937        #[inline]
20938        unsafe fn decode(
20939            &mut self,
20940            decoder: &mut fidl::encoding::Decoder<
20941                '_,
20942                fidl::encoding::DefaultFuchsiaResourceDialect,
20943            >,
20944            offset: usize,
20945            _depth: fidl::encoding::Depth,
20946        ) -> fidl::Result<()> {
20947            decoder.debug_check_bounds::<Self>(offset);
20948            // Verify that padding bytes are zero.
20949            fidl::decode!(
20950                fidl::encoding::OptionalUnion<CapabilityDeprecated>,
20951                fidl::encoding::DefaultFuchsiaResourceDialect,
20952                &mut self.capability,
20953                decoder,
20954                offset + 0,
20955                _depth
20956            )?;
20957            Ok(())
20958        }
20959    }
20960
20961    impl fidl::encoding::ResourceTypeMarker for DirConnectorConnectRequest {
20962        type Borrowed<'a> = &'a mut Self;
20963        fn take_or_borrow<'a>(
20964            value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
20965        ) -> Self::Borrowed<'a> {
20966            value
20967        }
20968    }
20969
20970    unsafe impl fidl::encoding::TypeMarker for DirConnectorConnectRequest {
20971        type Owned = Self;
20972
20973        #[inline(always)]
20974        fn inline_align(_context: fidl::encoding::Context) -> usize {
20975            4
20976        }
20977
20978        #[inline(always)]
20979        fn inline_size(_context: fidl::encoding::Context) -> usize {
20980            4
20981        }
20982    }
20983
20984    unsafe impl
20985        fidl::encoding::Encode<
20986            DirConnectorConnectRequest,
20987            fidl::encoding::DefaultFuchsiaResourceDialect,
20988        > for &mut DirConnectorConnectRequest
20989    {
20990        #[inline]
20991        unsafe fn encode(
20992            self,
20993            encoder: &mut fidl::encoding::Encoder<
20994                '_,
20995                fidl::encoding::DefaultFuchsiaResourceDialect,
20996            >,
20997            offset: usize,
20998            _depth: fidl::encoding::Depth,
20999        ) -> fidl::Result<()> {
21000            encoder.debug_check_bounds::<DirConnectorConnectRequest>(offset);
21001            // Delegate to tuple encoding.
21002            fidl::encoding::Encode::<
21003                DirConnectorConnectRequest,
21004                fidl::encoding::DefaultFuchsiaResourceDialect,
21005            >::encode(
21006                (<fidl::encoding::Endpoint<
21007                    fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>,
21008                > as fidl::encoding::ResourceTypeMarker>::take_or_borrow(
21009                    &mut self.channel
21010                ),),
21011                encoder,
21012                offset,
21013                _depth,
21014            )
21015        }
21016    }
21017    unsafe impl<
21018        T0: fidl::encoding::Encode<
21019                fidl::encoding::Endpoint<
21020                    fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>,
21021                >,
21022                fidl::encoding::DefaultFuchsiaResourceDialect,
21023            >,
21024    >
21025        fidl::encoding::Encode<
21026            DirConnectorConnectRequest,
21027            fidl::encoding::DefaultFuchsiaResourceDialect,
21028        > for (T0,)
21029    {
21030        #[inline]
21031        unsafe fn encode(
21032            self,
21033            encoder: &mut fidl::encoding::Encoder<
21034                '_,
21035                fidl::encoding::DefaultFuchsiaResourceDialect,
21036            >,
21037            offset: usize,
21038            depth: fidl::encoding::Depth,
21039        ) -> fidl::Result<()> {
21040            encoder.debug_check_bounds::<DirConnectorConnectRequest>(offset);
21041            // Zero out padding regions. There's no need to apply masks
21042            // because the unmasked parts will be overwritten by fields.
21043            // Write the fields.
21044            self.0.encode(encoder, offset + 0, depth)?;
21045            Ok(())
21046        }
21047    }
21048
21049    impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
21050        for DirConnectorConnectRequest
21051    {
21052        #[inline(always)]
21053        fn new_empty() -> Self {
21054            Self {
21055                channel: fidl::new_empty!(
21056                    fidl::encoding::Endpoint<
21057                        fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>,
21058                    >,
21059                    fidl::encoding::DefaultFuchsiaResourceDialect
21060                ),
21061            }
21062        }
21063
21064        #[inline]
21065        unsafe fn decode(
21066            &mut self,
21067            decoder: &mut fidl::encoding::Decoder<
21068                '_,
21069                fidl::encoding::DefaultFuchsiaResourceDialect,
21070            >,
21071            offset: usize,
21072            _depth: fidl::encoding::Depth,
21073        ) -> fidl::Result<()> {
21074            decoder.debug_check_bounds::<Self>(offset);
21075            // Verify that padding bytes are zero.
21076            fidl::decode!(
21077                fidl::encoding::Endpoint<
21078                    fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>,
21079                >,
21080                fidl::encoding::DefaultFuchsiaResourceDialect,
21081                &mut self.channel,
21082                decoder,
21083                offset + 0,
21084                _depth
21085            )?;
21086            Ok(())
21087        }
21088    }
21089
21090    impl fidl::encoding::ResourceTypeMarker for DirConnectorRouterDeprecatedRouteRequest {
21091        type Borrowed<'a> = &'a mut Self;
21092        fn take_or_borrow<'a>(
21093            value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
21094        ) -> Self::Borrowed<'a> {
21095            value
21096        }
21097    }
21098
21099    unsafe impl fidl::encoding::TypeMarker for DirConnectorRouterDeprecatedRouteRequest {
21100        type Owned = Self;
21101
21102        #[inline(always)]
21103        fn inline_align(_context: fidl::encoding::Context) -> usize {
21104            8
21105        }
21106
21107        #[inline(always)]
21108        fn inline_size(_context: fidl::encoding::Context) -> usize {
21109            24
21110        }
21111    }
21112
21113    unsafe impl
21114        fidl::encoding::Encode<
21115            DirConnectorRouterDeprecatedRouteRequest,
21116            fidl::encoding::DefaultFuchsiaResourceDialect,
21117        > for &mut DirConnectorRouterDeprecatedRouteRequest
21118    {
21119        #[inline]
21120        unsafe fn encode(
21121            self,
21122            encoder: &mut fidl::encoding::Encoder<
21123                '_,
21124                fidl::encoding::DefaultFuchsiaResourceDialect,
21125            >,
21126            offset: usize,
21127            _depth: fidl::encoding::Depth,
21128        ) -> fidl::Result<()> {
21129            encoder.debug_check_bounds::<DirConnectorRouterDeprecatedRouteRequest>(offset);
21130            // Delegate to tuple encoding.
21131            fidl::encoding::Encode::<DirConnectorRouterDeprecatedRouteRequest, fidl::encoding::DefaultFuchsiaResourceDialect>::encode(
21132                (
21133                    <DeprecatedRouteRequest as fidl::encoding::ResourceTypeMarker>::take_or_borrow(&mut self.request),
21134                    <fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<DirConnectorMarker>> as fidl::encoding::ResourceTypeMarker>::take_or_borrow(&mut self.dir_connector_server_end),
21135                ),
21136                encoder, offset, _depth
21137            )
21138        }
21139    }
21140    unsafe impl<
21141        T0: fidl::encoding::Encode<
21142                DeprecatedRouteRequest,
21143                fidl::encoding::DefaultFuchsiaResourceDialect,
21144            >,
21145        T1: fidl::encoding::Encode<
21146                fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<DirConnectorMarker>>,
21147                fidl::encoding::DefaultFuchsiaResourceDialect,
21148            >,
21149    >
21150        fidl::encoding::Encode<
21151            DirConnectorRouterDeprecatedRouteRequest,
21152            fidl::encoding::DefaultFuchsiaResourceDialect,
21153        > for (T0, T1)
21154    {
21155        #[inline]
21156        unsafe fn encode(
21157            self,
21158            encoder: &mut fidl::encoding::Encoder<
21159                '_,
21160                fidl::encoding::DefaultFuchsiaResourceDialect,
21161            >,
21162            offset: usize,
21163            depth: fidl::encoding::Depth,
21164        ) -> fidl::Result<()> {
21165            encoder.debug_check_bounds::<DirConnectorRouterDeprecatedRouteRequest>(offset);
21166            // Zero out padding regions. There's no need to apply masks
21167            // because the unmasked parts will be overwritten by fields.
21168            unsafe {
21169                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(16);
21170                (ptr as *mut u64).write_unaligned(0);
21171            }
21172            // Write the fields.
21173            self.0.encode(encoder, offset + 0, depth)?;
21174            self.1.encode(encoder, offset + 16, depth)?;
21175            Ok(())
21176        }
21177    }
21178
21179    impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
21180        for DirConnectorRouterDeprecatedRouteRequest
21181    {
21182        #[inline(always)]
21183        fn new_empty() -> Self {
21184            Self {
21185                request: fidl::new_empty!(
21186                    DeprecatedRouteRequest,
21187                    fidl::encoding::DefaultFuchsiaResourceDialect
21188                ),
21189                dir_connector_server_end: fidl::new_empty!(
21190                    fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<DirConnectorMarker>>,
21191                    fidl::encoding::DefaultFuchsiaResourceDialect
21192                ),
21193            }
21194        }
21195
21196        #[inline]
21197        unsafe fn decode(
21198            &mut self,
21199            decoder: &mut fidl::encoding::Decoder<
21200                '_,
21201                fidl::encoding::DefaultFuchsiaResourceDialect,
21202            >,
21203            offset: usize,
21204            _depth: fidl::encoding::Depth,
21205        ) -> fidl::Result<()> {
21206            decoder.debug_check_bounds::<Self>(offset);
21207            // Verify that padding bytes are zero.
21208            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(16) };
21209            let padval = unsafe { (ptr as *const u64).read_unaligned() };
21210            let mask = 0xffffffff00000000u64;
21211            let maskedval = padval & mask;
21212            if maskedval != 0 {
21213                return Err(fidl::Error::NonZeroPadding {
21214                    padding_start: offset + 16 + ((mask as u64).trailing_zeros() / 8) as usize,
21215                });
21216            }
21217            fidl::decode!(
21218                DeprecatedRouteRequest,
21219                fidl::encoding::DefaultFuchsiaResourceDialect,
21220                &mut self.request,
21221                decoder,
21222                offset + 0,
21223                _depth
21224            )?;
21225            fidl::decode!(
21226                fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<DirConnectorMarker>>,
21227                fidl::encoding::DefaultFuchsiaResourceDialect,
21228                &mut self.dir_connector_server_end,
21229                decoder,
21230                offset + 16,
21231                _depth
21232            )?;
21233            Ok(())
21234        }
21235    }
21236
21237    impl fidl::encoding::ResourceTypeMarker for DirConnectorRouterDeprecatedRouteResponse {
21238        type Borrowed<'a> = &'a mut Self;
21239        fn take_or_borrow<'a>(
21240            value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
21241        ) -> Self::Borrowed<'a> {
21242            value
21243        }
21244    }
21245
21246    unsafe impl fidl::encoding::TypeMarker for DirConnectorRouterDeprecatedRouteResponse {
21247        type Owned = Self;
21248
21249        #[inline(always)]
21250        fn inline_align(_context: fidl::encoding::Context) -> usize {
21251            4
21252        }
21253
21254        #[inline(always)]
21255        fn inline_size(_context: fidl::encoding::Context) -> usize {
21256            4
21257        }
21258    }
21259
21260    unsafe impl
21261        fidl::encoding::Encode<
21262            DirConnectorRouterDeprecatedRouteResponse,
21263            fidl::encoding::DefaultFuchsiaResourceDialect,
21264        > for &mut DirConnectorRouterDeprecatedRouteResponse
21265    {
21266        #[inline]
21267        unsafe fn encode(
21268            self,
21269            encoder: &mut fidl::encoding::Encoder<
21270                '_,
21271                fidl::encoding::DefaultFuchsiaResourceDialect,
21272            >,
21273            offset: usize,
21274            _depth: fidl::encoding::Depth,
21275        ) -> fidl::Result<()> {
21276            encoder.debug_check_bounds::<DirConnectorRouterDeprecatedRouteResponse>(offset);
21277            // Delegate to tuple encoding.
21278            fidl::encoding::Encode::<
21279                DirConnectorRouterDeprecatedRouteResponse,
21280                fidl::encoding::DefaultFuchsiaResourceDialect,
21281            >::encode(
21282                (<RouterResponse as fidl::encoding::ValueTypeMarker>::borrow(&self.response),),
21283                encoder,
21284                offset,
21285                _depth,
21286            )
21287        }
21288    }
21289    unsafe impl<
21290        T0: fidl::encoding::Encode<RouterResponse, fidl::encoding::DefaultFuchsiaResourceDialect>,
21291    >
21292        fidl::encoding::Encode<
21293            DirConnectorRouterDeprecatedRouteResponse,
21294            fidl::encoding::DefaultFuchsiaResourceDialect,
21295        > for (T0,)
21296    {
21297        #[inline]
21298        unsafe fn encode(
21299            self,
21300            encoder: &mut fidl::encoding::Encoder<
21301                '_,
21302                fidl::encoding::DefaultFuchsiaResourceDialect,
21303            >,
21304            offset: usize,
21305            depth: fidl::encoding::Depth,
21306        ) -> fidl::Result<()> {
21307            encoder.debug_check_bounds::<DirConnectorRouterDeprecatedRouteResponse>(offset);
21308            // Zero out padding regions. There's no need to apply masks
21309            // because the unmasked parts will be overwritten by fields.
21310            // Write the fields.
21311            self.0.encode(encoder, offset + 0, depth)?;
21312            Ok(())
21313        }
21314    }
21315
21316    impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
21317        for DirConnectorRouterDeprecatedRouteResponse
21318    {
21319        #[inline(always)]
21320        fn new_empty() -> Self {
21321            Self {
21322                response: fidl::new_empty!(
21323                    RouterResponse,
21324                    fidl::encoding::DefaultFuchsiaResourceDialect
21325                ),
21326            }
21327        }
21328
21329        #[inline]
21330        unsafe fn decode(
21331            &mut self,
21332            decoder: &mut fidl::encoding::Decoder<
21333                '_,
21334                fidl::encoding::DefaultFuchsiaResourceDialect,
21335            >,
21336            offset: usize,
21337            _depth: fidl::encoding::Depth,
21338        ) -> fidl::Result<()> {
21339            decoder.debug_check_bounds::<Self>(offset);
21340            // Verify that padding bytes are zero.
21341            fidl::decode!(
21342                RouterResponse,
21343                fidl::encoding::DefaultFuchsiaResourceDialect,
21344                &mut self.response,
21345                decoder,
21346                offset + 0,
21347                _depth
21348            )?;
21349            Ok(())
21350        }
21351    }
21352
21353    impl fidl::encoding::ResourceTypeMarker for DirConnectorRouterRouteRequest {
21354        type Borrowed<'a> = &'a mut Self;
21355        fn take_or_borrow<'a>(
21356            value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
21357        ) -> Self::Borrowed<'a> {
21358            value
21359        }
21360    }
21361
21362    unsafe impl fidl::encoding::TypeMarker for DirConnectorRouterRouteRequest {
21363        type Owned = Self;
21364
21365        #[inline(always)]
21366        fn inline_align(_context: fidl::encoding::Context) -> usize {
21367            8
21368        }
21369
21370        #[inline(always)]
21371        fn inline_size(_context: fidl::encoding::Context) -> usize {
21372            24
21373        }
21374    }
21375
21376    unsafe impl
21377        fidl::encoding::Encode<
21378            DirConnectorRouterRouteRequest,
21379            fidl::encoding::DefaultFuchsiaResourceDialect,
21380        > for &mut DirConnectorRouterRouteRequest
21381    {
21382        #[inline]
21383        unsafe fn encode(
21384            self,
21385            encoder: &mut fidl::encoding::Encoder<
21386                '_,
21387                fidl::encoding::DefaultFuchsiaResourceDialect,
21388            >,
21389            offset: usize,
21390            _depth: fidl::encoding::Depth,
21391        ) -> fidl::Result<()> {
21392            encoder.debug_check_bounds::<DirConnectorRouterRouteRequest>(offset);
21393            // Delegate to tuple encoding.
21394            fidl::encoding::Encode::<
21395                DirConnectorRouterRouteRequest,
21396                fidl::encoding::DefaultFuchsiaResourceDialect,
21397            >::encode(
21398                (
21399                    <RouteRequest as fidl::encoding::ResourceTypeMarker>::take_or_borrow(
21400                        &mut self.request,
21401                    ),
21402                    <fidl::encoding::HandleType<
21403                        fidl::EventPair,
21404                        { fidl::ObjectType::EVENTPAIR.into_raw() },
21405                        2147483648,
21406                    > as fidl::encoding::ResourceTypeMarker>::take_or_borrow(
21407                        &mut self.instance_token,
21408                    ),
21409                    <fidl::encoding::HandleType<
21410                        fidl::EventPair,
21411                        { fidl::ObjectType::EVENTPAIR.into_raw() },
21412                        2147483648,
21413                    > as fidl::encoding::ResourceTypeMarker>::take_or_borrow(
21414                        &mut self.handle
21415                    ),
21416                ),
21417                encoder,
21418                offset,
21419                _depth,
21420            )
21421        }
21422    }
21423    unsafe impl<
21424        T0: fidl::encoding::Encode<RouteRequest, fidl::encoding::DefaultFuchsiaResourceDialect>,
21425        T1: fidl::encoding::Encode<
21426                fidl::encoding::HandleType<
21427                    fidl::EventPair,
21428                    { fidl::ObjectType::EVENTPAIR.into_raw() },
21429                    2147483648,
21430                >,
21431                fidl::encoding::DefaultFuchsiaResourceDialect,
21432            >,
21433        T2: fidl::encoding::Encode<
21434                fidl::encoding::HandleType<
21435                    fidl::EventPair,
21436                    { fidl::ObjectType::EVENTPAIR.into_raw() },
21437                    2147483648,
21438                >,
21439                fidl::encoding::DefaultFuchsiaResourceDialect,
21440            >,
21441    >
21442        fidl::encoding::Encode<
21443            DirConnectorRouterRouteRequest,
21444            fidl::encoding::DefaultFuchsiaResourceDialect,
21445        > for (T0, T1, T2)
21446    {
21447        #[inline]
21448        unsafe fn encode(
21449            self,
21450            encoder: &mut fidl::encoding::Encoder<
21451                '_,
21452                fidl::encoding::DefaultFuchsiaResourceDialect,
21453            >,
21454            offset: usize,
21455            depth: fidl::encoding::Depth,
21456        ) -> fidl::Result<()> {
21457            encoder.debug_check_bounds::<DirConnectorRouterRouteRequest>(offset);
21458            // Zero out padding regions. There's no need to apply masks
21459            // because the unmasked parts will be overwritten by fields.
21460            // Write the fields.
21461            self.0.encode(encoder, offset + 0, depth)?;
21462            self.1.encode(encoder, offset + 16, depth)?;
21463            self.2.encode(encoder, offset + 20, depth)?;
21464            Ok(())
21465        }
21466    }
21467
21468    impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
21469        for DirConnectorRouterRouteRequest
21470    {
21471        #[inline(always)]
21472        fn new_empty() -> Self {
21473            Self {
21474                request: fidl::new_empty!(
21475                    RouteRequest,
21476                    fidl::encoding::DefaultFuchsiaResourceDialect
21477                ),
21478                instance_token: fidl::new_empty!(fidl::encoding::HandleType<fidl::EventPair, { fidl::ObjectType::EVENTPAIR.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect),
21479                handle: fidl::new_empty!(fidl::encoding::HandleType<fidl::EventPair, { fidl::ObjectType::EVENTPAIR.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect),
21480            }
21481        }
21482
21483        #[inline]
21484        unsafe fn decode(
21485            &mut self,
21486            decoder: &mut fidl::encoding::Decoder<
21487                '_,
21488                fidl::encoding::DefaultFuchsiaResourceDialect,
21489            >,
21490            offset: usize,
21491            _depth: fidl::encoding::Depth,
21492        ) -> fidl::Result<()> {
21493            decoder.debug_check_bounds::<Self>(offset);
21494            // Verify that padding bytes are zero.
21495            fidl::decode!(
21496                RouteRequest,
21497                fidl::encoding::DefaultFuchsiaResourceDialect,
21498                &mut self.request,
21499                decoder,
21500                offset + 0,
21501                _depth
21502            )?;
21503            fidl::decode!(fidl::encoding::HandleType<fidl::EventPair, { fidl::ObjectType::EVENTPAIR.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect, &mut self.instance_token, decoder, offset + 16, _depth)?;
21504            fidl::decode!(fidl::encoding::HandleType<fidl::EventPair, { fidl::ObjectType::EVENTPAIR.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect, &mut self.handle, decoder, offset + 20, _depth)?;
21505            Ok(())
21506        }
21507    }
21508
21509    impl fidl::encoding::ResourceTypeMarker for DirReceiverDeprecatedReceiveRequest {
21510        type Borrowed<'a> = &'a mut Self;
21511        fn take_or_borrow<'a>(
21512            value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
21513        ) -> Self::Borrowed<'a> {
21514            value
21515        }
21516    }
21517
21518    unsafe impl fidl::encoding::TypeMarker for DirReceiverDeprecatedReceiveRequest {
21519        type Owned = Self;
21520
21521        #[inline(always)]
21522        fn inline_align(_context: fidl::encoding::Context) -> usize {
21523            4
21524        }
21525
21526        #[inline(always)]
21527        fn inline_size(_context: fidl::encoding::Context) -> usize {
21528            4
21529        }
21530    }
21531
21532    unsafe impl
21533        fidl::encoding::Encode<
21534            DirReceiverDeprecatedReceiveRequest,
21535            fidl::encoding::DefaultFuchsiaResourceDialect,
21536        > for &mut DirReceiverDeprecatedReceiveRequest
21537    {
21538        #[inline]
21539        unsafe fn encode(
21540            self,
21541            encoder: &mut fidl::encoding::Encoder<
21542                '_,
21543                fidl::encoding::DefaultFuchsiaResourceDialect,
21544            >,
21545            offset: usize,
21546            _depth: fidl::encoding::Depth,
21547        ) -> fidl::Result<()> {
21548            encoder.debug_check_bounds::<DirReceiverDeprecatedReceiveRequest>(offset);
21549            // Delegate to tuple encoding.
21550            fidl::encoding::Encode::<
21551                DirReceiverDeprecatedReceiveRequest,
21552                fidl::encoding::DefaultFuchsiaResourceDialect,
21553            >::encode(
21554                (<fidl::encoding::Endpoint<
21555                    fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>,
21556                > as fidl::encoding::ResourceTypeMarker>::take_or_borrow(
21557                    &mut self.channel
21558                ),),
21559                encoder,
21560                offset,
21561                _depth,
21562            )
21563        }
21564    }
21565    unsafe impl<
21566        T0: fidl::encoding::Encode<
21567                fidl::encoding::Endpoint<
21568                    fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>,
21569                >,
21570                fidl::encoding::DefaultFuchsiaResourceDialect,
21571            >,
21572    >
21573        fidl::encoding::Encode<
21574            DirReceiverDeprecatedReceiveRequest,
21575            fidl::encoding::DefaultFuchsiaResourceDialect,
21576        > for (T0,)
21577    {
21578        #[inline]
21579        unsafe fn encode(
21580            self,
21581            encoder: &mut fidl::encoding::Encoder<
21582                '_,
21583                fidl::encoding::DefaultFuchsiaResourceDialect,
21584            >,
21585            offset: usize,
21586            depth: fidl::encoding::Depth,
21587        ) -> fidl::Result<()> {
21588            encoder.debug_check_bounds::<DirReceiverDeprecatedReceiveRequest>(offset);
21589            // Zero out padding regions. There's no need to apply masks
21590            // because the unmasked parts will be overwritten by fields.
21591            // Write the fields.
21592            self.0.encode(encoder, offset + 0, depth)?;
21593            Ok(())
21594        }
21595    }
21596
21597    impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
21598        for DirReceiverDeprecatedReceiveRequest
21599    {
21600        #[inline(always)]
21601        fn new_empty() -> Self {
21602            Self {
21603                channel: fidl::new_empty!(
21604                    fidl::encoding::Endpoint<
21605                        fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>,
21606                    >,
21607                    fidl::encoding::DefaultFuchsiaResourceDialect
21608                ),
21609            }
21610        }
21611
21612        #[inline]
21613        unsafe fn decode(
21614            &mut self,
21615            decoder: &mut fidl::encoding::Decoder<
21616                '_,
21617                fidl::encoding::DefaultFuchsiaResourceDialect,
21618            >,
21619            offset: usize,
21620            _depth: fidl::encoding::Depth,
21621        ) -> fidl::Result<()> {
21622            decoder.debug_check_bounds::<Self>(offset);
21623            // Verify that padding bytes are zero.
21624            fidl::decode!(
21625                fidl::encoding::Endpoint<
21626                    fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>,
21627                >,
21628                fidl::encoding::DefaultFuchsiaResourceDialect,
21629                &mut self.channel,
21630                decoder,
21631                offset + 0,
21632                _depth
21633            )?;
21634            Ok(())
21635        }
21636    }
21637
21638    impl fidl::encoding::ResourceTypeMarker for DirReceiverReceiveRequest {
21639        type Borrowed<'a> = &'a mut Self;
21640        fn take_or_borrow<'a>(
21641            value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
21642        ) -> Self::Borrowed<'a> {
21643            value
21644        }
21645    }
21646
21647    unsafe impl fidl::encoding::TypeMarker for DirReceiverReceiveRequest {
21648        type Owned = Self;
21649
21650        #[inline(always)]
21651        fn inline_align(_context: fidl::encoding::Context) -> usize {
21652            8
21653        }
21654
21655        #[inline(always)]
21656        fn inline_size(_context: fidl::encoding::Context) -> usize {
21657            32
21658        }
21659    }
21660
21661    unsafe impl
21662        fidl::encoding::Encode<
21663            DirReceiverReceiveRequest,
21664            fidl::encoding::DefaultFuchsiaResourceDialect,
21665        > for &mut DirReceiverReceiveRequest
21666    {
21667        #[inline]
21668        unsafe fn encode(
21669            self,
21670            encoder: &mut fidl::encoding::Encoder<
21671                '_,
21672                fidl::encoding::DefaultFuchsiaResourceDialect,
21673            >,
21674            offset: usize,
21675            _depth: fidl::encoding::Depth,
21676        ) -> fidl::Result<()> {
21677            encoder.debug_check_bounds::<DirReceiverReceiveRequest>(offset);
21678            // Delegate to tuple encoding.
21679            fidl::encoding::Encode::<DirReceiverReceiveRequest, fidl::encoding::DefaultFuchsiaResourceDialect>::encode(
21680                (
21681                    <fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>> as fidl::encoding::ResourceTypeMarker>::take_or_borrow(&mut self.channel),
21682                    <fidl::encoding::BoundedString<4095> as fidl::encoding::ValueTypeMarker>::borrow(&self.path),
21683                    <fidl_fuchsia_io::Flags as fidl::encoding::ValueTypeMarker>::borrow(&self.rights),
21684                ),
21685                encoder, offset, _depth
21686            )
21687        }
21688    }
21689    unsafe impl<
21690        T0: fidl::encoding::Encode<
21691                fidl::encoding::Endpoint<
21692                    fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>,
21693                >,
21694                fidl::encoding::DefaultFuchsiaResourceDialect,
21695            >,
21696        T1: fidl::encoding::Encode<
21697                fidl::encoding::BoundedString<4095>,
21698                fidl::encoding::DefaultFuchsiaResourceDialect,
21699            >,
21700        T2: fidl::encoding::Encode<
21701                fidl_fuchsia_io::Flags,
21702                fidl::encoding::DefaultFuchsiaResourceDialect,
21703            >,
21704    >
21705        fidl::encoding::Encode<
21706            DirReceiverReceiveRequest,
21707            fidl::encoding::DefaultFuchsiaResourceDialect,
21708        > for (T0, T1, T2)
21709    {
21710        #[inline]
21711        unsafe fn encode(
21712            self,
21713            encoder: &mut fidl::encoding::Encoder<
21714                '_,
21715                fidl::encoding::DefaultFuchsiaResourceDialect,
21716            >,
21717            offset: usize,
21718            depth: fidl::encoding::Depth,
21719        ) -> fidl::Result<()> {
21720            encoder.debug_check_bounds::<DirReceiverReceiveRequest>(offset);
21721            // Zero out padding regions. There's no need to apply masks
21722            // because the unmasked parts will be overwritten by fields.
21723            unsafe {
21724                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(0);
21725                (ptr as *mut u64).write_unaligned(0);
21726            }
21727            // Write the fields.
21728            self.0.encode(encoder, offset + 0, depth)?;
21729            self.1.encode(encoder, offset + 8, depth)?;
21730            self.2.encode(encoder, offset + 24, depth)?;
21731            Ok(())
21732        }
21733    }
21734
21735    impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
21736        for DirReceiverReceiveRequest
21737    {
21738        #[inline(always)]
21739        fn new_empty() -> Self {
21740            Self {
21741                channel: fidl::new_empty!(
21742                    fidl::encoding::Endpoint<
21743                        fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>,
21744                    >,
21745                    fidl::encoding::DefaultFuchsiaResourceDialect
21746                ),
21747                path: fidl::new_empty!(
21748                    fidl::encoding::BoundedString<4095>,
21749                    fidl::encoding::DefaultFuchsiaResourceDialect
21750                ),
21751                rights: fidl::new_empty!(
21752                    fidl_fuchsia_io::Flags,
21753                    fidl::encoding::DefaultFuchsiaResourceDialect
21754                ),
21755            }
21756        }
21757
21758        #[inline]
21759        unsafe fn decode(
21760            &mut self,
21761            decoder: &mut fidl::encoding::Decoder<
21762                '_,
21763                fidl::encoding::DefaultFuchsiaResourceDialect,
21764            >,
21765            offset: usize,
21766            _depth: fidl::encoding::Depth,
21767        ) -> fidl::Result<()> {
21768            decoder.debug_check_bounds::<Self>(offset);
21769            // Verify that padding bytes are zero.
21770            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(0) };
21771            let padval = unsafe { (ptr as *const u64).read_unaligned() };
21772            let mask = 0xffffffff00000000u64;
21773            let maskedval = padval & mask;
21774            if maskedval != 0 {
21775                return Err(fidl::Error::NonZeroPadding {
21776                    padding_start: offset + 0 + ((mask as u64).trailing_zeros() / 8) as usize,
21777                });
21778            }
21779            fidl::decode!(
21780                fidl::encoding::Endpoint<
21781                    fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>,
21782                >,
21783                fidl::encoding::DefaultFuchsiaResourceDialect,
21784                &mut self.channel,
21785                decoder,
21786                offset + 0,
21787                _depth
21788            )?;
21789            fidl::decode!(
21790                fidl::encoding::BoundedString<4095>,
21791                fidl::encoding::DefaultFuchsiaResourceDialect,
21792                &mut self.path,
21793                decoder,
21794                offset + 8,
21795                _depth
21796            )?;
21797            fidl::decode!(
21798                fidl_fuchsia_io::Flags,
21799                fidl::encoding::DefaultFuchsiaResourceDialect,
21800                &mut self.rights,
21801                decoder,
21802                offset + 24,
21803                _depth
21804            )?;
21805            Ok(())
21806        }
21807    }
21808
21809    impl fidl::encoding::ResourceTypeMarker for ReceiverReceiveRequest {
21810        type Borrowed<'a> = &'a mut Self;
21811        fn take_or_borrow<'a>(
21812            value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
21813        ) -> Self::Borrowed<'a> {
21814            value
21815        }
21816    }
21817
21818    unsafe impl fidl::encoding::TypeMarker for ReceiverReceiveRequest {
21819        type Owned = Self;
21820
21821        #[inline(always)]
21822        fn inline_align(_context: fidl::encoding::Context) -> usize {
21823            4
21824        }
21825
21826        #[inline(always)]
21827        fn inline_size(_context: fidl::encoding::Context) -> usize {
21828            4
21829        }
21830    }
21831
21832    unsafe impl
21833        fidl::encoding::Encode<
21834            ReceiverReceiveRequest,
21835            fidl::encoding::DefaultFuchsiaResourceDialect,
21836        > for &mut ReceiverReceiveRequest
21837    {
21838        #[inline]
21839        unsafe fn encode(
21840            self,
21841            encoder: &mut fidl::encoding::Encoder<
21842                '_,
21843                fidl::encoding::DefaultFuchsiaResourceDialect,
21844            >,
21845            offset: usize,
21846            _depth: fidl::encoding::Depth,
21847        ) -> fidl::Result<()> {
21848            encoder.debug_check_bounds::<ReceiverReceiveRequest>(offset);
21849            // Delegate to tuple encoding.
21850            fidl::encoding::Encode::<
21851                ReceiverReceiveRequest,
21852                fidl::encoding::DefaultFuchsiaResourceDialect,
21853            >::encode(
21854                (<fidl::encoding::HandleType<
21855                    fidl::Channel,
21856                    { fidl::ObjectType::CHANNEL.into_raw() },
21857                    2147483648,
21858                > as fidl::encoding::ResourceTypeMarker>::take_or_borrow(
21859                    &mut self.channel
21860                ),),
21861                encoder,
21862                offset,
21863                _depth,
21864            )
21865        }
21866    }
21867    unsafe impl<
21868        T0: fidl::encoding::Encode<
21869                fidl::encoding::HandleType<
21870                    fidl::Channel,
21871                    { fidl::ObjectType::CHANNEL.into_raw() },
21872                    2147483648,
21873                >,
21874                fidl::encoding::DefaultFuchsiaResourceDialect,
21875            >,
21876    >
21877        fidl::encoding::Encode<
21878            ReceiverReceiveRequest,
21879            fidl::encoding::DefaultFuchsiaResourceDialect,
21880        > for (T0,)
21881    {
21882        #[inline]
21883        unsafe fn encode(
21884            self,
21885            encoder: &mut fidl::encoding::Encoder<
21886                '_,
21887                fidl::encoding::DefaultFuchsiaResourceDialect,
21888            >,
21889            offset: usize,
21890            depth: fidl::encoding::Depth,
21891        ) -> fidl::Result<()> {
21892            encoder.debug_check_bounds::<ReceiverReceiveRequest>(offset);
21893            // Zero out padding regions. There's no need to apply masks
21894            // because the unmasked parts will be overwritten by fields.
21895            // Write the fields.
21896            self.0.encode(encoder, offset + 0, depth)?;
21897            Ok(())
21898        }
21899    }
21900
21901    impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
21902        for ReceiverReceiveRequest
21903    {
21904        #[inline(always)]
21905        fn new_empty() -> Self {
21906            Self {
21907                channel: fidl::new_empty!(fidl::encoding::HandleType<fidl::Channel, { fidl::ObjectType::CHANNEL.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect),
21908            }
21909        }
21910
21911        #[inline]
21912        unsafe fn decode(
21913            &mut self,
21914            decoder: &mut fidl::encoding::Decoder<
21915                '_,
21916                fidl::encoding::DefaultFuchsiaResourceDialect,
21917            >,
21918            offset: usize,
21919            _depth: fidl::encoding::Depth,
21920        ) -> fidl::Result<()> {
21921            decoder.debug_check_bounds::<Self>(offset);
21922            // Verify that padding bytes are zero.
21923            fidl::decode!(fidl::encoding::HandleType<fidl::Channel, { fidl::ObjectType::CHANNEL.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect, &mut self.channel, decoder, offset + 0, _depth)?;
21924            Ok(())
21925        }
21926    }
21927
21928    impl fidl::encoding::ResourceTypeMarker for WeakInstanceToken {
21929        type Borrowed<'a> = &'a mut Self;
21930        fn take_or_borrow<'a>(
21931            value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
21932        ) -> Self::Borrowed<'a> {
21933            value
21934        }
21935    }
21936
21937    unsafe impl fidl::encoding::TypeMarker for WeakInstanceToken {
21938        type Owned = Self;
21939
21940        #[inline(always)]
21941        fn inline_align(_context: fidl::encoding::Context) -> usize {
21942            4
21943        }
21944
21945        #[inline(always)]
21946        fn inline_size(_context: fidl::encoding::Context) -> usize {
21947            4
21948        }
21949    }
21950
21951    unsafe impl
21952        fidl::encoding::Encode<WeakInstanceToken, fidl::encoding::DefaultFuchsiaResourceDialect>
21953        for &mut WeakInstanceToken
21954    {
21955        #[inline]
21956        unsafe fn encode(
21957            self,
21958            encoder: &mut fidl::encoding::Encoder<
21959                '_,
21960                fidl::encoding::DefaultFuchsiaResourceDialect,
21961            >,
21962            offset: usize,
21963            _depth: fidl::encoding::Depth,
21964        ) -> fidl::Result<()> {
21965            encoder.debug_check_bounds::<WeakInstanceToken>(offset);
21966            // Delegate to tuple encoding.
21967            fidl::encoding::Encode::<WeakInstanceToken, fidl::encoding::DefaultFuchsiaResourceDialect>::encode(
21968                (
21969                    <fidl::encoding::HandleType<fidl::EventPair, { fidl::ObjectType::EVENTPAIR.into_raw() }, 2147483648> as fidl::encoding::ResourceTypeMarker>::take_or_borrow(&mut self.token),
21970                ),
21971                encoder, offset, _depth
21972            )
21973        }
21974    }
21975    unsafe impl<
21976        T0: fidl::encoding::Encode<
21977                fidl::encoding::HandleType<
21978                    fidl::EventPair,
21979                    { fidl::ObjectType::EVENTPAIR.into_raw() },
21980                    2147483648,
21981                >,
21982                fidl::encoding::DefaultFuchsiaResourceDialect,
21983            >,
21984    > fidl::encoding::Encode<WeakInstanceToken, fidl::encoding::DefaultFuchsiaResourceDialect>
21985        for (T0,)
21986    {
21987        #[inline]
21988        unsafe fn encode(
21989            self,
21990            encoder: &mut fidl::encoding::Encoder<
21991                '_,
21992                fidl::encoding::DefaultFuchsiaResourceDialect,
21993            >,
21994            offset: usize,
21995            depth: fidl::encoding::Depth,
21996        ) -> fidl::Result<()> {
21997            encoder.debug_check_bounds::<WeakInstanceToken>(offset);
21998            // Zero out padding regions. There's no need to apply masks
21999            // because the unmasked parts will be overwritten by fields.
22000            // Write the fields.
22001            self.0.encode(encoder, offset + 0, depth)?;
22002            Ok(())
22003        }
22004    }
22005
22006    impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
22007        for WeakInstanceToken
22008    {
22009        #[inline(always)]
22010        fn new_empty() -> Self {
22011            Self {
22012                token: fidl::new_empty!(fidl::encoding::HandleType<fidl::EventPair, { fidl::ObjectType::EVENTPAIR.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect),
22013            }
22014        }
22015
22016        #[inline]
22017        unsafe fn decode(
22018            &mut self,
22019            decoder: &mut fidl::encoding::Decoder<
22020                '_,
22021                fidl::encoding::DefaultFuchsiaResourceDialect,
22022            >,
22023            offset: usize,
22024            _depth: fidl::encoding::Depth,
22025        ) -> fidl::Result<()> {
22026            decoder.debug_check_bounds::<Self>(offset);
22027            // Verify that padding bytes are zero.
22028            fidl::decode!(fidl::encoding::HandleType<fidl::EventPair, { fidl::ObjectType::EVENTPAIR.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect, &mut self.token, decoder, offset + 0, _depth)?;
22029            Ok(())
22030        }
22031    }
22032
22033    impl CapabilitiesDictionaryRemoveRequest {
22034        #[inline(always)]
22035        fn max_ordinal_present(&self) -> u64 {
22036            if let Some(_) = self.value {
22037                return 3;
22038            }
22039            if let Some(_) = self.key {
22040                return 2;
22041            }
22042            if let Some(_) = self.dictionary {
22043                return 1;
22044            }
22045            0
22046        }
22047    }
22048
22049    impl fidl::encoding::ResourceTypeMarker for CapabilitiesDictionaryRemoveRequest {
22050        type Borrowed<'a> = &'a mut Self;
22051        fn take_or_borrow<'a>(
22052            value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
22053        ) -> Self::Borrowed<'a> {
22054            value
22055        }
22056    }
22057
22058    unsafe impl fidl::encoding::TypeMarker for CapabilitiesDictionaryRemoveRequest {
22059        type Owned = Self;
22060
22061        #[inline(always)]
22062        fn inline_align(_context: fidl::encoding::Context) -> usize {
22063            8
22064        }
22065
22066        #[inline(always)]
22067        fn inline_size(_context: fidl::encoding::Context) -> usize {
22068            16
22069        }
22070    }
22071
22072    unsafe impl
22073        fidl::encoding::Encode<
22074            CapabilitiesDictionaryRemoveRequest,
22075            fidl::encoding::DefaultFuchsiaResourceDialect,
22076        > for &mut CapabilitiesDictionaryRemoveRequest
22077    {
22078        unsafe fn encode(
22079            self,
22080            encoder: &mut fidl::encoding::Encoder<
22081                '_,
22082                fidl::encoding::DefaultFuchsiaResourceDialect,
22083            >,
22084            offset: usize,
22085            mut depth: fidl::encoding::Depth,
22086        ) -> fidl::Result<()> {
22087            encoder.debug_check_bounds::<CapabilitiesDictionaryRemoveRequest>(offset);
22088            // Vector header
22089            let max_ordinal: u64 = self.max_ordinal_present();
22090            encoder.write_num(max_ordinal, offset);
22091            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
22092            // Calling encoder.out_of_line_offset(0) is not allowed.
22093            if max_ordinal == 0 {
22094                return Ok(());
22095            }
22096            depth.increment()?;
22097            let envelope_size = 8;
22098            let bytes_len = max_ordinal as usize * envelope_size;
22099            #[allow(unused_variables)]
22100            let offset = encoder.out_of_line_offset(bytes_len);
22101            let mut _prev_end_offset: usize = 0;
22102            if 1 > max_ordinal {
22103                return Ok(());
22104            }
22105
22106            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
22107            // are envelope_size bytes.
22108            let cur_offset: usize = (1 - 1) * envelope_size;
22109
22110            // Zero reserved fields.
22111            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
22112
22113            // Safety:
22114            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
22115            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
22116            //   envelope_size bytes, there is always sufficient room.
22117            fidl::encoding::encode_in_envelope_optional::<
22118                fidl::encoding::HandleType<
22119                    fidl::EventPair,
22120                    { fidl::ObjectType::EVENTPAIR.into_raw() },
22121                    2147483648,
22122                >,
22123                fidl::encoding::DefaultFuchsiaResourceDialect,
22124            >(
22125                self.dictionary.as_mut().map(
22126                    <fidl::encoding::HandleType<
22127                        fidl::EventPair,
22128                        { fidl::ObjectType::EVENTPAIR.into_raw() },
22129                        2147483648,
22130                    > as fidl::encoding::ResourceTypeMarker>::take_or_borrow,
22131                ),
22132                encoder,
22133                offset + cur_offset,
22134                depth,
22135            )?;
22136
22137            _prev_end_offset = cur_offset + envelope_size;
22138            if 2 > max_ordinal {
22139                return Ok(());
22140            }
22141
22142            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
22143            // are envelope_size bytes.
22144            let cur_offset: usize = (2 - 1) * envelope_size;
22145
22146            // Zero reserved fields.
22147            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
22148
22149            // Safety:
22150            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
22151            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
22152            //   envelope_size bytes, there is always sufficient room.
22153            fidl::encoding::encode_in_envelope_optional::<
22154                fidl::encoding::BoundedString<100>,
22155                fidl::encoding::DefaultFuchsiaResourceDialect,
22156            >(
22157                self.key.as_ref().map(
22158                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow,
22159                ),
22160                encoder,
22161                offset + cur_offset,
22162                depth,
22163            )?;
22164
22165            _prev_end_offset = cur_offset + envelope_size;
22166            if 3 > max_ordinal {
22167                return Ok(());
22168            }
22169
22170            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
22171            // are envelope_size bytes.
22172            let cur_offset: usize = (3 - 1) * envelope_size;
22173
22174            // Zero reserved fields.
22175            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
22176
22177            // Safety:
22178            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
22179            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
22180            //   envelope_size bytes, there is always sufficient room.
22181            fidl::encoding::encode_in_envelope_optional::<
22182                fidl::encoding::HandleType<
22183                    fidl::EventPair,
22184                    { fidl::ObjectType::EVENTPAIR.into_raw() },
22185                    2147483648,
22186                >,
22187                fidl::encoding::DefaultFuchsiaResourceDialect,
22188            >(
22189                self.value.as_mut().map(
22190                    <fidl::encoding::HandleType<
22191                        fidl::EventPair,
22192                        { fidl::ObjectType::EVENTPAIR.into_raw() },
22193                        2147483648,
22194                    > as fidl::encoding::ResourceTypeMarker>::take_or_borrow,
22195                ),
22196                encoder,
22197                offset + cur_offset,
22198                depth,
22199            )?;
22200
22201            _prev_end_offset = cur_offset + envelope_size;
22202
22203            Ok(())
22204        }
22205    }
22206
22207    impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
22208        for CapabilitiesDictionaryRemoveRequest
22209    {
22210        #[inline(always)]
22211        fn new_empty() -> Self {
22212            Self::default()
22213        }
22214
22215        unsafe fn decode(
22216            &mut self,
22217            decoder: &mut fidl::encoding::Decoder<
22218                '_,
22219                fidl::encoding::DefaultFuchsiaResourceDialect,
22220            >,
22221            offset: usize,
22222            mut depth: fidl::encoding::Depth,
22223        ) -> fidl::Result<()> {
22224            decoder.debug_check_bounds::<Self>(offset);
22225            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
22226                None => return Err(fidl::Error::NotNullable),
22227                Some(len) => len,
22228            };
22229            // Calling decoder.out_of_line_offset(0) is not allowed.
22230            if len == 0 {
22231                return Ok(());
22232            };
22233            depth.increment()?;
22234            let envelope_size = 8;
22235            let bytes_len = len * envelope_size;
22236            let offset = decoder.out_of_line_offset(bytes_len)?;
22237            // Decode the envelope for each type.
22238            let mut _next_ordinal_to_read = 0;
22239            let mut next_offset = offset;
22240            let end_offset = offset + bytes_len;
22241            _next_ordinal_to_read += 1;
22242            if next_offset >= end_offset {
22243                return Ok(());
22244            }
22245
22246            // Decode unknown envelopes for gaps in ordinals.
22247            while _next_ordinal_to_read < 1 {
22248                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
22249                _next_ordinal_to_read += 1;
22250                next_offset += envelope_size;
22251            }
22252
22253            let next_out_of_line = decoder.next_out_of_line();
22254            let handles_before = decoder.remaining_handles();
22255            if let Some((inlined, num_bytes, num_handles)) =
22256                fidl::encoding::decode_envelope_header(decoder, next_offset)?
22257            {
22258                let member_inline_size = <fidl::encoding::HandleType<
22259                    fidl::EventPair,
22260                    { fidl::ObjectType::EVENTPAIR.into_raw() },
22261                    2147483648,
22262                > as fidl::encoding::TypeMarker>::inline_size(
22263                    decoder.context
22264                );
22265                if inlined != (member_inline_size <= 4) {
22266                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
22267                }
22268                let inner_offset;
22269                let mut inner_depth = depth.clone();
22270                if inlined {
22271                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
22272                    inner_offset = next_offset;
22273                } else {
22274                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
22275                    inner_depth.increment()?;
22276                }
22277                let val_ref =
22278                self.dictionary.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::HandleType<fidl::EventPair, { fidl::ObjectType::EVENTPAIR.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect));
22279                fidl::decode!(fidl::encoding::HandleType<fidl::EventPair, { fidl::ObjectType::EVENTPAIR.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect, val_ref, decoder, inner_offset, inner_depth)?;
22280                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
22281                {
22282                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
22283                }
22284                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
22285                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
22286                }
22287            }
22288
22289            next_offset += envelope_size;
22290            _next_ordinal_to_read += 1;
22291            if next_offset >= end_offset {
22292                return Ok(());
22293            }
22294
22295            // Decode unknown envelopes for gaps in ordinals.
22296            while _next_ordinal_to_read < 2 {
22297                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
22298                _next_ordinal_to_read += 1;
22299                next_offset += envelope_size;
22300            }
22301
22302            let next_out_of_line = decoder.next_out_of_line();
22303            let handles_before = decoder.remaining_handles();
22304            if let Some((inlined, num_bytes, num_handles)) =
22305                fidl::encoding::decode_envelope_header(decoder, next_offset)?
22306            {
22307                let member_inline_size =
22308                    <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
22309                        decoder.context,
22310                    );
22311                if inlined != (member_inline_size <= 4) {
22312                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
22313                }
22314                let inner_offset;
22315                let mut inner_depth = depth.clone();
22316                if inlined {
22317                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
22318                    inner_offset = next_offset;
22319                } else {
22320                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
22321                    inner_depth.increment()?;
22322                }
22323                let val_ref = self.key.get_or_insert_with(|| {
22324                    fidl::new_empty!(
22325                        fidl::encoding::BoundedString<100>,
22326                        fidl::encoding::DefaultFuchsiaResourceDialect
22327                    )
22328                });
22329                fidl::decode!(
22330                    fidl::encoding::BoundedString<100>,
22331                    fidl::encoding::DefaultFuchsiaResourceDialect,
22332                    val_ref,
22333                    decoder,
22334                    inner_offset,
22335                    inner_depth
22336                )?;
22337                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
22338                {
22339                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
22340                }
22341                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
22342                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
22343                }
22344            }
22345
22346            next_offset += envelope_size;
22347            _next_ordinal_to_read += 1;
22348            if next_offset >= end_offset {
22349                return Ok(());
22350            }
22351
22352            // Decode unknown envelopes for gaps in ordinals.
22353            while _next_ordinal_to_read < 3 {
22354                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
22355                _next_ordinal_to_read += 1;
22356                next_offset += envelope_size;
22357            }
22358
22359            let next_out_of_line = decoder.next_out_of_line();
22360            let handles_before = decoder.remaining_handles();
22361            if let Some((inlined, num_bytes, num_handles)) =
22362                fidl::encoding::decode_envelope_header(decoder, next_offset)?
22363            {
22364                let member_inline_size = <fidl::encoding::HandleType<
22365                    fidl::EventPair,
22366                    { fidl::ObjectType::EVENTPAIR.into_raw() },
22367                    2147483648,
22368                > as fidl::encoding::TypeMarker>::inline_size(
22369                    decoder.context
22370                );
22371                if inlined != (member_inline_size <= 4) {
22372                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
22373                }
22374                let inner_offset;
22375                let mut inner_depth = depth.clone();
22376                if inlined {
22377                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
22378                    inner_offset = next_offset;
22379                } else {
22380                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
22381                    inner_depth.increment()?;
22382                }
22383                let val_ref =
22384                self.value.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::HandleType<fidl::EventPair, { fidl::ObjectType::EVENTPAIR.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect));
22385                fidl::decode!(fidl::encoding::HandleType<fidl::EventPair, { fidl::ObjectType::EVENTPAIR.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect, val_ref, decoder, inner_offset, inner_depth)?;
22386                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
22387                {
22388                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
22389                }
22390                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
22391                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
22392                }
22393            }
22394
22395            next_offset += envelope_size;
22396
22397            // Decode the remaining unknown envelopes.
22398            while next_offset < end_offset {
22399                _next_ordinal_to_read += 1;
22400                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
22401                next_offset += envelope_size;
22402            }
22403
22404            Ok(())
22405        }
22406    }
22407
22408    impl CapabilitiesDirConnectorOpenRequest {
22409        #[inline(always)]
22410        fn max_ordinal_present(&self) -> u64 {
22411            if let Some(_) = self.path {
22412                return 4;
22413            }
22414            if let Some(_) = self.flags {
22415                return 3;
22416            }
22417            if let Some(_) = self.channel {
22418                return 2;
22419            }
22420            if let Some(_) = self.dir_connector {
22421                return 1;
22422            }
22423            0
22424        }
22425    }
22426
22427    impl fidl::encoding::ResourceTypeMarker for CapabilitiesDirConnectorOpenRequest {
22428        type Borrowed<'a> = &'a mut Self;
22429        fn take_or_borrow<'a>(
22430            value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
22431        ) -> Self::Borrowed<'a> {
22432            value
22433        }
22434    }
22435
22436    unsafe impl fidl::encoding::TypeMarker for CapabilitiesDirConnectorOpenRequest {
22437        type Owned = Self;
22438
22439        #[inline(always)]
22440        fn inline_align(_context: fidl::encoding::Context) -> usize {
22441            8
22442        }
22443
22444        #[inline(always)]
22445        fn inline_size(_context: fidl::encoding::Context) -> usize {
22446            16
22447        }
22448    }
22449
22450    unsafe impl
22451        fidl::encoding::Encode<
22452            CapabilitiesDirConnectorOpenRequest,
22453            fidl::encoding::DefaultFuchsiaResourceDialect,
22454        > for &mut CapabilitiesDirConnectorOpenRequest
22455    {
22456        unsafe fn encode(
22457            self,
22458            encoder: &mut fidl::encoding::Encoder<
22459                '_,
22460                fidl::encoding::DefaultFuchsiaResourceDialect,
22461            >,
22462            offset: usize,
22463            mut depth: fidl::encoding::Depth,
22464        ) -> fidl::Result<()> {
22465            encoder.debug_check_bounds::<CapabilitiesDirConnectorOpenRequest>(offset);
22466            // Vector header
22467            let max_ordinal: u64 = self.max_ordinal_present();
22468            encoder.write_num(max_ordinal, offset);
22469            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
22470            // Calling encoder.out_of_line_offset(0) is not allowed.
22471            if max_ordinal == 0 {
22472                return Ok(());
22473            }
22474            depth.increment()?;
22475            let envelope_size = 8;
22476            let bytes_len = max_ordinal as usize * envelope_size;
22477            #[allow(unused_variables)]
22478            let offset = encoder.out_of_line_offset(bytes_len);
22479            let mut _prev_end_offset: usize = 0;
22480            if 1 > max_ordinal {
22481                return Ok(());
22482            }
22483
22484            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
22485            // are envelope_size bytes.
22486            let cur_offset: usize = (1 - 1) * envelope_size;
22487
22488            // Zero reserved fields.
22489            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
22490
22491            // Safety:
22492            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
22493            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
22494            //   envelope_size bytes, there is always sufficient room.
22495            fidl::encoding::encode_in_envelope_optional::<
22496                fidl::encoding::HandleType<
22497                    fidl::EventPair,
22498                    { fidl::ObjectType::EVENTPAIR.into_raw() },
22499                    2147483648,
22500                >,
22501                fidl::encoding::DefaultFuchsiaResourceDialect,
22502            >(
22503                self.dir_connector.as_mut().map(
22504                    <fidl::encoding::HandleType<
22505                        fidl::EventPair,
22506                        { fidl::ObjectType::EVENTPAIR.into_raw() },
22507                        2147483648,
22508                    > as fidl::encoding::ResourceTypeMarker>::take_or_borrow,
22509                ),
22510                encoder,
22511                offset + cur_offset,
22512                depth,
22513            )?;
22514
22515            _prev_end_offset = cur_offset + envelope_size;
22516            if 2 > max_ordinal {
22517                return Ok(());
22518            }
22519
22520            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
22521            // are envelope_size bytes.
22522            let cur_offset: usize = (2 - 1) * envelope_size;
22523
22524            // Zero reserved fields.
22525            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
22526
22527            // Safety:
22528            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
22529            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
22530            //   envelope_size bytes, there is always sufficient room.
22531            fidl::encoding::encode_in_envelope_optional::<
22532                fidl::encoding::Endpoint<
22533                    fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>,
22534                >,
22535                fidl::encoding::DefaultFuchsiaResourceDialect,
22536            >(
22537                self.channel.as_mut().map(
22538                    <fidl::encoding::Endpoint<
22539                        fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>,
22540                    > as fidl::encoding::ResourceTypeMarker>::take_or_borrow,
22541                ),
22542                encoder,
22543                offset + cur_offset,
22544                depth,
22545            )?;
22546
22547            _prev_end_offset = cur_offset + envelope_size;
22548            if 3 > max_ordinal {
22549                return Ok(());
22550            }
22551
22552            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
22553            // are envelope_size bytes.
22554            let cur_offset: usize = (3 - 1) * envelope_size;
22555
22556            // Zero reserved fields.
22557            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
22558
22559            // Safety:
22560            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
22561            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
22562            //   envelope_size bytes, there is always sufficient room.
22563            fidl::encoding::encode_in_envelope_optional::<
22564                fidl_fuchsia_io::Flags,
22565                fidl::encoding::DefaultFuchsiaResourceDialect,
22566            >(
22567                self.flags
22568                    .as_ref()
22569                    .map(<fidl_fuchsia_io::Flags as fidl::encoding::ValueTypeMarker>::borrow),
22570                encoder,
22571                offset + cur_offset,
22572                depth,
22573            )?;
22574
22575            _prev_end_offset = cur_offset + envelope_size;
22576            if 4 > max_ordinal {
22577                return Ok(());
22578            }
22579
22580            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
22581            // are envelope_size bytes.
22582            let cur_offset: usize = (4 - 1) * envelope_size;
22583
22584            // Zero reserved fields.
22585            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
22586
22587            // Safety:
22588            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
22589            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
22590            //   envelope_size bytes, there is always sufficient room.
22591            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<4095>, fidl::encoding::DefaultFuchsiaResourceDialect>(
22592            self.path.as_ref().map(<fidl::encoding::BoundedString<4095> as fidl::encoding::ValueTypeMarker>::borrow),
22593            encoder, offset + cur_offset, depth
22594        )?;
22595
22596            _prev_end_offset = cur_offset + envelope_size;
22597
22598            Ok(())
22599        }
22600    }
22601
22602    impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
22603        for CapabilitiesDirConnectorOpenRequest
22604    {
22605        #[inline(always)]
22606        fn new_empty() -> Self {
22607            Self::default()
22608        }
22609
22610        unsafe fn decode(
22611            &mut self,
22612            decoder: &mut fidl::encoding::Decoder<
22613                '_,
22614                fidl::encoding::DefaultFuchsiaResourceDialect,
22615            >,
22616            offset: usize,
22617            mut depth: fidl::encoding::Depth,
22618        ) -> fidl::Result<()> {
22619            decoder.debug_check_bounds::<Self>(offset);
22620            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
22621                None => return Err(fidl::Error::NotNullable),
22622                Some(len) => len,
22623            };
22624            // Calling decoder.out_of_line_offset(0) is not allowed.
22625            if len == 0 {
22626                return Ok(());
22627            };
22628            depth.increment()?;
22629            let envelope_size = 8;
22630            let bytes_len = len * envelope_size;
22631            let offset = decoder.out_of_line_offset(bytes_len)?;
22632            // Decode the envelope for each type.
22633            let mut _next_ordinal_to_read = 0;
22634            let mut next_offset = offset;
22635            let end_offset = offset + bytes_len;
22636            _next_ordinal_to_read += 1;
22637            if next_offset >= end_offset {
22638                return Ok(());
22639            }
22640
22641            // Decode unknown envelopes for gaps in ordinals.
22642            while _next_ordinal_to_read < 1 {
22643                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
22644                _next_ordinal_to_read += 1;
22645                next_offset += envelope_size;
22646            }
22647
22648            let next_out_of_line = decoder.next_out_of_line();
22649            let handles_before = decoder.remaining_handles();
22650            if let Some((inlined, num_bytes, num_handles)) =
22651                fidl::encoding::decode_envelope_header(decoder, next_offset)?
22652            {
22653                let member_inline_size = <fidl::encoding::HandleType<
22654                    fidl::EventPair,
22655                    { fidl::ObjectType::EVENTPAIR.into_raw() },
22656                    2147483648,
22657                > as fidl::encoding::TypeMarker>::inline_size(
22658                    decoder.context
22659                );
22660                if inlined != (member_inline_size <= 4) {
22661                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
22662                }
22663                let inner_offset;
22664                let mut inner_depth = depth.clone();
22665                if inlined {
22666                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
22667                    inner_offset = next_offset;
22668                } else {
22669                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
22670                    inner_depth.increment()?;
22671                }
22672                let val_ref =
22673                self.dir_connector.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::HandleType<fidl::EventPair, { fidl::ObjectType::EVENTPAIR.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect));
22674                fidl::decode!(fidl::encoding::HandleType<fidl::EventPair, { fidl::ObjectType::EVENTPAIR.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect, val_ref, decoder, inner_offset, inner_depth)?;
22675                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
22676                {
22677                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
22678                }
22679                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
22680                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
22681                }
22682            }
22683
22684            next_offset += envelope_size;
22685            _next_ordinal_to_read += 1;
22686            if next_offset >= end_offset {
22687                return Ok(());
22688            }
22689
22690            // Decode unknown envelopes for gaps in ordinals.
22691            while _next_ordinal_to_read < 2 {
22692                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
22693                _next_ordinal_to_read += 1;
22694                next_offset += envelope_size;
22695            }
22696
22697            let next_out_of_line = decoder.next_out_of_line();
22698            let handles_before = decoder.remaining_handles();
22699            if let Some((inlined, num_bytes, num_handles)) =
22700                fidl::encoding::decode_envelope_header(decoder, next_offset)?
22701            {
22702                let member_inline_size = <fidl::encoding::Endpoint<
22703                    fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>,
22704                > as fidl::encoding::TypeMarker>::inline_size(
22705                    decoder.context
22706                );
22707                if inlined != (member_inline_size <= 4) {
22708                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
22709                }
22710                let inner_offset;
22711                let mut inner_depth = depth.clone();
22712                if inlined {
22713                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
22714                    inner_offset = next_offset;
22715                } else {
22716                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
22717                    inner_depth.increment()?;
22718                }
22719                let val_ref = self.channel.get_or_insert_with(|| {
22720                    fidl::new_empty!(
22721                        fidl::encoding::Endpoint<
22722                            fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>,
22723                        >,
22724                        fidl::encoding::DefaultFuchsiaResourceDialect
22725                    )
22726                });
22727                fidl::decode!(
22728                    fidl::encoding::Endpoint<
22729                        fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>,
22730                    >,
22731                    fidl::encoding::DefaultFuchsiaResourceDialect,
22732                    val_ref,
22733                    decoder,
22734                    inner_offset,
22735                    inner_depth
22736                )?;
22737                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
22738                {
22739                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
22740                }
22741                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
22742                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
22743                }
22744            }
22745
22746            next_offset += envelope_size;
22747            _next_ordinal_to_read += 1;
22748            if next_offset >= end_offset {
22749                return Ok(());
22750            }
22751
22752            // Decode unknown envelopes for gaps in ordinals.
22753            while _next_ordinal_to_read < 3 {
22754                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
22755                _next_ordinal_to_read += 1;
22756                next_offset += envelope_size;
22757            }
22758
22759            let next_out_of_line = decoder.next_out_of_line();
22760            let handles_before = decoder.remaining_handles();
22761            if let Some((inlined, num_bytes, num_handles)) =
22762                fidl::encoding::decode_envelope_header(decoder, next_offset)?
22763            {
22764                let member_inline_size =
22765                    <fidl_fuchsia_io::Flags as fidl::encoding::TypeMarker>::inline_size(
22766                        decoder.context,
22767                    );
22768                if inlined != (member_inline_size <= 4) {
22769                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
22770                }
22771                let inner_offset;
22772                let mut inner_depth = depth.clone();
22773                if inlined {
22774                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
22775                    inner_offset = next_offset;
22776                } else {
22777                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
22778                    inner_depth.increment()?;
22779                }
22780                let val_ref = self.flags.get_or_insert_with(|| {
22781                    fidl::new_empty!(
22782                        fidl_fuchsia_io::Flags,
22783                        fidl::encoding::DefaultFuchsiaResourceDialect
22784                    )
22785                });
22786                fidl::decode!(
22787                    fidl_fuchsia_io::Flags,
22788                    fidl::encoding::DefaultFuchsiaResourceDialect,
22789                    val_ref,
22790                    decoder,
22791                    inner_offset,
22792                    inner_depth
22793                )?;
22794                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
22795                {
22796                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
22797                }
22798                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
22799                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
22800                }
22801            }
22802
22803            next_offset += envelope_size;
22804            _next_ordinal_to_read += 1;
22805            if next_offset >= end_offset {
22806                return Ok(());
22807            }
22808
22809            // Decode unknown envelopes for gaps in ordinals.
22810            while _next_ordinal_to_read < 4 {
22811                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
22812                _next_ordinal_to_read += 1;
22813                next_offset += envelope_size;
22814            }
22815
22816            let next_out_of_line = decoder.next_out_of_line();
22817            let handles_before = decoder.remaining_handles();
22818            if let Some((inlined, num_bytes, num_handles)) =
22819                fidl::encoding::decode_envelope_header(decoder, next_offset)?
22820            {
22821                let member_inline_size = <fidl::encoding::BoundedString<4095> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
22822                if inlined != (member_inline_size <= 4) {
22823                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
22824                }
22825                let inner_offset;
22826                let mut inner_depth = depth.clone();
22827                if inlined {
22828                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
22829                    inner_offset = next_offset;
22830                } else {
22831                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
22832                    inner_depth.increment()?;
22833                }
22834                let val_ref = self.path.get_or_insert_with(|| {
22835                    fidl::new_empty!(
22836                        fidl::encoding::BoundedString<4095>,
22837                        fidl::encoding::DefaultFuchsiaResourceDialect
22838                    )
22839                });
22840                fidl::decode!(
22841                    fidl::encoding::BoundedString<4095>,
22842                    fidl::encoding::DefaultFuchsiaResourceDialect,
22843                    val_ref,
22844                    decoder,
22845                    inner_offset,
22846                    inner_depth
22847                )?;
22848                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
22849                {
22850                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
22851                }
22852                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
22853                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
22854                }
22855            }
22856
22857            next_offset += envelope_size;
22858
22859            // Decode the remaining unknown envelopes.
22860            while next_offset < end_offset {
22861                _next_ordinal_to_read += 1;
22862                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
22863                next_offset += envelope_size;
22864            }
22865
22866            Ok(())
22867        }
22868    }
22869
22870    impl DeprecatedRouteRequest {
22871        #[inline(always)]
22872        fn max_ordinal_present(&self) -> u64 {
22873            if let Some(_) = self.metadata {
22874                return 2;
22875            }
22876            if let Some(_) = self.target {
22877                return 1;
22878            }
22879            0
22880        }
22881    }
22882
22883    impl fidl::encoding::ResourceTypeMarker for DeprecatedRouteRequest {
22884        type Borrowed<'a> = &'a mut Self;
22885        fn take_or_borrow<'a>(
22886            value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
22887        ) -> Self::Borrowed<'a> {
22888            value
22889        }
22890    }
22891
22892    unsafe impl fidl::encoding::TypeMarker for DeprecatedRouteRequest {
22893        type Owned = Self;
22894
22895        #[inline(always)]
22896        fn inline_align(_context: fidl::encoding::Context) -> usize {
22897            8
22898        }
22899
22900        #[inline(always)]
22901        fn inline_size(_context: fidl::encoding::Context) -> usize {
22902            16
22903        }
22904    }
22905
22906    unsafe impl
22907        fidl::encoding::Encode<
22908            DeprecatedRouteRequest,
22909            fidl::encoding::DefaultFuchsiaResourceDialect,
22910        > for &mut DeprecatedRouteRequest
22911    {
22912        unsafe fn encode(
22913            self,
22914            encoder: &mut fidl::encoding::Encoder<
22915                '_,
22916                fidl::encoding::DefaultFuchsiaResourceDialect,
22917            >,
22918            offset: usize,
22919            mut depth: fidl::encoding::Depth,
22920        ) -> fidl::Result<()> {
22921            encoder.debug_check_bounds::<DeprecatedRouteRequest>(offset);
22922            // Vector header
22923            let max_ordinal: u64 = self.max_ordinal_present();
22924            encoder.write_num(max_ordinal, offset);
22925            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
22926            // Calling encoder.out_of_line_offset(0) is not allowed.
22927            if max_ordinal == 0 {
22928                return Ok(());
22929            }
22930            depth.increment()?;
22931            let envelope_size = 8;
22932            let bytes_len = max_ordinal as usize * envelope_size;
22933            #[allow(unused_variables)]
22934            let offset = encoder.out_of_line_offset(bytes_len);
22935            let mut _prev_end_offset: usize = 0;
22936            if 1 > max_ordinal {
22937                return Ok(());
22938            }
22939
22940            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
22941            // are envelope_size bytes.
22942            let cur_offset: usize = (1 - 1) * envelope_size;
22943
22944            // Zero reserved fields.
22945            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
22946
22947            // Safety:
22948            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
22949            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
22950            //   envelope_size bytes, there is always sufficient room.
22951            fidl::encoding::encode_in_envelope_optional::<
22952                WeakInstanceToken,
22953                fidl::encoding::DefaultFuchsiaResourceDialect,
22954            >(
22955                self.target
22956                    .as_mut()
22957                    .map(<WeakInstanceToken as fidl::encoding::ResourceTypeMarker>::take_or_borrow),
22958                encoder,
22959                offset + cur_offset,
22960                depth,
22961            )?;
22962
22963            _prev_end_offset = cur_offset + envelope_size;
22964            if 2 > max_ordinal {
22965                return Ok(());
22966            }
22967
22968            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
22969            // are envelope_size bytes.
22970            let cur_offset: usize = (2 - 1) * envelope_size;
22971
22972            // Zero reserved fields.
22973            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
22974
22975            // Safety:
22976            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
22977            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
22978            //   envelope_size bytes, there is always sufficient room.
22979            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<DictionaryMarker>>, fidl::encoding::DefaultFuchsiaResourceDialect>(
22980            self.metadata.as_mut().map(<fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<DictionaryMarker>> as fidl::encoding::ResourceTypeMarker>::take_or_borrow),
22981            encoder, offset + cur_offset, depth
22982        )?;
22983
22984            _prev_end_offset = cur_offset + envelope_size;
22985
22986            Ok(())
22987        }
22988    }
22989
22990    impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
22991        for DeprecatedRouteRequest
22992    {
22993        #[inline(always)]
22994        fn new_empty() -> Self {
22995            Self::default()
22996        }
22997
22998        unsafe fn decode(
22999            &mut self,
23000            decoder: &mut fidl::encoding::Decoder<
23001                '_,
23002                fidl::encoding::DefaultFuchsiaResourceDialect,
23003            >,
23004            offset: usize,
23005            mut depth: fidl::encoding::Depth,
23006        ) -> fidl::Result<()> {
23007            decoder.debug_check_bounds::<Self>(offset);
23008            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
23009                None => return Err(fidl::Error::NotNullable),
23010                Some(len) => len,
23011            };
23012            // Calling decoder.out_of_line_offset(0) is not allowed.
23013            if len == 0 {
23014                return Ok(());
23015            };
23016            depth.increment()?;
23017            let envelope_size = 8;
23018            let bytes_len = len * envelope_size;
23019            let offset = decoder.out_of_line_offset(bytes_len)?;
23020            // Decode the envelope for each type.
23021            let mut _next_ordinal_to_read = 0;
23022            let mut next_offset = offset;
23023            let end_offset = offset + bytes_len;
23024            _next_ordinal_to_read += 1;
23025            if next_offset >= end_offset {
23026                return Ok(());
23027            }
23028
23029            // Decode unknown envelopes for gaps in ordinals.
23030            while _next_ordinal_to_read < 1 {
23031                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
23032                _next_ordinal_to_read += 1;
23033                next_offset += envelope_size;
23034            }
23035
23036            let next_out_of_line = decoder.next_out_of_line();
23037            let handles_before = decoder.remaining_handles();
23038            if let Some((inlined, num_bytes, num_handles)) =
23039                fidl::encoding::decode_envelope_header(decoder, next_offset)?
23040            {
23041                let member_inline_size =
23042                    <WeakInstanceToken as fidl::encoding::TypeMarker>::inline_size(decoder.context);
23043                if inlined != (member_inline_size <= 4) {
23044                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
23045                }
23046                let inner_offset;
23047                let mut inner_depth = depth.clone();
23048                if inlined {
23049                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
23050                    inner_offset = next_offset;
23051                } else {
23052                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
23053                    inner_depth.increment()?;
23054                }
23055                let val_ref = self.target.get_or_insert_with(|| {
23056                    fidl::new_empty!(
23057                        WeakInstanceToken,
23058                        fidl::encoding::DefaultFuchsiaResourceDialect
23059                    )
23060                });
23061                fidl::decode!(
23062                    WeakInstanceToken,
23063                    fidl::encoding::DefaultFuchsiaResourceDialect,
23064                    val_ref,
23065                    decoder,
23066                    inner_offset,
23067                    inner_depth
23068                )?;
23069                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
23070                {
23071                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
23072                }
23073                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
23074                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
23075                }
23076            }
23077
23078            next_offset += envelope_size;
23079            _next_ordinal_to_read += 1;
23080            if next_offset >= end_offset {
23081                return Ok(());
23082            }
23083
23084            // Decode unknown envelopes for gaps in ordinals.
23085            while _next_ordinal_to_read < 2 {
23086                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
23087                _next_ordinal_to_read += 1;
23088                next_offset += envelope_size;
23089            }
23090
23091            let next_out_of_line = decoder.next_out_of_line();
23092            let handles_before = decoder.remaining_handles();
23093            if let Some((inlined, num_bytes, num_handles)) =
23094                fidl::encoding::decode_envelope_header(decoder, next_offset)?
23095            {
23096                let member_inline_size = <fidl::encoding::Endpoint<
23097                    fidl::endpoints::ClientEnd<DictionaryMarker>,
23098                > as fidl::encoding::TypeMarker>::inline_size(
23099                    decoder.context
23100                );
23101                if inlined != (member_inline_size <= 4) {
23102                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
23103                }
23104                let inner_offset;
23105                let mut inner_depth = depth.clone();
23106                if inlined {
23107                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
23108                    inner_offset = next_offset;
23109                } else {
23110                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
23111                    inner_depth.increment()?;
23112                }
23113                let val_ref = self.metadata.get_or_insert_with(|| {
23114                    fidl::new_empty!(
23115                        fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<DictionaryMarker>>,
23116                        fidl::encoding::DefaultFuchsiaResourceDialect
23117                    )
23118                });
23119                fidl::decode!(
23120                    fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<DictionaryMarker>>,
23121                    fidl::encoding::DefaultFuchsiaResourceDialect,
23122                    val_ref,
23123                    decoder,
23124                    inner_offset,
23125                    inner_depth
23126                )?;
23127                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
23128                {
23129                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
23130                }
23131                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
23132                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
23133                }
23134            }
23135
23136            next_offset += envelope_size;
23137
23138            // Decode the remaining unknown envelopes.
23139            while next_offset < end_offset {
23140                _next_ordinal_to_read += 1;
23141                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
23142                next_offset += envelope_size;
23143            }
23144
23145            Ok(())
23146        }
23147    }
23148
23149    impl RouteRequest {
23150        #[inline(always)]
23151        fn max_ordinal_present(&self) -> u64 {
23152            if let Some(_) = self.metadata {
23153                return 1;
23154            }
23155            0
23156        }
23157    }
23158
23159    impl fidl::encoding::ResourceTypeMarker for RouteRequest {
23160        type Borrowed<'a> = &'a mut Self;
23161        fn take_or_borrow<'a>(
23162            value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
23163        ) -> Self::Borrowed<'a> {
23164            value
23165        }
23166    }
23167
23168    unsafe impl fidl::encoding::TypeMarker for RouteRequest {
23169        type Owned = Self;
23170
23171        #[inline(always)]
23172        fn inline_align(_context: fidl::encoding::Context) -> usize {
23173            8
23174        }
23175
23176        #[inline(always)]
23177        fn inline_size(_context: fidl::encoding::Context) -> usize {
23178            16
23179        }
23180    }
23181
23182    unsafe impl fidl::encoding::Encode<RouteRequest, fidl::encoding::DefaultFuchsiaResourceDialect>
23183        for &mut RouteRequest
23184    {
23185        unsafe fn encode(
23186            self,
23187            encoder: &mut fidl::encoding::Encoder<
23188                '_,
23189                fidl::encoding::DefaultFuchsiaResourceDialect,
23190            >,
23191            offset: usize,
23192            mut depth: fidl::encoding::Depth,
23193        ) -> fidl::Result<()> {
23194            encoder.debug_check_bounds::<RouteRequest>(offset);
23195            // Vector header
23196            let max_ordinal: u64 = self.max_ordinal_present();
23197            encoder.write_num(max_ordinal, offset);
23198            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
23199            // Calling encoder.out_of_line_offset(0) is not allowed.
23200            if max_ordinal == 0 {
23201                return Ok(());
23202            }
23203            depth.increment()?;
23204            let envelope_size = 8;
23205            let bytes_len = max_ordinal as usize * envelope_size;
23206            #[allow(unused_variables)]
23207            let offset = encoder.out_of_line_offset(bytes_len);
23208            let mut _prev_end_offset: usize = 0;
23209            if 1 > max_ordinal {
23210                return Ok(());
23211            }
23212
23213            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
23214            // are envelope_size bytes.
23215            let cur_offset: usize = (1 - 1) * envelope_size;
23216
23217            // Zero reserved fields.
23218            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
23219
23220            // Safety:
23221            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
23222            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
23223            //   envelope_size bytes, there is always sufficient room.
23224            fidl::encoding::encode_in_envelope_optional::<
23225                fidl::encoding::HandleType<
23226                    fidl::EventPair,
23227                    { fidl::ObjectType::EVENTPAIR.into_raw() },
23228                    2147483648,
23229                >,
23230                fidl::encoding::DefaultFuchsiaResourceDialect,
23231            >(
23232                self.metadata.as_mut().map(
23233                    <fidl::encoding::HandleType<
23234                        fidl::EventPair,
23235                        { fidl::ObjectType::EVENTPAIR.into_raw() },
23236                        2147483648,
23237                    > as fidl::encoding::ResourceTypeMarker>::take_or_borrow,
23238                ),
23239                encoder,
23240                offset + cur_offset,
23241                depth,
23242            )?;
23243
23244            _prev_end_offset = cur_offset + envelope_size;
23245
23246            Ok(())
23247        }
23248    }
23249
23250    impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect> for RouteRequest {
23251        #[inline(always)]
23252        fn new_empty() -> Self {
23253            Self::default()
23254        }
23255
23256        unsafe fn decode(
23257            &mut self,
23258            decoder: &mut fidl::encoding::Decoder<
23259                '_,
23260                fidl::encoding::DefaultFuchsiaResourceDialect,
23261            >,
23262            offset: usize,
23263            mut depth: fidl::encoding::Depth,
23264        ) -> fidl::Result<()> {
23265            decoder.debug_check_bounds::<Self>(offset);
23266            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
23267                None => return Err(fidl::Error::NotNullable),
23268                Some(len) => len,
23269            };
23270            // Calling decoder.out_of_line_offset(0) is not allowed.
23271            if len == 0 {
23272                return Ok(());
23273            };
23274            depth.increment()?;
23275            let envelope_size = 8;
23276            let bytes_len = len * envelope_size;
23277            let offset = decoder.out_of_line_offset(bytes_len)?;
23278            // Decode the envelope for each type.
23279            let mut _next_ordinal_to_read = 0;
23280            let mut next_offset = offset;
23281            let end_offset = offset + bytes_len;
23282            _next_ordinal_to_read += 1;
23283            if next_offset >= end_offset {
23284                return Ok(());
23285            }
23286
23287            // Decode unknown envelopes for gaps in ordinals.
23288            while _next_ordinal_to_read < 1 {
23289                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
23290                _next_ordinal_to_read += 1;
23291                next_offset += envelope_size;
23292            }
23293
23294            let next_out_of_line = decoder.next_out_of_line();
23295            let handles_before = decoder.remaining_handles();
23296            if let Some((inlined, num_bytes, num_handles)) =
23297                fidl::encoding::decode_envelope_header(decoder, next_offset)?
23298            {
23299                let member_inline_size = <fidl::encoding::HandleType<
23300                    fidl::EventPair,
23301                    { fidl::ObjectType::EVENTPAIR.into_raw() },
23302                    2147483648,
23303                > as fidl::encoding::TypeMarker>::inline_size(
23304                    decoder.context
23305                );
23306                if inlined != (member_inline_size <= 4) {
23307                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
23308                }
23309                let inner_offset;
23310                let mut inner_depth = depth.clone();
23311                if inlined {
23312                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
23313                    inner_offset = next_offset;
23314                } else {
23315                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
23316                    inner_depth.increment()?;
23317                }
23318                let val_ref =
23319                self.metadata.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::HandleType<fidl::EventPair, { fidl::ObjectType::EVENTPAIR.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect));
23320                fidl::decode!(fidl::encoding::HandleType<fidl::EventPair, { fidl::ObjectType::EVENTPAIR.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect, val_ref, decoder, inner_offset, inner_depth)?;
23321                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
23322                {
23323                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
23324                }
23325                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
23326                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
23327                }
23328            }
23329
23330            next_offset += envelope_size;
23331
23332            // Decode the remaining unknown envelopes.
23333            while next_offset < end_offset {
23334                _next_ordinal_to_read += 1;
23335                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
23336                next_offset += envelope_size;
23337            }
23338
23339            Ok(())
23340        }
23341    }
23342
23343    impl fidl::encoding::ResourceTypeMarker for CapabilityDeprecated {
23344        type Borrowed<'a> = &'a mut Self;
23345        fn take_or_borrow<'a>(
23346            value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
23347        ) -> Self::Borrowed<'a> {
23348            value
23349        }
23350    }
23351
23352    unsafe impl fidl::encoding::TypeMarker for CapabilityDeprecated {
23353        type Owned = Self;
23354
23355        #[inline(always)]
23356        fn inline_align(_context: fidl::encoding::Context) -> usize {
23357            8
23358        }
23359
23360        #[inline(always)]
23361        fn inline_size(_context: fidl::encoding::Context) -> usize {
23362            16
23363        }
23364    }
23365
23366    unsafe impl
23367        fidl::encoding::Encode<CapabilityDeprecated, fidl::encoding::DefaultFuchsiaResourceDialect>
23368        for &mut CapabilityDeprecated
23369    {
23370        #[inline]
23371        unsafe fn encode(
23372            self,
23373            encoder: &mut fidl::encoding::Encoder<
23374                '_,
23375                fidl::encoding::DefaultFuchsiaResourceDialect,
23376            >,
23377            offset: usize,
23378            _depth: fidl::encoding::Depth,
23379        ) -> fidl::Result<()> {
23380            encoder.debug_check_bounds::<CapabilityDeprecated>(offset);
23381            encoder.write_num::<u64>(self.ordinal(), offset);
23382            match self {
23383            CapabilityDeprecated::Connector(ref mut val) => {
23384                fidl::encoding::encode_in_envelope::<fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<ConnectorMarker>>, fidl::encoding::DefaultFuchsiaResourceDialect>(
23385                    <fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<ConnectorMarker>> as fidl::encoding::ResourceTypeMarker>::take_or_borrow(val),
23386                    encoder, offset + 8, _depth
23387                )
23388            }
23389            CapabilityDeprecated::DirConnector(ref mut val) => {
23390                fidl::encoding::encode_in_envelope::<fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<DirConnectorMarker>>, fidl::encoding::DefaultFuchsiaResourceDialect>(
23391                    <fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<DirConnectorMarker>> as fidl::encoding::ResourceTypeMarker>::take_or_borrow(val),
23392                    encoder, offset + 8, _depth
23393                )
23394            }
23395            CapabilityDeprecated::Dictionary(ref mut val) => {
23396                fidl::encoding::encode_in_envelope::<fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<DictionaryMarker>>, fidl::encoding::DefaultFuchsiaResourceDialect>(
23397                    <fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<DictionaryMarker>> as fidl::encoding::ResourceTypeMarker>::take_or_borrow(val),
23398                    encoder, offset + 8, _depth
23399                )
23400            }
23401            CapabilityDeprecated::Data(ref val) => {
23402                fidl::encoding::encode_in_envelope::<Data, fidl::encoding::DefaultFuchsiaResourceDialect>(
23403                    <Data as fidl::encoding::ValueTypeMarker>::borrow(val),
23404                    encoder, offset + 8, _depth
23405                )
23406            }
23407            CapabilityDeprecated::ConnectorRouter(ref mut val) => {
23408                fidl::encoding::encode_in_envelope::<fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<ConnectorRouterDeprecatedMarker>>, fidl::encoding::DefaultFuchsiaResourceDialect>(
23409                    <fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<ConnectorRouterDeprecatedMarker>> as fidl::encoding::ResourceTypeMarker>::take_or_borrow(val),
23410                    encoder, offset + 8, _depth
23411                )
23412            }
23413            CapabilityDeprecated::DirConnectorRouter(ref mut val) => {
23414                fidl::encoding::encode_in_envelope::<fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<DirConnectorRouterDeprecatedMarker>>, fidl::encoding::DefaultFuchsiaResourceDialect>(
23415                    <fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<DirConnectorRouterDeprecatedMarker>> as fidl::encoding::ResourceTypeMarker>::take_or_borrow(val),
23416                    encoder, offset + 8, _depth
23417                )
23418            }
23419            CapabilityDeprecated::DictionaryRouter(ref mut val) => {
23420                fidl::encoding::encode_in_envelope::<fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<DictionaryRouterDeprecatedMarker>>, fidl::encoding::DefaultFuchsiaResourceDialect>(
23421                    <fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<DictionaryRouterDeprecatedMarker>> as fidl::encoding::ResourceTypeMarker>::take_or_borrow(val),
23422                    encoder, offset + 8, _depth
23423                )
23424            }
23425            CapabilityDeprecated::DataRouter(ref mut val) => {
23426                fidl::encoding::encode_in_envelope::<fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<DataRouterDeprecatedMarker>>, fidl::encoding::DefaultFuchsiaResourceDialect>(
23427                    <fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<DataRouterDeprecatedMarker>> as fidl::encoding::ResourceTypeMarker>::take_or_borrow(val),
23428                    encoder, offset + 8, _depth
23429                )
23430            }
23431            CapabilityDeprecated::__SourceBreaking { .. } => Err(fidl::Error::UnknownUnionTag),
23432        }
23433        }
23434    }
23435
23436    impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
23437        for CapabilityDeprecated
23438    {
23439        #[inline(always)]
23440        fn new_empty() -> Self {
23441            Self::__SourceBreaking { unknown_ordinal: 0 }
23442        }
23443
23444        #[inline]
23445        unsafe fn decode(
23446            &mut self,
23447            decoder: &mut fidl::encoding::Decoder<
23448                '_,
23449                fidl::encoding::DefaultFuchsiaResourceDialect,
23450            >,
23451            offset: usize,
23452            mut depth: fidl::encoding::Depth,
23453        ) -> fidl::Result<()> {
23454            decoder.debug_check_bounds::<Self>(offset);
23455            #[allow(unused_variables)]
23456            let next_out_of_line = decoder.next_out_of_line();
23457            let handles_before = decoder.remaining_handles();
23458            let (ordinal, inlined, num_bytes, num_handles) =
23459                fidl::encoding::decode_union_inline_portion(decoder, offset)?;
23460
23461            let member_inline_size = match ordinal {
23462            1 => <fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<ConnectorMarker>> as fidl::encoding::TypeMarker>::inline_size(decoder.context),
23463            2 => <fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<DirConnectorMarker>> as fidl::encoding::TypeMarker>::inline_size(decoder.context),
23464            3 => <fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<DictionaryMarker>> as fidl::encoding::TypeMarker>::inline_size(decoder.context),
23465            4 => <Data as fidl::encoding::TypeMarker>::inline_size(decoder.context),
23466            5 => <fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<ConnectorRouterDeprecatedMarker>> as fidl::encoding::TypeMarker>::inline_size(decoder.context),
23467            6 => <fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<DirConnectorRouterDeprecatedMarker>> as fidl::encoding::TypeMarker>::inline_size(decoder.context),
23468            7 => <fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<DictionaryRouterDeprecatedMarker>> as fidl::encoding::TypeMarker>::inline_size(decoder.context),
23469            8 => <fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<DataRouterDeprecatedMarker>> as fidl::encoding::TypeMarker>::inline_size(decoder.context),
23470            0 => return Err(fidl::Error::UnknownUnionTag),
23471            _ => num_bytes as usize,
23472        };
23473
23474            if inlined != (member_inline_size <= 4) {
23475                return Err(fidl::Error::InvalidInlineBitInEnvelope);
23476            }
23477            let _inner_offset;
23478            if inlined {
23479                decoder.check_inline_envelope_padding(offset + 8, member_inline_size)?;
23480                _inner_offset = offset + 8;
23481            } else {
23482                depth.increment()?;
23483                _inner_offset = decoder.out_of_line_offset(member_inline_size)?;
23484            }
23485            match ordinal {
23486                1 => {
23487                    #[allow(irrefutable_let_patterns)]
23488                    if let CapabilityDeprecated::Connector(_) = self {
23489                        // Do nothing, read the value into the object
23490                    } else {
23491                        // Initialize `self` to the right variant
23492                        *self = CapabilityDeprecated::Connector(fidl::new_empty!(
23493                            fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<ConnectorMarker>>,
23494                            fidl::encoding::DefaultFuchsiaResourceDialect
23495                        ));
23496                    }
23497                    #[allow(irrefutable_let_patterns)]
23498                    if let CapabilityDeprecated::Connector(ref mut val) = self {
23499                        fidl::decode!(
23500                            fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<ConnectorMarker>>,
23501                            fidl::encoding::DefaultFuchsiaResourceDialect,
23502                            val,
23503                            decoder,
23504                            _inner_offset,
23505                            depth
23506                        )?;
23507                    } else {
23508                        unreachable!()
23509                    }
23510                }
23511                2 => {
23512                    #[allow(irrefutable_let_patterns)]
23513                    if let CapabilityDeprecated::DirConnector(_) = self {
23514                        // Do nothing, read the value into the object
23515                    } else {
23516                        // Initialize `self` to the right variant
23517                        *self = CapabilityDeprecated::DirConnector(fidl::new_empty!(
23518                            fidl::encoding::Endpoint<
23519                                fidl::endpoints::ClientEnd<DirConnectorMarker>,
23520                            >,
23521                            fidl::encoding::DefaultFuchsiaResourceDialect
23522                        ));
23523                    }
23524                    #[allow(irrefutable_let_patterns)]
23525                    if let CapabilityDeprecated::DirConnector(ref mut val) = self {
23526                        fidl::decode!(
23527                            fidl::encoding::Endpoint<
23528                                fidl::endpoints::ClientEnd<DirConnectorMarker>,
23529                            >,
23530                            fidl::encoding::DefaultFuchsiaResourceDialect,
23531                            val,
23532                            decoder,
23533                            _inner_offset,
23534                            depth
23535                        )?;
23536                    } else {
23537                        unreachable!()
23538                    }
23539                }
23540                3 => {
23541                    #[allow(irrefutable_let_patterns)]
23542                    if let CapabilityDeprecated::Dictionary(_) = self {
23543                        // Do nothing, read the value into the object
23544                    } else {
23545                        // Initialize `self` to the right variant
23546                        *self = CapabilityDeprecated::Dictionary(fidl::new_empty!(
23547                            fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<DictionaryMarker>>,
23548                            fidl::encoding::DefaultFuchsiaResourceDialect
23549                        ));
23550                    }
23551                    #[allow(irrefutable_let_patterns)]
23552                    if let CapabilityDeprecated::Dictionary(ref mut val) = self {
23553                        fidl::decode!(
23554                            fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<DictionaryMarker>>,
23555                            fidl::encoding::DefaultFuchsiaResourceDialect,
23556                            val,
23557                            decoder,
23558                            _inner_offset,
23559                            depth
23560                        )?;
23561                    } else {
23562                        unreachable!()
23563                    }
23564                }
23565                4 => {
23566                    #[allow(irrefutable_let_patterns)]
23567                    if let CapabilityDeprecated::Data(_) = self {
23568                        // Do nothing, read the value into the object
23569                    } else {
23570                        // Initialize `self` to the right variant
23571                        *self = CapabilityDeprecated::Data(fidl::new_empty!(
23572                            Data,
23573                            fidl::encoding::DefaultFuchsiaResourceDialect
23574                        ));
23575                    }
23576                    #[allow(irrefutable_let_patterns)]
23577                    if let CapabilityDeprecated::Data(ref mut val) = self {
23578                        fidl::decode!(
23579                            Data,
23580                            fidl::encoding::DefaultFuchsiaResourceDialect,
23581                            val,
23582                            decoder,
23583                            _inner_offset,
23584                            depth
23585                        )?;
23586                    } else {
23587                        unreachable!()
23588                    }
23589                }
23590                5 => {
23591                    #[allow(irrefutable_let_patterns)]
23592                    if let CapabilityDeprecated::ConnectorRouter(_) = self {
23593                        // Do nothing, read the value into the object
23594                    } else {
23595                        // Initialize `self` to the right variant
23596                        *self = CapabilityDeprecated::ConnectorRouter(fidl::new_empty!(
23597                            fidl::encoding::Endpoint<
23598                                fidl::endpoints::ClientEnd<ConnectorRouterDeprecatedMarker>,
23599                            >,
23600                            fidl::encoding::DefaultFuchsiaResourceDialect
23601                        ));
23602                    }
23603                    #[allow(irrefutable_let_patterns)]
23604                    if let CapabilityDeprecated::ConnectorRouter(ref mut val) = self {
23605                        fidl::decode!(
23606                            fidl::encoding::Endpoint<
23607                                fidl::endpoints::ClientEnd<ConnectorRouterDeprecatedMarker>,
23608                            >,
23609                            fidl::encoding::DefaultFuchsiaResourceDialect,
23610                            val,
23611                            decoder,
23612                            _inner_offset,
23613                            depth
23614                        )?;
23615                    } else {
23616                        unreachable!()
23617                    }
23618                }
23619                6 => {
23620                    #[allow(irrefutable_let_patterns)]
23621                    if let CapabilityDeprecated::DirConnectorRouter(_) = self {
23622                        // Do nothing, read the value into the object
23623                    } else {
23624                        // Initialize `self` to the right variant
23625                        *self = CapabilityDeprecated::DirConnectorRouter(fidl::new_empty!(
23626                            fidl::encoding::Endpoint<
23627                                fidl::endpoints::ClientEnd<DirConnectorRouterDeprecatedMarker>,
23628                            >,
23629                            fidl::encoding::DefaultFuchsiaResourceDialect
23630                        ));
23631                    }
23632                    #[allow(irrefutable_let_patterns)]
23633                    if let CapabilityDeprecated::DirConnectorRouter(ref mut val) = self {
23634                        fidl::decode!(
23635                            fidl::encoding::Endpoint<
23636                                fidl::endpoints::ClientEnd<DirConnectorRouterDeprecatedMarker>,
23637                            >,
23638                            fidl::encoding::DefaultFuchsiaResourceDialect,
23639                            val,
23640                            decoder,
23641                            _inner_offset,
23642                            depth
23643                        )?;
23644                    } else {
23645                        unreachable!()
23646                    }
23647                }
23648                7 => {
23649                    #[allow(irrefutable_let_patterns)]
23650                    if let CapabilityDeprecated::DictionaryRouter(_) = self {
23651                        // Do nothing, read the value into the object
23652                    } else {
23653                        // Initialize `self` to the right variant
23654                        *self = CapabilityDeprecated::DictionaryRouter(fidl::new_empty!(
23655                            fidl::encoding::Endpoint<
23656                                fidl::endpoints::ClientEnd<DictionaryRouterDeprecatedMarker>,
23657                            >,
23658                            fidl::encoding::DefaultFuchsiaResourceDialect
23659                        ));
23660                    }
23661                    #[allow(irrefutable_let_patterns)]
23662                    if let CapabilityDeprecated::DictionaryRouter(ref mut val) = self {
23663                        fidl::decode!(
23664                            fidl::encoding::Endpoint<
23665                                fidl::endpoints::ClientEnd<DictionaryRouterDeprecatedMarker>,
23666                            >,
23667                            fidl::encoding::DefaultFuchsiaResourceDialect,
23668                            val,
23669                            decoder,
23670                            _inner_offset,
23671                            depth
23672                        )?;
23673                    } else {
23674                        unreachable!()
23675                    }
23676                }
23677                8 => {
23678                    #[allow(irrefutable_let_patterns)]
23679                    if let CapabilityDeprecated::DataRouter(_) = self {
23680                        // Do nothing, read the value into the object
23681                    } else {
23682                        // Initialize `self` to the right variant
23683                        *self = CapabilityDeprecated::DataRouter(fidl::new_empty!(
23684                            fidl::encoding::Endpoint<
23685                                fidl::endpoints::ClientEnd<DataRouterDeprecatedMarker>,
23686                            >,
23687                            fidl::encoding::DefaultFuchsiaResourceDialect
23688                        ));
23689                    }
23690                    #[allow(irrefutable_let_patterns)]
23691                    if let CapabilityDeprecated::DataRouter(ref mut val) = self {
23692                        fidl::decode!(
23693                            fidl::encoding::Endpoint<
23694                                fidl::endpoints::ClientEnd<DataRouterDeprecatedMarker>,
23695                            >,
23696                            fidl::encoding::DefaultFuchsiaResourceDialect,
23697                            val,
23698                            decoder,
23699                            _inner_offset,
23700                            depth
23701                        )?;
23702                    } else {
23703                        unreachable!()
23704                    }
23705                }
23706                #[allow(deprecated)]
23707                ordinal => {
23708                    for _ in 0..num_handles {
23709                        decoder.drop_next_handle()?;
23710                    }
23711                    *self = CapabilityDeprecated::__SourceBreaking { unknown_ordinal: ordinal };
23712                }
23713            }
23714            if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize) {
23715                return Err(fidl::Error::InvalidNumBytesInEnvelope);
23716            }
23717            if handles_before != decoder.remaining_handles() + (num_handles as usize) {
23718                return Err(fidl::Error::InvalidNumHandlesInEnvelope);
23719            }
23720            Ok(())
23721        }
23722    }
23723}