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