1#![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_ultrasound_common::*;
11use futures::future::{self, MaybeDone, TryFutureExt};
12use zx_status;
13
14#[derive(Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
15pub struct FactoryCreateCapturerRequest {
16 pub request: fidl::endpoints::ServerEnd<fidl_fuchsia_media::AudioCapturerMarker>,
17}
18
19impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect>
20 for FactoryCreateCapturerRequest
21{
22}
23
24#[derive(Debug, PartialEq)]
25pub struct FactoryCreateCapturerResponse {
26 pub reference_clock: fidl::Clock,
27 pub stream_type: fidl_fuchsia_media::AudioStreamType,
28}
29
30impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect>
31 for FactoryCreateCapturerResponse
32{
33}
34
35#[derive(Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
36pub struct FactoryCreateRendererRequest {
37 pub renderer: fidl::endpoints::ServerEnd<fidl_fuchsia_media::AudioRendererMarker>,
38}
39
40impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect>
41 for FactoryCreateRendererRequest
42{
43}
44
45#[derive(Debug, PartialEq)]
46pub struct FactoryCreateRendererResponse {
47 pub reference_clock: fidl::Clock,
48 pub stream_type: fidl_fuchsia_media::AudioStreamType,
49}
50
51impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect>
52 for FactoryCreateRendererResponse
53{
54}
55
56#[derive(Debug, Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash)]
57pub struct FactoryMarker;
58
59impl fidl::endpoints::ProtocolMarker for FactoryMarker {
60 type Proxy = FactoryProxy;
61 type RequestStream = FactoryRequestStream;
62 #[cfg(target_os = "fuchsia")]
63 type SynchronousProxy = FactorySynchronousProxy;
64
65 const DEBUG_NAME: &'static str = "fuchsia.ultrasound.Factory";
66}
67impl fidl::endpoints::DiscoverableProtocolMarker for FactoryMarker {}
68
69pub trait FactoryProxyInterface: Send + Sync {
70 type CreateCapturerResponseFut: std::future::Future<
71 Output = Result<(fidl::Clock, fidl_fuchsia_media::AudioStreamType), fidl::Error>,
72 > + Send;
73 fn r#create_capturer(
74 &self,
75 request: fidl::endpoints::ServerEnd<fidl_fuchsia_media::AudioCapturerMarker>,
76 ) -> Self::CreateCapturerResponseFut;
77 type CreateRendererResponseFut: std::future::Future<
78 Output = Result<(fidl::Clock, fidl_fuchsia_media::AudioStreamType), fidl::Error>,
79 > + Send;
80 fn r#create_renderer(
81 &self,
82 renderer: fidl::endpoints::ServerEnd<fidl_fuchsia_media::AudioRendererMarker>,
83 ) -> Self::CreateRendererResponseFut;
84}
85#[derive(Debug)]
86#[cfg(target_os = "fuchsia")]
87pub struct FactorySynchronousProxy {
88 client: fidl::client::sync::Client,
89}
90
91#[cfg(target_os = "fuchsia")]
92impl fidl::endpoints::SynchronousProxy for FactorySynchronousProxy {
93 type Proxy = FactoryProxy;
94 type Protocol = FactoryMarker;
95
96 fn from_channel(inner: fidl::Channel) -> Self {
97 Self::new(inner)
98 }
99
100 fn into_channel(self) -> fidl::Channel {
101 self.client.into_channel()
102 }
103
104 fn as_channel(&self) -> &fidl::Channel {
105 self.client.as_channel()
106 }
107}
108
109#[cfg(target_os = "fuchsia")]
110impl FactorySynchronousProxy {
111 pub fn new(channel: fidl::Channel) -> Self {
112 Self { client: fidl::client::sync::Client::new(channel) }
113 }
114
115 pub fn into_channel(self) -> fidl::Channel {
116 self.client.into_channel()
117 }
118
119 pub fn wait_for_event(
122 &self,
123 deadline: zx::MonotonicInstant,
124 ) -> Result<FactoryEvent, fidl::Error> {
125 FactoryEvent::decode(self.client.wait_for_event::<FactoryMarker>(deadline)?)
126 }
127
128 pub fn r#create_capturer(
149 &self,
150 mut request: fidl::endpoints::ServerEnd<fidl_fuchsia_media::AudioCapturerMarker>,
151 ___deadline: zx::MonotonicInstant,
152 ) -> Result<(fidl::Clock, fidl_fuchsia_media::AudioStreamType), fidl::Error> {
153 let _response = self.client.send_query::<
154 FactoryCreateCapturerRequest,
155 FactoryCreateCapturerResponse,
156 FactoryMarker,
157 >(
158 (request,),
159 0xe8b6e0e27f02115,
160 fidl::encoding::DynamicFlags::empty(),
161 ___deadline,
162 )?;
163 Ok((_response.reference_clock, _response.stream_type))
164 }
165
166 pub fn r#create_renderer(
187 &self,
188 mut renderer: fidl::endpoints::ServerEnd<fidl_fuchsia_media::AudioRendererMarker>,
189 ___deadline: zx::MonotonicInstant,
190 ) -> Result<(fidl::Clock, fidl_fuchsia_media::AudioStreamType), fidl::Error> {
191 let _response = self.client.send_query::<
192 FactoryCreateRendererRequest,
193 FactoryCreateRendererResponse,
194 FactoryMarker,
195 >(
196 (renderer,),
197 0x3ce8fb1897ec7932,
198 fidl::encoding::DynamicFlags::empty(),
199 ___deadline,
200 )?;
201 Ok((_response.reference_clock, _response.stream_type))
202 }
203}
204
205#[cfg(target_os = "fuchsia")]
206impl From<FactorySynchronousProxy> for zx::NullableHandle {
207 fn from(value: FactorySynchronousProxy) -> Self {
208 value.into_channel().into()
209 }
210}
211
212#[cfg(target_os = "fuchsia")]
213impl From<fidl::Channel> for FactorySynchronousProxy {
214 fn from(value: fidl::Channel) -> Self {
215 Self::new(value)
216 }
217}
218
219#[cfg(target_os = "fuchsia")]
220impl fidl::endpoints::FromClient for FactorySynchronousProxy {
221 type Protocol = FactoryMarker;
222
223 fn from_client(value: fidl::endpoints::ClientEnd<FactoryMarker>) -> Self {
224 Self::new(value.into_channel())
225 }
226}
227
228#[derive(Debug, Clone)]
229pub struct FactoryProxy {
230 client: fidl::client::Client<fidl::encoding::DefaultFuchsiaResourceDialect>,
231}
232
233impl fidl::endpoints::Proxy for FactoryProxy {
234 type Protocol = FactoryMarker;
235
236 fn from_channel(inner: ::fidl::AsyncChannel) -> Self {
237 Self::new(inner)
238 }
239
240 fn into_channel(self) -> Result<::fidl::AsyncChannel, Self> {
241 self.client.into_channel().map_err(|client| Self { client })
242 }
243
244 fn as_channel(&self) -> &::fidl::AsyncChannel {
245 self.client.as_channel()
246 }
247}
248
249impl FactoryProxy {
250 pub fn new(channel: ::fidl::AsyncChannel) -> Self {
252 let protocol_name = <FactoryMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
253 Self { client: fidl::client::Client::new(channel, protocol_name) }
254 }
255
256 pub fn take_event_stream(&self) -> FactoryEventStream {
262 FactoryEventStream { event_receiver: self.client.take_event_receiver() }
263 }
264
265 pub fn r#create_capturer(
286 &self,
287 mut request: fidl::endpoints::ServerEnd<fidl_fuchsia_media::AudioCapturerMarker>,
288 ) -> fidl::client::QueryResponseFut<
289 (fidl::Clock, fidl_fuchsia_media::AudioStreamType),
290 fidl::encoding::DefaultFuchsiaResourceDialect,
291 > {
292 FactoryProxyInterface::r#create_capturer(self, request)
293 }
294
295 pub fn r#create_renderer(
316 &self,
317 mut renderer: fidl::endpoints::ServerEnd<fidl_fuchsia_media::AudioRendererMarker>,
318 ) -> fidl::client::QueryResponseFut<
319 (fidl::Clock, fidl_fuchsia_media::AudioStreamType),
320 fidl::encoding::DefaultFuchsiaResourceDialect,
321 > {
322 FactoryProxyInterface::r#create_renderer(self, renderer)
323 }
324}
325
326impl FactoryProxyInterface for FactoryProxy {
327 type CreateCapturerResponseFut = fidl::client::QueryResponseFut<
328 (fidl::Clock, fidl_fuchsia_media::AudioStreamType),
329 fidl::encoding::DefaultFuchsiaResourceDialect,
330 >;
331 fn r#create_capturer(
332 &self,
333 mut request: fidl::endpoints::ServerEnd<fidl_fuchsia_media::AudioCapturerMarker>,
334 ) -> Self::CreateCapturerResponseFut {
335 fn _decode(
336 mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
337 ) -> Result<(fidl::Clock, fidl_fuchsia_media::AudioStreamType), fidl::Error> {
338 let _response = fidl::client::decode_transaction_body::<
339 FactoryCreateCapturerResponse,
340 fidl::encoding::DefaultFuchsiaResourceDialect,
341 0xe8b6e0e27f02115,
342 >(_buf?)?;
343 Ok((_response.reference_clock, _response.stream_type))
344 }
345 self.client.send_query_and_decode::<
346 FactoryCreateCapturerRequest,
347 (fidl::Clock, fidl_fuchsia_media::AudioStreamType),
348 >(
349 (request,),
350 0xe8b6e0e27f02115,
351 fidl::encoding::DynamicFlags::empty(),
352 _decode,
353 )
354 }
355
356 type CreateRendererResponseFut = fidl::client::QueryResponseFut<
357 (fidl::Clock, fidl_fuchsia_media::AudioStreamType),
358 fidl::encoding::DefaultFuchsiaResourceDialect,
359 >;
360 fn r#create_renderer(
361 &self,
362 mut renderer: fidl::endpoints::ServerEnd<fidl_fuchsia_media::AudioRendererMarker>,
363 ) -> Self::CreateRendererResponseFut {
364 fn _decode(
365 mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
366 ) -> Result<(fidl::Clock, fidl_fuchsia_media::AudioStreamType), fidl::Error> {
367 let _response = fidl::client::decode_transaction_body::<
368 FactoryCreateRendererResponse,
369 fidl::encoding::DefaultFuchsiaResourceDialect,
370 0x3ce8fb1897ec7932,
371 >(_buf?)?;
372 Ok((_response.reference_clock, _response.stream_type))
373 }
374 self.client.send_query_and_decode::<
375 FactoryCreateRendererRequest,
376 (fidl::Clock, fidl_fuchsia_media::AudioStreamType),
377 >(
378 (renderer,),
379 0x3ce8fb1897ec7932,
380 fidl::encoding::DynamicFlags::empty(),
381 _decode,
382 )
383 }
384}
385
386pub struct FactoryEventStream {
387 event_receiver: fidl::client::EventReceiver<fidl::encoding::DefaultFuchsiaResourceDialect>,
388}
389
390impl std::marker::Unpin for FactoryEventStream {}
391
392impl futures::stream::FusedStream for FactoryEventStream {
393 fn is_terminated(&self) -> bool {
394 self.event_receiver.is_terminated()
395 }
396}
397
398impl futures::Stream for FactoryEventStream {
399 type Item = Result<FactoryEvent, fidl::Error>;
400
401 fn poll_next(
402 mut self: std::pin::Pin<&mut Self>,
403 cx: &mut std::task::Context<'_>,
404 ) -> std::task::Poll<Option<Self::Item>> {
405 match futures::ready!(futures::stream::StreamExt::poll_next_unpin(
406 &mut self.event_receiver,
407 cx
408 )?) {
409 Some(buf) => std::task::Poll::Ready(Some(FactoryEvent::decode(buf))),
410 None => std::task::Poll::Ready(None),
411 }
412 }
413}
414
415#[derive(Debug)]
416pub enum FactoryEvent {}
417
418impl FactoryEvent {
419 fn decode(
421 mut buf: <fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc,
422 ) -> Result<FactoryEvent, fidl::Error> {
423 let (bytes, _handles) = buf.split_mut();
424 let (tx_header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
425 debug_assert_eq!(tx_header.tx_id, 0);
426 match tx_header.ordinal {
427 _ => Err(fidl::Error::UnknownOrdinal {
428 ordinal: tx_header.ordinal,
429 protocol_name: <FactoryMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
430 }),
431 }
432 }
433}
434
435pub struct FactoryRequestStream {
437 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
438 is_terminated: bool,
439}
440
441impl std::marker::Unpin for FactoryRequestStream {}
442
443impl futures::stream::FusedStream for FactoryRequestStream {
444 fn is_terminated(&self) -> bool {
445 self.is_terminated
446 }
447}
448
449impl fidl::endpoints::RequestStream for FactoryRequestStream {
450 type Protocol = FactoryMarker;
451 type ControlHandle = FactoryControlHandle;
452
453 fn from_channel(channel: ::fidl::AsyncChannel) -> Self {
454 Self { inner: std::sync::Arc::new(fidl::ServeInner::new(channel)), is_terminated: false }
455 }
456
457 fn control_handle(&self) -> Self::ControlHandle {
458 FactoryControlHandle { inner: self.inner.clone() }
459 }
460
461 fn into_inner(
462 self,
463 ) -> (::std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>, bool)
464 {
465 (self.inner, self.is_terminated)
466 }
467
468 fn from_inner(
469 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
470 is_terminated: bool,
471 ) -> Self {
472 Self { inner, is_terminated }
473 }
474}
475
476impl futures::Stream for FactoryRequestStream {
477 type Item = Result<FactoryRequest, fidl::Error>;
478
479 fn poll_next(
480 mut self: std::pin::Pin<&mut Self>,
481 cx: &mut std::task::Context<'_>,
482 ) -> std::task::Poll<Option<Self::Item>> {
483 let this = &mut *self;
484 if this.inner.check_shutdown(cx) {
485 this.is_terminated = true;
486 return std::task::Poll::Ready(None);
487 }
488 if this.is_terminated {
489 panic!("polled FactoryRequestStream after completion");
490 }
491 fidl::encoding::with_tls_decode_buf::<_, fidl::encoding::DefaultFuchsiaResourceDialect>(
492 |bytes, handles| {
493 match this.inner.channel().read_etc(cx, bytes, handles) {
494 std::task::Poll::Ready(Ok(())) => {}
495 std::task::Poll::Pending => return std::task::Poll::Pending,
496 std::task::Poll::Ready(Err(zx_status::Status::PEER_CLOSED)) => {
497 this.is_terminated = true;
498 return std::task::Poll::Ready(None);
499 }
500 std::task::Poll::Ready(Err(e)) => {
501 return std::task::Poll::Ready(Some(Err(fidl::Error::ServerRequestRead(
502 e.into(),
503 ))));
504 }
505 }
506
507 let (header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
509
510 std::task::Poll::Ready(Some(match header.ordinal {
511 0xe8b6e0e27f02115 => {
512 header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
513 let mut req = fidl::new_empty!(
514 FactoryCreateCapturerRequest,
515 fidl::encoding::DefaultFuchsiaResourceDialect
516 );
517 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<FactoryCreateCapturerRequest>(&header, _body_bytes, handles, &mut req)?;
518 let control_handle = FactoryControlHandle { inner: this.inner.clone() };
519 Ok(FactoryRequest::CreateCapturer {
520 request: req.request,
521
522 responder: FactoryCreateCapturerResponder {
523 control_handle: std::mem::ManuallyDrop::new(control_handle),
524 tx_id: header.tx_id,
525 },
526 })
527 }
528 0x3ce8fb1897ec7932 => {
529 header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
530 let mut req = fidl::new_empty!(
531 FactoryCreateRendererRequest,
532 fidl::encoding::DefaultFuchsiaResourceDialect
533 );
534 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<FactoryCreateRendererRequest>(&header, _body_bytes, handles, &mut req)?;
535 let control_handle = FactoryControlHandle { inner: this.inner.clone() };
536 Ok(FactoryRequest::CreateRenderer {
537 renderer: req.renderer,
538
539 responder: FactoryCreateRendererResponder {
540 control_handle: std::mem::ManuallyDrop::new(control_handle),
541 tx_id: header.tx_id,
542 },
543 })
544 }
545 _ => Err(fidl::Error::UnknownOrdinal {
546 ordinal: header.ordinal,
547 protocol_name:
548 <FactoryMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
549 }),
550 }))
551 },
552 )
553 }
554}
555
556#[derive(Debug)]
557pub enum FactoryRequest {
558 CreateCapturer {
579 request: fidl::endpoints::ServerEnd<fidl_fuchsia_media::AudioCapturerMarker>,
580 responder: FactoryCreateCapturerResponder,
581 },
582 CreateRenderer {
603 renderer: fidl::endpoints::ServerEnd<fidl_fuchsia_media::AudioRendererMarker>,
604 responder: FactoryCreateRendererResponder,
605 },
606}
607
608impl FactoryRequest {
609 #[allow(irrefutable_let_patterns)]
610 pub fn into_create_capturer(
611 self,
612 ) -> Option<(
613 fidl::endpoints::ServerEnd<fidl_fuchsia_media::AudioCapturerMarker>,
614 FactoryCreateCapturerResponder,
615 )> {
616 if let FactoryRequest::CreateCapturer { request, responder } = self {
617 Some((request, responder))
618 } else {
619 None
620 }
621 }
622
623 #[allow(irrefutable_let_patterns)]
624 pub fn into_create_renderer(
625 self,
626 ) -> Option<(
627 fidl::endpoints::ServerEnd<fidl_fuchsia_media::AudioRendererMarker>,
628 FactoryCreateRendererResponder,
629 )> {
630 if let FactoryRequest::CreateRenderer { renderer, responder } = self {
631 Some((renderer, responder))
632 } else {
633 None
634 }
635 }
636
637 pub fn method_name(&self) -> &'static str {
639 match *self {
640 FactoryRequest::CreateCapturer { .. } => "create_capturer",
641 FactoryRequest::CreateRenderer { .. } => "create_renderer",
642 }
643 }
644}
645
646#[derive(Debug, Clone)]
647pub struct FactoryControlHandle {
648 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
649}
650
651impl FactoryControlHandle {
652 pub fn shutdown_with_epitaph(&self, status: impl Into<fidl::Epitaph>) {
653 self.inner.shutdown_with_epitaph(status.into())
654 }
655}
656
657impl fidl::endpoints::ControlHandle for FactoryControlHandle {
658 fn shutdown(&self) {
659 self.inner.shutdown()
660 }
661
662 fn shutdown_with_epitaph(&self, status: fidl::Epitaph) {
663 self.inner.shutdown_with_epitaph(status)
664 }
665
666 fn is_closed(&self) -> bool {
667 self.inner.channel().is_closed()
668 }
669 fn on_closed(&self) -> fidl::OnSignalsRef<'_> {
670 self.inner.channel().on_closed()
671 }
672
673 #[cfg(target_os = "fuchsia")]
674 fn signal_peer(
675 &self,
676 clear_mask: zx::Signals,
677 set_mask: zx::Signals,
678 ) -> Result<(), zx_status::Status> {
679 use fidl::Peered;
680 self.inner.channel().signal_peer(clear_mask, set_mask)
681 }
682}
683
684impl FactoryControlHandle {}
685
686#[must_use = "FIDL methods require a response to be sent"]
687#[derive(Debug)]
688pub struct FactoryCreateCapturerResponder {
689 control_handle: std::mem::ManuallyDrop<FactoryControlHandle>,
690 tx_id: u32,
691}
692
693impl std::ops::Drop for FactoryCreateCapturerResponder {
697 fn drop(&mut self) {
698 self.control_handle.shutdown();
699 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
701 }
702}
703
704impl fidl::endpoints::Responder for FactoryCreateCapturerResponder {
705 type ControlHandle = FactoryControlHandle;
706
707 fn control_handle(&self) -> &FactoryControlHandle {
708 &self.control_handle
709 }
710
711 fn drop_without_shutdown(mut self) {
712 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
714 std::mem::forget(self);
716 }
717}
718
719impl FactoryCreateCapturerResponder {
720 pub fn send(
724 self,
725 mut reference_clock: fidl::Clock,
726 mut stream_type: &fidl_fuchsia_media::AudioStreamType,
727 ) -> Result<(), fidl::Error> {
728 let _result = self.send_raw(reference_clock, stream_type);
729 if _result.is_err() {
730 self.control_handle.shutdown();
731 }
732 self.drop_without_shutdown();
733 _result
734 }
735
736 pub fn send_no_shutdown_on_err(
738 self,
739 mut reference_clock: fidl::Clock,
740 mut stream_type: &fidl_fuchsia_media::AudioStreamType,
741 ) -> Result<(), fidl::Error> {
742 let _result = self.send_raw(reference_clock, stream_type);
743 self.drop_without_shutdown();
744 _result
745 }
746
747 fn send_raw(
748 &self,
749 mut reference_clock: fidl::Clock,
750 mut stream_type: &fidl_fuchsia_media::AudioStreamType,
751 ) -> Result<(), fidl::Error> {
752 self.control_handle.inner.send::<FactoryCreateCapturerResponse>(
753 (reference_clock, stream_type),
754 self.tx_id,
755 0xe8b6e0e27f02115,
756 fidl::encoding::DynamicFlags::empty(),
757 )
758 }
759}
760
761#[must_use = "FIDL methods require a response to be sent"]
762#[derive(Debug)]
763pub struct FactoryCreateRendererResponder {
764 control_handle: std::mem::ManuallyDrop<FactoryControlHandle>,
765 tx_id: u32,
766}
767
768impl std::ops::Drop for FactoryCreateRendererResponder {
772 fn drop(&mut self) {
773 self.control_handle.shutdown();
774 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
776 }
777}
778
779impl fidl::endpoints::Responder for FactoryCreateRendererResponder {
780 type ControlHandle = FactoryControlHandle;
781
782 fn control_handle(&self) -> &FactoryControlHandle {
783 &self.control_handle
784 }
785
786 fn drop_without_shutdown(mut self) {
787 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
789 std::mem::forget(self);
791 }
792}
793
794impl FactoryCreateRendererResponder {
795 pub fn send(
799 self,
800 mut reference_clock: fidl::Clock,
801 mut stream_type: &fidl_fuchsia_media::AudioStreamType,
802 ) -> Result<(), fidl::Error> {
803 let _result = self.send_raw(reference_clock, stream_type);
804 if _result.is_err() {
805 self.control_handle.shutdown();
806 }
807 self.drop_without_shutdown();
808 _result
809 }
810
811 pub fn send_no_shutdown_on_err(
813 self,
814 mut reference_clock: fidl::Clock,
815 mut stream_type: &fidl_fuchsia_media::AudioStreamType,
816 ) -> Result<(), fidl::Error> {
817 let _result = self.send_raw(reference_clock, stream_type);
818 self.drop_without_shutdown();
819 _result
820 }
821
822 fn send_raw(
823 &self,
824 mut reference_clock: fidl::Clock,
825 mut stream_type: &fidl_fuchsia_media::AudioStreamType,
826 ) -> Result<(), fidl::Error> {
827 self.control_handle.inner.send::<FactoryCreateRendererResponse>(
828 (reference_clock, stream_type),
829 self.tx_id,
830 0x3ce8fb1897ec7932,
831 fidl::encoding::DynamicFlags::empty(),
832 )
833 }
834}
835
836mod internal {
837 use super::*;
838
839 impl fidl::encoding::ResourceTypeMarker for FactoryCreateCapturerRequest {
840 type Borrowed<'a> = &'a mut Self;
841 fn take_or_borrow<'a>(
842 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
843 ) -> Self::Borrowed<'a> {
844 value
845 }
846 }
847
848 unsafe impl fidl::encoding::TypeMarker for FactoryCreateCapturerRequest {
849 type Owned = Self;
850
851 #[inline(always)]
852 fn inline_align(_context: fidl::encoding::Context) -> usize {
853 4
854 }
855
856 #[inline(always)]
857 fn inline_size(_context: fidl::encoding::Context) -> usize {
858 4
859 }
860 }
861
862 unsafe impl
863 fidl::encoding::Encode<
864 FactoryCreateCapturerRequest,
865 fidl::encoding::DefaultFuchsiaResourceDialect,
866 > for &mut FactoryCreateCapturerRequest
867 {
868 #[inline]
869 unsafe fn encode(
870 self,
871 encoder: &mut fidl::encoding::Encoder<
872 '_,
873 fidl::encoding::DefaultFuchsiaResourceDialect,
874 >,
875 offset: usize,
876 _depth: fidl::encoding::Depth,
877 ) -> fidl::Result<()> {
878 encoder.debug_check_bounds::<FactoryCreateCapturerRequest>(offset);
879 fidl::encoding::Encode::<
881 FactoryCreateCapturerRequest,
882 fidl::encoding::DefaultFuchsiaResourceDialect,
883 >::encode(
884 (<fidl::encoding::Endpoint<
885 fidl::endpoints::ServerEnd<fidl_fuchsia_media::AudioCapturerMarker>,
886 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow(
887 &mut self.request
888 ),),
889 encoder,
890 offset,
891 _depth,
892 )
893 }
894 }
895 unsafe impl<
896 T0: fidl::encoding::Encode<
897 fidl::encoding::Endpoint<
898 fidl::endpoints::ServerEnd<fidl_fuchsia_media::AudioCapturerMarker>,
899 >,
900 fidl::encoding::DefaultFuchsiaResourceDialect,
901 >,
902 >
903 fidl::encoding::Encode<
904 FactoryCreateCapturerRequest,
905 fidl::encoding::DefaultFuchsiaResourceDialect,
906 > for (T0,)
907 {
908 #[inline]
909 unsafe fn encode(
910 self,
911 encoder: &mut fidl::encoding::Encoder<
912 '_,
913 fidl::encoding::DefaultFuchsiaResourceDialect,
914 >,
915 offset: usize,
916 depth: fidl::encoding::Depth,
917 ) -> fidl::Result<()> {
918 encoder.debug_check_bounds::<FactoryCreateCapturerRequest>(offset);
919 self.0.encode(encoder, offset + 0, depth)?;
923 Ok(())
924 }
925 }
926
927 impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
928 for FactoryCreateCapturerRequest
929 {
930 #[inline(always)]
931 fn new_empty() -> Self {
932 Self {
933 request: fidl::new_empty!(
934 fidl::encoding::Endpoint<
935 fidl::endpoints::ServerEnd<fidl_fuchsia_media::AudioCapturerMarker>,
936 >,
937 fidl::encoding::DefaultFuchsiaResourceDialect
938 ),
939 }
940 }
941
942 #[inline]
943 unsafe fn decode(
944 &mut self,
945 decoder: &mut fidl::encoding::Decoder<
946 '_,
947 fidl::encoding::DefaultFuchsiaResourceDialect,
948 >,
949 offset: usize,
950 _depth: fidl::encoding::Depth,
951 ) -> fidl::Result<()> {
952 decoder.debug_check_bounds::<Self>(offset);
953 fidl::decode!(
955 fidl::encoding::Endpoint<
956 fidl::endpoints::ServerEnd<fidl_fuchsia_media::AudioCapturerMarker>,
957 >,
958 fidl::encoding::DefaultFuchsiaResourceDialect,
959 &mut self.request,
960 decoder,
961 offset + 0,
962 _depth
963 )?;
964 Ok(())
965 }
966 }
967
968 impl fidl::encoding::ResourceTypeMarker for FactoryCreateCapturerResponse {
969 type Borrowed<'a> = &'a mut Self;
970 fn take_or_borrow<'a>(
971 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
972 ) -> Self::Borrowed<'a> {
973 value
974 }
975 }
976
977 unsafe impl fidl::encoding::TypeMarker for FactoryCreateCapturerResponse {
978 type Owned = Self;
979
980 #[inline(always)]
981 fn inline_align(_context: fidl::encoding::Context) -> usize {
982 4
983 }
984
985 #[inline(always)]
986 fn inline_size(_context: fidl::encoding::Context) -> usize {
987 16
988 }
989 }
990
991 unsafe impl
992 fidl::encoding::Encode<
993 FactoryCreateCapturerResponse,
994 fidl::encoding::DefaultFuchsiaResourceDialect,
995 > for &mut FactoryCreateCapturerResponse
996 {
997 #[inline]
998 unsafe fn encode(
999 self,
1000 encoder: &mut fidl::encoding::Encoder<
1001 '_,
1002 fidl::encoding::DefaultFuchsiaResourceDialect,
1003 >,
1004 offset: usize,
1005 _depth: fidl::encoding::Depth,
1006 ) -> fidl::Result<()> {
1007 encoder.debug_check_bounds::<FactoryCreateCapturerResponse>(offset);
1008 fidl::encoding::Encode::<FactoryCreateCapturerResponse, fidl::encoding::DefaultFuchsiaResourceDialect>::encode(
1010 (
1011 <fidl::encoding::HandleType<fidl::Clock, { fidl::ObjectType::CLOCK.into_raw() }, 2147483648> as fidl::encoding::ResourceTypeMarker>::take_or_borrow(&mut self.reference_clock),
1012 <fidl_fuchsia_media::AudioStreamType as fidl::encoding::ValueTypeMarker>::borrow(&self.stream_type),
1013 ),
1014 encoder, offset, _depth
1015 )
1016 }
1017 }
1018 unsafe impl<
1019 T0: fidl::encoding::Encode<
1020 fidl::encoding::HandleType<
1021 fidl::Clock,
1022 { fidl::ObjectType::CLOCK.into_raw() },
1023 2147483648,
1024 >,
1025 fidl::encoding::DefaultFuchsiaResourceDialect,
1026 >,
1027 T1: fidl::encoding::Encode<
1028 fidl_fuchsia_media::AudioStreamType,
1029 fidl::encoding::DefaultFuchsiaResourceDialect,
1030 >,
1031 >
1032 fidl::encoding::Encode<
1033 FactoryCreateCapturerResponse,
1034 fidl::encoding::DefaultFuchsiaResourceDialect,
1035 > for (T0, T1)
1036 {
1037 #[inline]
1038 unsafe fn encode(
1039 self,
1040 encoder: &mut fidl::encoding::Encoder<
1041 '_,
1042 fidl::encoding::DefaultFuchsiaResourceDialect,
1043 >,
1044 offset: usize,
1045 depth: fidl::encoding::Depth,
1046 ) -> fidl::Result<()> {
1047 encoder.debug_check_bounds::<FactoryCreateCapturerResponse>(offset);
1048 self.0.encode(encoder, offset + 0, depth)?;
1052 self.1.encode(encoder, offset + 4, depth)?;
1053 Ok(())
1054 }
1055 }
1056
1057 impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
1058 for FactoryCreateCapturerResponse
1059 {
1060 #[inline(always)]
1061 fn new_empty() -> Self {
1062 Self {
1063 reference_clock: fidl::new_empty!(fidl::encoding::HandleType<fidl::Clock, { fidl::ObjectType::CLOCK.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect),
1064 stream_type: fidl::new_empty!(
1065 fidl_fuchsia_media::AudioStreamType,
1066 fidl::encoding::DefaultFuchsiaResourceDialect
1067 ),
1068 }
1069 }
1070
1071 #[inline]
1072 unsafe fn decode(
1073 &mut self,
1074 decoder: &mut fidl::encoding::Decoder<
1075 '_,
1076 fidl::encoding::DefaultFuchsiaResourceDialect,
1077 >,
1078 offset: usize,
1079 _depth: fidl::encoding::Depth,
1080 ) -> fidl::Result<()> {
1081 decoder.debug_check_bounds::<Self>(offset);
1082 fidl::decode!(fidl::encoding::HandleType<fidl::Clock, { fidl::ObjectType::CLOCK.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect, &mut self.reference_clock, decoder, offset + 0, _depth)?;
1084 fidl::decode!(
1085 fidl_fuchsia_media::AudioStreamType,
1086 fidl::encoding::DefaultFuchsiaResourceDialect,
1087 &mut self.stream_type,
1088 decoder,
1089 offset + 4,
1090 _depth
1091 )?;
1092 Ok(())
1093 }
1094 }
1095
1096 impl fidl::encoding::ResourceTypeMarker for FactoryCreateRendererRequest {
1097 type Borrowed<'a> = &'a mut Self;
1098 fn take_or_borrow<'a>(
1099 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
1100 ) -> Self::Borrowed<'a> {
1101 value
1102 }
1103 }
1104
1105 unsafe impl fidl::encoding::TypeMarker for FactoryCreateRendererRequest {
1106 type Owned = Self;
1107
1108 #[inline(always)]
1109 fn inline_align(_context: fidl::encoding::Context) -> usize {
1110 4
1111 }
1112
1113 #[inline(always)]
1114 fn inline_size(_context: fidl::encoding::Context) -> usize {
1115 4
1116 }
1117 }
1118
1119 unsafe impl
1120 fidl::encoding::Encode<
1121 FactoryCreateRendererRequest,
1122 fidl::encoding::DefaultFuchsiaResourceDialect,
1123 > for &mut FactoryCreateRendererRequest
1124 {
1125 #[inline]
1126 unsafe fn encode(
1127 self,
1128 encoder: &mut fidl::encoding::Encoder<
1129 '_,
1130 fidl::encoding::DefaultFuchsiaResourceDialect,
1131 >,
1132 offset: usize,
1133 _depth: fidl::encoding::Depth,
1134 ) -> fidl::Result<()> {
1135 encoder.debug_check_bounds::<FactoryCreateRendererRequest>(offset);
1136 fidl::encoding::Encode::<
1138 FactoryCreateRendererRequest,
1139 fidl::encoding::DefaultFuchsiaResourceDialect,
1140 >::encode(
1141 (<fidl::encoding::Endpoint<
1142 fidl::endpoints::ServerEnd<fidl_fuchsia_media::AudioRendererMarker>,
1143 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow(
1144 &mut self.renderer
1145 ),),
1146 encoder,
1147 offset,
1148 _depth,
1149 )
1150 }
1151 }
1152 unsafe impl<
1153 T0: fidl::encoding::Encode<
1154 fidl::encoding::Endpoint<
1155 fidl::endpoints::ServerEnd<fidl_fuchsia_media::AudioRendererMarker>,
1156 >,
1157 fidl::encoding::DefaultFuchsiaResourceDialect,
1158 >,
1159 >
1160 fidl::encoding::Encode<
1161 FactoryCreateRendererRequest,
1162 fidl::encoding::DefaultFuchsiaResourceDialect,
1163 > for (T0,)
1164 {
1165 #[inline]
1166 unsafe fn encode(
1167 self,
1168 encoder: &mut fidl::encoding::Encoder<
1169 '_,
1170 fidl::encoding::DefaultFuchsiaResourceDialect,
1171 >,
1172 offset: usize,
1173 depth: fidl::encoding::Depth,
1174 ) -> fidl::Result<()> {
1175 encoder.debug_check_bounds::<FactoryCreateRendererRequest>(offset);
1176 self.0.encode(encoder, offset + 0, depth)?;
1180 Ok(())
1181 }
1182 }
1183
1184 impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
1185 for FactoryCreateRendererRequest
1186 {
1187 #[inline(always)]
1188 fn new_empty() -> Self {
1189 Self {
1190 renderer: fidl::new_empty!(
1191 fidl::encoding::Endpoint<
1192 fidl::endpoints::ServerEnd<fidl_fuchsia_media::AudioRendererMarker>,
1193 >,
1194 fidl::encoding::DefaultFuchsiaResourceDialect
1195 ),
1196 }
1197 }
1198
1199 #[inline]
1200 unsafe fn decode(
1201 &mut self,
1202 decoder: &mut fidl::encoding::Decoder<
1203 '_,
1204 fidl::encoding::DefaultFuchsiaResourceDialect,
1205 >,
1206 offset: usize,
1207 _depth: fidl::encoding::Depth,
1208 ) -> fidl::Result<()> {
1209 decoder.debug_check_bounds::<Self>(offset);
1210 fidl::decode!(
1212 fidl::encoding::Endpoint<
1213 fidl::endpoints::ServerEnd<fidl_fuchsia_media::AudioRendererMarker>,
1214 >,
1215 fidl::encoding::DefaultFuchsiaResourceDialect,
1216 &mut self.renderer,
1217 decoder,
1218 offset + 0,
1219 _depth
1220 )?;
1221 Ok(())
1222 }
1223 }
1224
1225 impl fidl::encoding::ResourceTypeMarker for FactoryCreateRendererResponse {
1226 type Borrowed<'a> = &'a mut Self;
1227 fn take_or_borrow<'a>(
1228 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
1229 ) -> Self::Borrowed<'a> {
1230 value
1231 }
1232 }
1233
1234 unsafe impl fidl::encoding::TypeMarker for FactoryCreateRendererResponse {
1235 type Owned = Self;
1236
1237 #[inline(always)]
1238 fn inline_align(_context: fidl::encoding::Context) -> usize {
1239 4
1240 }
1241
1242 #[inline(always)]
1243 fn inline_size(_context: fidl::encoding::Context) -> usize {
1244 16
1245 }
1246 }
1247
1248 unsafe impl
1249 fidl::encoding::Encode<
1250 FactoryCreateRendererResponse,
1251 fidl::encoding::DefaultFuchsiaResourceDialect,
1252 > for &mut FactoryCreateRendererResponse
1253 {
1254 #[inline]
1255 unsafe fn encode(
1256 self,
1257 encoder: &mut fidl::encoding::Encoder<
1258 '_,
1259 fidl::encoding::DefaultFuchsiaResourceDialect,
1260 >,
1261 offset: usize,
1262 _depth: fidl::encoding::Depth,
1263 ) -> fidl::Result<()> {
1264 encoder.debug_check_bounds::<FactoryCreateRendererResponse>(offset);
1265 fidl::encoding::Encode::<FactoryCreateRendererResponse, fidl::encoding::DefaultFuchsiaResourceDialect>::encode(
1267 (
1268 <fidl::encoding::HandleType<fidl::Clock, { fidl::ObjectType::CLOCK.into_raw() }, 2147483648> as fidl::encoding::ResourceTypeMarker>::take_or_borrow(&mut self.reference_clock),
1269 <fidl_fuchsia_media::AudioStreamType as fidl::encoding::ValueTypeMarker>::borrow(&self.stream_type),
1270 ),
1271 encoder, offset, _depth
1272 )
1273 }
1274 }
1275 unsafe impl<
1276 T0: fidl::encoding::Encode<
1277 fidl::encoding::HandleType<
1278 fidl::Clock,
1279 { fidl::ObjectType::CLOCK.into_raw() },
1280 2147483648,
1281 >,
1282 fidl::encoding::DefaultFuchsiaResourceDialect,
1283 >,
1284 T1: fidl::encoding::Encode<
1285 fidl_fuchsia_media::AudioStreamType,
1286 fidl::encoding::DefaultFuchsiaResourceDialect,
1287 >,
1288 >
1289 fidl::encoding::Encode<
1290 FactoryCreateRendererResponse,
1291 fidl::encoding::DefaultFuchsiaResourceDialect,
1292 > for (T0, T1)
1293 {
1294 #[inline]
1295 unsafe fn encode(
1296 self,
1297 encoder: &mut fidl::encoding::Encoder<
1298 '_,
1299 fidl::encoding::DefaultFuchsiaResourceDialect,
1300 >,
1301 offset: usize,
1302 depth: fidl::encoding::Depth,
1303 ) -> fidl::Result<()> {
1304 encoder.debug_check_bounds::<FactoryCreateRendererResponse>(offset);
1305 self.0.encode(encoder, offset + 0, depth)?;
1309 self.1.encode(encoder, offset + 4, depth)?;
1310 Ok(())
1311 }
1312 }
1313
1314 impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
1315 for FactoryCreateRendererResponse
1316 {
1317 #[inline(always)]
1318 fn new_empty() -> Self {
1319 Self {
1320 reference_clock: fidl::new_empty!(fidl::encoding::HandleType<fidl::Clock, { fidl::ObjectType::CLOCK.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect),
1321 stream_type: fidl::new_empty!(
1322 fidl_fuchsia_media::AudioStreamType,
1323 fidl::encoding::DefaultFuchsiaResourceDialect
1324 ),
1325 }
1326 }
1327
1328 #[inline]
1329 unsafe fn decode(
1330 &mut self,
1331 decoder: &mut fidl::encoding::Decoder<
1332 '_,
1333 fidl::encoding::DefaultFuchsiaResourceDialect,
1334 >,
1335 offset: usize,
1336 _depth: fidl::encoding::Depth,
1337 ) -> fidl::Result<()> {
1338 decoder.debug_check_bounds::<Self>(offset);
1339 fidl::decode!(fidl::encoding::HandleType<fidl::Clock, { fidl::ObjectType::CLOCK.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect, &mut self.reference_clock, decoder, offset + 0, _depth)?;
1341 fidl::decode!(
1342 fidl_fuchsia_media::AudioStreamType,
1343 fidl::encoding::DefaultFuchsiaResourceDialect,
1344 &mut self.stream_type,
1345 decoder,
1346 offset + 4,
1347 _depth
1348 )?;
1349 Ok(())
1350 }
1351 }
1352}