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