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 = "fuchsia.component.runtime.DictionaryRouter";
10618}
10619impl fidl::endpoints::DiscoverableProtocolMarker for DictionaryRouterMarker {}
10620pub type DictionaryRouterRouteResult = Result<RouterResponse, RouterError>;
10621
10622pub trait DictionaryRouterProxyInterface: Send + Sync {
10623    type RouteResponseFut: std::future::Future<Output = Result<DictionaryRouterRouteResult, fidl::Error>>
10624        + Send;
10625    fn r#route(
10626        &self,
10627        request: RouteRequest,
10628        instance_token: fidl::EventPair,
10629        handle: fidl::EventPair,
10630    ) -> Self::RouteResponseFut;
10631}
10632#[derive(Debug)]
10633#[cfg(target_os = "fuchsia")]
10634pub struct DictionaryRouterSynchronousProxy {
10635    client: fidl::client::sync::Client,
10636}
10637
10638#[cfg(target_os = "fuchsia")]
10639impl fidl::endpoints::SynchronousProxy for DictionaryRouterSynchronousProxy {
10640    type Proxy = DictionaryRouterProxy;
10641    type Protocol = DictionaryRouterMarker;
10642
10643    fn from_channel(inner: fidl::Channel) -> Self {
10644        Self::new(inner)
10645    }
10646
10647    fn into_channel(self) -> fidl::Channel {
10648        self.client.into_channel()
10649    }
10650
10651    fn as_channel(&self) -> &fidl::Channel {
10652        self.client.as_channel()
10653    }
10654}
10655
10656#[cfg(target_os = "fuchsia")]
10657impl DictionaryRouterSynchronousProxy {
10658    pub fn new(channel: fidl::Channel) -> Self {
10659        let protocol_name = <DictionaryRouterMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
10660        Self { client: fidl::client::sync::Client::new(channel, protocol_name) }
10661    }
10662
10663    pub fn into_channel(self) -> fidl::Channel {
10664        self.client.into_channel()
10665    }
10666
10667    /// Waits until an event arrives and returns it. It is safe for other
10668    /// threads to make concurrent requests while waiting for an event.
10669    pub fn wait_for_event(
10670        &self,
10671        deadline: zx::MonotonicInstant,
10672    ) -> Result<DictionaryRouterEvent, fidl::Error> {
10673        DictionaryRouterEvent::decode(self.client.wait_for_event(deadline)?)
10674    }
10675
10676    /// Attempts to produce a `Dictionary` capability from this
10677    /// `DictionaryRouter`.
10678    ///
10679    /// `request` contains context for this route, and `instance_token`
10680    /// references the component that the routing operation is being performed
10681    /// for.
10682    ///
10683    /// This will return:
10684    ///
10685    /// - `SUCCESS` if `handle` has been associated with a connector.
10686    /// - `UNAVAILABLE` if the capability is unavailable, in which case `handle`
10687    ///   will be closed.
10688    /// - An error, if the operation failed.
10689    pub fn r#route(
10690        &self,
10691        mut request: RouteRequest,
10692        mut instance_token: fidl::EventPair,
10693        mut handle: fidl::EventPair,
10694        ___deadline: zx::MonotonicInstant,
10695    ) -> Result<DictionaryRouterRouteResult, fidl::Error> {
10696        let _response = self.client.send_query::<
10697            DictionaryRouterRouteRequest,
10698            fidl::encoding::FlexibleResultType<DictionaryRouterRouteResponse, RouterError>,
10699        >(
10700            (&mut request, instance_token, handle,),
10701            0x199389f437b3937b,
10702            fidl::encoding::DynamicFlags::FLEXIBLE,
10703            ___deadline,
10704        )?
10705        .into_result::<DictionaryRouterMarker>("route")?;
10706        Ok(_response.map(|x| x.response))
10707    }
10708}
10709
10710#[cfg(target_os = "fuchsia")]
10711impl From<DictionaryRouterSynchronousProxy> for zx::NullableHandle {
10712    fn from(value: DictionaryRouterSynchronousProxy) -> Self {
10713        value.into_channel().into()
10714    }
10715}
10716
10717#[cfg(target_os = "fuchsia")]
10718impl From<fidl::Channel> for DictionaryRouterSynchronousProxy {
10719    fn from(value: fidl::Channel) -> Self {
10720        Self::new(value)
10721    }
10722}
10723
10724#[cfg(target_os = "fuchsia")]
10725impl fidl::endpoints::FromClient for DictionaryRouterSynchronousProxy {
10726    type Protocol = DictionaryRouterMarker;
10727
10728    fn from_client(value: fidl::endpoints::ClientEnd<DictionaryRouterMarker>) -> Self {
10729        Self::new(value.into_channel())
10730    }
10731}
10732
10733#[derive(Debug, Clone)]
10734pub struct DictionaryRouterProxy {
10735    client: fidl::client::Client<fidl::encoding::DefaultFuchsiaResourceDialect>,
10736}
10737
10738impl fidl::endpoints::Proxy for DictionaryRouterProxy {
10739    type Protocol = DictionaryRouterMarker;
10740
10741    fn from_channel(inner: ::fidl::AsyncChannel) -> Self {
10742        Self::new(inner)
10743    }
10744
10745    fn into_channel(self) -> Result<::fidl::AsyncChannel, Self> {
10746        self.client.into_channel().map_err(|client| Self { client })
10747    }
10748
10749    fn as_channel(&self) -> &::fidl::AsyncChannel {
10750        self.client.as_channel()
10751    }
10752}
10753
10754impl DictionaryRouterProxy {
10755    /// Create a new Proxy for fuchsia.component.runtime/DictionaryRouter.
10756    pub fn new(channel: ::fidl::AsyncChannel) -> Self {
10757        let protocol_name = <DictionaryRouterMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
10758        Self { client: fidl::client::Client::new(channel, protocol_name) }
10759    }
10760
10761    /// Get a Stream of events from the remote end of the protocol.
10762    ///
10763    /// # Panics
10764    ///
10765    /// Panics if the event stream was already taken.
10766    pub fn take_event_stream(&self) -> DictionaryRouterEventStream {
10767        DictionaryRouterEventStream { event_receiver: self.client.take_event_receiver() }
10768    }
10769
10770    /// Attempts to produce a `Dictionary` capability from this
10771    /// `DictionaryRouter`.
10772    ///
10773    /// `request` contains context for this route, and `instance_token`
10774    /// references the component that the routing operation is being performed
10775    /// for.
10776    ///
10777    /// This will return:
10778    ///
10779    /// - `SUCCESS` if `handle` has been associated with a connector.
10780    /// - `UNAVAILABLE` if the capability is unavailable, in which case `handle`
10781    ///   will be closed.
10782    /// - An error, if the operation failed.
10783    pub fn r#route(
10784        &self,
10785        mut request: RouteRequest,
10786        mut instance_token: fidl::EventPair,
10787        mut handle: fidl::EventPair,
10788    ) -> fidl::client::QueryResponseFut<
10789        DictionaryRouterRouteResult,
10790        fidl::encoding::DefaultFuchsiaResourceDialect,
10791    > {
10792        DictionaryRouterProxyInterface::r#route(self, request, instance_token, handle)
10793    }
10794}
10795
10796impl DictionaryRouterProxyInterface for DictionaryRouterProxy {
10797    type RouteResponseFut = fidl::client::QueryResponseFut<
10798        DictionaryRouterRouteResult,
10799        fidl::encoding::DefaultFuchsiaResourceDialect,
10800    >;
10801    fn r#route(
10802        &self,
10803        mut request: RouteRequest,
10804        mut instance_token: fidl::EventPair,
10805        mut handle: fidl::EventPair,
10806    ) -> Self::RouteResponseFut {
10807        fn _decode(
10808            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
10809        ) -> Result<DictionaryRouterRouteResult, fidl::Error> {
10810            let _response = fidl::client::decode_transaction_body::<
10811                fidl::encoding::FlexibleResultType<DictionaryRouterRouteResponse, RouterError>,
10812                fidl::encoding::DefaultFuchsiaResourceDialect,
10813                0x199389f437b3937b,
10814            >(_buf?)?
10815            .into_result::<DictionaryRouterMarker>("route")?;
10816            Ok(_response.map(|x| x.response))
10817        }
10818        self.client
10819            .send_query_and_decode::<DictionaryRouterRouteRequest, DictionaryRouterRouteResult>(
10820                (&mut request, instance_token, handle),
10821                0x199389f437b3937b,
10822                fidl::encoding::DynamicFlags::FLEXIBLE,
10823                _decode,
10824            )
10825    }
10826}
10827
10828pub struct DictionaryRouterEventStream {
10829    event_receiver: fidl::client::EventReceiver<fidl::encoding::DefaultFuchsiaResourceDialect>,
10830}
10831
10832impl std::marker::Unpin for DictionaryRouterEventStream {}
10833
10834impl futures::stream::FusedStream for DictionaryRouterEventStream {
10835    fn is_terminated(&self) -> bool {
10836        self.event_receiver.is_terminated()
10837    }
10838}
10839
10840impl futures::Stream for DictionaryRouterEventStream {
10841    type Item = Result<DictionaryRouterEvent, fidl::Error>;
10842
10843    fn poll_next(
10844        mut self: std::pin::Pin<&mut Self>,
10845        cx: &mut std::task::Context<'_>,
10846    ) -> std::task::Poll<Option<Self::Item>> {
10847        match futures::ready!(futures::stream::StreamExt::poll_next_unpin(
10848            &mut self.event_receiver,
10849            cx
10850        )?) {
10851            Some(buf) => std::task::Poll::Ready(Some(DictionaryRouterEvent::decode(buf))),
10852            None => std::task::Poll::Ready(None),
10853        }
10854    }
10855}
10856
10857#[derive(Debug)]
10858pub enum DictionaryRouterEvent {
10859    #[non_exhaustive]
10860    _UnknownEvent {
10861        /// Ordinal of the event that was sent.
10862        ordinal: u64,
10863    },
10864}
10865
10866impl DictionaryRouterEvent {
10867    /// Decodes a message buffer as a [`DictionaryRouterEvent`].
10868    fn decode(
10869        mut buf: <fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc,
10870    ) -> Result<DictionaryRouterEvent, fidl::Error> {
10871        let (bytes, _handles) = buf.split_mut();
10872        let (tx_header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
10873        debug_assert_eq!(tx_header.tx_id, 0);
10874        match tx_header.ordinal {
10875            _ if tx_header.dynamic_flags().contains(fidl::encoding::DynamicFlags::FLEXIBLE) => {
10876                Ok(DictionaryRouterEvent::_UnknownEvent { ordinal: tx_header.ordinal })
10877            }
10878            _ => Err(fidl::Error::UnknownOrdinal {
10879                ordinal: tx_header.ordinal,
10880                protocol_name:
10881                    <DictionaryRouterMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
10882            }),
10883        }
10884    }
10885}
10886
10887/// A Stream of incoming requests for fuchsia.component.runtime/DictionaryRouter.
10888pub struct DictionaryRouterRequestStream {
10889    inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
10890    is_terminated: bool,
10891}
10892
10893impl std::marker::Unpin for DictionaryRouterRequestStream {}
10894
10895impl futures::stream::FusedStream for DictionaryRouterRequestStream {
10896    fn is_terminated(&self) -> bool {
10897        self.is_terminated
10898    }
10899}
10900
10901impl fidl::endpoints::RequestStream for DictionaryRouterRequestStream {
10902    type Protocol = DictionaryRouterMarker;
10903    type ControlHandle = DictionaryRouterControlHandle;
10904
10905    fn from_channel(channel: ::fidl::AsyncChannel) -> Self {
10906        Self { inner: std::sync::Arc::new(fidl::ServeInner::new(channel)), is_terminated: false }
10907    }
10908
10909    fn control_handle(&self) -> Self::ControlHandle {
10910        DictionaryRouterControlHandle { inner: self.inner.clone() }
10911    }
10912
10913    fn into_inner(
10914        self,
10915    ) -> (::std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>, bool)
10916    {
10917        (self.inner, self.is_terminated)
10918    }
10919
10920    fn from_inner(
10921        inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
10922        is_terminated: bool,
10923    ) -> Self {
10924        Self { inner, is_terminated }
10925    }
10926}
10927
10928impl futures::Stream for DictionaryRouterRequestStream {
10929    type Item = Result<DictionaryRouterRequest, fidl::Error>;
10930
10931    fn poll_next(
10932        mut self: std::pin::Pin<&mut Self>,
10933        cx: &mut std::task::Context<'_>,
10934    ) -> std::task::Poll<Option<Self::Item>> {
10935        let this = &mut *self;
10936        if this.inner.check_shutdown(cx) {
10937            this.is_terminated = true;
10938            return std::task::Poll::Ready(None);
10939        }
10940        if this.is_terminated {
10941            panic!("polled DictionaryRouterRequestStream after completion");
10942        }
10943        fidl::encoding::with_tls_decode_buf::<_, fidl::encoding::DefaultFuchsiaResourceDialect>(
10944            |bytes, handles| {
10945                match this.inner.channel().read_etc(cx, bytes, handles) {
10946                    std::task::Poll::Ready(Ok(())) => {}
10947                    std::task::Poll::Pending => return std::task::Poll::Pending,
10948                    std::task::Poll::Ready(Err(zx_status::Status::PEER_CLOSED)) => {
10949                        this.is_terminated = true;
10950                        return std::task::Poll::Ready(None);
10951                    }
10952                    std::task::Poll::Ready(Err(e)) => {
10953                        return std::task::Poll::Ready(Some(Err(fidl::Error::ServerRequestRead(
10954                            e.into(),
10955                        ))));
10956                    }
10957                }
10958
10959                // A message has been received from the channel
10960                let (header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
10961
10962                std::task::Poll::Ready(Some(match header.ordinal {
10963                    0x199389f437b3937b => {
10964                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
10965                        let mut req = fidl::new_empty!(
10966                            DictionaryRouterRouteRequest,
10967                            fidl::encoding::DefaultFuchsiaResourceDialect
10968                        );
10969                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<DictionaryRouterRouteRequest>(&header, _body_bytes, handles, &mut req)?;
10970                        let control_handle =
10971                            DictionaryRouterControlHandle { inner: this.inner.clone() };
10972                        Ok(DictionaryRouterRequest::Route {
10973                            request: req.request,
10974                            instance_token: req.instance_token,
10975                            handle: req.handle,
10976
10977                            responder: DictionaryRouterRouteResponder {
10978                                control_handle: std::mem::ManuallyDrop::new(control_handle),
10979                                tx_id: header.tx_id,
10980                            },
10981                        })
10982                    }
10983                    _ if header.tx_id == 0
10984                        && header
10985                            .dynamic_flags()
10986                            .contains(fidl::encoding::DynamicFlags::FLEXIBLE) =>
10987                    {
10988                        Ok(DictionaryRouterRequest::_UnknownMethod {
10989                            ordinal: header.ordinal,
10990                            control_handle: DictionaryRouterControlHandle {
10991                                inner: this.inner.clone(),
10992                            },
10993                            method_type: fidl::MethodType::OneWay,
10994                        })
10995                    }
10996                    _ if header
10997                        .dynamic_flags()
10998                        .contains(fidl::encoding::DynamicFlags::FLEXIBLE) =>
10999                    {
11000                        this.inner.send_framework_err(
11001                            fidl::encoding::FrameworkErr::UnknownMethod,
11002                            header.tx_id,
11003                            header.ordinal,
11004                            header.dynamic_flags(),
11005                            (bytes, handles),
11006                        )?;
11007                        Ok(DictionaryRouterRequest::_UnknownMethod {
11008                            ordinal: header.ordinal,
11009                            control_handle: DictionaryRouterControlHandle {
11010                                inner: this.inner.clone(),
11011                            },
11012                            method_type: fidl::MethodType::TwoWay,
11013                        })
11014                    }
11015                    _ => Err(fidl::Error::UnknownOrdinal {
11016                        ordinal: header.ordinal,
11017                        protocol_name:
11018                            <DictionaryRouterMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
11019                    }),
11020                }))
11021            },
11022        )
11023    }
11024}
11025
11026/// A factory for `Dictionary` capabilities.
11027#[derive(Debug)]
11028pub enum DictionaryRouterRequest {
11029    /// Attempts to produce a `Dictionary` capability from this
11030    /// `DictionaryRouter`.
11031    ///
11032    /// `request` contains context for this route, and `instance_token`
11033    /// references the component that the routing operation is being performed
11034    /// for.
11035    ///
11036    /// This will return:
11037    ///
11038    /// - `SUCCESS` if `handle` has been associated with a connector.
11039    /// - `UNAVAILABLE` if the capability is unavailable, in which case `handle`
11040    ///   will be closed.
11041    /// - An error, if the operation failed.
11042    Route {
11043        request: RouteRequest,
11044        instance_token: fidl::EventPair,
11045        handle: fidl::EventPair,
11046        responder: DictionaryRouterRouteResponder,
11047    },
11048    /// An interaction was received which does not match any known method.
11049    #[non_exhaustive]
11050    _UnknownMethod {
11051        /// Ordinal of the method that was called.
11052        ordinal: u64,
11053        control_handle: DictionaryRouterControlHandle,
11054        method_type: fidl::MethodType,
11055    },
11056}
11057
11058impl DictionaryRouterRequest {
11059    #[allow(irrefutable_let_patterns)]
11060    pub fn into_route(
11061        self,
11062    ) -> Option<(RouteRequest, fidl::EventPair, fidl::EventPair, DictionaryRouterRouteResponder)>
11063    {
11064        if let DictionaryRouterRequest::Route { request, instance_token, handle, responder } = self
11065        {
11066            Some((request, instance_token, handle, responder))
11067        } else {
11068            None
11069        }
11070    }
11071
11072    /// Name of the method defined in FIDL
11073    pub fn method_name(&self) -> &'static str {
11074        match *self {
11075            DictionaryRouterRequest::Route { .. } => "route",
11076            DictionaryRouterRequest::_UnknownMethod {
11077                method_type: fidl::MethodType::OneWay,
11078                ..
11079            } => "unknown one-way method",
11080            DictionaryRouterRequest::_UnknownMethod {
11081                method_type: fidl::MethodType::TwoWay,
11082                ..
11083            } => "unknown two-way method",
11084        }
11085    }
11086}
11087
11088#[derive(Debug, Clone)]
11089pub struct DictionaryRouterControlHandle {
11090    inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
11091}
11092
11093impl fidl::endpoints::ControlHandle for DictionaryRouterControlHandle {
11094    fn shutdown(&self) {
11095        self.inner.shutdown()
11096    }
11097
11098    fn shutdown_with_epitaph(&self, status: zx_status::Status) {
11099        self.inner.shutdown_with_epitaph(status)
11100    }
11101
11102    fn is_closed(&self) -> bool {
11103        self.inner.channel().is_closed()
11104    }
11105    fn on_closed(&self) -> fidl::OnSignalsRef<'_> {
11106        self.inner.channel().on_closed()
11107    }
11108
11109    #[cfg(target_os = "fuchsia")]
11110    fn signal_peer(
11111        &self,
11112        clear_mask: zx::Signals,
11113        set_mask: zx::Signals,
11114    ) -> Result<(), zx_status::Status> {
11115        use fidl::Peered;
11116        self.inner.channel().signal_peer(clear_mask, set_mask)
11117    }
11118}
11119
11120impl DictionaryRouterControlHandle {}
11121
11122#[must_use = "FIDL methods require a response to be sent"]
11123#[derive(Debug)]
11124pub struct DictionaryRouterRouteResponder {
11125    control_handle: std::mem::ManuallyDrop<DictionaryRouterControlHandle>,
11126    tx_id: u32,
11127}
11128
11129/// Set the the channel to be shutdown (see [`DictionaryRouterControlHandle::shutdown`])
11130/// if the responder is dropped without sending a response, so that the client
11131/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
11132impl std::ops::Drop for DictionaryRouterRouteResponder {
11133    fn drop(&mut self) {
11134        self.control_handle.shutdown();
11135        // Safety: drops once, never accessed again
11136        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
11137    }
11138}
11139
11140impl fidl::endpoints::Responder for DictionaryRouterRouteResponder {
11141    type ControlHandle = DictionaryRouterControlHandle;
11142
11143    fn control_handle(&self) -> &DictionaryRouterControlHandle {
11144        &self.control_handle
11145    }
11146
11147    fn drop_without_shutdown(mut self) {
11148        // Safety: drops once, never accessed again due to mem::forget
11149        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
11150        // Prevent Drop from running (which would shut down the channel)
11151        std::mem::forget(self);
11152    }
11153}
11154
11155impl DictionaryRouterRouteResponder {
11156    /// Sends a response to the FIDL transaction.
11157    ///
11158    /// Sets the channel to shutdown if an error occurs.
11159    pub fn send(self, mut result: Result<RouterResponse, RouterError>) -> Result<(), fidl::Error> {
11160        let _result = self.send_raw(result);
11161        if _result.is_err() {
11162            self.control_handle.shutdown();
11163        }
11164        self.drop_without_shutdown();
11165        _result
11166    }
11167
11168    /// Similar to "send" but does not shutdown the channel if an error occurs.
11169    pub fn send_no_shutdown_on_err(
11170        self,
11171        mut result: Result<RouterResponse, RouterError>,
11172    ) -> Result<(), fidl::Error> {
11173        let _result = self.send_raw(result);
11174        self.drop_without_shutdown();
11175        _result
11176    }
11177
11178    fn send_raw(&self, mut result: Result<RouterResponse, RouterError>) -> Result<(), fidl::Error> {
11179        self.control_handle.inner.send::<fidl::encoding::FlexibleResultType<
11180            DictionaryRouterRouteResponse,
11181            RouterError,
11182        >>(
11183            fidl::encoding::FlexibleResult::new(result.map(|response| (response,))),
11184            self.tx_id,
11185            0x199389f437b3937b,
11186            fidl::encoding::DynamicFlags::FLEXIBLE,
11187        )
11188    }
11189}
11190
11191#[derive(Debug, Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash)]
11192pub struct DictionaryRouterDeprecatedMarker;
11193
11194impl fidl::endpoints::ProtocolMarker for DictionaryRouterDeprecatedMarker {
11195    type Proxy = DictionaryRouterDeprecatedProxy;
11196    type RequestStream = DictionaryRouterDeprecatedRequestStream;
11197    #[cfg(target_os = "fuchsia")]
11198    type SynchronousProxy = DictionaryRouterDeprecatedSynchronousProxy;
11199
11200    const DEBUG_NAME: &'static str = "(anonymous) DictionaryRouterDeprecated";
11201}
11202pub type DictionaryRouterDeprecatedRouteResult = Result<RouterResponse, RouterError>;
11203
11204pub trait DictionaryRouterDeprecatedProxyInterface: Send + Sync {
11205    fn r#clone(
11206        &self,
11207        request: fidl::endpoints::ServerEnd<fidl_fuchsia_unknown::CloneableMarker>,
11208    ) -> Result<(), fidl::Error>;
11209    type RouteResponseFut: std::future::Future<Output = Result<DictionaryRouterDeprecatedRouteResult, fidl::Error>>
11210        + Send;
11211    fn r#route(
11212        &self,
11213        request: DeprecatedRouteRequest,
11214        dictionary_server_end: fidl::endpoints::ServerEnd<DictionaryMarker>,
11215    ) -> Self::RouteResponseFut;
11216}
11217#[derive(Debug)]
11218#[cfg(target_os = "fuchsia")]
11219pub struct DictionaryRouterDeprecatedSynchronousProxy {
11220    client: fidl::client::sync::Client,
11221}
11222
11223#[cfg(target_os = "fuchsia")]
11224impl fidl::endpoints::SynchronousProxy for DictionaryRouterDeprecatedSynchronousProxy {
11225    type Proxy = DictionaryRouterDeprecatedProxy;
11226    type Protocol = DictionaryRouterDeprecatedMarker;
11227
11228    fn from_channel(inner: fidl::Channel) -> Self {
11229        Self::new(inner)
11230    }
11231
11232    fn into_channel(self) -> fidl::Channel {
11233        self.client.into_channel()
11234    }
11235
11236    fn as_channel(&self) -> &fidl::Channel {
11237        self.client.as_channel()
11238    }
11239}
11240
11241#[cfg(target_os = "fuchsia")]
11242impl DictionaryRouterDeprecatedSynchronousProxy {
11243    pub fn new(channel: fidl::Channel) -> Self {
11244        let protocol_name =
11245            <DictionaryRouterDeprecatedMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
11246        Self { client: fidl::client::sync::Client::new(channel, protocol_name) }
11247    }
11248
11249    pub fn into_channel(self) -> fidl::Channel {
11250        self.client.into_channel()
11251    }
11252
11253    /// Waits until an event arrives and returns it. It is safe for other
11254    /// threads to make concurrent requests while waiting for an event.
11255    pub fn wait_for_event(
11256        &self,
11257        deadline: zx::MonotonicInstant,
11258    ) -> Result<DictionaryRouterDeprecatedEvent, fidl::Error> {
11259        DictionaryRouterDeprecatedEvent::decode(self.client.wait_for_event(deadline)?)
11260    }
11261
11262    pub fn r#clone(
11263        &self,
11264        mut request: fidl::endpoints::ServerEnd<fidl_fuchsia_unknown::CloneableMarker>,
11265    ) -> Result<(), fidl::Error> {
11266        self.client.send::<fidl_fuchsia_unknown::CloneableCloneRequest>(
11267            (request,),
11268            0x20d8a7aba2168a79,
11269            fidl::encoding::DynamicFlags::empty(),
11270        )
11271    }
11272
11273    /// Attempts to produce a `Dictionary` capability from this
11274    /// `DictionaryRouter`. This will return:
11275    ///
11276    /// - A `Dictionary` if the operation is successful.
11277    /// - An empty value if there is no issue found but the capability is not
11278    ///   being provided (for example, an optional route ended in an offer from
11279    ///   void).
11280    /// - An error, if the operation failed.
11281    pub fn r#route(
11282        &self,
11283        mut request: DeprecatedRouteRequest,
11284        mut dictionary_server_end: fidl::endpoints::ServerEnd<DictionaryMarker>,
11285        ___deadline: zx::MonotonicInstant,
11286    ) -> Result<DictionaryRouterDeprecatedRouteResult, fidl::Error> {
11287        let _response = self.client.send_query::<
11288            DictionaryRouterDeprecatedRouteRequest,
11289            fidl::encoding::FlexibleResultType<DictionaryRouterDeprecatedRouteResponse, RouterError>,
11290        >(
11291            (&mut request, dictionary_server_end,),
11292            0x10b86c8a8e9eb51a,
11293            fidl::encoding::DynamicFlags::FLEXIBLE,
11294            ___deadline,
11295        )?
11296        .into_result::<DictionaryRouterDeprecatedMarker>("route")?;
11297        Ok(_response.map(|x| x.response))
11298    }
11299}
11300
11301#[cfg(target_os = "fuchsia")]
11302impl From<DictionaryRouterDeprecatedSynchronousProxy> for zx::NullableHandle {
11303    fn from(value: DictionaryRouterDeprecatedSynchronousProxy) -> Self {
11304        value.into_channel().into()
11305    }
11306}
11307
11308#[cfg(target_os = "fuchsia")]
11309impl From<fidl::Channel> for DictionaryRouterDeprecatedSynchronousProxy {
11310    fn from(value: fidl::Channel) -> Self {
11311        Self::new(value)
11312    }
11313}
11314
11315#[cfg(target_os = "fuchsia")]
11316impl fidl::endpoints::FromClient for DictionaryRouterDeprecatedSynchronousProxy {
11317    type Protocol = DictionaryRouterDeprecatedMarker;
11318
11319    fn from_client(value: fidl::endpoints::ClientEnd<DictionaryRouterDeprecatedMarker>) -> Self {
11320        Self::new(value.into_channel())
11321    }
11322}
11323
11324#[derive(Debug, Clone)]
11325pub struct DictionaryRouterDeprecatedProxy {
11326    client: fidl::client::Client<fidl::encoding::DefaultFuchsiaResourceDialect>,
11327}
11328
11329impl fidl::endpoints::Proxy for DictionaryRouterDeprecatedProxy {
11330    type Protocol = DictionaryRouterDeprecatedMarker;
11331
11332    fn from_channel(inner: ::fidl::AsyncChannel) -> Self {
11333        Self::new(inner)
11334    }
11335
11336    fn into_channel(self) -> Result<::fidl::AsyncChannel, Self> {
11337        self.client.into_channel().map_err(|client| Self { client })
11338    }
11339
11340    fn as_channel(&self) -> &::fidl::AsyncChannel {
11341        self.client.as_channel()
11342    }
11343}
11344
11345impl DictionaryRouterDeprecatedProxy {
11346    /// Create a new Proxy for fuchsia.component.runtime/DictionaryRouterDeprecated.
11347    pub fn new(channel: ::fidl::AsyncChannel) -> Self {
11348        let protocol_name =
11349            <DictionaryRouterDeprecatedMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
11350        Self { client: fidl::client::Client::new(channel, protocol_name) }
11351    }
11352
11353    /// Get a Stream of events from the remote end of the protocol.
11354    ///
11355    /// # Panics
11356    ///
11357    /// Panics if the event stream was already taken.
11358    pub fn take_event_stream(&self) -> DictionaryRouterDeprecatedEventStream {
11359        DictionaryRouterDeprecatedEventStream { event_receiver: self.client.take_event_receiver() }
11360    }
11361
11362    pub fn r#clone(
11363        &self,
11364        mut request: fidl::endpoints::ServerEnd<fidl_fuchsia_unknown::CloneableMarker>,
11365    ) -> Result<(), fidl::Error> {
11366        DictionaryRouterDeprecatedProxyInterface::r#clone(self, request)
11367    }
11368
11369    /// Attempts to produce a `Dictionary` capability from this
11370    /// `DictionaryRouter`. This will return:
11371    ///
11372    /// - A `Dictionary` if the operation is successful.
11373    /// - An empty value if there is no issue found but the capability is not
11374    ///   being provided (for example, an optional route ended in an offer from
11375    ///   void).
11376    /// - An error, if the operation failed.
11377    pub fn r#route(
11378        &self,
11379        mut request: DeprecatedRouteRequest,
11380        mut dictionary_server_end: fidl::endpoints::ServerEnd<DictionaryMarker>,
11381    ) -> fidl::client::QueryResponseFut<
11382        DictionaryRouterDeprecatedRouteResult,
11383        fidl::encoding::DefaultFuchsiaResourceDialect,
11384    > {
11385        DictionaryRouterDeprecatedProxyInterface::r#route(self, request, dictionary_server_end)
11386    }
11387}
11388
11389impl DictionaryRouterDeprecatedProxyInterface for DictionaryRouterDeprecatedProxy {
11390    fn r#clone(
11391        &self,
11392        mut request: fidl::endpoints::ServerEnd<fidl_fuchsia_unknown::CloneableMarker>,
11393    ) -> Result<(), fidl::Error> {
11394        self.client.send::<fidl_fuchsia_unknown::CloneableCloneRequest>(
11395            (request,),
11396            0x20d8a7aba2168a79,
11397            fidl::encoding::DynamicFlags::empty(),
11398        )
11399    }
11400
11401    type RouteResponseFut = fidl::client::QueryResponseFut<
11402        DictionaryRouterDeprecatedRouteResult,
11403        fidl::encoding::DefaultFuchsiaResourceDialect,
11404    >;
11405    fn r#route(
11406        &self,
11407        mut request: DeprecatedRouteRequest,
11408        mut dictionary_server_end: fidl::endpoints::ServerEnd<DictionaryMarker>,
11409    ) -> Self::RouteResponseFut {
11410        fn _decode(
11411            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
11412        ) -> Result<DictionaryRouterDeprecatedRouteResult, fidl::Error> {
11413            let _response = fidl::client::decode_transaction_body::<
11414                fidl::encoding::FlexibleResultType<
11415                    DictionaryRouterDeprecatedRouteResponse,
11416                    RouterError,
11417                >,
11418                fidl::encoding::DefaultFuchsiaResourceDialect,
11419                0x10b86c8a8e9eb51a,
11420            >(_buf?)?
11421            .into_result::<DictionaryRouterDeprecatedMarker>("route")?;
11422            Ok(_response.map(|x| x.response))
11423        }
11424        self.client.send_query_and_decode::<
11425            DictionaryRouterDeprecatedRouteRequest,
11426            DictionaryRouterDeprecatedRouteResult,
11427        >(
11428            (&mut request, dictionary_server_end,),
11429            0x10b86c8a8e9eb51a,
11430            fidl::encoding::DynamicFlags::FLEXIBLE,
11431            _decode,
11432        )
11433    }
11434}
11435
11436pub struct DictionaryRouterDeprecatedEventStream {
11437    event_receiver: fidl::client::EventReceiver<fidl::encoding::DefaultFuchsiaResourceDialect>,
11438}
11439
11440impl std::marker::Unpin for DictionaryRouterDeprecatedEventStream {}
11441
11442impl futures::stream::FusedStream for DictionaryRouterDeprecatedEventStream {
11443    fn is_terminated(&self) -> bool {
11444        self.event_receiver.is_terminated()
11445    }
11446}
11447
11448impl futures::Stream for DictionaryRouterDeprecatedEventStream {
11449    type Item = Result<DictionaryRouterDeprecatedEvent, fidl::Error>;
11450
11451    fn poll_next(
11452        mut self: std::pin::Pin<&mut Self>,
11453        cx: &mut std::task::Context<'_>,
11454    ) -> std::task::Poll<Option<Self::Item>> {
11455        match futures::ready!(futures::stream::StreamExt::poll_next_unpin(
11456            &mut self.event_receiver,
11457            cx
11458        )?) {
11459            Some(buf) => std::task::Poll::Ready(Some(DictionaryRouterDeprecatedEvent::decode(buf))),
11460            None => std::task::Poll::Ready(None),
11461        }
11462    }
11463}
11464
11465#[derive(Debug)]
11466pub enum DictionaryRouterDeprecatedEvent {
11467    #[non_exhaustive]
11468    _UnknownEvent {
11469        /// Ordinal of the event that was sent.
11470        ordinal: u64,
11471    },
11472}
11473
11474impl DictionaryRouterDeprecatedEvent {
11475    /// Decodes a message buffer as a [`DictionaryRouterDeprecatedEvent`].
11476    fn decode(
11477        mut buf: <fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc,
11478    ) -> Result<DictionaryRouterDeprecatedEvent, fidl::Error> {
11479        let (bytes, _handles) = buf.split_mut();
11480        let (tx_header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
11481        debug_assert_eq!(tx_header.tx_id, 0);
11482        match tx_header.ordinal {
11483            _ if tx_header.dynamic_flags().contains(fidl::encoding::DynamicFlags::FLEXIBLE) => {
11484                Ok(DictionaryRouterDeprecatedEvent::_UnknownEvent {
11485                    ordinal: tx_header.ordinal,
11486                })
11487            }
11488            _ => Err(fidl::Error::UnknownOrdinal {
11489                ordinal: tx_header.ordinal,
11490                protocol_name: <DictionaryRouterDeprecatedMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
11491            })
11492        }
11493    }
11494}
11495
11496/// A Stream of incoming requests for fuchsia.component.runtime/DictionaryRouterDeprecated.
11497pub struct DictionaryRouterDeprecatedRequestStream {
11498    inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
11499    is_terminated: bool,
11500}
11501
11502impl std::marker::Unpin for DictionaryRouterDeprecatedRequestStream {}
11503
11504impl futures::stream::FusedStream for DictionaryRouterDeprecatedRequestStream {
11505    fn is_terminated(&self) -> bool {
11506        self.is_terminated
11507    }
11508}
11509
11510impl fidl::endpoints::RequestStream for DictionaryRouterDeprecatedRequestStream {
11511    type Protocol = DictionaryRouterDeprecatedMarker;
11512    type ControlHandle = DictionaryRouterDeprecatedControlHandle;
11513
11514    fn from_channel(channel: ::fidl::AsyncChannel) -> Self {
11515        Self { inner: std::sync::Arc::new(fidl::ServeInner::new(channel)), is_terminated: false }
11516    }
11517
11518    fn control_handle(&self) -> Self::ControlHandle {
11519        DictionaryRouterDeprecatedControlHandle { inner: self.inner.clone() }
11520    }
11521
11522    fn into_inner(
11523        self,
11524    ) -> (::std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>, bool)
11525    {
11526        (self.inner, self.is_terminated)
11527    }
11528
11529    fn from_inner(
11530        inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
11531        is_terminated: bool,
11532    ) -> Self {
11533        Self { inner, is_terminated }
11534    }
11535}
11536
11537impl futures::Stream for DictionaryRouterDeprecatedRequestStream {
11538    type Item = Result<DictionaryRouterDeprecatedRequest, fidl::Error>;
11539
11540    fn poll_next(
11541        mut self: std::pin::Pin<&mut Self>,
11542        cx: &mut std::task::Context<'_>,
11543    ) -> std::task::Poll<Option<Self::Item>> {
11544        let this = &mut *self;
11545        if this.inner.check_shutdown(cx) {
11546            this.is_terminated = true;
11547            return std::task::Poll::Ready(None);
11548        }
11549        if this.is_terminated {
11550            panic!("polled DictionaryRouterDeprecatedRequestStream after completion");
11551        }
11552        fidl::encoding::with_tls_decode_buf::<_, fidl::encoding::DefaultFuchsiaResourceDialect>(
11553            |bytes, handles| {
11554                match this.inner.channel().read_etc(cx, bytes, handles) {
11555                    std::task::Poll::Ready(Ok(())) => {}
11556                    std::task::Poll::Pending => return std::task::Poll::Pending,
11557                    std::task::Poll::Ready(Err(zx_status::Status::PEER_CLOSED)) => {
11558                        this.is_terminated = true;
11559                        return std::task::Poll::Ready(None);
11560                    }
11561                    std::task::Poll::Ready(Err(e)) => {
11562                        return std::task::Poll::Ready(Some(Err(fidl::Error::ServerRequestRead(
11563                            e.into(),
11564                        ))));
11565                    }
11566                }
11567
11568                // A message has been received from the channel
11569                let (header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
11570
11571                std::task::Poll::Ready(Some(match header.ordinal {
11572                0x20d8a7aba2168a79 => {
11573                    header.validate_request_tx_id(fidl::MethodType::OneWay)?;
11574                    let mut req = fidl::new_empty!(fidl_fuchsia_unknown::CloneableCloneRequest, fidl::encoding::DefaultFuchsiaResourceDialect);
11575                    fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_unknown::CloneableCloneRequest>(&header, _body_bytes, handles, &mut req)?;
11576                    let control_handle = DictionaryRouterDeprecatedControlHandle {
11577                        inner: this.inner.clone(),
11578                    };
11579                    Ok(DictionaryRouterDeprecatedRequest::Clone {request: req.request,
11580
11581                        control_handle,
11582                    })
11583                }
11584                0x10b86c8a8e9eb51a => {
11585                    header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
11586                    let mut req = fidl::new_empty!(DictionaryRouterDeprecatedRouteRequest, fidl::encoding::DefaultFuchsiaResourceDialect);
11587                    fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<DictionaryRouterDeprecatedRouteRequest>(&header, _body_bytes, handles, &mut req)?;
11588                    let control_handle = DictionaryRouterDeprecatedControlHandle {
11589                        inner: this.inner.clone(),
11590                    };
11591                    Ok(DictionaryRouterDeprecatedRequest::Route {request: req.request,
11592dictionary_server_end: req.dictionary_server_end,
11593
11594                        responder: DictionaryRouterDeprecatedRouteResponder {
11595                            control_handle: std::mem::ManuallyDrop::new(control_handle),
11596                            tx_id: header.tx_id,
11597                        },
11598                    })
11599                }
11600                _ if header.tx_id == 0 && header.dynamic_flags().contains(fidl::encoding::DynamicFlags::FLEXIBLE) => {
11601                    Ok(DictionaryRouterDeprecatedRequest::_UnknownMethod {
11602                        ordinal: header.ordinal,
11603                        control_handle: DictionaryRouterDeprecatedControlHandle { inner: this.inner.clone() },
11604                        method_type: fidl::MethodType::OneWay,
11605                    })
11606                }
11607                _ if header.dynamic_flags().contains(fidl::encoding::DynamicFlags::FLEXIBLE) => {
11608                    this.inner.send_framework_err(
11609                        fidl::encoding::FrameworkErr::UnknownMethod,
11610                        header.tx_id,
11611                        header.ordinal,
11612                        header.dynamic_flags(),
11613                        (bytes, handles),
11614                    )?;
11615                    Ok(DictionaryRouterDeprecatedRequest::_UnknownMethod {
11616                        ordinal: header.ordinal,
11617                        control_handle: DictionaryRouterDeprecatedControlHandle { inner: this.inner.clone() },
11618                        method_type: fidl::MethodType::TwoWay,
11619                    })
11620                }
11621                _ => Err(fidl::Error::UnknownOrdinal {
11622                    ordinal: header.ordinal,
11623                    protocol_name: <DictionaryRouterDeprecatedMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
11624                }),
11625            }))
11626            },
11627        )
11628    }
11629}
11630
11631/// A factory for `Dictionary` capabilities.
11632#[derive(Debug)]
11633pub enum DictionaryRouterDeprecatedRequest {
11634    Clone {
11635        request: fidl::endpoints::ServerEnd<fidl_fuchsia_unknown::CloneableMarker>,
11636        control_handle: DictionaryRouterDeprecatedControlHandle,
11637    },
11638    /// Attempts to produce a `Dictionary` capability from this
11639    /// `DictionaryRouter`. This will return:
11640    ///
11641    /// - A `Dictionary` if the operation is successful.
11642    /// - An empty value if there is no issue found but the capability is not
11643    ///   being provided (for example, an optional route ended in an offer from
11644    ///   void).
11645    /// - An error, if the operation failed.
11646    Route {
11647        request: DeprecatedRouteRequest,
11648        dictionary_server_end: fidl::endpoints::ServerEnd<DictionaryMarker>,
11649        responder: DictionaryRouterDeprecatedRouteResponder,
11650    },
11651    /// An interaction was received which does not match any known method.
11652    #[non_exhaustive]
11653    _UnknownMethod {
11654        /// Ordinal of the method that was called.
11655        ordinal: u64,
11656        control_handle: DictionaryRouterDeprecatedControlHandle,
11657        method_type: fidl::MethodType,
11658    },
11659}
11660
11661impl DictionaryRouterDeprecatedRequest {
11662    #[allow(irrefutable_let_patterns)]
11663    pub fn into_clone(
11664        self,
11665    ) -> Option<(
11666        fidl::endpoints::ServerEnd<fidl_fuchsia_unknown::CloneableMarker>,
11667        DictionaryRouterDeprecatedControlHandle,
11668    )> {
11669        if let DictionaryRouterDeprecatedRequest::Clone { request, control_handle } = self {
11670            Some((request, control_handle))
11671        } else {
11672            None
11673        }
11674    }
11675
11676    #[allow(irrefutable_let_patterns)]
11677    pub fn into_route(
11678        self,
11679    ) -> Option<(
11680        DeprecatedRouteRequest,
11681        fidl::endpoints::ServerEnd<DictionaryMarker>,
11682        DictionaryRouterDeprecatedRouteResponder,
11683    )> {
11684        if let DictionaryRouterDeprecatedRequest::Route {
11685            request,
11686            dictionary_server_end,
11687            responder,
11688        } = self
11689        {
11690            Some((request, dictionary_server_end, responder))
11691        } else {
11692            None
11693        }
11694    }
11695
11696    /// Name of the method defined in FIDL
11697    pub fn method_name(&self) -> &'static str {
11698        match *self {
11699            DictionaryRouterDeprecatedRequest::Clone { .. } => "clone",
11700            DictionaryRouterDeprecatedRequest::Route { .. } => "route",
11701            DictionaryRouterDeprecatedRequest::_UnknownMethod {
11702                method_type: fidl::MethodType::OneWay,
11703                ..
11704            } => "unknown one-way method",
11705            DictionaryRouterDeprecatedRequest::_UnknownMethod {
11706                method_type: fidl::MethodType::TwoWay,
11707                ..
11708            } => "unknown two-way method",
11709        }
11710    }
11711}
11712
11713#[derive(Debug, Clone)]
11714pub struct DictionaryRouterDeprecatedControlHandle {
11715    inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
11716}
11717
11718impl fidl::endpoints::ControlHandle for DictionaryRouterDeprecatedControlHandle {
11719    fn shutdown(&self) {
11720        self.inner.shutdown()
11721    }
11722
11723    fn shutdown_with_epitaph(&self, status: zx_status::Status) {
11724        self.inner.shutdown_with_epitaph(status)
11725    }
11726
11727    fn is_closed(&self) -> bool {
11728        self.inner.channel().is_closed()
11729    }
11730    fn on_closed(&self) -> fidl::OnSignalsRef<'_> {
11731        self.inner.channel().on_closed()
11732    }
11733
11734    #[cfg(target_os = "fuchsia")]
11735    fn signal_peer(
11736        &self,
11737        clear_mask: zx::Signals,
11738        set_mask: zx::Signals,
11739    ) -> Result<(), zx_status::Status> {
11740        use fidl::Peered;
11741        self.inner.channel().signal_peer(clear_mask, set_mask)
11742    }
11743}
11744
11745impl DictionaryRouterDeprecatedControlHandle {}
11746
11747#[must_use = "FIDL methods require a response to be sent"]
11748#[derive(Debug)]
11749pub struct DictionaryRouterDeprecatedRouteResponder {
11750    control_handle: std::mem::ManuallyDrop<DictionaryRouterDeprecatedControlHandle>,
11751    tx_id: u32,
11752}
11753
11754/// Set the the channel to be shutdown (see [`DictionaryRouterDeprecatedControlHandle::shutdown`])
11755/// if the responder is dropped without sending a response, so that the client
11756/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
11757impl std::ops::Drop for DictionaryRouterDeprecatedRouteResponder {
11758    fn drop(&mut self) {
11759        self.control_handle.shutdown();
11760        // Safety: drops once, never accessed again
11761        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
11762    }
11763}
11764
11765impl fidl::endpoints::Responder for DictionaryRouterDeprecatedRouteResponder {
11766    type ControlHandle = DictionaryRouterDeprecatedControlHandle;
11767
11768    fn control_handle(&self) -> &DictionaryRouterDeprecatedControlHandle {
11769        &self.control_handle
11770    }
11771
11772    fn drop_without_shutdown(mut self) {
11773        // Safety: drops once, never accessed again due to mem::forget
11774        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
11775        // Prevent Drop from running (which would shut down the channel)
11776        std::mem::forget(self);
11777    }
11778}
11779
11780impl DictionaryRouterDeprecatedRouteResponder {
11781    /// Sends a response to the FIDL transaction.
11782    ///
11783    /// Sets the channel to shutdown if an error occurs.
11784    pub fn send(self, mut result: Result<RouterResponse, RouterError>) -> Result<(), fidl::Error> {
11785        let _result = self.send_raw(result);
11786        if _result.is_err() {
11787            self.control_handle.shutdown();
11788        }
11789        self.drop_without_shutdown();
11790        _result
11791    }
11792
11793    /// Similar to "send" but does not shutdown the channel if an error occurs.
11794    pub fn send_no_shutdown_on_err(
11795        self,
11796        mut result: Result<RouterResponse, RouterError>,
11797    ) -> Result<(), fidl::Error> {
11798        let _result = self.send_raw(result);
11799        self.drop_without_shutdown();
11800        _result
11801    }
11802
11803    fn send_raw(&self, mut result: Result<RouterResponse, RouterError>) -> Result<(), fidl::Error> {
11804        self.control_handle.inner.send::<fidl::encoding::FlexibleResultType<
11805            DictionaryRouterDeprecatedRouteResponse,
11806            RouterError,
11807        >>(
11808            fidl::encoding::FlexibleResult::new(result.map(|response| (response,))),
11809            self.tx_id,
11810            0x10b86c8a8e9eb51a,
11811            fidl::encoding::DynamicFlags::FLEXIBLE,
11812        )
11813    }
11814}
11815
11816#[derive(Debug, Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash)]
11817pub struct DirConnectorMarker;
11818
11819impl fidl::endpoints::ProtocolMarker for DirConnectorMarker {
11820    type Proxy = DirConnectorProxy;
11821    type RequestStream = DirConnectorRequestStream;
11822    #[cfg(target_os = "fuchsia")]
11823    type SynchronousProxy = DirConnectorSynchronousProxy;
11824
11825    const DEBUG_NAME: &'static str = "(anonymous) DirConnector";
11826}
11827
11828pub trait DirConnectorProxyInterface: Send + Sync {
11829    fn r#clone(
11830        &self,
11831        request: fidl::endpoints::ServerEnd<fidl_fuchsia_unknown::CloneableMarker>,
11832    ) -> Result<(), fidl::Error>;
11833    fn r#connect(
11834        &self,
11835        channel: fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>,
11836    ) -> Result<(), fidl::Error>;
11837}
11838#[derive(Debug)]
11839#[cfg(target_os = "fuchsia")]
11840pub struct DirConnectorSynchronousProxy {
11841    client: fidl::client::sync::Client,
11842}
11843
11844#[cfg(target_os = "fuchsia")]
11845impl fidl::endpoints::SynchronousProxy for DirConnectorSynchronousProxy {
11846    type Proxy = DirConnectorProxy;
11847    type Protocol = DirConnectorMarker;
11848
11849    fn from_channel(inner: fidl::Channel) -> Self {
11850        Self::new(inner)
11851    }
11852
11853    fn into_channel(self) -> fidl::Channel {
11854        self.client.into_channel()
11855    }
11856
11857    fn as_channel(&self) -> &fidl::Channel {
11858        self.client.as_channel()
11859    }
11860}
11861
11862#[cfg(target_os = "fuchsia")]
11863impl DirConnectorSynchronousProxy {
11864    pub fn new(channel: fidl::Channel) -> Self {
11865        let protocol_name = <DirConnectorMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
11866        Self { client: fidl::client::sync::Client::new(channel, protocol_name) }
11867    }
11868
11869    pub fn into_channel(self) -> fidl::Channel {
11870        self.client.into_channel()
11871    }
11872
11873    /// Waits until an event arrives and returns it. It is safe for other
11874    /// threads to make concurrent requests while waiting for an event.
11875    pub fn wait_for_event(
11876        &self,
11877        deadline: zx::MonotonicInstant,
11878    ) -> Result<DirConnectorEvent, fidl::Error> {
11879        DirConnectorEvent::decode(self.client.wait_for_event(deadline)?)
11880    }
11881
11882    pub fn r#clone(
11883        &self,
11884        mut request: fidl::endpoints::ServerEnd<fidl_fuchsia_unknown::CloneableMarker>,
11885    ) -> Result<(), fidl::Error> {
11886        self.client.send::<fidl_fuchsia_unknown::CloneableCloneRequest>(
11887            (request,),
11888            0x20d8a7aba2168a79,
11889            fidl::encoding::DynamicFlags::empty(),
11890        )
11891    }
11892
11893    /// Sends a channel to the `DirReceiver` associated with this `DirConnector`.
11894    pub fn r#connect(
11895        &self,
11896        mut channel: fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>,
11897    ) -> Result<(), fidl::Error> {
11898        self.client.send::<DirConnectorConnectRequest>(
11899            (channel,),
11900            0x23fbb3d289ca7e5b,
11901            fidl::encoding::DynamicFlags::FLEXIBLE,
11902        )
11903    }
11904}
11905
11906#[cfg(target_os = "fuchsia")]
11907impl From<DirConnectorSynchronousProxy> for zx::NullableHandle {
11908    fn from(value: DirConnectorSynchronousProxy) -> Self {
11909        value.into_channel().into()
11910    }
11911}
11912
11913#[cfg(target_os = "fuchsia")]
11914impl From<fidl::Channel> for DirConnectorSynchronousProxy {
11915    fn from(value: fidl::Channel) -> Self {
11916        Self::new(value)
11917    }
11918}
11919
11920#[cfg(target_os = "fuchsia")]
11921impl fidl::endpoints::FromClient for DirConnectorSynchronousProxy {
11922    type Protocol = DirConnectorMarker;
11923
11924    fn from_client(value: fidl::endpoints::ClientEnd<DirConnectorMarker>) -> Self {
11925        Self::new(value.into_channel())
11926    }
11927}
11928
11929#[derive(Debug, Clone)]
11930pub struct DirConnectorProxy {
11931    client: fidl::client::Client<fidl::encoding::DefaultFuchsiaResourceDialect>,
11932}
11933
11934impl fidl::endpoints::Proxy for DirConnectorProxy {
11935    type Protocol = DirConnectorMarker;
11936
11937    fn from_channel(inner: ::fidl::AsyncChannel) -> Self {
11938        Self::new(inner)
11939    }
11940
11941    fn into_channel(self) -> Result<::fidl::AsyncChannel, Self> {
11942        self.client.into_channel().map_err(|client| Self { client })
11943    }
11944
11945    fn as_channel(&self) -> &::fidl::AsyncChannel {
11946        self.client.as_channel()
11947    }
11948}
11949
11950impl DirConnectorProxy {
11951    /// Create a new Proxy for fuchsia.component.runtime/DirConnector.
11952    pub fn new(channel: ::fidl::AsyncChannel) -> Self {
11953        let protocol_name = <DirConnectorMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
11954        Self { client: fidl::client::Client::new(channel, protocol_name) }
11955    }
11956
11957    /// Get a Stream of events from the remote end of the protocol.
11958    ///
11959    /// # Panics
11960    ///
11961    /// Panics if the event stream was already taken.
11962    pub fn take_event_stream(&self) -> DirConnectorEventStream {
11963        DirConnectorEventStream { event_receiver: self.client.take_event_receiver() }
11964    }
11965
11966    pub fn r#clone(
11967        &self,
11968        mut request: fidl::endpoints::ServerEnd<fidl_fuchsia_unknown::CloneableMarker>,
11969    ) -> Result<(), fidl::Error> {
11970        DirConnectorProxyInterface::r#clone(self, request)
11971    }
11972
11973    /// Sends a channel to the `DirReceiver` associated with this `DirConnector`.
11974    pub fn r#connect(
11975        &self,
11976        mut channel: fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>,
11977    ) -> Result<(), fidl::Error> {
11978        DirConnectorProxyInterface::r#connect(self, channel)
11979    }
11980}
11981
11982impl DirConnectorProxyInterface for DirConnectorProxy {
11983    fn r#clone(
11984        &self,
11985        mut request: fidl::endpoints::ServerEnd<fidl_fuchsia_unknown::CloneableMarker>,
11986    ) -> Result<(), fidl::Error> {
11987        self.client.send::<fidl_fuchsia_unknown::CloneableCloneRequest>(
11988            (request,),
11989            0x20d8a7aba2168a79,
11990            fidl::encoding::DynamicFlags::empty(),
11991        )
11992    }
11993
11994    fn r#connect(
11995        &self,
11996        mut channel: fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>,
11997    ) -> Result<(), fidl::Error> {
11998        self.client.send::<DirConnectorConnectRequest>(
11999            (channel,),
12000            0x23fbb3d289ca7e5b,
12001            fidl::encoding::DynamicFlags::FLEXIBLE,
12002        )
12003    }
12004}
12005
12006pub struct DirConnectorEventStream {
12007    event_receiver: fidl::client::EventReceiver<fidl::encoding::DefaultFuchsiaResourceDialect>,
12008}
12009
12010impl std::marker::Unpin for DirConnectorEventStream {}
12011
12012impl futures::stream::FusedStream for DirConnectorEventStream {
12013    fn is_terminated(&self) -> bool {
12014        self.event_receiver.is_terminated()
12015    }
12016}
12017
12018impl futures::Stream for DirConnectorEventStream {
12019    type Item = Result<DirConnectorEvent, fidl::Error>;
12020
12021    fn poll_next(
12022        mut self: std::pin::Pin<&mut Self>,
12023        cx: &mut std::task::Context<'_>,
12024    ) -> std::task::Poll<Option<Self::Item>> {
12025        match futures::ready!(futures::stream::StreamExt::poll_next_unpin(
12026            &mut self.event_receiver,
12027            cx
12028        )?) {
12029            Some(buf) => std::task::Poll::Ready(Some(DirConnectorEvent::decode(buf))),
12030            None => std::task::Poll::Ready(None),
12031        }
12032    }
12033}
12034
12035#[derive(Debug)]
12036pub enum DirConnectorEvent {
12037    #[non_exhaustive]
12038    _UnknownEvent {
12039        /// Ordinal of the event that was sent.
12040        ordinal: u64,
12041    },
12042}
12043
12044impl DirConnectorEvent {
12045    /// Decodes a message buffer as a [`DirConnectorEvent`].
12046    fn decode(
12047        mut buf: <fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc,
12048    ) -> Result<DirConnectorEvent, fidl::Error> {
12049        let (bytes, _handles) = buf.split_mut();
12050        let (tx_header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
12051        debug_assert_eq!(tx_header.tx_id, 0);
12052        match tx_header.ordinal {
12053            _ if tx_header.dynamic_flags().contains(fidl::encoding::DynamicFlags::FLEXIBLE) => {
12054                Ok(DirConnectorEvent::_UnknownEvent { ordinal: tx_header.ordinal })
12055            }
12056            _ => Err(fidl::Error::UnknownOrdinal {
12057                ordinal: tx_header.ordinal,
12058                protocol_name: <DirConnectorMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
12059            }),
12060        }
12061    }
12062}
12063
12064/// A Stream of incoming requests for fuchsia.component.runtime/DirConnector.
12065pub struct DirConnectorRequestStream {
12066    inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
12067    is_terminated: bool,
12068}
12069
12070impl std::marker::Unpin for DirConnectorRequestStream {}
12071
12072impl futures::stream::FusedStream for DirConnectorRequestStream {
12073    fn is_terminated(&self) -> bool {
12074        self.is_terminated
12075    }
12076}
12077
12078impl fidl::endpoints::RequestStream for DirConnectorRequestStream {
12079    type Protocol = DirConnectorMarker;
12080    type ControlHandle = DirConnectorControlHandle;
12081
12082    fn from_channel(channel: ::fidl::AsyncChannel) -> Self {
12083        Self { inner: std::sync::Arc::new(fidl::ServeInner::new(channel)), is_terminated: false }
12084    }
12085
12086    fn control_handle(&self) -> Self::ControlHandle {
12087        DirConnectorControlHandle { inner: self.inner.clone() }
12088    }
12089
12090    fn into_inner(
12091        self,
12092    ) -> (::std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>, bool)
12093    {
12094        (self.inner, self.is_terminated)
12095    }
12096
12097    fn from_inner(
12098        inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
12099        is_terminated: bool,
12100    ) -> Self {
12101        Self { inner, is_terminated }
12102    }
12103}
12104
12105impl futures::Stream for DirConnectorRequestStream {
12106    type Item = Result<DirConnectorRequest, fidl::Error>;
12107
12108    fn poll_next(
12109        mut self: std::pin::Pin<&mut Self>,
12110        cx: &mut std::task::Context<'_>,
12111    ) -> std::task::Poll<Option<Self::Item>> {
12112        let this = &mut *self;
12113        if this.inner.check_shutdown(cx) {
12114            this.is_terminated = true;
12115            return std::task::Poll::Ready(None);
12116        }
12117        if this.is_terminated {
12118            panic!("polled DirConnectorRequestStream after completion");
12119        }
12120        fidl::encoding::with_tls_decode_buf::<_, fidl::encoding::DefaultFuchsiaResourceDialect>(
12121            |bytes, handles| {
12122                match this.inner.channel().read_etc(cx, bytes, handles) {
12123                    std::task::Poll::Ready(Ok(())) => {}
12124                    std::task::Poll::Pending => return std::task::Poll::Pending,
12125                    std::task::Poll::Ready(Err(zx_status::Status::PEER_CLOSED)) => {
12126                        this.is_terminated = true;
12127                        return std::task::Poll::Ready(None);
12128                    }
12129                    std::task::Poll::Ready(Err(e)) => {
12130                        return std::task::Poll::Ready(Some(Err(fidl::Error::ServerRequestRead(
12131                            e.into(),
12132                        ))));
12133                    }
12134                }
12135
12136                // A message has been received from the channel
12137                let (header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
12138
12139                std::task::Poll::Ready(Some(match header.ordinal {
12140                    0x20d8a7aba2168a79 => {
12141                        header.validate_request_tx_id(fidl::MethodType::OneWay)?;
12142                        let mut req = fidl::new_empty!(
12143                            fidl_fuchsia_unknown::CloneableCloneRequest,
12144                            fidl::encoding::DefaultFuchsiaResourceDialect
12145                        );
12146                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_unknown::CloneableCloneRequest>(&header, _body_bytes, handles, &mut req)?;
12147                        let control_handle =
12148                            DirConnectorControlHandle { inner: this.inner.clone() };
12149                        Ok(DirConnectorRequest::Clone { request: req.request, control_handle })
12150                    }
12151                    0x23fbb3d289ca7e5b => {
12152                        header.validate_request_tx_id(fidl::MethodType::OneWay)?;
12153                        let mut req = fidl::new_empty!(
12154                            DirConnectorConnectRequest,
12155                            fidl::encoding::DefaultFuchsiaResourceDialect
12156                        );
12157                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<DirConnectorConnectRequest>(&header, _body_bytes, handles, &mut req)?;
12158                        let control_handle =
12159                            DirConnectorControlHandle { inner: this.inner.clone() };
12160                        Ok(DirConnectorRequest::Connect { channel: req.channel, control_handle })
12161                    }
12162                    _ if header.tx_id == 0
12163                        && header
12164                            .dynamic_flags()
12165                            .contains(fidl::encoding::DynamicFlags::FLEXIBLE) =>
12166                    {
12167                        Ok(DirConnectorRequest::_UnknownMethod {
12168                            ordinal: header.ordinal,
12169                            control_handle: DirConnectorControlHandle { inner: this.inner.clone() },
12170                            method_type: fidl::MethodType::OneWay,
12171                        })
12172                    }
12173                    _ if header
12174                        .dynamic_flags()
12175                        .contains(fidl::encoding::DynamicFlags::FLEXIBLE) =>
12176                    {
12177                        this.inner.send_framework_err(
12178                            fidl::encoding::FrameworkErr::UnknownMethod,
12179                            header.tx_id,
12180                            header.ordinal,
12181                            header.dynamic_flags(),
12182                            (bytes, handles),
12183                        )?;
12184                        Ok(DirConnectorRequest::_UnknownMethod {
12185                            ordinal: header.ordinal,
12186                            control_handle: DirConnectorControlHandle { inner: this.inner.clone() },
12187                            method_type: fidl::MethodType::TwoWay,
12188                        })
12189                    }
12190                    _ => Err(fidl::Error::UnknownOrdinal {
12191                        ordinal: header.ordinal,
12192                        protocol_name:
12193                            <DirConnectorMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
12194                    }),
12195                }))
12196            },
12197        )
12198    }
12199}
12200
12201/// A `DirConnector` represents the sending end of a connection to a capability.
12202/// A `DirConnector` presents as a directory node when inserted into a
12203/// `fuchsia.io.Directory`.
12204#[derive(Debug)]
12205pub enum DirConnectorRequest {
12206    Clone {
12207        request: fidl::endpoints::ServerEnd<fidl_fuchsia_unknown::CloneableMarker>,
12208        control_handle: DirConnectorControlHandle,
12209    },
12210    /// Sends a channel to the `DirReceiver` associated with this `DirConnector`.
12211    Connect {
12212        channel: fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>,
12213        control_handle: DirConnectorControlHandle,
12214    },
12215    /// An interaction was received which does not match any known method.
12216    #[non_exhaustive]
12217    _UnknownMethod {
12218        /// Ordinal of the method that was called.
12219        ordinal: u64,
12220        control_handle: DirConnectorControlHandle,
12221        method_type: fidl::MethodType,
12222    },
12223}
12224
12225impl DirConnectorRequest {
12226    #[allow(irrefutable_let_patterns)]
12227    pub fn into_clone(
12228        self,
12229    ) -> Option<(
12230        fidl::endpoints::ServerEnd<fidl_fuchsia_unknown::CloneableMarker>,
12231        DirConnectorControlHandle,
12232    )> {
12233        if let DirConnectorRequest::Clone { request, control_handle } = self {
12234            Some((request, control_handle))
12235        } else {
12236            None
12237        }
12238    }
12239
12240    #[allow(irrefutable_let_patterns)]
12241    pub fn into_connect(
12242        self,
12243    ) -> Option<(
12244        fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>,
12245        DirConnectorControlHandle,
12246    )> {
12247        if let DirConnectorRequest::Connect { channel, control_handle } = self {
12248            Some((channel, control_handle))
12249        } else {
12250            None
12251        }
12252    }
12253
12254    /// Name of the method defined in FIDL
12255    pub fn method_name(&self) -> &'static str {
12256        match *self {
12257            DirConnectorRequest::Clone { .. } => "clone",
12258            DirConnectorRequest::Connect { .. } => "connect",
12259            DirConnectorRequest::_UnknownMethod {
12260                method_type: fidl::MethodType::OneWay, ..
12261            } => "unknown one-way method",
12262            DirConnectorRequest::_UnknownMethod {
12263                method_type: fidl::MethodType::TwoWay, ..
12264            } => "unknown two-way method",
12265        }
12266    }
12267}
12268
12269#[derive(Debug, Clone)]
12270pub struct DirConnectorControlHandle {
12271    inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
12272}
12273
12274impl fidl::endpoints::ControlHandle for DirConnectorControlHandle {
12275    fn shutdown(&self) {
12276        self.inner.shutdown()
12277    }
12278
12279    fn shutdown_with_epitaph(&self, status: zx_status::Status) {
12280        self.inner.shutdown_with_epitaph(status)
12281    }
12282
12283    fn is_closed(&self) -> bool {
12284        self.inner.channel().is_closed()
12285    }
12286    fn on_closed(&self) -> fidl::OnSignalsRef<'_> {
12287        self.inner.channel().on_closed()
12288    }
12289
12290    #[cfg(target_os = "fuchsia")]
12291    fn signal_peer(
12292        &self,
12293        clear_mask: zx::Signals,
12294        set_mask: zx::Signals,
12295    ) -> Result<(), zx_status::Status> {
12296        use fidl::Peered;
12297        self.inner.channel().signal_peer(clear_mask, set_mask)
12298    }
12299}
12300
12301impl DirConnectorControlHandle {}
12302
12303#[derive(Debug, Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash)]
12304pub struct DirConnectorRouterMarker;
12305
12306impl fidl::endpoints::ProtocolMarker for DirConnectorRouterMarker {
12307    type Proxy = DirConnectorRouterProxy;
12308    type RequestStream = DirConnectorRouterRequestStream;
12309    #[cfg(target_os = "fuchsia")]
12310    type SynchronousProxy = DirConnectorRouterSynchronousProxy;
12311
12312    const DEBUG_NAME: &'static str = "(anonymous) DirConnectorRouter";
12313}
12314pub type DirConnectorRouterRouteResult = Result<RouterResponse, RouterError>;
12315
12316pub trait DirConnectorRouterProxyInterface: Send + Sync {
12317    type RouteResponseFut: std::future::Future<Output = Result<DirConnectorRouterRouteResult, fidl::Error>>
12318        + Send;
12319    fn r#route(
12320        &self,
12321        request: RouteRequest,
12322        instance_token: fidl::EventPair,
12323        handle: fidl::EventPair,
12324    ) -> Self::RouteResponseFut;
12325}
12326#[derive(Debug)]
12327#[cfg(target_os = "fuchsia")]
12328pub struct DirConnectorRouterSynchronousProxy {
12329    client: fidl::client::sync::Client,
12330}
12331
12332#[cfg(target_os = "fuchsia")]
12333impl fidl::endpoints::SynchronousProxy for DirConnectorRouterSynchronousProxy {
12334    type Proxy = DirConnectorRouterProxy;
12335    type Protocol = DirConnectorRouterMarker;
12336
12337    fn from_channel(inner: fidl::Channel) -> Self {
12338        Self::new(inner)
12339    }
12340
12341    fn into_channel(self) -> fidl::Channel {
12342        self.client.into_channel()
12343    }
12344
12345    fn as_channel(&self) -> &fidl::Channel {
12346        self.client.as_channel()
12347    }
12348}
12349
12350#[cfg(target_os = "fuchsia")]
12351impl DirConnectorRouterSynchronousProxy {
12352    pub fn new(channel: fidl::Channel) -> Self {
12353        let protocol_name =
12354            <DirConnectorRouterMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
12355        Self { client: fidl::client::sync::Client::new(channel, protocol_name) }
12356    }
12357
12358    pub fn into_channel(self) -> fidl::Channel {
12359        self.client.into_channel()
12360    }
12361
12362    /// Waits until an event arrives and returns it. It is safe for other
12363    /// threads to make concurrent requests while waiting for an event.
12364    pub fn wait_for_event(
12365        &self,
12366        deadline: zx::MonotonicInstant,
12367    ) -> Result<DirConnectorRouterEvent, fidl::Error> {
12368        DirConnectorRouterEvent::decode(self.client.wait_for_event(deadline)?)
12369    }
12370
12371    /// Attempts to produce a `DirConnector` capability from this
12372    /// `DirConnectorRouter`.
12373    ///
12374    /// `request` contains context for this route, and `instance_token`
12375    /// references the component that the routing operation is being performed
12376    /// for.
12377    ///
12378    /// This will return:
12379    ///
12380    /// - `SUCCESS` if `handle` has been associated with a connector.
12381    /// - `UNAVAILABLE` if the capability is unavailable, in which case `handle`
12382    ///   will be closed.
12383    /// - An error, if the operation failed.
12384    pub fn r#route(
12385        &self,
12386        mut request: RouteRequest,
12387        mut instance_token: fidl::EventPair,
12388        mut handle: fidl::EventPair,
12389        ___deadline: zx::MonotonicInstant,
12390    ) -> Result<DirConnectorRouterRouteResult, fidl::Error> {
12391        let _response = self.client.send_query::<
12392            DirConnectorRouterRouteRequest,
12393            fidl::encoding::FlexibleResultType<DirConnectorRouterRouteResponse, RouterError>,
12394        >(
12395            (&mut request, instance_token, handle,),
12396            0x233f2ac038127462,
12397            fidl::encoding::DynamicFlags::FLEXIBLE,
12398            ___deadline,
12399        )?
12400        .into_result::<DirConnectorRouterMarker>("route")?;
12401        Ok(_response.map(|x| x.response))
12402    }
12403}
12404
12405#[cfg(target_os = "fuchsia")]
12406impl From<DirConnectorRouterSynchronousProxy> for zx::NullableHandle {
12407    fn from(value: DirConnectorRouterSynchronousProxy) -> Self {
12408        value.into_channel().into()
12409    }
12410}
12411
12412#[cfg(target_os = "fuchsia")]
12413impl From<fidl::Channel> for DirConnectorRouterSynchronousProxy {
12414    fn from(value: fidl::Channel) -> Self {
12415        Self::new(value)
12416    }
12417}
12418
12419#[cfg(target_os = "fuchsia")]
12420impl fidl::endpoints::FromClient for DirConnectorRouterSynchronousProxy {
12421    type Protocol = DirConnectorRouterMarker;
12422
12423    fn from_client(value: fidl::endpoints::ClientEnd<DirConnectorRouterMarker>) -> Self {
12424        Self::new(value.into_channel())
12425    }
12426}
12427
12428#[derive(Debug, Clone)]
12429pub struct DirConnectorRouterProxy {
12430    client: fidl::client::Client<fidl::encoding::DefaultFuchsiaResourceDialect>,
12431}
12432
12433impl fidl::endpoints::Proxy for DirConnectorRouterProxy {
12434    type Protocol = DirConnectorRouterMarker;
12435
12436    fn from_channel(inner: ::fidl::AsyncChannel) -> Self {
12437        Self::new(inner)
12438    }
12439
12440    fn into_channel(self) -> Result<::fidl::AsyncChannel, Self> {
12441        self.client.into_channel().map_err(|client| Self { client })
12442    }
12443
12444    fn as_channel(&self) -> &::fidl::AsyncChannel {
12445        self.client.as_channel()
12446    }
12447}
12448
12449impl DirConnectorRouterProxy {
12450    /// Create a new Proxy for fuchsia.component.runtime/DirConnectorRouter.
12451    pub fn new(channel: ::fidl::AsyncChannel) -> Self {
12452        let protocol_name =
12453            <DirConnectorRouterMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
12454        Self { client: fidl::client::Client::new(channel, protocol_name) }
12455    }
12456
12457    /// Get a Stream of events from the remote end of the protocol.
12458    ///
12459    /// # Panics
12460    ///
12461    /// Panics if the event stream was already taken.
12462    pub fn take_event_stream(&self) -> DirConnectorRouterEventStream {
12463        DirConnectorRouterEventStream { event_receiver: self.client.take_event_receiver() }
12464    }
12465
12466    /// Attempts to produce a `DirConnector` capability from this
12467    /// `DirConnectorRouter`.
12468    ///
12469    /// `request` contains context for this route, and `instance_token`
12470    /// references the component that the routing operation is being performed
12471    /// for.
12472    ///
12473    /// This will return:
12474    ///
12475    /// - `SUCCESS` if `handle` has been associated with a connector.
12476    /// - `UNAVAILABLE` if the capability is unavailable, in which case `handle`
12477    ///   will be closed.
12478    /// - An error, if the operation failed.
12479    pub fn r#route(
12480        &self,
12481        mut request: RouteRequest,
12482        mut instance_token: fidl::EventPair,
12483        mut handle: fidl::EventPair,
12484    ) -> fidl::client::QueryResponseFut<
12485        DirConnectorRouterRouteResult,
12486        fidl::encoding::DefaultFuchsiaResourceDialect,
12487    > {
12488        DirConnectorRouterProxyInterface::r#route(self, request, instance_token, handle)
12489    }
12490}
12491
12492impl DirConnectorRouterProxyInterface for DirConnectorRouterProxy {
12493    type RouteResponseFut = fidl::client::QueryResponseFut<
12494        DirConnectorRouterRouteResult,
12495        fidl::encoding::DefaultFuchsiaResourceDialect,
12496    >;
12497    fn r#route(
12498        &self,
12499        mut request: RouteRequest,
12500        mut instance_token: fidl::EventPair,
12501        mut handle: fidl::EventPair,
12502    ) -> Self::RouteResponseFut {
12503        fn _decode(
12504            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
12505        ) -> Result<DirConnectorRouterRouteResult, fidl::Error> {
12506            let _response = fidl::client::decode_transaction_body::<
12507                fidl::encoding::FlexibleResultType<DirConnectorRouterRouteResponse, RouterError>,
12508                fidl::encoding::DefaultFuchsiaResourceDialect,
12509                0x233f2ac038127462,
12510            >(_buf?)?
12511            .into_result::<DirConnectorRouterMarker>("route")?;
12512            Ok(_response.map(|x| x.response))
12513        }
12514        self.client
12515            .send_query_and_decode::<DirConnectorRouterRouteRequest, DirConnectorRouterRouteResult>(
12516                (&mut request, instance_token, handle),
12517                0x233f2ac038127462,
12518                fidl::encoding::DynamicFlags::FLEXIBLE,
12519                _decode,
12520            )
12521    }
12522}
12523
12524pub struct DirConnectorRouterEventStream {
12525    event_receiver: fidl::client::EventReceiver<fidl::encoding::DefaultFuchsiaResourceDialect>,
12526}
12527
12528impl std::marker::Unpin for DirConnectorRouterEventStream {}
12529
12530impl futures::stream::FusedStream for DirConnectorRouterEventStream {
12531    fn is_terminated(&self) -> bool {
12532        self.event_receiver.is_terminated()
12533    }
12534}
12535
12536impl futures::Stream for DirConnectorRouterEventStream {
12537    type Item = Result<DirConnectorRouterEvent, fidl::Error>;
12538
12539    fn poll_next(
12540        mut self: std::pin::Pin<&mut Self>,
12541        cx: &mut std::task::Context<'_>,
12542    ) -> std::task::Poll<Option<Self::Item>> {
12543        match futures::ready!(futures::stream::StreamExt::poll_next_unpin(
12544            &mut self.event_receiver,
12545            cx
12546        )?) {
12547            Some(buf) => std::task::Poll::Ready(Some(DirConnectorRouterEvent::decode(buf))),
12548            None => std::task::Poll::Ready(None),
12549        }
12550    }
12551}
12552
12553#[derive(Debug)]
12554pub enum DirConnectorRouterEvent {
12555    #[non_exhaustive]
12556    _UnknownEvent {
12557        /// Ordinal of the event that was sent.
12558        ordinal: u64,
12559    },
12560}
12561
12562impl DirConnectorRouterEvent {
12563    /// Decodes a message buffer as a [`DirConnectorRouterEvent`].
12564    fn decode(
12565        mut buf: <fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc,
12566    ) -> Result<DirConnectorRouterEvent, fidl::Error> {
12567        let (bytes, _handles) = buf.split_mut();
12568        let (tx_header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
12569        debug_assert_eq!(tx_header.tx_id, 0);
12570        match tx_header.ordinal {
12571            _ if tx_header.dynamic_flags().contains(fidl::encoding::DynamicFlags::FLEXIBLE) => {
12572                Ok(DirConnectorRouterEvent::_UnknownEvent { ordinal: tx_header.ordinal })
12573            }
12574            _ => Err(fidl::Error::UnknownOrdinal {
12575                ordinal: tx_header.ordinal,
12576                protocol_name:
12577                    <DirConnectorRouterMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
12578            }),
12579        }
12580    }
12581}
12582
12583/// A Stream of incoming requests for fuchsia.component.runtime/DirConnectorRouter.
12584pub struct DirConnectorRouterRequestStream {
12585    inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
12586    is_terminated: bool,
12587}
12588
12589impl std::marker::Unpin for DirConnectorRouterRequestStream {}
12590
12591impl futures::stream::FusedStream for DirConnectorRouterRequestStream {
12592    fn is_terminated(&self) -> bool {
12593        self.is_terminated
12594    }
12595}
12596
12597impl fidl::endpoints::RequestStream for DirConnectorRouterRequestStream {
12598    type Protocol = DirConnectorRouterMarker;
12599    type ControlHandle = DirConnectorRouterControlHandle;
12600
12601    fn from_channel(channel: ::fidl::AsyncChannel) -> Self {
12602        Self { inner: std::sync::Arc::new(fidl::ServeInner::new(channel)), is_terminated: false }
12603    }
12604
12605    fn control_handle(&self) -> Self::ControlHandle {
12606        DirConnectorRouterControlHandle { inner: self.inner.clone() }
12607    }
12608
12609    fn into_inner(
12610        self,
12611    ) -> (::std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>, bool)
12612    {
12613        (self.inner, self.is_terminated)
12614    }
12615
12616    fn from_inner(
12617        inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
12618        is_terminated: bool,
12619    ) -> Self {
12620        Self { inner, is_terminated }
12621    }
12622}
12623
12624impl futures::Stream for DirConnectorRouterRequestStream {
12625    type Item = Result<DirConnectorRouterRequest, fidl::Error>;
12626
12627    fn poll_next(
12628        mut self: std::pin::Pin<&mut Self>,
12629        cx: &mut std::task::Context<'_>,
12630    ) -> std::task::Poll<Option<Self::Item>> {
12631        let this = &mut *self;
12632        if this.inner.check_shutdown(cx) {
12633            this.is_terminated = true;
12634            return std::task::Poll::Ready(None);
12635        }
12636        if this.is_terminated {
12637            panic!("polled DirConnectorRouterRequestStream after completion");
12638        }
12639        fidl::encoding::with_tls_decode_buf::<_, fidl::encoding::DefaultFuchsiaResourceDialect>(
12640            |bytes, handles| {
12641                match this.inner.channel().read_etc(cx, bytes, handles) {
12642                    std::task::Poll::Ready(Ok(())) => {}
12643                    std::task::Poll::Pending => return std::task::Poll::Pending,
12644                    std::task::Poll::Ready(Err(zx_status::Status::PEER_CLOSED)) => {
12645                        this.is_terminated = true;
12646                        return std::task::Poll::Ready(None);
12647                    }
12648                    std::task::Poll::Ready(Err(e)) => {
12649                        return std::task::Poll::Ready(Some(Err(fidl::Error::ServerRequestRead(
12650                            e.into(),
12651                        ))));
12652                    }
12653                }
12654
12655                // A message has been received from the channel
12656                let (header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
12657
12658                std::task::Poll::Ready(Some(match header.ordinal {
12659                0x233f2ac038127462 => {
12660                    header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
12661                    let mut req = fidl::new_empty!(DirConnectorRouterRouteRequest, fidl::encoding::DefaultFuchsiaResourceDialect);
12662                    fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<DirConnectorRouterRouteRequest>(&header, _body_bytes, handles, &mut req)?;
12663                    let control_handle = DirConnectorRouterControlHandle {
12664                        inner: this.inner.clone(),
12665                    };
12666                    Ok(DirConnectorRouterRequest::Route {request: req.request,
12667instance_token: req.instance_token,
12668handle: req.handle,
12669
12670                        responder: DirConnectorRouterRouteResponder {
12671                            control_handle: std::mem::ManuallyDrop::new(control_handle),
12672                            tx_id: header.tx_id,
12673                        },
12674                    })
12675                }
12676                _ if header.tx_id == 0 && header.dynamic_flags().contains(fidl::encoding::DynamicFlags::FLEXIBLE) => {
12677                    Ok(DirConnectorRouterRequest::_UnknownMethod {
12678                        ordinal: header.ordinal,
12679                        control_handle: DirConnectorRouterControlHandle { inner: this.inner.clone() },
12680                        method_type: fidl::MethodType::OneWay,
12681                    })
12682                }
12683                _ if header.dynamic_flags().contains(fidl::encoding::DynamicFlags::FLEXIBLE) => {
12684                    this.inner.send_framework_err(
12685                        fidl::encoding::FrameworkErr::UnknownMethod,
12686                        header.tx_id,
12687                        header.ordinal,
12688                        header.dynamic_flags(),
12689                        (bytes, handles),
12690                    )?;
12691                    Ok(DirConnectorRouterRequest::_UnknownMethod {
12692                        ordinal: header.ordinal,
12693                        control_handle: DirConnectorRouterControlHandle { inner: this.inner.clone() },
12694                        method_type: fidl::MethodType::TwoWay,
12695                    })
12696                }
12697                _ => Err(fidl::Error::UnknownOrdinal {
12698                    ordinal: header.ordinal,
12699                    protocol_name: <DirConnectorRouterMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
12700                }),
12701            }))
12702            },
12703        )
12704    }
12705}
12706
12707/// A factory for `DirConnector` capabilities.
12708#[derive(Debug)]
12709pub enum DirConnectorRouterRequest {
12710    /// Attempts to produce a `DirConnector` capability from this
12711    /// `DirConnectorRouter`.
12712    ///
12713    /// `request` contains context for this route, and `instance_token`
12714    /// references the component that the routing operation is being performed
12715    /// for.
12716    ///
12717    /// This will return:
12718    ///
12719    /// - `SUCCESS` if `handle` has been associated with a connector.
12720    /// - `UNAVAILABLE` if the capability is unavailable, in which case `handle`
12721    ///   will be closed.
12722    /// - An error, if the operation failed.
12723    Route {
12724        request: RouteRequest,
12725        instance_token: fidl::EventPair,
12726        handle: fidl::EventPair,
12727        responder: DirConnectorRouterRouteResponder,
12728    },
12729    /// An interaction was received which does not match any known method.
12730    #[non_exhaustive]
12731    _UnknownMethod {
12732        /// Ordinal of the method that was called.
12733        ordinal: u64,
12734        control_handle: DirConnectorRouterControlHandle,
12735        method_type: fidl::MethodType,
12736    },
12737}
12738
12739impl DirConnectorRouterRequest {
12740    #[allow(irrefutable_let_patterns)]
12741    pub fn into_route(
12742        self,
12743    ) -> Option<(RouteRequest, fidl::EventPair, fidl::EventPair, DirConnectorRouterRouteResponder)>
12744    {
12745        if let DirConnectorRouterRequest::Route { request, instance_token, handle, responder } =
12746            self
12747        {
12748            Some((request, instance_token, handle, responder))
12749        } else {
12750            None
12751        }
12752    }
12753
12754    /// Name of the method defined in FIDL
12755    pub fn method_name(&self) -> &'static str {
12756        match *self {
12757            DirConnectorRouterRequest::Route { .. } => "route",
12758            DirConnectorRouterRequest::_UnknownMethod {
12759                method_type: fidl::MethodType::OneWay,
12760                ..
12761            } => "unknown one-way method",
12762            DirConnectorRouterRequest::_UnknownMethod {
12763                method_type: fidl::MethodType::TwoWay,
12764                ..
12765            } => "unknown two-way method",
12766        }
12767    }
12768}
12769
12770#[derive(Debug, Clone)]
12771pub struct DirConnectorRouterControlHandle {
12772    inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
12773}
12774
12775impl fidl::endpoints::ControlHandle for DirConnectorRouterControlHandle {
12776    fn shutdown(&self) {
12777        self.inner.shutdown()
12778    }
12779
12780    fn shutdown_with_epitaph(&self, status: zx_status::Status) {
12781        self.inner.shutdown_with_epitaph(status)
12782    }
12783
12784    fn is_closed(&self) -> bool {
12785        self.inner.channel().is_closed()
12786    }
12787    fn on_closed(&self) -> fidl::OnSignalsRef<'_> {
12788        self.inner.channel().on_closed()
12789    }
12790
12791    #[cfg(target_os = "fuchsia")]
12792    fn signal_peer(
12793        &self,
12794        clear_mask: zx::Signals,
12795        set_mask: zx::Signals,
12796    ) -> Result<(), zx_status::Status> {
12797        use fidl::Peered;
12798        self.inner.channel().signal_peer(clear_mask, set_mask)
12799    }
12800}
12801
12802impl DirConnectorRouterControlHandle {}
12803
12804#[must_use = "FIDL methods require a response to be sent"]
12805#[derive(Debug)]
12806pub struct DirConnectorRouterRouteResponder {
12807    control_handle: std::mem::ManuallyDrop<DirConnectorRouterControlHandle>,
12808    tx_id: u32,
12809}
12810
12811/// Set the the channel to be shutdown (see [`DirConnectorRouterControlHandle::shutdown`])
12812/// if the responder is dropped without sending a response, so that the client
12813/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
12814impl std::ops::Drop for DirConnectorRouterRouteResponder {
12815    fn drop(&mut self) {
12816        self.control_handle.shutdown();
12817        // Safety: drops once, never accessed again
12818        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
12819    }
12820}
12821
12822impl fidl::endpoints::Responder for DirConnectorRouterRouteResponder {
12823    type ControlHandle = DirConnectorRouterControlHandle;
12824
12825    fn control_handle(&self) -> &DirConnectorRouterControlHandle {
12826        &self.control_handle
12827    }
12828
12829    fn drop_without_shutdown(mut self) {
12830        // Safety: drops once, never accessed again due to mem::forget
12831        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
12832        // Prevent Drop from running (which would shut down the channel)
12833        std::mem::forget(self);
12834    }
12835}
12836
12837impl DirConnectorRouterRouteResponder {
12838    /// Sends a response to the FIDL transaction.
12839    ///
12840    /// Sets the channel to shutdown if an error occurs.
12841    pub fn send(self, mut result: Result<RouterResponse, RouterError>) -> Result<(), fidl::Error> {
12842        let _result = self.send_raw(result);
12843        if _result.is_err() {
12844            self.control_handle.shutdown();
12845        }
12846        self.drop_without_shutdown();
12847        _result
12848    }
12849
12850    /// Similar to "send" but does not shutdown the channel if an error occurs.
12851    pub fn send_no_shutdown_on_err(
12852        self,
12853        mut result: Result<RouterResponse, RouterError>,
12854    ) -> Result<(), fidl::Error> {
12855        let _result = self.send_raw(result);
12856        self.drop_without_shutdown();
12857        _result
12858    }
12859
12860    fn send_raw(&self, mut result: Result<RouterResponse, RouterError>) -> Result<(), fidl::Error> {
12861        self.control_handle.inner.send::<fidl::encoding::FlexibleResultType<
12862            DirConnectorRouterRouteResponse,
12863            RouterError,
12864        >>(
12865            fidl::encoding::FlexibleResult::new(result.map(|response| (response,))),
12866            self.tx_id,
12867            0x233f2ac038127462,
12868            fidl::encoding::DynamicFlags::FLEXIBLE,
12869        )
12870    }
12871}
12872
12873#[derive(Debug, Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash)]
12874pub struct DirConnectorRouterDeprecatedMarker;
12875
12876impl fidl::endpoints::ProtocolMarker for DirConnectorRouterDeprecatedMarker {
12877    type Proxy = DirConnectorRouterDeprecatedProxy;
12878    type RequestStream = DirConnectorRouterDeprecatedRequestStream;
12879    #[cfg(target_os = "fuchsia")]
12880    type SynchronousProxy = DirConnectorRouterDeprecatedSynchronousProxy;
12881
12882    const DEBUG_NAME: &'static str = "(anonymous) DirConnectorRouterDeprecated";
12883}
12884pub type DirConnectorRouterDeprecatedRouteResult = Result<RouterResponse, RouterError>;
12885
12886pub trait DirConnectorRouterDeprecatedProxyInterface: Send + Sync {
12887    fn r#clone(
12888        &self,
12889        request: fidl::endpoints::ServerEnd<fidl_fuchsia_unknown::CloneableMarker>,
12890    ) -> Result<(), fidl::Error>;
12891    type RouteResponseFut: std::future::Future<Output = Result<DirConnectorRouterDeprecatedRouteResult, fidl::Error>>
12892        + Send;
12893    fn r#route(
12894        &self,
12895        request: DeprecatedRouteRequest,
12896        dir_connector_server_end: fidl::endpoints::ServerEnd<DirConnectorMarker>,
12897    ) -> Self::RouteResponseFut;
12898}
12899#[derive(Debug)]
12900#[cfg(target_os = "fuchsia")]
12901pub struct DirConnectorRouterDeprecatedSynchronousProxy {
12902    client: fidl::client::sync::Client,
12903}
12904
12905#[cfg(target_os = "fuchsia")]
12906impl fidl::endpoints::SynchronousProxy for DirConnectorRouterDeprecatedSynchronousProxy {
12907    type Proxy = DirConnectorRouterDeprecatedProxy;
12908    type Protocol = DirConnectorRouterDeprecatedMarker;
12909
12910    fn from_channel(inner: fidl::Channel) -> Self {
12911        Self::new(inner)
12912    }
12913
12914    fn into_channel(self) -> fidl::Channel {
12915        self.client.into_channel()
12916    }
12917
12918    fn as_channel(&self) -> &fidl::Channel {
12919        self.client.as_channel()
12920    }
12921}
12922
12923#[cfg(target_os = "fuchsia")]
12924impl DirConnectorRouterDeprecatedSynchronousProxy {
12925    pub fn new(channel: fidl::Channel) -> Self {
12926        let protocol_name =
12927            <DirConnectorRouterDeprecatedMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
12928        Self { client: fidl::client::sync::Client::new(channel, protocol_name) }
12929    }
12930
12931    pub fn into_channel(self) -> fidl::Channel {
12932        self.client.into_channel()
12933    }
12934
12935    /// Waits until an event arrives and returns it. It is safe for other
12936    /// threads to make concurrent requests while waiting for an event.
12937    pub fn wait_for_event(
12938        &self,
12939        deadline: zx::MonotonicInstant,
12940    ) -> Result<DirConnectorRouterDeprecatedEvent, fidl::Error> {
12941        DirConnectorRouterDeprecatedEvent::decode(self.client.wait_for_event(deadline)?)
12942    }
12943
12944    pub fn r#clone(
12945        &self,
12946        mut request: fidl::endpoints::ServerEnd<fidl_fuchsia_unknown::CloneableMarker>,
12947    ) -> Result<(), fidl::Error> {
12948        self.client.send::<fidl_fuchsia_unknown::CloneableCloneRequest>(
12949            (request,),
12950            0x20d8a7aba2168a79,
12951            fidl::encoding::DynamicFlags::empty(),
12952        )
12953    }
12954
12955    /// Attempts to produce a `DirConnector` capability from this
12956    /// `DirConnectorRouter`. This will return:
12957    ///
12958    /// - A `DirConnector` if the operation is successful.
12959    /// - An empty value if there is no issue found but the capability is not
12960    ///   being provided (for example, an optional route ended in an offer from
12961    ///   void).
12962    /// - An error, if the operation failed.
12963    pub fn r#route(
12964        &self,
12965        mut request: DeprecatedRouteRequest,
12966        mut dir_connector_server_end: fidl::endpoints::ServerEnd<DirConnectorMarker>,
12967        ___deadline: zx::MonotonicInstant,
12968    ) -> Result<DirConnectorRouterDeprecatedRouteResult, fidl::Error> {
12969        let _response = self.client.send_query::<
12970            DirConnectorRouterDeprecatedRouteRequest,
12971            fidl::encoding::FlexibleResultType<DirConnectorRouterDeprecatedRouteResponse, RouterError>,
12972        >(
12973            (&mut request, dir_connector_server_end,),
12974            0x199e1dee6ba3d71a,
12975            fidl::encoding::DynamicFlags::FLEXIBLE,
12976            ___deadline,
12977        )?
12978        .into_result::<DirConnectorRouterDeprecatedMarker>("route")?;
12979        Ok(_response.map(|x| x.response))
12980    }
12981}
12982
12983#[cfg(target_os = "fuchsia")]
12984impl From<DirConnectorRouterDeprecatedSynchronousProxy> for zx::NullableHandle {
12985    fn from(value: DirConnectorRouterDeprecatedSynchronousProxy) -> Self {
12986        value.into_channel().into()
12987    }
12988}
12989
12990#[cfg(target_os = "fuchsia")]
12991impl From<fidl::Channel> for DirConnectorRouterDeprecatedSynchronousProxy {
12992    fn from(value: fidl::Channel) -> Self {
12993        Self::new(value)
12994    }
12995}
12996
12997#[cfg(target_os = "fuchsia")]
12998impl fidl::endpoints::FromClient for DirConnectorRouterDeprecatedSynchronousProxy {
12999    type Protocol = DirConnectorRouterDeprecatedMarker;
13000
13001    fn from_client(value: fidl::endpoints::ClientEnd<DirConnectorRouterDeprecatedMarker>) -> Self {
13002        Self::new(value.into_channel())
13003    }
13004}
13005
13006#[derive(Debug, Clone)]
13007pub struct DirConnectorRouterDeprecatedProxy {
13008    client: fidl::client::Client<fidl::encoding::DefaultFuchsiaResourceDialect>,
13009}
13010
13011impl fidl::endpoints::Proxy for DirConnectorRouterDeprecatedProxy {
13012    type Protocol = DirConnectorRouterDeprecatedMarker;
13013
13014    fn from_channel(inner: ::fidl::AsyncChannel) -> Self {
13015        Self::new(inner)
13016    }
13017
13018    fn into_channel(self) -> Result<::fidl::AsyncChannel, Self> {
13019        self.client.into_channel().map_err(|client| Self { client })
13020    }
13021
13022    fn as_channel(&self) -> &::fidl::AsyncChannel {
13023        self.client.as_channel()
13024    }
13025}
13026
13027impl DirConnectorRouterDeprecatedProxy {
13028    /// Create a new Proxy for fuchsia.component.runtime/DirConnectorRouterDeprecated.
13029    pub fn new(channel: ::fidl::AsyncChannel) -> Self {
13030        let protocol_name =
13031            <DirConnectorRouterDeprecatedMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
13032        Self { client: fidl::client::Client::new(channel, protocol_name) }
13033    }
13034
13035    /// Get a Stream of events from the remote end of the protocol.
13036    ///
13037    /// # Panics
13038    ///
13039    /// Panics if the event stream was already taken.
13040    pub fn take_event_stream(&self) -> DirConnectorRouterDeprecatedEventStream {
13041        DirConnectorRouterDeprecatedEventStream {
13042            event_receiver: self.client.take_event_receiver(),
13043        }
13044    }
13045
13046    pub fn r#clone(
13047        &self,
13048        mut request: fidl::endpoints::ServerEnd<fidl_fuchsia_unknown::CloneableMarker>,
13049    ) -> Result<(), fidl::Error> {
13050        DirConnectorRouterDeprecatedProxyInterface::r#clone(self, request)
13051    }
13052
13053    /// Attempts to produce a `DirConnector` capability from this
13054    /// `DirConnectorRouter`. This will return:
13055    ///
13056    /// - A `DirConnector` if the operation is successful.
13057    /// - An empty value if there is no issue found but the capability is not
13058    ///   being provided (for example, an optional route ended in an offer from
13059    ///   void).
13060    /// - An error, if the operation failed.
13061    pub fn r#route(
13062        &self,
13063        mut request: DeprecatedRouteRequest,
13064        mut dir_connector_server_end: fidl::endpoints::ServerEnd<DirConnectorMarker>,
13065    ) -> fidl::client::QueryResponseFut<
13066        DirConnectorRouterDeprecatedRouteResult,
13067        fidl::encoding::DefaultFuchsiaResourceDialect,
13068    > {
13069        DirConnectorRouterDeprecatedProxyInterface::r#route(self, request, dir_connector_server_end)
13070    }
13071}
13072
13073impl DirConnectorRouterDeprecatedProxyInterface for DirConnectorRouterDeprecatedProxy {
13074    fn r#clone(
13075        &self,
13076        mut request: fidl::endpoints::ServerEnd<fidl_fuchsia_unknown::CloneableMarker>,
13077    ) -> Result<(), fidl::Error> {
13078        self.client.send::<fidl_fuchsia_unknown::CloneableCloneRequest>(
13079            (request,),
13080            0x20d8a7aba2168a79,
13081            fidl::encoding::DynamicFlags::empty(),
13082        )
13083    }
13084
13085    type RouteResponseFut = fidl::client::QueryResponseFut<
13086        DirConnectorRouterDeprecatedRouteResult,
13087        fidl::encoding::DefaultFuchsiaResourceDialect,
13088    >;
13089    fn r#route(
13090        &self,
13091        mut request: DeprecatedRouteRequest,
13092        mut dir_connector_server_end: fidl::endpoints::ServerEnd<DirConnectorMarker>,
13093    ) -> Self::RouteResponseFut {
13094        fn _decode(
13095            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
13096        ) -> Result<DirConnectorRouterDeprecatedRouteResult, fidl::Error> {
13097            let _response = fidl::client::decode_transaction_body::<
13098                fidl::encoding::FlexibleResultType<
13099                    DirConnectorRouterDeprecatedRouteResponse,
13100                    RouterError,
13101                >,
13102                fidl::encoding::DefaultFuchsiaResourceDialect,
13103                0x199e1dee6ba3d71a,
13104            >(_buf?)?
13105            .into_result::<DirConnectorRouterDeprecatedMarker>("route")?;
13106            Ok(_response.map(|x| x.response))
13107        }
13108        self.client.send_query_and_decode::<
13109            DirConnectorRouterDeprecatedRouteRequest,
13110            DirConnectorRouterDeprecatedRouteResult,
13111        >(
13112            (&mut request, dir_connector_server_end,),
13113            0x199e1dee6ba3d71a,
13114            fidl::encoding::DynamicFlags::FLEXIBLE,
13115            _decode,
13116        )
13117    }
13118}
13119
13120pub struct DirConnectorRouterDeprecatedEventStream {
13121    event_receiver: fidl::client::EventReceiver<fidl::encoding::DefaultFuchsiaResourceDialect>,
13122}
13123
13124impl std::marker::Unpin for DirConnectorRouterDeprecatedEventStream {}
13125
13126impl futures::stream::FusedStream for DirConnectorRouterDeprecatedEventStream {
13127    fn is_terminated(&self) -> bool {
13128        self.event_receiver.is_terminated()
13129    }
13130}
13131
13132impl futures::Stream for DirConnectorRouterDeprecatedEventStream {
13133    type Item = Result<DirConnectorRouterDeprecatedEvent, fidl::Error>;
13134
13135    fn poll_next(
13136        mut self: std::pin::Pin<&mut Self>,
13137        cx: &mut std::task::Context<'_>,
13138    ) -> std::task::Poll<Option<Self::Item>> {
13139        match futures::ready!(futures::stream::StreamExt::poll_next_unpin(
13140            &mut self.event_receiver,
13141            cx
13142        )?) {
13143            Some(buf) => {
13144                std::task::Poll::Ready(Some(DirConnectorRouterDeprecatedEvent::decode(buf)))
13145            }
13146            None => std::task::Poll::Ready(None),
13147        }
13148    }
13149}
13150
13151#[derive(Debug)]
13152pub enum DirConnectorRouterDeprecatedEvent {
13153    #[non_exhaustive]
13154    _UnknownEvent {
13155        /// Ordinal of the event that was sent.
13156        ordinal: u64,
13157    },
13158}
13159
13160impl DirConnectorRouterDeprecatedEvent {
13161    /// Decodes a message buffer as a [`DirConnectorRouterDeprecatedEvent`].
13162    fn decode(
13163        mut buf: <fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc,
13164    ) -> Result<DirConnectorRouterDeprecatedEvent, fidl::Error> {
13165        let (bytes, _handles) = buf.split_mut();
13166        let (tx_header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
13167        debug_assert_eq!(tx_header.tx_id, 0);
13168        match tx_header.ordinal {
13169            _ if tx_header.dynamic_flags().contains(fidl::encoding::DynamicFlags::FLEXIBLE) => {
13170                Ok(DirConnectorRouterDeprecatedEvent::_UnknownEvent {
13171                    ordinal: tx_header.ordinal,
13172                })
13173            }
13174            _ => Err(fidl::Error::UnknownOrdinal {
13175                ordinal: tx_header.ordinal,
13176                protocol_name: <DirConnectorRouterDeprecatedMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
13177            })
13178        }
13179    }
13180}
13181
13182/// A Stream of incoming requests for fuchsia.component.runtime/DirConnectorRouterDeprecated.
13183pub struct DirConnectorRouterDeprecatedRequestStream {
13184    inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
13185    is_terminated: bool,
13186}
13187
13188impl std::marker::Unpin for DirConnectorRouterDeprecatedRequestStream {}
13189
13190impl futures::stream::FusedStream for DirConnectorRouterDeprecatedRequestStream {
13191    fn is_terminated(&self) -> bool {
13192        self.is_terminated
13193    }
13194}
13195
13196impl fidl::endpoints::RequestStream for DirConnectorRouterDeprecatedRequestStream {
13197    type Protocol = DirConnectorRouterDeprecatedMarker;
13198    type ControlHandle = DirConnectorRouterDeprecatedControlHandle;
13199
13200    fn from_channel(channel: ::fidl::AsyncChannel) -> Self {
13201        Self { inner: std::sync::Arc::new(fidl::ServeInner::new(channel)), is_terminated: false }
13202    }
13203
13204    fn control_handle(&self) -> Self::ControlHandle {
13205        DirConnectorRouterDeprecatedControlHandle { inner: self.inner.clone() }
13206    }
13207
13208    fn into_inner(
13209        self,
13210    ) -> (::std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>, bool)
13211    {
13212        (self.inner, self.is_terminated)
13213    }
13214
13215    fn from_inner(
13216        inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
13217        is_terminated: bool,
13218    ) -> Self {
13219        Self { inner, is_terminated }
13220    }
13221}
13222
13223impl futures::Stream for DirConnectorRouterDeprecatedRequestStream {
13224    type Item = Result<DirConnectorRouterDeprecatedRequest, fidl::Error>;
13225
13226    fn poll_next(
13227        mut self: std::pin::Pin<&mut Self>,
13228        cx: &mut std::task::Context<'_>,
13229    ) -> std::task::Poll<Option<Self::Item>> {
13230        let this = &mut *self;
13231        if this.inner.check_shutdown(cx) {
13232            this.is_terminated = true;
13233            return std::task::Poll::Ready(None);
13234        }
13235        if this.is_terminated {
13236            panic!("polled DirConnectorRouterDeprecatedRequestStream after completion");
13237        }
13238        fidl::encoding::with_tls_decode_buf::<_, fidl::encoding::DefaultFuchsiaResourceDialect>(
13239            |bytes, handles| {
13240                match this.inner.channel().read_etc(cx, bytes, handles) {
13241                    std::task::Poll::Ready(Ok(())) => {}
13242                    std::task::Poll::Pending => return std::task::Poll::Pending,
13243                    std::task::Poll::Ready(Err(zx_status::Status::PEER_CLOSED)) => {
13244                        this.is_terminated = true;
13245                        return std::task::Poll::Ready(None);
13246                    }
13247                    std::task::Poll::Ready(Err(e)) => {
13248                        return std::task::Poll::Ready(Some(Err(fidl::Error::ServerRequestRead(
13249                            e.into(),
13250                        ))));
13251                    }
13252                }
13253
13254                // A message has been received from the channel
13255                let (header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
13256
13257                std::task::Poll::Ready(Some(match header.ordinal {
13258                0x20d8a7aba2168a79 => {
13259                    header.validate_request_tx_id(fidl::MethodType::OneWay)?;
13260                    let mut req = fidl::new_empty!(fidl_fuchsia_unknown::CloneableCloneRequest, fidl::encoding::DefaultFuchsiaResourceDialect);
13261                    fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_unknown::CloneableCloneRequest>(&header, _body_bytes, handles, &mut req)?;
13262                    let control_handle = DirConnectorRouterDeprecatedControlHandle {
13263                        inner: this.inner.clone(),
13264                    };
13265                    Ok(DirConnectorRouterDeprecatedRequest::Clone {request: req.request,
13266
13267                        control_handle,
13268                    })
13269                }
13270                0x199e1dee6ba3d71a => {
13271                    header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
13272                    let mut req = fidl::new_empty!(DirConnectorRouterDeprecatedRouteRequest, fidl::encoding::DefaultFuchsiaResourceDialect);
13273                    fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<DirConnectorRouterDeprecatedRouteRequest>(&header, _body_bytes, handles, &mut req)?;
13274                    let control_handle = DirConnectorRouterDeprecatedControlHandle {
13275                        inner: this.inner.clone(),
13276                    };
13277                    Ok(DirConnectorRouterDeprecatedRequest::Route {request: req.request,
13278dir_connector_server_end: req.dir_connector_server_end,
13279
13280                        responder: DirConnectorRouterDeprecatedRouteResponder {
13281                            control_handle: std::mem::ManuallyDrop::new(control_handle),
13282                            tx_id: header.tx_id,
13283                        },
13284                    })
13285                }
13286                _ if header.tx_id == 0 && header.dynamic_flags().contains(fidl::encoding::DynamicFlags::FLEXIBLE) => {
13287                    Ok(DirConnectorRouterDeprecatedRequest::_UnknownMethod {
13288                        ordinal: header.ordinal,
13289                        control_handle: DirConnectorRouterDeprecatedControlHandle { inner: this.inner.clone() },
13290                        method_type: fidl::MethodType::OneWay,
13291                    })
13292                }
13293                _ if header.dynamic_flags().contains(fidl::encoding::DynamicFlags::FLEXIBLE) => {
13294                    this.inner.send_framework_err(
13295                        fidl::encoding::FrameworkErr::UnknownMethod,
13296                        header.tx_id,
13297                        header.ordinal,
13298                        header.dynamic_flags(),
13299                        (bytes, handles),
13300                    )?;
13301                    Ok(DirConnectorRouterDeprecatedRequest::_UnknownMethod {
13302                        ordinal: header.ordinal,
13303                        control_handle: DirConnectorRouterDeprecatedControlHandle { inner: this.inner.clone() },
13304                        method_type: fidl::MethodType::TwoWay,
13305                    })
13306                }
13307                _ => Err(fidl::Error::UnknownOrdinal {
13308                    ordinal: header.ordinal,
13309                    protocol_name: <DirConnectorRouterDeprecatedMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
13310                }),
13311            }))
13312            },
13313        )
13314    }
13315}
13316
13317/// A factory for `DirConnector` capabilities.
13318#[derive(Debug)]
13319pub enum DirConnectorRouterDeprecatedRequest {
13320    Clone {
13321        request: fidl::endpoints::ServerEnd<fidl_fuchsia_unknown::CloneableMarker>,
13322        control_handle: DirConnectorRouterDeprecatedControlHandle,
13323    },
13324    /// Attempts to produce a `DirConnector` capability from this
13325    /// `DirConnectorRouter`. This will return:
13326    ///
13327    /// - A `DirConnector` if the operation is successful.
13328    /// - An empty value if there is no issue found but the capability is not
13329    ///   being provided (for example, an optional route ended in an offer from
13330    ///   void).
13331    /// - An error, if the operation failed.
13332    Route {
13333        request: DeprecatedRouteRequest,
13334        dir_connector_server_end: fidl::endpoints::ServerEnd<DirConnectorMarker>,
13335        responder: DirConnectorRouterDeprecatedRouteResponder,
13336    },
13337    /// An interaction was received which does not match any known method.
13338    #[non_exhaustive]
13339    _UnknownMethod {
13340        /// Ordinal of the method that was called.
13341        ordinal: u64,
13342        control_handle: DirConnectorRouterDeprecatedControlHandle,
13343        method_type: fidl::MethodType,
13344    },
13345}
13346
13347impl DirConnectorRouterDeprecatedRequest {
13348    #[allow(irrefutable_let_patterns)]
13349    pub fn into_clone(
13350        self,
13351    ) -> Option<(
13352        fidl::endpoints::ServerEnd<fidl_fuchsia_unknown::CloneableMarker>,
13353        DirConnectorRouterDeprecatedControlHandle,
13354    )> {
13355        if let DirConnectorRouterDeprecatedRequest::Clone { request, control_handle } = self {
13356            Some((request, control_handle))
13357        } else {
13358            None
13359        }
13360    }
13361
13362    #[allow(irrefutable_let_patterns)]
13363    pub fn into_route(
13364        self,
13365    ) -> Option<(
13366        DeprecatedRouteRequest,
13367        fidl::endpoints::ServerEnd<DirConnectorMarker>,
13368        DirConnectorRouterDeprecatedRouteResponder,
13369    )> {
13370        if let DirConnectorRouterDeprecatedRequest::Route {
13371            request,
13372            dir_connector_server_end,
13373            responder,
13374        } = self
13375        {
13376            Some((request, dir_connector_server_end, responder))
13377        } else {
13378            None
13379        }
13380    }
13381
13382    /// Name of the method defined in FIDL
13383    pub fn method_name(&self) -> &'static str {
13384        match *self {
13385            DirConnectorRouterDeprecatedRequest::Clone { .. } => "clone",
13386            DirConnectorRouterDeprecatedRequest::Route { .. } => "route",
13387            DirConnectorRouterDeprecatedRequest::_UnknownMethod {
13388                method_type: fidl::MethodType::OneWay,
13389                ..
13390            } => "unknown one-way method",
13391            DirConnectorRouterDeprecatedRequest::_UnknownMethod {
13392                method_type: fidl::MethodType::TwoWay,
13393                ..
13394            } => "unknown two-way method",
13395        }
13396    }
13397}
13398
13399#[derive(Debug, Clone)]
13400pub struct DirConnectorRouterDeprecatedControlHandle {
13401    inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
13402}
13403
13404impl fidl::endpoints::ControlHandle for DirConnectorRouterDeprecatedControlHandle {
13405    fn shutdown(&self) {
13406        self.inner.shutdown()
13407    }
13408
13409    fn shutdown_with_epitaph(&self, status: zx_status::Status) {
13410        self.inner.shutdown_with_epitaph(status)
13411    }
13412
13413    fn is_closed(&self) -> bool {
13414        self.inner.channel().is_closed()
13415    }
13416    fn on_closed(&self) -> fidl::OnSignalsRef<'_> {
13417        self.inner.channel().on_closed()
13418    }
13419
13420    #[cfg(target_os = "fuchsia")]
13421    fn signal_peer(
13422        &self,
13423        clear_mask: zx::Signals,
13424        set_mask: zx::Signals,
13425    ) -> Result<(), zx_status::Status> {
13426        use fidl::Peered;
13427        self.inner.channel().signal_peer(clear_mask, set_mask)
13428    }
13429}
13430
13431impl DirConnectorRouterDeprecatedControlHandle {}
13432
13433#[must_use = "FIDL methods require a response to be sent"]
13434#[derive(Debug)]
13435pub struct DirConnectorRouterDeprecatedRouteResponder {
13436    control_handle: std::mem::ManuallyDrop<DirConnectorRouterDeprecatedControlHandle>,
13437    tx_id: u32,
13438}
13439
13440/// Set the the channel to be shutdown (see [`DirConnectorRouterDeprecatedControlHandle::shutdown`])
13441/// if the responder is dropped without sending a response, so that the client
13442/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
13443impl std::ops::Drop for DirConnectorRouterDeprecatedRouteResponder {
13444    fn drop(&mut self) {
13445        self.control_handle.shutdown();
13446        // Safety: drops once, never accessed again
13447        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
13448    }
13449}
13450
13451impl fidl::endpoints::Responder for DirConnectorRouterDeprecatedRouteResponder {
13452    type ControlHandle = DirConnectorRouterDeprecatedControlHandle;
13453
13454    fn control_handle(&self) -> &DirConnectorRouterDeprecatedControlHandle {
13455        &self.control_handle
13456    }
13457
13458    fn drop_without_shutdown(mut self) {
13459        // Safety: drops once, never accessed again due to mem::forget
13460        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
13461        // Prevent Drop from running (which would shut down the channel)
13462        std::mem::forget(self);
13463    }
13464}
13465
13466impl DirConnectorRouterDeprecatedRouteResponder {
13467    /// Sends a response to the FIDL transaction.
13468    ///
13469    /// Sets the channel to shutdown if an error occurs.
13470    pub fn send(self, mut result: Result<RouterResponse, RouterError>) -> Result<(), fidl::Error> {
13471        let _result = self.send_raw(result);
13472        if _result.is_err() {
13473            self.control_handle.shutdown();
13474        }
13475        self.drop_without_shutdown();
13476        _result
13477    }
13478
13479    /// Similar to "send" but does not shutdown the channel if an error occurs.
13480    pub fn send_no_shutdown_on_err(
13481        self,
13482        mut result: Result<RouterResponse, RouterError>,
13483    ) -> Result<(), fidl::Error> {
13484        let _result = self.send_raw(result);
13485        self.drop_without_shutdown();
13486        _result
13487    }
13488
13489    fn send_raw(&self, mut result: Result<RouterResponse, RouterError>) -> Result<(), fidl::Error> {
13490        self.control_handle.inner.send::<fidl::encoding::FlexibleResultType<
13491            DirConnectorRouterDeprecatedRouteResponse,
13492            RouterError,
13493        >>(
13494            fidl::encoding::FlexibleResult::new(result.map(|response| (response,))),
13495            self.tx_id,
13496            0x199e1dee6ba3d71a,
13497            fidl::encoding::DynamicFlags::FLEXIBLE,
13498        )
13499    }
13500}
13501
13502#[derive(Debug, Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash)]
13503pub struct DirReceiverMarker;
13504
13505impl fidl::endpoints::ProtocolMarker for DirReceiverMarker {
13506    type Proxy = DirReceiverProxy;
13507    type RequestStream = DirReceiverRequestStream;
13508    #[cfg(target_os = "fuchsia")]
13509    type SynchronousProxy = DirReceiverSynchronousProxy;
13510
13511    const DEBUG_NAME: &'static str = "(anonymous) DirReceiver";
13512}
13513
13514pub trait DirReceiverProxyInterface: Send + Sync {
13515    fn r#receive(
13516        &self,
13517        channel: fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>,
13518        path: &str,
13519        rights: fidl_fuchsia_io::Flags,
13520    ) -> Result<(), fidl::Error>;
13521}
13522#[derive(Debug)]
13523#[cfg(target_os = "fuchsia")]
13524pub struct DirReceiverSynchronousProxy {
13525    client: fidl::client::sync::Client,
13526}
13527
13528#[cfg(target_os = "fuchsia")]
13529impl fidl::endpoints::SynchronousProxy for DirReceiverSynchronousProxy {
13530    type Proxy = DirReceiverProxy;
13531    type Protocol = DirReceiverMarker;
13532
13533    fn from_channel(inner: fidl::Channel) -> Self {
13534        Self::new(inner)
13535    }
13536
13537    fn into_channel(self) -> fidl::Channel {
13538        self.client.into_channel()
13539    }
13540
13541    fn as_channel(&self) -> &fidl::Channel {
13542        self.client.as_channel()
13543    }
13544}
13545
13546#[cfg(target_os = "fuchsia")]
13547impl DirReceiverSynchronousProxy {
13548    pub fn new(channel: fidl::Channel) -> Self {
13549        let protocol_name = <DirReceiverMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
13550        Self { client: fidl::client::sync::Client::new(channel, protocol_name) }
13551    }
13552
13553    pub fn into_channel(self) -> fidl::Channel {
13554        self.client.into_channel()
13555    }
13556
13557    /// Waits until an event arrives and returns it. It is safe for other
13558    /// threads to make concurrent requests while waiting for an event.
13559    pub fn wait_for_event(
13560        &self,
13561        deadline: zx::MonotonicInstant,
13562    ) -> Result<DirReceiverEvent, fidl::Error> {
13563        DirReceiverEvent::decode(self.client.wait_for_event(deadline)?)
13564    }
13565
13566    /// `Receive` will be called by component manager whenever a new handle has
13567    /// been given to any `DirConnector` associated with this `DirReceiver`.
13568    pub fn r#receive(
13569        &self,
13570        mut channel: fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>,
13571        mut path: &str,
13572        mut rights: fidl_fuchsia_io::Flags,
13573    ) -> Result<(), fidl::Error> {
13574        self.client.send::<DirReceiverReceiveRequest>(
13575            (channel, path, rights),
13576            0x4ac564d726bb325e,
13577            fidl::encoding::DynamicFlags::empty(),
13578        )
13579    }
13580}
13581
13582#[cfg(target_os = "fuchsia")]
13583impl From<DirReceiverSynchronousProxy> for zx::NullableHandle {
13584    fn from(value: DirReceiverSynchronousProxy) -> Self {
13585        value.into_channel().into()
13586    }
13587}
13588
13589#[cfg(target_os = "fuchsia")]
13590impl From<fidl::Channel> for DirReceiverSynchronousProxy {
13591    fn from(value: fidl::Channel) -> Self {
13592        Self::new(value)
13593    }
13594}
13595
13596#[cfg(target_os = "fuchsia")]
13597impl fidl::endpoints::FromClient for DirReceiverSynchronousProxy {
13598    type Protocol = DirReceiverMarker;
13599
13600    fn from_client(value: fidl::endpoints::ClientEnd<DirReceiverMarker>) -> Self {
13601        Self::new(value.into_channel())
13602    }
13603}
13604
13605#[derive(Debug, Clone)]
13606pub struct DirReceiverProxy {
13607    client: fidl::client::Client<fidl::encoding::DefaultFuchsiaResourceDialect>,
13608}
13609
13610impl fidl::endpoints::Proxy for DirReceiverProxy {
13611    type Protocol = DirReceiverMarker;
13612
13613    fn from_channel(inner: ::fidl::AsyncChannel) -> Self {
13614        Self::new(inner)
13615    }
13616
13617    fn into_channel(self) -> Result<::fidl::AsyncChannel, Self> {
13618        self.client.into_channel().map_err(|client| Self { client })
13619    }
13620
13621    fn as_channel(&self) -> &::fidl::AsyncChannel {
13622        self.client.as_channel()
13623    }
13624}
13625
13626impl DirReceiverProxy {
13627    /// Create a new Proxy for fuchsia.component.runtime/DirReceiver.
13628    pub fn new(channel: ::fidl::AsyncChannel) -> Self {
13629        let protocol_name = <DirReceiverMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
13630        Self { client: fidl::client::Client::new(channel, protocol_name) }
13631    }
13632
13633    /// Get a Stream of events from the remote end of the protocol.
13634    ///
13635    /// # Panics
13636    ///
13637    /// Panics if the event stream was already taken.
13638    pub fn take_event_stream(&self) -> DirReceiverEventStream {
13639        DirReceiverEventStream { event_receiver: self.client.take_event_receiver() }
13640    }
13641
13642    /// `Receive` will be called by component manager whenever a new handle has
13643    /// been given to any `DirConnector` associated with this `DirReceiver`.
13644    pub fn r#receive(
13645        &self,
13646        mut channel: fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>,
13647        mut path: &str,
13648        mut rights: fidl_fuchsia_io::Flags,
13649    ) -> Result<(), fidl::Error> {
13650        DirReceiverProxyInterface::r#receive(self, channel, path, rights)
13651    }
13652}
13653
13654impl DirReceiverProxyInterface for DirReceiverProxy {
13655    fn r#receive(
13656        &self,
13657        mut channel: fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>,
13658        mut path: &str,
13659        mut rights: fidl_fuchsia_io::Flags,
13660    ) -> Result<(), fidl::Error> {
13661        self.client.send::<DirReceiverReceiveRequest>(
13662            (channel, path, rights),
13663            0x4ac564d726bb325e,
13664            fidl::encoding::DynamicFlags::empty(),
13665        )
13666    }
13667}
13668
13669pub struct DirReceiverEventStream {
13670    event_receiver: fidl::client::EventReceiver<fidl::encoding::DefaultFuchsiaResourceDialect>,
13671}
13672
13673impl std::marker::Unpin for DirReceiverEventStream {}
13674
13675impl futures::stream::FusedStream for DirReceiverEventStream {
13676    fn is_terminated(&self) -> bool {
13677        self.event_receiver.is_terminated()
13678    }
13679}
13680
13681impl futures::Stream for DirReceiverEventStream {
13682    type Item = Result<DirReceiverEvent, fidl::Error>;
13683
13684    fn poll_next(
13685        mut self: std::pin::Pin<&mut Self>,
13686        cx: &mut std::task::Context<'_>,
13687    ) -> std::task::Poll<Option<Self::Item>> {
13688        match futures::ready!(futures::stream::StreamExt::poll_next_unpin(
13689            &mut self.event_receiver,
13690            cx
13691        )?) {
13692            Some(buf) => std::task::Poll::Ready(Some(DirReceiverEvent::decode(buf))),
13693            None => std::task::Poll::Ready(None),
13694        }
13695    }
13696}
13697
13698#[derive(Debug)]
13699pub enum DirReceiverEvent {}
13700
13701impl DirReceiverEvent {
13702    /// Decodes a message buffer as a [`DirReceiverEvent`].
13703    fn decode(
13704        mut buf: <fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc,
13705    ) -> Result<DirReceiverEvent, fidl::Error> {
13706        let (bytes, _handles) = buf.split_mut();
13707        let (tx_header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
13708        debug_assert_eq!(tx_header.tx_id, 0);
13709        match tx_header.ordinal {
13710            _ => Err(fidl::Error::UnknownOrdinal {
13711                ordinal: tx_header.ordinal,
13712                protocol_name: <DirReceiverMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
13713            }),
13714        }
13715    }
13716}
13717
13718/// A Stream of incoming requests for fuchsia.component.runtime/DirReceiver.
13719pub struct DirReceiverRequestStream {
13720    inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
13721    is_terminated: bool,
13722}
13723
13724impl std::marker::Unpin for DirReceiverRequestStream {}
13725
13726impl futures::stream::FusedStream for DirReceiverRequestStream {
13727    fn is_terminated(&self) -> bool {
13728        self.is_terminated
13729    }
13730}
13731
13732impl fidl::endpoints::RequestStream for DirReceiverRequestStream {
13733    type Protocol = DirReceiverMarker;
13734    type ControlHandle = DirReceiverControlHandle;
13735
13736    fn from_channel(channel: ::fidl::AsyncChannel) -> Self {
13737        Self { inner: std::sync::Arc::new(fidl::ServeInner::new(channel)), is_terminated: false }
13738    }
13739
13740    fn control_handle(&self) -> Self::ControlHandle {
13741        DirReceiverControlHandle { inner: self.inner.clone() }
13742    }
13743
13744    fn into_inner(
13745        self,
13746    ) -> (::std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>, bool)
13747    {
13748        (self.inner, self.is_terminated)
13749    }
13750
13751    fn from_inner(
13752        inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
13753        is_terminated: bool,
13754    ) -> Self {
13755        Self { inner, is_terminated }
13756    }
13757}
13758
13759impl futures::Stream for DirReceiverRequestStream {
13760    type Item = Result<DirReceiverRequest, fidl::Error>;
13761
13762    fn poll_next(
13763        mut self: std::pin::Pin<&mut Self>,
13764        cx: &mut std::task::Context<'_>,
13765    ) -> std::task::Poll<Option<Self::Item>> {
13766        let this = &mut *self;
13767        if this.inner.check_shutdown(cx) {
13768            this.is_terminated = true;
13769            return std::task::Poll::Ready(None);
13770        }
13771        if this.is_terminated {
13772            panic!("polled DirReceiverRequestStream after completion");
13773        }
13774        fidl::encoding::with_tls_decode_buf::<_, fidl::encoding::DefaultFuchsiaResourceDialect>(
13775            |bytes, handles| {
13776                match this.inner.channel().read_etc(cx, bytes, handles) {
13777                    std::task::Poll::Ready(Ok(())) => {}
13778                    std::task::Poll::Pending => return std::task::Poll::Pending,
13779                    std::task::Poll::Ready(Err(zx_status::Status::PEER_CLOSED)) => {
13780                        this.is_terminated = true;
13781                        return std::task::Poll::Ready(None);
13782                    }
13783                    std::task::Poll::Ready(Err(e)) => {
13784                        return std::task::Poll::Ready(Some(Err(fidl::Error::ServerRequestRead(
13785                            e.into(),
13786                        ))));
13787                    }
13788                }
13789
13790                // A message has been received from the channel
13791                let (header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
13792
13793                std::task::Poll::Ready(Some(match header.ordinal {
13794                    0x4ac564d726bb325e => {
13795                        header.validate_request_tx_id(fidl::MethodType::OneWay)?;
13796                        let mut req = fidl::new_empty!(
13797                            DirReceiverReceiveRequest,
13798                            fidl::encoding::DefaultFuchsiaResourceDialect
13799                        );
13800                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<DirReceiverReceiveRequest>(&header, _body_bytes, handles, &mut req)?;
13801                        let control_handle = DirReceiverControlHandle { inner: this.inner.clone() };
13802                        Ok(DirReceiverRequest::Receive {
13803                            channel: req.channel,
13804                            path: req.path,
13805                            rights: req.rights,
13806
13807                            control_handle,
13808                        })
13809                    }
13810                    _ => Err(fidl::Error::UnknownOrdinal {
13811                        ordinal: header.ordinal,
13812                        protocol_name:
13813                            <DirReceiverMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
13814                    }),
13815                }))
13816            },
13817        )
13818    }
13819}
13820
13821/// A `DirReceiver` represents the receiving end of a `DirConnector`.
13822#[derive(Debug)]
13823pub enum DirReceiverRequest {
13824    /// `Receive` will be called by component manager whenever a new handle has
13825    /// been given to any `DirConnector` associated with this `DirReceiver`.
13826    Receive {
13827        channel: fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>,
13828        path: String,
13829        rights: fidl_fuchsia_io::Flags,
13830        control_handle: DirReceiverControlHandle,
13831    },
13832}
13833
13834impl DirReceiverRequest {
13835    #[allow(irrefutable_let_patterns)]
13836    pub fn into_receive(
13837        self,
13838    ) -> Option<(
13839        fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>,
13840        String,
13841        fidl_fuchsia_io::Flags,
13842        DirReceiverControlHandle,
13843    )> {
13844        if let DirReceiverRequest::Receive { channel, path, rights, control_handle } = self {
13845            Some((channel, path, rights, control_handle))
13846        } else {
13847            None
13848        }
13849    }
13850
13851    /// Name of the method defined in FIDL
13852    pub fn method_name(&self) -> &'static str {
13853        match *self {
13854            DirReceiverRequest::Receive { .. } => "receive",
13855        }
13856    }
13857}
13858
13859#[derive(Debug, Clone)]
13860pub struct DirReceiverControlHandle {
13861    inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
13862}
13863
13864impl fidl::endpoints::ControlHandle for DirReceiverControlHandle {
13865    fn shutdown(&self) {
13866        self.inner.shutdown()
13867    }
13868
13869    fn shutdown_with_epitaph(&self, status: zx_status::Status) {
13870        self.inner.shutdown_with_epitaph(status)
13871    }
13872
13873    fn is_closed(&self) -> bool {
13874        self.inner.channel().is_closed()
13875    }
13876    fn on_closed(&self) -> fidl::OnSignalsRef<'_> {
13877        self.inner.channel().on_closed()
13878    }
13879
13880    #[cfg(target_os = "fuchsia")]
13881    fn signal_peer(
13882        &self,
13883        clear_mask: zx::Signals,
13884        set_mask: zx::Signals,
13885    ) -> Result<(), zx_status::Status> {
13886        use fidl::Peered;
13887        self.inner.channel().signal_peer(clear_mask, set_mask)
13888    }
13889}
13890
13891impl DirReceiverControlHandle {}
13892
13893#[derive(Debug, Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash)]
13894pub struct DirReceiverDeprecatedMarker;
13895
13896impl fidl::endpoints::ProtocolMarker for DirReceiverDeprecatedMarker {
13897    type Proxy = DirReceiverDeprecatedProxy;
13898    type RequestStream = DirReceiverDeprecatedRequestStream;
13899    #[cfg(target_os = "fuchsia")]
13900    type SynchronousProxy = DirReceiverDeprecatedSynchronousProxy;
13901
13902    const DEBUG_NAME: &'static str = "(anonymous) DirReceiverDeprecated";
13903}
13904
13905pub trait DirReceiverDeprecatedProxyInterface: Send + Sync {
13906    fn r#receive(
13907        &self,
13908        channel: fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>,
13909    ) -> Result<(), fidl::Error>;
13910}
13911#[derive(Debug)]
13912#[cfg(target_os = "fuchsia")]
13913pub struct DirReceiverDeprecatedSynchronousProxy {
13914    client: fidl::client::sync::Client,
13915}
13916
13917#[cfg(target_os = "fuchsia")]
13918impl fidl::endpoints::SynchronousProxy for DirReceiverDeprecatedSynchronousProxy {
13919    type Proxy = DirReceiverDeprecatedProxy;
13920    type Protocol = DirReceiverDeprecatedMarker;
13921
13922    fn from_channel(inner: fidl::Channel) -> Self {
13923        Self::new(inner)
13924    }
13925
13926    fn into_channel(self) -> fidl::Channel {
13927        self.client.into_channel()
13928    }
13929
13930    fn as_channel(&self) -> &fidl::Channel {
13931        self.client.as_channel()
13932    }
13933}
13934
13935#[cfg(target_os = "fuchsia")]
13936impl DirReceiverDeprecatedSynchronousProxy {
13937    pub fn new(channel: fidl::Channel) -> Self {
13938        let protocol_name =
13939            <DirReceiverDeprecatedMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
13940        Self { client: fidl::client::sync::Client::new(channel, protocol_name) }
13941    }
13942
13943    pub fn into_channel(self) -> fidl::Channel {
13944        self.client.into_channel()
13945    }
13946
13947    /// Waits until an event arrives and returns it. It is safe for other
13948    /// threads to make concurrent requests while waiting for an event.
13949    pub fn wait_for_event(
13950        &self,
13951        deadline: zx::MonotonicInstant,
13952    ) -> Result<DirReceiverDeprecatedEvent, fidl::Error> {
13953        DirReceiverDeprecatedEvent::decode(self.client.wait_for_event(deadline)?)
13954    }
13955
13956    /// `Receive` will be called by component manager whenever a new handle has
13957    /// been given to any `DirConnector` associated with this `DirReceiver`.
13958    pub fn r#receive(
13959        &self,
13960        mut channel: fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>,
13961    ) -> Result<(), fidl::Error> {
13962        self.client.send::<DirReceiverDeprecatedReceiveRequest>(
13963            (channel,),
13964            0x6351363b40e73f58,
13965            fidl::encoding::DynamicFlags::FLEXIBLE,
13966        )
13967    }
13968}
13969
13970#[cfg(target_os = "fuchsia")]
13971impl From<DirReceiverDeprecatedSynchronousProxy> for zx::NullableHandle {
13972    fn from(value: DirReceiverDeprecatedSynchronousProxy) -> Self {
13973        value.into_channel().into()
13974    }
13975}
13976
13977#[cfg(target_os = "fuchsia")]
13978impl From<fidl::Channel> for DirReceiverDeprecatedSynchronousProxy {
13979    fn from(value: fidl::Channel) -> Self {
13980        Self::new(value)
13981    }
13982}
13983
13984#[cfg(target_os = "fuchsia")]
13985impl fidl::endpoints::FromClient for DirReceiverDeprecatedSynchronousProxy {
13986    type Protocol = DirReceiverDeprecatedMarker;
13987
13988    fn from_client(value: fidl::endpoints::ClientEnd<DirReceiverDeprecatedMarker>) -> Self {
13989        Self::new(value.into_channel())
13990    }
13991}
13992
13993#[derive(Debug, Clone)]
13994pub struct DirReceiverDeprecatedProxy {
13995    client: fidl::client::Client<fidl::encoding::DefaultFuchsiaResourceDialect>,
13996}
13997
13998impl fidl::endpoints::Proxy for DirReceiverDeprecatedProxy {
13999    type Protocol = DirReceiverDeprecatedMarker;
14000
14001    fn from_channel(inner: ::fidl::AsyncChannel) -> Self {
14002        Self::new(inner)
14003    }
14004
14005    fn into_channel(self) -> Result<::fidl::AsyncChannel, Self> {
14006        self.client.into_channel().map_err(|client| Self { client })
14007    }
14008
14009    fn as_channel(&self) -> &::fidl::AsyncChannel {
14010        self.client.as_channel()
14011    }
14012}
14013
14014impl DirReceiverDeprecatedProxy {
14015    /// Create a new Proxy for fuchsia.component.runtime/DirReceiverDeprecated.
14016    pub fn new(channel: ::fidl::AsyncChannel) -> Self {
14017        let protocol_name =
14018            <DirReceiverDeprecatedMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
14019        Self { client: fidl::client::Client::new(channel, protocol_name) }
14020    }
14021
14022    /// Get a Stream of events from the remote end of the protocol.
14023    ///
14024    /// # Panics
14025    ///
14026    /// Panics if the event stream was already taken.
14027    pub fn take_event_stream(&self) -> DirReceiverDeprecatedEventStream {
14028        DirReceiverDeprecatedEventStream { event_receiver: self.client.take_event_receiver() }
14029    }
14030
14031    /// `Receive` will be called by component manager whenever a new handle has
14032    /// been given to any `DirConnector` associated with this `DirReceiver`.
14033    pub fn r#receive(
14034        &self,
14035        mut channel: fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>,
14036    ) -> Result<(), fidl::Error> {
14037        DirReceiverDeprecatedProxyInterface::r#receive(self, channel)
14038    }
14039}
14040
14041impl DirReceiverDeprecatedProxyInterface for DirReceiverDeprecatedProxy {
14042    fn r#receive(
14043        &self,
14044        mut channel: fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>,
14045    ) -> Result<(), fidl::Error> {
14046        self.client.send::<DirReceiverDeprecatedReceiveRequest>(
14047            (channel,),
14048            0x6351363b40e73f58,
14049            fidl::encoding::DynamicFlags::FLEXIBLE,
14050        )
14051    }
14052}
14053
14054pub struct DirReceiverDeprecatedEventStream {
14055    event_receiver: fidl::client::EventReceiver<fidl::encoding::DefaultFuchsiaResourceDialect>,
14056}
14057
14058impl std::marker::Unpin for DirReceiverDeprecatedEventStream {}
14059
14060impl futures::stream::FusedStream for DirReceiverDeprecatedEventStream {
14061    fn is_terminated(&self) -> bool {
14062        self.event_receiver.is_terminated()
14063    }
14064}
14065
14066impl futures::Stream for DirReceiverDeprecatedEventStream {
14067    type Item = Result<DirReceiverDeprecatedEvent, fidl::Error>;
14068
14069    fn poll_next(
14070        mut self: std::pin::Pin<&mut Self>,
14071        cx: &mut std::task::Context<'_>,
14072    ) -> std::task::Poll<Option<Self::Item>> {
14073        match futures::ready!(futures::stream::StreamExt::poll_next_unpin(
14074            &mut self.event_receiver,
14075            cx
14076        )?) {
14077            Some(buf) => std::task::Poll::Ready(Some(DirReceiverDeprecatedEvent::decode(buf))),
14078            None => std::task::Poll::Ready(None),
14079        }
14080    }
14081}
14082
14083#[derive(Debug)]
14084pub enum DirReceiverDeprecatedEvent {
14085    #[non_exhaustive]
14086    _UnknownEvent {
14087        /// Ordinal of the event that was sent.
14088        ordinal: u64,
14089    },
14090}
14091
14092impl DirReceiverDeprecatedEvent {
14093    /// Decodes a message buffer as a [`DirReceiverDeprecatedEvent`].
14094    fn decode(
14095        mut buf: <fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc,
14096    ) -> Result<DirReceiverDeprecatedEvent, fidl::Error> {
14097        let (bytes, _handles) = buf.split_mut();
14098        let (tx_header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
14099        debug_assert_eq!(tx_header.tx_id, 0);
14100        match tx_header.ordinal {
14101            _ if tx_header.dynamic_flags().contains(fidl::encoding::DynamicFlags::FLEXIBLE) => {
14102                Ok(DirReceiverDeprecatedEvent::_UnknownEvent { ordinal: tx_header.ordinal })
14103            }
14104            _ => Err(fidl::Error::UnknownOrdinal {
14105                ordinal: tx_header.ordinal,
14106                protocol_name:
14107                    <DirReceiverDeprecatedMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
14108            }),
14109        }
14110    }
14111}
14112
14113/// A Stream of incoming requests for fuchsia.component.runtime/DirReceiverDeprecated.
14114pub struct DirReceiverDeprecatedRequestStream {
14115    inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
14116    is_terminated: bool,
14117}
14118
14119impl std::marker::Unpin for DirReceiverDeprecatedRequestStream {}
14120
14121impl futures::stream::FusedStream for DirReceiverDeprecatedRequestStream {
14122    fn is_terminated(&self) -> bool {
14123        self.is_terminated
14124    }
14125}
14126
14127impl fidl::endpoints::RequestStream for DirReceiverDeprecatedRequestStream {
14128    type Protocol = DirReceiverDeprecatedMarker;
14129    type ControlHandle = DirReceiverDeprecatedControlHandle;
14130
14131    fn from_channel(channel: ::fidl::AsyncChannel) -> Self {
14132        Self { inner: std::sync::Arc::new(fidl::ServeInner::new(channel)), is_terminated: false }
14133    }
14134
14135    fn control_handle(&self) -> Self::ControlHandle {
14136        DirReceiverDeprecatedControlHandle { inner: self.inner.clone() }
14137    }
14138
14139    fn into_inner(
14140        self,
14141    ) -> (::std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>, bool)
14142    {
14143        (self.inner, self.is_terminated)
14144    }
14145
14146    fn from_inner(
14147        inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
14148        is_terminated: bool,
14149    ) -> Self {
14150        Self { inner, is_terminated }
14151    }
14152}
14153
14154impl futures::Stream for DirReceiverDeprecatedRequestStream {
14155    type Item = Result<DirReceiverDeprecatedRequest, fidl::Error>;
14156
14157    fn poll_next(
14158        mut self: std::pin::Pin<&mut Self>,
14159        cx: &mut std::task::Context<'_>,
14160    ) -> std::task::Poll<Option<Self::Item>> {
14161        let this = &mut *self;
14162        if this.inner.check_shutdown(cx) {
14163            this.is_terminated = true;
14164            return std::task::Poll::Ready(None);
14165        }
14166        if this.is_terminated {
14167            panic!("polled DirReceiverDeprecatedRequestStream after completion");
14168        }
14169        fidl::encoding::with_tls_decode_buf::<_, fidl::encoding::DefaultFuchsiaResourceDialect>(
14170            |bytes, handles| {
14171                match this.inner.channel().read_etc(cx, bytes, handles) {
14172                    std::task::Poll::Ready(Ok(())) => {}
14173                    std::task::Poll::Pending => return std::task::Poll::Pending,
14174                    std::task::Poll::Ready(Err(zx_status::Status::PEER_CLOSED)) => {
14175                        this.is_terminated = true;
14176                        return std::task::Poll::Ready(None);
14177                    }
14178                    std::task::Poll::Ready(Err(e)) => {
14179                        return std::task::Poll::Ready(Some(Err(fidl::Error::ServerRequestRead(
14180                            e.into(),
14181                        ))));
14182                    }
14183                }
14184
14185                // A message has been received from the channel
14186                let (header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
14187
14188                std::task::Poll::Ready(Some(match header.ordinal {
14189                0x6351363b40e73f58 => {
14190                    header.validate_request_tx_id(fidl::MethodType::OneWay)?;
14191                    let mut req = fidl::new_empty!(DirReceiverDeprecatedReceiveRequest, fidl::encoding::DefaultFuchsiaResourceDialect);
14192                    fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<DirReceiverDeprecatedReceiveRequest>(&header, _body_bytes, handles, &mut req)?;
14193                    let control_handle = DirReceiverDeprecatedControlHandle {
14194                        inner: this.inner.clone(),
14195                    };
14196                    Ok(DirReceiverDeprecatedRequest::Receive {channel: req.channel,
14197
14198                        control_handle,
14199                    })
14200                }
14201                _ if header.tx_id == 0 && header.dynamic_flags().contains(fidl::encoding::DynamicFlags::FLEXIBLE) => {
14202                    Ok(DirReceiverDeprecatedRequest::_UnknownMethod {
14203                        ordinal: header.ordinal,
14204                        control_handle: DirReceiverDeprecatedControlHandle { inner: this.inner.clone() },
14205                        method_type: fidl::MethodType::OneWay,
14206                    })
14207                }
14208                _ if header.dynamic_flags().contains(fidl::encoding::DynamicFlags::FLEXIBLE) => {
14209                    this.inner.send_framework_err(
14210                        fidl::encoding::FrameworkErr::UnknownMethod,
14211                        header.tx_id,
14212                        header.ordinal,
14213                        header.dynamic_flags(),
14214                        (bytes, handles),
14215                    )?;
14216                    Ok(DirReceiverDeprecatedRequest::_UnknownMethod {
14217                        ordinal: header.ordinal,
14218                        control_handle: DirReceiverDeprecatedControlHandle { inner: this.inner.clone() },
14219                        method_type: fidl::MethodType::TwoWay,
14220                    })
14221                }
14222                _ => Err(fidl::Error::UnknownOrdinal {
14223                    ordinal: header.ordinal,
14224                    protocol_name: <DirReceiverDeprecatedMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
14225                }),
14226            }))
14227            },
14228        )
14229    }
14230}
14231
14232/// A `DirReceiver` represents the receiving end of a connection to a
14233/// capability.
14234#[derive(Debug)]
14235pub enum DirReceiverDeprecatedRequest {
14236    /// `Receive` will be called by component manager whenever a new handle has
14237    /// been given to any `DirConnector` associated with this `DirReceiver`.
14238    Receive {
14239        channel: fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>,
14240        control_handle: DirReceiverDeprecatedControlHandle,
14241    },
14242    /// An interaction was received which does not match any known method.
14243    #[non_exhaustive]
14244    _UnknownMethod {
14245        /// Ordinal of the method that was called.
14246        ordinal: u64,
14247        control_handle: DirReceiverDeprecatedControlHandle,
14248        method_type: fidl::MethodType,
14249    },
14250}
14251
14252impl DirReceiverDeprecatedRequest {
14253    #[allow(irrefutable_let_patterns)]
14254    pub fn into_receive(
14255        self,
14256    ) -> Option<(
14257        fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>,
14258        DirReceiverDeprecatedControlHandle,
14259    )> {
14260        if let DirReceiverDeprecatedRequest::Receive { channel, control_handle } = self {
14261            Some((channel, control_handle))
14262        } else {
14263            None
14264        }
14265    }
14266
14267    /// Name of the method defined in FIDL
14268    pub fn method_name(&self) -> &'static str {
14269        match *self {
14270            DirReceiverDeprecatedRequest::Receive { .. } => "receive",
14271            DirReceiverDeprecatedRequest::_UnknownMethod {
14272                method_type: fidl::MethodType::OneWay,
14273                ..
14274            } => "unknown one-way method",
14275            DirReceiverDeprecatedRequest::_UnknownMethod {
14276                method_type: fidl::MethodType::TwoWay,
14277                ..
14278            } => "unknown two-way method",
14279        }
14280    }
14281}
14282
14283#[derive(Debug, Clone)]
14284pub struct DirReceiverDeprecatedControlHandle {
14285    inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
14286}
14287
14288impl fidl::endpoints::ControlHandle for DirReceiverDeprecatedControlHandle {
14289    fn shutdown(&self) {
14290        self.inner.shutdown()
14291    }
14292
14293    fn shutdown_with_epitaph(&self, status: zx_status::Status) {
14294        self.inner.shutdown_with_epitaph(status)
14295    }
14296
14297    fn is_closed(&self) -> bool {
14298        self.inner.channel().is_closed()
14299    }
14300    fn on_closed(&self) -> fidl::OnSignalsRef<'_> {
14301        self.inner.channel().on_closed()
14302    }
14303
14304    #[cfg(target_os = "fuchsia")]
14305    fn signal_peer(
14306        &self,
14307        clear_mask: zx::Signals,
14308        set_mask: zx::Signals,
14309    ) -> Result<(), zx_status::Status> {
14310        use fidl::Peered;
14311        self.inner.channel().signal_peer(clear_mask, set_mask)
14312    }
14313}
14314
14315impl DirReceiverDeprecatedControlHandle {}
14316
14317#[derive(Debug, Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash)]
14318pub struct ReceiverMarker;
14319
14320impl fidl::endpoints::ProtocolMarker for ReceiverMarker {
14321    type Proxy = ReceiverProxy;
14322    type RequestStream = ReceiverRequestStream;
14323    #[cfg(target_os = "fuchsia")]
14324    type SynchronousProxy = ReceiverSynchronousProxy;
14325
14326    const DEBUG_NAME: &'static str = "(anonymous) Receiver";
14327}
14328
14329pub trait ReceiverProxyInterface: Send + Sync {
14330    fn r#receive(&self, channel: fidl::Channel) -> Result<(), fidl::Error>;
14331}
14332#[derive(Debug)]
14333#[cfg(target_os = "fuchsia")]
14334pub struct ReceiverSynchronousProxy {
14335    client: fidl::client::sync::Client,
14336}
14337
14338#[cfg(target_os = "fuchsia")]
14339impl fidl::endpoints::SynchronousProxy for ReceiverSynchronousProxy {
14340    type Proxy = ReceiverProxy;
14341    type Protocol = ReceiverMarker;
14342
14343    fn from_channel(inner: fidl::Channel) -> Self {
14344        Self::new(inner)
14345    }
14346
14347    fn into_channel(self) -> fidl::Channel {
14348        self.client.into_channel()
14349    }
14350
14351    fn as_channel(&self) -> &fidl::Channel {
14352        self.client.as_channel()
14353    }
14354}
14355
14356#[cfg(target_os = "fuchsia")]
14357impl ReceiverSynchronousProxy {
14358    pub fn new(channel: fidl::Channel) -> Self {
14359        let protocol_name = <ReceiverMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
14360        Self { client: fidl::client::sync::Client::new(channel, protocol_name) }
14361    }
14362
14363    pub fn into_channel(self) -> fidl::Channel {
14364        self.client.into_channel()
14365    }
14366
14367    /// Waits until an event arrives and returns it. It is safe for other
14368    /// threads to make concurrent requests while waiting for an event.
14369    pub fn wait_for_event(
14370        &self,
14371        deadline: zx::MonotonicInstant,
14372    ) -> Result<ReceiverEvent, fidl::Error> {
14373        ReceiverEvent::decode(self.client.wait_for_event(deadline)?)
14374    }
14375
14376    /// `Receive` will be called by component manager whenever an new handle has
14377    /// been given to any `Connector` associated with this `Receiver`.
14378    pub fn r#receive(&self, mut channel: fidl::Channel) -> Result<(), fidl::Error> {
14379        self.client.send::<ReceiverReceiveRequest>(
14380            (channel,),
14381            0x609ca5c7943b58d0,
14382            fidl::encoding::DynamicFlags::empty(),
14383        )
14384    }
14385}
14386
14387#[cfg(target_os = "fuchsia")]
14388impl From<ReceiverSynchronousProxy> for zx::NullableHandle {
14389    fn from(value: ReceiverSynchronousProxy) -> Self {
14390        value.into_channel().into()
14391    }
14392}
14393
14394#[cfg(target_os = "fuchsia")]
14395impl From<fidl::Channel> for ReceiverSynchronousProxy {
14396    fn from(value: fidl::Channel) -> Self {
14397        Self::new(value)
14398    }
14399}
14400
14401#[cfg(target_os = "fuchsia")]
14402impl fidl::endpoints::FromClient for ReceiverSynchronousProxy {
14403    type Protocol = ReceiverMarker;
14404
14405    fn from_client(value: fidl::endpoints::ClientEnd<ReceiverMarker>) -> Self {
14406        Self::new(value.into_channel())
14407    }
14408}
14409
14410#[derive(Debug, Clone)]
14411pub struct ReceiverProxy {
14412    client: fidl::client::Client<fidl::encoding::DefaultFuchsiaResourceDialect>,
14413}
14414
14415impl fidl::endpoints::Proxy for ReceiverProxy {
14416    type Protocol = ReceiverMarker;
14417
14418    fn from_channel(inner: ::fidl::AsyncChannel) -> Self {
14419        Self::new(inner)
14420    }
14421
14422    fn into_channel(self) -> Result<::fidl::AsyncChannel, Self> {
14423        self.client.into_channel().map_err(|client| Self { client })
14424    }
14425
14426    fn as_channel(&self) -> &::fidl::AsyncChannel {
14427        self.client.as_channel()
14428    }
14429}
14430
14431impl ReceiverProxy {
14432    /// Create a new Proxy for fuchsia.component.runtime/Receiver.
14433    pub fn new(channel: ::fidl::AsyncChannel) -> Self {
14434        let protocol_name = <ReceiverMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
14435        Self { client: fidl::client::Client::new(channel, protocol_name) }
14436    }
14437
14438    /// Get a Stream of events from the remote end of the protocol.
14439    ///
14440    /// # Panics
14441    ///
14442    /// Panics if the event stream was already taken.
14443    pub fn take_event_stream(&self) -> ReceiverEventStream {
14444        ReceiverEventStream { event_receiver: self.client.take_event_receiver() }
14445    }
14446
14447    /// `Receive` will be called by component manager whenever an new handle has
14448    /// been given to any `Connector` associated with this `Receiver`.
14449    pub fn r#receive(&self, mut channel: fidl::Channel) -> Result<(), fidl::Error> {
14450        ReceiverProxyInterface::r#receive(self, channel)
14451    }
14452}
14453
14454impl ReceiverProxyInterface for ReceiverProxy {
14455    fn r#receive(&self, mut channel: fidl::Channel) -> Result<(), fidl::Error> {
14456        self.client.send::<ReceiverReceiveRequest>(
14457            (channel,),
14458            0x609ca5c7943b58d0,
14459            fidl::encoding::DynamicFlags::empty(),
14460        )
14461    }
14462}
14463
14464pub struct ReceiverEventStream {
14465    event_receiver: fidl::client::EventReceiver<fidl::encoding::DefaultFuchsiaResourceDialect>,
14466}
14467
14468impl std::marker::Unpin for ReceiverEventStream {}
14469
14470impl futures::stream::FusedStream for ReceiverEventStream {
14471    fn is_terminated(&self) -> bool {
14472        self.event_receiver.is_terminated()
14473    }
14474}
14475
14476impl futures::Stream for ReceiverEventStream {
14477    type Item = Result<ReceiverEvent, fidl::Error>;
14478
14479    fn poll_next(
14480        mut self: std::pin::Pin<&mut Self>,
14481        cx: &mut std::task::Context<'_>,
14482    ) -> std::task::Poll<Option<Self::Item>> {
14483        match futures::ready!(futures::stream::StreamExt::poll_next_unpin(
14484            &mut self.event_receiver,
14485            cx
14486        )?) {
14487            Some(buf) => std::task::Poll::Ready(Some(ReceiverEvent::decode(buf))),
14488            None => std::task::Poll::Ready(None),
14489        }
14490    }
14491}
14492
14493#[derive(Debug)]
14494pub enum ReceiverEvent {}
14495
14496impl ReceiverEvent {
14497    /// Decodes a message buffer as a [`ReceiverEvent`].
14498    fn decode(
14499        mut buf: <fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc,
14500    ) -> Result<ReceiverEvent, fidl::Error> {
14501        let (bytes, _handles) = buf.split_mut();
14502        let (tx_header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
14503        debug_assert_eq!(tx_header.tx_id, 0);
14504        match tx_header.ordinal {
14505            _ => Err(fidl::Error::UnknownOrdinal {
14506                ordinal: tx_header.ordinal,
14507                protocol_name: <ReceiverMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
14508            }),
14509        }
14510    }
14511}
14512
14513/// A Stream of incoming requests for fuchsia.component.runtime/Receiver.
14514pub struct ReceiverRequestStream {
14515    inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
14516    is_terminated: bool,
14517}
14518
14519impl std::marker::Unpin for ReceiverRequestStream {}
14520
14521impl futures::stream::FusedStream for ReceiverRequestStream {
14522    fn is_terminated(&self) -> bool {
14523        self.is_terminated
14524    }
14525}
14526
14527impl fidl::endpoints::RequestStream for ReceiverRequestStream {
14528    type Protocol = ReceiverMarker;
14529    type ControlHandle = ReceiverControlHandle;
14530
14531    fn from_channel(channel: ::fidl::AsyncChannel) -> Self {
14532        Self { inner: std::sync::Arc::new(fidl::ServeInner::new(channel)), is_terminated: false }
14533    }
14534
14535    fn control_handle(&self) -> Self::ControlHandle {
14536        ReceiverControlHandle { inner: self.inner.clone() }
14537    }
14538
14539    fn into_inner(
14540        self,
14541    ) -> (::std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>, bool)
14542    {
14543        (self.inner, self.is_terminated)
14544    }
14545
14546    fn from_inner(
14547        inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
14548        is_terminated: bool,
14549    ) -> Self {
14550        Self { inner, is_terminated }
14551    }
14552}
14553
14554impl futures::Stream for ReceiverRequestStream {
14555    type Item = Result<ReceiverRequest, fidl::Error>;
14556
14557    fn poll_next(
14558        mut self: std::pin::Pin<&mut Self>,
14559        cx: &mut std::task::Context<'_>,
14560    ) -> std::task::Poll<Option<Self::Item>> {
14561        let this = &mut *self;
14562        if this.inner.check_shutdown(cx) {
14563            this.is_terminated = true;
14564            return std::task::Poll::Ready(None);
14565        }
14566        if this.is_terminated {
14567            panic!("polled ReceiverRequestStream after completion");
14568        }
14569        fidl::encoding::with_tls_decode_buf::<_, fidl::encoding::DefaultFuchsiaResourceDialect>(
14570            |bytes, handles| {
14571                match this.inner.channel().read_etc(cx, bytes, handles) {
14572                    std::task::Poll::Ready(Ok(())) => {}
14573                    std::task::Poll::Pending => return std::task::Poll::Pending,
14574                    std::task::Poll::Ready(Err(zx_status::Status::PEER_CLOSED)) => {
14575                        this.is_terminated = true;
14576                        return std::task::Poll::Ready(None);
14577                    }
14578                    std::task::Poll::Ready(Err(e)) => {
14579                        return std::task::Poll::Ready(Some(Err(fidl::Error::ServerRequestRead(
14580                            e.into(),
14581                        ))));
14582                    }
14583                }
14584
14585                // A message has been received from the channel
14586                let (header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
14587
14588                std::task::Poll::Ready(Some(match header.ordinal {
14589                    0x609ca5c7943b58d0 => {
14590                        header.validate_request_tx_id(fidl::MethodType::OneWay)?;
14591                        let mut req = fidl::new_empty!(
14592                            ReceiverReceiveRequest,
14593                            fidl::encoding::DefaultFuchsiaResourceDialect
14594                        );
14595                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<ReceiverReceiveRequest>(&header, _body_bytes, handles, &mut req)?;
14596                        let control_handle = ReceiverControlHandle { inner: this.inner.clone() };
14597                        Ok(ReceiverRequest::Receive { channel: req.channel, control_handle })
14598                    }
14599                    _ => Err(fidl::Error::UnknownOrdinal {
14600                        ordinal: header.ordinal,
14601                        protocol_name:
14602                            <ReceiverMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
14603                    }),
14604                }))
14605            },
14606        )
14607    }
14608}
14609
14610/// A `Receiver` represents the receiving end of a `Connector`.
14611#[derive(Debug)]
14612pub enum ReceiverRequest {
14613    /// `Receive` will be called by component manager whenever an new handle has
14614    /// been given to any `Connector` associated with this `Receiver`.
14615    Receive { channel: fidl::Channel, control_handle: ReceiverControlHandle },
14616}
14617
14618impl ReceiverRequest {
14619    #[allow(irrefutable_let_patterns)]
14620    pub fn into_receive(self) -> Option<(fidl::Channel, ReceiverControlHandle)> {
14621        if let ReceiverRequest::Receive { channel, control_handle } = self {
14622            Some((channel, control_handle))
14623        } else {
14624            None
14625        }
14626    }
14627
14628    /// Name of the method defined in FIDL
14629    pub fn method_name(&self) -> &'static str {
14630        match *self {
14631            ReceiverRequest::Receive { .. } => "receive",
14632        }
14633    }
14634}
14635
14636#[derive(Debug, Clone)]
14637pub struct ReceiverControlHandle {
14638    inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
14639}
14640
14641impl fidl::endpoints::ControlHandle for ReceiverControlHandle {
14642    fn shutdown(&self) {
14643        self.inner.shutdown()
14644    }
14645
14646    fn shutdown_with_epitaph(&self, status: zx_status::Status) {
14647        self.inner.shutdown_with_epitaph(status)
14648    }
14649
14650    fn is_closed(&self) -> bool {
14651        self.inner.channel().is_closed()
14652    }
14653    fn on_closed(&self) -> fidl::OnSignalsRef<'_> {
14654        self.inner.channel().on_closed()
14655    }
14656
14657    #[cfg(target_os = "fuchsia")]
14658    fn signal_peer(
14659        &self,
14660        clear_mask: zx::Signals,
14661        set_mask: zx::Signals,
14662    ) -> Result<(), zx_status::Status> {
14663        use fidl::Peered;
14664        self.inner.channel().signal_peer(clear_mask, set_mask)
14665    }
14666}
14667
14668impl ReceiverControlHandle {}
14669
14670mod internal {
14671    use super::*;
14672
14673    impl fidl::encoding::ResourceTypeMarker for CapabilitiesCapabilityAssociateHandleRequest {
14674        type Borrowed<'a> = &'a mut Self;
14675        fn take_or_borrow<'a>(
14676            value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
14677        ) -> Self::Borrowed<'a> {
14678            value
14679        }
14680    }
14681
14682    unsafe impl fidl::encoding::TypeMarker for CapabilitiesCapabilityAssociateHandleRequest {
14683        type Owned = Self;
14684
14685        #[inline(always)]
14686        fn inline_align(_context: fidl::encoding::Context) -> usize {
14687            4
14688        }
14689
14690        #[inline(always)]
14691        fn inline_size(_context: fidl::encoding::Context) -> usize {
14692            8
14693        }
14694    }
14695
14696    unsafe impl
14697        fidl::encoding::Encode<
14698            CapabilitiesCapabilityAssociateHandleRequest,
14699            fidl::encoding::DefaultFuchsiaResourceDialect,
14700        > for &mut CapabilitiesCapabilityAssociateHandleRequest
14701    {
14702        #[inline]
14703        unsafe fn encode(
14704            self,
14705            encoder: &mut fidl::encoding::Encoder<
14706                '_,
14707                fidl::encoding::DefaultFuchsiaResourceDialect,
14708            >,
14709            offset: usize,
14710            _depth: fidl::encoding::Depth,
14711        ) -> fidl::Result<()> {
14712            encoder.debug_check_bounds::<CapabilitiesCapabilityAssociateHandleRequest>(offset);
14713            // Delegate to tuple encoding.
14714            fidl::encoding::Encode::<
14715                CapabilitiesCapabilityAssociateHandleRequest,
14716                fidl::encoding::DefaultFuchsiaResourceDialect,
14717            >::encode(
14718                (
14719                    <fidl::encoding::HandleType<
14720                        fidl::EventPair,
14721                        { fidl::ObjectType::EVENTPAIR.into_raw() },
14722                        2147483648,
14723                    > as fidl::encoding::ResourceTypeMarker>::take_or_borrow(
14724                        &mut self.capability_handle,
14725                    ),
14726                    <fidl::encoding::HandleType<
14727                        fidl::EventPair,
14728                        { fidl::ObjectType::EVENTPAIR.into_raw() },
14729                        2147483648,
14730                    > as fidl::encoding::ResourceTypeMarker>::take_or_borrow(
14731                        &mut self.other_handle,
14732                    ),
14733                ),
14734                encoder,
14735                offset,
14736                _depth,
14737            )
14738        }
14739    }
14740    unsafe impl<
14741        T0: fidl::encoding::Encode<
14742                fidl::encoding::HandleType<
14743                    fidl::EventPair,
14744                    { fidl::ObjectType::EVENTPAIR.into_raw() },
14745                    2147483648,
14746                >,
14747                fidl::encoding::DefaultFuchsiaResourceDialect,
14748            >,
14749        T1: fidl::encoding::Encode<
14750                fidl::encoding::HandleType<
14751                    fidl::EventPair,
14752                    { fidl::ObjectType::EVENTPAIR.into_raw() },
14753                    2147483648,
14754                >,
14755                fidl::encoding::DefaultFuchsiaResourceDialect,
14756            >,
14757    >
14758        fidl::encoding::Encode<
14759            CapabilitiesCapabilityAssociateHandleRequest,
14760            fidl::encoding::DefaultFuchsiaResourceDialect,
14761        > for (T0, T1)
14762    {
14763        #[inline]
14764        unsafe fn encode(
14765            self,
14766            encoder: &mut fidl::encoding::Encoder<
14767                '_,
14768                fidl::encoding::DefaultFuchsiaResourceDialect,
14769            >,
14770            offset: usize,
14771            depth: fidl::encoding::Depth,
14772        ) -> fidl::Result<()> {
14773            encoder.debug_check_bounds::<CapabilitiesCapabilityAssociateHandleRequest>(offset);
14774            // Zero out padding regions. There's no need to apply masks
14775            // because the unmasked parts will be overwritten by fields.
14776            // Write the fields.
14777            self.0.encode(encoder, offset + 0, depth)?;
14778            self.1.encode(encoder, offset + 4, depth)?;
14779            Ok(())
14780        }
14781    }
14782
14783    impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
14784        for CapabilitiesCapabilityAssociateHandleRequest
14785    {
14786        #[inline(always)]
14787        fn new_empty() -> Self {
14788            Self {
14789                capability_handle: fidl::new_empty!(fidl::encoding::HandleType<fidl::EventPair, { fidl::ObjectType::EVENTPAIR.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect),
14790                other_handle: fidl::new_empty!(fidl::encoding::HandleType<fidl::EventPair, { fidl::ObjectType::EVENTPAIR.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect),
14791            }
14792        }
14793
14794        #[inline]
14795        unsafe fn decode(
14796            &mut self,
14797            decoder: &mut fidl::encoding::Decoder<
14798                '_,
14799                fidl::encoding::DefaultFuchsiaResourceDialect,
14800            >,
14801            offset: usize,
14802            _depth: fidl::encoding::Depth,
14803        ) -> fidl::Result<()> {
14804            decoder.debug_check_bounds::<Self>(offset);
14805            // Verify that padding bytes are zero.
14806            fidl::decode!(fidl::encoding::HandleType<fidl::EventPair, { fidl::ObjectType::EVENTPAIR.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect, &mut self.capability_handle, decoder, offset + 0, _depth)?;
14807            fidl::decode!(fidl::encoding::HandleType<fidl::EventPair, { fidl::ObjectType::EVENTPAIR.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect, &mut self.other_handle, decoder, offset + 4, _depth)?;
14808            Ok(())
14809        }
14810    }
14811
14812    impl fidl::encoding::ResourceTypeMarker for CapabilitiesConnectorCreateRequest {
14813        type Borrowed<'a> = &'a mut Self;
14814        fn take_or_borrow<'a>(
14815            value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
14816        ) -> Self::Borrowed<'a> {
14817            value
14818        }
14819    }
14820
14821    unsafe impl fidl::encoding::TypeMarker for CapabilitiesConnectorCreateRequest {
14822        type Owned = Self;
14823
14824        #[inline(always)]
14825        fn inline_align(_context: fidl::encoding::Context) -> usize {
14826            4
14827        }
14828
14829        #[inline(always)]
14830        fn inline_size(_context: fidl::encoding::Context) -> usize {
14831            8
14832        }
14833    }
14834
14835    unsafe impl
14836        fidl::encoding::Encode<
14837            CapabilitiesConnectorCreateRequest,
14838            fidl::encoding::DefaultFuchsiaResourceDialect,
14839        > for &mut CapabilitiesConnectorCreateRequest
14840    {
14841        #[inline]
14842        unsafe fn encode(
14843            self,
14844            encoder: &mut fidl::encoding::Encoder<
14845                '_,
14846                fidl::encoding::DefaultFuchsiaResourceDialect,
14847            >,
14848            offset: usize,
14849            _depth: fidl::encoding::Depth,
14850        ) -> fidl::Result<()> {
14851            encoder.debug_check_bounds::<CapabilitiesConnectorCreateRequest>(offset);
14852            // Delegate to tuple encoding.
14853            fidl::encoding::Encode::<CapabilitiesConnectorCreateRequest, fidl::encoding::DefaultFuchsiaResourceDialect>::encode(
14854                (
14855                    <fidl::encoding::HandleType<fidl::EventPair, { fidl::ObjectType::EVENTPAIR.into_raw() }, 2147483648> as fidl::encoding::ResourceTypeMarker>::take_or_borrow(&mut self.connector),
14856                    <fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<ReceiverMarker>> as fidl::encoding::ResourceTypeMarker>::take_or_borrow(&mut self.receiver_client_end),
14857                ),
14858                encoder, offset, _depth
14859            )
14860        }
14861    }
14862    unsafe impl<
14863        T0: fidl::encoding::Encode<
14864                fidl::encoding::HandleType<
14865                    fidl::EventPair,
14866                    { fidl::ObjectType::EVENTPAIR.into_raw() },
14867                    2147483648,
14868                >,
14869                fidl::encoding::DefaultFuchsiaResourceDialect,
14870            >,
14871        T1: fidl::encoding::Encode<
14872                fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<ReceiverMarker>>,
14873                fidl::encoding::DefaultFuchsiaResourceDialect,
14874            >,
14875    >
14876        fidl::encoding::Encode<
14877            CapabilitiesConnectorCreateRequest,
14878            fidl::encoding::DefaultFuchsiaResourceDialect,
14879        > for (T0, T1)
14880    {
14881        #[inline]
14882        unsafe fn encode(
14883            self,
14884            encoder: &mut fidl::encoding::Encoder<
14885                '_,
14886                fidl::encoding::DefaultFuchsiaResourceDialect,
14887            >,
14888            offset: usize,
14889            depth: fidl::encoding::Depth,
14890        ) -> fidl::Result<()> {
14891            encoder.debug_check_bounds::<CapabilitiesConnectorCreateRequest>(offset);
14892            // Zero out padding regions. There's no need to apply masks
14893            // because the unmasked parts will be overwritten by fields.
14894            // Write the fields.
14895            self.0.encode(encoder, offset + 0, depth)?;
14896            self.1.encode(encoder, offset + 4, depth)?;
14897            Ok(())
14898        }
14899    }
14900
14901    impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
14902        for CapabilitiesConnectorCreateRequest
14903    {
14904        #[inline(always)]
14905        fn new_empty() -> Self {
14906            Self {
14907                connector: fidl::new_empty!(fidl::encoding::HandleType<fidl::EventPair, { fidl::ObjectType::EVENTPAIR.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect),
14908                receiver_client_end: fidl::new_empty!(
14909                    fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<ReceiverMarker>>,
14910                    fidl::encoding::DefaultFuchsiaResourceDialect
14911                ),
14912            }
14913        }
14914
14915        #[inline]
14916        unsafe fn decode(
14917            &mut self,
14918            decoder: &mut fidl::encoding::Decoder<
14919                '_,
14920                fidl::encoding::DefaultFuchsiaResourceDialect,
14921            >,
14922            offset: usize,
14923            _depth: fidl::encoding::Depth,
14924        ) -> fidl::Result<()> {
14925            decoder.debug_check_bounds::<Self>(offset);
14926            // Verify that padding bytes are zero.
14927            fidl::decode!(fidl::encoding::HandleType<fidl::EventPair, { fidl::ObjectType::EVENTPAIR.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect, &mut self.connector, decoder, offset + 0, _depth)?;
14928            fidl::decode!(
14929                fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<ReceiverMarker>>,
14930                fidl::encoding::DefaultFuchsiaResourceDialect,
14931                &mut self.receiver_client_end,
14932                decoder,
14933                offset + 4,
14934                _depth
14935            )?;
14936            Ok(())
14937        }
14938    }
14939
14940    impl fidl::encoding::ResourceTypeMarker for CapabilitiesConnectorOpenRequest {
14941        type Borrowed<'a> = &'a mut Self;
14942        fn take_or_borrow<'a>(
14943            value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
14944        ) -> Self::Borrowed<'a> {
14945            value
14946        }
14947    }
14948
14949    unsafe impl fidl::encoding::TypeMarker for CapabilitiesConnectorOpenRequest {
14950        type Owned = Self;
14951
14952        #[inline(always)]
14953        fn inline_align(_context: fidl::encoding::Context) -> usize {
14954            4
14955        }
14956
14957        #[inline(always)]
14958        fn inline_size(_context: fidl::encoding::Context) -> usize {
14959            8
14960        }
14961    }
14962
14963    unsafe impl
14964        fidl::encoding::Encode<
14965            CapabilitiesConnectorOpenRequest,
14966            fidl::encoding::DefaultFuchsiaResourceDialect,
14967        > for &mut CapabilitiesConnectorOpenRequest
14968    {
14969        #[inline]
14970        unsafe fn encode(
14971            self,
14972            encoder: &mut fidl::encoding::Encoder<
14973                '_,
14974                fidl::encoding::DefaultFuchsiaResourceDialect,
14975            >,
14976            offset: usize,
14977            _depth: fidl::encoding::Depth,
14978        ) -> fidl::Result<()> {
14979            encoder.debug_check_bounds::<CapabilitiesConnectorOpenRequest>(offset);
14980            // Delegate to tuple encoding.
14981            fidl::encoding::Encode::<
14982                CapabilitiesConnectorOpenRequest,
14983                fidl::encoding::DefaultFuchsiaResourceDialect,
14984            >::encode(
14985                (
14986                    <fidl::encoding::HandleType<
14987                        fidl::EventPair,
14988                        { fidl::ObjectType::EVENTPAIR.into_raw() },
14989                        2147483648,
14990                    > as fidl::encoding::ResourceTypeMarker>::take_or_borrow(
14991                        &mut self.connector
14992                    ),
14993                    <fidl::encoding::HandleType<
14994                        fidl::Channel,
14995                        { fidl::ObjectType::CHANNEL.into_raw() },
14996                        2147483648,
14997                    > as fidl::encoding::ResourceTypeMarker>::take_or_borrow(
14998                        &mut self.channel
14999                    ),
15000                ),
15001                encoder,
15002                offset,
15003                _depth,
15004            )
15005        }
15006    }
15007    unsafe impl<
15008        T0: fidl::encoding::Encode<
15009                fidl::encoding::HandleType<
15010                    fidl::EventPair,
15011                    { fidl::ObjectType::EVENTPAIR.into_raw() },
15012                    2147483648,
15013                >,
15014                fidl::encoding::DefaultFuchsiaResourceDialect,
15015            >,
15016        T1: fidl::encoding::Encode<
15017                fidl::encoding::HandleType<
15018                    fidl::Channel,
15019                    { fidl::ObjectType::CHANNEL.into_raw() },
15020                    2147483648,
15021                >,
15022                fidl::encoding::DefaultFuchsiaResourceDialect,
15023            >,
15024    >
15025        fidl::encoding::Encode<
15026            CapabilitiesConnectorOpenRequest,
15027            fidl::encoding::DefaultFuchsiaResourceDialect,
15028        > for (T0, T1)
15029    {
15030        #[inline]
15031        unsafe fn encode(
15032            self,
15033            encoder: &mut fidl::encoding::Encoder<
15034                '_,
15035                fidl::encoding::DefaultFuchsiaResourceDialect,
15036            >,
15037            offset: usize,
15038            depth: fidl::encoding::Depth,
15039        ) -> fidl::Result<()> {
15040            encoder.debug_check_bounds::<CapabilitiesConnectorOpenRequest>(offset);
15041            // Zero out padding regions. There's no need to apply masks
15042            // because the unmasked parts will be overwritten by fields.
15043            // Write the fields.
15044            self.0.encode(encoder, offset + 0, depth)?;
15045            self.1.encode(encoder, offset + 4, depth)?;
15046            Ok(())
15047        }
15048    }
15049
15050    impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
15051        for CapabilitiesConnectorOpenRequest
15052    {
15053        #[inline(always)]
15054        fn new_empty() -> Self {
15055            Self {
15056                connector: fidl::new_empty!(fidl::encoding::HandleType<fidl::EventPair, { fidl::ObjectType::EVENTPAIR.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect),
15057                channel: fidl::new_empty!(fidl::encoding::HandleType<fidl::Channel, { fidl::ObjectType::CHANNEL.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect),
15058            }
15059        }
15060
15061        #[inline]
15062        unsafe fn decode(
15063            &mut self,
15064            decoder: &mut fidl::encoding::Decoder<
15065                '_,
15066                fidl::encoding::DefaultFuchsiaResourceDialect,
15067            >,
15068            offset: usize,
15069            _depth: fidl::encoding::Depth,
15070        ) -> fidl::Result<()> {
15071            decoder.debug_check_bounds::<Self>(offset);
15072            // Verify that padding bytes are zero.
15073            fidl::decode!(fidl::encoding::HandleType<fidl::EventPair, { fidl::ObjectType::EVENTPAIR.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect, &mut self.connector, decoder, offset + 0, _depth)?;
15074            fidl::decode!(fidl::encoding::HandleType<fidl::Channel, { fidl::ObjectType::CHANNEL.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect, &mut self.channel, decoder, offset + 4, _depth)?;
15075            Ok(())
15076        }
15077    }
15078
15079    impl fidl::encoding::ResourceTypeMarker for CapabilitiesConnectorRouterCreateRequest {
15080        type Borrowed<'a> = &'a mut Self;
15081        fn take_or_borrow<'a>(
15082            value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
15083        ) -> Self::Borrowed<'a> {
15084            value
15085        }
15086    }
15087
15088    unsafe impl fidl::encoding::TypeMarker for CapabilitiesConnectorRouterCreateRequest {
15089        type Owned = Self;
15090
15091        #[inline(always)]
15092        fn inline_align(_context: fidl::encoding::Context) -> usize {
15093            4
15094        }
15095
15096        #[inline(always)]
15097        fn inline_size(_context: fidl::encoding::Context) -> usize {
15098            8
15099        }
15100    }
15101
15102    unsafe impl
15103        fidl::encoding::Encode<
15104            CapabilitiesConnectorRouterCreateRequest,
15105            fidl::encoding::DefaultFuchsiaResourceDialect,
15106        > for &mut CapabilitiesConnectorRouterCreateRequest
15107    {
15108        #[inline]
15109        unsafe fn encode(
15110            self,
15111            encoder: &mut fidl::encoding::Encoder<
15112                '_,
15113                fidl::encoding::DefaultFuchsiaResourceDialect,
15114            >,
15115            offset: usize,
15116            _depth: fidl::encoding::Depth,
15117        ) -> fidl::Result<()> {
15118            encoder.debug_check_bounds::<CapabilitiesConnectorRouterCreateRequest>(offset);
15119            // Delegate to tuple encoding.
15120            fidl::encoding::Encode::<CapabilitiesConnectorRouterCreateRequest, fidl::encoding::DefaultFuchsiaResourceDialect>::encode(
15121                (
15122                    <fidl::encoding::HandleType<fidl::EventPair, { fidl::ObjectType::EVENTPAIR.into_raw() }, 2147483648> as fidl::encoding::ResourceTypeMarker>::take_or_borrow(&mut self.router),
15123                    <fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<ConnectorRouterMarker>> as fidl::encoding::ResourceTypeMarker>::take_or_borrow(&mut self.router_client_end),
15124                ),
15125                encoder, offset, _depth
15126            )
15127        }
15128    }
15129    unsafe impl<
15130        T0: fidl::encoding::Encode<
15131                fidl::encoding::HandleType<
15132                    fidl::EventPair,
15133                    { fidl::ObjectType::EVENTPAIR.into_raw() },
15134                    2147483648,
15135                >,
15136                fidl::encoding::DefaultFuchsiaResourceDialect,
15137            >,
15138        T1: fidl::encoding::Encode<
15139                fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<ConnectorRouterMarker>>,
15140                fidl::encoding::DefaultFuchsiaResourceDialect,
15141            >,
15142    >
15143        fidl::encoding::Encode<
15144            CapabilitiesConnectorRouterCreateRequest,
15145            fidl::encoding::DefaultFuchsiaResourceDialect,
15146        > for (T0, T1)
15147    {
15148        #[inline]
15149        unsafe fn encode(
15150            self,
15151            encoder: &mut fidl::encoding::Encoder<
15152                '_,
15153                fidl::encoding::DefaultFuchsiaResourceDialect,
15154            >,
15155            offset: usize,
15156            depth: fidl::encoding::Depth,
15157        ) -> fidl::Result<()> {
15158            encoder.debug_check_bounds::<CapabilitiesConnectorRouterCreateRequest>(offset);
15159            // Zero out padding regions. There's no need to apply masks
15160            // because the unmasked parts will be overwritten by fields.
15161            // Write the fields.
15162            self.0.encode(encoder, offset + 0, depth)?;
15163            self.1.encode(encoder, offset + 4, depth)?;
15164            Ok(())
15165        }
15166    }
15167
15168    impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
15169        for CapabilitiesConnectorRouterCreateRequest
15170    {
15171        #[inline(always)]
15172        fn new_empty() -> Self {
15173            Self {
15174                router: fidl::new_empty!(fidl::encoding::HandleType<fidl::EventPair, { fidl::ObjectType::EVENTPAIR.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect),
15175                router_client_end: fidl::new_empty!(
15176                    fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<ConnectorRouterMarker>>,
15177                    fidl::encoding::DefaultFuchsiaResourceDialect
15178                ),
15179            }
15180        }
15181
15182        #[inline]
15183        unsafe fn decode(
15184            &mut self,
15185            decoder: &mut fidl::encoding::Decoder<
15186                '_,
15187                fidl::encoding::DefaultFuchsiaResourceDialect,
15188            >,
15189            offset: usize,
15190            _depth: fidl::encoding::Depth,
15191        ) -> fidl::Result<()> {
15192            decoder.debug_check_bounds::<Self>(offset);
15193            // Verify that padding bytes are zero.
15194            fidl::decode!(fidl::encoding::HandleType<fidl::EventPair, { fidl::ObjectType::EVENTPAIR.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect, &mut self.router, decoder, offset + 0, _depth)?;
15195            fidl::decode!(
15196                fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<ConnectorRouterMarker>>,
15197                fidl::encoding::DefaultFuchsiaResourceDialect,
15198                &mut self.router_client_end,
15199                decoder,
15200                offset + 4,
15201                _depth
15202            )?;
15203            Ok(())
15204        }
15205    }
15206
15207    impl fidl::encoding::ResourceTypeMarker for CapabilitiesConnectorRouterRouteRequest {
15208        type Borrowed<'a> = &'a mut Self;
15209        fn take_or_borrow<'a>(
15210            value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
15211        ) -> Self::Borrowed<'a> {
15212            value
15213        }
15214    }
15215
15216    unsafe impl fidl::encoding::TypeMarker for CapabilitiesConnectorRouterRouteRequest {
15217        type Owned = Self;
15218
15219        #[inline(always)]
15220        fn inline_align(_context: fidl::encoding::Context) -> usize {
15221            8
15222        }
15223
15224        #[inline(always)]
15225        fn inline_size(_context: fidl::encoding::Context) -> usize {
15226            32
15227        }
15228    }
15229
15230    unsafe impl
15231        fidl::encoding::Encode<
15232            CapabilitiesConnectorRouterRouteRequest,
15233            fidl::encoding::DefaultFuchsiaResourceDialect,
15234        > for &mut CapabilitiesConnectorRouterRouteRequest
15235    {
15236        #[inline]
15237        unsafe fn encode(
15238            self,
15239            encoder: &mut fidl::encoding::Encoder<
15240                '_,
15241                fidl::encoding::DefaultFuchsiaResourceDialect,
15242            >,
15243            offset: usize,
15244            _depth: fidl::encoding::Depth,
15245        ) -> fidl::Result<()> {
15246            encoder.debug_check_bounds::<CapabilitiesConnectorRouterRouteRequest>(offset);
15247            // Delegate to tuple encoding.
15248            fidl::encoding::Encode::<
15249                CapabilitiesConnectorRouterRouteRequest,
15250                fidl::encoding::DefaultFuchsiaResourceDialect,
15251            >::encode(
15252                (
15253                    <fidl::encoding::HandleType<
15254                        fidl::EventPair,
15255                        { fidl::ObjectType::EVENTPAIR.into_raw() },
15256                        2147483648,
15257                    > as fidl::encoding::ResourceTypeMarker>::take_or_borrow(
15258                        &mut self.router
15259                    ),
15260                    <RouteRequest as fidl::encoding::ResourceTypeMarker>::take_or_borrow(
15261                        &mut self.request,
15262                    ),
15263                    <fidl::encoding::HandleType<
15264                        fidl::EventPair,
15265                        { fidl::ObjectType::EVENTPAIR.into_raw() },
15266                        2147483648,
15267                    > as fidl::encoding::ResourceTypeMarker>::take_or_borrow(
15268                        &mut self.instance_token,
15269                    ),
15270                    <fidl::encoding::HandleType<
15271                        fidl::EventPair,
15272                        { fidl::ObjectType::EVENTPAIR.into_raw() },
15273                        2147483648,
15274                    > as fidl::encoding::ResourceTypeMarker>::take_or_borrow(
15275                        &mut self.connector
15276                    ),
15277                ),
15278                encoder,
15279                offset,
15280                _depth,
15281            )
15282        }
15283    }
15284    unsafe impl<
15285        T0: fidl::encoding::Encode<
15286                fidl::encoding::HandleType<
15287                    fidl::EventPair,
15288                    { fidl::ObjectType::EVENTPAIR.into_raw() },
15289                    2147483648,
15290                >,
15291                fidl::encoding::DefaultFuchsiaResourceDialect,
15292            >,
15293        T1: fidl::encoding::Encode<RouteRequest, fidl::encoding::DefaultFuchsiaResourceDialect>,
15294        T2: fidl::encoding::Encode<
15295                fidl::encoding::HandleType<
15296                    fidl::EventPair,
15297                    { fidl::ObjectType::EVENTPAIR.into_raw() },
15298                    2147483648,
15299                >,
15300                fidl::encoding::DefaultFuchsiaResourceDialect,
15301            >,
15302        T3: fidl::encoding::Encode<
15303                fidl::encoding::HandleType<
15304                    fidl::EventPair,
15305                    { fidl::ObjectType::EVENTPAIR.into_raw() },
15306                    2147483648,
15307                >,
15308                fidl::encoding::DefaultFuchsiaResourceDialect,
15309            >,
15310    >
15311        fidl::encoding::Encode<
15312            CapabilitiesConnectorRouterRouteRequest,
15313            fidl::encoding::DefaultFuchsiaResourceDialect,
15314        > for (T0, T1, T2, T3)
15315    {
15316        #[inline]
15317        unsafe fn encode(
15318            self,
15319            encoder: &mut fidl::encoding::Encoder<
15320                '_,
15321                fidl::encoding::DefaultFuchsiaResourceDialect,
15322            >,
15323            offset: usize,
15324            depth: fidl::encoding::Depth,
15325        ) -> fidl::Result<()> {
15326            encoder.debug_check_bounds::<CapabilitiesConnectorRouterRouteRequest>(offset);
15327            // Zero out padding regions. There's no need to apply masks
15328            // because the unmasked parts will be overwritten by fields.
15329            unsafe {
15330                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(0);
15331                (ptr as *mut u64).write_unaligned(0);
15332            }
15333            // Write the fields.
15334            self.0.encode(encoder, offset + 0, depth)?;
15335            self.1.encode(encoder, offset + 8, depth)?;
15336            self.2.encode(encoder, offset + 24, depth)?;
15337            self.3.encode(encoder, offset + 28, depth)?;
15338            Ok(())
15339        }
15340    }
15341
15342    impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
15343        for CapabilitiesConnectorRouterRouteRequest
15344    {
15345        #[inline(always)]
15346        fn new_empty() -> Self {
15347            Self {
15348                router: fidl::new_empty!(fidl::encoding::HandleType<fidl::EventPair, { fidl::ObjectType::EVENTPAIR.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect),
15349                request: fidl::new_empty!(
15350                    RouteRequest,
15351                    fidl::encoding::DefaultFuchsiaResourceDialect
15352                ),
15353                instance_token: fidl::new_empty!(fidl::encoding::HandleType<fidl::EventPair, { fidl::ObjectType::EVENTPAIR.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect),
15354                connector: fidl::new_empty!(fidl::encoding::HandleType<fidl::EventPair, { fidl::ObjectType::EVENTPAIR.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect),
15355            }
15356        }
15357
15358        #[inline]
15359        unsafe fn decode(
15360            &mut self,
15361            decoder: &mut fidl::encoding::Decoder<
15362                '_,
15363                fidl::encoding::DefaultFuchsiaResourceDialect,
15364            >,
15365            offset: usize,
15366            _depth: fidl::encoding::Depth,
15367        ) -> fidl::Result<()> {
15368            decoder.debug_check_bounds::<Self>(offset);
15369            // Verify that padding bytes are zero.
15370            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(0) };
15371            let padval = unsafe { (ptr as *const u64).read_unaligned() };
15372            let mask = 0xffffffff00000000u64;
15373            let maskedval = padval & mask;
15374            if maskedval != 0 {
15375                return Err(fidl::Error::NonZeroPadding {
15376                    padding_start: offset + 0 + ((mask as u64).trailing_zeros() / 8) as usize,
15377                });
15378            }
15379            fidl::decode!(fidl::encoding::HandleType<fidl::EventPair, { fidl::ObjectType::EVENTPAIR.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect, &mut self.router, decoder, offset + 0, _depth)?;
15380            fidl::decode!(
15381                RouteRequest,
15382                fidl::encoding::DefaultFuchsiaResourceDialect,
15383                &mut self.request,
15384                decoder,
15385                offset + 8,
15386                _depth
15387            )?;
15388            fidl::decode!(fidl::encoding::HandleType<fidl::EventPair, { fidl::ObjectType::EVENTPAIR.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect, &mut self.instance_token, decoder, offset + 24, _depth)?;
15389            fidl::decode!(fidl::encoding::HandleType<fidl::EventPair, { fidl::ObjectType::EVENTPAIR.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect, &mut self.connector, decoder, offset + 28, _depth)?;
15390            Ok(())
15391        }
15392    }
15393
15394    impl fidl::encoding::ResourceTypeMarker for CapabilitiesDataCreateRequest {
15395        type Borrowed<'a> = &'a mut Self;
15396        fn take_or_borrow<'a>(
15397            value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
15398        ) -> Self::Borrowed<'a> {
15399            value
15400        }
15401    }
15402
15403    unsafe impl fidl::encoding::TypeMarker for CapabilitiesDataCreateRequest {
15404        type Owned = Self;
15405
15406        #[inline(always)]
15407        fn inline_align(_context: fidl::encoding::Context) -> usize {
15408            8
15409        }
15410
15411        #[inline(always)]
15412        fn inline_size(_context: fidl::encoding::Context) -> usize {
15413            24
15414        }
15415    }
15416
15417    unsafe impl
15418        fidl::encoding::Encode<
15419            CapabilitiesDataCreateRequest,
15420            fidl::encoding::DefaultFuchsiaResourceDialect,
15421        > for &mut CapabilitiesDataCreateRequest
15422    {
15423        #[inline]
15424        unsafe fn encode(
15425            self,
15426            encoder: &mut fidl::encoding::Encoder<
15427                '_,
15428                fidl::encoding::DefaultFuchsiaResourceDialect,
15429            >,
15430            offset: usize,
15431            _depth: fidl::encoding::Depth,
15432        ) -> fidl::Result<()> {
15433            encoder.debug_check_bounds::<CapabilitiesDataCreateRequest>(offset);
15434            // Delegate to tuple encoding.
15435            fidl::encoding::Encode::<
15436                CapabilitiesDataCreateRequest,
15437                fidl::encoding::DefaultFuchsiaResourceDialect,
15438            >::encode(
15439                (
15440                    <fidl::encoding::HandleType<
15441                        fidl::EventPair,
15442                        { fidl::ObjectType::EVENTPAIR.into_raw() },
15443                        2147483648,
15444                    > as fidl::encoding::ResourceTypeMarker>::take_or_borrow(
15445                        &mut self.data_handle
15446                    ),
15447                    <Data as fidl::encoding::ValueTypeMarker>::borrow(&self.data),
15448                ),
15449                encoder,
15450                offset,
15451                _depth,
15452            )
15453        }
15454    }
15455    unsafe impl<
15456        T0: fidl::encoding::Encode<
15457                fidl::encoding::HandleType<
15458                    fidl::EventPair,
15459                    { fidl::ObjectType::EVENTPAIR.into_raw() },
15460                    2147483648,
15461                >,
15462                fidl::encoding::DefaultFuchsiaResourceDialect,
15463            >,
15464        T1: fidl::encoding::Encode<Data, fidl::encoding::DefaultFuchsiaResourceDialect>,
15465    >
15466        fidl::encoding::Encode<
15467            CapabilitiesDataCreateRequest,
15468            fidl::encoding::DefaultFuchsiaResourceDialect,
15469        > for (T0, T1)
15470    {
15471        #[inline]
15472        unsafe fn encode(
15473            self,
15474            encoder: &mut fidl::encoding::Encoder<
15475                '_,
15476                fidl::encoding::DefaultFuchsiaResourceDialect,
15477            >,
15478            offset: usize,
15479            depth: fidl::encoding::Depth,
15480        ) -> fidl::Result<()> {
15481            encoder.debug_check_bounds::<CapabilitiesDataCreateRequest>(offset);
15482            // Zero out padding regions. There's no need to apply masks
15483            // because the unmasked parts will be overwritten by fields.
15484            unsafe {
15485                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(0);
15486                (ptr as *mut u64).write_unaligned(0);
15487            }
15488            // Write the fields.
15489            self.0.encode(encoder, offset + 0, depth)?;
15490            self.1.encode(encoder, offset + 8, depth)?;
15491            Ok(())
15492        }
15493    }
15494
15495    impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
15496        for CapabilitiesDataCreateRequest
15497    {
15498        #[inline(always)]
15499        fn new_empty() -> Self {
15500            Self {
15501                data_handle: fidl::new_empty!(fidl::encoding::HandleType<fidl::EventPair, { fidl::ObjectType::EVENTPAIR.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect),
15502                data: fidl::new_empty!(Data, fidl::encoding::DefaultFuchsiaResourceDialect),
15503            }
15504        }
15505
15506        #[inline]
15507        unsafe fn decode(
15508            &mut self,
15509            decoder: &mut fidl::encoding::Decoder<
15510                '_,
15511                fidl::encoding::DefaultFuchsiaResourceDialect,
15512            >,
15513            offset: usize,
15514            _depth: fidl::encoding::Depth,
15515        ) -> fidl::Result<()> {
15516            decoder.debug_check_bounds::<Self>(offset);
15517            // Verify that padding bytes are zero.
15518            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(0) };
15519            let padval = unsafe { (ptr as *const u64).read_unaligned() };
15520            let mask = 0xffffffff00000000u64;
15521            let maskedval = padval & mask;
15522            if maskedval != 0 {
15523                return Err(fidl::Error::NonZeroPadding {
15524                    padding_start: offset + 0 + ((mask as u64).trailing_zeros() / 8) as usize,
15525                });
15526            }
15527            fidl::decode!(fidl::encoding::HandleType<fidl::EventPair, { fidl::ObjectType::EVENTPAIR.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect, &mut self.data_handle, decoder, offset + 0, _depth)?;
15528            fidl::decode!(
15529                Data,
15530                fidl::encoding::DefaultFuchsiaResourceDialect,
15531                &mut self.data,
15532                decoder,
15533                offset + 8,
15534                _depth
15535            )?;
15536            Ok(())
15537        }
15538    }
15539
15540    impl fidl::encoding::ResourceTypeMarker for CapabilitiesDataGetRequest {
15541        type Borrowed<'a> = &'a mut Self;
15542        fn take_or_borrow<'a>(
15543            value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
15544        ) -> Self::Borrowed<'a> {
15545            value
15546        }
15547    }
15548
15549    unsafe impl fidl::encoding::TypeMarker for CapabilitiesDataGetRequest {
15550        type Owned = Self;
15551
15552        #[inline(always)]
15553        fn inline_align(_context: fidl::encoding::Context) -> usize {
15554            4
15555        }
15556
15557        #[inline(always)]
15558        fn inline_size(_context: fidl::encoding::Context) -> usize {
15559            4
15560        }
15561    }
15562
15563    unsafe impl
15564        fidl::encoding::Encode<
15565            CapabilitiesDataGetRequest,
15566            fidl::encoding::DefaultFuchsiaResourceDialect,
15567        > for &mut CapabilitiesDataGetRequest
15568    {
15569        #[inline]
15570        unsafe fn encode(
15571            self,
15572            encoder: &mut fidl::encoding::Encoder<
15573                '_,
15574                fidl::encoding::DefaultFuchsiaResourceDialect,
15575            >,
15576            offset: usize,
15577            _depth: fidl::encoding::Depth,
15578        ) -> fidl::Result<()> {
15579            encoder.debug_check_bounds::<CapabilitiesDataGetRequest>(offset);
15580            // Delegate to tuple encoding.
15581            fidl::encoding::Encode::<
15582                CapabilitiesDataGetRequest,
15583                fidl::encoding::DefaultFuchsiaResourceDialect,
15584            >::encode(
15585                (<fidl::encoding::HandleType<
15586                    fidl::EventPair,
15587                    { fidl::ObjectType::EVENTPAIR.into_raw() },
15588                    2147483648,
15589                > as fidl::encoding::ResourceTypeMarker>::take_or_borrow(
15590                    &mut self.data_handle
15591                ),),
15592                encoder,
15593                offset,
15594                _depth,
15595            )
15596        }
15597    }
15598    unsafe impl<
15599        T0: fidl::encoding::Encode<
15600                fidl::encoding::HandleType<
15601                    fidl::EventPair,
15602                    { fidl::ObjectType::EVENTPAIR.into_raw() },
15603                    2147483648,
15604                >,
15605                fidl::encoding::DefaultFuchsiaResourceDialect,
15606            >,
15607    >
15608        fidl::encoding::Encode<
15609            CapabilitiesDataGetRequest,
15610            fidl::encoding::DefaultFuchsiaResourceDialect,
15611        > for (T0,)
15612    {
15613        #[inline]
15614        unsafe fn encode(
15615            self,
15616            encoder: &mut fidl::encoding::Encoder<
15617                '_,
15618                fidl::encoding::DefaultFuchsiaResourceDialect,
15619            >,
15620            offset: usize,
15621            depth: fidl::encoding::Depth,
15622        ) -> fidl::Result<()> {
15623            encoder.debug_check_bounds::<CapabilitiesDataGetRequest>(offset);
15624            // Zero out padding regions. There's no need to apply masks
15625            // because the unmasked parts will be overwritten by fields.
15626            // Write the fields.
15627            self.0.encode(encoder, offset + 0, depth)?;
15628            Ok(())
15629        }
15630    }
15631
15632    impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
15633        for CapabilitiesDataGetRequest
15634    {
15635        #[inline(always)]
15636        fn new_empty() -> Self {
15637            Self {
15638                data_handle: fidl::new_empty!(fidl::encoding::HandleType<fidl::EventPair, { fidl::ObjectType::EVENTPAIR.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect),
15639            }
15640        }
15641
15642        #[inline]
15643        unsafe fn decode(
15644            &mut self,
15645            decoder: &mut fidl::encoding::Decoder<
15646                '_,
15647                fidl::encoding::DefaultFuchsiaResourceDialect,
15648            >,
15649            offset: usize,
15650            _depth: fidl::encoding::Depth,
15651        ) -> fidl::Result<()> {
15652            decoder.debug_check_bounds::<Self>(offset);
15653            // Verify that padding bytes are zero.
15654            fidl::decode!(fidl::encoding::HandleType<fidl::EventPair, { fidl::ObjectType::EVENTPAIR.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect, &mut self.data_handle, decoder, offset + 0, _depth)?;
15655            Ok(())
15656        }
15657    }
15658
15659    impl fidl::encoding::ResourceTypeMarker for CapabilitiesDataRouterCreateRequest {
15660        type Borrowed<'a> = &'a mut Self;
15661        fn take_or_borrow<'a>(
15662            value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
15663        ) -> Self::Borrowed<'a> {
15664            value
15665        }
15666    }
15667
15668    unsafe impl fidl::encoding::TypeMarker for CapabilitiesDataRouterCreateRequest {
15669        type Owned = Self;
15670
15671        #[inline(always)]
15672        fn inline_align(_context: fidl::encoding::Context) -> usize {
15673            4
15674        }
15675
15676        #[inline(always)]
15677        fn inline_size(_context: fidl::encoding::Context) -> usize {
15678            8
15679        }
15680    }
15681
15682    unsafe impl
15683        fidl::encoding::Encode<
15684            CapabilitiesDataRouterCreateRequest,
15685            fidl::encoding::DefaultFuchsiaResourceDialect,
15686        > for &mut CapabilitiesDataRouterCreateRequest
15687    {
15688        #[inline]
15689        unsafe fn encode(
15690            self,
15691            encoder: &mut fidl::encoding::Encoder<
15692                '_,
15693                fidl::encoding::DefaultFuchsiaResourceDialect,
15694            >,
15695            offset: usize,
15696            _depth: fidl::encoding::Depth,
15697        ) -> fidl::Result<()> {
15698            encoder.debug_check_bounds::<CapabilitiesDataRouterCreateRequest>(offset);
15699            // Delegate to tuple encoding.
15700            fidl::encoding::Encode::<CapabilitiesDataRouterCreateRequest, fidl::encoding::DefaultFuchsiaResourceDialect>::encode(
15701                (
15702                    <fidl::encoding::HandleType<fidl::EventPair, { fidl::ObjectType::EVENTPAIR.into_raw() }, 2147483648> as fidl::encoding::ResourceTypeMarker>::take_or_borrow(&mut self.router),
15703                    <fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<DataRouterMarker>> as fidl::encoding::ResourceTypeMarker>::take_or_borrow(&mut self.router_client_end),
15704                ),
15705                encoder, offset, _depth
15706            )
15707        }
15708    }
15709    unsafe impl<
15710        T0: fidl::encoding::Encode<
15711                fidl::encoding::HandleType<
15712                    fidl::EventPair,
15713                    { fidl::ObjectType::EVENTPAIR.into_raw() },
15714                    2147483648,
15715                >,
15716                fidl::encoding::DefaultFuchsiaResourceDialect,
15717            >,
15718        T1: fidl::encoding::Encode<
15719                fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<DataRouterMarker>>,
15720                fidl::encoding::DefaultFuchsiaResourceDialect,
15721            >,
15722    >
15723        fidl::encoding::Encode<
15724            CapabilitiesDataRouterCreateRequest,
15725            fidl::encoding::DefaultFuchsiaResourceDialect,
15726        > for (T0, T1)
15727    {
15728        #[inline]
15729        unsafe fn encode(
15730            self,
15731            encoder: &mut fidl::encoding::Encoder<
15732                '_,
15733                fidl::encoding::DefaultFuchsiaResourceDialect,
15734            >,
15735            offset: usize,
15736            depth: fidl::encoding::Depth,
15737        ) -> fidl::Result<()> {
15738            encoder.debug_check_bounds::<CapabilitiesDataRouterCreateRequest>(offset);
15739            // Zero out padding regions. There's no need to apply masks
15740            // because the unmasked parts will be overwritten by fields.
15741            // Write the fields.
15742            self.0.encode(encoder, offset + 0, depth)?;
15743            self.1.encode(encoder, offset + 4, depth)?;
15744            Ok(())
15745        }
15746    }
15747
15748    impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
15749        for CapabilitiesDataRouterCreateRequest
15750    {
15751        #[inline(always)]
15752        fn new_empty() -> Self {
15753            Self {
15754                router: fidl::new_empty!(fidl::encoding::HandleType<fidl::EventPair, { fidl::ObjectType::EVENTPAIR.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect),
15755                router_client_end: fidl::new_empty!(
15756                    fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<DataRouterMarker>>,
15757                    fidl::encoding::DefaultFuchsiaResourceDialect
15758                ),
15759            }
15760        }
15761
15762        #[inline]
15763        unsafe fn decode(
15764            &mut self,
15765            decoder: &mut fidl::encoding::Decoder<
15766                '_,
15767                fidl::encoding::DefaultFuchsiaResourceDialect,
15768            >,
15769            offset: usize,
15770            _depth: fidl::encoding::Depth,
15771        ) -> fidl::Result<()> {
15772            decoder.debug_check_bounds::<Self>(offset);
15773            // Verify that padding bytes are zero.
15774            fidl::decode!(fidl::encoding::HandleType<fidl::EventPair, { fidl::ObjectType::EVENTPAIR.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect, &mut self.router, decoder, offset + 0, _depth)?;
15775            fidl::decode!(
15776                fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<DataRouterMarker>>,
15777                fidl::encoding::DefaultFuchsiaResourceDialect,
15778                &mut self.router_client_end,
15779                decoder,
15780                offset + 4,
15781                _depth
15782            )?;
15783            Ok(())
15784        }
15785    }
15786
15787    impl fidl::encoding::ResourceTypeMarker for CapabilitiesDataRouterRouteRequest {
15788        type Borrowed<'a> = &'a mut Self;
15789        fn take_or_borrow<'a>(
15790            value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
15791        ) -> Self::Borrowed<'a> {
15792            value
15793        }
15794    }
15795
15796    unsafe impl fidl::encoding::TypeMarker for CapabilitiesDataRouterRouteRequest {
15797        type Owned = Self;
15798
15799        #[inline(always)]
15800        fn inline_align(_context: fidl::encoding::Context) -> usize {
15801            8
15802        }
15803
15804        #[inline(always)]
15805        fn inline_size(_context: fidl::encoding::Context) -> usize {
15806            32
15807        }
15808    }
15809
15810    unsafe impl
15811        fidl::encoding::Encode<
15812            CapabilitiesDataRouterRouteRequest,
15813            fidl::encoding::DefaultFuchsiaResourceDialect,
15814        > for &mut CapabilitiesDataRouterRouteRequest
15815    {
15816        #[inline]
15817        unsafe fn encode(
15818            self,
15819            encoder: &mut fidl::encoding::Encoder<
15820                '_,
15821                fidl::encoding::DefaultFuchsiaResourceDialect,
15822            >,
15823            offset: usize,
15824            _depth: fidl::encoding::Depth,
15825        ) -> fidl::Result<()> {
15826            encoder.debug_check_bounds::<CapabilitiesDataRouterRouteRequest>(offset);
15827            // Delegate to tuple encoding.
15828            fidl::encoding::Encode::<
15829                CapabilitiesDataRouterRouteRequest,
15830                fidl::encoding::DefaultFuchsiaResourceDialect,
15831            >::encode(
15832                (
15833                    <fidl::encoding::HandleType<
15834                        fidl::EventPair,
15835                        { fidl::ObjectType::EVENTPAIR.into_raw() },
15836                        2147483648,
15837                    > as fidl::encoding::ResourceTypeMarker>::take_or_borrow(
15838                        &mut self.router
15839                    ),
15840                    <RouteRequest as fidl::encoding::ResourceTypeMarker>::take_or_borrow(
15841                        &mut self.request,
15842                    ),
15843                    <fidl::encoding::HandleType<
15844                        fidl::EventPair,
15845                        { fidl::ObjectType::EVENTPAIR.into_raw() },
15846                        2147483648,
15847                    > as fidl::encoding::ResourceTypeMarker>::take_or_borrow(
15848                        &mut self.instance_token,
15849                    ),
15850                    <fidl::encoding::HandleType<
15851                        fidl::EventPair,
15852                        { fidl::ObjectType::EVENTPAIR.into_raw() },
15853                        2147483648,
15854                    > as fidl::encoding::ResourceTypeMarker>::take_or_borrow(
15855                        &mut self.data
15856                    ),
15857                ),
15858                encoder,
15859                offset,
15860                _depth,
15861            )
15862        }
15863    }
15864    unsafe impl<
15865        T0: fidl::encoding::Encode<
15866                fidl::encoding::HandleType<
15867                    fidl::EventPair,
15868                    { fidl::ObjectType::EVENTPAIR.into_raw() },
15869                    2147483648,
15870                >,
15871                fidl::encoding::DefaultFuchsiaResourceDialect,
15872            >,
15873        T1: fidl::encoding::Encode<RouteRequest, fidl::encoding::DefaultFuchsiaResourceDialect>,
15874        T2: fidl::encoding::Encode<
15875                fidl::encoding::HandleType<
15876                    fidl::EventPair,
15877                    { fidl::ObjectType::EVENTPAIR.into_raw() },
15878                    2147483648,
15879                >,
15880                fidl::encoding::DefaultFuchsiaResourceDialect,
15881            >,
15882        T3: fidl::encoding::Encode<
15883                fidl::encoding::HandleType<
15884                    fidl::EventPair,
15885                    { fidl::ObjectType::EVENTPAIR.into_raw() },
15886                    2147483648,
15887                >,
15888                fidl::encoding::DefaultFuchsiaResourceDialect,
15889            >,
15890    >
15891        fidl::encoding::Encode<
15892            CapabilitiesDataRouterRouteRequest,
15893            fidl::encoding::DefaultFuchsiaResourceDialect,
15894        > for (T0, T1, T2, T3)
15895    {
15896        #[inline]
15897        unsafe fn encode(
15898            self,
15899            encoder: &mut fidl::encoding::Encoder<
15900                '_,
15901                fidl::encoding::DefaultFuchsiaResourceDialect,
15902            >,
15903            offset: usize,
15904            depth: fidl::encoding::Depth,
15905        ) -> fidl::Result<()> {
15906            encoder.debug_check_bounds::<CapabilitiesDataRouterRouteRequest>(offset);
15907            // Zero out padding regions. There's no need to apply masks
15908            // because the unmasked parts will be overwritten by fields.
15909            unsafe {
15910                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(0);
15911                (ptr as *mut u64).write_unaligned(0);
15912            }
15913            // Write the fields.
15914            self.0.encode(encoder, offset + 0, depth)?;
15915            self.1.encode(encoder, offset + 8, depth)?;
15916            self.2.encode(encoder, offset + 24, depth)?;
15917            self.3.encode(encoder, offset + 28, depth)?;
15918            Ok(())
15919        }
15920    }
15921
15922    impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
15923        for CapabilitiesDataRouterRouteRequest
15924    {
15925        #[inline(always)]
15926        fn new_empty() -> Self {
15927            Self {
15928                router: fidl::new_empty!(fidl::encoding::HandleType<fidl::EventPair, { fidl::ObjectType::EVENTPAIR.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect),
15929                request: fidl::new_empty!(
15930                    RouteRequest,
15931                    fidl::encoding::DefaultFuchsiaResourceDialect
15932                ),
15933                instance_token: fidl::new_empty!(fidl::encoding::HandleType<fidl::EventPair, { fidl::ObjectType::EVENTPAIR.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect),
15934                data: fidl::new_empty!(fidl::encoding::HandleType<fidl::EventPair, { fidl::ObjectType::EVENTPAIR.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect),
15935            }
15936        }
15937
15938        #[inline]
15939        unsafe fn decode(
15940            &mut self,
15941            decoder: &mut fidl::encoding::Decoder<
15942                '_,
15943                fidl::encoding::DefaultFuchsiaResourceDialect,
15944            >,
15945            offset: usize,
15946            _depth: fidl::encoding::Depth,
15947        ) -> fidl::Result<()> {
15948            decoder.debug_check_bounds::<Self>(offset);
15949            // Verify that padding bytes are zero.
15950            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(0) };
15951            let padval = unsafe { (ptr as *const u64).read_unaligned() };
15952            let mask = 0xffffffff00000000u64;
15953            let maskedval = padval & mask;
15954            if maskedval != 0 {
15955                return Err(fidl::Error::NonZeroPadding {
15956                    padding_start: offset + 0 + ((mask as u64).trailing_zeros() / 8) as usize,
15957                });
15958            }
15959            fidl::decode!(fidl::encoding::HandleType<fidl::EventPair, { fidl::ObjectType::EVENTPAIR.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect, &mut self.router, decoder, offset + 0, _depth)?;
15960            fidl::decode!(
15961                RouteRequest,
15962                fidl::encoding::DefaultFuchsiaResourceDialect,
15963                &mut self.request,
15964                decoder,
15965                offset + 8,
15966                _depth
15967            )?;
15968            fidl::decode!(fidl::encoding::HandleType<fidl::EventPair, { fidl::ObjectType::EVENTPAIR.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect, &mut self.instance_token, decoder, offset + 24, _depth)?;
15969            fidl::decode!(fidl::encoding::HandleType<fidl::EventPair, { fidl::ObjectType::EVENTPAIR.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect, &mut self.data, decoder, offset + 28, _depth)?;
15970            Ok(())
15971        }
15972    }
15973
15974    impl fidl::encoding::ResourceTypeMarker for CapabilitiesDictionaryCreateRequest {
15975        type Borrowed<'a> = &'a mut Self;
15976        fn take_or_borrow<'a>(
15977            value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
15978        ) -> Self::Borrowed<'a> {
15979            value
15980        }
15981    }
15982
15983    unsafe impl fidl::encoding::TypeMarker for CapabilitiesDictionaryCreateRequest {
15984        type Owned = Self;
15985
15986        #[inline(always)]
15987        fn inline_align(_context: fidl::encoding::Context) -> usize {
15988            4
15989        }
15990
15991        #[inline(always)]
15992        fn inline_size(_context: fidl::encoding::Context) -> usize {
15993            4
15994        }
15995    }
15996
15997    unsafe impl
15998        fidl::encoding::Encode<
15999            CapabilitiesDictionaryCreateRequest,
16000            fidl::encoding::DefaultFuchsiaResourceDialect,
16001        > for &mut CapabilitiesDictionaryCreateRequest
16002    {
16003        #[inline]
16004        unsafe fn encode(
16005            self,
16006            encoder: &mut fidl::encoding::Encoder<
16007                '_,
16008                fidl::encoding::DefaultFuchsiaResourceDialect,
16009            >,
16010            offset: usize,
16011            _depth: fidl::encoding::Depth,
16012        ) -> fidl::Result<()> {
16013            encoder.debug_check_bounds::<CapabilitiesDictionaryCreateRequest>(offset);
16014            // Delegate to tuple encoding.
16015            fidl::encoding::Encode::<
16016                CapabilitiesDictionaryCreateRequest,
16017                fidl::encoding::DefaultFuchsiaResourceDialect,
16018            >::encode(
16019                (<fidl::encoding::HandleType<
16020                    fidl::EventPair,
16021                    { fidl::ObjectType::EVENTPAIR.into_raw() },
16022                    2147483648,
16023                > as fidl::encoding::ResourceTypeMarker>::take_or_borrow(
16024                    &mut self.dictionary
16025                ),),
16026                encoder,
16027                offset,
16028                _depth,
16029            )
16030        }
16031    }
16032    unsafe impl<
16033        T0: fidl::encoding::Encode<
16034                fidl::encoding::HandleType<
16035                    fidl::EventPair,
16036                    { fidl::ObjectType::EVENTPAIR.into_raw() },
16037                    2147483648,
16038                >,
16039                fidl::encoding::DefaultFuchsiaResourceDialect,
16040            >,
16041    >
16042        fidl::encoding::Encode<
16043            CapabilitiesDictionaryCreateRequest,
16044            fidl::encoding::DefaultFuchsiaResourceDialect,
16045        > for (T0,)
16046    {
16047        #[inline]
16048        unsafe fn encode(
16049            self,
16050            encoder: &mut fidl::encoding::Encoder<
16051                '_,
16052                fidl::encoding::DefaultFuchsiaResourceDialect,
16053            >,
16054            offset: usize,
16055            depth: fidl::encoding::Depth,
16056        ) -> fidl::Result<()> {
16057            encoder.debug_check_bounds::<CapabilitiesDictionaryCreateRequest>(offset);
16058            // Zero out padding regions. There's no need to apply masks
16059            // because the unmasked parts will be overwritten by fields.
16060            // Write the fields.
16061            self.0.encode(encoder, offset + 0, depth)?;
16062            Ok(())
16063        }
16064    }
16065
16066    impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
16067        for CapabilitiesDictionaryCreateRequest
16068    {
16069        #[inline(always)]
16070        fn new_empty() -> Self {
16071            Self {
16072                dictionary: fidl::new_empty!(fidl::encoding::HandleType<fidl::EventPair, { fidl::ObjectType::EVENTPAIR.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect),
16073            }
16074        }
16075
16076        #[inline]
16077        unsafe fn decode(
16078            &mut self,
16079            decoder: &mut fidl::encoding::Decoder<
16080                '_,
16081                fidl::encoding::DefaultFuchsiaResourceDialect,
16082            >,
16083            offset: usize,
16084            _depth: fidl::encoding::Depth,
16085        ) -> fidl::Result<()> {
16086            decoder.debug_check_bounds::<Self>(offset);
16087            // Verify that padding bytes are zero.
16088            fidl::decode!(fidl::encoding::HandleType<fidl::EventPair, { fidl::ObjectType::EVENTPAIR.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect, &mut self.dictionary, decoder, offset + 0, _depth)?;
16089            Ok(())
16090        }
16091    }
16092
16093    impl fidl::encoding::ResourceTypeMarker for CapabilitiesDictionaryGetRequest {
16094        type Borrowed<'a> = &'a mut Self;
16095        fn take_or_borrow<'a>(
16096            value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
16097        ) -> Self::Borrowed<'a> {
16098            value
16099        }
16100    }
16101
16102    unsafe impl fidl::encoding::TypeMarker for CapabilitiesDictionaryGetRequest {
16103        type Owned = Self;
16104
16105        #[inline(always)]
16106        fn inline_align(_context: fidl::encoding::Context) -> usize {
16107            8
16108        }
16109
16110        #[inline(always)]
16111        fn inline_size(_context: fidl::encoding::Context) -> usize {
16112            32
16113        }
16114    }
16115
16116    unsafe impl
16117        fidl::encoding::Encode<
16118            CapabilitiesDictionaryGetRequest,
16119            fidl::encoding::DefaultFuchsiaResourceDialect,
16120        > for &mut CapabilitiesDictionaryGetRequest
16121    {
16122        #[inline]
16123        unsafe fn encode(
16124            self,
16125            encoder: &mut fidl::encoding::Encoder<
16126                '_,
16127                fidl::encoding::DefaultFuchsiaResourceDialect,
16128            >,
16129            offset: usize,
16130            _depth: fidl::encoding::Depth,
16131        ) -> fidl::Result<()> {
16132            encoder.debug_check_bounds::<CapabilitiesDictionaryGetRequest>(offset);
16133            // Delegate to tuple encoding.
16134            fidl::encoding::Encode::<
16135                CapabilitiesDictionaryGetRequest,
16136                fidl::encoding::DefaultFuchsiaResourceDialect,
16137            >::encode(
16138                (
16139                    <fidl::encoding::HandleType<
16140                        fidl::EventPair,
16141                        { fidl::ObjectType::EVENTPAIR.into_raw() },
16142                        2147483648,
16143                    > as fidl::encoding::ResourceTypeMarker>::take_or_borrow(
16144                        &mut self.dictionary
16145                    ),
16146                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow(
16147                        &self.key,
16148                    ),
16149                    <fidl::encoding::HandleType<
16150                        fidl::EventPair,
16151                        { fidl::ObjectType::EVENTPAIR.into_raw() },
16152                        2147483648,
16153                    > as fidl::encoding::ResourceTypeMarker>::take_or_borrow(
16154                        &mut self.value
16155                    ),
16156                ),
16157                encoder,
16158                offset,
16159                _depth,
16160            )
16161        }
16162    }
16163    unsafe impl<
16164        T0: fidl::encoding::Encode<
16165                fidl::encoding::HandleType<
16166                    fidl::EventPair,
16167                    { fidl::ObjectType::EVENTPAIR.into_raw() },
16168                    2147483648,
16169                >,
16170                fidl::encoding::DefaultFuchsiaResourceDialect,
16171            >,
16172        T1: fidl::encoding::Encode<
16173                fidl::encoding::BoundedString<100>,
16174                fidl::encoding::DefaultFuchsiaResourceDialect,
16175            >,
16176        T2: fidl::encoding::Encode<
16177                fidl::encoding::HandleType<
16178                    fidl::EventPair,
16179                    { fidl::ObjectType::EVENTPAIR.into_raw() },
16180                    2147483648,
16181                >,
16182                fidl::encoding::DefaultFuchsiaResourceDialect,
16183            >,
16184    >
16185        fidl::encoding::Encode<
16186            CapabilitiesDictionaryGetRequest,
16187            fidl::encoding::DefaultFuchsiaResourceDialect,
16188        > for (T0, T1, T2)
16189    {
16190        #[inline]
16191        unsafe fn encode(
16192            self,
16193            encoder: &mut fidl::encoding::Encoder<
16194                '_,
16195                fidl::encoding::DefaultFuchsiaResourceDialect,
16196            >,
16197            offset: usize,
16198            depth: fidl::encoding::Depth,
16199        ) -> fidl::Result<()> {
16200            encoder.debug_check_bounds::<CapabilitiesDictionaryGetRequest>(offset);
16201            // Zero out padding regions. There's no need to apply masks
16202            // because the unmasked parts will be overwritten by fields.
16203            unsafe {
16204                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(0);
16205                (ptr as *mut u64).write_unaligned(0);
16206            }
16207            unsafe {
16208                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(24);
16209                (ptr as *mut u64).write_unaligned(0);
16210            }
16211            // Write the fields.
16212            self.0.encode(encoder, offset + 0, depth)?;
16213            self.1.encode(encoder, offset + 8, depth)?;
16214            self.2.encode(encoder, offset + 24, depth)?;
16215            Ok(())
16216        }
16217    }
16218
16219    impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
16220        for CapabilitiesDictionaryGetRequest
16221    {
16222        #[inline(always)]
16223        fn new_empty() -> Self {
16224            Self {
16225                dictionary: fidl::new_empty!(fidl::encoding::HandleType<fidl::EventPair, { fidl::ObjectType::EVENTPAIR.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect),
16226                key: fidl::new_empty!(
16227                    fidl::encoding::BoundedString<100>,
16228                    fidl::encoding::DefaultFuchsiaResourceDialect
16229                ),
16230                value: fidl::new_empty!(fidl::encoding::HandleType<fidl::EventPair, { fidl::ObjectType::EVENTPAIR.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect),
16231            }
16232        }
16233
16234        #[inline]
16235        unsafe fn decode(
16236            &mut self,
16237            decoder: &mut fidl::encoding::Decoder<
16238                '_,
16239                fidl::encoding::DefaultFuchsiaResourceDialect,
16240            >,
16241            offset: usize,
16242            _depth: fidl::encoding::Depth,
16243        ) -> fidl::Result<()> {
16244            decoder.debug_check_bounds::<Self>(offset);
16245            // Verify that padding bytes are zero.
16246            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(0) };
16247            let padval = unsafe { (ptr as *const u64).read_unaligned() };
16248            let mask = 0xffffffff00000000u64;
16249            let maskedval = padval & mask;
16250            if maskedval != 0 {
16251                return Err(fidl::Error::NonZeroPadding {
16252                    padding_start: offset + 0 + ((mask as u64).trailing_zeros() / 8) as usize,
16253                });
16254            }
16255            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(24) };
16256            let padval = unsafe { (ptr as *const u64).read_unaligned() };
16257            let mask = 0xffffffff00000000u64;
16258            let maskedval = padval & mask;
16259            if maskedval != 0 {
16260                return Err(fidl::Error::NonZeroPadding {
16261                    padding_start: offset + 24 + ((mask as u64).trailing_zeros() / 8) as usize,
16262                });
16263            }
16264            fidl::decode!(fidl::encoding::HandleType<fidl::EventPair, { fidl::ObjectType::EVENTPAIR.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect, &mut self.dictionary, decoder, offset + 0, _depth)?;
16265            fidl::decode!(
16266                fidl::encoding::BoundedString<100>,
16267                fidl::encoding::DefaultFuchsiaResourceDialect,
16268                &mut self.key,
16269                decoder,
16270                offset + 8,
16271                _depth
16272            )?;
16273            fidl::decode!(fidl::encoding::HandleType<fidl::EventPair, { fidl::ObjectType::EVENTPAIR.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect, &mut self.value, decoder, offset + 24, _depth)?;
16274            Ok(())
16275        }
16276    }
16277
16278    impl fidl::encoding::ResourceTypeMarker for CapabilitiesDictionaryInsertRequest {
16279        type Borrowed<'a> = &'a mut Self;
16280        fn take_or_borrow<'a>(
16281            value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
16282        ) -> Self::Borrowed<'a> {
16283            value
16284        }
16285    }
16286
16287    unsafe impl fidl::encoding::TypeMarker for CapabilitiesDictionaryInsertRequest {
16288        type Owned = Self;
16289
16290        #[inline(always)]
16291        fn inline_align(_context: fidl::encoding::Context) -> usize {
16292            8
16293        }
16294
16295        #[inline(always)]
16296        fn inline_size(_context: fidl::encoding::Context) -> usize {
16297            32
16298        }
16299    }
16300
16301    unsafe impl
16302        fidl::encoding::Encode<
16303            CapabilitiesDictionaryInsertRequest,
16304            fidl::encoding::DefaultFuchsiaResourceDialect,
16305        > for &mut CapabilitiesDictionaryInsertRequest
16306    {
16307        #[inline]
16308        unsafe fn encode(
16309            self,
16310            encoder: &mut fidl::encoding::Encoder<
16311                '_,
16312                fidl::encoding::DefaultFuchsiaResourceDialect,
16313            >,
16314            offset: usize,
16315            _depth: fidl::encoding::Depth,
16316        ) -> fidl::Result<()> {
16317            encoder.debug_check_bounds::<CapabilitiesDictionaryInsertRequest>(offset);
16318            // Delegate to tuple encoding.
16319            fidl::encoding::Encode::<
16320                CapabilitiesDictionaryInsertRequest,
16321                fidl::encoding::DefaultFuchsiaResourceDialect,
16322            >::encode(
16323                (
16324                    <fidl::encoding::HandleType<
16325                        fidl::EventPair,
16326                        { fidl::ObjectType::EVENTPAIR.into_raw() },
16327                        2147483648,
16328                    > as fidl::encoding::ResourceTypeMarker>::take_or_borrow(
16329                        &mut self.dictionary
16330                    ),
16331                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow(
16332                        &self.key,
16333                    ),
16334                    <fidl::encoding::HandleType<
16335                        fidl::EventPair,
16336                        { fidl::ObjectType::EVENTPAIR.into_raw() },
16337                        2147483648,
16338                    > as fidl::encoding::ResourceTypeMarker>::take_or_borrow(
16339                        &mut self.value
16340                    ),
16341                ),
16342                encoder,
16343                offset,
16344                _depth,
16345            )
16346        }
16347    }
16348    unsafe impl<
16349        T0: fidl::encoding::Encode<
16350                fidl::encoding::HandleType<
16351                    fidl::EventPair,
16352                    { fidl::ObjectType::EVENTPAIR.into_raw() },
16353                    2147483648,
16354                >,
16355                fidl::encoding::DefaultFuchsiaResourceDialect,
16356            >,
16357        T1: fidl::encoding::Encode<
16358                fidl::encoding::BoundedString<100>,
16359                fidl::encoding::DefaultFuchsiaResourceDialect,
16360            >,
16361        T2: fidl::encoding::Encode<
16362                fidl::encoding::HandleType<
16363                    fidl::EventPair,
16364                    { fidl::ObjectType::EVENTPAIR.into_raw() },
16365                    2147483648,
16366                >,
16367                fidl::encoding::DefaultFuchsiaResourceDialect,
16368            >,
16369    >
16370        fidl::encoding::Encode<
16371            CapabilitiesDictionaryInsertRequest,
16372            fidl::encoding::DefaultFuchsiaResourceDialect,
16373        > for (T0, T1, T2)
16374    {
16375        #[inline]
16376        unsafe fn encode(
16377            self,
16378            encoder: &mut fidl::encoding::Encoder<
16379                '_,
16380                fidl::encoding::DefaultFuchsiaResourceDialect,
16381            >,
16382            offset: usize,
16383            depth: fidl::encoding::Depth,
16384        ) -> fidl::Result<()> {
16385            encoder.debug_check_bounds::<CapabilitiesDictionaryInsertRequest>(offset);
16386            // Zero out padding regions. There's no need to apply masks
16387            // because the unmasked parts will be overwritten by fields.
16388            unsafe {
16389                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(0);
16390                (ptr as *mut u64).write_unaligned(0);
16391            }
16392            unsafe {
16393                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(24);
16394                (ptr as *mut u64).write_unaligned(0);
16395            }
16396            // Write the fields.
16397            self.0.encode(encoder, offset + 0, depth)?;
16398            self.1.encode(encoder, offset + 8, depth)?;
16399            self.2.encode(encoder, offset + 24, depth)?;
16400            Ok(())
16401        }
16402    }
16403
16404    impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
16405        for CapabilitiesDictionaryInsertRequest
16406    {
16407        #[inline(always)]
16408        fn new_empty() -> Self {
16409            Self {
16410                dictionary: fidl::new_empty!(fidl::encoding::HandleType<fidl::EventPair, { fidl::ObjectType::EVENTPAIR.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect),
16411                key: fidl::new_empty!(
16412                    fidl::encoding::BoundedString<100>,
16413                    fidl::encoding::DefaultFuchsiaResourceDialect
16414                ),
16415                value: fidl::new_empty!(fidl::encoding::HandleType<fidl::EventPair, { fidl::ObjectType::EVENTPAIR.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect),
16416            }
16417        }
16418
16419        #[inline]
16420        unsafe fn decode(
16421            &mut self,
16422            decoder: &mut fidl::encoding::Decoder<
16423                '_,
16424                fidl::encoding::DefaultFuchsiaResourceDialect,
16425            >,
16426            offset: usize,
16427            _depth: fidl::encoding::Depth,
16428        ) -> fidl::Result<()> {
16429            decoder.debug_check_bounds::<Self>(offset);
16430            // Verify that padding bytes are zero.
16431            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(0) };
16432            let padval = unsafe { (ptr as *const u64).read_unaligned() };
16433            let mask = 0xffffffff00000000u64;
16434            let maskedval = padval & mask;
16435            if maskedval != 0 {
16436                return Err(fidl::Error::NonZeroPadding {
16437                    padding_start: offset + 0 + ((mask as u64).trailing_zeros() / 8) as usize,
16438                });
16439            }
16440            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(24) };
16441            let padval = unsafe { (ptr as *const u64).read_unaligned() };
16442            let mask = 0xffffffff00000000u64;
16443            let maskedval = padval & mask;
16444            if maskedval != 0 {
16445                return Err(fidl::Error::NonZeroPadding {
16446                    padding_start: offset + 24 + ((mask as u64).trailing_zeros() / 8) as usize,
16447                });
16448            }
16449            fidl::decode!(fidl::encoding::HandleType<fidl::EventPair, { fidl::ObjectType::EVENTPAIR.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect, &mut self.dictionary, decoder, offset + 0, _depth)?;
16450            fidl::decode!(
16451                fidl::encoding::BoundedString<100>,
16452                fidl::encoding::DefaultFuchsiaResourceDialect,
16453                &mut self.key,
16454                decoder,
16455                offset + 8,
16456                _depth
16457            )?;
16458            fidl::decode!(fidl::encoding::HandleType<fidl::EventPair, { fidl::ObjectType::EVENTPAIR.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect, &mut self.value, decoder, offset + 24, _depth)?;
16459            Ok(())
16460        }
16461    }
16462
16463    impl fidl::encoding::ResourceTypeMarker for CapabilitiesDictionaryIterateKeysRequest {
16464        type Borrowed<'a> = &'a mut Self;
16465        fn take_or_borrow<'a>(
16466            value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
16467        ) -> Self::Borrowed<'a> {
16468            value
16469        }
16470    }
16471
16472    unsafe impl fidl::encoding::TypeMarker for CapabilitiesDictionaryIterateKeysRequest {
16473        type Owned = Self;
16474
16475        #[inline(always)]
16476        fn inline_align(_context: fidl::encoding::Context) -> usize {
16477            4
16478        }
16479
16480        #[inline(always)]
16481        fn inline_size(_context: fidl::encoding::Context) -> usize {
16482            8
16483        }
16484    }
16485
16486    unsafe impl
16487        fidl::encoding::Encode<
16488            CapabilitiesDictionaryIterateKeysRequest,
16489            fidl::encoding::DefaultFuchsiaResourceDialect,
16490        > for &mut CapabilitiesDictionaryIterateKeysRequest
16491    {
16492        #[inline]
16493        unsafe fn encode(
16494            self,
16495            encoder: &mut fidl::encoding::Encoder<
16496                '_,
16497                fidl::encoding::DefaultFuchsiaResourceDialect,
16498            >,
16499            offset: usize,
16500            _depth: fidl::encoding::Depth,
16501        ) -> fidl::Result<()> {
16502            encoder.debug_check_bounds::<CapabilitiesDictionaryIterateKeysRequest>(offset);
16503            // Delegate to tuple encoding.
16504            fidl::encoding::Encode::<
16505                CapabilitiesDictionaryIterateKeysRequest,
16506                fidl::encoding::DefaultFuchsiaResourceDialect,
16507            >::encode(
16508                (
16509                    <fidl::encoding::HandleType<
16510                        fidl::EventPair,
16511                        { fidl::ObjectType::EVENTPAIR.into_raw() },
16512                        2147483648,
16513                    > as fidl::encoding::ResourceTypeMarker>::take_or_borrow(
16514                        &mut self.dictionary
16515                    ),
16516                    <fidl::encoding::Endpoint<
16517                        fidl::endpoints::ServerEnd<DictionaryKeyIteratorMarker>,
16518                    > as fidl::encoding::ResourceTypeMarker>::take_or_borrow(
16519                        &mut self.key_iterator,
16520                    ),
16521                ),
16522                encoder,
16523                offset,
16524                _depth,
16525            )
16526        }
16527    }
16528    unsafe impl<
16529        T0: fidl::encoding::Encode<
16530                fidl::encoding::HandleType<
16531                    fidl::EventPair,
16532                    { fidl::ObjectType::EVENTPAIR.into_raw() },
16533                    2147483648,
16534                >,
16535                fidl::encoding::DefaultFuchsiaResourceDialect,
16536            >,
16537        T1: fidl::encoding::Encode<
16538                fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<DictionaryKeyIteratorMarker>>,
16539                fidl::encoding::DefaultFuchsiaResourceDialect,
16540            >,
16541    >
16542        fidl::encoding::Encode<
16543            CapabilitiesDictionaryIterateKeysRequest,
16544            fidl::encoding::DefaultFuchsiaResourceDialect,
16545        > for (T0, T1)
16546    {
16547        #[inline]
16548        unsafe fn encode(
16549            self,
16550            encoder: &mut fidl::encoding::Encoder<
16551                '_,
16552                fidl::encoding::DefaultFuchsiaResourceDialect,
16553            >,
16554            offset: usize,
16555            depth: fidl::encoding::Depth,
16556        ) -> fidl::Result<()> {
16557            encoder.debug_check_bounds::<CapabilitiesDictionaryIterateKeysRequest>(offset);
16558            // Zero out padding regions. There's no need to apply masks
16559            // because the unmasked parts will be overwritten by fields.
16560            // Write the fields.
16561            self.0.encode(encoder, offset + 0, depth)?;
16562            self.1.encode(encoder, offset + 4, depth)?;
16563            Ok(())
16564        }
16565    }
16566
16567    impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
16568        for CapabilitiesDictionaryIterateKeysRequest
16569    {
16570        #[inline(always)]
16571        fn new_empty() -> Self {
16572            Self {
16573                dictionary: fidl::new_empty!(fidl::encoding::HandleType<fidl::EventPair, { fidl::ObjectType::EVENTPAIR.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect),
16574                key_iterator: fidl::new_empty!(
16575                    fidl::encoding::Endpoint<
16576                        fidl::endpoints::ServerEnd<DictionaryKeyIteratorMarker>,
16577                    >,
16578                    fidl::encoding::DefaultFuchsiaResourceDialect
16579                ),
16580            }
16581        }
16582
16583        #[inline]
16584        unsafe fn decode(
16585            &mut self,
16586            decoder: &mut fidl::encoding::Decoder<
16587                '_,
16588                fidl::encoding::DefaultFuchsiaResourceDialect,
16589            >,
16590            offset: usize,
16591            _depth: fidl::encoding::Depth,
16592        ) -> fidl::Result<()> {
16593            decoder.debug_check_bounds::<Self>(offset);
16594            // Verify that padding bytes are zero.
16595            fidl::decode!(fidl::encoding::HandleType<fidl::EventPair, { fidl::ObjectType::EVENTPAIR.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect, &mut self.dictionary, decoder, offset + 0, _depth)?;
16596            fidl::decode!(
16597                fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<DictionaryKeyIteratorMarker>>,
16598                fidl::encoding::DefaultFuchsiaResourceDialect,
16599                &mut self.key_iterator,
16600                decoder,
16601                offset + 4,
16602                _depth
16603            )?;
16604            Ok(())
16605        }
16606    }
16607
16608    impl fidl::encoding::ResourceTypeMarker for CapabilitiesDictionaryRouterCreateRequest {
16609        type Borrowed<'a> = &'a mut Self;
16610        fn take_or_borrow<'a>(
16611            value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
16612        ) -> Self::Borrowed<'a> {
16613            value
16614        }
16615    }
16616
16617    unsafe impl fidl::encoding::TypeMarker for CapabilitiesDictionaryRouterCreateRequest {
16618        type Owned = Self;
16619
16620        #[inline(always)]
16621        fn inline_align(_context: fidl::encoding::Context) -> usize {
16622            4
16623        }
16624
16625        #[inline(always)]
16626        fn inline_size(_context: fidl::encoding::Context) -> usize {
16627            8
16628        }
16629    }
16630
16631    unsafe impl
16632        fidl::encoding::Encode<
16633            CapabilitiesDictionaryRouterCreateRequest,
16634            fidl::encoding::DefaultFuchsiaResourceDialect,
16635        > for &mut CapabilitiesDictionaryRouterCreateRequest
16636    {
16637        #[inline]
16638        unsafe fn encode(
16639            self,
16640            encoder: &mut fidl::encoding::Encoder<
16641                '_,
16642                fidl::encoding::DefaultFuchsiaResourceDialect,
16643            >,
16644            offset: usize,
16645            _depth: fidl::encoding::Depth,
16646        ) -> fidl::Result<()> {
16647            encoder.debug_check_bounds::<CapabilitiesDictionaryRouterCreateRequest>(offset);
16648            // Delegate to tuple encoding.
16649            fidl::encoding::Encode::<CapabilitiesDictionaryRouterCreateRequest, fidl::encoding::DefaultFuchsiaResourceDialect>::encode(
16650                (
16651                    <fidl::encoding::HandleType<fidl::EventPair, { fidl::ObjectType::EVENTPAIR.into_raw() }, 2147483648> as fidl::encoding::ResourceTypeMarker>::take_or_borrow(&mut self.router),
16652                    <fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<DictionaryRouterMarker>> as fidl::encoding::ResourceTypeMarker>::take_or_borrow(&mut self.router_client_end),
16653                ),
16654                encoder, offset, _depth
16655            )
16656        }
16657    }
16658    unsafe impl<
16659        T0: fidl::encoding::Encode<
16660                fidl::encoding::HandleType<
16661                    fidl::EventPair,
16662                    { fidl::ObjectType::EVENTPAIR.into_raw() },
16663                    2147483648,
16664                >,
16665                fidl::encoding::DefaultFuchsiaResourceDialect,
16666            >,
16667        T1: fidl::encoding::Encode<
16668                fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<DictionaryRouterMarker>>,
16669                fidl::encoding::DefaultFuchsiaResourceDialect,
16670            >,
16671    >
16672        fidl::encoding::Encode<
16673            CapabilitiesDictionaryRouterCreateRequest,
16674            fidl::encoding::DefaultFuchsiaResourceDialect,
16675        > for (T0, T1)
16676    {
16677        #[inline]
16678        unsafe fn encode(
16679            self,
16680            encoder: &mut fidl::encoding::Encoder<
16681                '_,
16682                fidl::encoding::DefaultFuchsiaResourceDialect,
16683            >,
16684            offset: usize,
16685            depth: fidl::encoding::Depth,
16686        ) -> fidl::Result<()> {
16687            encoder.debug_check_bounds::<CapabilitiesDictionaryRouterCreateRequest>(offset);
16688            // Zero out padding regions. There's no need to apply masks
16689            // because the unmasked parts will be overwritten by fields.
16690            // Write the fields.
16691            self.0.encode(encoder, offset + 0, depth)?;
16692            self.1.encode(encoder, offset + 4, depth)?;
16693            Ok(())
16694        }
16695    }
16696
16697    impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
16698        for CapabilitiesDictionaryRouterCreateRequest
16699    {
16700        #[inline(always)]
16701        fn new_empty() -> Self {
16702            Self {
16703                router: fidl::new_empty!(fidl::encoding::HandleType<fidl::EventPair, { fidl::ObjectType::EVENTPAIR.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect),
16704                router_client_end: fidl::new_empty!(
16705                    fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<DictionaryRouterMarker>>,
16706                    fidl::encoding::DefaultFuchsiaResourceDialect
16707                ),
16708            }
16709        }
16710
16711        #[inline]
16712        unsafe fn decode(
16713            &mut self,
16714            decoder: &mut fidl::encoding::Decoder<
16715                '_,
16716                fidl::encoding::DefaultFuchsiaResourceDialect,
16717            >,
16718            offset: usize,
16719            _depth: fidl::encoding::Depth,
16720        ) -> fidl::Result<()> {
16721            decoder.debug_check_bounds::<Self>(offset);
16722            // Verify that padding bytes are zero.
16723            fidl::decode!(fidl::encoding::HandleType<fidl::EventPair, { fidl::ObjectType::EVENTPAIR.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect, &mut self.router, decoder, offset + 0, _depth)?;
16724            fidl::decode!(
16725                fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<DictionaryRouterMarker>>,
16726                fidl::encoding::DefaultFuchsiaResourceDialect,
16727                &mut self.router_client_end,
16728                decoder,
16729                offset + 4,
16730                _depth
16731            )?;
16732            Ok(())
16733        }
16734    }
16735
16736    impl fidl::encoding::ResourceTypeMarker for CapabilitiesDictionaryRouterRouteRequest {
16737        type Borrowed<'a> = &'a mut Self;
16738        fn take_or_borrow<'a>(
16739            value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
16740        ) -> Self::Borrowed<'a> {
16741            value
16742        }
16743    }
16744
16745    unsafe impl fidl::encoding::TypeMarker for CapabilitiesDictionaryRouterRouteRequest {
16746        type Owned = Self;
16747
16748        #[inline(always)]
16749        fn inline_align(_context: fidl::encoding::Context) -> usize {
16750            8
16751        }
16752
16753        #[inline(always)]
16754        fn inline_size(_context: fidl::encoding::Context) -> usize {
16755            32
16756        }
16757    }
16758
16759    unsafe impl
16760        fidl::encoding::Encode<
16761            CapabilitiesDictionaryRouterRouteRequest,
16762            fidl::encoding::DefaultFuchsiaResourceDialect,
16763        > for &mut CapabilitiesDictionaryRouterRouteRequest
16764    {
16765        #[inline]
16766        unsafe fn encode(
16767            self,
16768            encoder: &mut fidl::encoding::Encoder<
16769                '_,
16770                fidl::encoding::DefaultFuchsiaResourceDialect,
16771            >,
16772            offset: usize,
16773            _depth: fidl::encoding::Depth,
16774        ) -> fidl::Result<()> {
16775            encoder.debug_check_bounds::<CapabilitiesDictionaryRouterRouteRequest>(offset);
16776            // Delegate to tuple encoding.
16777            fidl::encoding::Encode::<
16778                CapabilitiesDictionaryRouterRouteRequest,
16779                fidl::encoding::DefaultFuchsiaResourceDialect,
16780            >::encode(
16781                (
16782                    <fidl::encoding::HandleType<
16783                        fidl::EventPair,
16784                        { fidl::ObjectType::EVENTPAIR.into_raw() },
16785                        2147483648,
16786                    > as fidl::encoding::ResourceTypeMarker>::take_or_borrow(
16787                        &mut self.router
16788                    ),
16789                    <RouteRequest as fidl::encoding::ResourceTypeMarker>::take_or_borrow(
16790                        &mut self.request,
16791                    ),
16792                    <fidl::encoding::HandleType<
16793                        fidl::EventPair,
16794                        { fidl::ObjectType::EVENTPAIR.into_raw() },
16795                        2147483648,
16796                    > as fidl::encoding::ResourceTypeMarker>::take_or_borrow(
16797                        &mut self.instance_token,
16798                    ),
16799                    <fidl::encoding::HandleType<
16800                        fidl::EventPair,
16801                        { fidl::ObjectType::EVENTPAIR.into_raw() },
16802                        2147483648,
16803                    > as fidl::encoding::ResourceTypeMarker>::take_or_borrow(
16804                        &mut self.dictionary
16805                    ),
16806                ),
16807                encoder,
16808                offset,
16809                _depth,
16810            )
16811        }
16812    }
16813    unsafe impl<
16814        T0: fidl::encoding::Encode<
16815                fidl::encoding::HandleType<
16816                    fidl::EventPair,
16817                    { fidl::ObjectType::EVENTPAIR.into_raw() },
16818                    2147483648,
16819                >,
16820                fidl::encoding::DefaultFuchsiaResourceDialect,
16821            >,
16822        T1: fidl::encoding::Encode<RouteRequest, fidl::encoding::DefaultFuchsiaResourceDialect>,
16823        T2: fidl::encoding::Encode<
16824                fidl::encoding::HandleType<
16825                    fidl::EventPair,
16826                    { fidl::ObjectType::EVENTPAIR.into_raw() },
16827                    2147483648,
16828                >,
16829                fidl::encoding::DefaultFuchsiaResourceDialect,
16830            >,
16831        T3: fidl::encoding::Encode<
16832                fidl::encoding::HandleType<
16833                    fidl::EventPair,
16834                    { fidl::ObjectType::EVENTPAIR.into_raw() },
16835                    2147483648,
16836                >,
16837                fidl::encoding::DefaultFuchsiaResourceDialect,
16838            >,
16839    >
16840        fidl::encoding::Encode<
16841            CapabilitiesDictionaryRouterRouteRequest,
16842            fidl::encoding::DefaultFuchsiaResourceDialect,
16843        > for (T0, T1, T2, T3)
16844    {
16845        #[inline]
16846        unsafe fn encode(
16847            self,
16848            encoder: &mut fidl::encoding::Encoder<
16849                '_,
16850                fidl::encoding::DefaultFuchsiaResourceDialect,
16851            >,
16852            offset: usize,
16853            depth: fidl::encoding::Depth,
16854        ) -> fidl::Result<()> {
16855            encoder.debug_check_bounds::<CapabilitiesDictionaryRouterRouteRequest>(offset);
16856            // Zero out padding regions. There's no need to apply masks
16857            // because the unmasked parts will be overwritten by fields.
16858            unsafe {
16859                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(0);
16860                (ptr as *mut u64).write_unaligned(0);
16861            }
16862            // Write the fields.
16863            self.0.encode(encoder, offset + 0, depth)?;
16864            self.1.encode(encoder, offset + 8, depth)?;
16865            self.2.encode(encoder, offset + 24, depth)?;
16866            self.3.encode(encoder, offset + 28, depth)?;
16867            Ok(())
16868        }
16869    }
16870
16871    impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
16872        for CapabilitiesDictionaryRouterRouteRequest
16873    {
16874        #[inline(always)]
16875        fn new_empty() -> Self {
16876            Self {
16877                router: fidl::new_empty!(fidl::encoding::HandleType<fidl::EventPair, { fidl::ObjectType::EVENTPAIR.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect),
16878                request: fidl::new_empty!(
16879                    RouteRequest,
16880                    fidl::encoding::DefaultFuchsiaResourceDialect
16881                ),
16882                instance_token: fidl::new_empty!(fidl::encoding::HandleType<fidl::EventPair, { fidl::ObjectType::EVENTPAIR.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect),
16883                dictionary: fidl::new_empty!(fidl::encoding::HandleType<fidl::EventPair, { fidl::ObjectType::EVENTPAIR.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect),
16884            }
16885        }
16886
16887        #[inline]
16888        unsafe fn decode(
16889            &mut self,
16890            decoder: &mut fidl::encoding::Decoder<
16891                '_,
16892                fidl::encoding::DefaultFuchsiaResourceDialect,
16893            >,
16894            offset: usize,
16895            _depth: fidl::encoding::Depth,
16896        ) -> fidl::Result<()> {
16897            decoder.debug_check_bounds::<Self>(offset);
16898            // Verify that padding bytes are zero.
16899            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(0) };
16900            let padval = unsafe { (ptr as *const u64).read_unaligned() };
16901            let mask = 0xffffffff00000000u64;
16902            let maskedval = padval & mask;
16903            if maskedval != 0 {
16904                return Err(fidl::Error::NonZeroPadding {
16905                    padding_start: offset + 0 + ((mask as u64).trailing_zeros() / 8) as usize,
16906                });
16907            }
16908            fidl::decode!(fidl::encoding::HandleType<fidl::EventPair, { fidl::ObjectType::EVENTPAIR.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect, &mut self.router, decoder, offset + 0, _depth)?;
16909            fidl::decode!(
16910                RouteRequest,
16911                fidl::encoding::DefaultFuchsiaResourceDialect,
16912                &mut self.request,
16913                decoder,
16914                offset + 8,
16915                _depth
16916            )?;
16917            fidl::decode!(fidl::encoding::HandleType<fidl::EventPair, { fidl::ObjectType::EVENTPAIR.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect, &mut self.instance_token, decoder, offset + 24, _depth)?;
16918            fidl::decode!(fidl::encoding::HandleType<fidl::EventPair, { fidl::ObjectType::EVENTPAIR.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect, &mut self.dictionary, decoder, offset + 28, _depth)?;
16919            Ok(())
16920        }
16921    }
16922
16923    impl fidl::encoding::ResourceTypeMarker for CapabilitiesDirConnectorCreateRequest {
16924        type Borrowed<'a> = &'a mut Self;
16925        fn take_or_borrow<'a>(
16926            value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
16927        ) -> Self::Borrowed<'a> {
16928            value
16929        }
16930    }
16931
16932    unsafe impl fidl::encoding::TypeMarker for CapabilitiesDirConnectorCreateRequest {
16933        type Owned = Self;
16934
16935        #[inline(always)]
16936        fn inline_align(_context: fidl::encoding::Context) -> usize {
16937            4
16938        }
16939
16940        #[inline(always)]
16941        fn inline_size(_context: fidl::encoding::Context) -> usize {
16942            8
16943        }
16944    }
16945
16946    unsafe impl
16947        fidl::encoding::Encode<
16948            CapabilitiesDirConnectorCreateRequest,
16949            fidl::encoding::DefaultFuchsiaResourceDialect,
16950        > for &mut CapabilitiesDirConnectorCreateRequest
16951    {
16952        #[inline]
16953        unsafe fn encode(
16954            self,
16955            encoder: &mut fidl::encoding::Encoder<
16956                '_,
16957                fidl::encoding::DefaultFuchsiaResourceDialect,
16958            >,
16959            offset: usize,
16960            _depth: fidl::encoding::Depth,
16961        ) -> fidl::Result<()> {
16962            encoder.debug_check_bounds::<CapabilitiesDirConnectorCreateRequest>(offset);
16963            // Delegate to tuple encoding.
16964            fidl::encoding::Encode::<CapabilitiesDirConnectorCreateRequest, fidl::encoding::DefaultFuchsiaResourceDialect>::encode(
16965                (
16966                    <fidl::encoding::HandleType<fidl::EventPair, { fidl::ObjectType::EVENTPAIR.into_raw() }, 2147483648> as fidl::encoding::ResourceTypeMarker>::take_or_borrow(&mut self.dir_connector),
16967                    <fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<DirReceiverMarker>> as fidl::encoding::ResourceTypeMarker>::take_or_borrow(&mut self.receiver_client_end),
16968                ),
16969                encoder, offset, _depth
16970            )
16971        }
16972    }
16973    unsafe impl<
16974        T0: fidl::encoding::Encode<
16975                fidl::encoding::HandleType<
16976                    fidl::EventPair,
16977                    { fidl::ObjectType::EVENTPAIR.into_raw() },
16978                    2147483648,
16979                >,
16980                fidl::encoding::DefaultFuchsiaResourceDialect,
16981            >,
16982        T1: fidl::encoding::Encode<
16983                fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<DirReceiverMarker>>,
16984                fidl::encoding::DefaultFuchsiaResourceDialect,
16985            >,
16986    >
16987        fidl::encoding::Encode<
16988            CapabilitiesDirConnectorCreateRequest,
16989            fidl::encoding::DefaultFuchsiaResourceDialect,
16990        > for (T0, T1)
16991    {
16992        #[inline]
16993        unsafe fn encode(
16994            self,
16995            encoder: &mut fidl::encoding::Encoder<
16996                '_,
16997                fidl::encoding::DefaultFuchsiaResourceDialect,
16998            >,
16999            offset: usize,
17000            depth: fidl::encoding::Depth,
17001        ) -> fidl::Result<()> {
17002            encoder.debug_check_bounds::<CapabilitiesDirConnectorCreateRequest>(offset);
17003            // Zero out padding regions. There's no need to apply masks
17004            // because the unmasked parts will be overwritten by fields.
17005            // Write the fields.
17006            self.0.encode(encoder, offset + 0, depth)?;
17007            self.1.encode(encoder, offset + 4, depth)?;
17008            Ok(())
17009        }
17010    }
17011
17012    impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
17013        for CapabilitiesDirConnectorCreateRequest
17014    {
17015        #[inline(always)]
17016        fn new_empty() -> Self {
17017            Self {
17018                dir_connector: fidl::new_empty!(fidl::encoding::HandleType<fidl::EventPair, { fidl::ObjectType::EVENTPAIR.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect),
17019                receiver_client_end: fidl::new_empty!(
17020                    fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<DirReceiverMarker>>,
17021                    fidl::encoding::DefaultFuchsiaResourceDialect
17022                ),
17023            }
17024        }
17025
17026        #[inline]
17027        unsafe fn decode(
17028            &mut self,
17029            decoder: &mut fidl::encoding::Decoder<
17030                '_,
17031                fidl::encoding::DefaultFuchsiaResourceDialect,
17032            >,
17033            offset: usize,
17034            _depth: fidl::encoding::Depth,
17035        ) -> fidl::Result<()> {
17036            decoder.debug_check_bounds::<Self>(offset);
17037            // Verify that padding bytes are zero.
17038            fidl::decode!(fidl::encoding::HandleType<fidl::EventPair, { fidl::ObjectType::EVENTPAIR.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect, &mut self.dir_connector, decoder, offset + 0, _depth)?;
17039            fidl::decode!(
17040                fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<DirReceiverMarker>>,
17041                fidl::encoding::DefaultFuchsiaResourceDialect,
17042                &mut self.receiver_client_end,
17043                decoder,
17044                offset + 4,
17045                _depth
17046            )?;
17047            Ok(())
17048        }
17049    }
17050
17051    impl fidl::encoding::ResourceTypeMarker for CapabilitiesDirConnectorRouterCreateRequest {
17052        type Borrowed<'a> = &'a mut Self;
17053        fn take_or_borrow<'a>(
17054            value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
17055        ) -> Self::Borrowed<'a> {
17056            value
17057        }
17058    }
17059
17060    unsafe impl fidl::encoding::TypeMarker for CapabilitiesDirConnectorRouterCreateRequest {
17061        type Owned = Self;
17062
17063        #[inline(always)]
17064        fn inline_align(_context: fidl::encoding::Context) -> usize {
17065            4
17066        }
17067
17068        #[inline(always)]
17069        fn inline_size(_context: fidl::encoding::Context) -> usize {
17070            8
17071        }
17072    }
17073
17074    unsafe impl
17075        fidl::encoding::Encode<
17076            CapabilitiesDirConnectorRouterCreateRequest,
17077            fidl::encoding::DefaultFuchsiaResourceDialect,
17078        > for &mut CapabilitiesDirConnectorRouterCreateRequest
17079    {
17080        #[inline]
17081        unsafe fn encode(
17082            self,
17083            encoder: &mut fidl::encoding::Encoder<
17084                '_,
17085                fidl::encoding::DefaultFuchsiaResourceDialect,
17086            >,
17087            offset: usize,
17088            _depth: fidl::encoding::Depth,
17089        ) -> fidl::Result<()> {
17090            encoder.debug_check_bounds::<CapabilitiesDirConnectorRouterCreateRequest>(offset);
17091            // Delegate to tuple encoding.
17092            fidl::encoding::Encode::<CapabilitiesDirConnectorRouterCreateRequest, fidl::encoding::DefaultFuchsiaResourceDialect>::encode(
17093                (
17094                    <fidl::encoding::HandleType<fidl::EventPair, { fidl::ObjectType::EVENTPAIR.into_raw() }, 2147483648> as fidl::encoding::ResourceTypeMarker>::take_or_borrow(&mut self.router),
17095                    <fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<DirConnectorRouterMarker>> as fidl::encoding::ResourceTypeMarker>::take_or_borrow(&mut self.router_client_end),
17096                ),
17097                encoder, offset, _depth
17098            )
17099        }
17100    }
17101    unsafe impl<
17102        T0: fidl::encoding::Encode<
17103                fidl::encoding::HandleType<
17104                    fidl::EventPair,
17105                    { fidl::ObjectType::EVENTPAIR.into_raw() },
17106                    2147483648,
17107                >,
17108                fidl::encoding::DefaultFuchsiaResourceDialect,
17109            >,
17110        T1: fidl::encoding::Encode<
17111                fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<DirConnectorRouterMarker>>,
17112                fidl::encoding::DefaultFuchsiaResourceDialect,
17113            >,
17114    >
17115        fidl::encoding::Encode<
17116            CapabilitiesDirConnectorRouterCreateRequest,
17117            fidl::encoding::DefaultFuchsiaResourceDialect,
17118        > for (T0, T1)
17119    {
17120        #[inline]
17121        unsafe fn encode(
17122            self,
17123            encoder: &mut fidl::encoding::Encoder<
17124                '_,
17125                fidl::encoding::DefaultFuchsiaResourceDialect,
17126            >,
17127            offset: usize,
17128            depth: fidl::encoding::Depth,
17129        ) -> fidl::Result<()> {
17130            encoder.debug_check_bounds::<CapabilitiesDirConnectorRouterCreateRequest>(offset);
17131            // Zero out padding regions. There's no need to apply masks
17132            // because the unmasked parts will be overwritten by fields.
17133            // Write the fields.
17134            self.0.encode(encoder, offset + 0, depth)?;
17135            self.1.encode(encoder, offset + 4, depth)?;
17136            Ok(())
17137        }
17138    }
17139
17140    impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
17141        for CapabilitiesDirConnectorRouterCreateRequest
17142    {
17143        #[inline(always)]
17144        fn new_empty() -> Self {
17145            Self {
17146                router: fidl::new_empty!(fidl::encoding::HandleType<fidl::EventPair, { fidl::ObjectType::EVENTPAIR.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect),
17147                router_client_end: fidl::new_empty!(
17148                    fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<DirConnectorRouterMarker>>,
17149                    fidl::encoding::DefaultFuchsiaResourceDialect
17150                ),
17151            }
17152        }
17153
17154        #[inline]
17155        unsafe fn decode(
17156            &mut self,
17157            decoder: &mut fidl::encoding::Decoder<
17158                '_,
17159                fidl::encoding::DefaultFuchsiaResourceDialect,
17160            >,
17161            offset: usize,
17162            _depth: fidl::encoding::Depth,
17163        ) -> fidl::Result<()> {
17164            decoder.debug_check_bounds::<Self>(offset);
17165            // Verify that padding bytes are zero.
17166            fidl::decode!(fidl::encoding::HandleType<fidl::EventPair, { fidl::ObjectType::EVENTPAIR.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect, &mut self.router, decoder, offset + 0, _depth)?;
17167            fidl::decode!(
17168                fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<DirConnectorRouterMarker>>,
17169                fidl::encoding::DefaultFuchsiaResourceDialect,
17170                &mut self.router_client_end,
17171                decoder,
17172                offset + 4,
17173                _depth
17174            )?;
17175            Ok(())
17176        }
17177    }
17178
17179    impl fidl::encoding::ResourceTypeMarker for CapabilitiesDirConnectorRouterRouteRequest {
17180        type Borrowed<'a> = &'a mut Self;
17181        fn take_or_borrow<'a>(
17182            value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
17183        ) -> Self::Borrowed<'a> {
17184            value
17185        }
17186    }
17187
17188    unsafe impl fidl::encoding::TypeMarker for CapabilitiesDirConnectorRouterRouteRequest {
17189        type Owned = Self;
17190
17191        #[inline(always)]
17192        fn inline_align(_context: fidl::encoding::Context) -> usize {
17193            8
17194        }
17195
17196        #[inline(always)]
17197        fn inline_size(_context: fidl::encoding::Context) -> usize {
17198            32
17199        }
17200    }
17201
17202    unsafe impl
17203        fidl::encoding::Encode<
17204            CapabilitiesDirConnectorRouterRouteRequest,
17205            fidl::encoding::DefaultFuchsiaResourceDialect,
17206        > for &mut CapabilitiesDirConnectorRouterRouteRequest
17207    {
17208        #[inline]
17209        unsafe fn encode(
17210            self,
17211            encoder: &mut fidl::encoding::Encoder<
17212                '_,
17213                fidl::encoding::DefaultFuchsiaResourceDialect,
17214            >,
17215            offset: usize,
17216            _depth: fidl::encoding::Depth,
17217        ) -> fidl::Result<()> {
17218            encoder.debug_check_bounds::<CapabilitiesDirConnectorRouterRouteRequest>(offset);
17219            // Delegate to tuple encoding.
17220            fidl::encoding::Encode::<
17221                CapabilitiesDirConnectorRouterRouteRequest,
17222                fidl::encoding::DefaultFuchsiaResourceDialect,
17223            >::encode(
17224                (
17225                    <fidl::encoding::HandleType<
17226                        fidl::EventPair,
17227                        { fidl::ObjectType::EVENTPAIR.into_raw() },
17228                        2147483648,
17229                    > as fidl::encoding::ResourceTypeMarker>::take_or_borrow(
17230                        &mut self.router
17231                    ),
17232                    <RouteRequest as fidl::encoding::ResourceTypeMarker>::take_or_borrow(
17233                        &mut self.request,
17234                    ),
17235                    <fidl::encoding::HandleType<
17236                        fidl::EventPair,
17237                        { fidl::ObjectType::EVENTPAIR.into_raw() },
17238                        2147483648,
17239                    > as fidl::encoding::ResourceTypeMarker>::take_or_borrow(
17240                        &mut self.instance_token,
17241                    ),
17242                    <fidl::encoding::HandleType<
17243                        fidl::EventPair,
17244                        { fidl::ObjectType::EVENTPAIR.into_raw() },
17245                        2147483648,
17246                    > as fidl::encoding::ResourceTypeMarker>::take_or_borrow(
17247                        &mut self.dir_connector,
17248                    ),
17249                ),
17250                encoder,
17251                offset,
17252                _depth,
17253            )
17254        }
17255    }
17256    unsafe impl<
17257        T0: fidl::encoding::Encode<
17258                fidl::encoding::HandleType<
17259                    fidl::EventPair,
17260                    { fidl::ObjectType::EVENTPAIR.into_raw() },
17261                    2147483648,
17262                >,
17263                fidl::encoding::DefaultFuchsiaResourceDialect,
17264            >,
17265        T1: fidl::encoding::Encode<RouteRequest, fidl::encoding::DefaultFuchsiaResourceDialect>,
17266        T2: fidl::encoding::Encode<
17267                fidl::encoding::HandleType<
17268                    fidl::EventPair,
17269                    { fidl::ObjectType::EVENTPAIR.into_raw() },
17270                    2147483648,
17271                >,
17272                fidl::encoding::DefaultFuchsiaResourceDialect,
17273            >,
17274        T3: fidl::encoding::Encode<
17275                fidl::encoding::HandleType<
17276                    fidl::EventPair,
17277                    { fidl::ObjectType::EVENTPAIR.into_raw() },
17278                    2147483648,
17279                >,
17280                fidl::encoding::DefaultFuchsiaResourceDialect,
17281            >,
17282    >
17283        fidl::encoding::Encode<
17284            CapabilitiesDirConnectorRouterRouteRequest,
17285            fidl::encoding::DefaultFuchsiaResourceDialect,
17286        > for (T0, T1, T2, T3)
17287    {
17288        #[inline]
17289        unsafe fn encode(
17290            self,
17291            encoder: &mut fidl::encoding::Encoder<
17292                '_,
17293                fidl::encoding::DefaultFuchsiaResourceDialect,
17294            >,
17295            offset: usize,
17296            depth: fidl::encoding::Depth,
17297        ) -> fidl::Result<()> {
17298            encoder.debug_check_bounds::<CapabilitiesDirConnectorRouterRouteRequest>(offset);
17299            // Zero out padding regions. There's no need to apply masks
17300            // because the unmasked parts will be overwritten by fields.
17301            unsafe {
17302                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(0);
17303                (ptr as *mut u64).write_unaligned(0);
17304            }
17305            // Write the fields.
17306            self.0.encode(encoder, offset + 0, depth)?;
17307            self.1.encode(encoder, offset + 8, depth)?;
17308            self.2.encode(encoder, offset + 24, depth)?;
17309            self.3.encode(encoder, offset + 28, depth)?;
17310            Ok(())
17311        }
17312    }
17313
17314    impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
17315        for CapabilitiesDirConnectorRouterRouteRequest
17316    {
17317        #[inline(always)]
17318        fn new_empty() -> Self {
17319            Self {
17320                router: fidl::new_empty!(fidl::encoding::HandleType<fidl::EventPair, { fidl::ObjectType::EVENTPAIR.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect),
17321                request: fidl::new_empty!(
17322                    RouteRequest,
17323                    fidl::encoding::DefaultFuchsiaResourceDialect
17324                ),
17325                instance_token: fidl::new_empty!(fidl::encoding::HandleType<fidl::EventPair, { fidl::ObjectType::EVENTPAIR.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect),
17326                dir_connector: fidl::new_empty!(fidl::encoding::HandleType<fidl::EventPair, { fidl::ObjectType::EVENTPAIR.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect),
17327            }
17328        }
17329
17330        #[inline]
17331        unsafe fn decode(
17332            &mut self,
17333            decoder: &mut fidl::encoding::Decoder<
17334                '_,
17335                fidl::encoding::DefaultFuchsiaResourceDialect,
17336            >,
17337            offset: usize,
17338            _depth: fidl::encoding::Depth,
17339        ) -> fidl::Result<()> {
17340            decoder.debug_check_bounds::<Self>(offset);
17341            // Verify that padding bytes are zero.
17342            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(0) };
17343            let padval = unsafe { (ptr as *const u64).read_unaligned() };
17344            let mask = 0xffffffff00000000u64;
17345            let maskedval = padval & mask;
17346            if maskedval != 0 {
17347                return Err(fidl::Error::NonZeroPadding {
17348                    padding_start: offset + 0 + ((mask as u64).trailing_zeros() / 8) as usize,
17349                });
17350            }
17351            fidl::decode!(fidl::encoding::HandleType<fidl::EventPair, { fidl::ObjectType::EVENTPAIR.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect, &mut self.router, decoder, offset + 0, _depth)?;
17352            fidl::decode!(
17353                RouteRequest,
17354                fidl::encoding::DefaultFuchsiaResourceDialect,
17355                &mut self.request,
17356                decoder,
17357                offset + 8,
17358                _depth
17359            )?;
17360            fidl::decode!(fidl::encoding::HandleType<fidl::EventPair, { fidl::ObjectType::EVENTPAIR.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect, &mut self.instance_token, decoder, offset + 24, _depth)?;
17361            fidl::decode!(fidl::encoding::HandleType<fidl::EventPair, { fidl::ObjectType::EVENTPAIR.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect, &mut self.dir_connector, decoder, offset + 28, _depth)?;
17362            Ok(())
17363        }
17364    }
17365
17366    impl fidl::encoding::ResourceTypeMarker for CapabilitiesInstanceTokenCreateRequest {
17367        type Borrowed<'a> = &'a mut Self;
17368        fn take_or_borrow<'a>(
17369            value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
17370        ) -> Self::Borrowed<'a> {
17371            value
17372        }
17373    }
17374
17375    unsafe impl fidl::encoding::TypeMarker for CapabilitiesInstanceTokenCreateRequest {
17376        type Owned = Self;
17377
17378        #[inline(always)]
17379        fn inline_align(_context: fidl::encoding::Context) -> usize {
17380            4
17381        }
17382
17383        #[inline(always)]
17384        fn inline_size(_context: fidl::encoding::Context) -> usize {
17385            4
17386        }
17387    }
17388
17389    unsafe impl
17390        fidl::encoding::Encode<
17391            CapabilitiesInstanceTokenCreateRequest,
17392            fidl::encoding::DefaultFuchsiaResourceDialect,
17393        > for &mut CapabilitiesInstanceTokenCreateRequest
17394    {
17395        #[inline]
17396        unsafe fn encode(
17397            self,
17398            encoder: &mut fidl::encoding::Encoder<
17399                '_,
17400                fidl::encoding::DefaultFuchsiaResourceDialect,
17401            >,
17402            offset: usize,
17403            _depth: fidl::encoding::Depth,
17404        ) -> fidl::Result<()> {
17405            encoder.debug_check_bounds::<CapabilitiesInstanceTokenCreateRequest>(offset);
17406            // Delegate to tuple encoding.
17407            fidl::encoding::Encode::<
17408                CapabilitiesInstanceTokenCreateRequest,
17409                fidl::encoding::DefaultFuchsiaResourceDialect,
17410            >::encode(
17411                (<fidl::encoding::HandleType<
17412                    fidl::EventPair,
17413                    { fidl::ObjectType::EVENTPAIR.into_raw() },
17414                    2147483648,
17415                > as fidl::encoding::ResourceTypeMarker>::take_or_borrow(
17416                    &mut self.instance_token
17417                ),),
17418                encoder,
17419                offset,
17420                _depth,
17421            )
17422        }
17423    }
17424    unsafe impl<
17425        T0: fidl::encoding::Encode<
17426                fidl::encoding::HandleType<
17427                    fidl::EventPair,
17428                    { fidl::ObjectType::EVENTPAIR.into_raw() },
17429                    2147483648,
17430                >,
17431                fidl::encoding::DefaultFuchsiaResourceDialect,
17432            >,
17433    >
17434        fidl::encoding::Encode<
17435            CapabilitiesInstanceTokenCreateRequest,
17436            fidl::encoding::DefaultFuchsiaResourceDialect,
17437        > for (T0,)
17438    {
17439        #[inline]
17440        unsafe fn encode(
17441            self,
17442            encoder: &mut fidl::encoding::Encoder<
17443                '_,
17444                fidl::encoding::DefaultFuchsiaResourceDialect,
17445            >,
17446            offset: usize,
17447            depth: fidl::encoding::Depth,
17448        ) -> fidl::Result<()> {
17449            encoder.debug_check_bounds::<CapabilitiesInstanceTokenCreateRequest>(offset);
17450            // Zero out padding regions. There's no need to apply masks
17451            // because the unmasked parts will be overwritten by fields.
17452            // Write the fields.
17453            self.0.encode(encoder, offset + 0, depth)?;
17454            Ok(())
17455        }
17456    }
17457
17458    impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
17459        for CapabilitiesInstanceTokenCreateRequest
17460    {
17461        #[inline(always)]
17462        fn new_empty() -> Self {
17463            Self {
17464                instance_token: fidl::new_empty!(fidl::encoding::HandleType<fidl::EventPair, { fidl::ObjectType::EVENTPAIR.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect),
17465            }
17466        }
17467
17468        #[inline]
17469        unsafe fn decode(
17470            &mut self,
17471            decoder: &mut fidl::encoding::Decoder<
17472                '_,
17473                fidl::encoding::DefaultFuchsiaResourceDialect,
17474            >,
17475            offset: usize,
17476            _depth: fidl::encoding::Depth,
17477        ) -> fidl::Result<()> {
17478            decoder.debug_check_bounds::<Self>(offset);
17479            // Verify that padding bytes are zero.
17480            fidl::decode!(fidl::encoding::HandleType<fidl::EventPair, { fidl::ObjectType::EVENTPAIR.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect, &mut self.instance_token, decoder, offset + 0, _depth)?;
17481            Ok(())
17482        }
17483    }
17484
17485    impl fidl::encoding::ResourceTypeMarker for CapabilitiesDictionaryGetResponse {
17486        type Borrowed<'a> = &'a mut Self;
17487        fn take_or_borrow<'a>(
17488            value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
17489        ) -> Self::Borrowed<'a> {
17490            value
17491        }
17492    }
17493
17494    unsafe impl fidl::encoding::TypeMarker for CapabilitiesDictionaryGetResponse {
17495        type Owned = Self;
17496
17497        #[inline(always)]
17498        fn inline_align(_context: fidl::encoding::Context) -> usize {
17499            4
17500        }
17501
17502        #[inline(always)]
17503        fn inline_size(_context: fidl::encoding::Context) -> usize {
17504            4
17505        }
17506    }
17507
17508    unsafe impl
17509        fidl::encoding::Encode<
17510            CapabilitiesDictionaryGetResponse,
17511            fidl::encoding::DefaultFuchsiaResourceDialect,
17512        > for &mut CapabilitiesDictionaryGetResponse
17513    {
17514        #[inline]
17515        unsafe fn encode(
17516            self,
17517            encoder: &mut fidl::encoding::Encoder<
17518                '_,
17519                fidl::encoding::DefaultFuchsiaResourceDialect,
17520            >,
17521            offset: usize,
17522            _depth: fidl::encoding::Depth,
17523        ) -> fidl::Result<()> {
17524            encoder.debug_check_bounds::<CapabilitiesDictionaryGetResponse>(offset);
17525            // Delegate to tuple encoding.
17526            fidl::encoding::Encode::<
17527                CapabilitiesDictionaryGetResponse,
17528                fidl::encoding::DefaultFuchsiaResourceDialect,
17529            >::encode(
17530                (<CapabilityType as fidl::encoding::ValueTypeMarker>::borrow(
17531                    &self.capability_type,
17532                ),),
17533                encoder,
17534                offset,
17535                _depth,
17536            )
17537        }
17538    }
17539    unsafe impl<
17540        T0: fidl::encoding::Encode<CapabilityType, fidl::encoding::DefaultFuchsiaResourceDialect>,
17541    >
17542        fidl::encoding::Encode<
17543            CapabilitiesDictionaryGetResponse,
17544            fidl::encoding::DefaultFuchsiaResourceDialect,
17545        > for (T0,)
17546    {
17547        #[inline]
17548        unsafe fn encode(
17549            self,
17550            encoder: &mut fidl::encoding::Encoder<
17551                '_,
17552                fidl::encoding::DefaultFuchsiaResourceDialect,
17553            >,
17554            offset: usize,
17555            depth: fidl::encoding::Depth,
17556        ) -> fidl::Result<()> {
17557            encoder.debug_check_bounds::<CapabilitiesDictionaryGetResponse>(offset);
17558            // Zero out padding regions. There's no need to apply masks
17559            // because the unmasked parts will be overwritten by fields.
17560            // Write the fields.
17561            self.0.encode(encoder, offset + 0, depth)?;
17562            Ok(())
17563        }
17564    }
17565
17566    impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
17567        for CapabilitiesDictionaryGetResponse
17568    {
17569        #[inline(always)]
17570        fn new_empty() -> Self {
17571            Self {
17572                capability_type: fidl::new_empty!(
17573                    CapabilityType,
17574                    fidl::encoding::DefaultFuchsiaResourceDialect
17575                ),
17576            }
17577        }
17578
17579        #[inline]
17580        unsafe fn decode(
17581            &mut self,
17582            decoder: &mut fidl::encoding::Decoder<
17583                '_,
17584                fidl::encoding::DefaultFuchsiaResourceDialect,
17585            >,
17586            offset: usize,
17587            _depth: fidl::encoding::Depth,
17588        ) -> fidl::Result<()> {
17589            decoder.debug_check_bounds::<Self>(offset);
17590            // Verify that padding bytes are zero.
17591            fidl::decode!(
17592                CapabilityType,
17593                fidl::encoding::DefaultFuchsiaResourceDialect,
17594                &mut self.capability_type,
17595                decoder,
17596                offset + 0,
17597                _depth
17598            )?;
17599            Ok(())
17600        }
17601    }
17602
17603    impl fidl::encoding::ResourceTypeMarker for CapabilitiesDictionaryRemoveResponse {
17604        type Borrowed<'a> = &'a mut Self;
17605        fn take_or_borrow<'a>(
17606            value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
17607        ) -> Self::Borrowed<'a> {
17608            value
17609        }
17610    }
17611
17612    unsafe impl fidl::encoding::TypeMarker for CapabilitiesDictionaryRemoveResponse {
17613        type Owned = Self;
17614
17615        #[inline(always)]
17616        fn inline_align(_context: fidl::encoding::Context) -> usize {
17617            4
17618        }
17619
17620        #[inline(always)]
17621        fn inline_size(_context: fidl::encoding::Context) -> usize {
17622            4
17623        }
17624    }
17625
17626    unsafe impl
17627        fidl::encoding::Encode<
17628            CapabilitiesDictionaryRemoveResponse,
17629            fidl::encoding::DefaultFuchsiaResourceDialect,
17630        > for &mut CapabilitiesDictionaryRemoveResponse
17631    {
17632        #[inline]
17633        unsafe fn encode(
17634            self,
17635            encoder: &mut fidl::encoding::Encoder<
17636                '_,
17637                fidl::encoding::DefaultFuchsiaResourceDialect,
17638            >,
17639            offset: usize,
17640            _depth: fidl::encoding::Depth,
17641        ) -> fidl::Result<()> {
17642            encoder.debug_check_bounds::<CapabilitiesDictionaryRemoveResponse>(offset);
17643            // Delegate to tuple encoding.
17644            fidl::encoding::Encode::<
17645                CapabilitiesDictionaryRemoveResponse,
17646                fidl::encoding::DefaultFuchsiaResourceDialect,
17647            >::encode(
17648                (<CapabilityType as fidl::encoding::ValueTypeMarker>::borrow(
17649                    &self.capability_type,
17650                ),),
17651                encoder,
17652                offset,
17653                _depth,
17654            )
17655        }
17656    }
17657    unsafe impl<
17658        T0: fidl::encoding::Encode<CapabilityType, fidl::encoding::DefaultFuchsiaResourceDialect>,
17659    >
17660        fidl::encoding::Encode<
17661            CapabilitiesDictionaryRemoveResponse,
17662            fidl::encoding::DefaultFuchsiaResourceDialect,
17663        > for (T0,)
17664    {
17665        #[inline]
17666        unsafe fn encode(
17667            self,
17668            encoder: &mut fidl::encoding::Encoder<
17669                '_,
17670                fidl::encoding::DefaultFuchsiaResourceDialect,
17671            >,
17672            offset: usize,
17673            depth: fidl::encoding::Depth,
17674        ) -> fidl::Result<()> {
17675            encoder.debug_check_bounds::<CapabilitiesDictionaryRemoveResponse>(offset);
17676            // Zero out padding regions. There's no need to apply masks
17677            // because the unmasked parts will be overwritten by fields.
17678            // Write the fields.
17679            self.0.encode(encoder, offset + 0, depth)?;
17680            Ok(())
17681        }
17682    }
17683
17684    impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
17685        for CapabilitiesDictionaryRemoveResponse
17686    {
17687        #[inline(always)]
17688        fn new_empty() -> Self {
17689            Self {
17690                capability_type: fidl::new_empty!(
17691                    CapabilityType,
17692                    fidl::encoding::DefaultFuchsiaResourceDialect
17693                ),
17694            }
17695        }
17696
17697        #[inline]
17698        unsafe fn decode(
17699            &mut self,
17700            decoder: &mut fidl::encoding::Decoder<
17701                '_,
17702                fidl::encoding::DefaultFuchsiaResourceDialect,
17703            >,
17704            offset: usize,
17705            _depth: fidl::encoding::Depth,
17706        ) -> fidl::Result<()> {
17707            decoder.debug_check_bounds::<Self>(offset);
17708            // Verify that padding bytes are zero.
17709            fidl::decode!(
17710                CapabilityType,
17711                fidl::encoding::DefaultFuchsiaResourceDialect,
17712                &mut self.capability_type,
17713                decoder,
17714                offset + 0,
17715                _depth
17716            )?;
17717            Ok(())
17718        }
17719    }
17720
17721    impl fidl::encoding::ResourceTypeMarker for CapabilityFactoryCreateConnectorRequest {
17722        type Borrowed<'a> = &'a mut Self;
17723        fn take_or_borrow<'a>(
17724            value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
17725        ) -> Self::Borrowed<'a> {
17726            value
17727        }
17728    }
17729
17730    unsafe impl fidl::encoding::TypeMarker for CapabilityFactoryCreateConnectorRequest {
17731        type Owned = Self;
17732
17733        #[inline(always)]
17734        fn inline_align(_context: fidl::encoding::Context) -> usize {
17735            4
17736        }
17737
17738        #[inline(always)]
17739        fn inline_size(_context: fidl::encoding::Context) -> usize {
17740            8
17741        }
17742    }
17743
17744    unsafe impl
17745        fidl::encoding::Encode<
17746            CapabilityFactoryCreateConnectorRequest,
17747            fidl::encoding::DefaultFuchsiaResourceDialect,
17748        > for &mut CapabilityFactoryCreateConnectorRequest
17749    {
17750        #[inline]
17751        unsafe fn encode(
17752            self,
17753            encoder: &mut fidl::encoding::Encoder<
17754                '_,
17755                fidl::encoding::DefaultFuchsiaResourceDialect,
17756            >,
17757            offset: usize,
17758            _depth: fidl::encoding::Depth,
17759        ) -> fidl::Result<()> {
17760            encoder.debug_check_bounds::<CapabilityFactoryCreateConnectorRequest>(offset);
17761            // Delegate to tuple encoding.
17762            fidl::encoding::Encode::<CapabilityFactoryCreateConnectorRequest, fidl::encoding::DefaultFuchsiaResourceDialect>::encode(
17763                (
17764                    <fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<ReceiverMarker>> as fidl::encoding::ResourceTypeMarker>::take_or_borrow(&mut self.receiver_client_end),
17765                    <fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<ConnectorMarker>> as fidl::encoding::ResourceTypeMarker>::take_or_borrow(&mut self.connector_server_end),
17766                ),
17767                encoder, offset, _depth
17768            )
17769        }
17770    }
17771    unsafe impl<
17772        T0: fidl::encoding::Encode<
17773                fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<ReceiverMarker>>,
17774                fidl::encoding::DefaultFuchsiaResourceDialect,
17775            >,
17776        T1: fidl::encoding::Encode<
17777                fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<ConnectorMarker>>,
17778                fidl::encoding::DefaultFuchsiaResourceDialect,
17779            >,
17780    >
17781        fidl::encoding::Encode<
17782            CapabilityFactoryCreateConnectorRequest,
17783            fidl::encoding::DefaultFuchsiaResourceDialect,
17784        > for (T0, T1)
17785    {
17786        #[inline]
17787        unsafe fn encode(
17788            self,
17789            encoder: &mut fidl::encoding::Encoder<
17790                '_,
17791                fidl::encoding::DefaultFuchsiaResourceDialect,
17792            >,
17793            offset: usize,
17794            depth: fidl::encoding::Depth,
17795        ) -> fidl::Result<()> {
17796            encoder.debug_check_bounds::<CapabilityFactoryCreateConnectorRequest>(offset);
17797            // Zero out padding regions. There's no need to apply masks
17798            // because the unmasked parts will be overwritten by fields.
17799            // Write the fields.
17800            self.0.encode(encoder, offset + 0, depth)?;
17801            self.1.encode(encoder, offset + 4, depth)?;
17802            Ok(())
17803        }
17804    }
17805
17806    impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
17807        for CapabilityFactoryCreateConnectorRequest
17808    {
17809        #[inline(always)]
17810        fn new_empty() -> Self {
17811            Self {
17812                receiver_client_end: fidl::new_empty!(
17813                    fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<ReceiverMarker>>,
17814                    fidl::encoding::DefaultFuchsiaResourceDialect
17815                ),
17816                connector_server_end: fidl::new_empty!(
17817                    fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<ConnectorMarker>>,
17818                    fidl::encoding::DefaultFuchsiaResourceDialect
17819                ),
17820            }
17821        }
17822
17823        #[inline]
17824        unsafe fn decode(
17825            &mut self,
17826            decoder: &mut fidl::encoding::Decoder<
17827                '_,
17828                fidl::encoding::DefaultFuchsiaResourceDialect,
17829            >,
17830            offset: usize,
17831            _depth: fidl::encoding::Depth,
17832        ) -> fidl::Result<()> {
17833            decoder.debug_check_bounds::<Self>(offset);
17834            // Verify that padding bytes are zero.
17835            fidl::decode!(
17836                fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<ReceiverMarker>>,
17837                fidl::encoding::DefaultFuchsiaResourceDialect,
17838                &mut self.receiver_client_end,
17839                decoder,
17840                offset + 0,
17841                _depth
17842            )?;
17843            fidl::decode!(
17844                fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<ConnectorMarker>>,
17845                fidl::encoding::DefaultFuchsiaResourceDialect,
17846                &mut self.connector_server_end,
17847                decoder,
17848                offset + 4,
17849                _depth
17850            )?;
17851            Ok(())
17852        }
17853    }
17854
17855    impl fidl::encoding::ResourceTypeMarker for CapabilityFactoryCreateConnectorRouterRequest {
17856        type Borrowed<'a> = &'a mut Self;
17857        fn take_or_borrow<'a>(
17858            value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
17859        ) -> Self::Borrowed<'a> {
17860            value
17861        }
17862    }
17863
17864    unsafe impl fidl::encoding::TypeMarker for CapabilityFactoryCreateConnectorRouterRequest {
17865        type Owned = Self;
17866
17867        #[inline(always)]
17868        fn inline_align(_context: fidl::encoding::Context) -> usize {
17869            4
17870        }
17871
17872        #[inline(always)]
17873        fn inline_size(_context: fidl::encoding::Context) -> usize {
17874            8
17875        }
17876    }
17877
17878    unsafe impl
17879        fidl::encoding::Encode<
17880            CapabilityFactoryCreateConnectorRouterRequest,
17881            fidl::encoding::DefaultFuchsiaResourceDialect,
17882        > for &mut CapabilityFactoryCreateConnectorRouterRequest
17883    {
17884        #[inline]
17885        unsafe fn encode(
17886            self,
17887            encoder: &mut fidl::encoding::Encoder<
17888                '_,
17889                fidl::encoding::DefaultFuchsiaResourceDialect,
17890            >,
17891            offset: usize,
17892            _depth: fidl::encoding::Depth,
17893        ) -> fidl::Result<()> {
17894            encoder.debug_check_bounds::<CapabilityFactoryCreateConnectorRouterRequest>(offset);
17895            // Delegate to tuple encoding.
17896            fidl::encoding::Encode::<
17897                CapabilityFactoryCreateConnectorRouterRequest,
17898                fidl::encoding::DefaultFuchsiaResourceDialect,
17899            >::encode(
17900                (
17901                    <fidl::encoding::Endpoint<
17902                        fidl::endpoints::ClientEnd<ConnectorRouterDeprecatedMarker>,
17903                    > as fidl::encoding::ResourceTypeMarker>::take_or_borrow(
17904                        &mut self.router_client_end,
17905                    ),
17906                    <fidl::encoding::Endpoint<
17907                        fidl::endpoints::ServerEnd<ConnectorRouterDeprecatedMarker>,
17908                    > as fidl::encoding::ResourceTypeMarker>::take_or_borrow(
17909                        &mut self.router_server_end,
17910                    ),
17911                ),
17912                encoder,
17913                offset,
17914                _depth,
17915            )
17916        }
17917    }
17918    unsafe impl<
17919        T0: fidl::encoding::Encode<
17920                fidl::encoding::Endpoint<
17921                    fidl::endpoints::ClientEnd<ConnectorRouterDeprecatedMarker>,
17922                >,
17923                fidl::encoding::DefaultFuchsiaResourceDialect,
17924            >,
17925        T1: fidl::encoding::Encode<
17926                fidl::encoding::Endpoint<
17927                    fidl::endpoints::ServerEnd<ConnectorRouterDeprecatedMarker>,
17928                >,
17929                fidl::encoding::DefaultFuchsiaResourceDialect,
17930            >,
17931    >
17932        fidl::encoding::Encode<
17933            CapabilityFactoryCreateConnectorRouterRequest,
17934            fidl::encoding::DefaultFuchsiaResourceDialect,
17935        > for (T0, T1)
17936    {
17937        #[inline]
17938        unsafe fn encode(
17939            self,
17940            encoder: &mut fidl::encoding::Encoder<
17941                '_,
17942                fidl::encoding::DefaultFuchsiaResourceDialect,
17943            >,
17944            offset: usize,
17945            depth: fidl::encoding::Depth,
17946        ) -> fidl::Result<()> {
17947            encoder.debug_check_bounds::<CapabilityFactoryCreateConnectorRouterRequest>(offset);
17948            // Zero out padding regions. There's no need to apply masks
17949            // because the unmasked parts will be overwritten by fields.
17950            // Write the fields.
17951            self.0.encode(encoder, offset + 0, depth)?;
17952            self.1.encode(encoder, offset + 4, depth)?;
17953            Ok(())
17954        }
17955    }
17956
17957    impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
17958        for CapabilityFactoryCreateConnectorRouterRequest
17959    {
17960        #[inline(always)]
17961        fn new_empty() -> Self {
17962            Self {
17963                router_client_end: fidl::new_empty!(
17964                    fidl::encoding::Endpoint<
17965                        fidl::endpoints::ClientEnd<ConnectorRouterDeprecatedMarker>,
17966                    >,
17967                    fidl::encoding::DefaultFuchsiaResourceDialect
17968                ),
17969                router_server_end: fidl::new_empty!(
17970                    fidl::encoding::Endpoint<
17971                        fidl::endpoints::ServerEnd<ConnectorRouterDeprecatedMarker>,
17972                    >,
17973                    fidl::encoding::DefaultFuchsiaResourceDialect
17974                ),
17975            }
17976        }
17977
17978        #[inline]
17979        unsafe fn decode(
17980            &mut self,
17981            decoder: &mut fidl::encoding::Decoder<
17982                '_,
17983                fidl::encoding::DefaultFuchsiaResourceDialect,
17984            >,
17985            offset: usize,
17986            _depth: fidl::encoding::Depth,
17987        ) -> fidl::Result<()> {
17988            decoder.debug_check_bounds::<Self>(offset);
17989            // Verify that padding bytes are zero.
17990            fidl::decode!(
17991                fidl::encoding::Endpoint<
17992                    fidl::endpoints::ClientEnd<ConnectorRouterDeprecatedMarker>,
17993                >,
17994                fidl::encoding::DefaultFuchsiaResourceDialect,
17995                &mut self.router_client_end,
17996                decoder,
17997                offset + 0,
17998                _depth
17999            )?;
18000            fidl::decode!(
18001                fidl::encoding::Endpoint<
18002                    fidl::endpoints::ServerEnd<ConnectorRouterDeprecatedMarker>,
18003                >,
18004                fidl::encoding::DefaultFuchsiaResourceDialect,
18005                &mut self.router_server_end,
18006                decoder,
18007                offset + 4,
18008                _depth
18009            )?;
18010            Ok(())
18011        }
18012    }
18013
18014    impl fidl::encoding::ResourceTypeMarker for CapabilityFactoryCreateDataRouterRequest {
18015        type Borrowed<'a> = &'a mut Self;
18016        fn take_or_borrow<'a>(
18017            value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
18018        ) -> Self::Borrowed<'a> {
18019            value
18020        }
18021    }
18022
18023    unsafe impl fidl::encoding::TypeMarker for CapabilityFactoryCreateDataRouterRequest {
18024        type Owned = Self;
18025
18026        #[inline(always)]
18027        fn inline_align(_context: fidl::encoding::Context) -> usize {
18028            4
18029        }
18030
18031        #[inline(always)]
18032        fn inline_size(_context: fidl::encoding::Context) -> usize {
18033            8
18034        }
18035    }
18036
18037    unsafe impl
18038        fidl::encoding::Encode<
18039            CapabilityFactoryCreateDataRouterRequest,
18040            fidl::encoding::DefaultFuchsiaResourceDialect,
18041        > for &mut CapabilityFactoryCreateDataRouterRequest
18042    {
18043        #[inline]
18044        unsafe fn encode(
18045            self,
18046            encoder: &mut fidl::encoding::Encoder<
18047                '_,
18048                fidl::encoding::DefaultFuchsiaResourceDialect,
18049            >,
18050            offset: usize,
18051            _depth: fidl::encoding::Depth,
18052        ) -> fidl::Result<()> {
18053            encoder.debug_check_bounds::<CapabilityFactoryCreateDataRouterRequest>(offset);
18054            // Delegate to tuple encoding.
18055            fidl::encoding::Encode::<
18056                CapabilityFactoryCreateDataRouterRequest,
18057                fidl::encoding::DefaultFuchsiaResourceDialect,
18058            >::encode(
18059                (
18060                    <fidl::encoding::Endpoint<
18061                        fidl::endpoints::ClientEnd<DataRouterDeprecatedMarker>,
18062                    > as fidl::encoding::ResourceTypeMarker>::take_or_borrow(
18063                        &mut self.router_client_end,
18064                    ),
18065                    <fidl::encoding::Endpoint<
18066                        fidl::endpoints::ServerEnd<DataRouterDeprecatedMarker>,
18067                    > as fidl::encoding::ResourceTypeMarker>::take_or_borrow(
18068                        &mut self.router_server_end,
18069                    ),
18070                ),
18071                encoder,
18072                offset,
18073                _depth,
18074            )
18075        }
18076    }
18077    unsafe impl<
18078        T0: fidl::encoding::Encode<
18079                fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<DataRouterDeprecatedMarker>>,
18080                fidl::encoding::DefaultFuchsiaResourceDialect,
18081            >,
18082        T1: fidl::encoding::Encode<
18083                fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<DataRouterDeprecatedMarker>>,
18084                fidl::encoding::DefaultFuchsiaResourceDialect,
18085            >,
18086    >
18087        fidl::encoding::Encode<
18088            CapabilityFactoryCreateDataRouterRequest,
18089            fidl::encoding::DefaultFuchsiaResourceDialect,
18090        > for (T0, T1)
18091    {
18092        #[inline]
18093        unsafe fn encode(
18094            self,
18095            encoder: &mut fidl::encoding::Encoder<
18096                '_,
18097                fidl::encoding::DefaultFuchsiaResourceDialect,
18098            >,
18099            offset: usize,
18100            depth: fidl::encoding::Depth,
18101        ) -> fidl::Result<()> {
18102            encoder.debug_check_bounds::<CapabilityFactoryCreateDataRouterRequest>(offset);
18103            // Zero out padding regions. There's no need to apply masks
18104            // because the unmasked parts will be overwritten by fields.
18105            // Write the fields.
18106            self.0.encode(encoder, offset + 0, depth)?;
18107            self.1.encode(encoder, offset + 4, depth)?;
18108            Ok(())
18109        }
18110    }
18111
18112    impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
18113        for CapabilityFactoryCreateDataRouterRequest
18114    {
18115        #[inline(always)]
18116        fn new_empty() -> Self {
18117            Self {
18118                router_client_end: fidl::new_empty!(
18119                    fidl::encoding::Endpoint<
18120                        fidl::endpoints::ClientEnd<DataRouterDeprecatedMarker>,
18121                    >,
18122                    fidl::encoding::DefaultFuchsiaResourceDialect
18123                ),
18124                router_server_end: fidl::new_empty!(
18125                    fidl::encoding::Endpoint<
18126                        fidl::endpoints::ServerEnd<DataRouterDeprecatedMarker>,
18127                    >,
18128                    fidl::encoding::DefaultFuchsiaResourceDialect
18129                ),
18130            }
18131        }
18132
18133        #[inline]
18134        unsafe fn decode(
18135            &mut self,
18136            decoder: &mut fidl::encoding::Decoder<
18137                '_,
18138                fidl::encoding::DefaultFuchsiaResourceDialect,
18139            >,
18140            offset: usize,
18141            _depth: fidl::encoding::Depth,
18142        ) -> fidl::Result<()> {
18143            decoder.debug_check_bounds::<Self>(offset);
18144            // Verify that padding bytes are zero.
18145            fidl::decode!(
18146                fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<DataRouterDeprecatedMarker>>,
18147                fidl::encoding::DefaultFuchsiaResourceDialect,
18148                &mut self.router_client_end,
18149                decoder,
18150                offset + 0,
18151                _depth
18152            )?;
18153            fidl::decode!(
18154                fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<DataRouterDeprecatedMarker>>,
18155                fidl::encoding::DefaultFuchsiaResourceDialect,
18156                &mut self.router_server_end,
18157                decoder,
18158                offset + 4,
18159                _depth
18160            )?;
18161            Ok(())
18162        }
18163    }
18164
18165    impl fidl::encoding::ResourceTypeMarker for CapabilityFactoryCreateDictionaryRequest {
18166        type Borrowed<'a> = &'a mut Self;
18167        fn take_or_borrow<'a>(
18168            value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
18169        ) -> Self::Borrowed<'a> {
18170            value
18171        }
18172    }
18173
18174    unsafe impl fidl::encoding::TypeMarker for CapabilityFactoryCreateDictionaryRequest {
18175        type Owned = Self;
18176
18177        #[inline(always)]
18178        fn inline_align(_context: fidl::encoding::Context) -> usize {
18179            4
18180        }
18181
18182        #[inline(always)]
18183        fn inline_size(_context: fidl::encoding::Context) -> usize {
18184            4
18185        }
18186    }
18187
18188    unsafe impl
18189        fidl::encoding::Encode<
18190            CapabilityFactoryCreateDictionaryRequest,
18191            fidl::encoding::DefaultFuchsiaResourceDialect,
18192        > for &mut CapabilityFactoryCreateDictionaryRequest
18193    {
18194        #[inline]
18195        unsafe fn encode(
18196            self,
18197            encoder: &mut fidl::encoding::Encoder<
18198                '_,
18199                fidl::encoding::DefaultFuchsiaResourceDialect,
18200            >,
18201            offset: usize,
18202            _depth: fidl::encoding::Depth,
18203        ) -> fidl::Result<()> {
18204            encoder.debug_check_bounds::<CapabilityFactoryCreateDictionaryRequest>(offset);
18205            // Delegate to tuple encoding.
18206            fidl::encoding::Encode::<CapabilityFactoryCreateDictionaryRequest, fidl::encoding::DefaultFuchsiaResourceDialect>::encode(
18207                (
18208                    <fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<DictionaryMarker>> as fidl::encoding::ResourceTypeMarker>::take_or_borrow(&mut self.dictionary_server_end),
18209                ),
18210                encoder, offset, _depth
18211            )
18212        }
18213    }
18214    unsafe impl<
18215        T0: fidl::encoding::Encode<
18216                fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<DictionaryMarker>>,
18217                fidl::encoding::DefaultFuchsiaResourceDialect,
18218            >,
18219    >
18220        fidl::encoding::Encode<
18221            CapabilityFactoryCreateDictionaryRequest,
18222            fidl::encoding::DefaultFuchsiaResourceDialect,
18223        > for (T0,)
18224    {
18225        #[inline]
18226        unsafe fn encode(
18227            self,
18228            encoder: &mut fidl::encoding::Encoder<
18229                '_,
18230                fidl::encoding::DefaultFuchsiaResourceDialect,
18231            >,
18232            offset: usize,
18233            depth: fidl::encoding::Depth,
18234        ) -> fidl::Result<()> {
18235            encoder.debug_check_bounds::<CapabilityFactoryCreateDictionaryRequest>(offset);
18236            // Zero out padding regions. There's no need to apply masks
18237            // because the unmasked parts will be overwritten by fields.
18238            // Write the fields.
18239            self.0.encode(encoder, offset + 0, depth)?;
18240            Ok(())
18241        }
18242    }
18243
18244    impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
18245        for CapabilityFactoryCreateDictionaryRequest
18246    {
18247        #[inline(always)]
18248        fn new_empty() -> Self {
18249            Self {
18250                dictionary_server_end: fidl::new_empty!(
18251                    fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<DictionaryMarker>>,
18252                    fidl::encoding::DefaultFuchsiaResourceDialect
18253                ),
18254            }
18255        }
18256
18257        #[inline]
18258        unsafe fn decode(
18259            &mut self,
18260            decoder: &mut fidl::encoding::Decoder<
18261                '_,
18262                fidl::encoding::DefaultFuchsiaResourceDialect,
18263            >,
18264            offset: usize,
18265            _depth: fidl::encoding::Depth,
18266        ) -> fidl::Result<()> {
18267            decoder.debug_check_bounds::<Self>(offset);
18268            // Verify that padding bytes are zero.
18269            fidl::decode!(
18270                fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<DictionaryMarker>>,
18271                fidl::encoding::DefaultFuchsiaResourceDialect,
18272                &mut self.dictionary_server_end,
18273                decoder,
18274                offset + 0,
18275                _depth
18276            )?;
18277            Ok(())
18278        }
18279    }
18280
18281    impl fidl::encoding::ResourceTypeMarker for CapabilityFactoryCreateDictionaryRouterRequest {
18282        type Borrowed<'a> = &'a mut Self;
18283        fn take_or_borrow<'a>(
18284            value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
18285        ) -> Self::Borrowed<'a> {
18286            value
18287        }
18288    }
18289
18290    unsafe impl fidl::encoding::TypeMarker for CapabilityFactoryCreateDictionaryRouterRequest {
18291        type Owned = Self;
18292
18293        #[inline(always)]
18294        fn inline_align(_context: fidl::encoding::Context) -> usize {
18295            4
18296        }
18297
18298        #[inline(always)]
18299        fn inline_size(_context: fidl::encoding::Context) -> usize {
18300            8
18301        }
18302    }
18303
18304    unsafe impl
18305        fidl::encoding::Encode<
18306            CapabilityFactoryCreateDictionaryRouterRequest,
18307            fidl::encoding::DefaultFuchsiaResourceDialect,
18308        > for &mut CapabilityFactoryCreateDictionaryRouterRequest
18309    {
18310        #[inline]
18311        unsafe fn encode(
18312            self,
18313            encoder: &mut fidl::encoding::Encoder<
18314                '_,
18315                fidl::encoding::DefaultFuchsiaResourceDialect,
18316            >,
18317            offset: usize,
18318            _depth: fidl::encoding::Depth,
18319        ) -> fidl::Result<()> {
18320            encoder.debug_check_bounds::<CapabilityFactoryCreateDictionaryRouterRequest>(offset);
18321            // Delegate to tuple encoding.
18322            fidl::encoding::Encode::<
18323                CapabilityFactoryCreateDictionaryRouterRequest,
18324                fidl::encoding::DefaultFuchsiaResourceDialect,
18325            >::encode(
18326                (
18327                    <fidl::encoding::Endpoint<
18328                        fidl::endpoints::ClientEnd<DictionaryRouterDeprecatedMarker>,
18329                    > as fidl::encoding::ResourceTypeMarker>::take_or_borrow(
18330                        &mut self.router_client_end,
18331                    ),
18332                    <fidl::encoding::Endpoint<
18333                        fidl::endpoints::ServerEnd<DictionaryRouterDeprecatedMarker>,
18334                    > as fidl::encoding::ResourceTypeMarker>::take_or_borrow(
18335                        &mut self.router_server_end,
18336                    ),
18337                ),
18338                encoder,
18339                offset,
18340                _depth,
18341            )
18342        }
18343    }
18344    unsafe impl<
18345        T0: fidl::encoding::Encode<
18346                fidl::encoding::Endpoint<
18347                    fidl::endpoints::ClientEnd<DictionaryRouterDeprecatedMarker>,
18348                >,
18349                fidl::encoding::DefaultFuchsiaResourceDialect,
18350            >,
18351        T1: fidl::encoding::Encode<
18352                fidl::encoding::Endpoint<
18353                    fidl::endpoints::ServerEnd<DictionaryRouterDeprecatedMarker>,
18354                >,
18355                fidl::encoding::DefaultFuchsiaResourceDialect,
18356            >,
18357    >
18358        fidl::encoding::Encode<
18359            CapabilityFactoryCreateDictionaryRouterRequest,
18360            fidl::encoding::DefaultFuchsiaResourceDialect,
18361        > for (T0, T1)
18362    {
18363        #[inline]
18364        unsafe fn encode(
18365            self,
18366            encoder: &mut fidl::encoding::Encoder<
18367                '_,
18368                fidl::encoding::DefaultFuchsiaResourceDialect,
18369            >,
18370            offset: usize,
18371            depth: fidl::encoding::Depth,
18372        ) -> fidl::Result<()> {
18373            encoder.debug_check_bounds::<CapabilityFactoryCreateDictionaryRouterRequest>(offset);
18374            // Zero out padding regions. There's no need to apply masks
18375            // because the unmasked parts will be overwritten by fields.
18376            // Write the fields.
18377            self.0.encode(encoder, offset + 0, depth)?;
18378            self.1.encode(encoder, offset + 4, depth)?;
18379            Ok(())
18380        }
18381    }
18382
18383    impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
18384        for CapabilityFactoryCreateDictionaryRouterRequest
18385    {
18386        #[inline(always)]
18387        fn new_empty() -> Self {
18388            Self {
18389                router_client_end: fidl::new_empty!(
18390                    fidl::encoding::Endpoint<
18391                        fidl::endpoints::ClientEnd<DictionaryRouterDeprecatedMarker>,
18392                    >,
18393                    fidl::encoding::DefaultFuchsiaResourceDialect
18394                ),
18395                router_server_end: fidl::new_empty!(
18396                    fidl::encoding::Endpoint<
18397                        fidl::endpoints::ServerEnd<DictionaryRouterDeprecatedMarker>,
18398                    >,
18399                    fidl::encoding::DefaultFuchsiaResourceDialect
18400                ),
18401            }
18402        }
18403
18404        #[inline]
18405        unsafe fn decode(
18406            &mut self,
18407            decoder: &mut fidl::encoding::Decoder<
18408                '_,
18409                fidl::encoding::DefaultFuchsiaResourceDialect,
18410            >,
18411            offset: usize,
18412            _depth: fidl::encoding::Depth,
18413        ) -> fidl::Result<()> {
18414            decoder.debug_check_bounds::<Self>(offset);
18415            // Verify that padding bytes are zero.
18416            fidl::decode!(
18417                fidl::encoding::Endpoint<
18418                    fidl::endpoints::ClientEnd<DictionaryRouterDeprecatedMarker>,
18419                >,
18420                fidl::encoding::DefaultFuchsiaResourceDialect,
18421                &mut self.router_client_end,
18422                decoder,
18423                offset + 0,
18424                _depth
18425            )?;
18426            fidl::decode!(
18427                fidl::encoding::Endpoint<
18428                    fidl::endpoints::ServerEnd<DictionaryRouterDeprecatedMarker>,
18429                >,
18430                fidl::encoding::DefaultFuchsiaResourceDialect,
18431                &mut self.router_server_end,
18432                decoder,
18433                offset + 4,
18434                _depth
18435            )?;
18436            Ok(())
18437        }
18438    }
18439
18440    impl fidl::encoding::ResourceTypeMarker for CapabilityFactoryCreateDirConnectorRequest {
18441        type Borrowed<'a> = &'a mut Self;
18442        fn take_or_borrow<'a>(
18443            value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
18444        ) -> Self::Borrowed<'a> {
18445            value
18446        }
18447    }
18448
18449    unsafe impl fidl::encoding::TypeMarker for CapabilityFactoryCreateDirConnectorRequest {
18450        type Owned = Self;
18451
18452        #[inline(always)]
18453        fn inline_align(_context: fidl::encoding::Context) -> usize {
18454            4
18455        }
18456
18457        #[inline(always)]
18458        fn inline_size(_context: fidl::encoding::Context) -> usize {
18459            8
18460        }
18461    }
18462
18463    unsafe impl
18464        fidl::encoding::Encode<
18465            CapabilityFactoryCreateDirConnectorRequest,
18466            fidl::encoding::DefaultFuchsiaResourceDialect,
18467        > for &mut CapabilityFactoryCreateDirConnectorRequest
18468    {
18469        #[inline]
18470        unsafe fn encode(
18471            self,
18472            encoder: &mut fidl::encoding::Encoder<
18473                '_,
18474                fidl::encoding::DefaultFuchsiaResourceDialect,
18475            >,
18476            offset: usize,
18477            _depth: fidl::encoding::Depth,
18478        ) -> fidl::Result<()> {
18479            encoder.debug_check_bounds::<CapabilityFactoryCreateDirConnectorRequest>(offset);
18480            // Delegate to tuple encoding.
18481            fidl::encoding::Encode::<CapabilityFactoryCreateDirConnectorRequest, fidl::encoding::DefaultFuchsiaResourceDialect>::encode(
18482                (
18483                    <fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<DirReceiverDeprecatedMarker>> as fidl::encoding::ResourceTypeMarker>::take_or_borrow(&mut self.dir_receiver_client_end),
18484                    <fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<DirConnectorMarker>> as fidl::encoding::ResourceTypeMarker>::take_or_borrow(&mut self.dir_connector_server_end),
18485                ),
18486                encoder, offset, _depth
18487            )
18488        }
18489    }
18490    unsafe impl<
18491        T0: fidl::encoding::Encode<
18492                fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<DirReceiverDeprecatedMarker>>,
18493                fidl::encoding::DefaultFuchsiaResourceDialect,
18494            >,
18495        T1: fidl::encoding::Encode<
18496                fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<DirConnectorMarker>>,
18497                fidl::encoding::DefaultFuchsiaResourceDialect,
18498            >,
18499    >
18500        fidl::encoding::Encode<
18501            CapabilityFactoryCreateDirConnectorRequest,
18502            fidl::encoding::DefaultFuchsiaResourceDialect,
18503        > for (T0, T1)
18504    {
18505        #[inline]
18506        unsafe fn encode(
18507            self,
18508            encoder: &mut fidl::encoding::Encoder<
18509                '_,
18510                fidl::encoding::DefaultFuchsiaResourceDialect,
18511            >,
18512            offset: usize,
18513            depth: fidl::encoding::Depth,
18514        ) -> fidl::Result<()> {
18515            encoder.debug_check_bounds::<CapabilityFactoryCreateDirConnectorRequest>(offset);
18516            // Zero out padding regions. There's no need to apply masks
18517            // because the unmasked parts will be overwritten by fields.
18518            // Write the fields.
18519            self.0.encode(encoder, offset + 0, depth)?;
18520            self.1.encode(encoder, offset + 4, depth)?;
18521            Ok(())
18522        }
18523    }
18524
18525    impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
18526        for CapabilityFactoryCreateDirConnectorRequest
18527    {
18528        #[inline(always)]
18529        fn new_empty() -> Self {
18530            Self {
18531                dir_receiver_client_end: fidl::new_empty!(
18532                    fidl::encoding::Endpoint<
18533                        fidl::endpoints::ClientEnd<DirReceiverDeprecatedMarker>,
18534                    >,
18535                    fidl::encoding::DefaultFuchsiaResourceDialect
18536                ),
18537                dir_connector_server_end: fidl::new_empty!(
18538                    fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<DirConnectorMarker>>,
18539                    fidl::encoding::DefaultFuchsiaResourceDialect
18540                ),
18541            }
18542        }
18543
18544        #[inline]
18545        unsafe fn decode(
18546            &mut self,
18547            decoder: &mut fidl::encoding::Decoder<
18548                '_,
18549                fidl::encoding::DefaultFuchsiaResourceDialect,
18550            >,
18551            offset: usize,
18552            _depth: fidl::encoding::Depth,
18553        ) -> fidl::Result<()> {
18554            decoder.debug_check_bounds::<Self>(offset);
18555            // Verify that padding bytes are zero.
18556            fidl::decode!(
18557                fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<DirReceiverDeprecatedMarker>>,
18558                fidl::encoding::DefaultFuchsiaResourceDialect,
18559                &mut self.dir_receiver_client_end,
18560                decoder,
18561                offset + 0,
18562                _depth
18563            )?;
18564            fidl::decode!(
18565                fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<DirConnectorMarker>>,
18566                fidl::encoding::DefaultFuchsiaResourceDialect,
18567                &mut self.dir_connector_server_end,
18568                decoder,
18569                offset + 4,
18570                _depth
18571            )?;
18572            Ok(())
18573        }
18574    }
18575
18576    impl fidl::encoding::ResourceTypeMarker for CapabilityFactoryCreateDirConnectorRouterRequest {
18577        type Borrowed<'a> = &'a mut Self;
18578        fn take_or_borrow<'a>(
18579            value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
18580        ) -> Self::Borrowed<'a> {
18581            value
18582        }
18583    }
18584
18585    unsafe impl fidl::encoding::TypeMarker for CapabilityFactoryCreateDirConnectorRouterRequest {
18586        type Owned = Self;
18587
18588        #[inline(always)]
18589        fn inline_align(_context: fidl::encoding::Context) -> usize {
18590            4
18591        }
18592
18593        #[inline(always)]
18594        fn inline_size(_context: fidl::encoding::Context) -> usize {
18595            8
18596        }
18597    }
18598
18599    unsafe impl
18600        fidl::encoding::Encode<
18601            CapabilityFactoryCreateDirConnectorRouterRequest,
18602            fidl::encoding::DefaultFuchsiaResourceDialect,
18603        > for &mut CapabilityFactoryCreateDirConnectorRouterRequest
18604    {
18605        #[inline]
18606        unsafe fn encode(
18607            self,
18608            encoder: &mut fidl::encoding::Encoder<
18609                '_,
18610                fidl::encoding::DefaultFuchsiaResourceDialect,
18611            >,
18612            offset: usize,
18613            _depth: fidl::encoding::Depth,
18614        ) -> fidl::Result<()> {
18615            encoder.debug_check_bounds::<CapabilityFactoryCreateDirConnectorRouterRequest>(offset);
18616            // Delegate to tuple encoding.
18617            fidl::encoding::Encode::<
18618                CapabilityFactoryCreateDirConnectorRouterRequest,
18619                fidl::encoding::DefaultFuchsiaResourceDialect,
18620            >::encode(
18621                (
18622                    <fidl::encoding::Endpoint<
18623                        fidl::endpoints::ClientEnd<DirConnectorRouterDeprecatedMarker>,
18624                    > as fidl::encoding::ResourceTypeMarker>::take_or_borrow(
18625                        &mut self.router_client_end,
18626                    ),
18627                    <fidl::encoding::Endpoint<
18628                        fidl::endpoints::ServerEnd<DirConnectorRouterDeprecatedMarker>,
18629                    > as fidl::encoding::ResourceTypeMarker>::take_or_borrow(
18630                        &mut self.router_server_end,
18631                    ),
18632                ),
18633                encoder,
18634                offset,
18635                _depth,
18636            )
18637        }
18638    }
18639    unsafe impl<
18640        T0: fidl::encoding::Encode<
18641                fidl::encoding::Endpoint<
18642                    fidl::endpoints::ClientEnd<DirConnectorRouterDeprecatedMarker>,
18643                >,
18644                fidl::encoding::DefaultFuchsiaResourceDialect,
18645            >,
18646        T1: fidl::encoding::Encode<
18647                fidl::encoding::Endpoint<
18648                    fidl::endpoints::ServerEnd<DirConnectorRouterDeprecatedMarker>,
18649                >,
18650                fidl::encoding::DefaultFuchsiaResourceDialect,
18651            >,
18652    >
18653        fidl::encoding::Encode<
18654            CapabilityFactoryCreateDirConnectorRouterRequest,
18655            fidl::encoding::DefaultFuchsiaResourceDialect,
18656        > for (T0, T1)
18657    {
18658        #[inline]
18659        unsafe fn encode(
18660            self,
18661            encoder: &mut fidl::encoding::Encoder<
18662                '_,
18663                fidl::encoding::DefaultFuchsiaResourceDialect,
18664            >,
18665            offset: usize,
18666            depth: fidl::encoding::Depth,
18667        ) -> fidl::Result<()> {
18668            encoder.debug_check_bounds::<CapabilityFactoryCreateDirConnectorRouterRequest>(offset);
18669            // Zero out padding regions. There's no need to apply masks
18670            // because the unmasked parts will be overwritten by fields.
18671            // Write the fields.
18672            self.0.encode(encoder, offset + 0, depth)?;
18673            self.1.encode(encoder, offset + 4, depth)?;
18674            Ok(())
18675        }
18676    }
18677
18678    impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
18679        for CapabilityFactoryCreateDirConnectorRouterRequest
18680    {
18681        #[inline(always)]
18682        fn new_empty() -> Self {
18683            Self {
18684                router_client_end: fidl::new_empty!(
18685                    fidl::encoding::Endpoint<
18686                        fidl::endpoints::ClientEnd<DirConnectorRouterDeprecatedMarker>,
18687                    >,
18688                    fidl::encoding::DefaultFuchsiaResourceDialect
18689                ),
18690                router_server_end: fidl::new_empty!(
18691                    fidl::encoding::Endpoint<
18692                        fidl::endpoints::ServerEnd<DirConnectorRouterDeprecatedMarker>,
18693                    >,
18694                    fidl::encoding::DefaultFuchsiaResourceDialect
18695                ),
18696            }
18697        }
18698
18699        #[inline]
18700        unsafe fn decode(
18701            &mut self,
18702            decoder: &mut fidl::encoding::Decoder<
18703                '_,
18704                fidl::encoding::DefaultFuchsiaResourceDialect,
18705            >,
18706            offset: usize,
18707            _depth: fidl::encoding::Depth,
18708        ) -> fidl::Result<()> {
18709            decoder.debug_check_bounds::<Self>(offset);
18710            // Verify that padding bytes are zero.
18711            fidl::decode!(
18712                fidl::encoding::Endpoint<
18713                    fidl::endpoints::ClientEnd<DirConnectorRouterDeprecatedMarker>,
18714                >,
18715                fidl::encoding::DefaultFuchsiaResourceDialect,
18716                &mut self.router_client_end,
18717                decoder,
18718                offset + 0,
18719                _depth
18720            )?;
18721            fidl::decode!(
18722                fidl::encoding::Endpoint<
18723                    fidl::endpoints::ServerEnd<DirConnectorRouterDeprecatedMarker>,
18724                >,
18725                fidl::encoding::DefaultFuchsiaResourceDialect,
18726                &mut self.router_server_end,
18727                decoder,
18728                offset + 4,
18729                _depth
18730            )?;
18731            Ok(())
18732        }
18733    }
18734
18735    impl fidl::encoding::ResourceTypeMarker for ConnectorConnectRequest {
18736        type Borrowed<'a> = &'a mut Self;
18737        fn take_or_borrow<'a>(
18738            value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
18739        ) -> Self::Borrowed<'a> {
18740            value
18741        }
18742    }
18743
18744    unsafe impl fidl::encoding::TypeMarker for ConnectorConnectRequest {
18745        type Owned = Self;
18746
18747        #[inline(always)]
18748        fn inline_align(_context: fidl::encoding::Context) -> usize {
18749            4
18750        }
18751
18752        #[inline(always)]
18753        fn inline_size(_context: fidl::encoding::Context) -> usize {
18754            4
18755        }
18756    }
18757
18758    unsafe impl
18759        fidl::encoding::Encode<
18760            ConnectorConnectRequest,
18761            fidl::encoding::DefaultFuchsiaResourceDialect,
18762        > for &mut ConnectorConnectRequest
18763    {
18764        #[inline]
18765        unsafe fn encode(
18766            self,
18767            encoder: &mut fidl::encoding::Encoder<
18768                '_,
18769                fidl::encoding::DefaultFuchsiaResourceDialect,
18770            >,
18771            offset: usize,
18772            _depth: fidl::encoding::Depth,
18773        ) -> fidl::Result<()> {
18774            encoder.debug_check_bounds::<ConnectorConnectRequest>(offset);
18775            // Delegate to tuple encoding.
18776            fidl::encoding::Encode::<
18777                ConnectorConnectRequest,
18778                fidl::encoding::DefaultFuchsiaResourceDialect,
18779            >::encode(
18780                (<fidl::encoding::HandleType<
18781                    fidl::Channel,
18782                    { fidl::ObjectType::CHANNEL.into_raw() },
18783                    2147483648,
18784                > as fidl::encoding::ResourceTypeMarker>::take_or_borrow(
18785                    &mut self.channel
18786                ),),
18787                encoder,
18788                offset,
18789                _depth,
18790            )
18791        }
18792    }
18793    unsafe impl<
18794        T0: fidl::encoding::Encode<
18795                fidl::encoding::HandleType<
18796                    fidl::Channel,
18797                    { fidl::ObjectType::CHANNEL.into_raw() },
18798                    2147483648,
18799                >,
18800                fidl::encoding::DefaultFuchsiaResourceDialect,
18801            >,
18802    >
18803        fidl::encoding::Encode<
18804            ConnectorConnectRequest,
18805            fidl::encoding::DefaultFuchsiaResourceDialect,
18806        > for (T0,)
18807    {
18808        #[inline]
18809        unsafe fn encode(
18810            self,
18811            encoder: &mut fidl::encoding::Encoder<
18812                '_,
18813                fidl::encoding::DefaultFuchsiaResourceDialect,
18814            >,
18815            offset: usize,
18816            depth: fidl::encoding::Depth,
18817        ) -> fidl::Result<()> {
18818            encoder.debug_check_bounds::<ConnectorConnectRequest>(offset);
18819            // Zero out padding regions. There's no need to apply masks
18820            // because the unmasked parts will be overwritten by fields.
18821            // Write the fields.
18822            self.0.encode(encoder, offset + 0, depth)?;
18823            Ok(())
18824        }
18825    }
18826
18827    impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
18828        for ConnectorConnectRequest
18829    {
18830        #[inline(always)]
18831        fn new_empty() -> Self {
18832            Self {
18833                channel: fidl::new_empty!(fidl::encoding::HandleType<fidl::Channel, { fidl::ObjectType::CHANNEL.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect),
18834            }
18835        }
18836
18837        #[inline]
18838        unsafe fn decode(
18839            &mut self,
18840            decoder: &mut fidl::encoding::Decoder<
18841                '_,
18842                fidl::encoding::DefaultFuchsiaResourceDialect,
18843            >,
18844            offset: usize,
18845            _depth: fidl::encoding::Depth,
18846        ) -> fidl::Result<()> {
18847            decoder.debug_check_bounds::<Self>(offset);
18848            // Verify that padding bytes are zero.
18849            fidl::decode!(fidl::encoding::HandleType<fidl::Channel, { fidl::ObjectType::CHANNEL.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect, &mut self.channel, decoder, offset + 0, _depth)?;
18850            Ok(())
18851        }
18852    }
18853
18854    impl fidl::encoding::ResourceTypeMarker for ConnectorRouterDeprecatedRouteRequest {
18855        type Borrowed<'a> = &'a mut Self;
18856        fn take_or_borrow<'a>(
18857            value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
18858        ) -> Self::Borrowed<'a> {
18859            value
18860        }
18861    }
18862
18863    unsafe impl fidl::encoding::TypeMarker for ConnectorRouterDeprecatedRouteRequest {
18864        type Owned = Self;
18865
18866        #[inline(always)]
18867        fn inline_align(_context: fidl::encoding::Context) -> usize {
18868            8
18869        }
18870
18871        #[inline(always)]
18872        fn inline_size(_context: fidl::encoding::Context) -> usize {
18873            24
18874        }
18875    }
18876
18877    unsafe impl
18878        fidl::encoding::Encode<
18879            ConnectorRouterDeprecatedRouteRequest,
18880            fidl::encoding::DefaultFuchsiaResourceDialect,
18881        > for &mut ConnectorRouterDeprecatedRouteRequest
18882    {
18883        #[inline]
18884        unsafe fn encode(
18885            self,
18886            encoder: &mut fidl::encoding::Encoder<
18887                '_,
18888                fidl::encoding::DefaultFuchsiaResourceDialect,
18889            >,
18890            offset: usize,
18891            _depth: fidl::encoding::Depth,
18892        ) -> fidl::Result<()> {
18893            encoder.debug_check_bounds::<ConnectorRouterDeprecatedRouteRequest>(offset);
18894            // Delegate to tuple encoding.
18895            fidl::encoding::Encode::<ConnectorRouterDeprecatedRouteRequest, fidl::encoding::DefaultFuchsiaResourceDialect>::encode(
18896                (
18897                    <DeprecatedRouteRequest as fidl::encoding::ResourceTypeMarker>::take_or_borrow(&mut self.request),
18898                    <fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<ConnectorMarker>> as fidl::encoding::ResourceTypeMarker>::take_or_borrow(&mut self.connector_server_end),
18899                ),
18900                encoder, offset, _depth
18901            )
18902        }
18903    }
18904    unsafe impl<
18905        T0: fidl::encoding::Encode<
18906                DeprecatedRouteRequest,
18907                fidl::encoding::DefaultFuchsiaResourceDialect,
18908            >,
18909        T1: fidl::encoding::Encode<
18910                fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<ConnectorMarker>>,
18911                fidl::encoding::DefaultFuchsiaResourceDialect,
18912            >,
18913    >
18914        fidl::encoding::Encode<
18915            ConnectorRouterDeprecatedRouteRequest,
18916            fidl::encoding::DefaultFuchsiaResourceDialect,
18917        > for (T0, T1)
18918    {
18919        #[inline]
18920        unsafe fn encode(
18921            self,
18922            encoder: &mut fidl::encoding::Encoder<
18923                '_,
18924                fidl::encoding::DefaultFuchsiaResourceDialect,
18925            >,
18926            offset: usize,
18927            depth: fidl::encoding::Depth,
18928        ) -> fidl::Result<()> {
18929            encoder.debug_check_bounds::<ConnectorRouterDeprecatedRouteRequest>(offset);
18930            // Zero out padding regions. There's no need to apply masks
18931            // because the unmasked parts will be overwritten by fields.
18932            unsafe {
18933                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(16);
18934                (ptr as *mut u64).write_unaligned(0);
18935            }
18936            // Write the fields.
18937            self.0.encode(encoder, offset + 0, depth)?;
18938            self.1.encode(encoder, offset + 16, depth)?;
18939            Ok(())
18940        }
18941    }
18942
18943    impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
18944        for ConnectorRouterDeprecatedRouteRequest
18945    {
18946        #[inline(always)]
18947        fn new_empty() -> Self {
18948            Self {
18949                request: fidl::new_empty!(
18950                    DeprecatedRouteRequest,
18951                    fidl::encoding::DefaultFuchsiaResourceDialect
18952                ),
18953                connector_server_end: fidl::new_empty!(
18954                    fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<ConnectorMarker>>,
18955                    fidl::encoding::DefaultFuchsiaResourceDialect
18956                ),
18957            }
18958        }
18959
18960        #[inline]
18961        unsafe fn decode(
18962            &mut self,
18963            decoder: &mut fidl::encoding::Decoder<
18964                '_,
18965                fidl::encoding::DefaultFuchsiaResourceDialect,
18966            >,
18967            offset: usize,
18968            _depth: fidl::encoding::Depth,
18969        ) -> fidl::Result<()> {
18970            decoder.debug_check_bounds::<Self>(offset);
18971            // Verify that padding bytes are zero.
18972            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(16) };
18973            let padval = unsafe { (ptr as *const u64).read_unaligned() };
18974            let mask = 0xffffffff00000000u64;
18975            let maskedval = padval & mask;
18976            if maskedval != 0 {
18977                return Err(fidl::Error::NonZeroPadding {
18978                    padding_start: offset + 16 + ((mask as u64).trailing_zeros() / 8) as usize,
18979                });
18980            }
18981            fidl::decode!(
18982                DeprecatedRouteRequest,
18983                fidl::encoding::DefaultFuchsiaResourceDialect,
18984                &mut self.request,
18985                decoder,
18986                offset + 0,
18987                _depth
18988            )?;
18989            fidl::decode!(
18990                fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<ConnectorMarker>>,
18991                fidl::encoding::DefaultFuchsiaResourceDialect,
18992                &mut self.connector_server_end,
18993                decoder,
18994                offset + 16,
18995                _depth
18996            )?;
18997            Ok(())
18998        }
18999    }
19000
19001    impl fidl::encoding::ResourceTypeMarker for ConnectorRouterDeprecatedRouteResponse {
19002        type Borrowed<'a> = &'a mut Self;
19003        fn take_or_borrow<'a>(
19004            value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
19005        ) -> Self::Borrowed<'a> {
19006            value
19007        }
19008    }
19009
19010    unsafe impl fidl::encoding::TypeMarker for ConnectorRouterDeprecatedRouteResponse {
19011        type Owned = Self;
19012
19013        #[inline(always)]
19014        fn inline_align(_context: fidl::encoding::Context) -> usize {
19015            4
19016        }
19017
19018        #[inline(always)]
19019        fn inline_size(_context: fidl::encoding::Context) -> usize {
19020            4
19021        }
19022    }
19023
19024    unsafe impl
19025        fidl::encoding::Encode<
19026            ConnectorRouterDeprecatedRouteResponse,
19027            fidl::encoding::DefaultFuchsiaResourceDialect,
19028        > for &mut ConnectorRouterDeprecatedRouteResponse
19029    {
19030        #[inline]
19031        unsafe fn encode(
19032            self,
19033            encoder: &mut fidl::encoding::Encoder<
19034                '_,
19035                fidl::encoding::DefaultFuchsiaResourceDialect,
19036            >,
19037            offset: usize,
19038            _depth: fidl::encoding::Depth,
19039        ) -> fidl::Result<()> {
19040            encoder.debug_check_bounds::<ConnectorRouterDeprecatedRouteResponse>(offset);
19041            // Delegate to tuple encoding.
19042            fidl::encoding::Encode::<
19043                ConnectorRouterDeprecatedRouteResponse,
19044                fidl::encoding::DefaultFuchsiaResourceDialect,
19045            >::encode(
19046                (<RouterResponse as fidl::encoding::ValueTypeMarker>::borrow(&self.response),),
19047                encoder,
19048                offset,
19049                _depth,
19050            )
19051        }
19052    }
19053    unsafe impl<
19054        T0: fidl::encoding::Encode<RouterResponse, fidl::encoding::DefaultFuchsiaResourceDialect>,
19055    >
19056        fidl::encoding::Encode<
19057            ConnectorRouterDeprecatedRouteResponse,
19058            fidl::encoding::DefaultFuchsiaResourceDialect,
19059        > for (T0,)
19060    {
19061        #[inline]
19062        unsafe fn encode(
19063            self,
19064            encoder: &mut fidl::encoding::Encoder<
19065                '_,
19066                fidl::encoding::DefaultFuchsiaResourceDialect,
19067            >,
19068            offset: usize,
19069            depth: fidl::encoding::Depth,
19070        ) -> fidl::Result<()> {
19071            encoder.debug_check_bounds::<ConnectorRouterDeprecatedRouteResponse>(offset);
19072            // Zero out padding regions. There's no need to apply masks
19073            // because the unmasked parts will be overwritten by fields.
19074            // Write the fields.
19075            self.0.encode(encoder, offset + 0, depth)?;
19076            Ok(())
19077        }
19078    }
19079
19080    impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
19081        for ConnectorRouterDeprecatedRouteResponse
19082    {
19083        #[inline(always)]
19084        fn new_empty() -> Self {
19085            Self {
19086                response: fidl::new_empty!(
19087                    RouterResponse,
19088                    fidl::encoding::DefaultFuchsiaResourceDialect
19089                ),
19090            }
19091        }
19092
19093        #[inline]
19094        unsafe fn decode(
19095            &mut self,
19096            decoder: &mut fidl::encoding::Decoder<
19097                '_,
19098                fidl::encoding::DefaultFuchsiaResourceDialect,
19099            >,
19100            offset: usize,
19101            _depth: fidl::encoding::Depth,
19102        ) -> fidl::Result<()> {
19103            decoder.debug_check_bounds::<Self>(offset);
19104            // Verify that padding bytes are zero.
19105            fidl::decode!(
19106                RouterResponse,
19107                fidl::encoding::DefaultFuchsiaResourceDialect,
19108                &mut self.response,
19109                decoder,
19110                offset + 0,
19111                _depth
19112            )?;
19113            Ok(())
19114        }
19115    }
19116
19117    impl fidl::encoding::ResourceTypeMarker for ConnectorRouterRouteRequest {
19118        type Borrowed<'a> = &'a mut Self;
19119        fn take_or_borrow<'a>(
19120            value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
19121        ) -> Self::Borrowed<'a> {
19122            value
19123        }
19124    }
19125
19126    unsafe impl fidl::encoding::TypeMarker for ConnectorRouterRouteRequest {
19127        type Owned = Self;
19128
19129        #[inline(always)]
19130        fn inline_align(_context: fidl::encoding::Context) -> usize {
19131            8
19132        }
19133
19134        #[inline(always)]
19135        fn inline_size(_context: fidl::encoding::Context) -> usize {
19136            24
19137        }
19138    }
19139
19140    unsafe impl
19141        fidl::encoding::Encode<
19142            ConnectorRouterRouteRequest,
19143            fidl::encoding::DefaultFuchsiaResourceDialect,
19144        > for &mut ConnectorRouterRouteRequest
19145    {
19146        #[inline]
19147        unsafe fn encode(
19148            self,
19149            encoder: &mut fidl::encoding::Encoder<
19150                '_,
19151                fidl::encoding::DefaultFuchsiaResourceDialect,
19152            >,
19153            offset: usize,
19154            _depth: fidl::encoding::Depth,
19155        ) -> fidl::Result<()> {
19156            encoder.debug_check_bounds::<ConnectorRouterRouteRequest>(offset);
19157            // Delegate to tuple encoding.
19158            fidl::encoding::Encode::<
19159                ConnectorRouterRouteRequest,
19160                fidl::encoding::DefaultFuchsiaResourceDialect,
19161            >::encode(
19162                (
19163                    <RouteRequest as fidl::encoding::ResourceTypeMarker>::take_or_borrow(
19164                        &mut self.request,
19165                    ),
19166                    <fidl::encoding::HandleType<
19167                        fidl::EventPair,
19168                        { fidl::ObjectType::EVENTPAIR.into_raw() },
19169                        2147483648,
19170                    > as fidl::encoding::ResourceTypeMarker>::take_or_borrow(
19171                        &mut self.instance_token,
19172                    ),
19173                    <fidl::encoding::HandleType<
19174                        fidl::EventPair,
19175                        { fidl::ObjectType::EVENTPAIR.into_raw() },
19176                        2147483648,
19177                    > as fidl::encoding::ResourceTypeMarker>::take_or_borrow(
19178                        &mut self.handle
19179                    ),
19180                ),
19181                encoder,
19182                offset,
19183                _depth,
19184            )
19185        }
19186    }
19187    unsafe impl<
19188        T0: fidl::encoding::Encode<RouteRequest, fidl::encoding::DefaultFuchsiaResourceDialect>,
19189        T1: fidl::encoding::Encode<
19190                fidl::encoding::HandleType<
19191                    fidl::EventPair,
19192                    { fidl::ObjectType::EVENTPAIR.into_raw() },
19193                    2147483648,
19194                >,
19195                fidl::encoding::DefaultFuchsiaResourceDialect,
19196            >,
19197        T2: fidl::encoding::Encode<
19198                fidl::encoding::HandleType<
19199                    fidl::EventPair,
19200                    { fidl::ObjectType::EVENTPAIR.into_raw() },
19201                    2147483648,
19202                >,
19203                fidl::encoding::DefaultFuchsiaResourceDialect,
19204            >,
19205    >
19206        fidl::encoding::Encode<
19207            ConnectorRouterRouteRequest,
19208            fidl::encoding::DefaultFuchsiaResourceDialect,
19209        > for (T0, T1, T2)
19210    {
19211        #[inline]
19212        unsafe fn encode(
19213            self,
19214            encoder: &mut fidl::encoding::Encoder<
19215                '_,
19216                fidl::encoding::DefaultFuchsiaResourceDialect,
19217            >,
19218            offset: usize,
19219            depth: fidl::encoding::Depth,
19220        ) -> fidl::Result<()> {
19221            encoder.debug_check_bounds::<ConnectorRouterRouteRequest>(offset);
19222            // Zero out padding regions. There's no need to apply masks
19223            // because the unmasked parts will be overwritten by fields.
19224            // Write the fields.
19225            self.0.encode(encoder, offset + 0, depth)?;
19226            self.1.encode(encoder, offset + 16, depth)?;
19227            self.2.encode(encoder, offset + 20, depth)?;
19228            Ok(())
19229        }
19230    }
19231
19232    impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
19233        for ConnectorRouterRouteRequest
19234    {
19235        #[inline(always)]
19236        fn new_empty() -> Self {
19237            Self {
19238                request: fidl::new_empty!(
19239                    RouteRequest,
19240                    fidl::encoding::DefaultFuchsiaResourceDialect
19241                ),
19242                instance_token: fidl::new_empty!(fidl::encoding::HandleType<fidl::EventPair, { fidl::ObjectType::EVENTPAIR.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect),
19243                handle: fidl::new_empty!(fidl::encoding::HandleType<fidl::EventPair, { fidl::ObjectType::EVENTPAIR.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect),
19244            }
19245        }
19246
19247        #[inline]
19248        unsafe fn decode(
19249            &mut self,
19250            decoder: &mut fidl::encoding::Decoder<
19251                '_,
19252                fidl::encoding::DefaultFuchsiaResourceDialect,
19253            >,
19254            offset: usize,
19255            _depth: fidl::encoding::Depth,
19256        ) -> fidl::Result<()> {
19257            decoder.debug_check_bounds::<Self>(offset);
19258            // Verify that padding bytes are zero.
19259            fidl::decode!(
19260                RouteRequest,
19261                fidl::encoding::DefaultFuchsiaResourceDialect,
19262                &mut self.request,
19263                decoder,
19264                offset + 0,
19265                _depth
19266            )?;
19267            fidl::decode!(fidl::encoding::HandleType<fidl::EventPair, { fidl::ObjectType::EVENTPAIR.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect, &mut self.instance_token, decoder, offset + 16, _depth)?;
19268            fidl::decode!(fidl::encoding::HandleType<fidl::EventPair, { fidl::ObjectType::EVENTPAIR.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect, &mut self.handle, decoder, offset + 20, _depth)?;
19269            Ok(())
19270        }
19271    }
19272
19273    impl fidl::encoding::ResourceTypeMarker for DataRouterDeprecatedRouteRequest {
19274        type Borrowed<'a> = &'a mut Self;
19275        fn take_or_borrow<'a>(
19276            value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
19277        ) -> Self::Borrowed<'a> {
19278            value
19279        }
19280    }
19281
19282    unsafe impl fidl::encoding::TypeMarker for DataRouterDeprecatedRouteRequest {
19283        type Owned = Self;
19284
19285        #[inline(always)]
19286        fn inline_align(_context: fidl::encoding::Context) -> usize {
19287            8
19288        }
19289
19290        #[inline(always)]
19291        fn inline_size(_context: fidl::encoding::Context) -> usize {
19292            16
19293        }
19294    }
19295
19296    unsafe impl
19297        fidl::encoding::Encode<
19298            DataRouterDeprecatedRouteRequest,
19299            fidl::encoding::DefaultFuchsiaResourceDialect,
19300        > for &mut DataRouterDeprecatedRouteRequest
19301    {
19302        #[inline]
19303        unsafe fn encode(
19304            self,
19305            encoder: &mut fidl::encoding::Encoder<
19306                '_,
19307                fidl::encoding::DefaultFuchsiaResourceDialect,
19308            >,
19309            offset: usize,
19310            _depth: fidl::encoding::Depth,
19311        ) -> fidl::Result<()> {
19312            encoder.debug_check_bounds::<DataRouterDeprecatedRouteRequest>(offset);
19313            // Delegate to tuple encoding.
19314            fidl::encoding::Encode::<
19315                DataRouterDeprecatedRouteRequest,
19316                fidl::encoding::DefaultFuchsiaResourceDialect,
19317            >::encode(
19318                (<DeprecatedRouteRequest as fidl::encoding::ResourceTypeMarker>::take_or_borrow(
19319                    &mut self.request,
19320                ),),
19321                encoder,
19322                offset,
19323                _depth,
19324            )
19325        }
19326    }
19327    unsafe impl<
19328        T0: fidl::encoding::Encode<
19329                DeprecatedRouteRequest,
19330                fidl::encoding::DefaultFuchsiaResourceDialect,
19331            >,
19332    >
19333        fidl::encoding::Encode<
19334            DataRouterDeprecatedRouteRequest,
19335            fidl::encoding::DefaultFuchsiaResourceDialect,
19336        > for (T0,)
19337    {
19338        #[inline]
19339        unsafe fn encode(
19340            self,
19341            encoder: &mut fidl::encoding::Encoder<
19342                '_,
19343                fidl::encoding::DefaultFuchsiaResourceDialect,
19344            >,
19345            offset: usize,
19346            depth: fidl::encoding::Depth,
19347        ) -> fidl::Result<()> {
19348            encoder.debug_check_bounds::<DataRouterDeprecatedRouteRequest>(offset);
19349            // Zero out padding regions. There's no need to apply masks
19350            // because the unmasked parts will be overwritten by fields.
19351            // Write the fields.
19352            self.0.encode(encoder, offset + 0, depth)?;
19353            Ok(())
19354        }
19355    }
19356
19357    impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
19358        for DataRouterDeprecatedRouteRequest
19359    {
19360        #[inline(always)]
19361        fn new_empty() -> Self {
19362            Self {
19363                request: fidl::new_empty!(
19364                    DeprecatedRouteRequest,
19365                    fidl::encoding::DefaultFuchsiaResourceDialect
19366                ),
19367            }
19368        }
19369
19370        #[inline]
19371        unsafe fn decode(
19372            &mut self,
19373            decoder: &mut fidl::encoding::Decoder<
19374                '_,
19375                fidl::encoding::DefaultFuchsiaResourceDialect,
19376            >,
19377            offset: usize,
19378            _depth: fidl::encoding::Depth,
19379        ) -> fidl::Result<()> {
19380            decoder.debug_check_bounds::<Self>(offset);
19381            // Verify that padding bytes are zero.
19382            fidl::decode!(
19383                DeprecatedRouteRequest,
19384                fidl::encoding::DefaultFuchsiaResourceDialect,
19385                &mut self.request,
19386                decoder,
19387                offset + 0,
19388                _depth
19389            )?;
19390            Ok(())
19391        }
19392    }
19393
19394    impl fidl::encoding::ResourceTypeMarker for DataRouterDeprecatedRouteResponse {
19395        type Borrowed<'a> = &'a mut Self;
19396        fn take_or_borrow<'a>(
19397            value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
19398        ) -> Self::Borrowed<'a> {
19399            value
19400        }
19401    }
19402
19403    unsafe impl fidl::encoding::TypeMarker for DataRouterDeprecatedRouteResponse {
19404        type Owned = Self;
19405
19406        #[inline(always)]
19407        fn inline_align(_context: fidl::encoding::Context) -> usize {
19408            8
19409        }
19410
19411        #[inline(always)]
19412        fn inline_size(_context: fidl::encoding::Context) -> usize {
19413            24
19414        }
19415    }
19416
19417    unsafe impl
19418        fidl::encoding::Encode<
19419            DataRouterDeprecatedRouteResponse,
19420            fidl::encoding::DefaultFuchsiaResourceDialect,
19421        > for &mut DataRouterDeprecatedRouteResponse
19422    {
19423        #[inline]
19424        unsafe fn encode(
19425            self,
19426            encoder: &mut fidl::encoding::Encoder<
19427                '_,
19428                fidl::encoding::DefaultFuchsiaResourceDialect,
19429            >,
19430            offset: usize,
19431            _depth: fidl::encoding::Depth,
19432        ) -> fidl::Result<()> {
19433            encoder.debug_check_bounds::<DataRouterDeprecatedRouteResponse>(offset);
19434            // Delegate to tuple encoding.
19435            fidl::encoding::Encode::<DataRouterDeprecatedRouteResponse, fidl::encoding::DefaultFuchsiaResourceDialect>::encode(
19436                (
19437                    <RouterResponse as fidl::encoding::ValueTypeMarker>::borrow(&self.response),
19438                    <fidl::encoding::OptionalUnion<Data> as fidl::encoding::ValueTypeMarker>::borrow(&self.data),
19439                ),
19440                encoder, offset, _depth
19441            )
19442        }
19443    }
19444    unsafe impl<
19445        T0: fidl::encoding::Encode<RouterResponse, fidl::encoding::DefaultFuchsiaResourceDialect>,
19446        T1: fidl::encoding::Encode<
19447                fidl::encoding::OptionalUnion<Data>,
19448                fidl::encoding::DefaultFuchsiaResourceDialect,
19449            >,
19450    >
19451        fidl::encoding::Encode<
19452            DataRouterDeprecatedRouteResponse,
19453            fidl::encoding::DefaultFuchsiaResourceDialect,
19454        > for (T0, T1)
19455    {
19456        #[inline]
19457        unsafe fn encode(
19458            self,
19459            encoder: &mut fidl::encoding::Encoder<
19460                '_,
19461                fidl::encoding::DefaultFuchsiaResourceDialect,
19462            >,
19463            offset: usize,
19464            depth: fidl::encoding::Depth,
19465        ) -> fidl::Result<()> {
19466            encoder.debug_check_bounds::<DataRouterDeprecatedRouteResponse>(offset);
19467            // Zero out padding regions. There's no need to apply masks
19468            // because the unmasked parts will be overwritten by fields.
19469            unsafe {
19470                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(0);
19471                (ptr as *mut u64).write_unaligned(0);
19472            }
19473            // Write the fields.
19474            self.0.encode(encoder, offset + 0, depth)?;
19475            self.1.encode(encoder, offset + 8, depth)?;
19476            Ok(())
19477        }
19478    }
19479
19480    impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
19481        for DataRouterDeprecatedRouteResponse
19482    {
19483        #[inline(always)]
19484        fn new_empty() -> Self {
19485            Self {
19486                response: fidl::new_empty!(
19487                    RouterResponse,
19488                    fidl::encoding::DefaultFuchsiaResourceDialect
19489                ),
19490                data: fidl::new_empty!(
19491                    fidl::encoding::OptionalUnion<Data>,
19492                    fidl::encoding::DefaultFuchsiaResourceDialect
19493                ),
19494            }
19495        }
19496
19497        #[inline]
19498        unsafe fn decode(
19499            &mut self,
19500            decoder: &mut fidl::encoding::Decoder<
19501                '_,
19502                fidl::encoding::DefaultFuchsiaResourceDialect,
19503            >,
19504            offset: usize,
19505            _depth: fidl::encoding::Depth,
19506        ) -> fidl::Result<()> {
19507            decoder.debug_check_bounds::<Self>(offset);
19508            // Verify that padding bytes are zero.
19509            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(0) };
19510            let padval = unsafe { (ptr as *const u64).read_unaligned() };
19511            let mask = 0xffffffff00000000u64;
19512            let maskedval = padval & mask;
19513            if maskedval != 0 {
19514                return Err(fidl::Error::NonZeroPadding {
19515                    padding_start: offset + 0 + ((mask as u64).trailing_zeros() / 8) as usize,
19516                });
19517            }
19518            fidl::decode!(
19519                RouterResponse,
19520                fidl::encoding::DefaultFuchsiaResourceDialect,
19521                &mut self.response,
19522                decoder,
19523                offset + 0,
19524                _depth
19525            )?;
19526            fidl::decode!(
19527                fidl::encoding::OptionalUnion<Data>,
19528                fidl::encoding::DefaultFuchsiaResourceDialect,
19529                &mut self.data,
19530                decoder,
19531                offset + 8,
19532                _depth
19533            )?;
19534            Ok(())
19535        }
19536    }
19537
19538    impl fidl::encoding::ResourceTypeMarker for DataRouterRouteRequest {
19539        type Borrowed<'a> = &'a mut Self;
19540        fn take_or_borrow<'a>(
19541            value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
19542        ) -> Self::Borrowed<'a> {
19543            value
19544        }
19545    }
19546
19547    unsafe impl fidl::encoding::TypeMarker for DataRouterRouteRequest {
19548        type Owned = Self;
19549
19550        #[inline(always)]
19551        fn inline_align(_context: fidl::encoding::Context) -> usize {
19552            8
19553        }
19554
19555        #[inline(always)]
19556        fn inline_size(_context: fidl::encoding::Context) -> usize {
19557            24
19558        }
19559    }
19560
19561    unsafe impl
19562        fidl::encoding::Encode<
19563            DataRouterRouteRequest,
19564            fidl::encoding::DefaultFuchsiaResourceDialect,
19565        > for &mut DataRouterRouteRequest
19566    {
19567        #[inline]
19568        unsafe fn encode(
19569            self,
19570            encoder: &mut fidl::encoding::Encoder<
19571                '_,
19572                fidl::encoding::DefaultFuchsiaResourceDialect,
19573            >,
19574            offset: usize,
19575            _depth: fidl::encoding::Depth,
19576        ) -> fidl::Result<()> {
19577            encoder.debug_check_bounds::<DataRouterRouteRequest>(offset);
19578            // Delegate to tuple encoding.
19579            fidl::encoding::Encode::<
19580                DataRouterRouteRequest,
19581                fidl::encoding::DefaultFuchsiaResourceDialect,
19582            >::encode(
19583                (
19584                    <RouteRequest as fidl::encoding::ResourceTypeMarker>::take_or_borrow(
19585                        &mut self.request,
19586                    ),
19587                    <fidl::encoding::HandleType<
19588                        fidl::EventPair,
19589                        { fidl::ObjectType::EVENTPAIR.into_raw() },
19590                        2147483648,
19591                    > as fidl::encoding::ResourceTypeMarker>::take_or_borrow(
19592                        &mut self.instance_token,
19593                    ),
19594                    <fidl::encoding::HandleType<
19595                        fidl::EventPair,
19596                        { fidl::ObjectType::EVENTPAIR.into_raw() },
19597                        2147483648,
19598                    > as fidl::encoding::ResourceTypeMarker>::take_or_borrow(
19599                        &mut self.handle
19600                    ),
19601                ),
19602                encoder,
19603                offset,
19604                _depth,
19605            )
19606        }
19607    }
19608    unsafe impl<
19609        T0: fidl::encoding::Encode<RouteRequest, fidl::encoding::DefaultFuchsiaResourceDialect>,
19610        T1: fidl::encoding::Encode<
19611                fidl::encoding::HandleType<
19612                    fidl::EventPair,
19613                    { fidl::ObjectType::EVENTPAIR.into_raw() },
19614                    2147483648,
19615                >,
19616                fidl::encoding::DefaultFuchsiaResourceDialect,
19617            >,
19618        T2: fidl::encoding::Encode<
19619                fidl::encoding::HandleType<
19620                    fidl::EventPair,
19621                    { fidl::ObjectType::EVENTPAIR.into_raw() },
19622                    2147483648,
19623                >,
19624                fidl::encoding::DefaultFuchsiaResourceDialect,
19625            >,
19626    >
19627        fidl::encoding::Encode<
19628            DataRouterRouteRequest,
19629            fidl::encoding::DefaultFuchsiaResourceDialect,
19630        > for (T0, T1, T2)
19631    {
19632        #[inline]
19633        unsafe fn encode(
19634            self,
19635            encoder: &mut fidl::encoding::Encoder<
19636                '_,
19637                fidl::encoding::DefaultFuchsiaResourceDialect,
19638            >,
19639            offset: usize,
19640            depth: fidl::encoding::Depth,
19641        ) -> fidl::Result<()> {
19642            encoder.debug_check_bounds::<DataRouterRouteRequest>(offset);
19643            // Zero out padding regions. There's no need to apply masks
19644            // because the unmasked parts will be overwritten by fields.
19645            // Write the fields.
19646            self.0.encode(encoder, offset + 0, depth)?;
19647            self.1.encode(encoder, offset + 16, depth)?;
19648            self.2.encode(encoder, offset + 20, depth)?;
19649            Ok(())
19650        }
19651    }
19652
19653    impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
19654        for DataRouterRouteRequest
19655    {
19656        #[inline(always)]
19657        fn new_empty() -> Self {
19658            Self {
19659                request: fidl::new_empty!(
19660                    RouteRequest,
19661                    fidl::encoding::DefaultFuchsiaResourceDialect
19662                ),
19663                instance_token: fidl::new_empty!(fidl::encoding::HandleType<fidl::EventPair, { fidl::ObjectType::EVENTPAIR.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect),
19664                handle: fidl::new_empty!(fidl::encoding::HandleType<fidl::EventPair, { fidl::ObjectType::EVENTPAIR.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect),
19665            }
19666        }
19667
19668        #[inline]
19669        unsafe fn decode(
19670            &mut self,
19671            decoder: &mut fidl::encoding::Decoder<
19672                '_,
19673                fidl::encoding::DefaultFuchsiaResourceDialect,
19674            >,
19675            offset: usize,
19676            _depth: fidl::encoding::Depth,
19677        ) -> fidl::Result<()> {
19678            decoder.debug_check_bounds::<Self>(offset);
19679            // Verify that padding bytes are zero.
19680            fidl::decode!(
19681                RouteRequest,
19682                fidl::encoding::DefaultFuchsiaResourceDialect,
19683                &mut self.request,
19684                decoder,
19685                offset + 0,
19686                _depth
19687            )?;
19688            fidl::decode!(fidl::encoding::HandleType<fidl::EventPair, { fidl::ObjectType::EVENTPAIR.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect, &mut self.instance_token, decoder, offset + 16, _depth)?;
19689            fidl::decode!(fidl::encoding::HandleType<fidl::EventPair, { fidl::ObjectType::EVENTPAIR.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect, &mut self.handle, decoder, offset + 20, _depth)?;
19690            Ok(())
19691        }
19692    }
19693
19694    impl fidl::encoding::ResourceTypeMarker for DictionaryGetRequest {
19695        type Borrowed<'a> = &'a mut Self;
19696        fn take_or_borrow<'a>(
19697            value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
19698        ) -> Self::Borrowed<'a> {
19699            value
19700        }
19701    }
19702
19703    unsafe impl fidl::encoding::TypeMarker for DictionaryGetRequest {
19704        type Owned = Self;
19705
19706        #[inline(always)]
19707        fn inline_align(_context: fidl::encoding::Context) -> usize {
19708            8
19709        }
19710
19711        #[inline(always)]
19712        fn inline_size(_context: fidl::encoding::Context) -> usize {
19713            16
19714        }
19715    }
19716
19717    unsafe impl
19718        fidl::encoding::Encode<DictionaryGetRequest, fidl::encoding::DefaultFuchsiaResourceDialect>
19719        for &mut DictionaryGetRequest
19720    {
19721        #[inline]
19722        unsafe fn encode(
19723            self,
19724            encoder: &mut fidl::encoding::Encoder<
19725                '_,
19726                fidl::encoding::DefaultFuchsiaResourceDialect,
19727            >,
19728            offset: usize,
19729            _depth: fidl::encoding::Depth,
19730        ) -> fidl::Result<()> {
19731            encoder.debug_check_bounds::<DictionaryGetRequest>(offset);
19732            // Delegate to tuple encoding.
19733            fidl::encoding::Encode::<
19734                DictionaryGetRequest,
19735                fidl::encoding::DefaultFuchsiaResourceDialect,
19736            >::encode(
19737                (<fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow(
19738                    &self.key,
19739                ),),
19740                encoder,
19741                offset,
19742                _depth,
19743            )
19744        }
19745    }
19746    unsafe impl<
19747        T0: fidl::encoding::Encode<
19748                fidl::encoding::BoundedString<100>,
19749                fidl::encoding::DefaultFuchsiaResourceDialect,
19750            >,
19751    >
19752        fidl::encoding::Encode<DictionaryGetRequest, fidl::encoding::DefaultFuchsiaResourceDialect>
19753        for (T0,)
19754    {
19755        #[inline]
19756        unsafe fn encode(
19757            self,
19758            encoder: &mut fidl::encoding::Encoder<
19759                '_,
19760                fidl::encoding::DefaultFuchsiaResourceDialect,
19761            >,
19762            offset: usize,
19763            depth: fidl::encoding::Depth,
19764        ) -> fidl::Result<()> {
19765            encoder.debug_check_bounds::<DictionaryGetRequest>(offset);
19766            // Zero out padding regions. There's no need to apply masks
19767            // because the unmasked parts will be overwritten by fields.
19768            // Write the fields.
19769            self.0.encode(encoder, offset + 0, depth)?;
19770            Ok(())
19771        }
19772    }
19773
19774    impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
19775        for DictionaryGetRequest
19776    {
19777        #[inline(always)]
19778        fn new_empty() -> Self {
19779            Self {
19780                key: fidl::new_empty!(
19781                    fidl::encoding::BoundedString<100>,
19782                    fidl::encoding::DefaultFuchsiaResourceDialect
19783                ),
19784            }
19785        }
19786
19787        #[inline]
19788        unsafe fn decode(
19789            &mut self,
19790            decoder: &mut fidl::encoding::Decoder<
19791                '_,
19792                fidl::encoding::DefaultFuchsiaResourceDialect,
19793            >,
19794            offset: usize,
19795            _depth: fidl::encoding::Depth,
19796        ) -> fidl::Result<()> {
19797            decoder.debug_check_bounds::<Self>(offset);
19798            // Verify that padding bytes are zero.
19799            fidl::decode!(
19800                fidl::encoding::BoundedString<100>,
19801                fidl::encoding::DefaultFuchsiaResourceDialect,
19802                &mut self.key,
19803                decoder,
19804                offset + 0,
19805                _depth
19806            )?;
19807            Ok(())
19808        }
19809    }
19810
19811    impl fidl::encoding::ResourceTypeMarker for DictionaryInsertRequest {
19812        type Borrowed<'a> = &'a mut Self;
19813        fn take_or_borrow<'a>(
19814            value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
19815        ) -> Self::Borrowed<'a> {
19816            value
19817        }
19818    }
19819
19820    unsafe impl fidl::encoding::TypeMarker for DictionaryInsertRequest {
19821        type Owned = Self;
19822
19823        #[inline(always)]
19824        fn inline_align(_context: fidl::encoding::Context) -> usize {
19825            8
19826        }
19827
19828        #[inline(always)]
19829        fn inline_size(_context: fidl::encoding::Context) -> usize {
19830            32
19831        }
19832    }
19833
19834    unsafe impl
19835        fidl::encoding::Encode<
19836            DictionaryInsertRequest,
19837            fidl::encoding::DefaultFuchsiaResourceDialect,
19838        > for &mut DictionaryInsertRequest
19839    {
19840        #[inline]
19841        unsafe fn encode(
19842            self,
19843            encoder: &mut fidl::encoding::Encoder<
19844                '_,
19845                fidl::encoding::DefaultFuchsiaResourceDialect,
19846            >,
19847            offset: usize,
19848            _depth: fidl::encoding::Depth,
19849        ) -> fidl::Result<()> {
19850            encoder.debug_check_bounds::<DictionaryInsertRequest>(offset);
19851            // Delegate to tuple encoding.
19852            fidl::encoding::Encode::<
19853                DictionaryInsertRequest,
19854                fidl::encoding::DefaultFuchsiaResourceDialect,
19855            >::encode(
19856                (
19857                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow(
19858                        &self.key,
19859                    ),
19860                    <CapabilityDeprecated as fidl::encoding::ResourceTypeMarker>::take_or_borrow(
19861                        &mut self.capability,
19862                    ),
19863                ),
19864                encoder,
19865                offset,
19866                _depth,
19867            )
19868        }
19869    }
19870    unsafe impl<
19871        T0: fidl::encoding::Encode<
19872                fidl::encoding::BoundedString<100>,
19873                fidl::encoding::DefaultFuchsiaResourceDialect,
19874            >,
19875        T1: fidl::encoding::Encode<CapabilityDeprecated, fidl::encoding::DefaultFuchsiaResourceDialect>,
19876    >
19877        fidl::encoding::Encode<
19878            DictionaryInsertRequest,
19879            fidl::encoding::DefaultFuchsiaResourceDialect,
19880        > for (T0, T1)
19881    {
19882        #[inline]
19883        unsafe fn encode(
19884            self,
19885            encoder: &mut fidl::encoding::Encoder<
19886                '_,
19887                fidl::encoding::DefaultFuchsiaResourceDialect,
19888            >,
19889            offset: usize,
19890            depth: fidl::encoding::Depth,
19891        ) -> fidl::Result<()> {
19892            encoder.debug_check_bounds::<DictionaryInsertRequest>(offset);
19893            // Zero out padding regions. There's no need to apply masks
19894            // because the unmasked parts will be overwritten by fields.
19895            // Write the fields.
19896            self.0.encode(encoder, offset + 0, depth)?;
19897            self.1.encode(encoder, offset + 16, depth)?;
19898            Ok(())
19899        }
19900    }
19901
19902    impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
19903        for DictionaryInsertRequest
19904    {
19905        #[inline(always)]
19906        fn new_empty() -> Self {
19907            Self {
19908                key: fidl::new_empty!(
19909                    fidl::encoding::BoundedString<100>,
19910                    fidl::encoding::DefaultFuchsiaResourceDialect
19911                ),
19912                capability: fidl::new_empty!(
19913                    CapabilityDeprecated,
19914                    fidl::encoding::DefaultFuchsiaResourceDialect
19915                ),
19916            }
19917        }
19918
19919        #[inline]
19920        unsafe fn decode(
19921            &mut self,
19922            decoder: &mut fidl::encoding::Decoder<
19923                '_,
19924                fidl::encoding::DefaultFuchsiaResourceDialect,
19925            >,
19926            offset: usize,
19927            _depth: fidl::encoding::Depth,
19928        ) -> fidl::Result<()> {
19929            decoder.debug_check_bounds::<Self>(offset);
19930            // Verify that padding bytes are zero.
19931            fidl::decode!(
19932                fidl::encoding::BoundedString<100>,
19933                fidl::encoding::DefaultFuchsiaResourceDialect,
19934                &mut self.key,
19935                decoder,
19936                offset + 0,
19937                _depth
19938            )?;
19939            fidl::decode!(
19940                CapabilityDeprecated,
19941                fidl::encoding::DefaultFuchsiaResourceDialect,
19942                &mut self.capability,
19943                decoder,
19944                offset + 16,
19945                _depth
19946            )?;
19947            Ok(())
19948        }
19949    }
19950
19951    impl fidl::encoding::ResourceTypeMarker for DictionaryIterateKeysRequest {
19952        type Borrowed<'a> = &'a mut Self;
19953        fn take_or_borrow<'a>(
19954            value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
19955        ) -> Self::Borrowed<'a> {
19956            value
19957        }
19958    }
19959
19960    unsafe impl fidl::encoding::TypeMarker for DictionaryIterateKeysRequest {
19961        type Owned = Self;
19962
19963        #[inline(always)]
19964        fn inline_align(_context: fidl::encoding::Context) -> usize {
19965            4
19966        }
19967
19968        #[inline(always)]
19969        fn inline_size(_context: fidl::encoding::Context) -> usize {
19970            4
19971        }
19972    }
19973
19974    unsafe impl
19975        fidl::encoding::Encode<
19976            DictionaryIterateKeysRequest,
19977            fidl::encoding::DefaultFuchsiaResourceDialect,
19978        > for &mut DictionaryIterateKeysRequest
19979    {
19980        #[inline]
19981        unsafe fn encode(
19982            self,
19983            encoder: &mut fidl::encoding::Encoder<
19984                '_,
19985                fidl::encoding::DefaultFuchsiaResourceDialect,
19986            >,
19987            offset: usize,
19988            _depth: fidl::encoding::Depth,
19989        ) -> fidl::Result<()> {
19990            encoder.debug_check_bounds::<DictionaryIterateKeysRequest>(offset);
19991            // Delegate to tuple encoding.
19992            fidl::encoding::Encode::<
19993                DictionaryIterateKeysRequest,
19994                fidl::encoding::DefaultFuchsiaResourceDialect,
19995            >::encode(
19996                (
19997                    <fidl::encoding::Endpoint<
19998                        fidl::endpoints::ServerEnd<DictionaryKeyIteratorMarker>,
19999                    > as fidl::encoding::ResourceTypeMarker>::take_or_borrow(
20000                        &mut self.key_iterator,
20001                    ),
20002                ),
20003                encoder,
20004                offset,
20005                _depth,
20006            )
20007        }
20008    }
20009    unsafe impl<
20010        T0: fidl::encoding::Encode<
20011                fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<DictionaryKeyIteratorMarker>>,
20012                fidl::encoding::DefaultFuchsiaResourceDialect,
20013            >,
20014    >
20015        fidl::encoding::Encode<
20016            DictionaryIterateKeysRequest,
20017            fidl::encoding::DefaultFuchsiaResourceDialect,
20018        > for (T0,)
20019    {
20020        #[inline]
20021        unsafe fn encode(
20022            self,
20023            encoder: &mut fidl::encoding::Encoder<
20024                '_,
20025                fidl::encoding::DefaultFuchsiaResourceDialect,
20026            >,
20027            offset: usize,
20028            depth: fidl::encoding::Depth,
20029        ) -> fidl::Result<()> {
20030            encoder.debug_check_bounds::<DictionaryIterateKeysRequest>(offset);
20031            // Zero out padding regions. There's no need to apply masks
20032            // because the unmasked parts will be overwritten by fields.
20033            // Write the fields.
20034            self.0.encode(encoder, offset + 0, depth)?;
20035            Ok(())
20036        }
20037    }
20038
20039    impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
20040        for DictionaryIterateKeysRequest
20041    {
20042        #[inline(always)]
20043        fn new_empty() -> Self {
20044            Self {
20045                key_iterator: fidl::new_empty!(
20046                    fidl::encoding::Endpoint<
20047                        fidl::endpoints::ServerEnd<DictionaryKeyIteratorMarker>,
20048                    >,
20049                    fidl::encoding::DefaultFuchsiaResourceDialect
20050                ),
20051            }
20052        }
20053
20054        #[inline]
20055        unsafe fn decode(
20056            &mut self,
20057            decoder: &mut fidl::encoding::Decoder<
20058                '_,
20059                fidl::encoding::DefaultFuchsiaResourceDialect,
20060            >,
20061            offset: usize,
20062            _depth: fidl::encoding::Depth,
20063        ) -> fidl::Result<()> {
20064            decoder.debug_check_bounds::<Self>(offset);
20065            // Verify that padding bytes are zero.
20066            fidl::decode!(
20067                fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<DictionaryKeyIteratorMarker>>,
20068                fidl::encoding::DefaultFuchsiaResourceDialect,
20069                &mut self.key_iterator,
20070                decoder,
20071                offset + 0,
20072                _depth
20073            )?;
20074            Ok(())
20075        }
20076    }
20077
20078    impl fidl::encoding::ResourceTypeMarker for DictionaryRemoveRequest {
20079        type Borrowed<'a> = &'a mut Self;
20080        fn take_or_borrow<'a>(
20081            value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
20082        ) -> Self::Borrowed<'a> {
20083            value
20084        }
20085    }
20086
20087    unsafe impl fidl::encoding::TypeMarker for DictionaryRemoveRequest {
20088        type Owned = Self;
20089
20090        #[inline(always)]
20091        fn inline_align(_context: fidl::encoding::Context) -> usize {
20092            8
20093        }
20094
20095        #[inline(always)]
20096        fn inline_size(_context: fidl::encoding::Context) -> usize {
20097            16
20098        }
20099    }
20100
20101    unsafe impl
20102        fidl::encoding::Encode<
20103            DictionaryRemoveRequest,
20104            fidl::encoding::DefaultFuchsiaResourceDialect,
20105        > for &mut DictionaryRemoveRequest
20106    {
20107        #[inline]
20108        unsafe fn encode(
20109            self,
20110            encoder: &mut fidl::encoding::Encoder<
20111                '_,
20112                fidl::encoding::DefaultFuchsiaResourceDialect,
20113            >,
20114            offset: usize,
20115            _depth: fidl::encoding::Depth,
20116        ) -> fidl::Result<()> {
20117            encoder.debug_check_bounds::<DictionaryRemoveRequest>(offset);
20118            // Delegate to tuple encoding.
20119            fidl::encoding::Encode::<
20120                DictionaryRemoveRequest,
20121                fidl::encoding::DefaultFuchsiaResourceDialect,
20122            >::encode(
20123                (<fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow(
20124                    &self.key,
20125                ),),
20126                encoder,
20127                offset,
20128                _depth,
20129            )
20130        }
20131    }
20132    unsafe impl<
20133        T0: fidl::encoding::Encode<
20134                fidl::encoding::BoundedString<100>,
20135                fidl::encoding::DefaultFuchsiaResourceDialect,
20136            >,
20137    >
20138        fidl::encoding::Encode<
20139            DictionaryRemoveRequest,
20140            fidl::encoding::DefaultFuchsiaResourceDialect,
20141        > for (T0,)
20142    {
20143        #[inline]
20144        unsafe fn encode(
20145            self,
20146            encoder: &mut fidl::encoding::Encoder<
20147                '_,
20148                fidl::encoding::DefaultFuchsiaResourceDialect,
20149            >,
20150            offset: usize,
20151            depth: fidl::encoding::Depth,
20152        ) -> fidl::Result<()> {
20153            encoder.debug_check_bounds::<DictionaryRemoveRequest>(offset);
20154            // Zero out padding regions. There's no need to apply masks
20155            // because the unmasked parts will be overwritten by fields.
20156            // Write the fields.
20157            self.0.encode(encoder, offset + 0, depth)?;
20158            Ok(())
20159        }
20160    }
20161
20162    impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
20163        for DictionaryRemoveRequest
20164    {
20165        #[inline(always)]
20166        fn new_empty() -> Self {
20167            Self {
20168                key: fidl::new_empty!(
20169                    fidl::encoding::BoundedString<100>,
20170                    fidl::encoding::DefaultFuchsiaResourceDialect
20171                ),
20172            }
20173        }
20174
20175        #[inline]
20176        unsafe fn decode(
20177            &mut self,
20178            decoder: &mut fidl::encoding::Decoder<
20179                '_,
20180                fidl::encoding::DefaultFuchsiaResourceDialect,
20181            >,
20182            offset: usize,
20183            _depth: fidl::encoding::Depth,
20184        ) -> fidl::Result<()> {
20185            decoder.debug_check_bounds::<Self>(offset);
20186            // Verify that padding bytes are zero.
20187            fidl::decode!(
20188                fidl::encoding::BoundedString<100>,
20189                fidl::encoding::DefaultFuchsiaResourceDialect,
20190                &mut self.key,
20191                decoder,
20192                offset + 0,
20193                _depth
20194            )?;
20195            Ok(())
20196        }
20197    }
20198
20199    impl fidl::encoding::ResourceTypeMarker for DictionaryRouterDeprecatedRouteRequest {
20200        type Borrowed<'a> = &'a mut Self;
20201        fn take_or_borrow<'a>(
20202            value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
20203        ) -> Self::Borrowed<'a> {
20204            value
20205        }
20206    }
20207
20208    unsafe impl fidl::encoding::TypeMarker for DictionaryRouterDeprecatedRouteRequest {
20209        type Owned = Self;
20210
20211        #[inline(always)]
20212        fn inline_align(_context: fidl::encoding::Context) -> usize {
20213            8
20214        }
20215
20216        #[inline(always)]
20217        fn inline_size(_context: fidl::encoding::Context) -> usize {
20218            24
20219        }
20220    }
20221
20222    unsafe impl
20223        fidl::encoding::Encode<
20224            DictionaryRouterDeprecatedRouteRequest,
20225            fidl::encoding::DefaultFuchsiaResourceDialect,
20226        > for &mut DictionaryRouterDeprecatedRouteRequest
20227    {
20228        #[inline]
20229        unsafe fn encode(
20230            self,
20231            encoder: &mut fidl::encoding::Encoder<
20232                '_,
20233                fidl::encoding::DefaultFuchsiaResourceDialect,
20234            >,
20235            offset: usize,
20236            _depth: fidl::encoding::Depth,
20237        ) -> fidl::Result<()> {
20238            encoder.debug_check_bounds::<DictionaryRouterDeprecatedRouteRequest>(offset);
20239            // Delegate to tuple encoding.
20240            fidl::encoding::Encode::<DictionaryRouterDeprecatedRouteRequest, fidl::encoding::DefaultFuchsiaResourceDialect>::encode(
20241                (
20242                    <DeprecatedRouteRequest as fidl::encoding::ResourceTypeMarker>::take_or_borrow(&mut self.request),
20243                    <fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<DictionaryMarker>> as fidl::encoding::ResourceTypeMarker>::take_or_borrow(&mut self.dictionary_server_end),
20244                ),
20245                encoder, offset, _depth
20246            )
20247        }
20248    }
20249    unsafe impl<
20250        T0: fidl::encoding::Encode<
20251                DeprecatedRouteRequest,
20252                fidl::encoding::DefaultFuchsiaResourceDialect,
20253            >,
20254        T1: fidl::encoding::Encode<
20255                fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<DictionaryMarker>>,
20256                fidl::encoding::DefaultFuchsiaResourceDialect,
20257            >,
20258    >
20259        fidl::encoding::Encode<
20260            DictionaryRouterDeprecatedRouteRequest,
20261            fidl::encoding::DefaultFuchsiaResourceDialect,
20262        > for (T0, T1)
20263    {
20264        #[inline]
20265        unsafe fn encode(
20266            self,
20267            encoder: &mut fidl::encoding::Encoder<
20268                '_,
20269                fidl::encoding::DefaultFuchsiaResourceDialect,
20270            >,
20271            offset: usize,
20272            depth: fidl::encoding::Depth,
20273        ) -> fidl::Result<()> {
20274            encoder.debug_check_bounds::<DictionaryRouterDeprecatedRouteRequest>(offset);
20275            // Zero out padding regions. There's no need to apply masks
20276            // because the unmasked parts will be overwritten by fields.
20277            unsafe {
20278                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(16);
20279                (ptr as *mut u64).write_unaligned(0);
20280            }
20281            // Write the fields.
20282            self.0.encode(encoder, offset + 0, depth)?;
20283            self.1.encode(encoder, offset + 16, depth)?;
20284            Ok(())
20285        }
20286    }
20287
20288    impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
20289        for DictionaryRouterDeprecatedRouteRequest
20290    {
20291        #[inline(always)]
20292        fn new_empty() -> Self {
20293            Self {
20294                request: fidl::new_empty!(
20295                    DeprecatedRouteRequest,
20296                    fidl::encoding::DefaultFuchsiaResourceDialect
20297                ),
20298                dictionary_server_end: fidl::new_empty!(
20299                    fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<DictionaryMarker>>,
20300                    fidl::encoding::DefaultFuchsiaResourceDialect
20301                ),
20302            }
20303        }
20304
20305        #[inline]
20306        unsafe fn decode(
20307            &mut self,
20308            decoder: &mut fidl::encoding::Decoder<
20309                '_,
20310                fidl::encoding::DefaultFuchsiaResourceDialect,
20311            >,
20312            offset: usize,
20313            _depth: fidl::encoding::Depth,
20314        ) -> fidl::Result<()> {
20315            decoder.debug_check_bounds::<Self>(offset);
20316            // Verify that padding bytes are zero.
20317            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(16) };
20318            let padval = unsafe { (ptr as *const u64).read_unaligned() };
20319            let mask = 0xffffffff00000000u64;
20320            let maskedval = padval & mask;
20321            if maskedval != 0 {
20322                return Err(fidl::Error::NonZeroPadding {
20323                    padding_start: offset + 16 + ((mask as u64).trailing_zeros() / 8) as usize,
20324                });
20325            }
20326            fidl::decode!(
20327                DeprecatedRouteRequest,
20328                fidl::encoding::DefaultFuchsiaResourceDialect,
20329                &mut self.request,
20330                decoder,
20331                offset + 0,
20332                _depth
20333            )?;
20334            fidl::decode!(
20335                fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<DictionaryMarker>>,
20336                fidl::encoding::DefaultFuchsiaResourceDialect,
20337                &mut self.dictionary_server_end,
20338                decoder,
20339                offset + 16,
20340                _depth
20341            )?;
20342            Ok(())
20343        }
20344    }
20345
20346    impl fidl::encoding::ResourceTypeMarker for DictionaryRouterDeprecatedRouteResponse {
20347        type Borrowed<'a> = &'a mut Self;
20348        fn take_or_borrow<'a>(
20349            value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
20350        ) -> Self::Borrowed<'a> {
20351            value
20352        }
20353    }
20354
20355    unsafe impl fidl::encoding::TypeMarker for DictionaryRouterDeprecatedRouteResponse {
20356        type Owned = Self;
20357
20358        #[inline(always)]
20359        fn inline_align(_context: fidl::encoding::Context) -> usize {
20360            4
20361        }
20362
20363        #[inline(always)]
20364        fn inline_size(_context: fidl::encoding::Context) -> usize {
20365            4
20366        }
20367    }
20368
20369    unsafe impl
20370        fidl::encoding::Encode<
20371            DictionaryRouterDeprecatedRouteResponse,
20372            fidl::encoding::DefaultFuchsiaResourceDialect,
20373        > for &mut DictionaryRouterDeprecatedRouteResponse
20374    {
20375        #[inline]
20376        unsafe fn encode(
20377            self,
20378            encoder: &mut fidl::encoding::Encoder<
20379                '_,
20380                fidl::encoding::DefaultFuchsiaResourceDialect,
20381            >,
20382            offset: usize,
20383            _depth: fidl::encoding::Depth,
20384        ) -> fidl::Result<()> {
20385            encoder.debug_check_bounds::<DictionaryRouterDeprecatedRouteResponse>(offset);
20386            // Delegate to tuple encoding.
20387            fidl::encoding::Encode::<
20388                DictionaryRouterDeprecatedRouteResponse,
20389                fidl::encoding::DefaultFuchsiaResourceDialect,
20390            >::encode(
20391                (<RouterResponse as fidl::encoding::ValueTypeMarker>::borrow(&self.response),),
20392                encoder,
20393                offset,
20394                _depth,
20395            )
20396        }
20397    }
20398    unsafe impl<
20399        T0: fidl::encoding::Encode<RouterResponse, fidl::encoding::DefaultFuchsiaResourceDialect>,
20400    >
20401        fidl::encoding::Encode<
20402            DictionaryRouterDeprecatedRouteResponse,
20403            fidl::encoding::DefaultFuchsiaResourceDialect,
20404        > for (T0,)
20405    {
20406        #[inline]
20407        unsafe fn encode(
20408            self,
20409            encoder: &mut fidl::encoding::Encoder<
20410                '_,
20411                fidl::encoding::DefaultFuchsiaResourceDialect,
20412            >,
20413            offset: usize,
20414            depth: fidl::encoding::Depth,
20415        ) -> fidl::Result<()> {
20416            encoder.debug_check_bounds::<DictionaryRouterDeprecatedRouteResponse>(offset);
20417            // Zero out padding regions. There's no need to apply masks
20418            // because the unmasked parts will be overwritten by fields.
20419            // Write the fields.
20420            self.0.encode(encoder, offset + 0, depth)?;
20421            Ok(())
20422        }
20423    }
20424
20425    impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
20426        for DictionaryRouterDeprecatedRouteResponse
20427    {
20428        #[inline(always)]
20429        fn new_empty() -> Self {
20430            Self {
20431                response: fidl::new_empty!(
20432                    RouterResponse,
20433                    fidl::encoding::DefaultFuchsiaResourceDialect
20434                ),
20435            }
20436        }
20437
20438        #[inline]
20439        unsafe fn decode(
20440            &mut self,
20441            decoder: &mut fidl::encoding::Decoder<
20442                '_,
20443                fidl::encoding::DefaultFuchsiaResourceDialect,
20444            >,
20445            offset: usize,
20446            _depth: fidl::encoding::Depth,
20447        ) -> fidl::Result<()> {
20448            decoder.debug_check_bounds::<Self>(offset);
20449            // Verify that padding bytes are zero.
20450            fidl::decode!(
20451                RouterResponse,
20452                fidl::encoding::DefaultFuchsiaResourceDialect,
20453                &mut self.response,
20454                decoder,
20455                offset + 0,
20456                _depth
20457            )?;
20458            Ok(())
20459        }
20460    }
20461
20462    impl fidl::encoding::ResourceTypeMarker for DictionaryRouterRouteRequest {
20463        type Borrowed<'a> = &'a mut Self;
20464        fn take_or_borrow<'a>(
20465            value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
20466        ) -> Self::Borrowed<'a> {
20467            value
20468        }
20469    }
20470
20471    unsafe impl fidl::encoding::TypeMarker for DictionaryRouterRouteRequest {
20472        type Owned = Self;
20473
20474        #[inline(always)]
20475        fn inline_align(_context: fidl::encoding::Context) -> usize {
20476            8
20477        }
20478
20479        #[inline(always)]
20480        fn inline_size(_context: fidl::encoding::Context) -> usize {
20481            24
20482        }
20483    }
20484
20485    unsafe impl
20486        fidl::encoding::Encode<
20487            DictionaryRouterRouteRequest,
20488            fidl::encoding::DefaultFuchsiaResourceDialect,
20489        > for &mut DictionaryRouterRouteRequest
20490    {
20491        #[inline]
20492        unsafe fn encode(
20493            self,
20494            encoder: &mut fidl::encoding::Encoder<
20495                '_,
20496                fidl::encoding::DefaultFuchsiaResourceDialect,
20497            >,
20498            offset: usize,
20499            _depth: fidl::encoding::Depth,
20500        ) -> fidl::Result<()> {
20501            encoder.debug_check_bounds::<DictionaryRouterRouteRequest>(offset);
20502            // Delegate to tuple encoding.
20503            fidl::encoding::Encode::<
20504                DictionaryRouterRouteRequest,
20505                fidl::encoding::DefaultFuchsiaResourceDialect,
20506            >::encode(
20507                (
20508                    <RouteRequest as fidl::encoding::ResourceTypeMarker>::take_or_borrow(
20509                        &mut self.request,
20510                    ),
20511                    <fidl::encoding::HandleType<
20512                        fidl::EventPair,
20513                        { fidl::ObjectType::EVENTPAIR.into_raw() },
20514                        2147483648,
20515                    > as fidl::encoding::ResourceTypeMarker>::take_or_borrow(
20516                        &mut self.instance_token,
20517                    ),
20518                    <fidl::encoding::HandleType<
20519                        fidl::EventPair,
20520                        { fidl::ObjectType::EVENTPAIR.into_raw() },
20521                        2147483648,
20522                    > as fidl::encoding::ResourceTypeMarker>::take_or_borrow(
20523                        &mut self.handle
20524                    ),
20525                ),
20526                encoder,
20527                offset,
20528                _depth,
20529            )
20530        }
20531    }
20532    unsafe impl<
20533        T0: fidl::encoding::Encode<RouteRequest, fidl::encoding::DefaultFuchsiaResourceDialect>,
20534        T1: fidl::encoding::Encode<
20535                fidl::encoding::HandleType<
20536                    fidl::EventPair,
20537                    { fidl::ObjectType::EVENTPAIR.into_raw() },
20538                    2147483648,
20539                >,
20540                fidl::encoding::DefaultFuchsiaResourceDialect,
20541            >,
20542        T2: fidl::encoding::Encode<
20543                fidl::encoding::HandleType<
20544                    fidl::EventPair,
20545                    { fidl::ObjectType::EVENTPAIR.into_raw() },
20546                    2147483648,
20547                >,
20548                fidl::encoding::DefaultFuchsiaResourceDialect,
20549            >,
20550    >
20551        fidl::encoding::Encode<
20552            DictionaryRouterRouteRequest,
20553            fidl::encoding::DefaultFuchsiaResourceDialect,
20554        > for (T0, T1, T2)
20555    {
20556        #[inline]
20557        unsafe fn encode(
20558            self,
20559            encoder: &mut fidl::encoding::Encoder<
20560                '_,
20561                fidl::encoding::DefaultFuchsiaResourceDialect,
20562            >,
20563            offset: usize,
20564            depth: fidl::encoding::Depth,
20565        ) -> fidl::Result<()> {
20566            encoder.debug_check_bounds::<DictionaryRouterRouteRequest>(offset);
20567            // Zero out padding regions. There's no need to apply masks
20568            // because the unmasked parts will be overwritten by fields.
20569            // Write the fields.
20570            self.0.encode(encoder, offset + 0, depth)?;
20571            self.1.encode(encoder, offset + 16, depth)?;
20572            self.2.encode(encoder, offset + 20, depth)?;
20573            Ok(())
20574        }
20575    }
20576
20577    impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
20578        for DictionaryRouterRouteRequest
20579    {
20580        #[inline(always)]
20581        fn new_empty() -> Self {
20582            Self {
20583                request: fidl::new_empty!(
20584                    RouteRequest,
20585                    fidl::encoding::DefaultFuchsiaResourceDialect
20586                ),
20587                instance_token: fidl::new_empty!(fidl::encoding::HandleType<fidl::EventPair, { fidl::ObjectType::EVENTPAIR.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect),
20588                handle: fidl::new_empty!(fidl::encoding::HandleType<fidl::EventPair, { fidl::ObjectType::EVENTPAIR.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect),
20589            }
20590        }
20591
20592        #[inline]
20593        unsafe fn decode(
20594            &mut self,
20595            decoder: &mut fidl::encoding::Decoder<
20596                '_,
20597                fidl::encoding::DefaultFuchsiaResourceDialect,
20598            >,
20599            offset: usize,
20600            _depth: fidl::encoding::Depth,
20601        ) -> fidl::Result<()> {
20602            decoder.debug_check_bounds::<Self>(offset);
20603            // Verify that padding bytes are zero.
20604            fidl::decode!(
20605                RouteRequest,
20606                fidl::encoding::DefaultFuchsiaResourceDialect,
20607                &mut self.request,
20608                decoder,
20609                offset + 0,
20610                _depth
20611            )?;
20612            fidl::decode!(fidl::encoding::HandleType<fidl::EventPair, { fidl::ObjectType::EVENTPAIR.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect, &mut self.instance_token, decoder, offset + 16, _depth)?;
20613            fidl::decode!(fidl::encoding::HandleType<fidl::EventPair, { fidl::ObjectType::EVENTPAIR.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect, &mut self.handle, decoder, offset + 20, _depth)?;
20614            Ok(())
20615        }
20616    }
20617
20618    impl fidl::encoding::ResourceTypeMarker for DictionaryGetResponse {
20619        type Borrowed<'a> = &'a mut Self;
20620        fn take_or_borrow<'a>(
20621            value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
20622        ) -> Self::Borrowed<'a> {
20623            value
20624        }
20625    }
20626
20627    unsafe impl fidl::encoding::TypeMarker for DictionaryGetResponse {
20628        type Owned = Self;
20629
20630        #[inline(always)]
20631        fn inline_align(_context: fidl::encoding::Context) -> usize {
20632            8
20633        }
20634
20635        #[inline(always)]
20636        fn inline_size(_context: fidl::encoding::Context) -> usize {
20637            16
20638        }
20639    }
20640
20641    unsafe impl
20642        fidl::encoding::Encode<DictionaryGetResponse, fidl::encoding::DefaultFuchsiaResourceDialect>
20643        for &mut DictionaryGetResponse
20644    {
20645        #[inline]
20646        unsafe fn encode(
20647            self,
20648            encoder: &mut fidl::encoding::Encoder<
20649                '_,
20650                fidl::encoding::DefaultFuchsiaResourceDialect,
20651            >,
20652            offset: usize,
20653            _depth: fidl::encoding::Depth,
20654        ) -> fidl::Result<()> {
20655            encoder.debug_check_bounds::<DictionaryGetResponse>(offset);
20656            // Delegate to tuple encoding.
20657            fidl::encoding::Encode::<DictionaryGetResponse, fidl::encoding::DefaultFuchsiaResourceDialect>::encode(
20658                (
20659                    <fidl::encoding::OptionalUnion<CapabilityDeprecated> as fidl::encoding::ResourceTypeMarker>::take_or_borrow(&mut self.capability),
20660                ),
20661                encoder, offset, _depth
20662            )
20663        }
20664    }
20665    unsafe impl<
20666        T0: fidl::encoding::Encode<
20667                fidl::encoding::OptionalUnion<CapabilityDeprecated>,
20668                fidl::encoding::DefaultFuchsiaResourceDialect,
20669            >,
20670    >
20671        fidl::encoding::Encode<DictionaryGetResponse, fidl::encoding::DefaultFuchsiaResourceDialect>
20672        for (T0,)
20673    {
20674        #[inline]
20675        unsafe fn encode(
20676            self,
20677            encoder: &mut fidl::encoding::Encoder<
20678                '_,
20679                fidl::encoding::DefaultFuchsiaResourceDialect,
20680            >,
20681            offset: usize,
20682            depth: fidl::encoding::Depth,
20683        ) -> fidl::Result<()> {
20684            encoder.debug_check_bounds::<DictionaryGetResponse>(offset);
20685            // Zero out padding regions. There's no need to apply masks
20686            // because the unmasked parts will be overwritten by fields.
20687            // Write the fields.
20688            self.0.encode(encoder, offset + 0, depth)?;
20689            Ok(())
20690        }
20691    }
20692
20693    impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
20694        for DictionaryGetResponse
20695    {
20696        #[inline(always)]
20697        fn new_empty() -> Self {
20698            Self {
20699                capability: fidl::new_empty!(
20700                    fidl::encoding::OptionalUnion<CapabilityDeprecated>,
20701                    fidl::encoding::DefaultFuchsiaResourceDialect
20702                ),
20703            }
20704        }
20705
20706        #[inline]
20707        unsafe fn decode(
20708            &mut self,
20709            decoder: &mut fidl::encoding::Decoder<
20710                '_,
20711                fidl::encoding::DefaultFuchsiaResourceDialect,
20712            >,
20713            offset: usize,
20714            _depth: fidl::encoding::Depth,
20715        ) -> fidl::Result<()> {
20716            decoder.debug_check_bounds::<Self>(offset);
20717            // Verify that padding bytes are zero.
20718            fidl::decode!(
20719                fidl::encoding::OptionalUnion<CapabilityDeprecated>,
20720                fidl::encoding::DefaultFuchsiaResourceDialect,
20721                &mut self.capability,
20722                decoder,
20723                offset + 0,
20724                _depth
20725            )?;
20726            Ok(())
20727        }
20728    }
20729
20730    impl fidl::encoding::ResourceTypeMarker for DictionaryLegacyExportResponse {
20731        type Borrowed<'a> = &'a mut Self;
20732        fn take_or_borrow<'a>(
20733            value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
20734        ) -> Self::Borrowed<'a> {
20735            value
20736        }
20737    }
20738
20739    unsafe impl fidl::encoding::TypeMarker for DictionaryLegacyExportResponse {
20740        type Owned = Self;
20741
20742        #[inline(always)]
20743        fn inline_align(_context: fidl::encoding::Context) -> usize {
20744            4
20745        }
20746
20747        #[inline(always)]
20748        fn inline_size(_context: fidl::encoding::Context) -> usize {
20749            4
20750        }
20751    }
20752
20753    unsafe impl
20754        fidl::encoding::Encode<
20755            DictionaryLegacyExportResponse,
20756            fidl::encoding::DefaultFuchsiaResourceDialect,
20757        > for &mut DictionaryLegacyExportResponse
20758    {
20759        #[inline]
20760        unsafe fn encode(
20761            self,
20762            encoder: &mut fidl::encoding::Encoder<
20763                '_,
20764                fidl::encoding::DefaultFuchsiaResourceDialect,
20765            >,
20766            offset: usize,
20767            _depth: fidl::encoding::Depth,
20768        ) -> fidl::Result<()> {
20769            encoder.debug_check_bounds::<DictionaryLegacyExportResponse>(offset);
20770            // Delegate to tuple encoding.
20771            fidl::encoding::Encode::<DictionaryLegacyExportResponse, fidl::encoding::DefaultFuchsiaResourceDialect>::encode(
20772                (
20773                    <fidl_fuchsia_component_sandbox::DictionaryRef as fidl::encoding::ResourceTypeMarker>::take_or_borrow(&mut self.dictionary_ref),
20774                ),
20775                encoder, offset, _depth
20776            )
20777        }
20778    }
20779    unsafe impl<
20780        T0: fidl::encoding::Encode<
20781                fidl_fuchsia_component_sandbox::DictionaryRef,
20782                fidl::encoding::DefaultFuchsiaResourceDialect,
20783            >,
20784    >
20785        fidl::encoding::Encode<
20786            DictionaryLegacyExportResponse,
20787            fidl::encoding::DefaultFuchsiaResourceDialect,
20788        > for (T0,)
20789    {
20790        #[inline]
20791        unsafe fn encode(
20792            self,
20793            encoder: &mut fidl::encoding::Encoder<
20794                '_,
20795                fidl::encoding::DefaultFuchsiaResourceDialect,
20796            >,
20797            offset: usize,
20798            depth: fidl::encoding::Depth,
20799        ) -> fidl::Result<()> {
20800            encoder.debug_check_bounds::<DictionaryLegacyExportResponse>(offset);
20801            // Zero out padding regions. There's no need to apply masks
20802            // because the unmasked parts will be overwritten by fields.
20803            // Write the fields.
20804            self.0.encode(encoder, offset + 0, depth)?;
20805            Ok(())
20806        }
20807    }
20808
20809    impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
20810        for DictionaryLegacyExportResponse
20811    {
20812        #[inline(always)]
20813        fn new_empty() -> Self {
20814            Self {
20815                dictionary_ref: fidl::new_empty!(
20816                    fidl_fuchsia_component_sandbox::DictionaryRef,
20817                    fidl::encoding::DefaultFuchsiaResourceDialect
20818                ),
20819            }
20820        }
20821
20822        #[inline]
20823        unsafe fn decode(
20824            &mut self,
20825            decoder: &mut fidl::encoding::Decoder<
20826                '_,
20827                fidl::encoding::DefaultFuchsiaResourceDialect,
20828            >,
20829            offset: usize,
20830            _depth: fidl::encoding::Depth,
20831        ) -> fidl::Result<()> {
20832            decoder.debug_check_bounds::<Self>(offset);
20833            // Verify that padding bytes are zero.
20834            fidl::decode!(
20835                fidl_fuchsia_component_sandbox::DictionaryRef,
20836                fidl::encoding::DefaultFuchsiaResourceDialect,
20837                &mut self.dictionary_ref,
20838                decoder,
20839                offset + 0,
20840                _depth
20841            )?;
20842            Ok(())
20843        }
20844    }
20845
20846    impl fidl::encoding::ResourceTypeMarker for DictionaryRemoveResponse {
20847        type Borrowed<'a> = &'a mut Self;
20848        fn take_or_borrow<'a>(
20849            value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
20850        ) -> Self::Borrowed<'a> {
20851            value
20852        }
20853    }
20854
20855    unsafe impl fidl::encoding::TypeMarker for DictionaryRemoveResponse {
20856        type Owned = Self;
20857
20858        #[inline(always)]
20859        fn inline_align(_context: fidl::encoding::Context) -> usize {
20860            8
20861        }
20862
20863        #[inline(always)]
20864        fn inline_size(_context: fidl::encoding::Context) -> usize {
20865            16
20866        }
20867    }
20868
20869    unsafe impl
20870        fidl::encoding::Encode<
20871            DictionaryRemoveResponse,
20872            fidl::encoding::DefaultFuchsiaResourceDialect,
20873        > for &mut DictionaryRemoveResponse
20874    {
20875        #[inline]
20876        unsafe fn encode(
20877            self,
20878            encoder: &mut fidl::encoding::Encoder<
20879                '_,
20880                fidl::encoding::DefaultFuchsiaResourceDialect,
20881            >,
20882            offset: usize,
20883            _depth: fidl::encoding::Depth,
20884        ) -> fidl::Result<()> {
20885            encoder.debug_check_bounds::<DictionaryRemoveResponse>(offset);
20886            // Delegate to tuple encoding.
20887            fidl::encoding::Encode::<DictionaryRemoveResponse, fidl::encoding::DefaultFuchsiaResourceDialect>::encode(
20888                (
20889                    <fidl::encoding::OptionalUnion<CapabilityDeprecated> as fidl::encoding::ResourceTypeMarker>::take_or_borrow(&mut self.capability),
20890                ),
20891                encoder, offset, _depth
20892            )
20893        }
20894    }
20895    unsafe impl<
20896        T0: fidl::encoding::Encode<
20897                fidl::encoding::OptionalUnion<CapabilityDeprecated>,
20898                fidl::encoding::DefaultFuchsiaResourceDialect,
20899            >,
20900    >
20901        fidl::encoding::Encode<
20902            DictionaryRemoveResponse,
20903            fidl::encoding::DefaultFuchsiaResourceDialect,
20904        > for (T0,)
20905    {
20906        #[inline]
20907        unsafe fn encode(
20908            self,
20909            encoder: &mut fidl::encoding::Encoder<
20910                '_,
20911                fidl::encoding::DefaultFuchsiaResourceDialect,
20912            >,
20913            offset: usize,
20914            depth: fidl::encoding::Depth,
20915        ) -> fidl::Result<()> {
20916            encoder.debug_check_bounds::<DictionaryRemoveResponse>(offset);
20917            // Zero out padding regions. There's no need to apply masks
20918            // because the unmasked parts will be overwritten by fields.
20919            // Write the fields.
20920            self.0.encode(encoder, offset + 0, depth)?;
20921            Ok(())
20922        }
20923    }
20924
20925    impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
20926        for DictionaryRemoveResponse
20927    {
20928        #[inline(always)]
20929        fn new_empty() -> Self {
20930            Self {
20931                capability: fidl::new_empty!(
20932                    fidl::encoding::OptionalUnion<CapabilityDeprecated>,
20933                    fidl::encoding::DefaultFuchsiaResourceDialect
20934                ),
20935            }
20936        }
20937
20938        #[inline]
20939        unsafe fn decode(
20940            &mut self,
20941            decoder: &mut fidl::encoding::Decoder<
20942                '_,
20943                fidl::encoding::DefaultFuchsiaResourceDialect,
20944            >,
20945            offset: usize,
20946            _depth: fidl::encoding::Depth,
20947        ) -> fidl::Result<()> {
20948            decoder.debug_check_bounds::<Self>(offset);
20949            // Verify that padding bytes are zero.
20950            fidl::decode!(
20951                fidl::encoding::OptionalUnion<CapabilityDeprecated>,
20952                fidl::encoding::DefaultFuchsiaResourceDialect,
20953                &mut self.capability,
20954                decoder,
20955                offset + 0,
20956                _depth
20957            )?;
20958            Ok(())
20959        }
20960    }
20961
20962    impl fidl::encoding::ResourceTypeMarker for DirConnectorConnectRequest {
20963        type Borrowed<'a> = &'a mut Self;
20964        fn take_or_borrow<'a>(
20965            value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
20966        ) -> Self::Borrowed<'a> {
20967            value
20968        }
20969    }
20970
20971    unsafe impl fidl::encoding::TypeMarker for DirConnectorConnectRequest {
20972        type Owned = Self;
20973
20974        #[inline(always)]
20975        fn inline_align(_context: fidl::encoding::Context) -> usize {
20976            4
20977        }
20978
20979        #[inline(always)]
20980        fn inline_size(_context: fidl::encoding::Context) -> usize {
20981            4
20982        }
20983    }
20984
20985    unsafe impl
20986        fidl::encoding::Encode<
20987            DirConnectorConnectRequest,
20988            fidl::encoding::DefaultFuchsiaResourceDialect,
20989        > for &mut DirConnectorConnectRequest
20990    {
20991        #[inline]
20992        unsafe fn encode(
20993            self,
20994            encoder: &mut fidl::encoding::Encoder<
20995                '_,
20996                fidl::encoding::DefaultFuchsiaResourceDialect,
20997            >,
20998            offset: usize,
20999            _depth: fidl::encoding::Depth,
21000        ) -> fidl::Result<()> {
21001            encoder.debug_check_bounds::<DirConnectorConnectRequest>(offset);
21002            // Delegate to tuple encoding.
21003            fidl::encoding::Encode::<
21004                DirConnectorConnectRequest,
21005                fidl::encoding::DefaultFuchsiaResourceDialect,
21006            >::encode(
21007                (<fidl::encoding::Endpoint<
21008                    fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>,
21009                > as fidl::encoding::ResourceTypeMarker>::take_or_borrow(
21010                    &mut self.channel
21011                ),),
21012                encoder,
21013                offset,
21014                _depth,
21015            )
21016        }
21017    }
21018    unsafe impl<
21019        T0: fidl::encoding::Encode<
21020                fidl::encoding::Endpoint<
21021                    fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>,
21022                >,
21023                fidl::encoding::DefaultFuchsiaResourceDialect,
21024            >,
21025    >
21026        fidl::encoding::Encode<
21027            DirConnectorConnectRequest,
21028            fidl::encoding::DefaultFuchsiaResourceDialect,
21029        > for (T0,)
21030    {
21031        #[inline]
21032        unsafe fn encode(
21033            self,
21034            encoder: &mut fidl::encoding::Encoder<
21035                '_,
21036                fidl::encoding::DefaultFuchsiaResourceDialect,
21037            >,
21038            offset: usize,
21039            depth: fidl::encoding::Depth,
21040        ) -> fidl::Result<()> {
21041            encoder.debug_check_bounds::<DirConnectorConnectRequest>(offset);
21042            // Zero out padding regions. There's no need to apply masks
21043            // because the unmasked parts will be overwritten by fields.
21044            // Write the fields.
21045            self.0.encode(encoder, offset + 0, depth)?;
21046            Ok(())
21047        }
21048    }
21049
21050    impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
21051        for DirConnectorConnectRequest
21052    {
21053        #[inline(always)]
21054        fn new_empty() -> Self {
21055            Self {
21056                channel: fidl::new_empty!(
21057                    fidl::encoding::Endpoint<
21058                        fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>,
21059                    >,
21060                    fidl::encoding::DefaultFuchsiaResourceDialect
21061                ),
21062            }
21063        }
21064
21065        #[inline]
21066        unsafe fn decode(
21067            &mut self,
21068            decoder: &mut fidl::encoding::Decoder<
21069                '_,
21070                fidl::encoding::DefaultFuchsiaResourceDialect,
21071            >,
21072            offset: usize,
21073            _depth: fidl::encoding::Depth,
21074        ) -> fidl::Result<()> {
21075            decoder.debug_check_bounds::<Self>(offset);
21076            // Verify that padding bytes are zero.
21077            fidl::decode!(
21078                fidl::encoding::Endpoint<
21079                    fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>,
21080                >,
21081                fidl::encoding::DefaultFuchsiaResourceDialect,
21082                &mut self.channel,
21083                decoder,
21084                offset + 0,
21085                _depth
21086            )?;
21087            Ok(())
21088        }
21089    }
21090
21091    impl fidl::encoding::ResourceTypeMarker for DirConnectorRouterDeprecatedRouteRequest {
21092        type Borrowed<'a> = &'a mut Self;
21093        fn take_or_borrow<'a>(
21094            value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
21095        ) -> Self::Borrowed<'a> {
21096            value
21097        }
21098    }
21099
21100    unsafe impl fidl::encoding::TypeMarker for DirConnectorRouterDeprecatedRouteRequest {
21101        type Owned = Self;
21102
21103        #[inline(always)]
21104        fn inline_align(_context: fidl::encoding::Context) -> usize {
21105            8
21106        }
21107
21108        #[inline(always)]
21109        fn inline_size(_context: fidl::encoding::Context) -> usize {
21110            24
21111        }
21112    }
21113
21114    unsafe impl
21115        fidl::encoding::Encode<
21116            DirConnectorRouterDeprecatedRouteRequest,
21117            fidl::encoding::DefaultFuchsiaResourceDialect,
21118        > for &mut DirConnectorRouterDeprecatedRouteRequest
21119    {
21120        #[inline]
21121        unsafe fn encode(
21122            self,
21123            encoder: &mut fidl::encoding::Encoder<
21124                '_,
21125                fidl::encoding::DefaultFuchsiaResourceDialect,
21126            >,
21127            offset: usize,
21128            _depth: fidl::encoding::Depth,
21129        ) -> fidl::Result<()> {
21130            encoder.debug_check_bounds::<DirConnectorRouterDeprecatedRouteRequest>(offset);
21131            // Delegate to tuple encoding.
21132            fidl::encoding::Encode::<DirConnectorRouterDeprecatedRouteRequest, fidl::encoding::DefaultFuchsiaResourceDialect>::encode(
21133                (
21134                    <DeprecatedRouteRequest as fidl::encoding::ResourceTypeMarker>::take_or_borrow(&mut self.request),
21135                    <fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<DirConnectorMarker>> as fidl::encoding::ResourceTypeMarker>::take_or_borrow(&mut self.dir_connector_server_end),
21136                ),
21137                encoder, offset, _depth
21138            )
21139        }
21140    }
21141    unsafe impl<
21142        T0: fidl::encoding::Encode<
21143                DeprecatedRouteRequest,
21144                fidl::encoding::DefaultFuchsiaResourceDialect,
21145            >,
21146        T1: fidl::encoding::Encode<
21147                fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<DirConnectorMarker>>,
21148                fidl::encoding::DefaultFuchsiaResourceDialect,
21149            >,
21150    >
21151        fidl::encoding::Encode<
21152            DirConnectorRouterDeprecatedRouteRequest,
21153            fidl::encoding::DefaultFuchsiaResourceDialect,
21154        > for (T0, T1)
21155    {
21156        #[inline]
21157        unsafe fn encode(
21158            self,
21159            encoder: &mut fidl::encoding::Encoder<
21160                '_,
21161                fidl::encoding::DefaultFuchsiaResourceDialect,
21162            >,
21163            offset: usize,
21164            depth: fidl::encoding::Depth,
21165        ) -> fidl::Result<()> {
21166            encoder.debug_check_bounds::<DirConnectorRouterDeprecatedRouteRequest>(offset);
21167            // Zero out padding regions. There's no need to apply masks
21168            // because the unmasked parts will be overwritten by fields.
21169            unsafe {
21170                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(16);
21171                (ptr as *mut u64).write_unaligned(0);
21172            }
21173            // Write the fields.
21174            self.0.encode(encoder, offset + 0, depth)?;
21175            self.1.encode(encoder, offset + 16, depth)?;
21176            Ok(())
21177        }
21178    }
21179
21180    impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
21181        for DirConnectorRouterDeprecatedRouteRequest
21182    {
21183        #[inline(always)]
21184        fn new_empty() -> Self {
21185            Self {
21186                request: fidl::new_empty!(
21187                    DeprecatedRouteRequest,
21188                    fidl::encoding::DefaultFuchsiaResourceDialect
21189                ),
21190                dir_connector_server_end: fidl::new_empty!(
21191                    fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<DirConnectorMarker>>,
21192                    fidl::encoding::DefaultFuchsiaResourceDialect
21193                ),
21194            }
21195        }
21196
21197        #[inline]
21198        unsafe fn decode(
21199            &mut self,
21200            decoder: &mut fidl::encoding::Decoder<
21201                '_,
21202                fidl::encoding::DefaultFuchsiaResourceDialect,
21203            >,
21204            offset: usize,
21205            _depth: fidl::encoding::Depth,
21206        ) -> fidl::Result<()> {
21207            decoder.debug_check_bounds::<Self>(offset);
21208            // Verify that padding bytes are zero.
21209            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(16) };
21210            let padval = unsafe { (ptr as *const u64).read_unaligned() };
21211            let mask = 0xffffffff00000000u64;
21212            let maskedval = padval & mask;
21213            if maskedval != 0 {
21214                return Err(fidl::Error::NonZeroPadding {
21215                    padding_start: offset + 16 + ((mask as u64).trailing_zeros() / 8) as usize,
21216                });
21217            }
21218            fidl::decode!(
21219                DeprecatedRouteRequest,
21220                fidl::encoding::DefaultFuchsiaResourceDialect,
21221                &mut self.request,
21222                decoder,
21223                offset + 0,
21224                _depth
21225            )?;
21226            fidl::decode!(
21227                fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<DirConnectorMarker>>,
21228                fidl::encoding::DefaultFuchsiaResourceDialect,
21229                &mut self.dir_connector_server_end,
21230                decoder,
21231                offset + 16,
21232                _depth
21233            )?;
21234            Ok(())
21235        }
21236    }
21237
21238    impl fidl::encoding::ResourceTypeMarker for DirConnectorRouterDeprecatedRouteResponse {
21239        type Borrowed<'a> = &'a mut Self;
21240        fn take_or_borrow<'a>(
21241            value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
21242        ) -> Self::Borrowed<'a> {
21243            value
21244        }
21245    }
21246
21247    unsafe impl fidl::encoding::TypeMarker for DirConnectorRouterDeprecatedRouteResponse {
21248        type Owned = Self;
21249
21250        #[inline(always)]
21251        fn inline_align(_context: fidl::encoding::Context) -> usize {
21252            4
21253        }
21254
21255        #[inline(always)]
21256        fn inline_size(_context: fidl::encoding::Context) -> usize {
21257            4
21258        }
21259    }
21260
21261    unsafe impl
21262        fidl::encoding::Encode<
21263            DirConnectorRouterDeprecatedRouteResponse,
21264            fidl::encoding::DefaultFuchsiaResourceDialect,
21265        > for &mut DirConnectorRouterDeprecatedRouteResponse
21266    {
21267        #[inline]
21268        unsafe fn encode(
21269            self,
21270            encoder: &mut fidl::encoding::Encoder<
21271                '_,
21272                fidl::encoding::DefaultFuchsiaResourceDialect,
21273            >,
21274            offset: usize,
21275            _depth: fidl::encoding::Depth,
21276        ) -> fidl::Result<()> {
21277            encoder.debug_check_bounds::<DirConnectorRouterDeprecatedRouteResponse>(offset);
21278            // Delegate to tuple encoding.
21279            fidl::encoding::Encode::<
21280                DirConnectorRouterDeprecatedRouteResponse,
21281                fidl::encoding::DefaultFuchsiaResourceDialect,
21282            >::encode(
21283                (<RouterResponse as fidl::encoding::ValueTypeMarker>::borrow(&self.response),),
21284                encoder,
21285                offset,
21286                _depth,
21287            )
21288        }
21289    }
21290    unsafe impl<
21291        T0: fidl::encoding::Encode<RouterResponse, fidl::encoding::DefaultFuchsiaResourceDialect>,
21292    >
21293        fidl::encoding::Encode<
21294            DirConnectorRouterDeprecatedRouteResponse,
21295            fidl::encoding::DefaultFuchsiaResourceDialect,
21296        > for (T0,)
21297    {
21298        #[inline]
21299        unsafe fn encode(
21300            self,
21301            encoder: &mut fidl::encoding::Encoder<
21302                '_,
21303                fidl::encoding::DefaultFuchsiaResourceDialect,
21304            >,
21305            offset: usize,
21306            depth: fidl::encoding::Depth,
21307        ) -> fidl::Result<()> {
21308            encoder.debug_check_bounds::<DirConnectorRouterDeprecatedRouteResponse>(offset);
21309            // Zero out padding regions. There's no need to apply masks
21310            // because the unmasked parts will be overwritten by fields.
21311            // Write the fields.
21312            self.0.encode(encoder, offset + 0, depth)?;
21313            Ok(())
21314        }
21315    }
21316
21317    impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
21318        for DirConnectorRouterDeprecatedRouteResponse
21319    {
21320        #[inline(always)]
21321        fn new_empty() -> Self {
21322            Self {
21323                response: fidl::new_empty!(
21324                    RouterResponse,
21325                    fidl::encoding::DefaultFuchsiaResourceDialect
21326                ),
21327            }
21328        }
21329
21330        #[inline]
21331        unsafe fn decode(
21332            &mut self,
21333            decoder: &mut fidl::encoding::Decoder<
21334                '_,
21335                fidl::encoding::DefaultFuchsiaResourceDialect,
21336            >,
21337            offset: usize,
21338            _depth: fidl::encoding::Depth,
21339        ) -> fidl::Result<()> {
21340            decoder.debug_check_bounds::<Self>(offset);
21341            // Verify that padding bytes are zero.
21342            fidl::decode!(
21343                RouterResponse,
21344                fidl::encoding::DefaultFuchsiaResourceDialect,
21345                &mut self.response,
21346                decoder,
21347                offset + 0,
21348                _depth
21349            )?;
21350            Ok(())
21351        }
21352    }
21353
21354    impl fidl::encoding::ResourceTypeMarker for DirConnectorRouterRouteRequest {
21355        type Borrowed<'a> = &'a mut Self;
21356        fn take_or_borrow<'a>(
21357            value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
21358        ) -> Self::Borrowed<'a> {
21359            value
21360        }
21361    }
21362
21363    unsafe impl fidl::encoding::TypeMarker for DirConnectorRouterRouteRequest {
21364        type Owned = Self;
21365
21366        #[inline(always)]
21367        fn inline_align(_context: fidl::encoding::Context) -> usize {
21368            8
21369        }
21370
21371        #[inline(always)]
21372        fn inline_size(_context: fidl::encoding::Context) -> usize {
21373            24
21374        }
21375    }
21376
21377    unsafe impl
21378        fidl::encoding::Encode<
21379            DirConnectorRouterRouteRequest,
21380            fidl::encoding::DefaultFuchsiaResourceDialect,
21381        > for &mut DirConnectorRouterRouteRequest
21382    {
21383        #[inline]
21384        unsafe fn encode(
21385            self,
21386            encoder: &mut fidl::encoding::Encoder<
21387                '_,
21388                fidl::encoding::DefaultFuchsiaResourceDialect,
21389            >,
21390            offset: usize,
21391            _depth: fidl::encoding::Depth,
21392        ) -> fidl::Result<()> {
21393            encoder.debug_check_bounds::<DirConnectorRouterRouteRequest>(offset);
21394            // Delegate to tuple encoding.
21395            fidl::encoding::Encode::<
21396                DirConnectorRouterRouteRequest,
21397                fidl::encoding::DefaultFuchsiaResourceDialect,
21398            >::encode(
21399                (
21400                    <RouteRequest as fidl::encoding::ResourceTypeMarker>::take_or_borrow(
21401                        &mut self.request,
21402                    ),
21403                    <fidl::encoding::HandleType<
21404                        fidl::EventPair,
21405                        { fidl::ObjectType::EVENTPAIR.into_raw() },
21406                        2147483648,
21407                    > as fidl::encoding::ResourceTypeMarker>::take_or_borrow(
21408                        &mut self.instance_token,
21409                    ),
21410                    <fidl::encoding::HandleType<
21411                        fidl::EventPair,
21412                        { fidl::ObjectType::EVENTPAIR.into_raw() },
21413                        2147483648,
21414                    > as fidl::encoding::ResourceTypeMarker>::take_or_borrow(
21415                        &mut self.handle
21416                    ),
21417                ),
21418                encoder,
21419                offset,
21420                _depth,
21421            )
21422        }
21423    }
21424    unsafe impl<
21425        T0: fidl::encoding::Encode<RouteRequest, fidl::encoding::DefaultFuchsiaResourceDialect>,
21426        T1: fidl::encoding::Encode<
21427                fidl::encoding::HandleType<
21428                    fidl::EventPair,
21429                    { fidl::ObjectType::EVENTPAIR.into_raw() },
21430                    2147483648,
21431                >,
21432                fidl::encoding::DefaultFuchsiaResourceDialect,
21433            >,
21434        T2: fidl::encoding::Encode<
21435                fidl::encoding::HandleType<
21436                    fidl::EventPair,
21437                    { fidl::ObjectType::EVENTPAIR.into_raw() },
21438                    2147483648,
21439                >,
21440                fidl::encoding::DefaultFuchsiaResourceDialect,
21441            >,
21442    >
21443        fidl::encoding::Encode<
21444            DirConnectorRouterRouteRequest,
21445            fidl::encoding::DefaultFuchsiaResourceDialect,
21446        > for (T0, T1, T2)
21447    {
21448        #[inline]
21449        unsafe fn encode(
21450            self,
21451            encoder: &mut fidl::encoding::Encoder<
21452                '_,
21453                fidl::encoding::DefaultFuchsiaResourceDialect,
21454            >,
21455            offset: usize,
21456            depth: fidl::encoding::Depth,
21457        ) -> fidl::Result<()> {
21458            encoder.debug_check_bounds::<DirConnectorRouterRouteRequest>(offset);
21459            // Zero out padding regions. There's no need to apply masks
21460            // because the unmasked parts will be overwritten by fields.
21461            // Write the fields.
21462            self.0.encode(encoder, offset + 0, depth)?;
21463            self.1.encode(encoder, offset + 16, depth)?;
21464            self.2.encode(encoder, offset + 20, depth)?;
21465            Ok(())
21466        }
21467    }
21468
21469    impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
21470        for DirConnectorRouterRouteRequest
21471    {
21472        #[inline(always)]
21473        fn new_empty() -> Self {
21474            Self {
21475                request: fidl::new_empty!(
21476                    RouteRequest,
21477                    fidl::encoding::DefaultFuchsiaResourceDialect
21478                ),
21479                instance_token: fidl::new_empty!(fidl::encoding::HandleType<fidl::EventPair, { fidl::ObjectType::EVENTPAIR.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect),
21480                handle: fidl::new_empty!(fidl::encoding::HandleType<fidl::EventPair, { fidl::ObjectType::EVENTPAIR.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect),
21481            }
21482        }
21483
21484        #[inline]
21485        unsafe fn decode(
21486            &mut self,
21487            decoder: &mut fidl::encoding::Decoder<
21488                '_,
21489                fidl::encoding::DefaultFuchsiaResourceDialect,
21490            >,
21491            offset: usize,
21492            _depth: fidl::encoding::Depth,
21493        ) -> fidl::Result<()> {
21494            decoder.debug_check_bounds::<Self>(offset);
21495            // Verify that padding bytes are zero.
21496            fidl::decode!(
21497                RouteRequest,
21498                fidl::encoding::DefaultFuchsiaResourceDialect,
21499                &mut self.request,
21500                decoder,
21501                offset + 0,
21502                _depth
21503            )?;
21504            fidl::decode!(fidl::encoding::HandleType<fidl::EventPair, { fidl::ObjectType::EVENTPAIR.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect, &mut self.instance_token, decoder, offset + 16, _depth)?;
21505            fidl::decode!(fidl::encoding::HandleType<fidl::EventPair, { fidl::ObjectType::EVENTPAIR.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect, &mut self.handle, decoder, offset + 20, _depth)?;
21506            Ok(())
21507        }
21508    }
21509
21510    impl fidl::encoding::ResourceTypeMarker for DirReceiverDeprecatedReceiveRequest {
21511        type Borrowed<'a> = &'a mut Self;
21512        fn take_or_borrow<'a>(
21513            value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
21514        ) -> Self::Borrowed<'a> {
21515            value
21516        }
21517    }
21518
21519    unsafe impl fidl::encoding::TypeMarker for DirReceiverDeprecatedReceiveRequest {
21520        type Owned = Self;
21521
21522        #[inline(always)]
21523        fn inline_align(_context: fidl::encoding::Context) -> usize {
21524            4
21525        }
21526
21527        #[inline(always)]
21528        fn inline_size(_context: fidl::encoding::Context) -> usize {
21529            4
21530        }
21531    }
21532
21533    unsafe impl
21534        fidl::encoding::Encode<
21535            DirReceiverDeprecatedReceiveRequest,
21536            fidl::encoding::DefaultFuchsiaResourceDialect,
21537        > for &mut DirReceiverDeprecatedReceiveRequest
21538    {
21539        #[inline]
21540        unsafe fn encode(
21541            self,
21542            encoder: &mut fidl::encoding::Encoder<
21543                '_,
21544                fidl::encoding::DefaultFuchsiaResourceDialect,
21545            >,
21546            offset: usize,
21547            _depth: fidl::encoding::Depth,
21548        ) -> fidl::Result<()> {
21549            encoder.debug_check_bounds::<DirReceiverDeprecatedReceiveRequest>(offset);
21550            // Delegate to tuple encoding.
21551            fidl::encoding::Encode::<
21552                DirReceiverDeprecatedReceiveRequest,
21553                fidl::encoding::DefaultFuchsiaResourceDialect,
21554            >::encode(
21555                (<fidl::encoding::Endpoint<
21556                    fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>,
21557                > as fidl::encoding::ResourceTypeMarker>::take_or_borrow(
21558                    &mut self.channel
21559                ),),
21560                encoder,
21561                offset,
21562                _depth,
21563            )
21564        }
21565    }
21566    unsafe impl<
21567        T0: fidl::encoding::Encode<
21568                fidl::encoding::Endpoint<
21569                    fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>,
21570                >,
21571                fidl::encoding::DefaultFuchsiaResourceDialect,
21572            >,
21573    >
21574        fidl::encoding::Encode<
21575            DirReceiverDeprecatedReceiveRequest,
21576            fidl::encoding::DefaultFuchsiaResourceDialect,
21577        > for (T0,)
21578    {
21579        #[inline]
21580        unsafe fn encode(
21581            self,
21582            encoder: &mut fidl::encoding::Encoder<
21583                '_,
21584                fidl::encoding::DefaultFuchsiaResourceDialect,
21585            >,
21586            offset: usize,
21587            depth: fidl::encoding::Depth,
21588        ) -> fidl::Result<()> {
21589            encoder.debug_check_bounds::<DirReceiverDeprecatedReceiveRequest>(offset);
21590            // Zero out padding regions. There's no need to apply masks
21591            // because the unmasked parts will be overwritten by fields.
21592            // Write the fields.
21593            self.0.encode(encoder, offset + 0, depth)?;
21594            Ok(())
21595        }
21596    }
21597
21598    impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
21599        for DirReceiverDeprecatedReceiveRequest
21600    {
21601        #[inline(always)]
21602        fn new_empty() -> Self {
21603            Self {
21604                channel: fidl::new_empty!(
21605                    fidl::encoding::Endpoint<
21606                        fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>,
21607                    >,
21608                    fidl::encoding::DefaultFuchsiaResourceDialect
21609                ),
21610            }
21611        }
21612
21613        #[inline]
21614        unsafe fn decode(
21615            &mut self,
21616            decoder: &mut fidl::encoding::Decoder<
21617                '_,
21618                fidl::encoding::DefaultFuchsiaResourceDialect,
21619            >,
21620            offset: usize,
21621            _depth: fidl::encoding::Depth,
21622        ) -> fidl::Result<()> {
21623            decoder.debug_check_bounds::<Self>(offset);
21624            // Verify that padding bytes are zero.
21625            fidl::decode!(
21626                fidl::encoding::Endpoint<
21627                    fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>,
21628                >,
21629                fidl::encoding::DefaultFuchsiaResourceDialect,
21630                &mut self.channel,
21631                decoder,
21632                offset + 0,
21633                _depth
21634            )?;
21635            Ok(())
21636        }
21637    }
21638
21639    impl fidl::encoding::ResourceTypeMarker for DirReceiverReceiveRequest {
21640        type Borrowed<'a> = &'a mut Self;
21641        fn take_or_borrow<'a>(
21642            value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
21643        ) -> Self::Borrowed<'a> {
21644            value
21645        }
21646    }
21647
21648    unsafe impl fidl::encoding::TypeMarker for DirReceiverReceiveRequest {
21649        type Owned = Self;
21650
21651        #[inline(always)]
21652        fn inline_align(_context: fidl::encoding::Context) -> usize {
21653            8
21654        }
21655
21656        #[inline(always)]
21657        fn inline_size(_context: fidl::encoding::Context) -> usize {
21658            32
21659        }
21660    }
21661
21662    unsafe impl
21663        fidl::encoding::Encode<
21664            DirReceiverReceiveRequest,
21665            fidl::encoding::DefaultFuchsiaResourceDialect,
21666        > for &mut DirReceiverReceiveRequest
21667    {
21668        #[inline]
21669        unsafe fn encode(
21670            self,
21671            encoder: &mut fidl::encoding::Encoder<
21672                '_,
21673                fidl::encoding::DefaultFuchsiaResourceDialect,
21674            >,
21675            offset: usize,
21676            _depth: fidl::encoding::Depth,
21677        ) -> fidl::Result<()> {
21678            encoder.debug_check_bounds::<DirReceiverReceiveRequest>(offset);
21679            // Delegate to tuple encoding.
21680            fidl::encoding::Encode::<DirReceiverReceiveRequest, fidl::encoding::DefaultFuchsiaResourceDialect>::encode(
21681                (
21682                    <fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>> as fidl::encoding::ResourceTypeMarker>::take_or_borrow(&mut self.channel),
21683                    <fidl::encoding::BoundedString<4095> as fidl::encoding::ValueTypeMarker>::borrow(&self.path),
21684                    <fidl_fuchsia_io::Flags as fidl::encoding::ValueTypeMarker>::borrow(&self.rights),
21685                ),
21686                encoder, offset, _depth
21687            )
21688        }
21689    }
21690    unsafe impl<
21691        T0: fidl::encoding::Encode<
21692                fidl::encoding::Endpoint<
21693                    fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>,
21694                >,
21695                fidl::encoding::DefaultFuchsiaResourceDialect,
21696            >,
21697        T1: fidl::encoding::Encode<
21698                fidl::encoding::BoundedString<4095>,
21699                fidl::encoding::DefaultFuchsiaResourceDialect,
21700            >,
21701        T2: fidl::encoding::Encode<
21702                fidl_fuchsia_io::Flags,
21703                fidl::encoding::DefaultFuchsiaResourceDialect,
21704            >,
21705    >
21706        fidl::encoding::Encode<
21707            DirReceiverReceiveRequest,
21708            fidl::encoding::DefaultFuchsiaResourceDialect,
21709        > for (T0, T1, T2)
21710    {
21711        #[inline]
21712        unsafe fn encode(
21713            self,
21714            encoder: &mut fidl::encoding::Encoder<
21715                '_,
21716                fidl::encoding::DefaultFuchsiaResourceDialect,
21717            >,
21718            offset: usize,
21719            depth: fidl::encoding::Depth,
21720        ) -> fidl::Result<()> {
21721            encoder.debug_check_bounds::<DirReceiverReceiveRequest>(offset);
21722            // Zero out padding regions. There's no need to apply masks
21723            // because the unmasked parts will be overwritten by fields.
21724            unsafe {
21725                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(0);
21726                (ptr as *mut u64).write_unaligned(0);
21727            }
21728            // Write the fields.
21729            self.0.encode(encoder, offset + 0, depth)?;
21730            self.1.encode(encoder, offset + 8, depth)?;
21731            self.2.encode(encoder, offset + 24, depth)?;
21732            Ok(())
21733        }
21734    }
21735
21736    impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
21737        for DirReceiverReceiveRequest
21738    {
21739        #[inline(always)]
21740        fn new_empty() -> Self {
21741            Self {
21742                channel: fidl::new_empty!(
21743                    fidl::encoding::Endpoint<
21744                        fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>,
21745                    >,
21746                    fidl::encoding::DefaultFuchsiaResourceDialect
21747                ),
21748                path: fidl::new_empty!(
21749                    fidl::encoding::BoundedString<4095>,
21750                    fidl::encoding::DefaultFuchsiaResourceDialect
21751                ),
21752                rights: fidl::new_empty!(
21753                    fidl_fuchsia_io::Flags,
21754                    fidl::encoding::DefaultFuchsiaResourceDialect
21755                ),
21756            }
21757        }
21758
21759        #[inline]
21760        unsafe fn decode(
21761            &mut self,
21762            decoder: &mut fidl::encoding::Decoder<
21763                '_,
21764                fidl::encoding::DefaultFuchsiaResourceDialect,
21765            >,
21766            offset: usize,
21767            _depth: fidl::encoding::Depth,
21768        ) -> fidl::Result<()> {
21769            decoder.debug_check_bounds::<Self>(offset);
21770            // Verify that padding bytes are zero.
21771            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(0) };
21772            let padval = unsafe { (ptr as *const u64).read_unaligned() };
21773            let mask = 0xffffffff00000000u64;
21774            let maskedval = padval & mask;
21775            if maskedval != 0 {
21776                return Err(fidl::Error::NonZeroPadding {
21777                    padding_start: offset + 0 + ((mask as u64).trailing_zeros() / 8) as usize,
21778                });
21779            }
21780            fidl::decode!(
21781                fidl::encoding::Endpoint<
21782                    fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>,
21783                >,
21784                fidl::encoding::DefaultFuchsiaResourceDialect,
21785                &mut self.channel,
21786                decoder,
21787                offset + 0,
21788                _depth
21789            )?;
21790            fidl::decode!(
21791                fidl::encoding::BoundedString<4095>,
21792                fidl::encoding::DefaultFuchsiaResourceDialect,
21793                &mut self.path,
21794                decoder,
21795                offset + 8,
21796                _depth
21797            )?;
21798            fidl::decode!(
21799                fidl_fuchsia_io::Flags,
21800                fidl::encoding::DefaultFuchsiaResourceDialect,
21801                &mut self.rights,
21802                decoder,
21803                offset + 24,
21804                _depth
21805            )?;
21806            Ok(())
21807        }
21808    }
21809
21810    impl fidl::encoding::ResourceTypeMarker for ReceiverReceiveRequest {
21811        type Borrowed<'a> = &'a mut Self;
21812        fn take_or_borrow<'a>(
21813            value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
21814        ) -> Self::Borrowed<'a> {
21815            value
21816        }
21817    }
21818
21819    unsafe impl fidl::encoding::TypeMarker for ReceiverReceiveRequest {
21820        type Owned = Self;
21821
21822        #[inline(always)]
21823        fn inline_align(_context: fidl::encoding::Context) -> usize {
21824            4
21825        }
21826
21827        #[inline(always)]
21828        fn inline_size(_context: fidl::encoding::Context) -> usize {
21829            4
21830        }
21831    }
21832
21833    unsafe impl
21834        fidl::encoding::Encode<
21835            ReceiverReceiveRequest,
21836            fidl::encoding::DefaultFuchsiaResourceDialect,
21837        > for &mut ReceiverReceiveRequest
21838    {
21839        #[inline]
21840        unsafe fn encode(
21841            self,
21842            encoder: &mut fidl::encoding::Encoder<
21843                '_,
21844                fidl::encoding::DefaultFuchsiaResourceDialect,
21845            >,
21846            offset: usize,
21847            _depth: fidl::encoding::Depth,
21848        ) -> fidl::Result<()> {
21849            encoder.debug_check_bounds::<ReceiverReceiveRequest>(offset);
21850            // Delegate to tuple encoding.
21851            fidl::encoding::Encode::<
21852                ReceiverReceiveRequest,
21853                fidl::encoding::DefaultFuchsiaResourceDialect,
21854            >::encode(
21855                (<fidl::encoding::HandleType<
21856                    fidl::Channel,
21857                    { fidl::ObjectType::CHANNEL.into_raw() },
21858                    2147483648,
21859                > as fidl::encoding::ResourceTypeMarker>::take_or_borrow(
21860                    &mut self.channel
21861                ),),
21862                encoder,
21863                offset,
21864                _depth,
21865            )
21866        }
21867    }
21868    unsafe impl<
21869        T0: fidl::encoding::Encode<
21870                fidl::encoding::HandleType<
21871                    fidl::Channel,
21872                    { fidl::ObjectType::CHANNEL.into_raw() },
21873                    2147483648,
21874                >,
21875                fidl::encoding::DefaultFuchsiaResourceDialect,
21876            >,
21877    >
21878        fidl::encoding::Encode<
21879            ReceiverReceiveRequest,
21880            fidl::encoding::DefaultFuchsiaResourceDialect,
21881        > for (T0,)
21882    {
21883        #[inline]
21884        unsafe fn encode(
21885            self,
21886            encoder: &mut fidl::encoding::Encoder<
21887                '_,
21888                fidl::encoding::DefaultFuchsiaResourceDialect,
21889            >,
21890            offset: usize,
21891            depth: fidl::encoding::Depth,
21892        ) -> fidl::Result<()> {
21893            encoder.debug_check_bounds::<ReceiverReceiveRequest>(offset);
21894            // Zero out padding regions. There's no need to apply masks
21895            // because the unmasked parts will be overwritten by fields.
21896            // Write the fields.
21897            self.0.encode(encoder, offset + 0, depth)?;
21898            Ok(())
21899        }
21900    }
21901
21902    impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
21903        for ReceiverReceiveRequest
21904    {
21905        #[inline(always)]
21906        fn new_empty() -> Self {
21907            Self {
21908                channel: fidl::new_empty!(fidl::encoding::HandleType<fidl::Channel, { fidl::ObjectType::CHANNEL.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect),
21909            }
21910        }
21911
21912        #[inline]
21913        unsafe fn decode(
21914            &mut self,
21915            decoder: &mut fidl::encoding::Decoder<
21916                '_,
21917                fidl::encoding::DefaultFuchsiaResourceDialect,
21918            >,
21919            offset: usize,
21920            _depth: fidl::encoding::Depth,
21921        ) -> fidl::Result<()> {
21922            decoder.debug_check_bounds::<Self>(offset);
21923            // Verify that padding bytes are zero.
21924            fidl::decode!(fidl::encoding::HandleType<fidl::Channel, { fidl::ObjectType::CHANNEL.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect, &mut self.channel, decoder, offset + 0, _depth)?;
21925            Ok(())
21926        }
21927    }
21928
21929    impl fidl::encoding::ResourceTypeMarker for WeakInstanceToken {
21930        type Borrowed<'a> = &'a mut Self;
21931        fn take_or_borrow<'a>(
21932            value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
21933        ) -> Self::Borrowed<'a> {
21934            value
21935        }
21936    }
21937
21938    unsafe impl fidl::encoding::TypeMarker for WeakInstanceToken {
21939        type Owned = Self;
21940
21941        #[inline(always)]
21942        fn inline_align(_context: fidl::encoding::Context) -> usize {
21943            4
21944        }
21945
21946        #[inline(always)]
21947        fn inline_size(_context: fidl::encoding::Context) -> usize {
21948            4
21949        }
21950    }
21951
21952    unsafe impl
21953        fidl::encoding::Encode<WeakInstanceToken, fidl::encoding::DefaultFuchsiaResourceDialect>
21954        for &mut WeakInstanceToken
21955    {
21956        #[inline]
21957        unsafe fn encode(
21958            self,
21959            encoder: &mut fidl::encoding::Encoder<
21960                '_,
21961                fidl::encoding::DefaultFuchsiaResourceDialect,
21962            >,
21963            offset: usize,
21964            _depth: fidl::encoding::Depth,
21965        ) -> fidl::Result<()> {
21966            encoder.debug_check_bounds::<WeakInstanceToken>(offset);
21967            // Delegate to tuple encoding.
21968            fidl::encoding::Encode::<WeakInstanceToken, fidl::encoding::DefaultFuchsiaResourceDialect>::encode(
21969                (
21970                    <fidl::encoding::HandleType<fidl::EventPair, { fidl::ObjectType::EVENTPAIR.into_raw() }, 2147483648> as fidl::encoding::ResourceTypeMarker>::take_or_borrow(&mut self.token),
21971                ),
21972                encoder, offset, _depth
21973            )
21974        }
21975    }
21976    unsafe impl<
21977        T0: fidl::encoding::Encode<
21978                fidl::encoding::HandleType<
21979                    fidl::EventPair,
21980                    { fidl::ObjectType::EVENTPAIR.into_raw() },
21981                    2147483648,
21982                >,
21983                fidl::encoding::DefaultFuchsiaResourceDialect,
21984            >,
21985    > fidl::encoding::Encode<WeakInstanceToken, fidl::encoding::DefaultFuchsiaResourceDialect>
21986        for (T0,)
21987    {
21988        #[inline]
21989        unsafe fn encode(
21990            self,
21991            encoder: &mut fidl::encoding::Encoder<
21992                '_,
21993                fidl::encoding::DefaultFuchsiaResourceDialect,
21994            >,
21995            offset: usize,
21996            depth: fidl::encoding::Depth,
21997        ) -> fidl::Result<()> {
21998            encoder.debug_check_bounds::<WeakInstanceToken>(offset);
21999            // Zero out padding regions. There's no need to apply masks
22000            // because the unmasked parts will be overwritten by fields.
22001            // Write the fields.
22002            self.0.encode(encoder, offset + 0, depth)?;
22003            Ok(())
22004        }
22005    }
22006
22007    impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
22008        for WeakInstanceToken
22009    {
22010        #[inline(always)]
22011        fn new_empty() -> Self {
22012            Self {
22013                token: fidl::new_empty!(fidl::encoding::HandleType<fidl::EventPair, { fidl::ObjectType::EVENTPAIR.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect),
22014            }
22015        }
22016
22017        #[inline]
22018        unsafe fn decode(
22019            &mut self,
22020            decoder: &mut fidl::encoding::Decoder<
22021                '_,
22022                fidl::encoding::DefaultFuchsiaResourceDialect,
22023            >,
22024            offset: usize,
22025            _depth: fidl::encoding::Depth,
22026        ) -> fidl::Result<()> {
22027            decoder.debug_check_bounds::<Self>(offset);
22028            // Verify that padding bytes are zero.
22029            fidl::decode!(fidl::encoding::HandleType<fidl::EventPair, { fidl::ObjectType::EVENTPAIR.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect, &mut self.token, decoder, offset + 0, _depth)?;
22030            Ok(())
22031        }
22032    }
22033
22034    impl CapabilitiesDictionaryRemoveRequest {
22035        #[inline(always)]
22036        fn max_ordinal_present(&self) -> u64 {
22037            if let Some(_) = self.value {
22038                return 3;
22039            }
22040            if let Some(_) = self.key {
22041                return 2;
22042            }
22043            if let Some(_) = self.dictionary {
22044                return 1;
22045            }
22046            0
22047        }
22048    }
22049
22050    impl fidl::encoding::ResourceTypeMarker for CapabilitiesDictionaryRemoveRequest {
22051        type Borrowed<'a> = &'a mut Self;
22052        fn take_or_borrow<'a>(
22053            value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
22054        ) -> Self::Borrowed<'a> {
22055            value
22056        }
22057    }
22058
22059    unsafe impl fidl::encoding::TypeMarker for CapabilitiesDictionaryRemoveRequest {
22060        type Owned = Self;
22061
22062        #[inline(always)]
22063        fn inline_align(_context: fidl::encoding::Context) -> usize {
22064            8
22065        }
22066
22067        #[inline(always)]
22068        fn inline_size(_context: fidl::encoding::Context) -> usize {
22069            16
22070        }
22071    }
22072
22073    unsafe impl
22074        fidl::encoding::Encode<
22075            CapabilitiesDictionaryRemoveRequest,
22076            fidl::encoding::DefaultFuchsiaResourceDialect,
22077        > for &mut CapabilitiesDictionaryRemoveRequest
22078    {
22079        unsafe fn encode(
22080            self,
22081            encoder: &mut fidl::encoding::Encoder<
22082                '_,
22083                fidl::encoding::DefaultFuchsiaResourceDialect,
22084            >,
22085            offset: usize,
22086            mut depth: fidl::encoding::Depth,
22087        ) -> fidl::Result<()> {
22088            encoder.debug_check_bounds::<CapabilitiesDictionaryRemoveRequest>(offset);
22089            // Vector header
22090            let max_ordinal: u64 = self.max_ordinal_present();
22091            encoder.write_num(max_ordinal, offset);
22092            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
22093            // Calling encoder.out_of_line_offset(0) is not allowed.
22094            if max_ordinal == 0 {
22095                return Ok(());
22096            }
22097            depth.increment()?;
22098            let envelope_size = 8;
22099            let bytes_len = max_ordinal as usize * envelope_size;
22100            #[allow(unused_variables)]
22101            let offset = encoder.out_of_line_offset(bytes_len);
22102            let mut _prev_end_offset: usize = 0;
22103            if 1 > max_ordinal {
22104                return Ok(());
22105            }
22106
22107            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
22108            // are envelope_size bytes.
22109            let cur_offset: usize = (1 - 1) * envelope_size;
22110
22111            // Zero reserved fields.
22112            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
22113
22114            // Safety:
22115            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
22116            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
22117            //   envelope_size bytes, there is always sufficient room.
22118            fidl::encoding::encode_in_envelope_optional::<
22119                fidl::encoding::HandleType<
22120                    fidl::EventPair,
22121                    { fidl::ObjectType::EVENTPAIR.into_raw() },
22122                    2147483648,
22123                >,
22124                fidl::encoding::DefaultFuchsiaResourceDialect,
22125            >(
22126                self.dictionary.as_mut().map(
22127                    <fidl::encoding::HandleType<
22128                        fidl::EventPair,
22129                        { fidl::ObjectType::EVENTPAIR.into_raw() },
22130                        2147483648,
22131                    > as fidl::encoding::ResourceTypeMarker>::take_or_borrow,
22132                ),
22133                encoder,
22134                offset + cur_offset,
22135                depth,
22136            )?;
22137
22138            _prev_end_offset = cur_offset + envelope_size;
22139            if 2 > max_ordinal {
22140                return Ok(());
22141            }
22142
22143            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
22144            // are envelope_size bytes.
22145            let cur_offset: usize = (2 - 1) * envelope_size;
22146
22147            // Zero reserved fields.
22148            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
22149
22150            // Safety:
22151            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
22152            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
22153            //   envelope_size bytes, there is always sufficient room.
22154            fidl::encoding::encode_in_envelope_optional::<
22155                fidl::encoding::BoundedString<100>,
22156                fidl::encoding::DefaultFuchsiaResourceDialect,
22157            >(
22158                self.key.as_ref().map(
22159                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow,
22160                ),
22161                encoder,
22162                offset + cur_offset,
22163                depth,
22164            )?;
22165
22166            _prev_end_offset = cur_offset + envelope_size;
22167            if 3 > max_ordinal {
22168                return Ok(());
22169            }
22170
22171            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
22172            // are envelope_size bytes.
22173            let cur_offset: usize = (3 - 1) * envelope_size;
22174
22175            // Zero reserved fields.
22176            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
22177
22178            // Safety:
22179            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
22180            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
22181            //   envelope_size bytes, there is always sufficient room.
22182            fidl::encoding::encode_in_envelope_optional::<
22183                fidl::encoding::HandleType<
22184                    fidl::EventPair,
22185                    { fidl::ObjectType::EVENTPAIR.into_raw() },
22186                    2147483648,
22187                >,
22188                fidl::encoding::DefaultFuchsiaResourceDialect,
22189            >(
22190                self.value.as_mut().map(
22191                    <fidl::encoding::HandleType<
22192                        fidl::EventPair,
22193                        { fidl::ObjectType::EVENTPAIR.into_raw() },
22194                        2147483648,
22195                    > as fidl::encoding::ResourceTypeMarker>::take_or_borrow,
22196                ),
22197                encoder,
22198                offset + cur_offset,
22199                depth,
22200            )?;
22201
22202            _prev_end_offset = cur_offset + envelope_size;
22203
22204            Ok(())
22205        }
22206    }
22207
22208    impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
22209        for CapabilitiesDictionaryRemoveRequest
22210    {
22211        #[inline(always)]
22212        fn new_empty() -> Self {
22213            Self::default()
22214        }
22215
22216        unsafe fn decode(
22217            &mut self,
22218            decoder: &mut fidl::encoding::Decoder<
22219                '_,
22220                fidl::encoding::DefaultFuchsiaResourceDialect,
22221            >,
22222            offset: usize,
22223            mut depth: fidl::encoding::Depth,
22224        ) -> fidl::Result<()> {
22225            decoder.debug_check_bounds::<Self>(offset);
22226            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
22227                None => return Err(fidl::Error::NotNullable),
22228                Some(len) => len,
22229            };
22230            // Calling decoder.out_of_line_offset(0) is not allowed.
22231            if len == 0 {
22232                return Ok(());
22233            };
22234            depth.increment()?;
22235            let envelope_size = 8;
22236            let bytes_len = len * envelope_size;
22237            let offset = decoder.out_of_line_offset(bytes_len)?;
22238            // Decode the envelope for each type.
22239            let mut _next_ordinal_to_read = 0;
22240            let mut next_offset = offset;
22241            let end_offset = offset + bytes_len;
22242            _next_ordinal_to_read += 1;
22243            if next_offset >= end_offset {
22244                return Ok(());
22245            }
22246
22247            // Decode unknown envelopes for gaps in ordinals.
22248            while _next_ordinal_to_read < 1 {
22249                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
22250                _next_ordinal_to_read += 1;
22251                next_offset += envelope_size;
22252            }
22253
22254            let next_out_of_line = decoder.next_out_of_line();
22255            let handles_before = decoder.remaining_handles();
22256            if let Some((inlined, num_bytes, num_handles)) =
22257                fidl::encoding::decode_envelope_header(decoder, next_offset)?
22258            {
22259                let member_inline_size = <fidl::encoding::HandleType<
22260                    fidl::EventPair,
22261                    { fidl::ObjectType::EVENTPAIR.into_raw() },
22262                    2147483648,
22263                > as fidl::encoding::TypeMarker>::inline_size(
22264                    decoder.context
22265                );
22266                if inlined != (member_inline_size <= 4) {
22267                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
22268                }
22269                let inner_offset;
22270                let mut inner_depth = depth.clone();
22271                if inlined {
22272                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
22273                    inner_offset = next_offset;
22274                } else {
22275                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
22276                    inner_depth.increment()?;
22277                }
22278                let val_ref =
22279                self.dictionary.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::HandleType<fidl::EventPair, { fidl::ObjectType::EVENTPAIR.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect));
22280                fidl::decode!(fidl::encoding::HandleType<fidl::EventPair, { fidl::ObjectType::EVENTPAIR.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect, val_ref, decoder, inner_offset, inner_depth)?;
22281                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
22282                {
22283                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
22284                }
22285                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
22286                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
22287                }
22288            }
22289
22290            next_offset += envelope_size;
22291            _next_ordinal_to_read += 1;
22292            if next_offset >= end_offset {
22293                return Ok(());
22294            }
22295
22296            // Decode unknown envelopes for gaps in ordinals.
22297            while _next_ordinal_to_read < 2 {
22298                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
22299                _next_ordinal_to_read += 1;
22300                next_offset += envelope_size;
22301            }
22302
22303            let next_out_of_line = decoder.next_out_of_line();
22304            let handles_before = decoder.remaining_handles();
22305            if let Some((inlined, num_bytes, num_handles)) =
22306                fidl::encoding::decode_envelope_header(decoder, next_offset)?
22307            {
22308                let member_inline_size =
22309                    <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
22310                        decoder.context,
22311                    );
22312                if inlined != (member_inline_size <= 4) {
22313                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
22314                }
22315                let inner_offset;
22316                let mut inner_depth = depth.clone();
22317                if inlined {
22318                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
22319                    inner_offset = next_offset;
22320                } else {
22321                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
22322                    inner_depth.increment()?;
22323                }
22324                let val_ref = self.key.get_or_insert_with(|| {
22325                    fidl::new_empty!(
22326                        fidl::encoding::BoundedString<100>,
22327                        fidl::encoding::DefaultFuchsiaResourceDialect
22328                    )
22329                });
22330                fidl::decode!(
22331                    fidl::encoding::BoundedString<100>,
22332                    fidl::encoding::DefaultFuchsiaResourceDialect,
22333                    val_ref,
22334                    decoder,
22335                    inner_offset,
22336                    inner_depth
22337                )?;
22338                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
22339                {
22340                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
22341                }
22342                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
22343                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
22344                }
22345            }
22346
22347            next_offset += envelope_size;
22348            _next_ordinal_to_read += 1;
22349            if next_offset >= end_offset {
22350                return Ok(());
22351            }
22352
22353            // Decode unknown envelopes for gaps in ordinals.
22354            while _next_ordinal_to_read < 3 {
22355                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
22356                _next_ordinal_to_read += 1;
22357                next_offset += envelope_size;
22358            }
22359
22360            let next_out_of_line = decoder.next_out_of_line();
22361            let handles_before = decoder.remaining_handles();
22362            if let Some((inlined, num_bytes, num_handles)) =
22363                fidl::encoding::decode_envelope_header(decoder, next_offset)?
22364            {
22365                let member_inline_size = <fidl::encoding::HandleType<
22366                    fidl::EventPair,
22367                    { fidl::ObjectType::EVENTPAIR.into_raw() },
22368                    2147483648,
22369                > as fidl::encoding::TypeMarker>::inline_size(
22370                    decoder.context
22371                );
22372                if inlined != (member_inline_size <= 4) {
22373                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
22374                }
22375                let inner_offset;
22376                let mut inner_depth = depth.clone();
22377                if inlined {
22378                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
22379                    inner_offset = next_offset;
22380                } else {
22381                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
22382                    inner_depth.increment()?;
22383                }
22384                let val_ref =
22385                self.value.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::HandleType<fidl::EventPair, { fidl::ObjectType::EVENTPAIR.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect));
22386                fidl::decode!(fidl::encoding::HandleType<fidl::EventPair, { fidl::ObjectType::EVENTPAIR.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect, val_ref, decoder, inner_offset, inner_depth)?;
22387                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
22388                {
22389                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
22390                }
22391                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
22392                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
22393                }
22394            }
22395
22396            next_offset += envelope_size;
22397
22398            // Decode the remaining unknown envelopes.
22399            while next_offset < end_offset {
22400                _next_ordinal_to_read += 1;
22401                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
22402                next_offset += envelope_size;
22403            }
22404
22405            Ok(())
22406        }
22407    }
22408
22409    impl CapabilitiesDirConnectorOpenRequest {
22410        #[inline(always)]
22411        fn max_ordinal_present(&self) -> u64 {
22412            if let Some(_) = self.path {
22413                return 4;
22414            }
22415            if let Some(_) = self.flags {
22416                return 3;
22417            }
22418            if let Some(_) = self.channel {
22419                return 2;
22420            }
22421            if let Some(_) = self.dir_connector {
22422                return 1;
22423            }
22424            0
22425        }
22426    }
22427
22428    impl fidl::encoding::ResourceTypeMarker for CapabilitiesDirConnectorOpenRequest {
22429        type Borrowed<'a> = &'a mut Self;
22430        fn take_or_borrow<'a>(
22431            value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
22432        ) -> Self::Borrowed<'a> {
22433            value
22434        }
22435    }
22436
22437    unsafe impl fidl::encoding::TypeMarker for CapabilitiesDirConnectorOpenRequest {
22438        type Owned = Self;
22439
22440        #[inline(always)]
22441        fn inline_align(_context: fidl::encoding::Context) -> usize {
22442            8
22443        }
22444
22445        #[inline(always)]
22446        fn inline_size(_context: fidl::encoding::Context) -> usize {
22447            16
22448        }
22449    }
22450
22451    unsafe impl
22452        fidl::encoding::Encode<
22453            CapabilitiesDirConnectorOpenRequest,
22454            fidl::encoding::DefaultFuchsiaResourceDialect,
22455        > for &mut CapabilitiesDirConnectorOpenRequest
22456    {
22457        unsafe fn encode(
22458            self,
22459            encoder: &mut fidl::encoding::Encoder<
22460                '_,
22461                fidl::encoding::DefaultFuchsiaResourceDialect,
22462            >,
22463            offset: usize,
22464            mut depth: fidl::encoding::Depth,
22465        ) -> fidl::Result<()> {
22466            encoder.debug_check_bounds::<CapabilitiesDirConnectorOpenRequest>(offset);
22467            // Vector header
22468            let max_ordinal: u64 = self.max_ordinal_present();
22469            encoder.write_num(max_ordinal, offset);
22470            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
22471            // Calling encoder.out_of_line_offset(0) is not allowed.
22472            if max_ordinal == 0 {
22473                return Ok(());
22474            }
22475            depth.increment()?;
22476            let envelope_size = 8;
22477            let bytes_len = max_ordinal as usize * envelope_size;
22478            #[allow(unused_variables)]
22479            let offset = encoder.out_of_line_offset(bytes_len);
22480            let mut _prev_end_offset: usize = 0;
22481            if 1 > max_ordinal {
22482                return Ok(());
22483            }
22484
22485            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
22486            // are envelope_size bytes.
22487            let cur_offset: usize = (1 - 1) * envelope_size;
22488
22489            // Zero reserved fields.
22490            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
22491
22492            // Safety:
22493            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
22494            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
22495            //   envelope_size bytes, there is always sufficient room.
22496            fidl::encoding::encode_in_envelope_optional::<
22497                fidl::encoding::HandleType<
22498                    fidl::EventPair,
22499                    { fidl::ObjectType::EVENTPAIR.into_raw() },
22500                    2147483648,
22501                >,
22502                fidl::encoding::DefaultFuchsiaResourceDialect,
22503            >(
22504                self.dir_connector.as_mut().map(
22505                    <fidl::encoding::HandleType<
22506                        fidl::EventPair,
22507                        { fidl::ObjectType::EVENTPAIR.into_raw() },
22508                        2147483648,
22509                    > as fidl::encoding::ResourceTypeMarker>::take_or_borrow,
22510                ),
22511                encoder,
22512                offset + cur_offset,
22513                depth,
22514            )?;
22515
22516            _prev_end_offset = cur_offset + envelope_size;
22517            if 2 > max_ordinal {
22518                return Ok(());
22519            }
22520
22521            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
22522            // are envelope_size bytes.
22523            let cur_offset: usize = (2 - 1) * envelope_size;
22524
22525            // Zero reserved fields.
22526            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
22527
22528            // Safety:
22529            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
22530            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
22531            //   envelope_size bytes, there is always sufficient room.
22532            fidl::encoding::encode_in_envelope_optional::<
22533                fidl::encoding::Endpoint<
22534                    fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>,
22535                >,
22536                fidl::encoding::DefaultFuchsiaResourceDialect,
22537            >(
22538                self.channel.as_mut().map(
22539                    <fidl::encoding::Endpoint<
22540                        fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>,
22541                    > as fidl::encoding::ResourceTypeMarker>::take_or_borrow,
22542                ),
22543                encoder,
22544                offset + cur_offset,
22545                depth,
22546            )?;
22547
22548            _prev_end_offset = cur_offset + envelope_size;
22549            if 3 > max_ordinal {
22550                return Ok(());
22551            }
22552
22553            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
22554            // are envelope_size bytes.
22555            let cur_offset: usize = (3 - 1) * envelope_size;
22556
22557            // Zero reserved fields.
22558            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
22559
22560            // Safety:
22561            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
22562            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
22563            //   envelope_size bytes, there is always sufficient room.
22564            fidl::encoding::encode_in_envelope_optional::<
22565                fidl_fuchsia_io::Flags,
22566                fidl::encoding::DefaultFuchsiaResourceDialect,
22567            >(
22568                self.flags
22569                    .as_ref()
22570                    .map(<fidl_fuchsia_io::Flags as fidl::encoding::ValueTypeMarker>::borrow),
22571                encoder,
22572                offset + cur_offset,
22573                depth,
22574            )?;
22575
22576            _prev_end_offset = cur_offset + envelope_size;
22577            if 4 > max_ordinal {
22578                return Ok(());
22579            }
22580
22581            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
22582            // are envelope_size bytes.
22583            let cur_offset: usize = (4 - 1) * envelope_size;
22584
22585            // Zero reserved fields.
22586            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
22587
22588            // Safety:
22589            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
22590            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
22591            //   envelope_size bytes, there is always sufficient room.
22592            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<4095>, fidl::encoding::DefaultFuchsiaResourceDialect>(
22593            self.path.as_ref().map(<fidl::encoding::BoundedString<4095> as fidl::encoding::ValueTypeMarker>::borrow),
22594            encoder, offset + cur_offset, depth
22595        )?;
22596
22597            _prev_end_offset = cur_offset + envelope_size;
22598
22599            Ok(())
22600        }
22601    }
22602
22603    impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
22604        for CapabilitiesDirConnectorOpenRequest
22605    {
22606        #[inline(always)]
22607        fn new_empty() -> Self {
22608            Self::default()
22609        }
22610
22611        unsafe fn decode(
22612            &mut self,
22613            decoder: &mut fidl::encoding::Decoder<
22614                '_,
22615                fidl::encoding::DefaultFuchsiaResourceDialect,
22616            >,
22617            offset: usize,
22618            mut depth: fidl::encoding::Depth,
22619        ) -> fidl::Result<()> {
22620            decoder.debug_check_bounds::<Self>(offset);
22621            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
22622                None => return Err(fidl::Error::NotNullable),
22623                Some(len) => len,
22624            };
22625            // Calling decoder.out_of_line_offset(0) is not allowed.
22626            if len == 0 {
22627                return Ok(());
22628            };
22629            depth.increment()?;
22630            let envelope_size = 8;
22631            let bytes_len = len * envelope_size;
22632            let offset = decoder.out_of_line_offset(bytes_len)?;
22633            // Decode the envelope for each type.
22634            let mut _next_ordinal_to_read = 0;
22635            let mut next_offset = offset;
22636            let end_offset = offset + bytes_len;
22637            _next_ordinal_to_read += 1;
22638            if next_offset >= end_offset {
22639                return Ok(());
22640            }
22641
22642            // Decode unknown envelopes for gaps in ordinals.
22643            while _next_ordinal_to_read < 1 {
22644                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
22645                _next_ordinal_to_read += 1;
22646                next_offset += envelope_size;
22647            }
22648
22649            let next_out_of_line = decoder.next_out_of_line();
22650            let handles_before = decoder.remaining_handles();
22651            if let Some((inlined, num_bytes, num_handles)) =
22652                fidl::encoding::decode_envelope_header(decoder, next_offset)?
22653            {
22654                let member_inline_size = <fidl::encoding::HandleType<
22655                    fidl::EventPair,
22656                    { fidl::ObjectType::EVENTPAIR.into_raw() },
22657                    2147483648,
22658                > as fidl::encoding::TypeMarker>::inline_size(
22659                    decoder.context
22660                );
22661                if inlined != (member_inline_size <= 4) {
22662                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
22663                }
22664                let inner_offset;
22665                let mut inner_depth = depth.clone();
22666                if inlined {
22667                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
22668                    inner_offset = next_offset;
22669                } else {
22670                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
22671                    inner_depth.increment()?;
22672                }
22673                let val_ref =
22674                self.dir_connector.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::HandleType<fidl::EventPair, { fidl::ObjectType::EVENTPAIR.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect));
22675                fidl::decode!(fidl::encoding::HandleType<fidl::EventPair, { fidl::ObjectType::EVENTPAIR.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect, val_ref, decoder, inner_offset, inner_depth)?;
22676                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
22677                {
22678                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
22679                }
22680                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
22681                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
22682                }
22683            }
22684
22685            next_offset += envelope_size;
22686            _next_ordinal_to_read += 1;
22687            if next_offset >= end_offset {
22688                return Ok(());
22689            }
22690
22691            // Decode unknown envelopes for gaps in ordinals.
22692            while _next_ordinal_to_read < 2 {
22693                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
22694                _next_ordinal_to_read += 1;
22695                next_offset += envelope_size;
22696            }
22697
22698            let next_out_of_line = decoder.next_out_of_line();
22699            let handles_before = decoder.remaining_handles();
22700            if let Some((inlined, num_bytes, num_handles)) =
22701                fidl::encoding::decode_envelope_header(decoder, next_offset)?
22702            {
22703                let member_inline_size = <fidl::encoding::Endpoint<
22704                    fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>,
22705                > as fidl::encoding::TypeMarker>::inline_size(
22706                    decoder.context
22707                );
22708                if inlined != (member_inline_size <= 4) {
22709                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
22710                }
22711                let inner_offset;
22712                let mut inner_depth = depth.clone();
22713                if inlined {
22714                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
22715                    inner_offset = next_offset;
22716                } else {
22717                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
22718                    inner_depth.increment()?;
22719                }
22720                let val_ref = self.channel.get_or_insert_with(|| {
22721                    fidl::new_empty!(
22722                        fidl::encoding::Endpoint<
22723                            fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>,
22724                        >,
22725                        fidl::encoding::DefaultFuchsiaResourceDialect
22726                    )
22727                });
22728                fidl::decode!(
22729                    fidl::encoding::Endpoint<
22730                        fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>,
22731                    >,
22732                    fidl::encoding::DefaultFuchsiaResourceDialect,
22733                    val_ref,
22734                    decoder,
22735                    inner_offset,
22736                    inner_depth
22737                )?;
22738                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
22739                {
22740                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
22741                }
22742                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
22743                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
22744                }
22745            }
22746
22747            next_offset += envelope_size;
22748            _next_ordinal_to_read += 1;
22749            if next_offset >= end_offset {
22750                return Ok(());
22751            }
22752
22753            // Decode unknown envelopes for gaps in ordinals.
22754            while _next_ordinal_to_read < 3 {
22755                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
22756                _next_ordinal_to_read += 1;
22757                next_offset += envelope_size;
22758            }
22759
22760            let next_out_of_line = decoder.next_out_of_line();
22761            let handles_before = decoder.remaining_handles();
22762            if let Some((inlined, num_bytes, num_handles)) =
22763                fidl::encoding::decode_envelope_header(decoder, next_offset)?
22764            {
22765                let member_inline_size =
22766                    <fidl_fuchsia_io::Flags as fidl::encoding::TypeMarker>::inline_size(
22767                        decoder.context,
22768                    );
22769                if inlined != (member_inline_size <= 4) {
22770                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
22771                }
22772                let inner_offset;
22773                let mut inner_depth = depth.clone();
22774                if inlined {
22775                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
22776                    inner_offset = next_offset;
22777                } else {
22778                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
22779                    inner_depth.increment()?;
22780                }
22781                let val_ref = self.flags.get_or_insert_with(|| {
22782                    fidl::new_empty!(
22783                        fidl_fuchsia_io::Flags,
22784                        fidl::encoding::DefaultFuchsiaResourceDialect
22785                    )
22786                });
22787                fidl::decode!(
22788                    fidl_fuchsia_io::Flags,
22789                    fidl::encoding::DefaultFuchsiaResourceDialect,
22790                    val_ref,
22791                    decoder,
22792                    inner_offset,
22793                    inner_depth
22794                )?;
22795                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
22796                {
22797                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
22798                }
22799                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
22800                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
22801                }
22802            }
22803
22804            next_offset += envelope_size;
22805            _next_ordinal_to_read += 1;
22806            if next_offset >= end_offset {
22807                return Ok(());
22808            }
22809
22810            // Decode unknown envelopes for gaps in ordinals.
22811            while _next_ordinal_to_read < 4 {
22812                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
22813                _next_ordinal_to_read += 1;
22814                next_offset += envelope_size;
22815            }
22816
22817            let next_out_of_line = decoder.next_out_of_line();
22818            let handles_before = decoder.remaining_handles();
22819            if let Some((inlined, num_bytes, num_handles)) =
22820                fidl::encoding::decode_envelope_header(decoder, next_offset)?
22821            {
22822                let member_inline_size = <fidl::encoding::BoundedString<4095> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
22823                if inlined != (member_inline_size <= 4) {
22824                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
22825                }
22826                let inner_offset;
22827                let mut inner_depth = depth.clone();
22828                if inlined {
22829                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
22830                    inner_offset = next_offset;
22831                } else {
22832                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
22833                    inner_depth.increment()?;
22834                }
22835                let val_ref = self.path.get_or_insert_with(|| {
22836                    fidl::new_empty!(
22837                        fidl::encoding::BoundedString<4095>,
22838                        fidl::encoding::DefaultFuchsiaResourceDialect
22839                    )
22840                });
22841                fidl::decode!(
22842                    fidl::encoding::BoundedString<4095>,
22843                    fidl::encoding::DefaultFuchsiaResourceDialect,
22844                    val_ref,
22845                    decoder,
22846                    inner_offset,
22847                    inner_depth
22848                )?;
22849                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
22850                {
22851                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
22852                }
22853                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
22854                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
22855                }
22856            }
22857
22858            next_offset += envelope_size;
22859
22860            // Decode the remaining unknown envelopes.
22861            while next_offset < end_offset {
22862                _next_ordinal_to_read += 1;
22863                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
22864                next_offset += envelope_size;
22865            }
22866
22867            Ok(())
22868        }
22869    }
22870
22871    impl DeprecatedRouteRequest {
22872        #[inline(always)]
22873        fn max_ordinal_present(&self) -> u64 {
22874            if let Some(_) = self.metadata {
22875                return 2;
22876            }
22877            if let Some(_) = self.target {
22878                return 1;
22879            }
22880            0
22881        }
22882    }
22883
22884    impl fidl::encoding::ResourceTypeMarker for DeprecatedRouteRequest {
22885        type Borrowed<'a> = &'a mut Self;
22886        fn take_or_borrow<'a>(
22887            value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
22888        ) -> Self::Borrowed<'a> {
22889            value
22890        }
22891    }
22892
22893    unsafe impl fidl::encoding::TypeMarker for DeprecatedRouteRequest {
22894        type Owned = Self;
22895
22896        #[inline(always)]
22897        fn inline_align(_context: fidl::encoding::Context) -> usize {
22898            8
22899        }
22900
22901        #[inline(always)]
22902        fn inline_size(_context: fidl::encoding::Context) -> usize {
22903            16
22904        }
22905    }
22906
22907    unsafe impl
22908        fidl::encoding::Encode<
22909            DeprecatedRouteRequest,
22910            fidl::encoding::DefaultFuchsiaResourceDialect,
22911        > for &mut DeprecatedRouteRequest
22912    {
22913        unsafe fn encode(
22914            self,
22915            encoder: &mut fidl::encoding::Encoder<
22916                '_,
22917                fidl::encoding::DefaultFuchsiaResourceDialect,
22918            >,
22919            offset: usize,
22920            mut depth: fidl::encoding::Depth,
22921        ) -> fidl::Result<()> {
22922            encoder.debug_check_bounds::<DeprecatedRouteRequest>(offset);
22923            // Vector header
22924            let max_ordinal: u64 = self.max_ordinal_present();
22925            encoder.write_num(max_ordinal, offset);
22926            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
22927            // Calling encoder.out_of_line_offset(0) is not allowed.
22928            if max_ordinal == 0 {
22929                return Ok(());
22930            }
22931            depth.increment()?;
22932            let envelope_size = 8;
22933            let bytes_len = max_ordinal as usize * envelope_size;
22934            #[allow(unused_variables)]
22935            let offset = encoder.out_of_line_offset(bytes_len);
22936            let mut _prev_end_offset: usize = 0;
22937            if 1 > max_ordinal {
22938                return Ok(());
22939            }
22940
22941            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
22942            // are envelope_size bytes.
22943            let cur_offset: usize = (1 - 1) * envelope_size;
22944
22945            // Zero reserved fields.
22946            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
22947
22948            // Safety:
22949            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
22950            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
22951            //   envelope_size bytes, there is always sufficient room.
22952            fidl::encoding::encode_in_envelope_optional::<
22953                WeakInstanceToken,
22954                fidl::encoding::DefaultFuchsiaResourceDialect,
22955            >(
22956                self.target
22957                    .as_mut()
22958                    .map(<WeakInstanceToken as fidl::encoding::ResourceTypeMarker>::take_or_borrow),
22959                encoder,
22960                offset + cur_offset,
22961                depth,
22962            )?;
22963
22964            _prev_end_offset = cur_offset + envelope_size;
22965            if 2 > max_ordinal {
22966                return Ok(());
22967            }
22968
22969            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
22970            // are envelope_size bytes.
22971            let cur_offset: usize = (2 - 1) * envelope_size;
22972
22973            // Zero reserved fields.
22974            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
22975
22976            // Safety:
22977            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
22978            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
22979            //   envelope_size bytes, there is always sufficient room.
22980            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<DictionaryMarker>>, fidl::encoding::DefaultFuchsiaResourceDialect>(
22981            self.metadata.as_mut().map(<fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<DictionaryMarker>> as fidl::encoding::ResourceTypeMarker>::take_or_borrow),
22982            encoder, offset + cur_offset, depth
22983        )?;
22984
22985            _prev_end_offset = cur_offset + envelope_size;
22986
22987            Ok(())
22988        }
22989    }
22990
22991    impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
22992        for DeprecatedRouteRequest
22993    {
22994        #[inline(always)]
22995        fn new_empty() -> Self {
22996            Self::default()
22997        }
22998
22999        unsafe fn decode(
23000            &mut self,
23001            decoder: &mut fidl::encoding::Decoder<
23002                '_,
23003                fidl::encoding::DefaultFuchsiaResourceDialect,
23004            >,
23005            offset: usize,
23006            mut depth: fidl::encoding::Depth,
23007        ) -> fidl::Result<()> {
23008            decoder.debug_check_bounds::<Self>(offset);
23009            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
23010                None => return Err(fidl::Error::NotNullable),
23011                Some(len) => len,
23012            };
23013            // Calling decoder.out_of_line_offset(0) is not allowed.
23014            if len == 0 {
23015                return Ok(());
23016            };
23017            depth.increment()?;
23018            let envelope_size = 8;
23019            let bytes_len = len * envelope_size;
23020            let offset = decoder.out_of_line_offset(bytes_len)?;
23021            // Decode the envelope for each type.
23022            let mut _next_ordinal_to_read = 0;
23023            let mut next_offset = offset;
23024            let end_offset = offset + bytes_len;
23025            _next_ordinal_to_read += 1;
23026            if next_offset >= end_offset {
23027                return Ok(());
23028            }
23029
23030            // Decode unknown envelopes for gaps in ordinals.
23031            while _next_ordinal_to_read < 1 {
23032                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
23033                _next_ordinal_to_read += 1;
23034                next_offset += envelope_size;
23035            }
23036
23037            let next_out_of_line = decoder.next_out_of_line();
23038            let handles_before = decoder.remaining_handles();
23039            if let Some((inlined, num_bytes, num_handles)) =
23040                fidl::encoding::decode_envelope_header(decoder, next_offset)?
23041            {
23042                let member_inline_size =
23043                    <WeakInstanceToken as fidl::encoding::TypeMarker>::inline_size(decoder.context);
23044                if inlined != (member_inline_size <= 4) {
23045                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
23046                }
23047                let inner_offset;
23048                let mut inner_depth = depth.clone();
23049                if inlined {
23050                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
23051                    inner_offset = next_offset;
23052                } else {
23053                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
23054                    inner_depth.increment()?;
23055                }
23056                let val_ref = self.target.get_or_insert_with(|| {
23057                    fidl::new_empty!(
23058                        WeakInstanceToken,
23059                        fidl::encoding::DefaultFuchsiaResourceDialect
23060                    )
23061                });
23062                fidl::decode!(
23063                    WeakInstanceToken,
23064                    fidl::encoding::DefaultFuchsiaResourceDialect,
23065                    val_ref,
23066                    decoder,
23067                    inner_offset,
23068                    inner_depth
23069                )?;
23070                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
23071                {
23072                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
23073                }
23074                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
23075                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
23076                }
23077            }
23078
23079            next_offset += envelope_size;
23080            _next_ordinal_to_read += 1;
23081            if next_offset >= end_offset {
23082                return Ok(());
23083            }
23084
23085            // Decode unknown envelopes for gaps in ordinals.
23086            while _next_ordinal_to_read < 2 {
23087                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
23088                _next_ordinal_to_read += 1;
23089                next_offset += envelope_size;
23090            }
23091
23092            let next_out_of_line = decoder.next_out_of_line();
23093            let handles_before = decoder.remaining_handles();
23094            if let Some((inlined, num_bytes, num_handles)) =
23095                fidl::encoding::decode_envelope_header(decoder, next_offset)?
23096            {
23097                let member_inline_size = <fidl::encoding::Endpoint<
23098                    fidl::endpoints::ClientEnd<DictionaryMarker>,
23099                > as fidl::encoding::TypeMarker>::inline_size(
23100                    decoder.context
23101                );
23102                if inlined != (member_inline_size <= 4) {
23103                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
23104                }
23105                let inner_offset;
23106                let mut inner_depth = depth.clone();
23107                if inlined {
23108                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
23109                    inner_offset = next_offset;
23110                } else {
23111                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
23112                    inner_depth.increment()?;
23113                }
23114                let val_ref = self.metadata.get_or_insert_with(|| {
23115                    fidl::new_empty!(
23116                        fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<DictionaryMarker>>,
23117                        fidl::encoding::DefaultFuchsiaResourceDialect
23118                    )
23119                });
23120                fidl::decode!(
23121                    fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<DictionaryMarker>>,
23122                    fidl::encoding::DefaultFuchsiaResourceDialect,
23123                    val_ref,
23124                    decoder,
23125                    inner_offset,
23126                    inner_depth
23127                )?;
23128                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
23129                {
23130                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
23131                }
23132                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
23133                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
23134                }
23135            }
23136
23137            next_offset += envelope_size;
23138
23139            // Decode the remaining unknown envelopes.
23140            while next_offset < end_offset {
23141                _next_ordinal_to_read += 1;
23142                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
23143                next_offset += envelope_size;
23144            }
23145
23146            Ok(())
23147        }
23148    }
23149
23150    impl RouteRequest {
23151        #[inline(always)]
23152        fn max_ordinal_present(&self) -> u64 {
23153            if let Some(_) = self.metadata {
23154                return 1;
23155            }
23156            0
23157        }
23158    }
23159
23160    impl fidl::encoding::ResourceTypeMarker for RouteRequest {
23161        type Borrowed<'a> = &'a mut Self;
23162        fn take_or_borrow<'a>(
23163            value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
23164        ) -> Self::Borrowed<'a> {
23165            value
23166        }
23167    }
23168
23169    unsafe impl fidl::encoding::TypeMarker for RouteRequest {
23170        type Owned = Self;
23171
23172        #[inline(always)]
23173        fn inline_align(_context: fidl::encoding::Context) -> usize {
23174            8
23175        }
23176
23177        #[inline(always)]
23178        fn inline_size(_context: fidl::encoding::Context) -> usize {
23179            16
23180        }
23181    }
23182
23183    unsafe impl fidl::encoding::Encode<RouteRequest, fidl::encoding::DefaultFuchsiaResourceDialect>
23184        for &mut RouteRequest
23185    {
23186        unsafe fn encode(
23187            self,
23188            encoder: &mut fidl::encoding::Encoder<
23189                '_,
23190                fidl::encoding::DefaultFuchsiaResourceDialect,
23191            >,
23192            offset: usize,
23193            mut depth: fidl::encoding::Depth,
23194        ) -> fidl::Result<()> {
23195            encoder.debug_check_bounds::<RouteRequest>(offset);
23196            // Vector header
23197            let max_ordinal: u64 = self.max_ordinal_present();
23198            encoder.write_num(max_ordinal, offset);
23199            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
23200            // Calling encoder.out_of_line_offset(0) is not allowed.
23201            if max_ordinal == 0 {
23202                return Ok(());
23203            }
23204            depth.increment()?;
23205            let envelope_size = 8;
23206            let bytes_len = max_ordinal as usize * envelope_size;
23207            #[allow(unused_variables)]
23208            let offset = encoder.out_of_line_offset(bytes_len);
23209            let mut _prev_end_offset: usize = 0;
23210            if 1 > max_ordinal {
23211                return Ok(());
23212            }
23213
23214            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
23215            // are envelope_size bytes.
23216            let cur_offset: usize = (1 - 1) * envelope_size;
23217
23218            // Zero reserved fields.
23219            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
23220
23221            // Safety:
23222            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
23223            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
23224            //   envelope_size bytes, there is always sufficient room.
23225            fidl::encoding::encode_in_envelope_optional::<
23226                fidl::encoding::HandleType<
23227                    fidl::EventPair,
23228                    { fidl::ObjectType::EVENTPAIR.into_raw() },
23229                    2147483648,
23230                >,
23231                fidl::encoding::DefaultFuchsiaResourceDialect,
23232            >(
23233                self.metadata.as_mut().map(
23234                    <fidl::encoding::HandleType<
23235                        fidl::EventPair,
23236                        { fidl::ObjectType::EVENTPAIR.into_raw() },
23237                        2147483648,
23238                    > as fidl::encoding::ResourceTypeMarker>::take_or_borrow,
23239                ),
23240                encoder,
23241                offset + cur_offset,
23242                depth,
23243            )?;
23244
23245            _prev_end_offset = cur_offset + envelope_size;
23246
23247            Ok(())
23248        }
23249    }
23250
23251    impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect> for RouteRequest {
23252        #[inline(always)]
23253        fn new_empty() -> Self {
23254            Self::default()
23255        }
23256
23257        unsafe fn decode(
23258            &mut self,
23259            decoder: &mut fidl::encoding::Decoder<
23260                '_,
23261                fidl::encoding::DefaultFuchsiaResourceDialect,
23262            >,
23263            offset: usize,
23264            mut depth: fidl::encoding::Depth,
23265        ) -> fidl::Result<()> {
23266            decoder.debug_check_bounds::<Self>(offset);
23267            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
23268                None => return Err(fidl::Error::NotNullable),
23269                Some(len) => len,
23270            };
23271            // Calling decoder.out_of_line_offset(0) is not allowed.
23272            if len == 0 {
23273                return Ok(());
23274            };
23275            depth.increment()?;
23276            let envelope_size = 8;
23277            let bytes_len = len * envelope_size;
23278            let offset = decoder.out_of_line_offset(bytes_len)?;
23279            // Decode the envelope for each type.
23280            let mut _next_ordinal_to_read = 0;
23281            let mut next_offset = offset;
23282            let end_offset = offset + bytes_len;
23283            _next_ordinal_to_read += 1;
23284            if next_offset >= end_offset {
23285                return Ok(());
23286            }
23287
23288            // Decode unknown envelopes for gaps in ordinals.
23289            while _next_ordinal_to_read < 1 {
23290                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
23291                _next_ordinal_to_read += 1;
23292                next_offset += envelope_size;
23293            }
23294
23295            let next_out_of_line = decoder.next_out_of_line();
23296            let handles_before = decoder.remaining_handles();
23297            if let Some((inlined, num_bytes, num_handles)) =
23298                fidl::encoding::decode_envelope_header(decoder, next_offset)?
23299            {
23300                let member_inline_size = <fidl::encoding::HandleType<
23301                    fidl::EventPair,
23302                    { fidl::ObjectType::EVENTPAIR.into_raw() },
23303                    2147483648,
23304                > as fidl::encoding::TypeMarker>::inline_size(
23305                    decoder.context
23306                );
23307                if inlined != (member_inline_size <= 4) {
23308                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
23309                }
23310                let inner_offset;
23311                let mut inner_depth = depth.clone();
23312                if inlined {
23313                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
23314                    inner_offset = next_offset;
23315                } else {
23316                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
23317                    inner_depth.increment()?;
23318                }
23319                let val_ref =
23320                self.metadata.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::HandleType<fidl::EventPair, { fidl::ObjectType::EVENTPAIR.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect));
23321                fidl::decode!(fidl::encoding::HandleType<fidl::EventPair, { fidl::ObjectType::EVENTPAIR.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect, val_ref, decoder, inner_offset, inner_depth)?;
23322                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
23323                {
23324                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
23325                }
23326                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
23327                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
23328                }
23329            }
23330
23331            next_offset += envelope_size;
23332
23333            // Decode the remaining unknown envelopes.
23334            while next_offset < end_offset {
23335                _next_ordinal_to_read += 1;
23336                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
23337                next_offset += envelope_size;
23338            }
23339
23340            Ok(())
23341        }
23342    }
23343
23344    impl fidl::encoding::ResourceTypeMarker for CapabilityDeprecated {
23345        type Borrowed<'a> = &'a mut Self;
23346        fn take_or_borrow<'a>(
23347            value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
23348        ) -> Self::Borrowed<'a> {
23349            value
23350        }
23351    }
23352
23353    unsafe impl fidl::encoding::TypeMarker for CapabilityDeprecated {
23354        type Owned = Self;
23355
23356        #[inline(always)]
23357        fn inline_align(_context: fidl::encoding::Context) -> usize {
23358            8
23359        }
23360
23361        #[inline(always)]
23362        fn inline_size(_context: fidl::encoding::Context) -> usize {
23363            16
23364        }
23365    }
23366
23367    unsafe impl
23368        fidl::encoding::Encode<CapabilityDeprecated, fidl::encoding::DefaultFuchsiaResourceDialect>
23369        for &mut CapabilityDeprecated
23370    {
23371        #[inline]
23372        unsafe fn encode(
23373            self,
23374            encoder: &mut fidl::encoding::Encoder<
23375                '_,
23376                fidl::encoding::DefaultFuchsiaResourceDialect,
23377            >,
23378            offset: usize,
23379            _depth: fidl::encoding::Depth,
23380        ) -> fidl::Result<()> {
23381            encoder.debug_check_bounds::<CapabilityDeprecated>(offset);
23382            encoder.write_num::<u64>(self.ordinal(), offset);
23383            match self {
23384            CapabilityDeprecated::Connector(ref mut val) => {
23385                fidl::encoding::encode_in_envelope::<fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<ConnectorMarker>>, fidl::encoding::DefaultFuchsiaResourceDialect>(
23386                    <fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<ConnectorMarker>> as fidl::encoding::ResourceTypeMarker>::take_or_borrow(val),
23387                    encoder, offset + 8, _depth
23388                )
23389            }
23390            CapabilityDeprecated::DirConnector(ref mut val) => {
23391                fidl::encoding::encode_in_envelope::<fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<DirConnectorMarker>>, fidl::encoding::DefaultFuchsiaResourceDialect>(
23392                    <fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<DirConnectorMarker>> as fidl::encoding::ResourceTypeMarker>::take_or_borrow(val),
23393                    encoder, offset + 8, _depth
23394                )
23395            }
23396            CapabilityDeprecated::Dictionary(ref mut val) => {
23397                fidl::encoding::encode_in_envelope::<fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<DictionaryMarker>>, fidl::encoding::DefaultFuchsiaResourceDialect>(
23398                    <fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<DictionaryMarker>> as fidl::encoding::ResourceTypeMarker>::take_or_borrow(val),
23399                    encoder, offset + 8, _depth
23400                )
23401            }
23402            CapabilityDeprecated::Data(ref val) => {
23403                fidl::encoding::encode_in_envelope::<Data, fidl::encoding::DefaultFuchsiaResourceDialect>(
23404                    <Data as fidl::encoding::ValueTypeMarker>::borrow(val),
23405                    encoder, offset + 8, _depth
23406                )
23407            }
23408            CapabilityDeprecated::ConnectorRouter(ref mut val) => {
23409                fidl::encoding::encode_in_envelope::<fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<ConnectorRouterDeprecatedMarker>>, fidl::encoding::DefaultFuchsiaResourceDialect>(
23410                    <fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<ConnectorRouterDeprecatedMarker>> as fidl::encoding::ResourceTypeMarker>::take_or_borrow(val),
23411                    encoder, offset + 8, _depth
23412                )
23413            }
23414            CapabilityDeprecated::DirConnectorRouter(ref mut val) => {
23415                fidl::encoding::encode_in_envelope::<fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<DirConnectorRouterDeprecatedMarker>>, fidl::encoding::DefaultFuchsiaResourceDialect>(
23416                    <fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<DirConnectorRouterDeprecatedMarker>> as fidl::encoding::ResourceTypeMarker>::take_or_borrow(val),
23417                    encoder, offset + 8, _depth
23418                )
23419            }
23420            CapabilityDeprecated::DictionaryRouter(ref mut val) => {
23421                fidl::encoding::encode_in_envelope::<fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<DictionaryRouterDeprecatedMarker>>, fidl::encoding::DefaultFuchsiaResourceDialect>(
23422                    <fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<DictionaryRouterDeprecatedMarker>> as fidl::encoding::ResourceTypeMarker>::take_or_borrow(val),
23423                    encoder, offset + 8, _depth
23424                )
23425            }
23426            CapabilityDeprecated::DataRouter(ref mut val) => {
23427                fidl::encoding::encode_in_envelope::<fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<DataRouterDeprecatedMarker>>, fidl::encoding::DefaultFuchsiaResourceDialect>(
23428                    <fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<DataRouterDeprecatedMarker>> as fidl::encoding::ResourceTypeMarker>::take_or_borrow(val),
23429                    encoder, offset + 8, _depth
23430                )
23431            }
23432            CapabilityDeprecated::__SourceBreaking { .. } => Err(fidl::Error::UnknownUnionTag),
23433        }
23434        }
23435    }
23436
23437    impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
23438        for CapabilityDeprecated
23439    {
23440        #[inline(always)]
23441        fn new_empty() -> Self {
23442            Self::__SourceBreaking { unknown_ordinal: 0 }
23443        }
23444
23445        #[inline]
23446        unsafe fn decode(
23447            &mut self,
23448            decoder: &mut fidl::encoding::Decoder<
23449                '_,
23450                fidl::encoding::DefaultFuchsiaResourceDialect,
23451            >,
23452            offset: usize,
23453            mut depth: fidl::encoding::Depth,
23454        ) -> fidl::Result<()> {
23455            decoder.debug_check_bounds::<Self>(offset);
23456            #[allow(unused_variables)]
23457            let next_out_of_line = decoder.next_out_of_line();
23458            let handles_before = decoder.remaining_handles();
23459            let (ordinal, inlined, num_bytes, num_handles) =
23460                fidl::encoding::decode_union_inline_portion(decoder, offset)?;
23461
23462            let member_inline_size = match ordinal {
23463            1 => <fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<ConnectorMarker>> as fidl::encoding::TypeMarker>::inline_size(decoder.context),
23464            2 => <fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<DirConnectorMarker>> as fidl::encoding::TypeMarker>::inline_size(decoder.context),
23465            3 => <fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<DictionaryMarker>> as fidl::encoding::TypeMarker>::inline_size(decoder.context),
23466            4 => <Data as fidl::encoding::TypeMarker>::inline_size(decoder.context),
23467            5 => <fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<ConnectorRouterDeprecatedMarker>> as fidl::encoding::TypeMarker>::inline_size(decoder.context),
23468            6 => <fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<DirConnectorRouterDeprecatedMarker>> as fidl::encoding::TypeMarker>::inline_size(decoder.context),
23469            7 => <fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<DictionaryRouterDeprecatedMarker>> as fidl::encoding::TypeMarker>::inline_size(decoder.context),
23470            8 => <fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<DataRouterDeprecatedMarker>> as fidl::encoding::TypeMarker>::inline_size(decoder.context),
23471            0 => return Err(fidl::Error::UnknownUnionTag),
23472            _ => num_bytes as usize,
23473        };
23474
23475            if inlined != (member_inline_size <= 4) {
23476                return Err(fidl::Error::InvalidInlineBitInEnvelope);
23477            }
23478            let _inner_offset;
23479            if inlined {
23480                decoder.check_inline_envelope_padding(offset + 8, member_inline_size)?;
23481                _inner_offset = offset + 8;
23482            } else {
23483                depth.increment()?;
23484                _inner_offset = decoder.out_of_line_offset(member_inline_size)?;
23485            }
23486            match ordinal {
23487                1 => {
23488                    #[allow(irrefutable_let_patterns)]
23489                    if let CapabilityDeprecated::Connector(_) = self {
23490                        // Do nothing, read the value into the object
23491                    } else {
23492                        // Initialize `self` to the right variant
23493                        *self = CapabilityDeprecated::Connector(fidl::new_empty!(
23494                            fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<ConnectorMarker>>,
23495                            fidl::encoding::DefaultFuchsiaResourceDialect
23496                        ));
23497                    }
23498                    #[allow(irrefutable_let_patterns)]
23499                    if let CapabilityDeprecated::Connector(ref mut val) = self {
23500                        fidl::decode!(
23501                            fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<ConnectorMarker>>,
23502                            fidl::encoding::DefaultFuchsiaResourceDialect,
23503                            val,
23504                            decoder,
23505                            _inner_offset,
23506                            depth
23507                        )?;
23508                    } else {
23509                        unreachable!()
23510                    }
23511                }
23512                2 => {
23513                    #[allow(irrefutable_let_patterns)]
23514                    if let CapabilityDeprecated::DirConnector(_) = self {
23515                        // Do nothing, read the value into the object
23516                    } else {
23517                        // Initialize `self` to the right variant
23518                        *self = CapabilityDeprecated::DirConnector(fidl::new_empty!(
23519                            fidl::encoding::Endpoint<
23520                                fidl::endpoints::ClientEnd<DirConnectorMarker>,
23521                            >,
23522                            fidl::encoding::DefaultFuchsiaResourceDialect
23523                        ));
23524                    }
23525                    #[allow(irrefutable_let_patterns)]
23526                    if let CapabilityDeprecated::DirConnector(ref mut val) = self {
23527                        fidl::decode!(
23528                            fidl::encoding::Endpoint<
23529                                fidl::endpoints::ClientEnd<DirConnectorMarker>,
23530                            >,
23531                            fidl::encoding::DefaultFuchsiaResourceDialect,
23532                            val,
23533                            decoder,
23534                            _inner_offset,
23535                            depth
23536                        )?;
23537                    } else {
23538                        unreachable!()
23539                    }
23540                }
23541                3 => {
23542                    #[allow(irrefutable_let_patterns)]
23543                    if let CapabilityDeprecated::Dictionary(_) = self {
23544                        // Do nothing, read the value into the object
23545                    } else {
23546                        // Initialize `self` to the right variant
23547                        *self = CapabilityDeprecated::Dictionary(fidl::new_empty!(
23548                            fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<DictionaryMarker>>,
23549                            fidl::encoding::DefaultFuchsiaResourceDialect
23550                        ));
23551                    }
23552                    #[allow(irrefutable_let_patterns)]
23553                    if let CapabilityDeprecated::Dictionary(ref mut val) = self {
23554                        fidl::decode!(
23555                            fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<DictionaryMarker>>,
23556                            fidl::encoding::DefaultFuchsiaResourceDialect,
23557                            val,
23558                            decoder,
23559                            _inner_offset,
23560                            depth
23561                        )?;
23562                    } else {
23563                        unreachable!()
23564                    }
23565                }
23566                4 => {
23567                    #[allow(irrefutable_let_patterns)]
23568                    if let CapabilityDeprecated::Data(_) = self {
23569                        // Do nothing, read the value into the object
23570                    } else {
23571                        // Initialize `self` to the right variant
23572                        *self = CapabilityDeprecated::Data(fidl::new_empty!(
23573                            Data,
23574                            fidl::encoding::DefaultFuchsiaResourceDialect
23575                        ));
23576                    }
23577                    #[allow(irrefutable_let_patterns)]
23578                    if let CapabilityDeprecated::Data(ref mut val) = self {
23579                        fidl::decode!(
23580                            Data,
23581                            fidl::encoding::DefaultFuchsiaResourceDialect,
23582                            val,
23583                            decoder,
23584                            _inner_offset,
23585                            depth
23586                        )?;
23587                    } else {
23588                        unreachable!()
23589                    }
23590                }
23591                5 => {
23592                    #[allow(irrefutable_let_patterns)]
23593                    if let CapabilityDeprecated::ConnectorRouter(_) = self {
23594                        // Do nothing, read the value into the object
23595                    } else {
23596                        // Initialize `self` to the right variant
23597                        *self = CapabilityDeprecated::ConnectorRouter(fidl::new_empty!(
23598                            fidl::encoding::Endpoint<
23599                                fidl::endpoints::ClientEnd<ConnectorRouterDeprecatedMarker>,
23600                            >,
23601                            fidl::encoding::DefaultFuchsiaResourceDialect
23602                        ));
23603                    }
23604                    #[allow(irrefutable_let_patterns)]
23605                    if let CapabilityDeprecated::ConnectorRouter(ref mut val) = self {
23606                        fidl::decode!(
23607                            fidl::encoding::Endpoint<
23608                                fidl::endpoints::ClientEnd<ConnectorRouterDeprecatedMarker>,
23609                            >,
23610                            fidl::encoding::DefaultFuchsiaResourceDialect,
23611                            val,
23612                            decoder,
23613                            _inner_offset,
23614                            depth
23615                        )?;
23616                    } else {
23617                        unreachable!()
23618                    }
23619                }
23620                6 => {
23621                    #[allow(irrefutable_let_patterns)]
23622                    if let CapabilityDeprecated::DirConnectorRouter(_) = self {
23623                        // Do nothing, read the value into the object
23624                    } else {
23625                        // Initialize `self` to the right variant
23626                        *self = CapabilityDeprecated::DirConnectorRouter(fidl::new_empty!(
23627                            fidl::encoding::Endpoint<
23628                                fidl::endpoints::ClientEnd<DirConnectorRouterDeprecatedMarker>,
23629                            >,
23630                            fidl::encoding::DefaultFuchsiaResourceDialect
23631                        ));
23632                    }
23633                    #[allow(irrefutable_let_patterns)]
23634                    if let CapabilityDeprecated::DirConnectorRouter(ref mut val) = self {
23635                        fidl::decode!(
23636                            fidl::encoding::Endpoint<
23637                                fidl::endpoints::ClientEnd<DirConnectorRouterDeprecatedMarker>,
23638                            >,
23639                            fidl::encoding::DefaultFuchsiaResourceDialect,
23640                            val,
23641                            decoder,
23642                            _inner_offset,
23643                            depth
23644                        )?;
23645                    } else {
23646                        unreachable!()
23647                    }
23648                }
23649                7 => {
23650                    #[allow(irrefutable_let_patterns)]
23651                    if let CapabilityDeprecated::DictionaryRouter(_) = self {
23652                        // Do nothing, read the value into the object
23653                    } else {
23654                        // Initialize `self` to the right variant
23655                        *self = CapabilityDeprecated::DictionaryRouter(fidl::new_empty!(
23656                            fidl::encoding::Endpoint<
23657                                fidl::endpoints::ClientEnd<DictionaryRouterDeprecatedMarker>,
23658                            >,
23659                            fidl::encoding::DefaultFuchsiaResourceDialect
23660                        ));
23661                    }
23662                    #[allow(irrefutable_let_patterns)]
23663                    if let CapabilityDeprecated::DictionaryRouter(ref mut val) = self {
23664                        fidl::decode!(
23665                            fidl::encoding::Endpoint<
23666                                fidl::endpoints::ClientEnd<DictionaryRouterDeprecatedMarker>,
23667                            >,
23668                            fidl::encoding::DefaultFuchsiaResourceDialect,
23669                            val,
23670                            decoder,
23671                            _inner_offset,
23672                            depth
23673                        )?;
23674                    } else {
23675                        unreachable!()
23676                    }
23677                }
23678                8 => {
23679                    #[allow(irrefutable_let_patterns)]
23680                    if let CapabilityDeprecated::DataRouter(_) = self {
23681                        // Do nothing, read the value into the object
23682                    } else {
23683                        // Initialize `self` to the right variant
23684                        *self = CapabilityDeprecated::DataRouter(fidl::new_empty!(
23685                            fidl::encoding::Endpoint<
23686                                fidl::endpoints::ClientEnd<DataRouterDeprecatedMarker>,
23687                            >,
23688                            fidl::encoding::DefaultFuchsiaResourceDialect
23689                        ));
23690                    }
23691                    #[allow(irrefutable_let_patterns)]
23692                    if let CapabilityDeprecated::DataRouter(ref mut val) = self {
23693                        fidl::decode!(
23694                            fidl::encoding::Endpoint<
23695                                fidl::endpoints::ClientEnd<DataRouterDeprecatedMarker>,
23696                            >,
23697                            fidl::encoding::DefaultFuchsiaResourceDialect,
23698                            val,
23699                            decoder,
23700                            _inner_offset,
23701                            depth
23702                        )?;
23703                    } else {
23704                        unreachable!()
23705                    }
23706                }
23707                #[allow(deprecated)]
23708                ordinal => {
23709                    for _ in 0..num_handles {
23710                        decoder.drop_next_handle()?;
23711                    }
23712                    *self = CapabilityDeprecated::__SourceBreaking { unknown_ordinal: ordinal };
23713                }
23714            }
23715            if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize) {
23716                return Err(fidl::Error::InvalidNumBytesInEnvelope);
23717            }
23718            if handles_before != decoder.remaining_handles() + (num_handles as usize) {
23719                return Err(fidl::Error::InvalidNumHandlesInEnvelope);
23720            }
23721            Ok(())
23722        }
23723    }
23724}