Skip to main content

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