fidl_fuchsia_factory/
fidl_fuchsia_factory.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_factory__common::*;
11use futures::future::{self, MaybeDone, TryFutureExt};
12use zx_status;
13
14#[derive(Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
15pub struct FactoryStoreProviderGetFactoryStoreRequest {
16    pub dir: fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>,
17}
18
19impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect>
20    for FactoryStoreProviderGetFactoryStoreRequest
21{
22}
23
24#[derive(Debug, Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash)]
25pub struct AlphaFactoryStoreProviderMarker;
26
27impl fidl::endpoints::ProtocolMarker for AlphaFactoryStoreProviderMarker {
28    type Proxy = AlphaFactoryStoreProviderProxy;
29    type RequestStream = AlphaFactoryStoreProviderRequestStream;
30    #[cfg(target_os = "fuchsia")]
31    type SynchronousProxy = AlphaFactoryStoreProviderSynchronousProxy;
32
33    const DEBUG_NAME: &'static str = "fuchsia.factory.AlphaFactoryStoreProvider";
34}
35impl fidl::endpoints::DiscoverableProtocolMarker for AlphaFactoryStoreProviderMarker {}
36
37pub trait AlphaFactoryStoreProviderProxyInterface: Send + Sync {
38    fn r#get_factory_store(
39        &self,
40        dir: fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>,
41    ) -> Result<(), fidl::Error>;
42}
43#[derive(Debug)]
44#[cfg(target_os = "fuchsia")]
45pub struct AlphaFactoryStoreProviderSynchronousProxy {
46    client: fidl::client::sync::Client,
47}
48
49#[cfg(target_os = "fuchsia")]
50impl fidl::endpoints::SynchronousProxy for AlphaFactoryStoreProviderSynchronousProxy {
51    type Proxy = AlphaFactoryStoreProviderProxy;
52    type Protocol = AlphaFactoryStoreProviderMarker;
53
54    fn from_channel(inner: fidl::Channel) -> Self {
55        Self::new(inner)
56    }
57
58    fn into_channel(self) -> fidl::Channel {
59        self.client.into_channel()
60    }
61
62    fn as_channel(&self) -> &fidl::Channel {
63        self.client.as_channel()
64    }
65}
66
67#[cfg(target_os = "fuchsia")]
68impl AlphaFactoryStoreProviderSynchronousProxy {
69    pub fn new(channel: fidl::Channel) -> Self {
70        let protocol_name =
71            <AlphaFactoryStoreProviderMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
72        Self { client: fidl::client::sync::Client::new(channel, protocol_name) }
73    }
74
75    pub fn into_channel(self) -> fidl::Channel {
76        self.client.into_channel()
77    }
78
79    /// Waits until an event arrives and returns it. It is safe for other
80    /// threads to make concurrent requests while waiting for an event.
81    pub fn wait_for_event(
82        &self,
83        deadline: zx::MonotonicInstant,
84    ) -> Result<AlphaFactoryStoreProviderEvent, fidl::Error> {
85        AlphaFactoryStoreProviderEvent::decode(self.client.wait_for_event(deadline)?)
86    }
87
88    pub fn r#get_factory_store(
89        &self,
90        mut dir: fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>,
91    ) -> Result<(), fidl::Error> {
92        self.client.send::<FactoryStoreProviderGetFactoryStoreRequest>(
93            (dir,),
94            0x21fa8e8bc0e1209e,
95            fidl::encoding::DynamicFlags::empty(),
96        )
97    }
98}
99
100#[cfg(target_os = "fuchsia")]
101impl From<AlphaFactoryStoreProviderSynchronousProxy> for zx::Handle {
102    fn from(value: AlphaFactoryStoreProviderSynchronousProxy) -> Self {
103        value.into_channel().into()
104    }
105}
106
107#[cfg(target_os = "fuchsia")]
108impl From<fidl::Channel> for AlphaFactoryStoreProviderSynchronousProxy {
109    fn from(value: fidl::Channel) -> Self {
110        Self::new(value)
111    }
112}
113
114#[cfg(target_os = "fuchsia")]
115impl fidl::endpoints::FromClient for AlphaFactoryStoreProviderSynchronousProxy {
116    type Protocol = AlphaFactoryStoreProviderMarker;
117
118    fn from_client(value: fidl::endpoints::ClientEnd<AlphaFactoryStoreProviderMarker>) -> Self {
119        Self::new(value.into_channel())
120    }
121}
122
123#[derive(Debug, Clone)]
124pub struct AlphaFactoryStoreProviderProxy {
125    client: fidl::client::Client<fidl::encoding::DefaultFuchsiaResourceDialect>,
126}
127
128impl fidl::endpoints::Proxy for AlphaFactoryStoreProviderProxy {
129    type Protocol = AlphaFactoryStoreProviderMarker;
130
131    fn from_channel(inner: ::fidl::AsyncChannel) -> Self {
132        Self::new(inner)
133    }
134
135    fn into_channel(self) -> Result<::fidl::AsyncChannel, Self> {
136        self.client.into_channel().map_err(|client| Self { client })
137    }
138
139    fn as_channel(&self) -> &::fidl::AsyncChannel {
140        self.client.as_channel()
141    }
142}
143
144impl AlphaFactoryStoreProviderProxy {
145    /// Create a new Proxy for fuchsia.factory/AlphaFactoryStoreProvider.
146    pub fn new(channel: ::fidl::AsyncChannel) -> Self {
147        let protocol_name =
148            <AlphaFactoryStoreProviderMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
149        Self { client: fidl::client::Client::new(channel, protocol_name) }
150    }
151
152    /// Get a Stream of events from the remote end of the protocol.
153    ///
154    /// # Panics
155    ///
156    /// Panics if the event stream was already taken.
157    pub fn take_event_stream(&self) -> AlphaFactoryStoreProviderEventStream {
158        AlphaFactoryStoreProviderEventStream { event_receiver: self.client.take_event_receiver() }
159    }
160
161    pub fn r#get_factory_store(
162        &self,
163        mut dir: fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>,
164    ) -> Result<(), fidl::Error> {
165        AlphaFactoryStoreProviderProxyInterface::r#get_factory_store(self, dir)
166    }
167}
168
169impl AlphaFactoryStoreProviderProxyInterface for AlphaFactoryStoreProviderProxy {
170    fn r#get_factory_store(
171        &self,
172        mut dir: fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>,
173    ) -> Result<(), fidl::Error> {
174        self.client.send::<FactoryStoreProviderGetFactoryStoreRequest>(
175            (dir,),
176            0x21fa8e8bc0e1209e,
177            fidl::encoding::DynamicFlags::empty(),
178        )
179    }
180}
181
182pub struct AlphaFactoryStoreProviderEventStream {
183    event_receiver: fidl::client::EventReceiver<fidl::encoding::DefaultFuchsiaResourceDialect>,
184}
185
186impl std::marker::Unpin for AlphaFactoryStoreProviderEventStream {}
187
188impl futures::stream::FusedStream for AlphaFactoryStoreProviderEventStream {
189    fn is_terminated(&self) -> bool {
190        self.event_receiver.is_terminated()
191    }
192}
193
194impl futures::Stream for AlphaFactoryStoreProviderEventStream {
195    type Item = Result<AlphaFactoryStoreProviderEvent, fidl::Error>;
196
197    fn poll_next(
198        mut self: std::pin::Pin<&mut Self>,
199        cx: &mut std::task::Context<'_>,
200    ) -> std::task::Poll<Option<Self::Item>> {
201        match futures::ready!(futures::stream::StreamExt::poll_next_unpin(
202            &mut self.event_receiver,
203            cx
204        )?) {
205            Some(buf) => std::task::Poll::Ready(Some(AlphaFactoryStoreProviderEvent::decode(buf))),
206            None => std::task::Poll::Ready(None),
207        }
208    }
209}
210
211#[derive(Debug)]
212pub enum AlphaFactoryStoreProviderEvent {}
213
214impl AlphaFactoryStoreProviderEvent {
215    /// Decodes a message buffer as a [`AlphaFactoryStoreProviderEvent`].
216    fn decode(
217        mut buf: <fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc,
218    ) -> Result<AlphaFactoryStoreProviderEvent, fidl::Error> {
219        let (bytes, _handles) = buf.split_mut();
220        let (tx_header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
221        debug_assert_eq!(tx_header.tx_id, 0);
222        match tx_header.ordinal {
223            _ => Err(fidl::Error::UnknownOrdinal {
224                ordinal: tx_header.ordinal,
225                protocol_name:
226                    <AlphaFactoryStoreProviderMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
227            }),
228        }
229    }
230}
231
232/// A Stream of incoming requests for fuchsia.factory/AlphaFactoryStoreProvider.
233pub struct AlphaFactoryStoreProviderRequestStream {
234    inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
235    is_terminated: bool,
236}
237
238impl std::marker::Unpin for AlphaFactoryStoreProviderRequestStream {}
239
240impl futures::stream::FusedStream for AlphaFactoryStoreProviderRequestStream {
241    fn is_terminated(&self) -> bool {
242        self.is_terminated
243    }
244}
245
246impl fidl::endpoints::RequestStream for AlphaFactoryStoreProviderRequestStream {
247    type Protocol = AlphaFactoryStoreProviderMarker;
248    type ControlHandle = AlphaFactoryStoreProviderControlHandle;
249
250    fn from_channel(channel: ::fidl::AsyncChannel) -> Self {
251        Self { inner: std::sync::Arc::new(fidl::ServeInner::new(channel)), is_terminated: false }
252    }
253
254    fn control_handle(&self) -> Self::ControlHandle {
255        AlphaFactoryStoreProviderControlHandle { inner: self.inner.clone() }
256    }
257
258    fn into_inner(
259        self,
260    ) -> (::std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>, bool)
261    {
262        (self.inner, self.is_terminated)
263    }
264
265    fn from_inner(
266        inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
267        is_terminated: bool,
268    ) -> Self {
269        Self { inner, is_terminated }
270    }
271}
272
273impl futures::Stream for AlphaFactoryStoreProviderRequestStream {
274    type Item = Result<AlphaFactoryStoreProviderRequest, fidl::Error>;
275
276    fn poll_next(
277        mut self: std::pin::Pin<&mut Self>,
278        cx: &mut std::task::Context<'_>,
279    ) -> std::task::Poll<Option<Self::Item>> {
280        let this = &mut *self;
281        if this.inner.check_shutdown(cx) {
282            this.is_terminated = true;
283            return std::task::Poll::Ready(None);
284        }
285        if this.is_terminated {
286            panic!("polled AlphaFactoryStoreProviderRequestStream after completion");
287        }
288        fidl::encoding::with_tls_decode_buf::<_, fidl::encoding::DefaultFuchsiaResourceDialect>(
289            |bytes, handles| {
290                match this.inner.channel().read_etc(cx, bytes, handles) {
291                    std::task::Poll::Ready(Ok(())) => {}
292                    std::task::Poll::Pending => return std::task::Poll::Pending,
293                    std::task::Poll::Ready(Err(zx_status::Status::PEER_CLOSED)) => {
294                        this.is_terminated = true;
295                        return std::task::Poll::Ready(None);
296                    }
297                    std::task::Poll::Ready(Err(e)) => {
298                        return std::task::Poll::Ready(Some(Err(fidl::Error::ServerRequestRead(
299                            e.into(),
300                        ))))
301                    }
302                }
303
304                // A message has been received from the channel
305                let (header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
306
307                std::task::Poll::Ready(Some(match header.ordinal {
308                0x21fa8e8bc0e1209e => {
309                    header.validate_request_tx_id(fidl::MethodType::OneWay)?;
310                    let mut req = fidl::new_empty!(FactoryStoreProviderGetFactoryStoreRequest, fidl::encoding::DefaultFuchsiaResourceDialect);
311                    fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<FactoryStoreProviderGetFactoryStoreRequest>(&header, _body_bytes, handles, &mut req)?;
312                    let control_handle = AlphaFactoryStoreProviderControlHandle {
313                        inner: this.inner.clone(),
314                    };
315                    Ok(AlphaFactoryStoreProviderRequest::GetFactoryStore {dir: req.dir,
316
317                        control_handle,
318                    })
319                }
320                _ => Err(fidl::Error::UnknownOrdinal {
321                    ordinal: header.ordinal,
322                    protocol_name: <AlphaFactoryStoreProviderMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
323                }),
324            }))
325            },
326        )
327    }
328}
329
330#[derive(Debug)]
331pub enum AlphaFactoryStoreProviderRequest {
332    GetFactoryStore {
333        dir: fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>,
334        control_handle: AlphaFactoryStoreProviderControlHandle,
335    },
336}
337
338impl AlphaFactoryStoreProviderRequest {
339    #[allow(irrefutable_let_patterns)]
340    pub fn into_get_factory_store(
341        self,
342    ) -> Option<(
343        fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>,
344        AlphaFactoryStoreProviderControlHandle,
345    )> {
346        if let AlphaFactoryStoreProviderRequest::GetFactoryStore { dir, control_handle } = self {
347            Some((dir, control_handle))
348        } else {
349            None
350        }
351    }
352
353    /// Name of the method defined in FIDL
354    pub fn method_name(&self) -> &'static str {
355        match *self {
356            AlphaFactoryStoreProviderRequest::GetFactoryStore { .. } => "get_factory_store",
357        }
358    }
359}
360
361#[derive(Debug, Clone)]
362pub struct AlphaFactoryStoreProviderControlHandle {
363    inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
364}
365
366impl fidl::endpoints::ControlHandle for AlphaFactoryStoreProviderControlHandle {
367    fn shutdown(&self) {
368        self.inner.shutdown()
369    }
370    fn shutdown_with_epitaph(&self, status: zx_status::Status) {
371        self.inner.shutdown_with_epitaph(status)
372    }
373
374    fn is_closed(&self) -> bool {
375        self.inner.channel().is_closed()
376    }
377    fn on_closed(&self) -> fidl::OnSignalsRef<'_> {
378        self.inner.channel().on_closed()
379    }
380
381    #[cfg(target_os = "fuchsia")]
382    fn signal_peer(
383        &self,
384        clear_mask: zx::Signals,
385        set_mask: zx::Signals,
386    ) -> Result<(), zx_status::Status> {
387        use fidl::Peered;
388        self.inner.channel().signal_peer(clear_mask, set_mask)
389    }
390}
391
392impl AlphaFactoryStoreProviderControlHandle {}
393
394#[derive(Debug, Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash)]
395pub struct CastCredentialsFactoryStoreProviderMarker;
396
397impl fidl::endpoints::ProtocolMarker for CastCredentialsFactoryStoreProviderMarker {
398    type Proxy = CastCredentialsFactoryStoreProviderProxy;
399    type RequestStream = CastCredentialsFactoryStoreProviderRequestStream;
400    #[cfg(target_os = "fuchsia")]
401    type SynchronousProxy = CastCredentialsFactoryStoreProviderSynchronousProxy;
402
403    const DEBUG_NAME: &'static str = "fuchsia.factory.CastCredentialsFactoryStoreProvider";
404}
405impl fidl::endpoints::DiscoverableProtocolMarker for CastCredentialsFactoryStoreProviderMarker {}
406
407pub trait CastCredentialsFactoryStoreProviderProxyInterface: Send + Sync {
408    fn r#get_factory_store(
409        &self,
410        dir: fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>,
411    ) -> Result<(), fidl::Error>;
412}
413#[derive(Debug)]
414#[cfg(target_os = "fuchsia")]
415pub struct CastCredentialsFactoryStoreProviderSynchronousProxy {
416    client: fidl::client::sync::Client,
417}
418
419#[cfg(target_os = "fuchsia")]
420impl fidl::endpoints::SynchronousProxy for CastCredentialsFactoryStoreProviderSynchronousProxy {
421    type Proxy = CastCredentialsFactoryStoreProviderProxy;
422    type Protocol = CastCredentialsFactoryStoreProviderMarker;
423
424    fn from_channel(inner: fidl::Channel) -> Self {
425        Self::new(inner)
426    }
427
428    fn into_channel(self) -> fidl::Channel {
429        self.client.into_channel()
430    }
431
432    fn as_channel(&self) -> &fidl::Channel {
433        self.client.as_channel()
434    }
435}
436
437#[cfg(target_os = "fuchsia")]
438impl CastCredentialsFactoryStoreProviderSynchronousProxy {
439    pub fn new(channel: fidl::Channel) -> Self {
440        let protocol_name = <CastCredentialsFactoryStoreProviderMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
441        Self { client: fidl::client::sync::Client::new(channel, protocol_name) }
442    }
443
444    pub fn into_channel(self) -> fidl::Channel {
445        self.client.into_channel()
446    }
447
448    /// Waits until an event arrives and returns it. It is safe for other
449    /// threads to make concurrent requests while waiting for an event.
450    pub fn wait_for_event(
451        &self,
452        deadline: zx::MonotonicInstant,
453    ) -> Result<CastCredentialsFactoryStoreProviderEvent, fidl::Error> {
454        CastCredentialsFactoryStoreProviderEvent::decode(self.client.wait_for_event(deadline)?)
455    }
456
457    pub fn r#get_factory_store(
458        &self,
459        mut dir: fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>,
460    ) -> Result<(), fidl::Error> {
461        self.client.send::<FactoryStoreProviderGetFactoryStoreRequest>(
462            (dir,),
463            0x21fa8e8bc0e1209e,
464            fidl::encoding::DynamicFlags::empty(),
465        )
466    }
467}
468
469#[cfg(target_os = "fuchsia")]
470impl From<CastCredentialsFactoryStoreProviderSynchronousProxy> for zx::Handle {
471    fn from(value: CastCredentialsFactoryStoreProviderSynchronousProxy) -> Self {
472        value.into_channel().into()
473    }
474}
475
476#[cfg(target_os = "fuchsia")]
477impl From<fidl::Channel> for CastCredentialsFactoryStoreProviderSynchronousProxy {
478    fn from(value: fidl::Channel) -> Self {
479        Self::new(value)
480    }
481}
482
483#[cfg(target_os = "fuchsia")]
484impl fidl::endpoints::FromClient for CastCredentialsFactoryStoreProviderSynchronousProxy {
485    type Protocol = CastCredentialsFactoryStoreProviderMarker;
486
487    fn from_client(
488        value: fidl::endpoints::ClientEnd<CastCredentialsFactoryStoreProviderMarker>,
489    ) -> Self {
490        Self::new(value.into_channel())
491    }
492}
493
494#[derive(Debug, Clone)]
495pub struct CastCredentialsFactoryStoreProviderProxy {
496    client: fidl::client::Client<fidl::encoding::DefaultFuchsiaResourceDialect>,
497}
498
499impl fidl::endpoints::Proxy for CastCredentialsFactoryStoreProviderProxy {
500    type Protocol = CastCredentialsFactoryStoreProviderMarker;
501
502    fn from_channel(inner: ::fidl::AsyncChannel) -> Self {
503        Self::new(inner)
504    }
505
506    fn into_channel(self) -> Result<::fidl::AsyncChannel, Self> {
507        self.client.into_channel().map_err(|client| Self { client })
508    }
509
510    fn as_channel(&self) -> &::fidl::AsyncChannel {
511        self.client.as_channel()
512    }
513}
514
515impl CastCredentialsFactoryStoreProviderProxy {
516    /// Create a new Proxy for fuchsia.factory/CastCredentialsFactoryStoreProvider.
517    pub fn new(channel: ::fidl::AsyncChannel) -> Self {
518        let protocol_name = <CastCredentialsFactoryStoreProviderMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
519        Self { client: fidl::client::Client::new(channel, protocol_name) }
520    }
521
522    /// Get a Stream of events from the remote end of the protocol.
523    ///
524    /// # Panics
525    ///
526    /// Panics if the event stream was already taken.
527    pub fn take_event_stream(&self) -> CastCredentialsFactoryStoreProviderEventStream {
528        CastCredentialsFactoryStoreProviderEventStream {
529            event_receiver: self.client.take_event_receiver(),
530        }
531    }
532
533    pub fn r#get_factory_store(
534        &self,
535        mut dir: fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>,
536    ) -> Result<(), fidl::Error> {
537        CastCredentialsFactoryStoreProviderProxyInterface::r#get_factory_store(self, dir)
538    }
539}
540
541impl CastCredentialsFactoryStoreProviderProxyInterface
542    for CastCredentialsFactoryStoreProviderProxy
543{
544    fn r#get_factory_store(
545        &self,
546        mut dir: fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>,
547    ) -> Result<(), fidl::Error> {
548        self.client.send::<FactoryStoreProviderGetFactoryStoreRequest>(
549            (dir,),
550            0x21fa8e8bc0e1209e,
551            fidl::encoding::DynamicFlags::empty(),
552        )
553    }
554}
555
556pub struct CastCredentialsFactoryStoreProviderEventStream {
557    event_receiver: fidl::client::EventReceiver<fidl::encoding::DefaultFuchsiaResourceDialect>,
558}
559
560impl std::marker::Unpin for CastCredentialsFactoryStoreProviderEventStream {}
561
562impl futures::stream::FusedStream for CastCredentialsFactoryStoreProviderEventStream {
563    fn is_terminated(&self) -> bool {
564        self.event_receiver.is_terminated()
565    }
566}
567
568impl futures::Stream for CastCredentialsFactoryStoreProviderEventStream {
569    type Item = Result<CastCredentialsFactoryStoreProviderEvent, fidl::Error>;
570
571    fn poll_next(
572        mut self: std::pin::Pin<&mut Self>,
573        cx: &mut std::task::Context<'_>,
574    ) -> std::task::Poll<Option<Self::Item>> {
575        match futures::ready!(futures::stream::StreamExt::poll_next_unpin(
576            &mut self.event_receiver,
577            cx
578        )?) {
579            Some(buf) => {
580                std::task::Poll::Ready(Some(CastCredentialsFactoryStoreProviderEvent::decode(buf)))
581            }
582            None => std::task::Poll::Ready(None),
583        }
584    }
585}
586
587#[derive(Debug)]
588pub enum CastCredentialsFactoryStoreProviderEvent {}
589
590impl CastCredentialsFactoryStoreProviderEvent {
591    /// Decodes a message buffer as a [`CastCredentialsFactoryStoreProviderEvent`].
592    fn decode(
593        mut buf: <fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc,
594    ) -> Result<CastCredentialsFactoryStoreProviderEvent, fidl::Error> {
595        let (bytes, _handles) = buf.split_mut();
596        let (tx_header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
597        debug_assert_eq!(tx_header.tx_id, 0);
598        match tx_header.ordinal {
599            _ => Err(fidl::Error::UnknownOrdinal {
600                ordinal: tx_header.ordinal,
601                protocol_name: <CastCredentialsFactoryStoreProviderMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
602            })
603        }
604    }
605}
606
607/// A Stream of incoming requests for fuchsia.factory/CastCredentialsFactoryStoreProvider.
608pub struct CastCredentialsFactoryStoreProviderRequestStream {
609    inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
610    is_terminated: bool,
611}
612
613impl std::marker::Unpin for CastCredentialsFactoryStoreProviderRequestStream {}
614
615impl futures::stream::FusedStream for CastCredentialsFactoryStoreProviderRequestStream {
616    fn is_terminated(&self) -> bool {
617        self.is_terminated
618    }
619}
620
621impl fidl::endpoints::RequestStream for CastCredentialsFactoryStoreProviderRequestStream {
622    type Protocol = CastCredentialsFactoryStoreProviderMarker;
623    type ControlHandle = CastCredentialsFactoryStoreProviderControlHandle;
624
625    fn from_channel(channel: ::fidl::AsyncChannel) -> Self {
626        Self { inner: std::sync::Arc::new(fidl::ServeInner::new(channel)), is_terminated: false }
627    }
628
629    fn control_handle(&self) -> Self::ControlHandle {
630        CastCredentialsFactoryStoreProviderControlHandle { inner: self.inner.clone() }
631    }
632
633    fn into_inner(
634        self,
635    ) -> (::std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>, bool)
636    {
637        (self.inner, self.is_terminated)
638    }
639
640    fn from_inner(
641        inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
642        is_terminated: bool,
643    ) -> Self {
644        Self { inner, is_terminated }
645    }
646}
647
648impl futures::Stream for CastCredentialsFactoryStoreProviderRequestStream {
649    type Item = Result<CastCredentialsFactoryStoreProviderRequest, fidl::Error>;
650
651    fn poll_next(
652        mut self: std::pin::Pin<&mut Self>,
653        cx: &mut std::task::Context<'_>,
654    ) -> std::task::Poll<Option<Self::Item>> {
655        let this = &mut *self;
656        if this.inner.check_shutdown(cx) {
657            this.is_terminated = true;
658            return std::task::Poll::Ready(None);
659        }
660        if this.is_terminated {
661            panic!("polled CastCredentialsFactoryStoreProviderRequestStream after completion");
662        }
663        fidl::encoding::with_tls_decode_buf::<_, fidl::encoding::DefaultFuchsiaResourceDialect>(
664            |bytes, handles| {
665                match this.inner.channel().read_etc(cx, bytes, handles) {
666                    std::task::Poll::Ready(Ok(())) => {}
667                    std::task::Poll::Pending => return std::task::Poll::Pending,
668                    std::task::Poll::Ready(Err(zx_status::Status::PEER_CLOSED)) => {
669                        this.is_terminated = true;
670                        return std::task::Poll::Ready(None);
671                    }
672                    std::task::Poll::Ready(Err(e)) => {
673                        return std::task::Poll::Ready(Some(Err(fidl::Error::ServerRequestRead(
674                            e.into(),
675                        ))))
676                    }
677                }
678
679                // A message has been received from the channel
680                let (header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
681
682                std::task::Poll::Ready(Some(match header.ordinal {
683                0x21fa8e8bc0e1209e => {
684                    header.validate_request_tx_id(fidl::MethodType::OneWay)?;
685                    let mut req = fidl::new_empty!(FactoryStoreProviderGetFactoryStoreRequest, fidl::encoding::DefaultFuchsiaResourceDialect);
686                    fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<FactoryStoreProviderGetFactoryStoreRequest>(&header, _body_bytes, handles, &mut req)?;
687                    let control_handle = CastCredentialsFactoryStoreProviderControlHandle {
688                        inner: this.inner.clone(),
689                    };
690                    Ok(CastCredentialsFactoryStoreProviderRequest::GetFactoryStore {dir: req.dir,
691
692                        control_handle,
693                    })
694                }
695                _ => Err(fidl::Error::UnknownOrdinal {
696                    ordinal: header.ordinal,
697                    protocol_name: <CastCredentialsFactoryStoreProviderMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
698                }),
699            }))
700            },
701        )
702    }
703}
704
705/// This protocol exposes a method to connect to a directory containing
706/// Cast-specific factory data: public certificates and keys for
707/// authentication with Cast servers.
708#[derive(Debug)]
709pub enum CastCredentialsFactoryStoreProviderRequest {
710    GetFactoryStore {
711        dir: fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>,
712        control_handle: CastCredentialsFactoryStoreProviderControlHandle,
713    },
714}
715
716impl CastCredentialsFactoryStoreProviderRequest {
717    #[allow(irrefutable_let_patterns)]
718    pub fn into_get_factory_store(
719        self,
720    ) -> Option<(
721        fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>,
722        CastCredentialsFactoryStoreProviderControlHandle,
723    )> {
724        if let CastCredentialsFactoryStoreProviderRequest::GetFactoryStore { dir, control_handle } =
725            self
726        {
727            Some((dir, control_handle))
728        } else {
729            None
730        }
731    }
732
733    /// Name of the method defined in FIDL
734    pub fn method_name(&self) -> &'static str {
735        match *self {
736            CastCredentialsFactoryStoreProviderRequest::GetFactoryStore { .. } => {
737                "get_factory_store"
738            }
739        }
740    }
741}
742
743#[derive(Debug, Clone)]
744pub struct CastCredentialsFactoryStoreProviderControlHandle {
745    inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
746}
747
748impl fidl::endpoints::ControlHandle for CastCredentialsFactoryStoreProviderControlHandle {
749    fn shutdown(&self) {
750        self.inner.shutdown()
751    }
752    fn shutdown_with_epitaph(&self, status: zx_status::Status) {
753        self.inner.shutdown_with_epitaph(status)
754    }
755
756    fn is_closed(&self) -> bool {
757        self.inner.channel().is_closed()
758    }
759    fn on_closed(&self) -> fidl::OnSignalsRef<'_> {
760        self.inner.channel().on_closed()
761    }
762
763    #[cfg(target_os = "fuchsia")]
764    fn signal_peer(
765        &self,
766        clear_mask: zx::Signals,
767        set_mask: zx::Signals,
768    ) -> Result<(), zx_status::Status> {
769        use fidl::Peered;
770        self.inner.channel().signal_peer(clear_mask, set_mask)
771    }
772}
773
774impl CastCredentialsFactoryStoreProviderControlHandle {}
775
776#[derive(Debug, Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash)]
777pub struct FactoryStoreProviderMarker;
778
779impl fidl::endpoints::ProtocolMarker for FactoryStoreProviderMarker {
780    type Proxy = FactoryStoreProviderProxy;
781    type RequestStream = FactoryStoreProviderRequestStream;
782    #[cfg(target_os = "fuchsia")]
783    type SynchronousProxy = FactoryStoreProviderSynchronousProxy;
784
785    const DEBUG_NAME: &'static str = "(anonymous) FactoryStoreProvider";
786}
787
788pub trait FactoryStoreProviderProxyInterface: Send + Sync {
789    fn r#get_factory_store(
790        &self,
791        dir: fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>,
792    ) -> Result<(), fidl::Error>;
793}
794#[derive(Debug)]
795#[cfg(target_os = "fuchsia")]
796pub struct FactoryStoreProviderSynchronousProxy {
797    client: fidl::client::sync::Client,
798}
799
800#[cfg(target_os = "fuchsia")]
801impl fidl::endpoints::SynchronousProxy for FactoryStoreProviderSynchronousProxy {
802    type Proxy = FactoryStoreProviderProxy;
803    type Protocol = FactoryStoreProviderMarker;
804
805    fn from_channel(inner: fidl::Channel) -> Self {
806        Self::new(inner)
807    }
808
809    fn into_channel(self) -> fidl::Channel {
810        self.client.into_channel()
811    }
812
813    fn as_channel(&self) -> &fidl::Channel {
814        self.client.as_channel()
815    }
816}
817
818#[cfg(target_os = "fuchsia")]
819impl FactoryStoreProviderSynchronousProxy {
820    pub fn new(channel: fidl::Channel) -> Self {
821        let protocol_name =
822            <FactoryStoreProviderMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
823        Self { client: fidl::client::sync::Client::new(channel, protocol_name) }
824    }
825
826    pub fn into_channel(self) -> fidl::Channel {
827        self.client.into_channel()
828    }
829
830    /// Waits until an event arrives and returns it. It is safe for other
831    /// threads to make concurrent requests while waiting for an event.
832    pub fn wait_for_event(
833        &self,
834        deadline: zx::MonotonicInstant,
835    ) -> Result<FactoryStoreProviderEvent, fidl::Error> {
836        FactoryStoreProviderEvent::decode(self.client.wait_for_event(deadline)?)
837    }
838
839    pub fn r#get_factory_store(
840        &self,
841        mut dir: fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>,
842    ) -> Result<(), fidl::Error> {
843        self.client.send::<FactoryStoreProviderGetFactoryStoreRequest>(
844            (dir,),
845            0x21fa8e8bc0e1209e,
846            fidl::encoding::DynamicFlags::empty(),
847        )
848    }
849}
850
851#[cfg(target_os = "fuchsia")]
852impl From<FactoryStoreProviderSynchronousProxy> for zx::Handle {
853    fn from(value: FactoryStoreProviderSynchronousProxy) -> Self {
854        value.into_channel().into()
855    }
856}
857
858#[cfg(target_os = "fuchsia")]
859impl From<fidl::Channel> for FactoryStoreProviderSynchronousProxy {
860    fn from(value: fidl::Channel) -> Self {
861        Self::new(value)
862    }
863}
864
865#[cfg(target_os = "fuchsia")]
866impl fidl::endpoints::FromClient for FactoryStoreProviderSynchronousProxy {
867    type Protocol = FactoryStoreProviderMarker;
868
869    fn from_client(value: fidl::endpoints::ClientEnd<FactoryStoreProviderMarker>) -> Self {
870        Self::new(value.into_channel())
871    }
872}
873
874#[derive(Debug, Clone)]
875pub struct FactoryStoreProviderProxy {
876    client: fidl::client::Client<fidl::encoding::DefaultFuchsiaResourceDialect>,
877}
878
879impl fidl::endpoints::Proxy for FactoryStoreProviderProxy {
880    type Protocol = FactoryStoreProviderMarker;
881
882    fn from_channel(inner: ::fidl::AsyncChannel) -> Self {
883        Self::new(inner)
884    }
885
886    fn into_channel(self) -> Result<::fidl::AsyncChannel, Self> {
887        self.client.into_channel().map_err(|client| Self { client })
888    }
889
890    fn as_channel(&self) -> &::fidl::AsyncChannel {
891        self.client.as_channel()
892    }
893}
894
895impl FactoryStoreProviderProxy {
896    /// Create a new Proxy for fuchsia.factory/FactoryStoreProvider.
897    pub fn new(channel: ::fidl::AsyncChannel) -> Self {
898        let protocol_name =
899            <FactoryStoreProviderMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
900        Self { client: fidl::client::Client::new(channel, protocol_name) }
901    }
902
903    /// Get a Stream of events from the remote end of the protocol.
904    ///
905    /// # Panics
906    ///
907    /// Panics if the event stream was already taken.
908    pub fn take_event_stream(&self) -> FactoryStoreProviderEventStream {
909        FactoryStoreProviderEventStream { event_receiver: self.client.take_event_receiver() }
910    }
911
912    pub fn r#get_factory_store(
913        &self,
914        mut dir: fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>,
915    ) -> Result<(), fidl::Error> {
916        FactoryStoreProviderProxyInterface::r#get_factory_store(self, dir)
917    }
918}
919
920impl FactoryStoreProviderProxyInterface for FactoryStoreProviderProxy {
921    fn r#get_factory_store(
922        &self,
923        mut dir: fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>,
924    ) -> Result<(), fidl::Error> {
925        self.client.send::<FactoryStoreProviderGetFactoryStoreRequest>(
926            (dir,),
927            0x21fa8e8bc0e1209e,
928            fidl::encoding::DynamicFlags::empty(),
929        )
930    }
931}
932
933pub struct FactoryStoreProviderEventStream {
934    event_receiver: fidl::client::EventReceiver<fidl::encoding::DefaultFuchsiaResourceDialect>,
935}
936
937impl std::marker::Unpin for FactoryStoreProviderEventStream {}
938
939impl futures::stream::FusedStream for FactoryStoreProviderEventStream {
940    fn is_terminated(&self) -> bool {
941        self.event_receiver.is_terminated()
942    }
943}
944
945impl futures::Stream for FactoryStoreProviderEventStream {
946    type Item = Result<FactoryStoreProviderEvent, fidl::Error>;
947
948    fn poll_next(
949        mut self: std::pin::Pin<&mut Self>,
950        cx: &mut std::task::Context<'_>,
951    ) -> std::task::Poll<Option<Self::Item>> {
952        match futures::ready!(futures::stream::StreamExt::poll_next_unpin(
953            &mut self.event_receiver,
954            cx
955        )?) {
956            Some(buf) => std::task::Poll::Ready(Some(FactoryStoreProviderEvent::decode(buf))),
957            None => std::task::Poll::Ready(None),
958        }
959    }
960}
961
962#[derive(Debug)]
963pub enum FactoryStoreProviderEvent {}
964
965impl FactoryStoreProviderEvent {
966    /// Decodes a message buffer as a [`FactoryStoreProviderEvent`].
967    fn decode(
968        mut buf: <fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc,
969    ) -> Result<FactoryStoreProviderEvent, fidl::Error> {
970        let (bytes, _handles) = buf.split_mut();
971        let (tx_header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
972        debug_assert_eq!(tx_header.tx_id, 0);
973        match tx_header.ordinal {
974            _ => Err(fidl::Error::UnknownOrdinal {
975                ordinal: tx_header.ordinal,
976                protocol_name:
977                    <FactoryStoreProviderMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
978            }),
979        }
980    }
981}
982
983/// A Stream of incoming requests for fuchsia.factory/FactoryStoreProvider.
984pub struct FactoryStoreProviderRequestStream {
985    inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
986    is_terminated: bool,
987}
988
989impl std::marker::Unpin for FactoryStoreProviderRequestStream {}
990
991impl futures::stream::FusedStream for FactoryStoreProviderRequestStream {
992    fn is_terminated(&self) -> bool {
993        self.is_terminated
994    }
995}
996
997impl fidl::endpoints::RequestStream for FactoryStoreProviderRequestStream {
998    type Protocol = FactoryStoreProviderMarker;
999    type ControlHandle = FactoryStoreProviderControlHandle;
1000
1001    fn from_channel(channel: ::fidl::AsyncChannel) -> Self {
1002        Self { inner: std::sync::Arc::new(fidl::ServeInner::new(channel)), is_terminated: false }
1003    }
1004
1005    fn control_handle(&self) -> Self::ControlHandle {
1006        FactoryStoreProviderControlHandle { inner: self.inner.clone() }
1007    }
1008
1009    fn into_inner(
1010        self,
1011    ) -> (::std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>, bool)
1012    {
1013        (self.inner, self.is_terminated)
1014    }
1015
1016    fn from_inner(
1017        inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
1018        is_terminated: bool,
1019    ) -> Self {
1020        Self { inner, is_terminated }
1021    }
1022}
1023
1024impl futures::Stream for FactoryStoreProviderRequestStream {
1025    type Item = Result<FactoryStoreProviderRequest, fidl::Error>;
1026
1027    fn poll_next(
1028        mut self: std::pin::Pin<&mut Self>,
1029        cx: &mut std::task::Context<'_>,
1030    ) -> std::task::Poll<Option<Self::Item>> {
1031        let this = &mut *self;
1032        if this.inner.check_shutdown(cx) {
1033            this.is_terminated = true;
1034            return std::task::Poll::Ready(None);
1035        }
1036        if this.is_terminated {
1037            panic!("polled FactoryStoreProviderRequestStream after completion");
1038        }
1039        fidl::encoding::with_tls_decode_buf::<_, fidl::encoding::DefaultFuchsiaResourceDialect>(
1040            |bytes, handles| {
1041                match this.inner.channel().read_etc(cx, bytes, handles) {
1042                    std::task::Poll::Ready(Ok(())) => {}
1043                    std::task::Poll::Pending => return std::task::Poll::Pending,
1044                    std::task::Poll::Ready(Err(zx_status::Status::PEER_CLOSED)) => {
1045                        this.is_terminated = true;
1046                        return std::task::Poll::Ready(None);
1047                    }
1048                    std::task::Poll::Ready(Err(e)) => {
1049                        return std::task::Poll::Ready(Some(Err(fidl::Error::ServerRequestRead(
1050                            e.into(),
1051                        ))))
1052                    }
1053                }
1054
1055                // A message has been received from the channel
1056                let (header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
1057
1058                std::task::Poll::Ready(Some(match header.ordinal {
1059                0x21fa8e8bc0e1209e => {
1060                    header.validate_request_tx_id(fidl::MethodType::OneWay)?;
1061                    let mut req = fidl::new_empty!(FactoryStoreProviderGetFactoryStoreRequest, fidl::encoding::DefaultFuchsiaResourceDialect);
1062                    fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<FactoryStoreProviderGetFactoryStoreRequest>(&header, _body_bytes, handles, &mut req)?;
1063                    let control_handle = FactoryStoreProviderControlHandle {
1064                        inner: this.inner.clone(),
1065                    };
1066                    Ok(FactoryStoreProviderRequest::GetFactoryStore {dir: req.dir,
1067
1068                        control_handle,
1069                    })
1070                }
1071                _ => Err(fidl::Error::UnknownOrdinal {
1072                    ordinal: header.ordinal,
1073                    protocol_name: <FactoryStoreProviderMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
1074                }),
1075            }))
1076            },
1077        )
1078    }
1079}
1080
1081/// This protocol is a base protocol for all providers of factory store
1082/// directories. It exposes a single method to allow clients to establish a
1083/// connection to a directory containing the relevant factory data. All files
1084/// surfaced by a component that implements FactoryStoreProvider (or any
1085/// protocol that depends on it) are expected to be validated for consistency
1086/// before being exposed to clients.
1087#[derive(Debug)]
1088pub enum FactoryStoreProviderRequest {
1089    GetFactoryStore {
1090        dir: fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>,
1091        control_handle: FactoryStoreProviderControlHandle,
1092    },
1093}
1094
1095impl FactoryStoreProviderRequest {
1096    #[allow(irrefutable_let_patterns)]
1097    pub fn into_get_factory_store(
1098        self,
1099    ) -> Option<(
1100        fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>,
1101        FactoryStoreProviderControlHandle,
1102    )> {
1103        if let FactoryStoreProviderRequest::GetFactoryStore { dir, control_handle } = self {
1104            Some((dir, control_handle))
1105        } else {
1106            None
1107        }
1108    }
1109
1110    /// Name of the method defined in FIDL
1111    pub fn method_name(&self) -> &'static str {
1112        match *self {
1113            FactoryStoreProviderRequest::GetFactoryStore { .. } => "get_factory_store",
1114        }
1115    }
1116}
1117
1118#[derive(Debug, Clone)]
1119pub struct FactoryStoreProviderControlHandle {
1120    inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
1121}
1122
1123impl fidl::endpoints::ControlHandle for FactoryStoreProviderControlHandle {
1124    fn shutdown(&self) {
1125        self.inner.shutdown()
1126    }
1127    fn shutdown_with_epitaph(&self, status: zx_status::Status) {
1128        self.inner.shutdown_with_epitaph(status)
1129    }
1130
1131    fn is_closed(&self) -> bool {
1132        self.inner.channel().is_closed()
1133    }
1134    fn on_closed(&self) -> fidl::OnSignalsRef<'_> {
1135        self.inner.channel().on_closed()
1136    }
1137
1138    #[cfg(target_os = "fuchsia")]
1139    fn signal_peer(
1140        &self,
1141        clear_mask: zx::Signals,
1142        set_mask: zx::Signals,
1143    ) -> Result<(), zx_status::Status> {
1144        use fidl::Peered;
1145        self.inner.channel().signal_peer(clear_mask, set_mask)
1146    }
1147}
1148
1149impl FactoryStoreProviderControlHandle {}
1150
1151#[derive(Debug, Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash)]
1152pub struct MiscFactoryStoreProviderMarker;
1153
1154impl fidl::endpoints::ProtocolMarker for MiscFactoryStoreProviderMarker {
1155    type Proxy = MiscFactoryStoreProviderProxy;
1156    type RequestStream = MiscFactoryStoreProviderRequestStream;
1157    #[cfg(target_os = "fuchsia")]
1158    type SynchronousProxy = MiscFactoryStoreProviderSynchronousProxy;
1159
1160    const DEBUG_NAME: &'static str = "fuchsia.factory.MiscFactoryStoreProvider";
1161}
1162impl fidl::endpoints::DiscoverableProtocolMarker for MiscFactoryStoreProviderMarker {}
1163
1164pub trait MiscFactoryStoreProviderProxyInterface: Send + Sync {
1165    fn r#get_factory_store(
1166        &self,
1167        dir: fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>,
1168    ) -> Result<(), fidl::Error>;
1169}
1170#[derive(Debug)]
1171#[cfg(target_os = "fuchsia")]
1172pub struct MiscFactoryStoreProviderSynchronousProxy {
1173    client: fidl::client::sync::Client,
1174}
1175
1176#[cfg(target_os = "fuchsia")]
1177impl fidl::endpoints::SynchronousProxy for MiscFactoryStoreProviderSynchronousProxy {
1178    type Proxy = MiscFactoryStoreProviderProxy;
1179    type Protocol = MiscFactoryStoreProviderMarker;
1180
1181    fn from_channel(inner: fidl::Channel) -> Self {
1182        Self::new(inner)
1183    }
1184
1185    fn into_channel(self) -> fidl::Channel {
1186        self.client.into_channel()
1187    }
1188
1189    fn as_channel(&self) -> &fidl::Channel {
1190        self.client.as_channel()
1191    }
1192}
1193
1194#[cfg(target_os = "fuchsia")]
1195impl MiscFactoryStoreProviderSynchronousProxy {
1196    pub fn new(channel: fidl::Channel) -> Self {
1197        let protocol_name =
1198            <MiscFactoryStoreProviderMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
1199        Self { client: fidl::client::sync::Client::new(channel, protocol_name) }
1200    }
1201
1202    pub fn into_channel(self) -> fidl::Channel {
1203        self.client.into_channel()
1204    }
1205
1206    /// Waits until an event arrives and returns it. It is safe for other
1207    /// threads to make concurrent requests while waiting for an event.
1208    pub fn wait_for_event(
1209        &self,
1210        deadline: zx::MonotonicInstant,
1211    ) -> Result<MiscFactoryStoreProviderEvent, fidl::Error> {
1212        MiscFactoryStoreProviderEvent::decode(self.client.wait_for_event(deadline)?)
1213    }
1214
1215    pub fn r#get_factory_store(
1216        &self,
1217        mut dir: fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>,
1218    ) -> Result<(), fidl::Error> {
1219        self.client.send::<FactoryStoreProviderGetFactoryStoreRequest>(
1220            (dir,),
1221            0x21fa8e8bc0e1209e,
1222            fidl::encoding::DynamicFlags::empty(),
1223        )
1224    }
1225}
1226
1227#[cfg(target_os = "fuchsia")]
1228impl From<MiscFactoryStoreProviderSynchronousProxy> for zx::Handle {
1229    fn from(value: MiscFactoryStoreProviderSynchronousProxy) -> Self {
1230        value.into_channel().into()
1231    }
1232}
1233
1234#[cfg(target_os = "fuchsia")]
1235impl From<fidl::Channel> for MiscFactoryStoreProviderSynchronousProxy {
1236    fn from(value: fidl::Channel) -> Self {
1237        Self::new(value)
1238    }
1239}
1240
1241#[cfg(target_os = "fuchsia")]
1242impl fidl::endpoints::FromClient for MiscFactoryStoreProviderSynchronousProxy {
1243    type Protocol = MiscFactoryStoreProviderMarker;
1244
1245    fn from_client(value: fidl::endpoints::ClientEnd<MiscFactoryStoreProviderMarker>) -> Self {
1246        Self::new(value.into_channel())
1247    }
1248}
1249
1250#[derive(Debug, Clone)]
1251pub struct MiscFactoryStoreProviderProxy {
1252    client: fidl::client::Client<fidl::encoding::DefaultFuchsiaResourceDialect>,
1253}
1254
1255impl fidl::endpoints::Proxy for MiscFactoryStoreProviderProxy {
1256    type Protocol = MiscFactoryStoreProviderMarker;
1257
1258    fn from_channel(inner: ::fidl::AsyncChannel) -> Self {
1259        Self::new(inner)
1260    }
1261
1262    fn into_channel(self) -> Result<::fidl::AsyncChannel, Self> {
1263        self.client.into_channel().map_err(|client| Self { client })
1264    }
1265
1266    fn as_channel(&self) -> &::fidl::AsyncChannel {
1267        self.client.as_channel()
1268    }
1269}
1270
1271impl MiscFactoryStoreProviderProxy {
1272    /// Create a new Proxy for fuchsia.factory/MiscFactoryStoreProvider.
1273    pub fn new(channel: ::fidl::AsyncChannel) -> Self {
1274        let protocol_name =
1275            <MiscFactoryStoreProviderMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
1276        Self { client: fidl::client::Client::new(channel, protocol_name) }
1277    }
1278
1279    /// Get a Stream of events from the remote end of the protocol.
1280    ///
1281    /// # Panics
1282    ///
1283    /// Panics if the event stream was already taken.
1284    pub fn take_event_stream(&self) -> MiscFactoryStoreProviderEventStream {
1285        MiscFactoryStoreProviderEventStream { event_receiver: self.client.take_event_receiver() }
1286    }
1287
1288    pub fn r#get_factory_store(
1289        &self,
1290        mut dir: fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>,
1291    ) -> Result<(), fidl::Error> {
1292        MiscFactoryStoreProviderProxyInterface::r#get_factory_store(self, dir)
1293    }
1294}
1295
1296impl MiscFactoryStoreProviderProxyInterface for MiscFactoryStoreProviderProxy {
1297    fn r#get_factory_store(
1298        &self,
1299        mut dir: fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>,
1300    ) -> Result<(), fidl::Error> {
1301        self.client.send::<FactoryStoreProviderGetFactoryStoreRequest>(
1302            (dir,),
1303            0x21fa8e8bc0e1209e,
1304            fidl::encoding::DynamicFlags::empty(),
1305        )
1306    }
1307}
1308
1309pub struct MiscFactoryStoreProviderEventStream {
1310    event_receiver: fidl::client::EventReceiver<fidl::encoding::DefaultFuchsiaResourceDialect>,
1311}
1312
1313impl std::marker::Unpin for MiscFactoryStoreProviderEventStream {}
1314
1315impl futures::stream::FusedStream for MiscFactoryStoreProviderEventStream {
1316    fn is_terminated(&self) -> bool {
1317        self.event_receiver.is_terminated()
1318    }
1319}
1320
1321impl futures::Stream for MiscFactoryStoreProviderEventStream {
1322    type Item = Result<MiscFactoryStoreProviderEvent, fidl::Error>;
1323
1324    fn poll_next(
1325        mut self: std::pin::Pin<&mut Self>,
1326        cx: &mut std::task::Context<'_>,
1327    ) -> std::task::Poll<Option<Self::Item>> {
1328        match futures::ready!(futures::stream::StreamExt::poll_next_unpin(
1329            &mut self.event_receiver,
1330            cx
1331        )?) {
1332            Some(buf) => std::task::Poll::Ready(Some(MiscFactoryStoreProviderEvent::decode(buf))),
1333            None => std::task::Poll::Ready(None),
1334        }
1335    }
1336}
1337
1338#[derive(Debug)]
1339pub enum MiscFactoryStoreProviderEvent {}
1340
1341impl MiscFactoryStoreProviderEvent {
1342    /// Decodes a message buffer as a [`MiscFactoryStoreProviderEvent`].
1343    fn decode(
1344        mut buf: <fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc,
1345    ) -> Result<MiscFactoryStoreProviderEvent, fidl::Error> {
1346        let (bytes, _handles) = buf.split_mut();
1347        let (tx_header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
1348        debug_assert_eq!(tx_header.tx_id, 0);
1349        match tx_header.ordinal {
1350            _ => Err(fidl::Error::UnknownOrdinal {
1351                ordinal: tx_header.ordinal,
1352                protocol_name:
1353                    <MiscFactoryStoreProviderMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
1354            }),
1355        }
1356    }
1357}
1358
1359/// A Stream of incoming requests for fuchsia.factory/MiscFactoryStoreProvider.
1360pub struct MiscFactoryStoreProviderRequestStream {
1361    inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
1362    is_terminated: bool,
1363}
1364
1365impl std::marker::Unpin for MiscFactoryStoreProviderRequestStream {}
1366
1367impl futures::stream::FusedStream for MiscFactoryStoreProviderRequestStream {
1368    fn is_terminated(&self) -> bool {
1369        self.is_terminated
1370    }
1371}
1372
1373impl fidl::endpoints::RequestStream for MiscFactoryStoreProviderRequestStream {
1374    type Protocol = MiscFactoryStoreProviderMarker;
1375    type ControlHandle = MiscFactoryStoreProviderControlHandle;
1376
1377    fn from_channel(channel: ::fidl::AsyncChannel) -> Self {
1378        Self { inner: std::sync::Arc::new(fidl::ServeInner::new(channel)), is_terminated: false }
1379    }
1380
1381    fn control_handle(&self) -> Self::ControlHandle {
1382        MiscFactoryStoreProviderControlHandle { inner: self.inner.clone() }
1383    }
1384
1385    fn into_inner(
1386        self,
1387    ) -> (::std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>, bool)
1388    {
1389        (self.inner, self.is_terminated)
1390    }
1391
1392    fn from_inner(
1393        inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
1394        is_terminated: bool,
1395    ) -> Self {
1396        Self { inner, is_terminated }
1397    }
1398}
1399
1400impl futures::Stream for MiscFactoryStoreProviderRequestStream {
1401    type Item = Result<MiscFactoryStoreProviderRequest, fidl::Error>;
1402
1403    fn poll_next(
1404        mut self: std::pin::Pin<&mut Self>,
1405        cx: &mut std::task::Context<'_>,
1406    ) -> std::task::Poll<Option<Self::Item>> {
1407        let this = &mut *self;
1408        if this.inner.check_shutdown(cx) {
1409            this.is_terminated = true;
1410            return std::task::Poll::Ready(None);
1411        }
1412        if this.is_terminated {
1413            panic!("polled MiscFactoryStoreProviderRequestStream after completion");
1414        }
1415        fidl::encoding::with_tls_decode_buf::<_, fidl::encoding::DefaultFuchsiaResourceDialect>(
1416            |bytes, handles| {
1417                match this.inner.channel().read_etc(cx, bytes, handles) {
1418                    std::task::Poll::Ready(Ok(())) => {}
1419                    std::task::Poll::Pending => return std::task::Poll::Pending,
1420                    std::task::Poll::Ready(Err(zx_status::Status::PEER_CLOSED)) => {
1421                        this.is_terminated = true;
1422                        return std::task::Poll::Ready(None);
1423                    }
1424                    std::task::Poll::Ready(Err(e)) => {
1425                        return std::task::Poll::Ready(Some(Err(fidl::Error::ServerRequestRead(
1426                            e.into(),
1427                        ))))
1428                    }
1429                }
1430
1431                // A message has been received from the channel
1432                let (header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
1433
1434                std::task::Poll::Ready(Some(match header.ordinal {
1435                0x21fa8e8bc0e1209e => {
1436                    header.validate_request_tx_id(fidl::MethodType::OneWay)?;
1437                    let mut req = fidl::new_empty!(FactoryStoreProviderGetFactoryStoreRequest, fidl::encoding::DefaultFuchsiaResourceDialect);
1438                    fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<FactoryStoreProviderGetFactoryStoreRequest>(&header, _body_bytes, handles, &mut req)?;
1439                    let control_handle = MiscFactoryStoreProviderControlHandle {
1440                        inner: this.inner.clone(),
1441                    };
1442                    Ok(MiscFactoryStoreProviderRequest::GetFactoryStore {dir: req.dir,
1443
1444                        control_handle,
1445                    })
1446                }
1447                _ => Err(fidl::Error::UnknownOrdinal {
1448                    ordinal: header.ordinal,
1449                    protocol_name: <MiscFactoryStoreProviderMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
1450                }),
1451            }))
1452            },
1453        )
1454    }
1455}
1456
1457/// This protocol exposes a method to connect to a directory containing
1458/// miscellaneous factory data such as tuning/calibration files, region-specific
1459/// audio files, factory process metadata files, and more. Any raw files not
1460/// covered by other FactoryStoreProviders or methods in fuchsia.hwinfo will
1461/// appear here.
1462#[derive(Debug)]
1463pub enum MiscFactoryStoreProviderRequest {
1464    GetFactoryStore {
1465        dir: fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>,
1466        control_handle: MiscFactoryStoreProviderControlHandle,
1467    },
1468}
1469
1470impl MiscFactoryStoreProviderRequest {
1471    #[allow(irrefutable_let_patterns)]
1472    pub fn into_get_factory_store(
1473        self,
1474    ) -> Option<(
1475        fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>,
1476        MiscFactoryStoreProviderControlHandle,
1477    )> {
1478        if let MiscFactoryStoreProviderRequest::GetFactoryStore { dir, control_handle } = self {
1479            Some((dir, control_handle))
1480        } else {
1481            None
1482        }
1483    }
1484
1485    /// Name of the method defined in FIDL
1486    pub fn method_name(&self) -> &'static str {
1487        match *self {
1488            MiscFactoryStoreProviderRequest::GetFactoryStore { .. } => "get_factory_store",
1489        }
1490    }
1491}
1492
1493#[derive(Debug, Clone)]
1494pub struct MiscFactoryStoreProviderControlHandle {
1495    inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
1496}
1497
1498impl fidl::endpoints::ControlHandle for MiscFactoryStoreProviderControlHandle {
1499    fn shutdown(&self) {
1500        self.inner.shutdown()
1501    }
1502    fn shutdown_with_epitaph(&self, status: zx_status::Status) {
1503        self.inner.shutdown_with_epitaph(status)
1504    }
1505
1506    fn is_closed(&self) -> bool {
1507        self.inner.channel().is_closed()
1508    }
1509    fn on_closed(&self) -> fidl::OnSignalsRef<'_> {
1510        self.inner.channel().on_closed()
1511    }
1512
1513    #[cfg(target_os = "fuchsia")]
1514    fn signal_peer(
1515        &self,
1516        clear_mask: zx::Signals,
1517        set_mask: zx::Signals,
1518    ) -> Result<(), zx_status::Status> {
1519        use fidl::Peered;
1520        self.inner.channel().signal_peer(clear_mask, set_mask)
1521    }
1522}
1523
1524impl MiscFactoryStoreProviderControlHandle {}
1525
1526#[derive(Debug, Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash)]
1527pub struct PlayReadyFactoryStoreProviderMarker;
1528
1529impl fidl::endpoints::ProtocolMarker for PlayReadyFactoryStoreProviderMarker {
1530    type Proxy = PlayReadyFactoryStoreProviderProxy;
1531    type RequestStream = PlayReadyFactoryStoreProviderRequestStream;
1532    #[cfg(target_os = "fuchsia")]
1533    type SynchronousProxy = PlayReadyFactoryStoreProviderSynchronousProxy;
1534
1535    const DEBUG_NAME: &'static str = "fuchsia.factory.PlayReadyFactoryStoreProvider";
1536}
1537impl fidl::endpoints::DiscoverableProtocolMarker for PlayReadyFactoryStoreProviderMarker {}
1538
1539pub trait PlayReadyFactoryStoreProviderProxyInterface: Send + Sync {
1540    fn r#get_factory_store(
1541        &self,
1542        dir: fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>,
1543    ) -> Result<(), fidl::Error>;
1544}
1545#[derive(Debug)]
1546#[cfg(target_os = "fuchsia")]
1547pub struct PlayReadyFactoryStoreProviderSynchronousProxy {
1548    client: fidl::client::sync::Client,
1549}
1550
1551#[cfg(target_os = "fuchsia")]
1552impl fidl::endpoints::SynchronousProxy for PlayReadyFactoryStoreProviderSynchronousProxy {
1553    type Proxy = PlayReadyFactoryStoreProviderProxy;
1554    type Protocol = PlayReadyFactoryStoreProviderMarker;
1555
1556    fn from_channel(inner: fidl::Channel) -> Self {
1557        Self::new(inner)
1558    }
1559
1560    fn into_channel(self) -> fidl::Channel {
1561        self.client.into_channel()
1562    }
1563
1564    fn as_channel(&self) -> &fidl::Channel {
1565        self.client.as_channel()
1566    }
1567}
1568
1569#[cfg(target_os = "fuchsia")]
1570impl PlayReadyFactoryStoreProviderSynchronousProxy {
1571    pub fn new(channel: fidl::Channel) -> Self {
1572        let protocol_name =
1573            <PlayReadyFactoryStoreProviderMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
1574        Self { client: fidl::client::sync::Client::new(channel, protocol_name) }
1575    }
1576
1577    pub fn into_channel(self) -> fidl::Channel {
1578        self.client.into_channel()
1579    }
1580
1581    /// Waits until an event arrives and returns it. It is safe for other
1582    /// threads to make concurrent requests while waiting for an event.
1583    pub fn wait_for_event(
1584        &self,
1585        deadline: zx::MonotonicInstant,
1586    ) -> Result<PlayReadyFactoryStoreProviderEvent, fidl::Error> {
1587        PlayReadyFactoryStoreProviderEvent::decode(self.client.wait_for_event(deadline)?)
1588    }
1589
1590    pub fn r#get_factory_store(
1591        &self,
1592        mut dir: fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>,
1593    ) -> Result<(), fidl::Error> {
1594        self.client.send::<FactoryStoreProviderGetFactoryStoreRequest>(
1595            (dir,),
1596            0x21fa8e8bc0e1209e,
1597            fidl::encoding::DynamicFlags::empty(),
1598        )
1599    }
1600}
1601
1602#[cfg(target_os = "fuchsia")]
1603impl From<PlayReadyFactoryStoreProviderSynchronousProxy> for zx::Handle {
1604    fn from(value: PlayReadyFactoryStoreProviderSynchronousProxy) -> Self {
1605        value.into_channel().into()
1606    }
1607}
1608
1609#[cfg(target_os = "fuchsia")]
1610impl From<fidl::Channel> for PlayReadyFactoryStoreProviderSynchronousProxy {
1611    fn from(value: fidl::Channel) -> Self {
1612        Self::new(value)
1613    }
1614}
1615
1616#[cfg(target_os = "fuchsia")]
1617impl fidl::endpoints::FromClient for PlayReadyFactoryStoreProviderSynchronousProxy {
1618    type Protocol = PlayReadyFactoryStoreProviderMarker;
1619
1620    fn from_client(value: fidl::endpoints::ClientEnd<PlayReadyFactoryStoreProviderMarker>) -> Self {
1621        Self::new(value.into_channel())
1622    }
1623}
1624
1625#[derive(Debug, Clone)]
1626pub struct PlayReadyFactoryStoreProviderProxy {
1627    client: fidl::client::Client<fidl::encoding::DefaultFuchsiaResourceDialect>,
1628}
1629
1630impl fidl::endpoints::Proxy for PlayReadyFactoryStoreProviderProxy {
1631    type Protocol = PlayReadyFactoryStoreProviderMarker;
1632
1633    fn from_channel(inner: ::fidl::AsyncChannel) -> Self {
1634        Self::new(inner)
1635    }
1636
1637    fn into_channel(self) -> Result<::fidl::AsyncChannel, Self> {
1638        self.client.into_channel().map_err(|client| Self { client })
1639    }
1640
1641    fn as_channel(&self) -> &::fidl::AsyncChannel {
1642        self.client.as_channel()
1643    }
1644}
1645
1646impl PlayReadyFactoryStoreProviderProxy {
1647    /// Create a new Proxy for fuchsia.factory/PlayReadyFactoryStoreProvider.
1648    pub fn new(channel: ::fidl::AsyncChannel) -> Self {
1649        let protocol_name =
1650            <PlayReadyFactoryStoreProviderMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
1651        Self { client: fidl::client::Client::new(channel, protocol_name) }
1652    }
1653
1654    /// Get a Stream of events from the remote end of the protocol.
1655    ///
1656    /// # Panics
1657    ///
1658    /// Panics if the event stream was already taken.
1659    pub fn take_event_stream(&self) -> PlayReadyFactoryStoreProviderEventStream {
1660        PlayReadyFactoryStoreProviderEventStream {
1661            event_receiver: self.client.take_event_receiver(),
1662        }
1663    }
1664
1665    pub fn r#get_factory_store(
1666        &self,
1667        mut dir: fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>,
1668    ) -> Result<(), fidl::Error> {
1669        PlayReadyFactoryStoreProviderProxyInterface::r#get_factory_store(self, dir)
1670    }
1671}
1672
1673impl PlayReadyFactoryStoreProviderProxyInterface for PlayReadyFactoryStoreProviderProxy {
1674    fn r#get_factory_store(
1675        &self,
1676        mut dir: fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>,
1677    ) -> Result<(), fidl::Error> {
1678        self.client.send::<FactoryStoreProviderGetFactoryStoreRequest>(
1679            (dir,),
1680            0x21fa8e8bc0e1209e,
1681            fidl::encoding::DynamicFlags::empty(),
1682        )
1683    }
1684}
1685
1686pub struct PlayReadyFactoryStoreProviderEventStream {
1687    event_receiver: fidl::client::EventReceiver<fidl::encoding::DefaultFuchsiaResourceDialect>,
1688}
1689
1690impl std::marker::Unpin for PlayReadyFactoryStoreProviderEventStream {}
1691
1692impl futures::stream::FusedStream for PlayReadyFactoryStoreProviderEventStream {
1693    fn is_terminated(&self) -> bool {
1694        self.event_receiver.is_terminated()
1695    }
1696}
1697
1698impl futures::Stream for PlayReadyFactoryStoreProviderEventStream {
1699    type Item = Result<PlayReadyFactoryStoreProviderEvent, fidl::Error>;
1700
1701    fn poll_next(
1702        mut self: std::pin::Pin<&mut Self>,
1703        cx: &mut std::task::Context<'_>,
1704    ) -> std::task::Poll<Option<Self::Item>> {
1705        match futures::ready!(futures::stream::StreamExt::poll_next_unpin(
1706            &mut self.event_receiver,
1707            cx
1708        )?) {
1709            Some(buf) => {
1710                std::task::Poll::Ready(Some(PlayReadyFactoryStoreProviderEvent::decode(buf)))
1711            }
1712            None => std::task::Poll::Ready(None),
1713        }
1714    }
1715}
1716
1717#[derive(Debug)]
1718pub enum PlayReadyFactoryStoreProviderEvent {}
1719
1720impl PlayReadyFactoryStoreProviderEvent {
1721    /// Decodes a message buffer as a [`PlayReadyFactoryStoreProviderEvent`].
1722    fn decode(
1723        mut buf: <fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc,
1724    ) -> Result<PlayReadyFactoryStoreProviderEvent, fidl::Error> {
1725        let (bytes, _handles) = buf.split_mut();
1726        let (tx_header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
1727        debug_assert_eq!(tx_header.tx_id, 0);
1728        match tx_header.ordinal {
1729            _ => Err(fidl::Error::UnknownOrdinal {
1730                ordinal: tx_header.ordinal,
1731                protocol_name: <PlayReadyFactoryStoreProviderMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
1732            })
1733        }
1734    }
1735}
1736
1737/// A Stream of incoming requests for fuchsia.factory/PlayReadyFactoryStoreProvider.
1738pub struct PlayReadyFactoryStoreProviderRequestStream {
1739    inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
1740    is_terminated: bool,
1741}
1742
1743impl std::marker::Unpin for PlayReadyFactoryStoreProviderRequestStream {}
1744
1745impl futures::stream::FusedStream for PlayReadyFactoryStoreProviderRequestStream {
1746    fn is_terminated(&self) -> bool {
1747        self.is_terminated
1748    }
1749}
1750
1751impl fidl::endpoints::RequestStream for PlayReadyFactoryStoreProviderRequestStream {
1752    type Protocol = PlayReadyFactoryStoreProviderMarker;
1753    type ControlHandle = PlayReadyFactoryStoreProviderControlHandle;
1754
1755    fn from_channel(channel: ::fidl::AsyncChannel) -> Self {
1756        Self { inner: std::sync::Arc::new(fidl::ServeInner::new(channel)), is_terminated: false }
1757    }
1758
1759    fn control_handle(&self) -> Self::ControlHandle {
1760        PlayReadyFactoryStoreProviderControlHandle { inner: self.inner.clone() }
1761    }
1762
1763    fn into_inner(
1764        self,
1765    ) -> (::std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>, bool)
1766    {
1767        (self.inner, self.is_terminated)
1768    }
1769
1770    fn from_inner(
1771        inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
1772        is_terminated: bool,
1773    ) -> Self {
1774        Self { inner, is_terminated }
1775    }
1776}
1777
1778impl futures::Stream for PlayReadyFactoryStoreProviderRequestStream {
1779    type Item = Result<PlayReadyFactoryStoreProviderRequest, fidl::Error>;
1780
1781    fn poll_next(
1782        mut self: std::pin::Pin<&mut Self>,
1783        cx: &mut std::task::Context<'_>,
1784    ) -> std::task::Poll<Option<Self::Item>> {
1785        let this = &mut *self;
1786        if this.inner.check_shutdown(cx) {
1787            this.is_terminated = true;
1788            return std::task::Poll::Ready(None);
1789        }
1790        if this.is_terminated {
1791            panic!("polled PlayReadyFactoryStoreProviderRequestStream after completion");
1792        }
1793        fidl::encoding::with_tls_decode_buf::<_, fidl::encoding::DefaultFuchsiaResourceDialect>(
1794            |bytes, handles| {
1795                match this.inner.channel().read_etc(cx, bytes, handles) {
1796                    std::task::Poll::Ready(Ok(())) => {}
1797                    std::task::Poll::Pending => return std::task::Poll::Pending,
1798                    std::task::Poll::Ready(Err(zx_status::Status::PEER_CLOSED)) => {
1799                        this.is_terminated = true;
1800                        return std::task::Poll::Ready(None);
1801                    }
1802                    std::task::Poll::Ready(Err(e)) => {
1803                        return std::task::Poll::Ready(Some(Err(fidl::Error::ServerRequestRead(
1804                            e.into(),
1805                        ))))
1806                    }
1807                }
1808
1809                // A message has been received from the channel
1810                let (header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
1811
1812                std::task::Poll::Ready(Some(match header.ordinal {
1813                0x21fa8e8bc0e1209e => {
1814                    header.validate_request_tx_id(fidl::MethodType::OneWay)?;
1815                    let mut req = fidl::new_empty!(FactoryStoreProviderGetFactoryStoreRequest, fidl::encoding::DefaultFuchsiaResourceDialect);
1816                    fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<FactoryStoreProviderGetFactoryStoreRequest>(&header, _body_bytes, handles, &mut req)?;
1817                    let control_handle = PlayReadyFactoryStoreProviderControlHandle {
1818                        inner: this.inner.clone(),
1819                    };
1820                    Ok(PlayReadyFactoryStoreProviderRequest::GetFactoryStore {dir: req.dir,
1821
1822                        control_handle,
1823                    })
1824                }
1825                _ => Err(fidl::Error::UnknownOrdinal {
1826                    ordinal: header.ordinal,
1827                    protocol_name: <PlayReadyFactoryStoreProviderMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
1828                }),
1829            }))
1830            },
1831        )
1832    }
1833}
1834
1835/// This protocol exposes a method to connect to a directory containing
1836/// PlayReady-specific factory data: public certificates and keys for
1837/// authentication with PlayReady systems.
1838#[derive(Debug)]
1839pub enum PlayReadyFactoryStoreProviderRequest {
1840    GetFactoryStore {
1841        dir: fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>,
1842        control_handle: PlayReadyFactoryStoreProviderControlHandle,
1843    },
1844}
1845
1846impl PlayReadyFactoryStoreProviderRequest {
1847    #[allow(irrefutable_let_patterns)]
1848    pub fn into_get_factory_store(
1849        self,
1850    ) -> Option<(
1851        fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>,
1852        PlayReadyFactoryStoreProviderControlHandle,
1853    )> {
1854        if let PlayReadyFactoryStoreProviderRequest::GetFactoryStore { dir, control_handle } = self
1855        {
1856            Some((dir, control_handle))
1857        } else {
1858            None
1859        }
1860    }
1861
1862    /// Name of the method defined in FIDL
1863    pub fn method_name(&self) -> &'static str {
1864        match *self {
1865            PlayReadyFactoryStoreProviderRequest::GetFactoryStore { .. } => "get_factory_store",
1866        }
1867    }
1868}
1869
1870#[derive(Debug, Clone)]
1871pub struct PlayReadyFactoryStoreProviderControlHandle {
1872    inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
1873}
1874
1875impl fidl::endpoints::ControlHandle for PlayReadyFactoryStoreProviderControlHandle {
1876    fn shutdown(&self) {
1877        self.inner.shutdown()
1878    }
1879    fn shutdown_with_epitaph(&self, status: zx_status::Status) {
1880        self.inner.shutdown_with_epitaph(status)
1881    }
1882
1883    fn is_closed(&self) -> bool {
1884        self.inner.channel().is_closed()
1885    }
1886    fn on_closed(&self) -> fidl::OnSignalsRef<'_> {
1887        self.inner.channel().on_closed()
1888    }
1889
1890    #[cfg(target_os = "fuchsia")]
1891    fn signal_peer(
1892        &self,
1893        clear_mask: zx::Signals,
1894        set_mask: zx::Signals,
1895    ) -> Result<(), zx_status::Status> {
1896        use fidl::Peered;
1897        self.inner.channel().signal_peer(clear_mask, set_mask)
1898    }
1899}
1900
1901impl PlayReadyFactoryStoreProviderControlHandle {}
1902
1903#[derive(Debug, Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash)]
1904pub struct WeaveFactoryStoreProviderMarker;
1905
1906impl fidl::endpoints::ProtocolMarker for WeaveFactoryStoreProviderMarker {
1907    type Proxy = WeaveFactoryStoreProviderProxy;
1908    type RequestStream = WeaveFactoryStoreProviderRequestStream;
1909    #[cfg(target_os = "fuchsia")]
1910    type SynchronousProxy = WeaveFactoryStoreProviderSynchronousProxy;
1911
1912    const DEBUG_NAME: &'static str = "fuchsia.factory.WeaveFactoryStoreProvider";
1913}
1914impl fidl::endpoints::DiscoverableProtocolMarker for WeaveFactoryStoreProviderMarker {}
1915
1916pub trait WeaveFactoryStoreProviderProxyInterface: Send + Sync {
1917    fn r#get_factory_store(
1918        &self,
1919        dir: fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>,
1920    ) -> Result<(), fidl::Error>;
1921}
1922#[derive(Debug)]
1923#[cfg(target_os = "fuchsia")]
1924pub struct WeaveFactoryStoreProviderSynchronousProxy {
1925    client: fidl::client::sync::Client,
1926}
1927
1928#[cfg(target_os = "fuchsia")]
1929impl fidl::endpoints::SynchronousProxy for WeaveFactoryStoreProviderSynchronousProxy {
1930    type Proxy = WeaveFactoryStoreProviderProxy;
1931    type Protocol = WeaveFactoryStoreProviderMarker;
1932
1933    fn from_channel(inner: fidl::Channel) -> Self {
1934        Self::new(inner)
1935    }
1936
1937    fn into_channel(self) -> fidl::Channel {
1938        self.client.into_channel()
1939    }
1940
1941    fn as_channel(&self) -> &fidl::Channel {
1942        self.client.as_channel()
1943    }
1944}
1945
1946#[cfg(target_os = "fuchsia")]
1947impl WeaveFactoryStoreProviderSynchronousProxy {
1948    pub fn new(channel: fidl::Channel) -> Self {
1949        let protocol_name =
1950            <WeaveFactoryStoreProviderMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
1951        Self { client: fidl::client::sync::Client::new(channel, protocol_name) }
1952    }
1953
1954    pub fn into_channel(self) -> fidl::Channel {
1955        self.client.into_channel()
1956    }
1957
1958    /// Waits until an event arrives and returns it. It is safe for other
1959    /// threads to make concurrent requests while waiting for an event.
1960    pub fn wait_for_event(
1961        &self,
1962        deadline: zx::MonotonicInstant,
1963    ) -> Result<WeaveFactoryStoreProviderEvent, fidl::Error> {
1964        WeaveFactoryStoreProviderEvent::decode(self.client.wait_for_event(deadline)?)
1965    }
1966
1967    pub fn r#get_factory_store(
1968        &self,
1969        mut dir: fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>,
1970    ) -> Result<(), fidl::Error> {
1971        self.client.send::<FactoryStoreProviderGetFactoryStoreRequest>(
1972            (dir,),
1973            0x21fa8e8bc0e1209e,
1974            fidl::encoding::DynamicFlags::empty(),
1975        )
1976    }
1977}
1978
1979#[cfg(target_os = "fuchsia")]
1980impl From<WeaveFactoryStoreProviderSynchronousProxy> for zx::Handle {
1981    fn from(value: WeaveFactoryStoreProviderSynchronousProxy) -> Self {
1982        value.into_channel().into()
1983    }
1984}
1985
1986#[cfg(target_os = "fuchsia")]
1987impl From<fidl::Channel> for WeaveFactoryStoreProviderSynchronousProxy {
1988    fn from(value: fidl::Channel) -> Self {
1989        Self::new(value)
1990    }
1991}
1992
1993#[cfg(target_os = "fuchsia")]
1994impl fidl::endpoints::FromClient for WeaveFactoryStoreProviderSynchronousProxy {
1995    type Protocol = WeaveFactoryStoreProviderMarker;
1996
1997    fn from_client(value: fidl::endpoints::ClientEnd<WeaveFactoryStoreProviderMarker>) -> Self {
1998        Self::new(value.into_channel())
1999    }
2000}
2001
2002#[derive(Debug, Clone)]
2003pub struct WeaveFactoryStoreProviderProxy {
2004    client: fidl::client::Client<fidl::encoding::DefaultFuchsiaResourceDialect>,
2005}
2006
2007impl fidl::endpoints::Proxy for WeaveFactoryStoreProviderProxy {
2008    type Protocol = WeaveFactoryStoreProviderMarker;
2009
2010    fn from_channel(inner: ::fidl::AsyncChannel) -> Self {
2011        Self::new(inner)
2012    }
2013
2014    fn into_channel(self) -> Result<::fidl::AsyncChannel, Self> {
2015        self.client.into_channel().map_err(|client| Self { client })
2016    }
2017
2018    fn as_channel(&self) -> &::fidl::AsyncChannel {
2019        self.client.as_channel()
2020    }
2021}
2022
2023impl WeaveFactoryStoreProviderProxy {
2024    /// Create a new Proxy for fuchsia.factory/WeaveFactoryStoreProvider.
2025    pub fn new(channel: ::fidl::AsyncChannel) -> Self {
2026        let protocol_name =
2027            <WeaveFactoryStoreProviderMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
2028        Self { client: fidl::client::Client::new(channel, protocol_name) }
2029    }
2030
2031    /// Get a Stream of events from the remote end of the protocol.
2032    ///
2033    /// # Panics
2034    ///
2035    /// Panics if the event stream was already taken.
2036    pub fn take_event_stream(&self) -> WeaveFactoryStoreProviderEventStream {
2037        WeaveFactoryStoreProviderEventStream { event_receiver: self.client.take_event_receiver() }
2038    }
2039
2040    pub fn r#get_factory_store(
2041        &self,
2042        mut dir: fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>,
2043    ) -> Result<(), fidl::Error> {
2044        WeaveFactoryStoreProviderProxyInterface::r#get_factory_store(self, dir)
2045    }
2046}
2047
2048impl WeaveFactoryStoreProviderProxyInterface for WeaveFactoryStoreProviderProxy {
2049    fn r#get_factory_store(
2050        &self,
2051        mut dir: fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>,
2052    ) -> Result<(), fidl::Error> {
2053        self.client.send::<FactoryStoreProviderGetFactoryStoreRequest>(
2054            (dir,),
2055            0x21fa8e8bc0e1209e,
2056            fidl::encoding::DynamicFlags::empty(),
2057        )
2058    }
2059}
2060
2061pub struct WeaveFactoryStoreProviderEventStream {
2062    event_receiver: fidl::client::EventReceiver<fidl::encoding::DefaultFuchsiaResourceDialect>,
2063}
2064
2065impl std::marker::Unpin for WeaveFactoryStoreProviderEventStream {}
2066
2067impl futures::stream::FusedStream for WeaveFactoryStoreProviderEventStream {
2068    fn is_terminated(&self) -> bool {
2069        self.event_receiver.is_terminated()
2070    }
2071}
2072
2073impl futures::Stream for WeaveFactoryStoreProviderEventStream {
2074    type Item = Result<WeaveFactoryStoreProviderEvent, fidl::Error>;
2075
2076    fn poll_next(
2077        mut self: std::pin::Pin<&mut Self>,
2078        cx: &mut std::task::Context<'_>,
2079    ) -> std::task::Poll<Option<Self::Item>> {
2080        match futures::ready!(futures::stream::StreamExt::poll_next_unpin(
2081            &mut self.event_receiver,
2082            cx
2083        )?) {
2084            Some(buf) => std::task::Poll::Ready(Some(WeaveFactoryStoreProviderEvent::decode(buf))),
2085            None => std::task::Poll::Ready(None),
2086        }
2087    }
2088}
2089
2090#[derive(Debug)]
2091pub enum WeaveFactoryStoreProviderEvent {}
2092
2093impl WeaveFactoryStoreProviderEvent {
2094    /// Decodes a message buffer as a [`WeaveFactoryStoreProviderEvent`].
2095    fn decode(
2096        mut buf: <fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc,
2097    ) -> Result<WeaveFactoryStoreProviderEvent, fidl::Error> {
2098        let (bytes, _handles) = buf.split_mut();
2099        let (tx_header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
2100        debug_assert_eq!(tx_header.tx_id, 0);
2101        match tx_header.ordinal {
2102            _ => Err(fidl::Error::UnknownOrdinal {
2103                ordinal: tx_header.ordinal,
2104                protocol_name:
2105                    <WeaveFactoryStoreProviderMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
2106            }),
2107        }
2108    }
2109}
2110
2111/// A Stream of incoming requests for fuchsia.factory/WeaveFactoryStoreProvider.
2112pub struct WeaveFactoryStoreProviderRequestStream {
2113    inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
2114    is_terminated: bool,
2115}
2116
2117impl std::marker::Unpin for WeaveFactoryStoreProviderRequestStream {}
2118
2119impl futures::stream::FusedStream for WeaveFactoryStoreProviderRequestStream {
2120    fn is_terminated(&self) -> bool {
2121        self.is_terminated
2122    }
2123}
2124
2125impl fidl::endpoints::RequestStream for WeaveFactoryStoreProviderRequestStream {
2126    type Protocol = WeaveFactoryStoreProviderMarker;
2127    type ControlHandle = WeaveFactoryStoreProviderControlHandle;
2128
2129    fn from_channel(channel: ::fidl::AsyncChannel) -> Self {
2130        Self { inner: std::sync::Arc::new(fidl::ServeInner::new(channel)), is_terminated: false }
2131    }
2132
2133    fn control_handle(&self) -> Self::ControlHandle {
2134        WeaveFactoryStoreProviderControlHandle { inner: self.inner.clone() }
2135    }
2136
2137    fn into_inner(
2138        self,
2139    ) -> (::std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>, bool)
2140    {
2141        (self.inner, self.is_terminated)
2142    }
2143
2144    fn from_inner(
2145        inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
2146        is_terminated: bool,
2147    ) -> Self {
2148        Self { inner, is_terminated }
2149    }
2150}
2151
2152impl futures::Stream for WeaveFactoryStoreProviderRequestStream {
2153    type Item = Result<WeaveFactoryStoreProviderRequest, fidl::Error>;
2154
2155    fn poll_next(
2156        mut self: std::pin::Pin<&mut Self>,
2157        cx: &mut std::task::Context<'_>,
2158    ) -> std::task::Poll<Option<Self::Item>> {
2159        let this = &mut *self;
2160        if this.inner.check_shutdown(cx) {
2161            this.is_terminated = true;
2162            return std::task::Poll::Ready(None);
2163        }
2164        if this.is_terminated {
2165            panic!("polled WeaveFactoryStoreProviderRequestStream after completion");
2166        }
2167        fidl::encoding::with_tls_decode_buf::<_, fidl::encoding::DefaultFuchsiaResourceDialect>(
2168            |bytes, handles| {
2169                match this.inner.channel().read_etc(cx, bytes, handles) {
2170                    std::task::Poll::Ready(Ok(())) => {}
2171                    std::task::Poll::Pending => return std::task::Poll::Pending,
2172                    std::task::Poll::Ready(Err(zx_status::Status::PEER_CLOSED)) => {
2173                        this.is_terminated = true;
2174                        return std::task::Poll::Ready(None);
2175                    }
2176                    std::task::Poll::Ready(Err(e)) => {
2177                        return std::task::Poll::Ready(Some(Err(fidl::Error::ServerRequestRead(
2178                            e.into(),
2179                        ))))
2180                    }
2181                }
2182
2183                // A message has been received from the channel
2184                let (header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
2185
2186                std::task::Poll::Ready(Some(match header.ordinal {
2187                0x21fa8e8bc0e1209e => {
2188                    header.validate_request_tx_id(fidl::MethodType::OneWay)?;
2189                    let mut req = fidl::new_empty!(FactoryStoreProviderGetFactoryStoreRequest, fidl::encoding::DefaultFuchsiaResourceDialect);
2190                    fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<FactoryStoreProviderGetFactoryStoreRequest>(&header, _body_bytes, handles, &mut req)?;
2191                    let control_handle = WeaveFactoryStoreProviderControlHandle {
2192                        inner: this.inner.clone(),
2193                    };
2194                    Ok(WeaveFactoryStoreProviderRequest::GetFactoryStore {dir: req.dir,
2195
2196                        control_handle,
2197                    })
2198                }
2199                _ => Err(fidl::Error::UnknownOrdinal {
2200                    ordinal: header.ordinal,
2201                    protocol_name: <WeaveFactoryStoreProviderMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
2202                }),
2203            }))
2204            },
2205        )
2206    }
2207}
2208
2209/// This protocol  exposes a method to connect to a directory containing
2210/// Weave-specific factory data: public certificates, signing keys, and
2211/// identity files for interoperation with a Weave-based home-area-network.
2212#[derive(Debug)]
2213pub enum WeaveFactoryStoreProviderRequest {
2214    GetFactoryStore {
2215        dir: fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>,
2216        control_handle: WeaveFactoryStoreProviderControlHandle,
2217    },
2218}
2219
2220impl WeaveFactoryStoreProviderRequest {
2221    #[allow(irrefutable_let_patterns)]
2222    pub fn into_get_factory_store(
2223        self,
2224    ) -> Option<(
2225        fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>,
2226        WeaveFactoryStoreProviderControlHandle,
2227    )> {
2228        if let WeaveFactoryStoreProviderRequest::GetFactoryStore { dir, control_handle } = self {
2229            Some((dir, control_handle))
2230        } else {
2231            None
2232        }
2233    }
2234
2235    /// Name of the method defined in FIDL
2236    pub fn method_name(&self) -> &'static str {
2237        match *self {
2238            WeaveFactoryStoreProviderRequest::GetFactoryStore { .. } => "get_factory_store",
2239        }
2240    }
2241}
2242
2243#[derive(Debug, Clone)]
2244pub struct WeaveFactoryStoreProviderControlHandle {
2245    inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
2246}
2247
2248impl fidl::endpoints::ControlHandle for WeaveFactoryStoreProviderControlHandle {
2249    fn shutdown(&self) {
2250        self.inner.shutdown()
2251    }
2252    fn shutdown_with_epitaph(&self, status: zx_status::Status) {
2253        self.inner.shutdown_with_epitaph(status)
2254    }
2255
2256    fn is_closed(&self) -> bool {
2257        self.inner.channel().is_closed()
2258    }
2259    fn on_closed(&self) -> fidl::OnSignalsRef<'_> {
2260        self.inner.channel().on_closed()
2261    }
2262
2263    #[cfg(target_os = "fuchsia")]
2264    fn signal_peer(
2265        &self,
2266        clear_mask: zx::Signals,
2267        set_mask: zx::Signals,
2268    ) -> Result<(), zx_status::Status> {
2269        use fidl::Peered;
2270        self.inner.channel().signal_peer(clear_mask, set_mask)
2271    }
2272}
2273
2274impl WeaveFactoryStoreProviderControlHandle {}
2275
2276#[derive(Debug, Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash)]
2277pub struct WidevineFactoryStoreProviderMarker;
2278
2279impl fidl::endpoints::ProtocolMarker for WidevineFactoryStoreProviderMarker {
2280    type Proxy = WidevineFactoryStoreProviderProxy;
2281    type RequestStream = WidevineFactoryStoreProviderRequestStream;
2282    #[cfg(target_os = "fuchsia")]
2283    type SynchronousProxy = WidevineFactoryStoreProviderSynchronousProxy;
2284
2285    const DEBUG_NAME: &'static str = "fuchsia.factory.WidevineFactoryStoreProvider";
2286}
2287impl fidl::endpoints::DiscoverableProtocolMarker for WidevineFactoryStoreProviderMarker {}
2288
2289pub trait WidevineFactoryStoreProviderProxyInterface: Send + Sync {
2290    fn r#get_factory_store(
2291        &self,
2292        dir: fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>,
2293    ) -> Result<(), fidl::Error>;
2294}
2295#[derive(Debug)]
2296#[cfg(target_os = "fuchsia")]
2297pub struct WidevineFactoryStoreProviderSynchronousProxy {
2298    client: fidl::client::sync::Client,
2299}
2300
2301#[cfg(target_os = "fuchsia")]
2302impl fidl::endpoints::SynchronousProxy for WidevineFactoryStoreProviderSynchronousProxy {
2303    type Proxy = WidevineFactoryStoreProviderProxy;
2304    type Protocol = WidevineFactoryStoreProviderMarker;
2305
2306    fn from_channel(inner: fidl::Channel) -> Self {
2307        Self::new(inner)
2308    }
2309
2310    fn into_channel(self) -> fidl::Channel {
2311        self.client.into_channel()
2312    }
2313
2314    fn as_channel(&self) -> &fidl::Channel {
2315        self.client.as_channel()
2316    }
2317}
2318
2319#[cfg(target_os = "fuchsia")]
2320impl WidevineFactoryStoreProviderSynchronousProxy {
2321    pub fn new(channel: fidl::Channel) -> Self {
2322        let protocol_name =
2323            <WidevineFactoryStoreProviderMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
2324        Self { client: fidl::client::sync::Client::new(channel, protocol_name) }
2325    }
2326
2327    pub fn into_channel(self) -> fidl::Channel {
2328        self.client.into_channel()
2329    }
2330
2331    /// Waits until an event arrives and returns it. It is safe for other
2332    /// threads to make concurrent requests while waiting for an event.
2333    pub fn wait_for_event(
2334        &self,
2335        deadline: zx::MonotonicInstant,
2336    ) -> Result<WidevineFactoryStoreProviderEvent, fidl::Error> {
2337        WidevineFactoryStoreProviderEvent::decode(self.client.wait_for_event(deadline)?)
2338    }
2339
2340    pub fn r#get_factory_store(
2341        &self,
2342        mut dir: fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>,
2343    ) -> Result<(), fidl::Error> {
2344        self.client.send::<FactoryStoreProviderGetFactoryStoreRequest>(
2345            (dir,),
2346            0x21fa8e8bc0e1209e,
2347            fidl::encoding::DynamicFlags::empty(),
2348        )
2349    }
2350}
2351
2352#[cfg(target_os = "fuchsia")]
2353impl From<WidevineFactoryStoreProviderSynchronousProxy> for zx::Handle {
2354    fn from(value: WidevineFactoryStoreProviderSynchronousProxy) -> Self {
2355        value.into_channel().into()
2356    }
2357}
2358
2359#[cfg(target_os = "fuchsia")]
2360impl From<fidl::Channel> for WidevineFactoryStoreProviderSynchronousProxy {
2361    fn from(value: fidl::Channel) -> Self {
2362        Self::new(value)
2363    }
2364}
2365
2366#[cfg(target_os = "fuchsia")]
2367impl fidl::endpoints::FromClient for WidevineFactoryStoreProviderSynchronousProxy {
2368    type Protocol = WidevineFactoryStoreProviderMarker;
2369
2370    fn from_client(value: fidl::endpoints::ClientEnd<WidevineFactoryStoreProviderMarker>) -> Self {
2371        Self::new(value.into_channel())
2372    }
2373}
2374
2375#[derive(Debug, Clone)]
2376pub struct WidevineFactoryStoreProviderProxy {
2377    client: fidl::client::Client<fidl::encoding::DefaultFuchsiaResourceDialect>,
2378}
2379
2380impl fidl::endpoints::Proxy for WidevineFactoryStoreProviderProxy {
2381    type Protocol = WidevineFactoryStoreProviderMarker;
2382
2383    fn from_channel(inner: ::fidl::AsyncChannel) -> Self {
2384        Self::new(inner)
2385    }
2386
2387    fn into_channel(self) -> Result<::fidl::AsyncChannel, Self> {
2388        self.client.into_channel().map_err(|client| Self { client })
2389    }
2390
2391    fn as_channel(&self) -> &::fidl::AsyncChannel {
2392        self.client.as_channel()
2393    }
2394}
2395
2396impl WidevineFactoryStoreProviderProxy {
2397    /// Create a new Proxy for fuchsia.factory/WidevineFactoryStoreProvider.
2398    pub fn new(channel: ::fidl::AsyncChannel) -> Self {
2399        let protocol_name =
2400            <WidevineFactoryStoreProviderMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
2401        Self { client: fidl::client::Client::new(channel, protocol_name) }
2402    }
2403
2404    /// Get a Stream of events from the remote end of the protocol.
2405    ///
2406    /// # Panics
2407    ///
2408    /// Panics if the event stream was already taken.
2409    pub fn take_event_stream(&self) -> WidevineFactoryStoreProviderEventStream {
2410        WidevineFactoryStoreProviderEventStream {
2411            event_receiver: self.client.take_event_receiver(),
2412        }
2413    }
2414
2415    pub fn r#get_factory_store(
2416        &self,
2417        mut dir: fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>,
2418    ) -> Result<(), fidl::Error> {
2419        WidevineFactoryStoreProviderProxyInterface::r#get_factory_store(self, dir)
2420    }
2421}
2422
2423impl WidevineFactoryStoreProviderProxyInterface for WidevineFactoryStoreProviderProxy {
2424    fn r#get_factory_store(
2425        &self,
2426        mut dir: fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>,
2427    ) -> Result<(), fidl::Error> {
2428        self.client.send::<FactoryStoreProviderGetFactoryStoreRequest>(
2429            (dir,),
2430            0x21fa8e8bc0e1209e,
2431            fidl::encoding::DynamicFlags::empty(),
2432        )
2433    }
2434}
2435
2436pub struct WidevineFactoryStoreProviderEventStream {
2437    event_receiver: fidl::client::EventReceiver<fidl::encoding::DefaultFuchsiaResourceDialect>,
2438}
2439
2440impl std::marker::Unpin for WidevineFactoryStoreProviderEventStream {}
2441
2442impl futures::stream::FusedStream for WidevineFactoryStoreProviderEventStream {
2443    fn is_terminated(&self) -> bool {
2444        self.event_receiver.is_terminated()
2445    }
2446}
2447
2448impl futures::Stream for WidevineFactoryStoreProviderEventStream {
2449    type Item = Result<WidevineFactoryStoreProviderEvent, fidl::Error>;
2450
2451    fn poll_next(
2452        mut self: std::pin::Pin<&mut Self>,
2453        cx: &mut std::task::Context<'_>,
2454    ) -> std::task::Poll<Option<Self::Item>> {
2455        match futures::ready!(futures::stream::StreamExt::poll_next_unpin(
2456            &mut self.event_receiver,
2457            cx
2458        )?) {
2459            Some(buf) => {
2460                std::task::Poll::Ready(Some(WidevineFactoryStoreProviderEvent::decode(buf)))
2461            }
2462            None => std::task::Poll::Ready(None),
2463        }
2464    }
2465}
2466
2467#[derive(Debug)]
2468pub enum WidevineFactoryStoreProviderEvent {}
2469
2470impl WidevineFactoryStoreProviderEvent {
2471    /// Decodes a message buffer as a [`WidevineFactoryStoreProviderEvent`].
2472    fn decode(
2473        mut buf: <fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc,
2474    ) -> Result<WidevineFactoryStoreProviderEvent, fidl::Error> {
2475        let (bytes, _handles) = buf.split_mut();
2476        let (tx_header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
2477        debug_assert_eq!(tx_header.tx_id, 0);
2478        match tx_header.ordinal {
2479            _ => Err(fidl::Error::UnknownOrdinal {
2480                ordinal: tx_header.ordinal,
2481                protocol_name: <WidevineFactoryStoreProviderMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
2482            })
2483        }
2484    }
2485}
2486
2487/// A Stream of incoming requests for fuchsia.factory/WidevineFactoryStoreProvider.
2488pub struct WidevineFactoryStoreProviderRequestStream {
2489    inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
2490    is_terminated: bool,
2491}
2492
2493impl std::marker::Unpin for WidevineFactoryStoreProviderRequestStream {}
2494
2495impl futures::stream::FusedStream for WidevineFactoryStoreProviderRequestStream {
2496    fn is_terminated(&self) -> bool {
2497        self.is_terminated
2498    }
2499}
2500
2501impl fidl::endpoints::RequestStream for WidevineFactoryStoreProviderRequestStream {
2502    type Protocol = WidevineFactoryStoreProviderMarker;
2503    type ControlHandle = WidevineFactoryStoreProviderControlHandle;
2504
2505    fn from_channel(channel: ::fidl::AsyncChannel) -> Self {
2506        Self { inner: std::sync::Arc::new(fidl::ServeInner::new(channel)), is_terminated: false }
2507    }
2508
2509    fn control_handle(&self) -> Self::ControlHandle {
2510        WidevineFactoryStoreProviderControlHandle { inner: self.inner.clone() }
2511    }
2512
2513    fn into_inner(
2514        self,
2515    ) -> (::std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>, bool)
2516    {
2517        (self.inner, self.is_terminated)
2518    }
2519
2520    fn from_inner(
2521        inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
2522        is_terminated: bool,
2523    ) -> Self {
2524        Self { inner, is_terminated }
2525    }
2526}
2527
2528impl futures::Stream for WidevineFactoryStoreProviderRequestStream {
2529    type Item = Result<WidevineFactoryStoreProviderRequest, fidl::Error>;
2530
2531    fn poll_next(
2532        mut self: std::pin::Pin<&mut Self>,
2533        cx: &mut std::task::Context<'_>,
2534    ) -> std::task::Poll<Option<Self::Item>> {
2535        let this = &mut *self;
2536        if this.inner.check_shutdown(cx) {
2537            this.is_terminated = true;
2538            return std::task::Poll::Ready(None);
2539        }
2540        if this.is_terminated {
2541            panic!("polled WidevineFactoryStoreProviderRequestStream after completion");
2542        }
2543        fidl::encoding::with_tls_decode_buf::<_, fidl::encoding::DefaultFuchsiaResourceDialect>(
2544            |bytes, handles| {
2545                match this.inner.channel().read_etc(cx, bytes, handles) {
2546                    std::task::Poll::Ready(Ok(())) => {}
2547                    std::task::Poll::Pending => return std::task::Poll::Pending,
2548                    std::task::Poll::Ready(Err(zx_status::Status::PEER_CLOSED)) => {
2549                        this.is_terminated = true;
2550                        return std::task::Poll::Ready(None);
2551                    }
2552                    std::task::Poll::Ready(Err(e)) => {
2553                        return std::task::Poll::Ready(Some(Err(fidl::Error::ServerRequestRead(
2554                            e.into(),
2555                        ))))
2556                    }
2557                }
2558
2559                // A message has been received from the channel
2560                let (header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
2561
2562                std::task::Poll::Ready(Some(match header.ordinal {
2563                0x21fa8e8bc0e1209e => {
2564                    header.validate_request_tx_id(fidl::MethodType::OneWay)?;
2565                    let mut req = fidl::new_empty!(FactoryStoreProviderGetFactoryStoreRequest, fidl::encoding::DefaultFuchsiaResourceDialect);
2566                    fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<FactoryStoreProviderGetFactoryStoreRequest>(&header, _body_bytes, handles, &mut req)?;
2567                    let control_handle = WidevineFactoryStoreProviderControlHandle {
2568                        inner: this.inner.clone(),
2569                    };
2570                    Ok(WidevineFactoryStoreProviderRequest::GetFactoryStore {dir: req.dir,
2571
2572                        control_handle,
2573                    })
2574                }
2575                _ => Err(fidl::Error::UnknownOrdinal {
2576                    ordinal: header.ordinal,
2577                    protocol_name: <WidevineFactoryStoreProviderMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
2578                }),
2579            }))
2580            },
2581        )
2582    }
2583}
2584
2585/// This protocol exposes a method to connect to a directory containing
2586/// Widevine-specific factory data: public certificates and keys for
2587/// authentication with Widevine systems.
2588#[derive(Debug)]
2589pub enum WidevineFactoryStoreProviderRequest {
2590    GetFactoryStore {
2591        dir: fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>,
2592        control_handle: WidevineFactoryStoreProviderControlHandle,
2593    },
2594}
2595
2596impl WidevineFactoryStoreProviderRequest {
2597    #[allow(irrefutable_let_patterns)]
2598    pub fn into_get_factory_store(
2599        self,
2600    ) -> Option<(
2601        fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>,
2602        WidevineFactoryStoreProviderControlHandle,
2603    )> {
2604        if let WidevineFactoryStoreProviderRequest::GetFactoryStore { dir, control_handle } = self {
2605            Some((dir, control_handle))
2606        } else {
2607            None
2608        }
2609    }
2610
2611    /// Name of the method defined in FIDL
2612    pub fn method_name(&self) -> &'static str {
2613        match *self {
2614            WidevineFactoryStoreProviderRequest::GetFactoryStore { .. } => "get_factory_store",
2615        }
2616    }
2617}
2618
2619#[derive(Debug, Clone)]
2620pub struct WidevineFactoryStoreProviderControlHandle {
2621    inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
2622}
2623
2624impl fidl::endpoints::ControlHandle for WidevineFactoryStoreProviderControlHandle {
2625    fn shutdown(&self) {
2626        self.inner.shutdown()
2627    }
2628    fn shutdown_with_epitaph(&self, status: zx_status::Status) {
2629        self.inner.shutdown_with_epitaph(status)
2630    }
2631
2632    fn is_closed(&self) -> bool {
2633        self.inner.channel().is_closed()
2634    }
2635    fn on_closed(&self) -> fidl::OnSignalsRef<'_> {
2636        self.inner.channel().on_closed()
2637    }
2638
2639    #[cfg(target_os = "fuchsia")]
2640    fn signal_peer(
2641        &self,
2642        clear_mask: zx::Signals,
2643        set_mask: zx::Signals,
2644    ) -> Result<(), zx_status::Status> {
2645        use fidl::Peered;
2646        self.inner.channel().signal_peer(clear_mask, set_mask)
2647    }
2648}
2649
2650impl WidevineFactoryStoreProviderControlHandle {}
2651
2652mod internal {
2653    use super::*;
2654
2655    impl fidl::encoding::ResourceTypeMarker for FactoryStoreProviderGetFactoryStoreRequest {
2656        type Borrowed<'a> = &'a mut Self;
2657        fn take_or_borrow<'a>(
2658            value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
2659        ) -> Self::Borrowed<'a> {
2660            value
2661        }
2662    }
2663
2664    unsafe impl fidl::encoding::TypeMarker for FactoryStoreProviderGetFactoryStoreRequest {
2665        type Owned = Self;
2666
2667        #[inline(always)]
2668        fn inline_align(_context: fidl::encoding::Context) -> usize {
2669            4
2670        }
2671
2672        #[inline(always)]
2673        fn inline_size(_context: fidl::encoding::Context) -> usize {
2674            4
2675        }
2676    }
2677
2678    unsafe impl
2679        fidl::encoding::Encode<
2680            FactoryStoreProviderGetFactoryStoreRequest,
2681            fidl::encoding::DefaultFuchsiaResourceDialect,
2682        > for &mut FactoryStoreProviderGetFactoryStoreRequest
2683    {
2684        #[inline]
2685        unsafe fn encode(
2686            self,
2687            encoder: &mut fidl::encoding::Encoder<
2688                '_,
2689                fidl::encoding::DefaultFuchsiaResourceDialect,
2690            >,
2691            offset: usize,
2692            _depth: fidl::encoding::Depth,
2693        ) -> fidl::Result<()> {
2694            encoder.debug_check_bounds::<FactoryStoreProviderGetFactoryStoreRequest>(offset);
2695            // Delegate to tuple encoding.
2696            fidl::encoding::Encode::<
2697                FactoryStoreProviderGetFactoryStoreRequest,
2698                fidl::encoding::DefaultFuchsiaResourceDialect,
2699            >::encode(
2700                (<fidl::encoding::Endpoint<
2701                    fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>,
2702                > as fidl::encoding::ResourceTypeMarker>::take_or_borrow(
2703                    &mut self.dir
2704                ),),
2705                encoder,
2706                offset,
2707                _depth,
2708            )
2709        }
2710    }
2711    unsafe impl<
2712            T0: fidl::encoding::Encode<
2713                fidl::encoding::Endpoint<
2714                    fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>,
2715                >,
2716                fidl::encoding::DefaultFuchsiaResourceDialect,
2717            >,
2718        >
2719        fidl::encoding::Encode<
2720            FactoryStoreProviderGetFactoryStoreRequest,
2721            fidl::encoding::DefaultFuchsiaResourceDialect,
2722        > for (T0,)
2723    {
2724        #[inline]
2725        unsafe fn encode(
2726            self,
2727            encoder: &mut fidl::encoding::Encoder<
2728                '_,
2729                fidl::encoding::DefaultFuchsiaResourceDialect,
2730            >,
2731            offset: usize,
2732            depth: fidl::encoding::Depth,
2733        ) -> fidl::Result<()> {
2734            encoder.debug_check_bounds::<FactoryStoreProviderGetFactoryStoreRequest>(offset);
2735            // Zero out padding regions. There's no need to apply masks
2736            // because the unmasked parts will be overwritten by fields.
2737            // Write the fields.
2738            self.0.encode(encoder, offset + 0, depth)?;
2739            Ok(())
2740        }
2741    }
2742
2743    impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
2744        for FactoryStoreProviderGetFactoryStoreRequest
2745    {
2746        #[inline(always)]
2747        fn new_empty() -> Self {
2748            Self {
2749                dir: fidl::new_empty!(
2750                    fidl::encoding::Endpoint<
2751                        fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>,
2752                    >,
2753                    fidl::encoding::DefaultFuchsiaResourceDialect
2754                ),
2755            }
2756        }
2757
2758        #[inline]
2759        unsafe fn decode(
2760            &mut self,
2761            decoder: &mut fidl::encoding::Decoder<
2762                '_,
2763                fidl::encoding::DefaultFuchsiaResourceDialect,
2764            >,
2765            offset: usize,
2766            _depth: fidl::encoding::Depth,
2767        ) -> fidl::Result<()> {
2768            decoder.debug_check_bounds::<Self>(offset);
2769            // Verify that padding bytes are zero.
2770            fidl::decode!(
2771                fidl::encoding::Endpoint<
2772                    fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>,
2773                >,
2774                fidl::encoding::DefaultFuchsiaResourceDialect,
2775                &mut self.dir,
2776                decoder,
2777                offset + 0,
2778                _depth
2779            )?;
2780            Ok(())
2781        }
2782    }
2783}