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 fidl::endpoints::ControlHandle for FactoryControlHandle {
652 fn shutdown(&self) {
653 self.inner.shutdown()
654 }
655
656 fn shutdown_with_epitaph(&self, status: zx_status::Status) {
657 self.inner.shutdown_with_epitaph(status)
658 }
659
660 fn is_closed(&self) -> bool {
661 self.inner.channel().is_closed()
662 }
663 fn on_closed(&self) -> fidl::OnSignalsRef<'_> {
664 self.inner.channel().on_closed()
665 }
666
667 #[cfg(target_os = "fuchsia")]
668 fn signal_peer(
669 &self,
670 clear_mask: zx::Signals,
671 set_mask: zx::Signals,
672 ) -> Result<(), zx_status::Status> {
673 use fidl::Peered;
674 self.inner.channel().signal_peer(clear_mask, set_mask)
675 }
676}
677
678impl FactoryControlHandle {}
679
680#[must_use = "FIDL methods require a response to be sent"]
681#[derive(Debug)]
682pub struct FactoryCreateCapturerResponder {
683 control_handle: std::mem::ManuallyDrop<FactoryControlHandle>,
684 tx_id: u32,
685}
686
687impl std::ops::Drop for FactoryCreateCapturerResponder {
691 fn drop(&mut self) {
692 self.control_handle.shutdown();
693 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
695 }
696}
697
698impl fidl::endpoints::Responder for FactoryCreateCapturerResponder {
699 type ControlHandle = FactoryControlHandle;
700
701 fn control_handle(&self) -> &FactoryControlHandle {
702 &self.control_handle
703 }
704
705 fn drop_without_shutdown(mut self) {
706 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
708 std::mem::forget(self);
710 }
711}
712
713impl FactoryCreateCapturerResponder {
714 pub fn send(
718 self,
719 mut reference_clock: fidl::Clock,
720 mut stream_type: &fidl_fuchsia_media::AudioStreamType,
721 ) -> Result<(), fidl::Error> {
722 let _result = self.send_raw(reference_clock, stream_type);
723 if _result.is_err() {
724 self.control_handle.shutdown();
725 }
726 self.drop_without_shutdown();
727 _result
728 }
729
730 pub fn send_no_shutdown_on_err(
732 self,
733 mut reference_clock: fidl::Clock,
734 mut stream_type: &fidl_fuchsia_media::AudioStreamType,
735 ) -> Result<(), fidl::Error> {
736 let _result = self.send_raw(reference_clock, stream_type);
737 self.drop_without_shutdown();
738 _result
739 }
740
741 fn send_raw(
742 &self,
743 mut reference_clock: fidl::Clock,
744 mut stream_type: &fidl_fuchsia_media::AudioStreamType,
745 ) -> Result<(), fidl::Error> {
746 self.control_handle.inner.send::<FactoryCreateCapturerResponse>(
747 (reference_clock, stream_type),
748 self.tx_id,
749 0xe8b6e0e27f02115,
750 fidl::encoding::DynamicFlags::empty(),
751 )
752 }
753}
754
755#[must_use = "FIDL methods require a response to be sent"]
756#[derive(Debug)]
757pub struct FactoryCreateRendererResponder {
758 control_handle: std::mem::ManuallyDrop<FactoryControlHandle>,
759 tx_id: u32,
760}
761
762impl std::ops::Drop for FactoryCreateRendererResponder {
766 fn drop(&mut self) {
767 self.control_handle.shutdown();
768 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
770 }
771}
772
773impl fidl::endpoints::Responder for FactoryCreateRendererResponder {
774 type ControlHandle = FactoryControlHandle;
775
776 fn control_handle(&self) -> &FactoryControlHandle {
777 &self.control_handle
778 }
779
780 fn drop_without_shutdown(mut self) {
781 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
783 std::mem::forget(self);
785 }
786}
787
788impl FactoryCreateRendererResponder {
789 pub fn send(
793 self,
794 mut reference_clock: fidl::Clock,
795 mut stream_type: &fidl_fuchsia_media::AudioStreamType,
796 ) -> Result<(), fidl::Error> {
797 let _result = self.send_raw(reference_clock, stream_type);
798 if _result.is_err() {
799 self.control_handle.shutdown();
800 }
801 self.drop_without_shutdown();
802 _result
803 }
804
805 pub fn send_no_shutdown_on_err(
807 self,
808 mut reference_clock: fidl::Clock,
809 mut stream_type: &fidl_fuchsia_media::AudioStreamType,
810 ) -> Result<(), fidl::Error> {
811 let _result = self.send_raw(reference_clock, stream_type);
812 self.drop_without_shutdown();
813 _result
814 }
815
816 fn send_raw(
817 &self,
818 mut reference_clock: fidl::Clock,
819 mut stream_type: &fidl_fuchsia_media::AudioStreamType,
820 ) -> Result<(), fidl::Error> {
821 self.control_handle.inner.send::<FactoryCreateRendererResponse>(
822 (reference_clock, stream_type),
823 self.tx_id,
824 0x3ce8fb1897ec7932,
825 fidl::encoding::DynamicFlags::empty(),
826 )
827 }
828}
829
830mod internal {
831 use super::*;
832
833 impl fidl::encoding::ResourceTypeMarker for FactoryCreateCapturerRequest {
834 type Borrowed<'a> = &'a mut Self;
835 fn take_or_borrow<'a>(
836 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
837 ) -> Self::Borrowed<'a> {
838 value
839 }
840 }
841
842 unsafe impl fidl::encoding::TypeMarker for FactoryCreateCapturerRequest {
843 type Owned = Self;
844
845 #[inline(always)]
846 fn inline_align(_context: fidl::encoding::Context) -> usize {
847 4
848 }
849
850 #[inline(always)]
851 fn inline_size(_context: fidl::encoding::Context) -> usize {
852 4
853 }
854 }
855
856 unsafe impl
857 fidl::encoding::Encode<
858 FactoryCreateCapturerRequest,
859 fidl::encoding::DefaultFuchsiaResourceDialect,
860 > for &mut FactoryCreateCapturerRequest
861 {
862 #[inline]
863 unsafe fn encode(
864 self,
865 encoder: &mut fidl::encoding::Encoder<
866 '_,
867 fidl::encoding::DefaultFuchsiaResourceDialect,
868 >,
869 offset: usize,
870 _depth: fidl::encoding::Depth,
871 ) -> fidl::Result<()> {
872 encoder.debug_check_bounds::<FactoryCreateCapturerRequest>(offset);
873 fidl::encoding::Encode::<
875 FactoryCreateCapturerRequest,
876 fidl::encoding::DefaultFuchsiaResourceDialect,
877 >::encode(
878 (<fidl::encoding::Endpoint<
879 fidl::endpoints::ServerEnd<fidl_fuchsia_media::AudioCapturerMarker>,
880 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow(
881 &mut self.request
882 ),),
883 encoder,
884 offset,
885 _depth,
886 )
887 }
888 }
889 unsafe impl<
890 T0: fidl::encoding::Encode<
891 fidl::encoding::Endpoint<
892 fidl::endpoints::ServerEnd<fidl_fuchsia_media::AudioCapturerMarker>,
893 >,
894 fidl::encoding::DefaultFuchsiaResourceDialect,
895 >,
896 >
897 fidl::encoding::Encode<
898 FactoryCreateCapturerRequest,
899 fidl::encoding::DefaultFuchsiaResourceDialect,
900 > for (T0,)
901 {
902 #[inline]
903 unsafe fn encode(
904 self,
905 encoder: &mut fidl::encoding::Encoder<
906 '_,
907 fidl::encoding::DefaultFuchsiaResourceDialect,
908 >,
909 offset: usize,
910 depth: fidl::encoding::Depth,
911 ) -> fidl::Result<()> {
912 encoder.debug_check_bounds::<FactoryCreateCapturerRequest>(offset);
913 self.0.encode(encoder, offset + 0, depth)?;
917 Ok(())
918 }
919 }
920
921 impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
922 for FactoryCreateCapturerRequest
923 {
924 #[inline(always)]
925 fn new_empty() -> Self {
926 Self {
927 request: fidl::new_empty!(
928 fidl::encoding::Endpoint<
929 fidl::endpoints::ServerEnd<fidl_fuchsia_media::AudioCapturerMarker>,
930 >,
931 fidl::encoding::DefaultFuchsiaResourceDialect
932 ),
933 }
934 }
935
936 #[inline]
937 unsafe fn decode(
938 &mut self,
939 decoder: &mut fidl::encoding::Decoder<
940 '_,
941 fidl::encoding::DefaultFuchsiaResourceDialect,
942 >,
943 offset: usize,
944 _depth: fidl::encoding::Depth,
945 ) -> fidl::Result<()> {
946 decoder.debug_check_bounds::<Self>(offset);
947 fidl::decode!(
949 fidl::encoding::Endpoint<
950 fidl::endpoints::ServerEnd<fidl_fuchsia_media::AudioCapturerMarker>,
951 >,
952 fidl::encoding::DefaultFuchsiaResourceDialect,
953 &mut self.request,
954 decoder,
955 offset + 0,
956 _depth
957 )?;
958 Ok(())
959 }
960 }
961
962 impl fidl::encoding::ResourceTypeMarker for FactoryCreateCapturerResponse {
963 type Borrowed<'a> = &'a mut Self;
964 fn take_or_borrow<'a>(
965 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
966 ) -> Self::Borrowed<'a> {
967 value
968 }
969 }
970
971 unsafe impl fidl::encoding::TypeMarker for FactoryCreateCapturerResponse {
972 type Owned = Self;
973
974 #[inline(always)]
975 fn inline_align(_context: fidl::encoding::Context) -> usize {
976 4
977 }
978
979 #[inline(always)]
980 fn inline_size(_context: fidl::encoding::Context) -> usize {
981 16
982 }
983 }
984
985 unsafe impl
986 fidl::encoding::Encode<
987 FactoryCreateCapturerResponse,
988 fidl::encoding::DefaultFuchsiaResourceDialect,
989 > for &mut FactoryCreateCapturerResponse
990 {
991 #[inline]
992 unsafe fn encode(
993 self,
994 encoder: &mut fidl::encoding::Encoder<
995 '_,
996 fidl::encoding::DefaultFuchsiaResourceDialect,
997 >,
998 offset: usize,
999 _depth: fidl::encoding::Depth,
1000 ) -> fidl::Result<()> {
1001 encoder.debug_check_bounds::<FactoryCreateCapturerResponse>(offset);
1002 fidl::encoding::Encode::<FactoryCreateCapturerResponse, fidl::encoding::DefaultFuchsiaResourceDialect>::encode(
1004 (
1005 <fidl::encoding::HandleType<fidl::Clock, { fidl::ObjectType::CLOCK.into_raw() }, 2147483648> as fidl::encoding::ResourceTypeMarker>::take_or_borrow(&mut self.reference_clock),
1006 <fidl_fuchsia_media::AudioStreamType as fidl::encoding::ValueTypeMarker>::borrow(&self.stream_type),
1007 ),
1008 encoder, offset, _depth
1009 )
1010 }
1011 }
1012 unsafe impl<
1013 T0: fidl::encoding::Encode<
1014 fidl::encoding::HandleType<
1015 fidl::Clock,
1016 { fidl::ObjectType::CLOCK.into_raw() },
1017 2147483648,
1018 >,
1019 fidl::encoding::DefaultFuchsiaResourceDialect,
1020 >,
1021 T1: fidl::encoding::Encode<
1022 fidl_fuchsia_media::AudioStreamType,
1023 fidl::encoding::DefaultFuchsiaResourceDialect,
1024 >,
1025 >
1026 fidl::encoding::Encode<
1027 FactoryCreateCapturerResponse,
1028 fidl::encoding::DefaultFuchsiaResourceDialect,
1029 > for (T0, T1)
1030 {
1031 #[inline]
1032 unsafe fn encode(
1033 self,
1034 encoder: &mut fidl::encoding::Encoder<
1035 '_,
1036 fidl::encoding::DefaultFuchsiaResourceDialect,
1037 >,
1038 offset: usize,
1039 depth: fidl::encoding::Depth,
1040 ) -> fidl::Result<()> {
1041 encoder.debug_check_bounds::<FactoryCreateCapturerResponse>(offset);
1042 self.0.encode(encoder, offset + 0, depth)?;
1046 self.1.encode(encoder, offset + 4, depth)?;
1047 Ok(())
1048 }
1049 }
1050
1051 impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
1052 for FactoryCreateCapturerResponse
1053 {
1054 #[inline(always)]
1055 fn new_empty() -> Self {
1056 Self {
1057 reference_clock: fidl::new_empty!(fidl::encoding::HandleType<fidl::Clock, { fidl::ObjectType::CLOCK.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect),
1058 stream_type: fidl::new_empty!(
1059 fidl_fuchsia_media::AudioStreamType,
1060 fidl::encoding::DefaultFuchsiaResourceDialect
1061 ),
1062 }
1063 }
1064
1065 #[inline]
1066 unsafe fn decode(
1067 &mut self,
1068 decoder: &mut fidl::encoding::Decoder<
1069 '_,
1070 fidl::encoding::DefaultFuchsiaResourceDialect,
1071 >,
1072 offset: usize,
1073 _depth: fidl::encoding::Depth,
1074 ) -> fidl::Result<()> {
1075 decoder.debug_check_bounds::<Self>(offset);
1076 fidl::decode!(fidl::encoding::HandleType<fidl::Clock, { fidl::ObjectType::CLOCK.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect, &mut self.reference_clock, decoder, offset + 0, _depth)?;
1078 fidl::decode!(
1079 fidl_fuchsia_media::AudioStreamType,
1080 fidl::encoding::DefaultFuchsiaResourceDialect,
1081 &mut self.stream_type,
1082 decoder,
1083 offset + 4,
1084 _depth
1085 )?;
1086 Ok(())
1087 }
1088 }
1089
1090 impl fidl::encoding::ResourceTypeMarker for FactoryCreateRendererRequest {
1091 type Borrowed<'a> = &'a mut Self;
1092 fn take_or_borrow<'a>(
1093 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
1094 ) -> Self::Borrowed<'a> {
1095 value
1096 }
1097 }
1098
1099 unsafe impl fidl::encoding::TypeMarker for FactoryCreateRendererRequest {
1100 type Owned = Self;
1101
1102 #[inline(always)]
1103 fn inline_align(_context: fidl::encoding::Context) -> usize {
1104 4
1105 }
1106
1107 #[inline(always)]
1108 fn inline_size(_context: fidl::encoding::Context) -> usize {
1109 4
1110 }
1111 }
1112
1113 unsafe impl
1114 fidl::encoding::Encode<
1115 FactoryCreateRendererRequest,
1116 fidl::encoding::DefaultFuchsiaResourceDialect,
1117 > for &mut FactoryCreateRendererRequest
1118 {
1119 #[inline]
1120 unsafe fn encode(
1121 self,
1122 encoder: &mut fidl::encoding::Encoder<
1123 '_,
1124 fidl::encoding::DefaultFuchsiaResourceDialect,
1125 >,
1126 offset: usize,
1127 _depth: fidl::encoding::Depth,
1128 ) -> fidl::Result<()> {
1129 encoder.debug_check_bounds::<FactoryCreateRendererRequest>(offset);
1130 fidl::encoding::Encode::<
1132 FactoryCreateRendererRequest,
1133 fidl::encoding::DefaultFuchsiaResourceDialect,
1134 >::encode(
1135 (<fidl::encoding::Endpoint<
1136 fidl::endpoints::ServerEnd<fidl_fuchsia_media::AudioRendererMarker>,
1137 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow(
1138 &mut self.renderer
1139 ),),
1140 encoder,
1141 offset,
1142 _depth,
1143 )
1144 }
1145 }
1146 unsafe impl<
1147 T0: fidl::encoding::Encode<
1148 fidl::encoding::Endpoint<
1149 fidl::endpoints::ServerEnd<fidl_fuchsia_media::AudioRendererMarker>,
1150 >,
1151 fidl::encoding::DefaultFuchsiaResourceDialect,
1152 >,
1153 >
1154 fidl::encoding::Encode<
1155 FactoryCreateRendererRequest,
1156 fidl::encoding::DefaultFuchsiaResourceDialect,
1157 > for (T0,)
1158 {
1159 #[inline]
1160 unsafe fn encode(
1161 self,
1162 encoder: &mut fidl::encoding::Encoder<
1163 '_,
1164 fidl::encoding::DefaultFuchsiaResourceDialect,
1165 >,
1166 offset: usize,
1167 depth: fidl::encoding::Depth,
1168 ) -> fidl::Result<()> {
1169 encoder.debug_check_bounds::<FactoryCreateRendererRequest>(offset);
1170 self.0.encode(encoder, offset + 0, depth)?;
1174 Ok(())
1175 }
1176 }
1177
1178 impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
1179 for FactoryCreateRendererRequest
1180 {
1181 #[inline(always)]
1182 fn new_empty() -> Self {
1183 Self {
1184 renderer: fidl::new_empty!(
1185 fidl::encoding::Endpoint<
1186 fidl::endpoints::ServerEnd<fidl_fuchsia_media::AudioRendererMarker>,
1187 >,
1188 fidl::encoding::DefaultFuchsiaResourceDialect
1189 ),
1190 }
1191 }
1192
1193 #[inline]
1194 unsafe fn decode(
1195 &mut self,
1196 decoder: &mut fidl::encoding::Decoder<
1197 '_,
1198 fidl::encoding::DefaultFuchsiaResourceDialect,
1199 >,
1200 offset: usize,
1201 _depth: fidl::encoding::Depth,
1202 ) -> fidl::Result<()> {
1203 decoder.debug_check_bounds::<Self>(offset);
1204 fidl::decode!(
1206 fidl::encoding::Endpoint<
1207 fidl::endpoints::ServerEnd<fidl_fuchsia_media::AudioRendererMarker>,
1208 >,
1209 fidl::encoding::DefaultFuchsiaResourceDialect,
1210 &mut self.renderer,
1211 decoder,
1212 offset + 0,
1213 _depth
1214 )?;
1215 Ok(())
1216 }
1217 }
1218
1219 impl fidl::encoding::ResourceTypeMarker for FactoryCreateRendererResponse {
1220 type Borrowed<'a> = &'a mut Self;
1221 fn take_or_borrow<'a>(
1222 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
1223 ) -> Self::Borrowed<'a> {
1224 value
1225 }
1226 }
1227
1228 unsafe impl fidl::encoding::TypeMarker for FactoryCreateRendererResponse {
1229 type Owned = Self;
1230
1231 #[inline(always)]
1232 fn inline_align(_context: fidl::encoding::Context) -> usize {
1233 4
1234 }
1235
1236 #[inline(always)]
1237 fn inline_size(_context: fidl::encoding::Context) -> usize {
1238 16
1239 }
1240 }
1241
1242 unsafe impl
1243 fidl::encoding::Encode<
1244 FactoryCreateRendererResponse,
1245 fidl::encoding::DefaultFuchsiaResourceDialect,
1246 > for &mut FactoryCreateRendererResponse
1247 {
1248 #[inline]
1249 unsafe fn encode(
1250 self,
1251 encoder: &mut fidl::encoding::Encoder<
1252 '_,
1253 fidl::encoding::DefaultFuchsiaResourceDialect,
1254 >,
1255 offset: usize,
1256 _depth: fidl::encoding::Depth,
1257 ) -> fidl::Result<()> {
1258 encoder.debug_check_bounds::<FactoryCreateRendererResponse>(offset);
1259 fidl::encoding::Encode::<FactoryCreateRendererResponse, fidl::encoding::DefaultFuchsiaResourceDialect>::encode(
1261 (
1262 <fidl::encoding::HandleType<fidl::Clock, { fidl::ObjectType::CLOCK.into_raw() }, 2147483648> as fidl::encoding::ResourceTypeMarker>::take_or_borrow(&mut self.reference_clock),
1263 <fidl_fuchsia_media::AudioStreamType as fidl::encoding::ValueTypeMarker>::borrow(&self.stream_type),
1264 ),
1265 encoder, offset, _depth
1266 )
1267 }
1268 }
1269 unsafe impl<
1270 T0: fidl::encoding::Encode<
1271 fidl::encoding::HandleType<
1272 fidl::Clock,
1273 { fidl::ObjectType::CLOCK.into_raw() },
1274 2147483648,
1275 >,
1276 fidl::encoding::DefaultFuchsiaResourceDialect,
1277 >,
1278 T1: fidl::encoding::Encode<
1279 fidl_fuchsia_media::AudioStreamType,
1280 fidl::encoding::DefaultFuchsiaResourceDialect,
1281 >,
1282 >
1283 fidl::encoding::Encode<
1284 FactoryCreateRendererResponse,
1285 fidl::encoding::DefaultFuchsiaResourceDialect,
1286 > for (T0, T1)
1287 {
1288 #[inline]
1289 unsafe fn encode(
1290 self,
1291 encoder: &mut fidl::encoding::Encoder<
1292 '_,
1293 fidl::encoding::DefaultFuchsiaResourceDialect,
1294 >,
1295 offset: usize,
1296 depth: fidl::encoding::Depth,
1297 ) -> fidl::Result<()> {
1298 encoder.debug_check_bounds::<FactoryCreateRendererResponse>(offset);
1299 self.0.encode(encoder, offset + 0, depth)?;
1303 self.1.encode(encoder, offset + 4, depth)?;
1304 Ok(())
1305 }
1306 }
1307
1308 impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
1309 for FactoryCreateRendererResponse
1310 {
1311 #[inline(always)]
1312 fn new_empty() -> Self {
1313 Self {
1314 reference_clock: fidl::new_empty!(fidl::encoding::HandleType<fidl::Clock, { fidl::ObjectType::CLOCK.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect),
1315 stream_type: fidl::new_empty!(
1316 fidl_fuchsia_media::AudioStreamType,
1317 fidl::encoding::DefaultFuchsiaResourceDialect
1318 ),
1319 }
1320 }
1321
1322 #[inline]
1323 unsafe fn decode(
1324 &mut self,
1325 decoder: &mut fidl::encoding::Decoder<
1326 '_,
1327 fidl::encoding::DefaultFuchsiaResourceDialect,
1328 >,
1329 offset: usize,
1330 _depth: fidl::encoding::Depth,
1331 ) -> fidl::Result<()> {
1332 decoder.debug_check_bounds::<Self>(offset);
1333 fidl::decode!(fidl::encoding::HandleType<fidl::Clock, { fidl::ObjectType::CLOCK.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect, &mut self.reference_clock, decoder, offset + 0, _depth)?;
1335 fidl::decode!(
1336 fidl_fuchsia_media::AudioStreamType,
1337 fidl::encoding::DefaultFuchsiaResourceDialect,
1338 &mut self.stream_type,
1339 decoder,
1340 offset + 4,
1341 _depth
1342 )?;
1343 Ok(())
1344 }
1345 }
1346}