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