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