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_bluetooth_affordances_common::*;
11use futures::future::{self, MaybeDone, TryFutureExt};
12use zx_status;
13
14#[derive(Debug, Default, PartialEq)]
15pub struct CentralControllerStartScanRequest {
16 pub listener: Option<fidl::endpoints::ClientEnd<ScanResultListenerMarker>>,
18 #[doc(hidden)]
19 pub __source_breaking: fidl::marker::SourceBreaking,
20}
21
22impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect>
23 for CentralControllerStartScanRequest
24{
25}
26
27#[derive(Debug, Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash)]
28pub struct CentralControllerMarker;
29
30impl fidl::endpoints::ProtocolMarker for CentralControllerMarker {
31 type Proxy = CentralControllerProxy;
32 type RequestStream = CentralControllerRequestStream;
33 #[cfg(target_os = "fuchsia")]
34 type SynchronousProxy = CentralControllerSynchronousProxy;
35
36 const DEBUG_NAME: &'static str = "fuchsia.bluetooth.affordances.CentralController";
37}
38impl fidl::endpoints::DiscoverableProtocolMarker for CentralControllerMarker {}
39pub type CentralControllerStartScanResult = Result<(), Error>;
40pub type CentralControllerConnectPeripheralResult = Result<(), Error>;
41
42pub trait CentralControllerProxyInterface: Send + Sync {
43 type StartScanResponseFut: std::future::Future<Output = Result<CentralControllerStartScanResult, fidl::Error>>
44 + Send;
45 fn r#start_scan(
46 &self,
47 payload: CentralControllerStartScanRequest,
48 ) -> Self::StartScanResponseFut;
49 type ConnectPeripheralResponseFut: std::future::Future<Output = Result<CentralControllerConnectPeripheralResult, fidl::Error>>
50 + Send;
51 fn r#connect_peripheral(&self, payload: &PeerSelector) -> Self::ConnectPeripheralResponseFut;
52}
53#[derive(Debug)]
54#[cfg(target_os = "fuchsia")]
55pub struct CentralControllerSynchronousProxy {
56 client: fidl::client::sync::Client,
57}
58
59#[cfg(target_os = "fuchsia")]
60impl fidl::endpoints::SynchronousProxy for CentralControllerSynchronousProxy {
61 type Proxy = CentralControllerProxy;
62 type Protocol = CentralControllerMarker;
63
64 fn from_channel(inner: fidl::Channel) -> Self {
65 Self::new(inner)
66 }
67
68 fn into_channel(self) -> fidl::Channel {
69 self.client.into_channel()
70 }
71
72 fn as_channel(&self) -> &fidl::Channel {
73 self.client.as_channel()
74 }
75}
76
77#[cfg(target_os = "fuchsia")]
78impl CentralControllerSynchronousProxy {
79 pub fn new(channel: fidl::Channel) -> Self {
80 Self { client: fidl::client::sync::Client::new(channel) }
81 }
82
83 pub fn into_channel(self) -> fidl::Channel {
84 self.client.into_channel()
85 }
86
87 pub fn wait_for_event(
90 &self,
91 deadline: zx::MonotonicInstant,
92 ) -> Result<CentralControllerEvent, fidl::Error> {
93 CentralControllerEvent::decode(
94 self.client.wait_for_event::<CentralControllerMarker>(deadline)?,
95 )
96 }
97
98 pub fn r#start_scan(
104 &self,
105 mut payload: CentralControllerStartScanRequest,
106 ___deadline: zx::MonotonicInstant,
107 ) -> Result<CentralControllerStartScanResult, fidl::Error> {
108 let _response = self.client.send_query::<
109 CentralControllerStartScanRequest,
110 fidl::encoding::FlexibleResultType<fidl::encoding::EmptyStruct, Error>,
111 CentralControllerMarker,
112 >(
113 &mut payload,
114 0x7f8e8fdaa5b359ea,
115 fidl::encoding::DynamicFlags::FLEXIBLE,
116 ___deadline,
117 )?
118 .into_result::<CentralControllerMarker>("start_scan")?;
119 Ok(_response.map(|x| x))
120 }
121
122 pub fn r#connect_peripheral(
126 &self,
127 mut payload: &PeerSelector,
128 ___deadline: zx::MonotonicInstant,
129 ) -> Result<CentralControllerConnectPeripheralResult, fidl::Error> {
130 let _response = self.client.send_query::<
131 PeerSelector,
132 fidl::encoding::FlexibleResultType<fidl::encoding::EmptyStruct, Error>,
133 CentralControllerMarker,
134 >(
135 payload,
136 0x4cf45727cca182cd,
137 fidl::encoding::DynamicFlags::FLEXIBLE,
138 ___deadline,
139 )?
140 .into_result::<CentralControllerMarker>("connect_peripheral")?;
141 Ok(_response.map(|x| x))
142 }
143}
144
145#[cfg(target_os = "fuchsia")]
146impl From<CentralControllerSynchronousProxy> for zx::NullableHandle {
147 fn from(value: CentralControllerSynchronousProxy) -> Self {
148 value.into_channel().into()
149 }
150}
151
152#[cfg(target_os = "fuchsia")]
153impl From<fidl::Channel> for CentralControllerSynchronousProxy {
154 fn from(value: fidl::Channel) -> Self {
155 Self::new(value)
156 }
157}
158
159#[cfg(target_os = "fuchsia")]
160impl fidl::endpoints::FromClient for CentralControllerSynchronousProxy {
161 type Protocol = CentralControllerMarker;
162
163 fn from_client(value: fidl::endpoints::ClientEnd<CentralControllerMarker>) -> Self {
164 Self::new(value.into_channel())
165 }
166}
167
168#[derive(Debug, Clone)]
169pub struct CentralControllerProxy {
170 client: fidl::client::Client<fidl::encoding::DefaultFuchsiaResourceDialect>,
171}
172
173impl fidl::endpoints::Proxy for CentralControllerProxy {
174 type Protocol = CentralControllerMarker;
175
176 fn from_channel(inner: ::fidl::AsyncChannel) -> Self {
177 Self::new(inner)
178 }
179
180 fn into_channel(self) -> Result<::fidl::AsyncChannel, Self> {
181 self.client.into_channel().map_err(|client| Self { client })
182 }
183
184 fn as_channel(&self) -> &::fidl::AsyncChannel {
185 self.client.as_channel()
186 }
187}
188
189impl CentralControllerProxy {
190 pub fn new(channel: ::fidl::AsyncChannel) -> Self {
192 let protocol_name =
193 <CentralControllerMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
194 Self { client: fidl::client::Client::new(channel, protocol_name) }
195 }
196
197 pub fn take_event_stream(&self) -> CentralControllerEventStream {
203 CentralControllerEventStream { event_receiver: self.client.take_event_receiver() }
204 }
205
206 pub fn r#start_scan(
212 &self,
213 mut payload: CentralControllerStartScanRequest,
214 ) -> fidl::client::QueryResponseFut<
215 CentralControllerStartScanResult,
216 fidl::encoding::DefaultFuchsiaResourceDialect,
217 > {
218 CentralControllerProxyInterface::r#start_scan(self, payload)
219 }
220
221 pub fn r#connect_peripheral(
225 &self,
226 mut payload: &PeerSelector,
227 ) -> fidl::client::QueryResponseFut<
228 CentralControllerConnectPeripheralResult,
229 fidl::encoding::DefaultFuchsiaResourceDialect,
230 > {
231 CentralControllerProxyInterface::r#connect_peripheral(self, payload)
232 }
233}
234
235impl CentralControllerProxyInterface for CentralControllerProxy {
236 type StartScanResponseFut = fidl::client::QueryResponseFut<
237 CentralControllerStartScanResult,
238 fidl::encoding::DefaultFuchsiaResourceDialect,
239 >;
240 fn r#start_scan(
241 &self,
242 mut payload: CentralControllerStartScanRequest,
243 ) -> Self::StartScanResponseFut {
244 fn _decode(
245 mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
246 ) -> Result<CentralControllerStartScanResult, fidl::Error> {
247 let _response = fidl::client::decode_transaction_body::<
248 fidl::encoding::FlexibleResultType<fidl::encoding::EmptyStruct, Error>,
249 fidl::encoding::DefaultFuchsiaResourceDialect,
250 0x7f8e8fdaa5b359ea,
251 >(_buf?)?
252 .into_result::<CentralControllerMarker>("start_scan")?;
253 Ok(_response.map(|x| x))
254 }
255 self.client.send_query_and_decode::<
256 CentralControllerStartScanRequest,
257 CentralControllerStartScanResult,
258 >(
259 &mut payload,
260 0x7f8e8fdaa5b359ea,
261 fidl::encoding::DynamicFlags::FLEXIBLE,
262 _decode,
263 )
264 }
265
266 type ConnectPeripheralResponseFut = fidl::client::QueryResponseFut<
267 CentralControllerConnectPeripheralResult,
268 fidl::encoding::DefaultFuchsiaResourceDialect,
269 >;
270 fn r#connect_peripheral(
271 &self,
272 mut payload: &PeerSelector,
273 ) -> Self::ConnectPeripheralResponseFut {
274 fn _decode(
275 mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
276 ) -> Result<CentralControllerConnectPeripheralResult, fidl::Error> {
277 let _response = fidl::client::decode_transaction_body::<
278 fidl::encoding::FlexibleResultType<fidl::encoding::EmptyStruct, Error>,
279 fidl::encoding::DefaultFuchsiaResourceDialect,
280 0x4cf45727cca182cd,
281 >(_buf?)?
282 .into_result::<CentralControllerMarker>("connect_peripheral")?;
283 Ok(_response.map(|x| x))
284 }
285 self.client.send_query_and_decode::<PeerSelector, CentralControllerConnectPeripheralResult>(
286 payload,
287 0x4cf45727cca182cd,
288 fidl::encoding::DynamicFlags::FLEXIBLE,
289 _decode,
290 )
291 }
292}
293
294pub struct CentralControllerEventStream {
295 event_receiver: fidl::client::EventReceiver<fidl::encoding::DefaultFuchsiaResourceDialect>,
296}
297
298impl std::marker::Unpin for CentralControllerEventStream {}
299
300impl futures::stream::FusedStream for CentralControllerEventStream {
301 fn is_terminated(&self) -> bool {
302 self.event_receiver.is_terminated()
303 }
304}
305
306impl futures::Stream for CentralControllerEventStream {
307 type Item = Result<CentralControllerEvent, fidl::Error>;
308
309 fn poll_next(
310 mut self: std::pin::Pin<&mut Self>,
311 cx: &mut std::task::Context<'_>,
312 ) -> std::task::Poll<Option<Self::Item>> {
313 match futures::ready!(futures::stream::StreamExt::poll_next_unpin(
314 &mut self.event_receiver,
315 cx
316 )?) {
317 Some(buf) => std::task::Poll::Ready(Some(CentralControllerEvent::decode(buf))),
318 None => std::task::Poll::Ready(None),
319 }
320 }
321}
322
323#[derive(Debug)]
324pub enum CentralControllerEvent {
325 #[non_exhaustive]
326 _UnknownEvent {
327 ordinal: u64,
329 },
330}
331
332impl CentralControllerEvent {
333 fn decode(
335 mut buf: <fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc,
336 ) -> Result<CentralControllerEvent, fidl::Error> {
337 let (bytes, _handles) = buf.split_mut();
338 let (tx_header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
339 debug_assert_eq!(tx_header.tx_id, 0);
340 match tx_header.ordinal {
341 _ if tx_header.dynamic_flags().contains(fidl::encoding::DynamicFlags::FLEXIBLE) => {
342 Ok(CentralControllerEvent::_UnknownEvent { ordinal: tx_header.ordinal })
343 }
344 _ => Err(fidl::Error::UnknownOrdinal {
345 ordinal: tx_header.ordinal,
346 protocol_name:
347 <CentralControllerMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
348 }),
349 }
350 }
351}
352
353pub struct CentralControllerRequestStream {
355 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
356 is_terminated: bool,
357}
358
359impl std::marker::Unpin for CentralControllerRequestStream {}
360
361impl futures::stream::FusedStream for CentralControllerRequestStream {
362 fn is_terminated(&self) -> bool {
363 self.is_terminated
364 }
365}
366
367impl fidl::endpoints::RequestStream for CentralControllerRequestStream {
368 type Protocol = CentralControllerMarker;
369 type ControlHandle = CentralControllerControlHandle;
370
371 fn from_channel(channel: ::fidl::AsyncChannel) -> Self {
372 Self { inner: std::sync::Arc::new(fidl::ServeInner::new(channel)), is_terminated: false }
373 }
374
375 fn control_handle(&self) -> Self::ControlHandle {
376 CentralControllerControlHandle { inner: self.inner.clone() }
377 }
378
379 fn into_inner(
380 self,
381 ) -> (::std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>, bool)
382 {
383 (self.inner, self.is_terminated)
384 }
385
386 fn from_inner(
387 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
388 is_terminated: bool,
389 ) -> Self {
390 Self { inner, is_terminated }
391 }
392}
393
394impl futures::Stream for CentralControllerRequestStream {
395 type Item = Result<CentralControllerRequest, fidl::Error>;
396
397 fn poll_next(
398 mut self: std::pin::Pin<&mut Self>,
399 cx: &mut std::task::Context<'_>,
400 ) -> std::task::Poll<Option<Self::Item>> {
401 let this = &mut *self;
402 if this.inner.check_shutdown(cx) {
403 this.is_terminated = true;
404 return std::task::Poll::Ready(None);
405 }
406 if this.is_terminated {
407 panic!("polled CentralControllerRequestStream after completion");
408 }
409 fidl::encoding::with_tls_decode_buf::<_, fidl::encoding::DefaultFuchsiaResourceDialect>(
410 |bytes, handles| {
411 match this.inner.channel().read_etc(cx, bytes, handles) {
412 std::task::Poll::Ready(Ok(())) => {}
413 std::task::Poll::Pending => return std::task::Poll::Pending,
414 std::task::Poll::Ready(Err(zx_status::Status::PEER_CLOSED)) => {
415 this.is_terminated = true;
416 return std::task::Poll::Ready(None);
417 }
418 std::task::Poll::Ready(Err(e)) => {
419 return std::task::Poll::Ready(Some(Err(fidl::Error::ServerRequestRead(
420 e.into(),
421 ))));
422 }
423 }
424
425 let (header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
427
428 std::task::Poll::Ready(Some(match header.ordinal {
429 0x7f8e8fdaa5b359ea => {
430 header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
431 let mut req = fidl::new_empty!(
432 CentralControllerStartScanRequest,
433 fidl::encoding::DefaultFuchsiaResourceDialect
434 );
435 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<CentralControllerStartScanRequest>(&header, _body_bytes, handles, &mut req)?;
436 let control_handle =
437 CentralControllerControlHandle { inner: this.inner.clone() };
438 Ok(CentralControllerRequest::StartScan {
439 payload: req,
440 responder: CentralControllerStartScanResponder {
441 control_handle: std::mem::ManuallyDrop::new(control_handle),
442 tx_id: header.tx_id,
443 },
444 })
445 }
446 0x4cf45727cca182cd => {
447 header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
448 let mut req = fidl::new_empty!(
449 PeerSelector,
450 fidl::encoding::DefaultFuchsiaResourceDialect
451 );
452 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<PeerSelector>(&header, _body_bytes, handles, &mut req)?;
453 let control_handle =
454 CentralControllerControlHandle { inner: this.inner.clone() };
455 Ok(CentralControllerRequest::ConnectPeripheral {
456 payload: req,
457 responder: CentralControllerConnectPeripheralResponder {
458 control_handle: std::mem::ManuallyDrop::new(control_handle),
459 tx_id: header.tx_id,
460 },
461 })
462 }
463 _ if header.tx_id == 0
464 && header
465 .dynamic_flags()
466 .contains(fidl::encoding::DynamicFlags::FLEXIBLE) =>
467 {
468 Ok(CentralControllerRequest::_UnknownMethod {
469 ordinal: header.ordinal,
470 control_handle: CentralControllerControlHandle {
471 inner: this.inner.clone(),
472 },
473 method_type: fidl::MethodType::OneWay,
474 })
475 }
476 _ if header
477 .dynamic_flags()
478 .contains(fidl::encoding::DynamicFlags::FLEXIBLE) =>
479 {
480 this.inner.send_framework_err(
481 fidl::encoding::FrameworkErr::UnknownMethod,
482 header.tx_id,
483 header.ordinal,
484 header.dynamic_flags(),
485 (bytes, handles),
486 )?;
487 Ok(CentralControllerRequest::_UnknownMethod {
488 ordinal: header.ordinal,
489 control_handle: CentralControllerControlHandle {
490 inner: this.inner.clone(),
491 },
492 method_type: fidl::MethodType::TwoWay,
493 })
494 }
495 _ => Err(fidl::Error::UnknownOrdinal {
496 ordinal: header.ordinal,
497 protocol_name:
498 <CentralControllerMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
499 }),
500 }))
501 },
502 )
503 }
504}
505
506#[derive(Debug)]
507pub enum CentralControllerRequest {
508 StartScan {
514 payload: CentralControllerStartScanRequest,
515 responder: CentralControllerStartScanResponder,
516 },
517 ConnectPeripheral {
521 payload: PeerSelector,
522 responder: CentralControllerConnectPeripheralResponder,
523 },
524 #[non_exhaustive]
526 _UnknownMethod {
527 ordinal: u64,
529 control_handle: CentralControllerControlHandle,
530 method_type: fidl::MethodType,
531 },
532}
533
534impl CentralControllerRequest {
535 #[allow(irrefutable_let_patterns)]
536 pub fn into_start_scan(
537 self,
538 ) -> Option<(CentralControllerStartScanRequest, CentralControllerStartScanResponder)> {
539 if let CentralControllerRequest::StartScan { payload, responder } = self {
540 Some((payload, responder))
541 } else {
542 None
543 }
544 }
545
546 #[allow(irrefutable_let_patterns)]
547 pub fn into_connect_peripheral(
548 self,
549 ) -> Option<(PeerSelector, CentralControllerConnectPeripheralResponder)> {
550 if let CentralControllerRequest::ConnectPeripheral { payload, responder } = self {
551 Some((payload, responder))
552 } else {
553 None
554 }
555 }
556
557 pub fn method_name(&self) -> &'static str {
559 match *self {
560 CentralControllerRequest::StartScan { .. } => "start_scan",
561 CentralControllerRequest::ConnectPeripheral { .. } => "connect_peripheral",
562 CentralControllerRequest::_UnknownMethod {
563 method_type: fidl::MethodType::OneWay,
564 ..
565 } => "unknown one-way method",
566 CentralControllerRequest::_UnknownMethod {
567 method_type: fidl::MethodType::TwoWay,
568 ..
569 } => "unknown two-way method",
570 }
571 }
572}
573
574#[derive(Debug, Clone)]
575pub struct CentralControllerControlHandle {
576 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
577}
578
579impl CentralControllerControlHandle {
580 pub fn shutdown_with_epitaph(&self, status: impl Into<fidl::Epitaph>) {
581 self.inner.shutdown_with_epitaph(status.into())
582 }
583}
584
585impl fidl::endpoints::ControlHandle for CentralControllerControlHandle {
586 fn shutdown(&self) {
587 self.inner.shutdown()
588 }
589
590 fn shutdown_with_epitaph(&self, status: fidl::Epitaph) {
591 self.inner.shutdown_with_epitaph(status)
592 }
593
594 fn is_closed(&self) -> bool {
595 self.inner.channel().is_closed()
596 }
597 fn on_closed(&self) -> fidl::OnSignalsRef<'_> {
598 self.inner.channel().on_closed()
599 }
600
601 #[cfg(target_os = "fuchsia")]
602 fn signal_peer(
603 &self,
604 clear_mask: zx::Signals,
605 set_mask: zx::Signals,
606 ) -> Result<(), zx_status::Status> {
607 use fidl::Peered;
608 self.inner.channel().signal_peer(clear_mask, set_mask)
609 }
610}
611
612impl CentralControllerControlHandle {}
613
614#[must_use = "FIDL methods require a response to be sent"]
615#[derive(Debug)]
616pub struct CentralControllerStartScanResponder {
617 control_handle: std::mem::ManuallyDrop<CentralControllerControlHandle>,
618 tx_id: u32,
619}
620
621impl std::ops::Drop for CentralControllerStartScanResponder {
625 fn drop(&mut self) {
626 self.control_handle.shutdown();
627 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
629 }
630}
631
632impl fidl::endpoints::Responder for CentralControllerStartScanResponder {
633 type ControlHandle = CentralControllerControlHandle;
634
635 fn control_handle(&self) -> &CentralControllerControlHandle {
636 &self.control_handle
637 }
638
639 fn drop_without_shutdown(mut self) {
640 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
642 std::mem::forget(self);
644 }
645}
646
647impl CentralControllerStartScanResponder {
648 pub fn send(self, mut result: Result<(), Error>) -> Result<(), fidl::Error> {
652 let _result = self.send_raw(result);
653 if _result.is_err() {
654 self.control_handle.shutdown();
655 }
656 self.drop_without_shutdown();
657 _result
658 }
659
660 pub fn send_no_shutdown_on_err(self, mut result: Result<(), Error>) -> Result<(), fidl::Error> {
662 let _result = self.send_raw(result);
663 self.drop_without_shutdown();
664 _result
665 }
666
667 fn send_raw(&self, mut result: Result<(), Error>) -> Result<(), fidl::Error> {
668 self.control_handle.inner.send::<fidl::encoding::FlexibleResultType<
669 fidl::encoding::EmptyStruct,
670 Error,
671 >>(
672 fidl::encoding::FlexibleResult::new(result),
673 self.tx_id,
674 0x7f8e8fdaa5b359ea,
675 fidl::encoding::DynamicFlags::FLEXIBLE,
676 )
677 }
678}
679
680#[must_use = "FIDL methods require a response to be sent"]
681#[derive(Debug)]
682pub struct CentralControllerConnectPeripheralResponder {
683 control_handle: std::mem::ManuallyDrop<CentralControllerControlHandle>,
684 tx_id: u32,
685}
686
687impl std::ops::Drop for CentralControllerConnectPeripheralResponder {
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 CentralControllerConnectPeripheralResponder {
699 type ControlHandle = CentralControllerControlHandle;
700
701 fn control_handle(&self) -> &CentralControllerControlHandle {
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 CentralControllerConnectPeripheralResponder {
714 pub fn send(self, mut result: Result<(), Error>) -> Result<(), fidl::Error> {
718 let _result = self.send_raw(result);
719 if _result.is_err() {
720 self.control_handle.shutdown();
721 }
722 self.drop_without_shutdown();
723 _result
724 }
725
726 pub fn send_no_shutdown_on_err(self, mut result: Result<(), Error>) -> Result<(), fidl::Error> {
728 let _result = self.send_raw(result);
729 self.drop_without_shutdown();
730 _result
731 }
732
733 fn send_raw(&self, mut result: Result<(), Error>) -> Result<(), fidl::Error> {
734 self.control_handle.inner.send::<fidl::encoding::FlexibleResultType<
735 fidl::encoding::EmptyStruct,
736 Error,
737 >>(
738 fidl::encoding::FlexibleResult::new(result),
739 self.tx_id,
740 0x4cf45727cca182cd,
741 fidl::encoding::DynamicFlags::FLEXIBLE,
742 )
743 }
744}
745
746#[derive(Debug, Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash)]
747pub struct GattClientControllerMarker;
748
749impl fidl::endpoints::ProtocolMarker for GattClientControllerMarker {
750 type Proxy = GattClientControllerProxy;
751 type RequestStream = GattClientControllerRequestStream;
752 #[cfg(target_os = "fuchsia")]
753 type SynchronousProxy = GattClientControllerSynchronousProxy;
754
755 const DEBUG_NAME: &'static str = "fuchsia.bluetooth.affordances.GattClientController";
756}
757impl fidl::endpoints::DiscoverableProtocolMarker for GattClientControllerMarker {}
758pub type GattClientControllerDiscoverServicesResult =
759 Result<GattClientControllerDiscoverServicesResponse, Error>;
760
761pub trait GattClientControllerProxyInterface: Send + Sync {
762 type DiscoverServicesResponseFut: std::future::Future<
763 Output = Result<GattClientControllerDiscoverServicesResult, fidl::Error>,
764 > + Send;
765 fn r#discover_services(&self) -> Self::DiscoverServicesResponseFut;
766}
767#[derive(Debug)]
768#[cfg(target_os = "fuchsia")]
769pub struct GattClientControllerSynchronousProxy {
770 client: fidl::client::sync::Client,
771}
772
773#[cfg(target_os = "fuchsia")]
774impl fidl::endpoints::SynchronousProxy for GattClientControllerSynchronousProxy {
775 type Proxy = GattClientControllerProxy;
776 type Protocol = GattClientControllerMarker;
777
778 fn from_channel(inner: fidl::Channel) -> Self {
779 Self::new(inner)
780 }
781
782 fn into_channel(self) -> fidl::Channel {
783 self.client.into_channel()
784 }
785
786 fn as_channel(&self) -> &fidl::Channel {
787 self.client.as_channel()
788 }
789}
790
791#[cfg(target_os = "fuchsia")]
792impl GattClientControllerSynchronousProxy {
793 pub fn new(channel: fidl::Channel) -> Self {
794 Self { client: fidl::client::sync::Client::new(channel) }
795 }
796
797 pub fn into_channel(self) -> fidl::Channel {
798 self.client.into_channel()
799 }
800
801 pub fn wait_for_event(
804 &self,
805 deadline: zx::MonotonicInstant,
806 ) -> Result<GattClientControllerEvent, fidl::Error> {
807 GattClientControllerEvent::decode(
808 self.client.wait_for_event::<GattClientControllerMarker>(deadline)?,
809 )
810 }
811
812 pub fn r#discover_services(
816 &self,
817 ___deadline: zx::MonotonicInstant,
818 ) -> Result<GattClientControllerDiscoverServicesResult, fidl::Error> {
819 let _response =
820 self.client
821 .send_query::<fidl::encoding::EmptyPayload, fidl::encoding::FlexibleResultType<
822 GattClientControllerDiscoverServicesResponse,
823 Error,
824 >, GattClientControllerMarker>(
825 (),
826 0x2451643d00753f94,
827 fidl::encoding::DynamicFlags::FLEXIBLE,
828 ___deadline,
829 )?
830 .into_result::<GattClientControllerMarker>("discover_services")?;
831 Ok(_response.map(|x| x))
832 }
833}
834
835#[cfg(target_os = "fuchsia")]
836impl From<GattClientControllerSynchronousProxy> for zx::NullableHandle {
837 fn from(value: GattClientControllerSynchronousProxy) -> Self {
838 value.into_channel().into()
839 }
840}
841
842#[cfg(target_os = "fuchsia")]
843impl From<fidl::Channel> for GattClientControllerSynchronousProxy {
844 fn from(value: fidl::Channel) -> Self {
845 Self::new(value)
846 }
847}
848
849#[cfg(target_os = "fuchsia")]
850impl fidl::endpoints::FromClient for GattClientControllerSynchronousProxy {
851 type Protocol = GattClientControllerMarker;
852
853 fn from_client(value: fidl::endpoints::ClientEnd<GattClientControllerMarker>) -> Self {
854 Self::new(value.into_channel())
855 }
856}
857
858#[derive(Debug, Clone)]
859pub struct GattClientControllerProxy {
860 client: fidl::client::Client<fidl::encoding::DefaultFuchsiaResourceDialect>,
861}
862
863impl fidl::endpoints::Proxy for GattClientControllerProxy {
864 type Protocol = GattClientControllerMarker;
865
866 fn from_channel(inner: ::fidl::AsyncChannel) -> Self {
867 Self::new(inner)
868 }
869
870 fn into_channel(self) -> Result<::fidl::AsyncChannel, Self> {
871 self.client.into_channel().map_err(|client| Self { client })
872 }
873
874 fn as_channel(&self) -> &::fidl::AsyncChannel {
875 self.client.as_channel()
876 }
877}
878
879impl GattClientControllerProxy {
880 pub fn new(channel: ::fidl::AsyncChannel) -> Self {
882 let protocol_name =
883 <GattClientControllerMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
884 Self { client: fidl::client::Client::new(channel, protocol_name) }
885 }
886
887 pub fn take_event_stream(&self) -> GattClientControllerEventStream {
893 GattClientControllerEventStream { event_receiver: self.client.take_event_receiver() }
894 }
895
896 pub fn r#discover_services(
900 &self,
901 ) -> fidl::client::QueryResponseFut<
902 GattClientControllerDiscoverServicesResult,
903 fidl::encoding::DefaultFuchsiaResourceDialect,
904 > {
905 GattClientControllerProxyInterface::r#discover_services(self)
906 }
907}
908
909impl GattClientControllerProxyInterface for GattClientControllerProxy {
910 type DiscoverServicesResponseFut = fidl::client::QueryResponseFut<
911 GattClientControllerDiscoverServicesResult,
912 fidl::encoding::DefaultFuchsiaResourceDialect,
913 >;
914 fn r#discover_services(&self) -> Self::DiscoverServicesResponseFut {
915 fn _decode(
916 mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
917 ) -> Result<GattClientControllerDiscoverServicesResult, fidl::Error> {
918 let _response = fidl::client::decode_transaction_body::<
919 fidl::encoding::FlexibleResultType<
920 GattClientControllerDiscoverServicesResponse,
921 Error,
922 >,
923 fidl::encoding::DefaultFuchsiaResourceDialect,
924 0x2451643d00753f94,
925 >(_buf?)?
926 .into_result::<GattClientControllerMarker>("discover_services")?;
927 Ok(_response.map(|x| x))
928 }
929 self.client.send_query_and_decode::<
930 fidl::encoding::EmptyPayload,
931 GattClientControllerDiscoverServicesResult,
932 >(
933 (),
934 0x2451643d00753f94,
935 fidl::encoding::DynamicFlags::FLEXIBLE,
936 _decode,
937 )
938 }
939}
940
941pub struct GattClientControllerEventStream {
942 event_receiver: fidl::client::EventReceiver<fidl::encoding::DefaultFuchsiaResourceDialect>,
943}
944
945impl std::marker::Unpin for GattClientControllerEventStream {}
946
947impl futures::stream::FusedStream for GattClientControllerEventStream {
948 fn is_terminated(&self) -> bool {
949 self.event_receiver.is_terminated()
950 }
951}
952
953impl futures::Stream for GattClientControllerEventStream {
954 type Item = Result<GattClientControllerEvent, fidl::Error>;
955
956 fn poll_next(
957 mut self: std::pin::Pin<&mut Self>,
958 cx: &mut std::task::Context<'_>,
959 ) -> std::task::Poll<Option<Self::Item>> {
960 match futures::ready!(futures::stream::StreamExt::poll_next_unpin(
961 &mut self.event_receiver,
962 cx
963 )?) {
964 Some(buf) => std::task::Poll::Ready(Some(GattClientControllerEvent::decode(buf))),
965 None => std::task::Poll::Ready(None),
966 }
967 }
968}
969
970#[derive(Debug)]
971pub enum GattClientControllerEvent {
972 #[non_exhaustive]
973 _UnknownEvent {
974 ordinal: u64,
976 },
977}
978
979impl GattClientControllerEvent {
980 fn decode(
982 mut buf: <fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc,
983 ) -> Result<GattClientControllerEvent, fidl::Error> {
984 let (bytes, _handles) = buf.split_mut();
985 let (tx_header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
986 debug_assert_eq!(tx_header.tx_id, 0);
987 match tx_header.ordinal {
988 _ if tx_header.dynamic_flags().contains(fidl::encoding::DynamicFlags::FLEXIBLE) => {
989 Ok(GattClientControllerEvent::_UnknownEvent { ordinal: tx_header.ordinal })
990 }
991 _ => Err(fidl::Error::UnknownOrdinal {
992 ordinal: tx_header.ordinal,
993 protocol_name:
994 <GattClientControllerMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
995 }),
996 }
997 }
998}
999
1000pub struct GattClientControllerRequestStream {
1002 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
1003 is_terminated: bool,
1004}
1005
1006impl std::marker::Unpin for GattClientControllerRequestStream {}
1007
1008impl futures::stream::FusedStream for GattClientControllerRequestStream {
1009 fn is_terminated(&self) -> bool {
1010 self.is_terminated
1011 }
1012}
1013
1014impl fidl::endpoints::RequestStream for GattClientControllerRequestStream {
1015 type Protocol = GattClientControllerMarker;
1016 type ControlHandle = GattClientControllerControlHandle;
1017
1018 fn from_channel(channel: ::fidl::AsyncChannel) -> Self {
1019 Self { inner: std::sync::Arc::new(fidl::ServeInner::new(channel)), is_terminated: false }
1020 }
1021
1022 fn control_handle(&self) -> Self::ControlHandle {
1023 GattClientControllerControlHandle { inner: self.inner.clone() }
1024 }
1025
1026 fn into_inner(
1027 self,
1028 ) -> (::std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>, bool)
1029 {
1030 (self.inner, self.is_terminated)
1031 }
1032
1033 fn from_inner(
1034 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
1035 is_terminated: bool,
1036 ) -> Self {
1037 Self { inner, is_terminated }
1038 }
1039}
1040
1041impl futures::Stream for GattClientControllerRequestStream {
1042 type Item = Result<GattClientControllerRequest, fidl::Error>;
1043
1044 fn poll_next(
1045 mut self: std::pin::Pin<&mut Self>,
1046 cx: &mut std::task::Context<'_>,
1047 ) -> std::task::Poll<Option<Self::Item>> {
1048 let this = &mut *self;
1049 if this.inner.check_shutdown(cx) {
1050 this.is_terminated = true;
1051 return std::task::Poll::Ready(None);
1052 }
1053 if this.is_terminated {
1054 panic!("polled GattClientControllerRequestStream after completion");
1055 }
1056 fidl::encoding::with_tls_decode_buf::<_, fidl::encoding::DefaultFuchsiaResourceDialect>(
1057 |bytes, handles| {
1058 match this.inner.channel().read_etc(cx, bytes, handles) {
1059 std::task::Poll::Ready(Ok(())) => {}
1060 std::task::Poll::Pending => return std::task::Poll::Pending,
1061 std::task::Poll::Ready(Err(zx_status::Status::PEER_CLOSED)) => {
1062 this.is_terminated = true;
1063 return std::task::Poll::Ready(None);
1064 }
1065 std::task::Poll::Ready(Err(e)) => {
1066 return std::task::Poll::Ready(Some(Err(fidl::Error::ServerRequestRead(
1067 e.into(),
1068 ))));
1069 }
1070 }
1071
1072 let (header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
1074
1075 std::task::Poll::Ready(Some(match header.ordinal {
1076 0x2451643d00753f94 => {
1077 header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
1078 let mut req = fidl::new_empty!(fidl::encoding::EmptyPayload, fidl::encoding::DefaultFuchsiaResourceDialect);
1079 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
1080 let control_handle = GattClientControllerControlHandle {
1081 inner: this.inner.clone(),
1082 };
1083 Ok(GattClientControllerRequest::DiscoverServices {
1084 responder: GattClientControllerDiscoverServicesResponder {
1085 control_handle: std::mem::ManuallyDrop::new(control_handle),
1086 tx_id: header.tx_id,
1087 },
1088 })
1089 }
1090 _ if header.tx_id == 0 && header.dynamic_flags().contains(fidl::encoding::DynamicFlags::FLEXIBLE) => {
1091 Ok(GattClientControllerRequest::_UnknownMethod {
1092 ordinal: header.ordinal,
1093 control_handle: GattClientControllerControlHandle { inner: this.inner.clone() },
1094 method_type: fidl::MethodType::OneWay,
1095 })
1096 }
1097 _ if header.dynamic_flags().contains(fidl::encoding::DynamicFlags::FLEXIBLE) => {
1098 this.inner.send_framework_err(
1099 fidl::encoding::FrameworkErr::UnknownMethod,
1100 header.tx_id,
1101 header.ordinal,
1102 header.dynamic_flags(),
1103 (bytes, handles),
1104 )?;
1105 Ok(GattClientControllerRequest::_UnknownMethod {
1106 ordinal: header.ordinal,
1107 control_handle: GattClientControllerControlHandle { inner: this.inner.clone() },
1108 method_type: fidl::MethodType::TwoWay,
1109 })
1110 }
1111 _ => Err(fidl::Error::UnknownOrdinal {
1112 ordinal: header.ordinal,
1113 protocol_name: <GattClientControllerMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
1114 }),
1115 }))
1116 },
1117 )
1118 }
1119}
1120
1121#[derive(Debug)]
1122pub enum GattClientControllerRequest {
1123 DiscoverServices { responder: GattClientControllerDiscoverServicesResponder },
1127 #[non_exhaustive]
1129 _UnknownMethod {
1130 ordinal: u64,
1132 control_handle: GattClientControllerControlHandle,
1133 method_type: fidl::MethodType,
1134 },
1135}
1136
1137impl GattClientControllerRequest {
1138 #[allow(irrefutable_let_patterns)]
1139 pub fn into_discover_services(self) -> Option<(GattClientControllerDiscoverServicesResponder)> {
1140 if let GattClientControllerRequest::DiscoverServices { responder } = self {
1141 Some((responder))
1142 } else {
1143 None
1144 }
1145 }
1146
1147 pub fn method_name(&self) -> &'static str {
1149 match *self {
1150 GattClientControllerRequest::DiscoverServices { .. } => "discover_services",
1151 GattClientControllerRequest::_UnknownMethod {
1152 method_type: fidl::MethodType::OneWay,
1153 ..
1154 } => "unknown one-way method",
1155 GattClientControllerRequest::_UnknownMethod {
1156 method_type: fidl::MethodType::TwoWay,
1157 ..
1158 } => "unknown two-way method",
1159 }
1160 }
1161}
1162
1163#[derive(Debug, Clone)]
1164pub struct GattClientControllerControlHandle {
1165 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
1166}
1167
1168impl GattClientControllerControlHandle {
1169 pub fn shutdown_with_epitaph(&self, status: impl Into<fidl::Epitaph>) {
1170 self.inner.shutdown_with_epitaph(status.into())
1171 }
1172}
1173
1174impl fidl::endpoints::ControlHandle for GattClientControllerControlHandle {
1175 fn shutdown(&self) {
1176 self.inner.shutdown()
1177 }
1178
1179 fn shutdown_with_epitaph(&self, status: fidl::Epitaph) {
1180 self.inner.shutdown_with_epitaph(status)
1181 }
1182
1183 fn is_closed(&self) -> bool {
1184 self.inner.channel().is_closed()
1185 }
1186 fn on_closed(&self) -> fidl::OnSignalsRef<'_> {
1187 self.inner.channel().on_closed()
1188 }
1189
1190 #[cfg(target_os = "fuchsia")]
1191 fn signal_peer(
1192 &self,
1193 clear_mask: zx::Signals,
1194 set_mask: zx::Signals,
1195 ) -> Result<(), zx_status::Status> {
1196 use fidl::Peered;
1197 self.inner.channel().signal_peer(clear_mask, set_mask)
1198 }
1199}
1200
1201impl GattClientControllerControlHandle {}
1202
1203#[must_use = "FIDL methods require a response to be sent"]
1204#[derive(Debug)]
1205pub struct GattClientControllerDiscoverServicesResponder {
1206 control_handle: std::mem::ManuallyDrop<GattClientControllerControlHandle>,
1207 tx_id: u32,
1208}
1209
1210impl std::ops::Drop for GattClientControllerDiscoverServicesResponder {
1214 fn drop(&mut self) {
1215 self.control_handle.shutdown();
1216 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
1218 }
1219}
1220
1221impl fidl::endpoints::Responder for GattClientControllerDiscoverServicesResponder {
1222 type ControlHandle = GattClientControllerControlHandle;
1223
1224 fn control_handle(&self) -> &GattClientControllerControlHandle {
1225 &self.control_handle
1226 }
1227
1228 fn drop_without_shutdown(mut self) {
1229 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
1231 std::mem::forget(self);
1233 }
1234}
1235
1236impl GattClientControllerDiscoverServicesResponder {
1237 pub fn send(
1241 self,
1242 mut result: Result<&GattClientControllerDiscoverServicesResponse, Error>,
1243 ) -> Result<(), fidl::Error> {
1244 let _result = self.send_raw(result);
1245 if _result.is_err() {
1246 self.control_handle.shutdown();
1247 }
1248 self.drop_without_shutdown();
1249 _result
1250 }
1251
1252 pub fn send_no_shutdown_on_err(
1254 self,
1255 mut result: Result<&GattClientControllerDiscoverServicesResponse, Error>,
1256 ) -> Result<(), fidl::Error> {
1257 let _result = self.send_raw(result);
1258 self.drop_without_shutdown();
1259 _result
1260 }
1261
1262 fn send_raw(
1263 &self,
1264 mut result: Result<&GattClientControllerDiscoverServicesResponse, Error>,
1265 ) -> Result<(), fidl::Error> {
1266 self.control_handle.inner.send::<fidl::encoding::FlexibleResultType<
1267 GattClientControllerDiscoverServicesResponse,
1268 Error,
1269 >>(
1270 fidl::encoding::FlexibleResult::new(result),
1271 self.tx_id,
1272 0x2451643d00753f94,
1273 fidl::encoding::DynamicFlags::FLEXIBLE,
1274 )
1275 }
1276}
1277
1278#[derive(Debug, Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash)]
1279pub struct HostControllerMarker;
1280
1281impl fidl::endpoints::ProtocolMarker for HostControllerMarker {
1282 type Proxy = HostControllerProxy;
1283 type RequestStream = HostControllerRequestStream;
1284 #[cfg(target_os = "fuchsia")]
1285 type SynchronousProxy = HostControllerSynchronousProxy;
1286
1287 const DEBUG_NAME: &'static str = "fuchsia.bluetooth.affordances.HostController";
1288}
1289impl fidl::endpoints::DiscoverableProtocolMarker for HostControllerMarker {}
1290pub type HostControllerGetHostsResult = Result<HostControllerGetHostsResponse, Error>;
1291pub type HostControllerSetDiscoverabilityResult = Result<(), Error>;
1292pub type HostControllerSetConnectabilityResult = Result<(), Error>;
1293
1294pub trait HostControllerProxyInterface: Send + Sync {
1295 type GetHostsResponseFut: std::future::Future<Output = Result<HostControllerGetHostsResult, fidl::Error>>
1296 + Send;
1297 fn r#get_hosts(&self) -> Self::GetHostsResponseFut;
1298 type SetDiscoverabilityResponseFut: std::future::Future<Output = Result<HostControllerSetDiscoverabilityResult, fidl::Error>>
1299 + Send;
1300 fn r#set_discoverability(
1301 &self,
1302 payload: &HostControllerSetDiscoverabilityRequest,
1303 ) -> Self::SetDiscoverabilityResponseFut;
1304 type SetConnectabilityResponseFut: std::future::Future<Output = Result<HostControllerSetConnectabilityResult, fidl::Error>>
1305 + Send;
1306 fn r#set_connectability(
1307 &self,
1308 payload: &HostControllerSetConnectabilityRequest,
1309 ) -> Self::SetConnectabilityResponseFut;
1310}
1311#[derive(Debug)]
1312#[cfg(target_os = "fuchsia")]
1313pub struct HostControllerSynchronousProxy {
1314 client: fidl::client::sync::Client,
1315}
1316
1317#[cfg(target_os = "fuchsia")]
1318impl fidl::endpoints::SynchronousProxy for HostControllerSynchronousProxy {
1319 type Proxy = HostControllerProxy;
1320 type Protocol = HostControllerMarker;
1321
1322 fn from_channel(inner: fidl::Channel) -> Self {
1323 Self::new(inner)
1324 }
1325
1326 fn into_channel(self) -> fidl::Channel {
1327 self.client.into_channel()
1328 }
1329
1330 fn as_channel(&self) -> &fidl::Channel {
1331 self.client.as_channel()
1332 }
1333}
1334
1335#[cfg(target_os = "fuchsia")]
1336impl HostControllerSynchronousProxy {
1337 pub fn new(channel: fidl::Channel) -> Self {
1338 Self { client: fidl::client::sync::Client::new(channel) }
1339 }
1340
1341 pub fn into_channel(self) -> fidl::Channel {
1342 self.client.into_channel()
1343 }
1344
1345 pub fn wait_for_event(
1348 &self,
1349 deadline: zx::MonotonicInstant,
1350 ) -> Result<HostControllerEvent, fidl::Error> {
1351 HostControllerEvent::decode(self.client.wait_for_event::<HostControllerMarker>(deadline)?)
1352 }
1353
1354 pub fn r#get_hosts(
1358 &self,
1359 ___deadline: zx::MonotonicInstant,
1360 ) -> Result<HostControllerGetHostsResult, fidl::Error> {
1361 let _response = self.client.send_query::<
1362 fidl::encoding::EmptyPayload,
1363 fidl::encoding::FlexibleResultType<HostControllerGetHostsResponse, Error>,
1364 HostControllerMarker,
1365 >(
1366 (),
1367 0x167d2522684d453d,
1368 fidl::encoding::DynamicFlags::FLEXIBLE,
1369 ___deadline,
1370 )?
1371 .into_result::<HostControllerMarker>("get_hosts")?;
1372 Ok(_response.map(|x| x))
1373 }
1374
1375 pub fn r#set_discoverability(
1380 &self,
1381 mut payload: &HostControllerSetDiscoverabilityRequest,
1382 ___deadline: zx::MonotonicInstant,
1383 ) -> Result<HostControllerSetDiscoverabilityResult, fidl::Error> {
1384 let _response = self.client.send_query::<
1385 HostControllerSetDiscoverabilityRequest,
1386 fidl::encoding::FlexibleResultType<fidl::encoding::EmptyStruct, Error>,
1387 HostControllerMarker,
1388 >(
1389 payload,
1390 0x1e977b538b94b08b,
1391 fidl::encoding::DynamicFlags::FLEXIBLE,
1392 ___deadline,
1393 )?
1394 .into_result::<HostControllerMarker>("set_discoverability")?;
1395 Ok(_response.map(|x| x))
1396 }
1397
1398 pub fn r#set_connectability(
1403 &self,
1404 mut payload: &HostControllerSetConnectabilityRequest,
1405 ___deadline: zx::MonotonicInstant,
1406 ) -> Result<HostControllerSetConnectabilityResult, fidl::Error> {
1407 let _response = self.client.send_query::<
1408 HostControllerSetConnectabilityRequest,
1409 fidl::encoding::FlexibleResultType<fidl::encoding::EmptyStruct, Error>,
1410 HostControllerMarker,
1411 >(
1412 payload,
1413 0x93572b659adf7d,
1414 fidl::encoding::DynamicFlags::FLEXIBLE,
1415 ___deadline,
1416 )?
1417 .into_result::<HostControllerMarker>("set_connectability")?;
1418 Ok(_response.map(|x| x))
1419 }
1420}
1421
1422#[cfg(target_os = "fuchsia")]
1423impl From<HostControllerSynchronousProxy> for zx::NullableHandle {
1424 fn from(value: HostControllerSynchronousProxy) -> Self {
1425 value.into_channel().into()
1426 }
1427}
1428
1429#[cfg(target_os = "fuchsia")]
1430impl From<fidl::Channel> for HostControllerSynchronousProxy {
1431 fn from(value: fidl::Channel) -> Self {
1432 Self::new(value)
1433 }
1434}
1435
1436#[cfg(target_os = "fuchsia")]
1437impl fidl::endpoints::FromClient for HostControllerSynchronousProxy {
1438 type Protocol = HostControllerMarker;
1439
1440 fn from_client(value: fidl::endpoints::ClientEnd<HostControllerMarker>) -> Self {
1441 Self::new(value.into_channel())
1442 }
1443}
1444
1445#[derive(Debug, Clone)]
1446pub struct HostControllerProxy {
1447 client: fidl::client::Client<fidl::encoding::DefaultFuchsiaResourceDialect>,
1448}
1449
1450impl fidl::endpoints::Proxy for HostControllerProxy {
1451 type Protocol = HostControllerMarker;
1452
1453 fn from_channel(inner: ::fidl::AsyncChannel) -> Self {
1454 Self::new(inner)
1455 }
1456
1457 fn into_channel(self) -> Result<::fidl::AsyncChannel, Self> {
1458 self.client.into_channel().map_err(|client| Self { client })
1459 }
1460
1461 fn as_channel(&self) -> &::fidl::AsyncChannel {
1462 self.client.as_channel()
1463 }
1464}
1465
1466impl HostControllerProxy {
1467 pub fn new(channel: ::fidl::AsyncChannel) -> Self {
1469 let protocol_name = <HostControllerMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
1470 Self { client: fidl::client::Client::new(channel, protocol_name) }
1471 }
1472
1473 pub fn take_event_stream(&self) -> HostControllerEventStream {
1479 HostControllerEventStream { event_receiver: self.client.take_event_receiver() }
1480 }
1481
1482 pub fn r#get_hosts(
1486 &self,
1487 ) -> fidl::client::QueryResponseFut<
1488 HostControllerGetHostsResult,
1489 fidl::encoding::DefaultFuchsiaResourceDialect,
1490 > {
1491 HostControllerProxyInterface::r#get_hosts(self)
1492 }
1493
1494 pub fn r#set_discoverability(
1499 &self,
1500 mut payload: &HostControllerSetDiscoverabilityRequest,
1501 ) -> fidl::client::QueryResponseFut<
1502 HostControllerSetDiscoverabilityResult,
1503 fidl::encoding::DefaultFuchsiaResourceDialect,
1504 > {
1505 HostControllerProxyInterface::r#set_discoverability(self, payload)
1506 }
1507
1508 pub fn r#set_connectability(
1513 &self,
1514 mut payload: &HostControllerSetConnectabilityRequest,
1515 ) -> fidl::client::QueryResponseFut<
1516 HostControllerSetConnectabilityResult,
1517 fidl::encoding::DefaultFuchsiaResourceDialect,
1518 > {
1519 HostControllerProxyInterface::r#set_connectability(self, payload)
1520 }
1521}
1522
1523impl HostControllerProxyInterface for HostControllerProxy {
1524 type GetHostsResponseFut = fidl::client::QueryResponseFut<
1525 HostControllerGetHostsResult,
1526 fidl::encoding::DefaultFuchsiaResourceDialect,
1527 >;
1528 fn r#get_hosts(&self) -> Self::GetHostsResponseFut {
1529 fn _decode(
1530 mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
1531 ) -> Result<HostControllerGetHostsResult, fidl::Error> {
1532 let _response = fidl::client::decode_transaction_body::<
1533 fidl::encoding::FlexibleResultType<HostControllerGetHostsResponse, Error>,
1534 fidl::encoding::DefaultFuchsiaResourceDialect,
1535 0x167d2522684d453d,
1536 >(_buf?)?
1537 .into_result::<HostControllerMarker>("get_hosts")?;
1538 Ok(_response.map(|x| x))
1539 }
1540 self.client
1541 .send_query_and_decode::<fidl::encoding::EmptyPayload, HostControllerGetHostsResult>(
1542 (),
1543 0x167d2522684d453d,
1544 fidl::encoding::DynamicFlags::FLEXIBLE,
1545 _decode,
1546 )
1547 }
1548
1549 type SetDiscoverabilityResponseFut = fidl::client::QueryResponseFut<
1550 HostControllerSetDiscoverabilityResult,
1551 fidl::encoding::DefaultFuchsiaResourceDialect,
1552 >;
1553 fn r#set_discoverability(
1554 &self,
1555 mut payload: &HostControllerSetDiscoverabilityRequest,
1556 ) -> Self::SetDiscoverabilityResponseFut {
1557 fn _decode(
1558 mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
1559 ) -> Result<HostControllerSetDiscoverabilityResult, fidl::Error> {
1560 let _response = fidl::client::decode_transaction_body::<
1561 fidl::encoding::FlexibleResultType<fidl::encoding::EmptyStruct, Error>,
1562 fidl::encoding::DefaultFuchsiaResourceDialect,
1563 0x1e977b538b94b08b,
1564 >(_buf?)?
1565 .into_result::<HostControllerMarker>("set_discoverability")?;
1566 Ok(_response.map(|x| x))
1567 }
1568 self.client.send_query_and_decode::<
1569 HostControllerSetDiscoverabilityRequest,
1570 HostControllerSetDiscoverabilityResult,
1571 >(
1572 payload,
1573 0x1e977b538b94b08b,
1574 fidl::encoding::DynamicFlags::FLEXIBLE,
1575 _decode,
1576 )
1577 }
1578
1579 type SetConnectabilityResponseFut = fidl::client::QueryResponseFut<
1580 HostControllerSetConnectabilityResult,
1581 fidl::encoding::DefaultFuchsiaResourceDialect,
1582 >;
1583 fn r#set_connectability(
1584 &self,
1585 mut payload: &HostControllerSetConnectabilityRequest,
1586 ) -> Self::SetConnectabilityResponseFut {
1587 fn _decode(
1588 mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
1589 ) -> Result<HostControllerSetConnectabilityResult, fidl::Error> {
1590 let _response = fidl::client::decode_transaction_body::<
1591 fidl::encoding::FlexibleResultType<fidl::encoding::EmptyStruct, Error>,
1592 fidl::encoding::DefaultFuchsiaResourceDialect,
1593 0x93572b659adf7d,
1594 >(_buf?)?
1595 .into_result::<HostControllerMarker>("set_connectability")?;
1596 Ok(_response.map(|x| x))
1597 }
1598 self.client.send_query_and_decode::<
1599 HostControllerSetConnectabilityRequest,
1600 HostControllerSetConnectabilityResult,
1601 >(
1602 payload,
1603 0x93572b659adf7d,
1604 fidl::encoding::DynamicFlags::FLEXIBLE,
1605 _decode,
1606 )
1607 }
1608}
1609
1610pub struct HostControllerEventStream {
1611 event_receiver: fidl::client::EventReceiver<fidl::encoding::DefaultFuchsiaResourceDialect>,
1612}
1613
1614impl std::marker::Unpin for HostControllerEventStream {}
1615
1616impl futures::stream::FusedStream for HostControllerEventStream {
1617 fn is_terminated(&self) -> bool {
1618 self.event_receiver.is_terminated()
1619 }
1620}
1621
1622impl futures::Stream for HostControllerEventStream {
1623 type Item = Result<HostControllerEvent, fidl::Error>;
1624
1625 fn poll_next(
1626 mut self: std::pin::Pin<&mut Self>,
1627 cx: &mut std::task::Context<'_>,
1628 ) -> std::task::Poll<Option<Self::Item>> {
1629 match futures::ready!(futures::stream::StreamExt::poll_next_unpin(
1630 &mut self.event_receiver,
1631 cx
1632 )?) {
1633 Some(buf) => std::task::Poll::Ready(Some(HostControllerEvent::decode(buf))),
1634 None => std::task::Poll::Ready(None),
1635 }
1636 }
1637}
1638
1639#[derive(Debug)]
1640pub enum HostControllerEvent {
1641 #[non_exhaustive]
1642 _UnknownEvent {
1643 ordinal: u64,
1645 },
1646}
1647
1648impl HostControllerEvent {
1649 fn decode(
1651 mut buf: <fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc,
1652 ) -> Result<HostControllerEvent, fidl::Error> {
1653 let (bytes, _handles) = buf.split_mut();
1654 let (tx_header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
1655 debug_assert_eq!(tx_header.tx_id, 0);
1656 match tx_header.ordinal {
1657 _ if tx_header.dynamic_flags().contains(fidl::encoding::DynamicFlags::FLEXIBLE) => {
1658 Ok(HostControllerEvent::_UnknownEvent { ordinal: tx_header.ordinal })
1659 }
1660 _ => Err(fidl::Error::UnknownOrdinal {
1661 ordinal: tx_header.ordinal,
1662 protocol_name:
1663 <HostControllerMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
1664 }),
1665 }
1666 }
1667}
1668
1669pub struct HostControllerRequestStream {
1671 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
1672 is_terminated: bool,
1673}
1674
1675impl std::marker::Unpin for HostControllerRequestStream {}
1676
1677impl futures::stream::FusedStream for HostControllerRequestStream {
1678 fn is_terminated(&self) -> bool {
1679 self.is_terminated
1680 }
1681}
1682
1683impl fidl::endpoints::RequestStream for HostControllerRequestStream {
1684 type Protocol = HostControllerMarker;
1685 type ControlHandle = HostControllerControlHandle;
1686
1687 fn from_channel(channel: ::fidl::AsyncChannel) -> Self {
1688 Self { inner: std::sync::Arc::new(fidl::ServeInner::new(channel)), is_terminated: false }
1689 }
1690
1691 fn control_handle(&self) -> Self::ControlHandle {
1692 HostControllerControlHandle { inner: self.inner.clone() }
1693 }
1694
1695 fn into_inner(
1696 self,
1697 ) -> (::std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>, bool)
1698 {
1699 (self.inner, self.is_terminated)
1700 }
1701
1702 fn from_inner(
1703 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
1704 is_terminated: bool,
1705 ) -> Self {
1706 Self { inner, is_terminated }
1707 }
1708}
1709
1710impl futures::Stream for HostControllerRequestStream {
1711 type Item = Result<HostControllerRequest, fidl::Error>;
1712
1713 fn poll_next(
1714 mut self: std::pin::Pin<&mut Self>,
1715 cx: &mut std::task::Context<'_>,
1716 ) -> std::task::Poll<Option<Self::Item>> {
1717 let this = &mut *self;
1718 if this.inner.check_shutdown(cx) {
1719 this.is_terminated = true;
1720 return std::task::Poll::Ready(None);
1721 }
1722 if this.is_terminated {
1723 panic!("polled HostControllerRequestStream after completion");
1724 }
1725 fidl::encoding::with_tls_decode_buf::<_, fidl::encoding::DefaultFuchsiaResourceDialect>(
1726 |bytes, handles| {
1727 match this.inner.channel().read_etc(cx, bytes, handles) {
1728 std::task::Poll::Ready(Ok(())) => {}
1729 std::task::Poll::Pending => return std::task::Poll::Pending,
1730 std::task::Poll::Ready(Err(zx_status::Status::PEER_CLOSED)) => {
1731 this.is_terminated = true;
1732 return std::task::Poll::Ready(None);
1733 }
1734 std::task::Poll::Ready(Err(e)) => {
1735 return std::task::Poll::Ready(Some(Err(fidl::Error::ServerRequestRead(
1736 e.into(),
1737 ))));
1738 }
1739 }
1740
1741 let (header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
1743
1744 std::task::Poll::Ready(Some(match header.ordinal {
1745 0x167d2522684d453d => {
1746 header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
1747 let mut req = fidl::new_empty!(
1748 fidl::encoding::EmptyPayload,
1749 fidl::encoding::DefaultFuchsiaResourceDialect
1750 );
1751 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
1752 let control_handle =
1753 HostControllerControlHandle { inner: this.inner.clone() };
1754 Ok(HostControllerRequest::GetHosts {
1755 responder: HostControllerGetHostsResponder {
1756 control_handle: std::mem::ManuallyDrop::new(control_handle),
1757 tx_id: header.tx_id,
1758 },
1759 })
1760 }
1761 0x1e977b538b94b08b => {
1762 header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
1763 let mut req = fidl::new_empty!(
1764 HostControllerSetDiscoverabilityRequest,
1765 fidl::encoding::DefaultFuchsiaResourceDialect
1766 );
1767 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<HostControllerSetDiscoverabilityRequest>(&header, _body_bytes, handles, &mut req)?;
1768 let control_handle =
1769 HostControllerControlHandle { inner: this.inner.clone() };
1770 Ok(HostControllerRequest::SetDiscoverability {
1771 payload: req,
1772 responder: HostControllerSetDiscoverabilityResponder {
1773 control_handle: std::mem::ManuallyDrop::new(control_handle),
1774 tx_id: header.tx_id,
1775 },
1776 })
1777 }
1778 0x93572b659adf7d => {
1779 header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
1780 let mut req = fidl::new_empty!(
1781 HostControllerSetConnectabilityRequest,
1782 fidl::encoding::DefaultFuchsiaResourceDialect
1783 );
1784 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<HostControllerSetConnectabilityRequest>(&header, _body_bytes, handles, &mut req)?;
1785 let control_handle =
1786 HostControllerControlHandle { inner: this.inner.clone() };
1787 Ok(HostControllerRequest::SetConnectability {
1788 payload: req,
1789 responder: HostControllerSetConnectabilityResponder {
1790 control_handle: std::mem::ManuallyDrop::new(control_handle),
1791 tx_id: header.tx_id,
1792 },
1793 })
1794 }
1795 _ if header.tx_id == 0
1796 && header
1797 .dynamic_flags()
1798 .contains(fidl::encoding::DynamicFlags::FLEXIBLE) =>
1799 {
1800 Ok(HostControllerRequest::_UnknownMethod {
1801 ordinal: header.ordinal,
1802 control_handle: HostControllerControlHandle {
1803 inner: this.inner.clone(),
1804 },
1805 method_type: fidl::MethodType::OneWay,
1806 })
1807 }
1808 _ if header
1809 .dynamic_flags()
1810 .contains(fidl::encoding::DynamicFlags::FLEXIBLE) =>
1811 {
1812 this.inner.send_framework_err(
1813 fidl::encoding::FrameworkErr::UnknownMethod,
1814 header.tx_id,
1815 header.ordinal,
1816 header.dynamic_flags(),
1817 (bytes, handles),
1818 )?;
1819 Ok(HostControllerRequest::_UnknownMethod {
1820 ordinal: header.ordinal,
1821 control_handle: HostControllerControlHandle {
1822 inner: this.inner.clone(),
1823 },
1824 method_type: fidl::MethodType::TwoWay,
1825 })
1826 }
1827 _ => Err(fidl::Error::UnknownOrdinal {
1828 ordinal: header.ordinal,
1829 protocol_name:
1830 <HostControllerMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
1831 }),
1832 }))
1833 },
1834 )
1835 }
1836}
1837
1838#[derive(Debug)]
1839pub enum HostControllerRequest {
1840 GetHosts { responder: HostControllerGetHostsResponder },
1844 SetDiscoverability {
1849 payload: HostControllerSetDiscoverabilityRequest,
1850 responder: HostControllerSetDiscoverabilityResponder,
1851 },
1852 SetConnectability {
1857 payload: HostControllerSetConnectabilityRequest,
1858 responder: HostControllerSetConnectabilityResponder,
1859 },
1860 #[non_exhaustive]
1862 _UnknownMethod {
1863 ordinal: u64,
1865 control_handle: HostControllerControlHandle,
1866 method_type: fidl::MethodType,
1867 },
1868}
1869
1870impl HostControllerRequest {
1871 #[allow(irrefutable_let_patterns)]
1872 pub fn into_get_hosts(self) -> Option<(HostControllerGetHostsResponder)> {
1873 if let HostControllerRequest::GetHosts { responder } = self {
1874 Some((responder))
1875 } else {
1876 None
1877 }
1878 }
1879
1880 #[allow(irrefutable_let_patterns)]
1881 pub fn into_set_discoverability(
1882 self,
1883 ) -> Option<(HostControllerSetDiscoverabilityRequest, HostControllerSetDiscoverabilityResponder)>
1884 {
1885 if let HostControllerRequest::SetDiscoverability { payload, responder } = self {
1886 Some((payload, responder))
1887 } else {
1888 None
1889 }
1890 }
1891
1892 #[allow(irrefutable_let_patterns)]
1893 pub fn into_set_connectability(
1894 self,
1895 ) -> Option<(HostControllerSetConnectabilityRequest, HostControllerSetConnectabilityResponder)>
1896 {
1897 if let HostControllerRequest::SetConnectability { payload, responder } = self {
1898 Some((payload, responder))
1899 } else {
1900 None
1901 }
1902 }
1903
1904 pub fn method_name(&self) -> &'static str {
1906 match *self {
1907 HostControllerRequest::GetHosts { .. } => "get_hosts",
1908 HostControllerRequest::SetDiscoverability { .. } => "set_discoverability",
1909 HostControllerRequest::SetConnectability { .. } => "set_connectability",
1910 HostControllerRequest::_UnknownMethod {
1911 method_type: fidl::MethodType::OneWay, ..
1912 } => "unknown one-way method",
1913 HostControllerRequest::_UnknownMethod {
1914 method_type: fidl::MethodType::TwoWay, ..
1915 } => "unknown two-way method",
1916 }
1917 }
1918}
1919
1920#[derive(Debug, Clone)]
1921pub struct HostControllerControlHandle {
1922 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
1923}
1924
1925impl HostControllerControlHandle {
1926 pub fn shutdown_with_epitaph(&self, status: impl Into<fidl::Epitaph>) {
1927 self.inner.shutdown_with_epitaph(status.into())
1928 }
1929}
1930
1931impl fidl::endpoints::ControlHandle for HostControllerControlHandle {
1932 fn shutdown(&self) {
1933 self.inner.shutdown()
1934 }
1935
1936 fn shutdown_with_epitaph(&self, status: fidl::Epitaph) {
1937 self.inner.shutdown_with_epitaph(status)
1938 }
1939
1940 fn is_closed(&self) -> bool {
1941 self.inner.channel().is_closed()
1942 }
1943 fn on_closed(&self) -> fidl::OnSignalsRef<'_> {
1944 self.inner.channel().on_closed()
1945 }
1946
1947 #[cfg(target_os = "fuchsia")]
1948 fn signal_peer(
1949 &self,
1950 clear_mask: zx::Signals,
1951 set_mask: zx::Signals,
1952 ) -> Result<(), zx_status::Status> {
1953 use fidl::Peered;
1954 self.inner.channel().signal_peer(clear_mask, set_mask)
1955 }
1956}
1957
1958impl HostControllerControlHandle {}
1959
1960#[must_use = "FIDL methods require a response to be sent"]
1961#[derive(Debug)]
1962pub struct HostControllerGetHostsResponder {
1963 control_handle: std::mem::ManuallyDrop<HostControllerControlHandle>,
1964 tx_id: u32,
1965}
1966
1967impl std::ops::Drop for HostControllerGetHostsResponder {
1971 fn drop(&mut self) {
1972 self.control_handle.shutdown();
1973 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
1975 }
1976}
1977
1978impl fidl::endpoints::Responder for HostControllerGetHostsResponder {
1979 type ControlHandle = HostControllerControlHandle;
1980
1981 fn control_handle(&self) -> &HostControllerControlHandle {
1982 &self.control_handle
1983 }
1984
1985 fn drop_without_shutdown(mut self) {
1986 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
1988 std::mem::forget(self);
1990 }
1991}
1992
1993impl HostControllerGetHostsResponder {
1994 pub fn send(
1998 self,
1999 mut result: Result<&HostControllerGetHostsResponse, Error>,
2000 ) -> Result<(), fidl::Error> {
2001 let _result = self.send_raw(result);
2002 if _result.is_err() {
2003 self.control_handle.shutdown();
2004 }
2005 self.drop_without_shutdown();
2006 _result
2007 }
2008
2009 pub fn send_no_shutdown_on_err(
2011 self,
2012 mut result: Result<&HostControllerGetHostsResponse, Error>,
2013 ) -> Result<(), fidl::Error> {
2014 let _result = self.send_raw(result);
2015 self.drop_without_shutdown();
2016 _result
2017 }
2018
2019 fn send_raw(
2020 &self,
2021 mut result: Result<&HostControllerGetHostsResponse, Error>,
2022 ) -> Result<(), fidl::Error> {
2023 self.control_handle.inner.send::<fidl::encoding::FlexibleResultType<
2024 HostControllerGetHostsResponse,
2025 Error,
2026 >>(
2027 fidl::encoding::FlexibleResult::new(result),
2028 self.tx_id,
2029 0x167d2522684d453d,
2030 fidl::encoding::DynamicFlags::FLEXIBLE,
2031 )
2032 }
2033}
2034
2035#[must_use = "FIDL methods require a response to be sent"]
2036#[derive(Debug)]
2037pub struct HostControllerSetDiscoverabilityResponder {
2038 control_handle: std::mem::ManuallyDrop<HostControllerControlHandle>,
2039 tx_id: u32,
2040}
2041
2042impl std::ops::Drop for HostControllerSetDiscoverabilityResponder {
2046 fn drop(&mut self) {
2047 self.control_handle.shutdown();
2048 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
2050 }
2051}
2052
2053impl fidl::endpoints::Responder for HostControllerSetDiscoverabilityResponder {
2054 type ControlHandle = HostControllerControlHandle;
2055
2056 fn control_handle(&self) -> &HostControllerControlHandle {
2057 &self.control_handle
2058 }
2059
2060 fn drop_without_shutdown(mut self) {
2061 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
2063 std::mem::forget(self);
2065 }
2066}
2067
2068impl HostControllerSetDiscoverabilityResponder {
2069 pub fn send(self, mut result: Result<(), Error>) -> Result<(), fidl::Error> {
2073 let _result = self.send_raw(result);
2074 if _result.is_err() {
2075 self.control_handle.shutdown();
2076 }
2077 self.drop_without_shutdown();
2078 _result
2079 }
2080
2081 pub fn send_no_shutdown_on_err(self, mut result: Result<(), Error>) -> Result<(), fidl::Error> {
2083 let _result = self.send_raw(result);
2084 self.drop_without_shutdown();
2085 _result
2086 }
2087
2088 fn send_raw(&self, mut result: Result<(), Error>) -> Result<(), fidl::Error> {
2089 self.control_handle.inner.send::<fidl::encoding::FlexibleResultType<
2090 fidl::encoding::EmptyStruct,
2091 Error,
2092 >>(
2093 fidl::encoding::FlexibleResult::new(result),
2094 self.tx_id,
2095 0x1e977b538b94b08b,
2096 fidl::encoding::DynamicFlags::FLEXIBLE,
2097 )
2098 }
2099}
2100
2101#[must_use = "FIDL methods require a response to be sent"]
2102#[derive(Debug)]
2103pub struct HostControllerSetConnectabilityResponder {
2104 control_handle: std::mem::ManuallyDrop<HostControllerControlHandle>,
2105 tx_id: u32,
2106}
2107
2108impl std::ops::Drop for HostControllerSetConnectabilityResponder {
2112 fn drop(&mut self) {
2113 self.control_handle.shutdown();
2114 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
2116 }
2117}
2118
2119impl fidl::endpoints::Responder for HostControllerSetConnectabilityResponder {
2120 type ControlHandle = HostControllerControlHandle;
2121
2122 fn control_handle(&self) -> &HostControllerControlHandle {
2123 &self.control_handle
2124 }
2125
2126 fn drop_without_shutdown(mut self) {
2127 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
2129 std::mem::forget(self);
2131 }
2132}
2133
2134impl HostControllerSetConnectabilityResponder {
2135 pub fn send(self, mut result: Result<(), Error>) -> Result<(), fidl::Error> {
2139 let _result = self.send_raw(result);
2140 if _result.is_err() {
2141 self.control_handle.shutdown();
2142 }
2143 self.drop_without_shutdown();
2144 _result
2145 }
2146
2147 pub fn send_no_shutdown_on_err(self, mut result: Result<(), Error>) -> Result<(), fidl::Error> {
2149 let _result = self.send_raw(result);
2150 self.drop_without_shutdown();
2151 _result
2152 }
2153
2154 fn send_raw(&self, mut result: Result<(), Error>) -> Result<(), fidl::Error> {
2155 self.control_handle.inner.send::<fidl::encoding::FlexibleResultType<
2156 fidl::encoding::EmptyStruct,
2157 Error,
2158 >>(
2159 fidl::encoding::FlexibleResult::new(result),
2160 self.tx_id,
2161 0x93572b659adf7d,
2162 fidl::encoding::DynamicFlags::FLEXIBLE,
2163 )
2164 }
2165}
2166
2167#[derive(Debug, Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash)]
2168pub struct PeerControllerMarker;
2169
2170impl fidl::endpoints::ProtocolMarker for PeerControllerMarker {
2171 type Proxy = PeerControllerProxy;
2172 type RequestStream = PeerControllerRequestStream;
2173 #[cfg(target_os = "fuchsia")]
2174 type SynchronousProxy = PeerControllerSynchronousProxy;
2175
2176 const DEBUG_NAME: &'static str = "fuchsia.bluetooth.affordances.PeerController";
2177}
2178impl fidl::endpoints::DiscoverableProtocolMarker for PeerControllerMarker {}
2179pub type PeerControllerGetKnownPeersResult = Result<PeerControllerGetKnownPeersResponse, Error>;
2180pub type PeerControllerGetPeerIdResult = Result<PeerControllerGetPeerIdResponse, Error>;
2181pub type PeerControllerSetDiscoveryResult = Result<(), Error>;
2182
2183pub trait PeerControllerProxyInterface: Send + Sync {
2184 type GetKnownPeersResponseFut: std::future::Future<Output = Result<PeerControllerGetKnownPeersResult, fidl::Error>>
2185 + Send;
2186 fn r#get_known_peers(&self) -> Self::GetKnownPeersResponseFut;
2187 type GetPeerIdResponseFut: std::future::Future<Output = Result<PeerControllerGetPeerIdResult, fidl::Error>>
2188 + Send;
2189 fn r#get_peer_id(&self, payload: &PeerControllerGetPeerIdRequest)
2190 -> Self::GetPeerIdResponseFut;
2191 type SetDiscoveryResponseFut: std::future::Future<Output = Result<PeerControllerSetDiscoveryResult, fidl::Error>>
2192 + Send;
2193 fn r#set_discovery(
2194 &self,
2195 payload: &PeerControllerSetDiscoveryRequest,
2196 ) -> Self::SetDiscoveryResponseFut;
2197}
2198#[derive(Debug)]
2199#[cfg(target_os = "fuchsia")]
2200pub struct PeerControllerSynchronousProxy {
2201 client: fidl::client::sync::Client,
2202}
2203
2204#[cfg(target_os = "fuchsia")]
2205impl fidl::endpoints::SynchronousProxy for PeerControllerSynchronousProxy {
2206 type Proxy = PeerControllerProxy;
2207 type Protocol = PeerControllerMarker;
2208
2209 fn from_channel(inner: fidl::Channel) -> Self {
2210 Self::new(inner)
2211 }
2212
2213 fn into_channel(self) -> fidl::Channel {
2214 self.client.into_channel()
2215 }
2216
2217 fn as_channel(&self) -> &fidl::Channel {
2218 self.client.as_channel()
2219 }
2220}
2221
2222#[cfg(target_os = "fuchsia")]
2223impl PeerControllerSynchronousProxy {
2224 pub fn new(channel: fidl::Channel) -> Self {
2225 Self { client: fidl::client::sync::Client::new(channel) }
2226 }
2227
2228 pub fn into_channel(self) -> fidl::Channel {
2229 self.client.into_channel()
2230 }
2231
2232 pub fn wait_for_event(
2235 &self,
2236 deadline: zx::MonotonicInstant,
2237 ) -> Result<PeerControllerEvent, fidl::Error> {
2238 PeerControllerEvent::decode(self.client.wait_for_event::<PeerControllerMarker>(deadline)?)
2239 }
2240
2241 pub fn r#get_known_peers(
2245 &self,
2246 ___deadline: zx::MonotonicInstant,
2247 ) -> Result<PeerControllerGetKnownPeersResult, fidl::Error> {
2248 let _response = self.client.send_query::<
2249 fidl::encoding::EmptyPayload,
2250 fidl::encoding::FlexibleResultType<PeerControllerGetKnownPeersResponse, Error>,
2251 PeerControllerMarker,
2252 >(
2253 (),
2254 0x482cf3745bab65f6,
2255 fidl::encoding::DynamicFlags::FLEXIBLE,
2256 ___deadline,
2257 )?
2258 .into_result::<PeerControllerMarker>("get_known_peers")?;
2259 Ok(_response.map(|x| x))
2260 }
2261
2262 pub fn r#get_peer_id(
2268 &self,
2269 mut payload: &PeerControllerGetPeerIdRequest,
2270 ___deadline: zx::MonotonicInstant,
2271 ) -> Result<PeerControllerGetPeerIdResult, fidl::Error> {
2272 let _response = self.client.send_query::<
2273 PeerControllerGetPeerIdRequest,
2274 fidl::encoding::FlexibleResultType<PeerControllerGetPeerIdResponse, Error>,
2275 PeerControllerMarker,
2276 >(
2277 payload,
2278 0x5f6f76185d19eb18,
2279 fidl::encoding::DynamicFlags::FLEXIBLE,
2280 ___deadline,
2281 )?
2282 .into_result::<PeerControllerMarker>("get_peer_id")?;
2283 Ok(_response.map(|x| x))
2284 }
2285
2286 pub fn r#set_discovery(
2291 &self,
2292 mut payload: &PeerControllerSetDiscoveryRequest,
2293 ___deadline: zx::MonotonicInstant,
2294 ) -> Result<PeerControllerSetDiscoveryResult, fidl::Error> {
2295 let _response = self.client.send_query::<
2296 PeerControllerSetDiscoveryRequest,
2297 fidl::encoding::FlexibleResultType<fidl::encoding::EmptyStruct, Error>,
2298 PeerControllerMarker,
2299 >(
2300 payload,
2301 0x3269624c9e1d6ab3,
2302 fidl::encoding::DynamicFlags::FLEXIBLE,
2303 ___deadline,
2304 )?
2305 .into_result::<PeerControllerMarker>("set_discovery")?;
2306 Ok(_response.map(|x| x))
2307 }
2308}
2309
2310#[cfg(target_os = "fuchsia")]
2311impl From<PeerControllerSynchronousProxy> for zx::NullableHandle {
2312 fn from(value: PeerControllerSynchronousProxy) -> Self {
2313 value.into_channel().into()
2314 }
2315}
2316
2317#[cfg(target_os = "fuchsia")]
2318impl From<fidl::Channel> for PeerControllerSynchronousProxy {
2319 fn from(value: fidl::Channel) -> Self {
2320 Self::new(value)
2321 }
2322}
2323
2324#[cfg(target_os = "fuchsia")]
2325impl fidl::endpoints::FromClient for PeerControllerSynchronousProxy {
2326 type Protocol = PeerControllerMarker;
2327
2328 fn from_client(value: fidl::endpoints::ClientEnd<PeerControllerMarker>) -> Self {
2329 Self::new(value.into_channel())
2330 }
2331}
2332
2333#[derive(Debug, Clone)]
2334pub struct PeerControllerProxy {
2335 client: fidl::client::Client<fidl::encoding::DefaultFuchsiaResourceDialect>,
2336}
2337
2338impl fidl::endpoints::Proxy for PeerControllerProxy {
2339 type Protocol = PeerControllerMarker;
2340
2341 fn from_channel(inner: ::fidl::AsyncChannel) -> Self {
2342 Self::new(inner)
2343 }
2344
2345 fn into_channel(self) -> Result<::fidl::AsyncChannel, Self> {
2346 self.client.into_channel().map_err(|client| Self { client })
2347 }
2348
2349 fn as_channel(&self) -> &::fidl::AsyncChannel {
2350 self.client.as_channel()
2351 }
2352}
2353
2354impl PeerControllerProxy {
2355 pub fn new(channel: ::fidl::AsyncChannel) -> Self {
2357 let protocol_name = <PeerControllerMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
2358 Self { client: fidl::client::Client::new(channel, protocol_name) }
2359 }
2360
2361 pub fn take_event_stream(&self) -> PeerControllerEventStream {
2367 PeerControllerEventStream { event_receiver: self.client.take_event_receiver() }
2368 }
2369
2370 pub fn r#get_known_peers(
2374 &self,
2375 ) -> fidl::client::QueryResponseFut<
2376 PeerControllerGetKnownPeersResult,
2377 fidl::encoding::DefaultFuchsiaResourceDialect,
2378 > {
2379 PeerControllerProxyInterface::r#get_known_peers(self)
2380 }
2381
2382 pub fn r#get_peer_id(
2388 &self,
2389 mut payload: &PeerControllerGetPeerIdRequest,
2390 ) -> fidl::client::QueryResponseFut<
2391 PeerControllerGetPeerIdResult,
2392 fidl::encoding::DefaultFuchsiaResourceDialect,
2393 > {
2394 PeerControllerProxyInterface::r#get_peer_id(self, payload)
2395 }
2396
2397 pub fn r#set_discovery(
2402 &self,
2403 mut payload: &PeerControllerSetDiscoveryRequest,
2404 ) -> fidl::client::QueryResponseFut<
2405 PeerControllerSetDiscoveryResult,
2406 fidl::encoding::DefaultFuchsiaResourceDialect,
2407 > {
2408 PeerControllerProxyInterface::r#set_discovery(self, payload)
2409 }
2410}
2411
2412impl PeerControllerProxyInterface for PeerControllerProxy {
2413 type GetKnownPeersResponseFut = fidl::client::QueryResponseFut<
2414 PeerControllerGetKnownPeersResult,
2415 fidl::encoding::DefaultFuchsiaResourceDialect,
2416 >;
2417 fn r#get_known_peers(&self) -> Self::GetKnownPeersResponseFut {
2418 fn _decode(
2419 mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
2420 ) -> Result<PeerControllerGetKnownPeersResult, fidl::Error> {
2421 let _response = fidl::client::decode_transaction_body::<
2422 fidl::encoding::FlexibleResultType<PeerControllerGetKnownPeersResponse, Error>,
2423 fidl::encoding::DefaultFuchsiaResourceDialect,
2424 0x482cf3745bab65f6,
2425 >(_buf?)?
2426 .into_result::<PeerControllerMarker>("get_known_peers")?;
2427 Ok(_response.map(|x| x))
2428 }
2429 self.client.send_query_and_decode::<
2430 fidl::encoding::EmptyPayload,
2431 PeerControllerGetKnownPeersResult,
2432 >(
2433 (),
2434 0x482cf3745bab65f6,
2435 fidl::encoding::DynamicFlags::FLEXIBLE,
2436 _decode,
2437 )
2438 }
2439
2440 type GetPeerIdResponseFut = fidl::client::QueryResponseFut<
2441 PeerControllerGetPeerIdResult,
2442 fidl::encoding::DefaultFuchsiaResourceDialect,
2443 >;
2444 fn r#get_peer_id(
2445 &self,
2446 mut payload: &PeerControllerGetPeerIdRequest,
2447 ) -> Self::GetPeerIdResponseFut {
2448 fn _decode(
2449 mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
2450 ) -> Result<PeerControllerGetPeerIdResult, fidl::Error> {
2451 let _response = fidl::client::decode_transaction_body::<
2452 fidl::encoding::FlexibleResultType<PeerControllerGetPeerIdResponse, Error>,
2453 fidl::encoding::DefaultFuchsiaResourceDialect,
2454 0x5f6f76185d19eb18,
2455 >(_buf?)?
2456 .into_result::<PeerControllerMarker>("get_peer_id")?;
2457 Ok(_response.map(|x| x))
2458 }
2459 self.client
2460 .send_query_and_decode::<PeerControllerGetPeerIdRequest, PeerControllerGetPeerIdResult>(
2461 payload,
2462 0x5f6f76185d19eb18,
2463 fidl::encoding::DynamicFlags::FLEXIBLE,
2464 _decode,
2465 )
2466 }
2467
2468 type SetDiscoveryResponseFut = fidl::client::QueryResponseFut<
2469 PeerControllerSetDiscoveryResult,
2470 fidl::encoding::DefaultFuchsiaResourceDialect,
2471 >;
2472 fn r#set_discovery(
2473 &self,
2474 mut payload: &PeerControllerSetDiscoveryRequest,
2475 ) -> Self::SetDiscoveryResponseFut {
2476 fn _decode(
2477 mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
2478 ) -> Result<PeerControllerSetDiscoveryResult, fidl::Error> {
2479 let _response = fidl::client::decode_transaction_body::<
2480 fidl::encoding::FlexibleResultType<fidl::encoding::EmptyStruct, Error>,
2481 fidl::encoding::DefaultFuchsiaResourceDialect,
2482 0x3269624c9e1d6ab3,
2483 >(_buf?)?
2484 .into_result::<PeerControllerMarker>("set_discovery")?;
2485 Ok(_response.map(|x| x))
2486 }
2487 self.client.send_query_and_decode::<
2488 PeerControllerSetDiscoveryRequest,
2489 PeerControllerSetDiscoveryResult,
2490 >(
2491 payload,
2492 0x3269624c9e1d6ab3,
2493 fidl::encoding::DynamicFlags::FLEXIBLE,
2494 _decode,
2495 )
2496 }
2497}
2498
2499pub struct PeerControllerEventStream {
2500 event_receiver: fidl::client::EventReceiver<fidl::encoding::DefaultFuchsiaResourceDialect>,
2501}
2502
2503impl std::marker::Unpin for PeerControllerEventStream {}
2504
2505impl futures::stream::FusedStream for PeerControllerEventStream {
2506 fn is_terminated(&self) -> bool {
2507 self.event_receiver.is_terminated()
2508 }
2509}
2510
2511impl futures::Stream for PeerControllerEventStream {
2512 type Item = Result<PeerControllerEvent, fidl::Error>;
2513
2514 fn poll_next(
2515 mut self: std::pin::Pin<&mut Self>,
2516 cx: &mut std::task::Context<'_>,
2517 ) -> std::task::Poll<Option<Self::Item>> {
2518 match futures::ready!(futures::stream::StreamExt::poll_next_unpin(
2519 &mut self.event_receiver,
2520 cx
2521 )?) {
2522 Some(buf) => std::task::Poll::Ready(Some(PeerControllerEvent::decode(buf))),
2523 None => std::task::Poll::Ready(None),
2524 }
2525 }
2526}
2527
2528#[derive(Debug)]
2529pub enum PeerControllerEvent {
2530 #[non_exhaustive]
2531 _UnknownEvent {
2532 ordinal: u64,
2534 },
2535}
2536
2537impl PeerControllerEvent {
2538 fn decode(
2540 mut buf: <fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc,
2541 ) -> Result<PeerControllerEvent, fidl::Error> {
2542 let (bytes, _handles) = buf.split_mut();
2543 let (tx_header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
2544 debug_assert_eq!(tx_header.tx_id, 0);
2545 match tx_header.ordinal {
2546 _ if tx_header.dynamic_flags().contains(fidl::encoding::DynamicFlags::FLEXIBLE) => {
2547 Ok(PeerControllerEvent::_UnknownEvent { ordinal: tx_header.ordinal })
2548 }
2549 _ => Err(fidl::Error::UnknownOrdinal {
2550 ordinal: tx_header.ordinal,
2551 protocol_name:
2552 <PeerControllerMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
2553 }),
2554 }
2555 }
2556}
2557
2558pub struct PeerControllerRequestStream {
2560 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
2561 is_terminated: bool,
2562}
2563
2564impl std::marker::Unpin for PeerControllerRequestStream {}
2565
2566impl futures::stream::FusedStream for PeerControllerRequestStream {
2567 fn is_terminated(&self) -> bool {
2568 self.is_terminated
2569 }
2570}
2571
2572impl fidl::endpoints::RequestStream for PeerControllerRequestStream {
2573 type Protocol = PeerControllerMarker;
2574 type ControlHandle = PeerControllerControlHandle;
2575
2576 fn from_channel(channel: ::fidl::AsyncChannel) -> Self {
2577 Self { inner: std::sync::Arc::new(fidl::ServeInner::new(channel)), is_terminated: false }
2578 }
2579
2580 fn control_handle(&self) -> Self::ControlHandle {
2581 PeerControllerControlHandle { inner: self.inner.clone() }
2582 }
2583
2584 fn into_inner(
2585 self,
2586 ) -> (::std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>, bool)
2587 {
2588 (self.inner, self.is_terminated)
2589 }
2590
2591 fn from_inner(
2592 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
2593 is_terminated: bool,
2594 ) -> Self {
2595 Self { inner, is_terminated }
2596 }
2597}
2598
2599impl futures::Stream for PeerControllerRequestStream {
2600 type Item = Result<PeerControllerRequest, fidl::Error>;
2601
2602 fn poll_next(
2603 mut self: std::pin::Pin<&mut Self>,
2604 cx: &mut std::task::Context<'_>,
2605 ) -> std::task::Poll<Option<Self::Item>> {
2606 let this = &mut *self;
2607 if this.inner.check_shutdown(cx) {
2608 this.is_terminated = true;
2609 return std::task::Poll::Ready(None);
2610 }
2611 if this.is_terminated {
2612 panic!("polled PeerControllerRequestStream after completion");
2613 }
2614 fidl::encoding::with_tls_decode_buf::<_, fidl::encoding::DefaultFuchsiaResourceDialect>(
2615 |bytes, handles| {
2616 match this.inner.channel().read_etc(cx, bytes, handles) {
2617 std::task::Poll::Ready(Ok(())) => {}
2618 std::task::Poll::Pending => return std::task::Poll::Pending,
2619 std::task::Poll::Ready(Err(zx_status::Status::PEER_CLOSED)) => {
2620 this.is_terminated = true;
2621 return std::task::Poll::Ready(None);
2622 }
2623 std::task::Poll::Ready(Err(e)) => {
2624 return std::task::Poll::Ready(Some(Err(fidl::Error::ServerRequestRead(
2625 e.into(),
2626 ))));
2627 }
2628 }
2629
2630 let (header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
2632
2633 std::task::Poll::Ready(Some(match header.ordinal {
2634 0x482cf3745bab65f6 => {
2635 header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
2636 let mut req = fidl::new_empty!(
2637 fidl::encoding::EmptyPayload,
2638 fidl::encoding::DefaultFuchsiaResourceDialect
2639 );
2640 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
2641 let control_handle =
2642 PeerControllerControlHandle { inner: this.inner.clone() };
2643 Ok(PeerControllerRequest::GetKnownPeers {
2644 responder: PeerControllerGetKnownPeersResponder {
2645 control_handle: std::mem::ManuallyDrop::new(control_handle),
2646 tx_id: header.tx_id,
2647 },
2648 })
2649 }
2650 0x5f6f76185d19eb18 => {
2651 header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
2652 let mut req = fidl::new_empty!(
2653 PeerControllerGetPeerIdRequest,
2654 fidl::encoding::DefaultFuchsiaResourceDialect
2655 );
2656 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<PeerControllerGetPeerIdRequest>(&header, _body_bytes, handles, &mut req)?;
2657 let control_handle =
2658 PeerControllerControlHandle { inner: this.inner.clone() };
2659 Ok(PeerControllerRequest::GetPeerId {
2660 payload: req,
2661 responder: PeerControllerGetPeerIdResponder {
2662 control_handle: std::mem::ManuallyDrop::new(control_handle),
2663 tx_id: header.tx_id,
2664 },
2665 })
2666 }
2667 0x3269624c9e1d6ab3 => {
2668 header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
2669 let mut req = fidl::new_empty!(
2670 PeerControllerSetDiscoveryRequest,
2671 fidl::encoding::DefaultFuchsiaResourceDialect
2672 );
2673 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<PeerControllerSetDiscoveryRequest>(&header, _body_bytes, handles, &mut req)?;
2674 let control_handle =
2675 PeerControllerControlHandle { inner: this.inner.clone() };
2676 Ok(PeerControllerRequest::SetDiscovery {
2677 payload: req,
2678 responder: PeerControllerSetDiscoveryResponder {
2679 control_handle: std::mem::ManuallyDrop::new(control_handle),
2680 tx_id: header.tx_id,
2681 },
2682 })
2683 }
2684 _ if header.tx_id == 0
2685 && header
2686 .dynamic_flags()
2687 .contains(fidl::encoding::DynamicFlags::FLEXIBLE) =>
2688 {
2689 Ok(PeerControllerRequest::_UnknownMethod {
2690 ordinal: header.ordinal,
2691 control_handle: PeerControllerControlHandle {
2692 inner: this.inner.clone(),
2693 },
2694 method_type: fidl::MethodType::OneWay,
2695 })
2696 }
2697 _ if header
2698 .dynamic_flags()
2699 .contains(fidl::encoding::DynamicFlags::FLEXIBLE) =>
2700 {
2701 this.inner.send_framework_err(
2702 fidl::encoding::FrameworkErr::UnknownMethod,
2703 header.tx_id,
2704 header.ordinal,
2705 header.dynamic_flags(),
2706 (bytes, handles),
2707 )?;
2708 Ok(PeerControllerRequest::_UnknownMethod {
2709 ordinal: header.ordinal,
2710 control_handle: PeerControllerControlHandle {
2711 inner: this.inner.clone(),
2712 },
2713 method_type: fidl::MethodType::TwoWay,
2714 })
2715 }
2716 _ => Err(fidl::Error::UnknownOrdinal {
2717 ordinal: header.ordinal,
2718 protocol_name:
2719 <PeerControllerMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
2720 }),
2721 }))
2722 },
2723 )
2724 }
2725}
2726
2727#[derive(Debug)]
2728pub enum PeerControllerRequest {
2729 GetKnownPeers { responder: PeerControllerGetKnownPeersResponder },
2733 GetPeerId {
2739 payload: PeerControllerGetPeerIdRequest,
2740 responder: PeerControllerGetPeerIdResponder,
2741 },
2742 SetDiscovery {
2747 payload: PeerControllerSetDiscoveryRequest,
2748 responder: PeerControllerSetDiscoveryResponder,
2749 },
2750 #[non_exhaustive]
2752 _UnknownMethod {
2753 ordinal: u64,
2755 control_handle: PeerControllerControlHandle,
2756 method_type: fidl::MethodType,
2757 },
2758}
2759
2760impl PeerControllerRequest {
2761 #[allow(irrefutable_let_patterns)]
2762 pub fn into_get_known_peers(self) -> Option<(PeerControllerGetKnownPeersResponder)> {
2763 if let PeerControllerRequest::GetKnownPeers { responder } = self {
2764 Some((responder))
2765 } else {
2766 None
2767 }
2768 }
2769
2770 #[allow(irrefutable_let_patterns)]
2771 pub fn into_get_peer_id(
2772 self,
2773 ) -> Option<(PeerControllerGetPeerIdRequest, PeerControllerGetPeerIdResponder)> {
2774 if let PeerControllerRequest::GetPeerId { payload, responder } = self {
2775 Some((payload, responder))
2776 } else {
2777 None
2778 }
2779 }
2780
2781 #[allow(irrefutable_let_patterns)]
2782 pub fn into_set_discovery(
2783 self,
2784 ) -> Option<(PeerControllerSetDiscoveryRequest, PeerControllerSetDiscoveryResponder)> {
2785 if let PeerControllerRequest::SetDiscovery { payload, responder } = self {
2786 Some((payload, responder))
2787 } else {
2788 None
2789 }
2790 }
2791
2792 pub fn method_name(&self) -> &'static str {
2794 match *self {
2795 PeerControllerRequest::GetKnownPeers { .. } => "get_known_peers",
2796 PeerControllerRequest::GetPeerId { .. } => "get_peer_id",
2797 PeerControllerRequest::SetDiscovery { .. } => "set_discovery",
2798 PeerControllerRequest::_UnknownMethod {
2799 method_type: fidl::MethodType::OneWay, ..
2800 } => "unknown one-way method",
2801 PeerControllerRequest::_UnknownMethod {
2802 method_type: fidl::MethodType::TwoWay, ..
2803 } => "unknown two-way method",
2804 }
2805 }
2806}
2807
2808#[derive(Debug, Clone)]
2809pub struct PeerControllerControlHandle {
2810 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
2811}
2812
2813impl PeerControllerControlHandle {
2814 pub fn shutdown_with_epitaph(&self, status: impl Into<fidl::Epitaph>) {
2815 self.inner.shutdown_with_epitaph(status.into())
2816 }
2817}
2818
2819impl fidl::endpoints::ControlHandle for PeerControllerControlHandle {
2820 fn shutdown(&self) {
2821 self.inner.shutdown()
2822 }
2823
2824 fn shutdown_with_epitaph(&self, status: fidl::Epitaph) {
2825 self.inner.shutdown_with_epitaph(status)
2826 }
2827
2828 fn is_closed(&self) -> bool {
2829 self.inner.channel().is_closed()
2830 }
2831 fn on_closed(&self) -> fidl::OnSignalsRef<'_> {
2832 self.inner.channel().on_closed()
2833 }
2834
2835 #[cfg(target_os = "fuchsia")]
2836 fn signal_peer(
2837 &self,
2838 clear_mask: zx::Signals,
2839 set_mask: zx::Signals,
2840 ) -> Result<(), zx_status::Status> {
2841 use fidl::Peered;
2842 self.inner.channel().signal_peer(clear_mask, set_mask)
2843 }
2844}
2845
2846impl PeerControllerControlHandle {}
2847
2848#[must_use = "FIDL methods require a response to be sent"]
2849#[derive(Debug)]
2850pub struct PeerControllerGetKnownPeersResponder {
2851 control_handle: std::mem::ManuallyDrop<PeerControllerControlHandle>,
2852 tx_id: u32,
2853}
2854
2855impl std::ops::Drop for PeerControllerGetKnownPeersResponder {
2859 fn drop(&mut self) {
2860 self.control_handle.shutdown();
2861 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
2863 }
2864}
2865
2866impl fidl::endpoints::Responder for PeerControllerGetKnownPeersResponder {
2867 type ControlHandle = PeerControllerControlHandle;
2868
2869 fn control_handle(&self) -> &PeerControllerControlHandle {
2870 &self.control_handle
2871 }
2872
2873 fn drop_without_shutdown(mut self) {
2874 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
2876 std::mem::forget(self);
2878 }
2879}
2880
2881impl PeerControllerGetKnownPeersResponder {
2882 pub fn send(
2886 self,
2887 mut result: Result<&PeerControllerGetKnownPeersResponse, Error>,
2888 ) -> Result<(), fidl::Error> {
2889 let _result = self.send_raw(result);
2890 if _result.is_err() {
2891 self.control_handle.shutdown();
2892 }
2893 self.drop_without_shutdown();
2894 _result
2895 }
2896
2897 pub fn send_no_shutdown_on_err(
2899 self,
2900 mut result: Result<&PeerControllerGetKnownPeersResponse, Error>,
2901 ) -> Result<(), fidl::Error> {
2902 let _result = self.send_raw(result);
2903 self.drop_without_shutdown();
2904 _result
2905 }
2906
2907 fn send_raw(
2908 &self,
2909 mut result: Result<&PeerControllerGetKnownPeersResponse, Error>,
2910 ) -> Result<(), fidl::Error> {
2911 self.control_handle.inner.send::<fidl::encoding::FlexibleResultType<
2912 PeerControllerGetKnownPeersResponse,
2913 Error,
2914 >>(
2915 fidl::encoding::FlexibleResult::new(result),
2916 self.tx_id,
2917 0x482cf3745bab65f6,
2918 fidl::encoding::DynamicFlags::FLEXIBLE,
2919 )
2920 }
2921}
2922
2923#[must_use = "FIDL methods require a response to be sent"]
2924#[derive(Debug)]
2925pub struct PeerControllerGetPeerIdResponder {
2926 control_handle: std::mem::ManuallyDrop<PeerControllerControlHandle>,
2927 tx_id: u32,
2928}
2929
2930impl std::ops::Drop for PeerControllerGetPeerIdResponder {
2934 fn drop(&mut self) {
2935 self.control_handle.shutdown();
2936 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
2938 }
2939}
2940
2941impl fidl::endpoints::Responder for PeerControllerGetPeerIdResponder {
2942 type ControlHandle = PeerControllerControlHandle;
2943
2944 fn control_handle(&self) -> &PeerControllerControlHandle {
2945 &self.control_handle
2946 }
2947
2948 fn drop_without_shutdown(mut self) {
2949 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
2951 std::mem::forget(self);
2953 }
2954}
2955
2956impl PeerControllerGetPeerIdResponder {
2957 pub fn send(
2961 self,
2962 mut result: Result<&PeerControllerGetPeerIdResponse, Error>,
2963 ) -> Result<(), fidl::Error> {
2964 let _result = self.send_raw(result);
2965 if _result.is_err() {
2966 self.control_handle.shutdown();
2967 }
2968 self.drop_without_shutdown();
2969 _result
2970 }
2971
2972 pub fn send_no_shutdown_on_err(
2974 self,
2975 mut result: Result<&PeerControllerGetPeerIdResponse, Error>,
2976 ) -> Result<(), fidl::Error> {
2977 let _result = self.send_raw(result);
2978 self.drop_without_shutdown();
2979 _result
2980 }
2981
2982 fn send_raw(
2983 &self,
2984 mut result: Result<&PeerControllerGetPeerIdResponse, Error>,
2985 ) -> Result<(), fidl::Error> {
2986 self.control_handle.inner.send::<fidl::encoding::FlexibleResultType<
2987 PeerControllerGetPeerIdResponse,
2988 Error,
2989 >>(
2990 fidl::encoding::FlexibleResult::new(result),
2991 self.tx_id,
2992 0x5f6f76185d19eb18,
2993 fidl::encoding::DynamicFlags::FLEXIBLE,
2994 )
2995 }
2996}
2997
2998#[must_use = "FIDL methods require a response to be sent"]
2999#[derive(Debug)]
3000pub struct PeerControllerSetDiscoveryResponder {
3001 control_handle: std::mem::ManuallyDrop<PeerControllerControlHandle>,
3002 tx_id: u32,
3003}
3004
3005impl std::ops::Drop for PeerControllerSetDiscoveryResponder {
3009 fn drop(&mut self) {
3010 self.control_handle.shutdown();
3011 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
3013 }
3014}
3015
3016impl fidl::endpoints::Responder for PeerControllerSetDiscoveryResponder {
3017 type ControlHandle = PeerControllerControlHandle;
3018
3019 fn control_handle(&self) -> &PeerControllerControlHandle {
3020 &self.control_handle
3021 }
3022
3023 fn drop_without_shutdown(mut self) {
3024 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
3026 std::mem::forget(self);
3028 }
3029}
3030
3031impl PeerControllerSetDiscoveryResponder {
3032 pub fn send(self, mut result: Result<(), Error>) -> Result<(), fidl::Error> {
3036 let _result = self.send_raw(result);
3037 if _result.is_err() {
3038 self.control_handle.shutdown();
3039 }
3040 self.drop_without_shutdown();
3041 _result
3042 }
3043
3044 pub fn send_no_shutdown_on_err(self, mut result: Result<(), Error>) -> Result<(), fidl::Error> {
3046 let _result = self.send_raw(result);
3047 self.drop_without_shutdown();
3048 _result
3049 }
3050
3051 fn send_raw(&self, mut result: Result<(), Error>) -> Result<(), fidl::Error> {
3052 self.control_handle.inner.send::<fidl::encoding::FlexibleResultType<
3053 fidl::encoding::EmptyStruct,
3054 Error,
3055 >>(
3056 fidl::encoding::FlexibleResult::new(result),
3057 self.tx_id,
3058 0x3269624c9e1d6ab3,
3059 fidl::encoding::DynamicFlags::FLEXIBLE,
3060 )
3061 }
3062}
3063
3064#[derive(Debug, Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash)]
3065pub struct PeripheralControllerMarker;
3066
3067impl fidl::endpoints::ProtocolMarker for PeripheralControllerMarker {
3068 type Proxy = PeripheralControllerProxy;
3069 type RequestStream = PeripheralControllerRequestStream;
3070 #[cfg(target_os = "fuchsia")]
3071 type SynchronousProxy = PeripheralControllerSynchronousProxy;
3072
3073 const DEBUG_NAME: &'static str = "fuchsia.bluetooth.affordances.PeripheralController";
3074}
3075impl fidl::endpoints::DiscoverableProtocolMarker for PeripheralControllerMarker {}
3076pub type PeripheralControllerAdvertiseResult = Result<PeripheralControllerAdvertiseResponse, Error>;
3077
3078pub trait PeripheralControllerProxyInterface: Send + Sync {
3079 type AdvertiseResponseFut: std::future::Future<Output = Result<PeripheralControllerAdvertiseResult, fidl::Error>>
3080 + Send;
3081 fn r#advertise(
3082 &self,
3083 payload: &PeripheralControllerAdvertiseRequest,
3084 ) -> Self::AdvertiseResponseFut;
3085}
3086#[derive(Debug)]
3087#[cfg(target_os = "fuchsia")]
3088pub struct PeripheralControllerSynchronousProxy {
3089 client: fidl::client::sync::Client,
3090}
3091
3092#[cfg(target_os = "fuchsia")]
3093impl fidl::endpoints::SynchronousProxy for PeripheralControllerSynchronousProxy {
3094 type Proxy = PeripheralControllerProxy;
3095 type Protocol = PeripheralControllerMarker;
3096
3097 fn from_channel(inner: fidl::Channel) -> Self {
3098 Self::new(inner)
3099 }
3100
3101 fn into_channel(self) -> fidl::Channel {
3102 self.client.into_channel()
3103 }
3104
3105 fn as_channel(&self) -> &fidl::Channel {
3106 self.client.as_channel()
3107 }
3108}
3109
3110#[cfg(target_os = "fuchsia")]
3111impl PeripheralControllerSynchronousProxy {
3112 pub fn new(channel: fidl::Channel) -> Self {
3113 Self { client: fidl::client::sync::Client::new(channel) }
3114 }
3115
3116 pub fn into_channel(self) -> fidl::Channel {
3117 self.client.into_channel()
3118 }
3119
3120 pub fn wait_for_event(
3123 &self,
3124 deadline: zx::MonotonicInstant,
3125 ) -> Result<PeripheralControllerEvent, fidl::Error> {
3126 PeripheralControllerEvent::decode(
3127 self.client.wait_for_event::<PeripheralControllerMarker>(deadline)?,
3128 )
3129 }
3130
3131 pub fn r#advertise(
3137 &self,
3138 mut payload: &PeripheralControllerAdvertiseRequest,
3139 ___deadline: zx::MonotonicInstant,
3140 ) -> Result<PeripheralControllerAdvertiseResult, fidl::Error> {
3141 let _response = self.client.send_query::<
3142 PeripheralControllerAdvertiseRequest,
3143 fidl::encoding::FlexibleResultType<PeripheralControllerAdvertiseResponse, Error>,
3144 PeripheralControllerMarker,
3145 >(
3146 payload,
3147 0x59079a81362a66f3,
3148 fidl::encoding::DynamicFlags::FLEXIBLE,
3149 ___deadline,
3150 )?
3151 .into_result::<PeripheralControllerMarker>("advertise")?;
3152 Ok(_response.map(|x| x))
3153 }
3154}
3155
3156#[cfg(target_os = "fuchsia")]
3157impl From<PeripheralControllerSynchronousProxy> for zx::NullableHandle {
3158 fn from(value: PeripheralControllerSynchronousProxy) -> Self {
3159 value.into_channel().into()
3160 }
3161}
3162
3163#[cfg(target_os = "fuchsia")]
3164impl From<fidl::Channel> for PeripheralControllerSynchronousProxy {
3165 fn from(value: fidl::Channel) -> Self {
3166 Self::new(value)
3167 }
3168}
3169
3170#[cfg(target_os = "fuchsia")]
3171impl fidl::endpoints::FromClient for PeripheralControllerSynchronousProxy {
3172 type Protocol = PeripheralControllerMarker;
3173
3174 fn from_client(value: fidl::endpoints::ClientEnd<PeripheralControllerMarker>) -> Self {
3175 Self::new(value.into_channel())
3176 }
3177}
3178
3179#[derive(Debug, Clone)]
3180pub struct PeripheralControllerProxy {
3181 client: fidl::client::Client<fidl::encoding::DefaultFuchsiaResourceDialect>,
3182}
3183
3184impl fidl::endpoints::Proxy for PeripheralControllerProxy {
3185 type Protocol = PeripheralControllerMarker;
3186
3187 fn from_channel(inner: ::fidl::AsyncChannel) -> Self {
3188 Self::new(inner)
3189 }
3190
3191 fn into_channel(self) -> Result<::fidl::AsyncChannel, Self> {
3192 self.client.into_channel().map_err(|client| Self { client })
3193 }
3194
3195 fn as_channel(&self) -> &::fidl::AsyncChannel {
3196 self.client.as_channel()
3197 }
3198}
3199
3200impl PeripheralControllerProxy {
3201 pub fn new(channel: ::fidl::AsyncChannel) -> Self {
3203 let protocol_name =
3204 <PeripheralControllerMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
3205 Self { client: fidl::client::Client::new(channel, protocol_name) }
3206 }
3207
3208 pub fn take_event_stream(&self) -> PeripheralControllerEventStream {
3214 PeripheralControllerEventStream { event_receiver: self.client.take_event_receiver() }
3215 }
3216
3217 pub fn r#advertise(
3223 &self,
3224 mut payload: &PeripheralControllerAdvertiseRequest,
3225 ) -> fidl::client::QueryResponseFut<
3226 PeripheralControllerAdvertiseResult,
3227 fidl::encoding::DefaultFuchsiaResourceDialect,
3228 > {
3229 PeripheralControllerProxyInterface::r#advertise(self, payload)
3230 }
3231}
3232
3233impl PeripheralControllerProxyInterface for PeripheralControllerProxy {
3234 type AdvertiseResponseFut = fidl::client::QueryResponseFut<
3235 PeripheralControllerAdvertiseResult,
3236 fidl::encoding::DefaultFuchsiaResourceDialect,
3237 >;
3238 fn r#advertise(
3239 &self,
3240 mut payload: &PeripheralControllerAdvertiseRequest,
3241 ) -> Self::AdvertiseResponseFut {
3242 fn _decode(
3243 mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
3244 ) -> Result<PeripheralControllerAdvertiseResult, fidl::Error> {
3245 let _response = fidl::client::decode_transaction_body::<
3246 fidl::encoding::FlexibleResultType<PeripheralControllerAdvertiseResponse, Error>,
3247 fidl::encoding::DefaultFuchsiaResourceDialect,
3248 0x59079a81362a66f3,
3249 >(_buf?)?
3250 .into_result::<PeripheralControllerMarker>("advertise")?;
3251 Ok(_response.map(|x| x))
3252 }
3253 self.client.send_query_and_decode::<
3254 PeripheralControllerAdvertiseRequest,
3255 PeripheralControllerAdvertiseResult,
3256 >(
3257 payload,
3258 0x59079a81362a66f3,
3259 fidl::encoding::DynamicFlags::FLEXIBLE,
3260 _decode,
3261 )
3262 }
3263}
3264
3265pub struct PeripheralControllerEventStream {
3266 event_receiver: fidl::client::EventReceiver<fidl::encoding::DefaultFuchsiaResourceDialect>,
3267}
3268
3269impl std::marker::Unpin for PeripheralControllerEventStream {}
3270
3271impl futures::stream::FusedStream for PeripheralControllerEventStream {
3272 fn is_terminated(&self) -> bool {
3273 self.event_receiver.is_terminated()
3274 }
3275}
3276
3277impl futures::Stream for PeripheralControllerEventStream {
3278 type Item = Result<PeripheralControllerEvent, fidl::Error>;
3279
3280 fn poll_next(
3281 mut self: std::pin::Pin<&mut Self>,
3282 cx: &mut std::task::Context<'_>,
3283 ) -> std::task::Poll<Option<Self::Item>> {
3284 match futures::ready!(futures::stream::StreamExt::poll_next_unpin(
3285 &mut self.event_receiver,
3286 cx
3287 )?) {
3288 Some(buf) => std::task::Poll::Ready(Some(PeripheralControllerEvent::decode(buf))),
3289 None => std::task::Poll::Ready(None),
3290 }
3291 }
3292}
3293
3294#[derive(Debug)]
3295pub enum PeripheralControllerEvent {
3296 #[non_exhaustive]
3297 _UnknownEvent {
3298 ordinal: u64,
3300 },
3301}
3302
3303impl PeripheralControllerEvent {
3304 fn decode(
3306 mut buf: <fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc,
3307 ) -> Result<PeripheralControllerEvent, fidl::Error> {
3308 let (bytes, _handles) = buf.split_mut();
3309 let (tx_header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
3310 debug_assert_eq!(tx_header.tx_id, 0);
3311 match tx_header.ordinal {
3312 _ if tx_header.dynamic_flags().contains(fidl::encoding::DynamicFlags::FLEXIBLE) => {
3313 Ok(PeripheralControllerEvent::_UnknownEvent { ordinal: tx_header.ordinal })
3314 }
3315 _ => Err(fidl::Error::UnknownOrdinal {
3316 ordinal: tx_header.ordinal,
3317 protocol_name:
3318 <PeripheralControllerMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
3319 }),
3320 }
3321 }
3322}
3323
3324pub struct PeripheralControllerRequestStream {
3326 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
3327 is_terminated: bool,
3328}
3329
3330impl std::marker::Unpin for PeripheralControllerRequestStream {}
3331
3332impl futures::stream::FusedStream for PeripheralControllerRequestStream {
3333 fn is_terminated(&self) -> bool {
3334 self.is_terminated
3335 }
3336}
3337
3338impl fidl::endpoints::RequestStream for PeripheralControllerRequestStream {
3339 type Protocol = PeripheralControllerMarker;
3340 type ControlHandle = PeripheralControllerControlHandle;
3341
3342 fn from_channel(channel: ::fidl::AsyncChannel) -> Self {
3343 Self { inner: std::sync::Arc::new(fidl::ServeInner::new(channel)), is_terminated: false }
3344 }
3345
3346 fn control_handle(&self) -> Self::ControlHandle {
3347 PeripheralControllerControlHandle { inner: self.inner.clone() }
3348 }
3349
3350 fn into_inner(
3351 self,
3352 ) -> (::std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>, bool)
3353 {
3354 (self.inner, self.is_terminated)
3355 }
3356
3357 fn from_inner(
3358 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
3359 is_terminated: bool,
3360 ) -> Self {
3361 Self { inner, is_terminated }
3362 }
3363}
3364
3365impl futures::Stream for PeripheralControllerRequestStream {
3366 type Item = Result<PeripheralControllerRequest, fidl::Error>;
3367
3368 fn poll_next(
3369 mut self: std::pin::Pin<&mut Self>,
3370 cx: &mut std::task::Context<'_>,
3371 ) -> std::task::Poll<Option<Self::Item>> {
3372 let this = &mut *self;
3373 if this.inner.check_shutdown(cx) {
3374 this.is_terminated = true;
3375 return std::task::Poll::Ready(None);
3376 }
3377 if this.is_terminated {
3378 panic!("polled PeripheralControllerRequestStream after completion");
3379 }
3380 fidl::encoding::with_tls_decode_buf::<_, fidl::encoding::DefaultFuchsiaResourceDialect>(
3381 |bytes, handles| {
3382 match this.inner.channel().read_etc(cx, bytes, handles) {
3383 std::task::Poll::Ready(Ok(())) => {}
3384 std::task::Poll::Pending => return std::task::Poll::Pending,
3385 std::task::Poll::Ready(Err(zx_status::Status::PEER_CLOSED)) => {
3386 this.is_terminated = true;
3387 return std::task::Poll::Ready(None);
3388 }
3389 std::task::Poll::Ready(Err(e)) => {
3390 return std::task::Poll::Ready(Some(Err(fidl::Error::ServerRequestRead(
3391 e.into(),
3392 ))));
3393 }
3394 }
3395
3396 let (header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
3398
3399 std::task::Poll::Ready(Some(match header.ordinal {
3400 0x59079a81362a66f3 => {
3401 header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
3402 let mut req = fidl::new_empty!(PeripheralControllerAdvertiseRequest, fidl::encoding::DefaultFuchsiaResourceDialect);
3403 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<PeripheralControllerAdvertiseRequest>(&header, _body_bytes, handles, &mut req)?;
3404 let control_handle = PeripheralControllerControlHandle {
3405 inner: this.inner.clone(),
3406 };
3407 Ok(PeripheralControllerRequest::Advertise {payload: req,
3408 responder: PeripheralControllerAdvertiseResponder {
3409 control_handle: std::mem::ManuallyDrop::new(control_handle),
3410 tx_id: header.tx_id,
3411 },
3412 })
3413 }
3414 _ if header.tx_id == 0 && header.dynamic_flags().contains(fidl::encoding::DynamicFlags::FLEXIBLE) => {
3415 Ok(PeripheralControllerRequest::_UnknownMethod {
3416 ordinal: header.ordinal,
3417 control_handle: PeripheralControllerControlHandle { inner: this.inner.clone() },
3418 method_type: fidl::MethodType::OneWay,
3419 })
3420 }
3421 _ if header.dynamic_flags().contains(fidl::encoding::DynamicFlags::FLEXIBLE) => {
3422 this.inner.send_framework_err(
3423 fidl::encoding::FrameworkErr::UnknownMethod,
3424 header.tx_id,
3425 header.ordinal,
3426 header.dynamic_flags(),
3427 (bytes, handles),
3428 )?;
3429 Ok(PeripheralControllerRequest::_UnknownMethod {
3430 ordinal: header.ordinal,
3431 control_handle: PeripheralControllerControlHandle { inner: this.inner.clone() },
3432 method_type: fidl::MethodType::TwoWay,
3433 })
3434 }
3435 _ => Err(fidl::Error::UnknownOrdinal {
3436 ordinal: header.ordinal,
3437 protocol_name: <PeripheralControllerMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
3438 }),
3439 }))
3440 },
3441 )
3442 }
3443}
3444
3445#[derive(Debug)]
3446pub enum PeripheralControllerRequest {
3447 Advertise {
3453 payload: PeripheralControllerAdvertiseRequest,
3454 responder: PeripheralControllerAdvertiseResponder,
3455 },
3456 #[non_exhaustive]
3458 _UnknownMethod {
3459 ordinal: u64,
3461 control_handle: PeripheralControllerControlHandle,
3462 method_type: fidl::MethodType,
3463 },
3464}
3465
3466impl PeripheralControllerRequest {
3467 #[allow(irrefutable_let_patterns)]
3468 pub fn into_advertise(
3469 self,
3470 ) -> Option<(PeripheralControllerAdvertiseRequest, PeripheralControllerAdvertiseResponder)>
3471 {
3472 if let PeripheralControllerRequest::Advertise { payload, responder } = self {
3473 Some((payload, responder))
3474 } else {
3475 None
3476 }
3477 }
3478
3479 pub fn method_name(&self) -> &'static str {
3481 match *self {
3482 PeripheralControllerRequest::Advertise { .. } => "advertise",
3483 PeripheralControllerRequest::_UnknownMethod {
3484 method_type: fidl::MethodType::OneWay,
3485 ..
3486 } => "unknown one-way method",
3487 PeripheralControllerRequest::_UnknownMethod {
3488 method_type: fidl::MethodType::TwoWay,
3489 ..
3490 } => "unknown two-way method",
3491 }
3492 }
3493}
3494
3495#[derive(Debug, Clone)]
3496pub struct PeripheralControllerControlHandle {
3497 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
3498}
3499
3500impl PeripheralControllerControlHandle {
3501 pub fn shutdown_with_epitaph(&self, status: impl Into<fidl::Epitaph>) {
3502 self.inner.shutdown_with_epitaph(status.into())
3503 }
3504}
3505
3506impl fidl::endpoints::ControlHandle for PeripheralControllerControlHandle {
3507 fn shutdown(&self) {
3508 self.inner.shutdown()
3509 }
3510
3511 fn shutdown_with_epitaph(&self, status: fidl::Epitaph) {
3512 self.inner.shutdown_with_epitaph(status)
3513 }
3514
3515 fn is_closed(&self) -> bool {
3516 self.inner.channel().is_closed()
3517 }
3518 fn on_closed(&self) -> fidl::OnSignalsRef<'_> {
3519 self.inner.channel().on_closed()
3520 }
3521
3522 #[cfg(target_os = "fuchsia")]
3523 fn signal_peer(
3524 &self,
3525 clear_mask: zx::Signals,
3526 set_mask: zx::Signals,
3527 ) -> Result<(), zx_status::Status> {
3528 use fidl::Peered;
3529 self.inner.channel().signal_peer(clear_mask, set_mask)
3530 }
3531}
3532
3533impl PeripheralControllerControlHandle {}
3534
3535#[must_use = "FIDL methods require a response to be sent"]
3536#[derive(Debug)]
3537pub struct PeripheralControllerAdvertiseResponder {
3538 control_handle: std::mem::ManuallyDrop<PeripheralControllerControlHandle>,
3539 tx_id: u32,
3540}
3541
3542impl std::ops::Drop for PeripheralControllerAdvertiseResponder {
3546 fn drop(&mut self) {
3547 self.control_handle.shutdown();
3548 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
3550 }
3551}
3552
3553impl fidl::endpoints::Responder for PeripheralControllerAdvertiseResponder {
3554 type ControlHandle = PeripheralControllerControlHandle;
3555
3556 fn control_handle(&self) -> &PeripheralControllerControlHandle {
3557 &self.control_handle
3558 }
3559
3560 fn drop_without_shutdown(mut self) {
3561 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
3563 std::mem::forget(self);
3565 }
3566}
3567
3568impl PeripheralControllerAdvertiseResponder {
3569 pub fn send(
3573 self,
3574 mut result: Result<&PeripheralControllerAdvertiseResponse, Error>,
3575 ) -> Result<(), fidl::Error> {
3576 let _result = self.send_raw(result);
3577 if _result.is_err() {
3578 self.control_handle.shutdown();
3579 }
3580 self.drop_without_shutdown();
3581 _result
3582 }
3583
3584 pub fn send_no_shutdown_on_err(
3586 self,
3587 mut result: Result<&PeripheralControllerAdvertiseResponse, Error>,
3588 ) -> Result<(), fidl::Error> {
3589 let _result = self.send_raw(result);
3590 self.drop_without_shutdown();
3591 _result
3592 }
3593
3594 fn send_raw(
3595 &self,
3596 mut result: Result<&PeripheralControllerAdvertiseResponse, Error>,
3597 ) -> Result<(), fidl::Error> {
3598 self.control_handle.inner.send::<fidl::encoding::FlexibleResultType<
3599 PeripheralControllerAdvertiseResponse,
3600 Error,
3601 >>(
3602 fidl::encoding::FlexibleResult::new(result),
3603 self.tx_id,
3604 0x59079a81362a66f3,
3605 fidl::encoding::DynamicFlags::FLEXIBLE,
3606 )
3607 }
3608}
3609
3610#[derive(Debug, Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash)]
3611pub struct ScanResultListenerMarker;
3612
3613impl fidl::endpoints::ProtocolMarker for ScanResultListenerMarker {
3614 type Proxy = ScanResultListenerProxy;
3615 type RequestStream = ScanResultListenerRequestStream;
3616 #[cfg(target_os = "fuchsia")]
3617 type SynchronousProxy = ScanResultListenerSynchronousProxy;
3618
3619 const DEBUG_NAME: &'static str = "(anonymous) ScanResultListener";
3620}
3621
3622pub trait ScanResultListenerProxyInterface: Send + Sync {
3623 type OnPeersDiscoveredResponseFut: std::future::Future<Output = Result<(), fidl::Error>> + Send;
3624 fn r#on_peers_discovered(
3625 &self,
3626 payload: &ScanResultListenerOnPeersDiscoveredRequest,
3627 ) -> Self::OnPeersDiscoveredResponseFut;
3628}
3629#[derive(Debug)]
3630#[cfg(target_os = "fuchsia")]
3631pub struct ScanResultListenerSynchronousProxy {
3632 client: fidl::client::sync::Client,
3633}
3634
3635#[cfg(target_os = "fuchsia")]
3636impl fidl::endpoints::SynchronousProxy for ScanResultListenerSynchronousProxy {
3637 type Proxy = ScanResultListenerProxy;
3638 type Protocol = ScanResultListenerMarker;
3639
3640 fn from_channel(inner: fidl::Channel) -> Self {
3641 Self::new(inner)
3642 }
3643
3644 fn into_channel(self) -> fidl::Channel {
3645 self.client.into_channel()
3646 }
3647
3648 fn as_channel(&self) -> &fidl::Channel {
3649 self.client.as_channel()
3650 }
3651}
3652
3653#[cfg(target_os = "fuchsia")]
3654impl ScanResultListenerSynchronousProxy {
3655 pub fn new(channel: fidl::Channel) -> Self {
3656 Self { client: fidl::client::sync::Client::new(channel) }
3657 }
3658
3659 pub fn into_channel(self) -> fidl::Channel {
3660 self.client.into_channel()
3661 }
3662
3663 pub fn wait_for_event(
3666 &self,
3667 deadline: zx::MonotonicInstant,
3668 ) -> Result<ScanResultListenerEvent, fidl::Error> {
3669 ScanResultListenerEvent::decode(
3670 self.client.wait_for_event::<ScanResultListenerMarker>(deadline)?,
3671 )
3672 }
3673
3674 pub fn r#on_peers_discovered(
3676 &self,
3677 mut payload: &ScanResultListenerOnPeersDiscoveredRequest,
3678 ___deadline: zx::MonotonicInstant,
3679 ) -> Result<(), fidl::Error> {
3680 let _response = self.client.send_query::<
3681 ScanResultListenerOnPeersDiscoveredRequest,
3682 fidl::encoding::FlexibleType<fidl::encoding::EmptyStruct>,
3683 ScanResultListenerMarker,
3684 >(
3685 payload,
3686 0x111ea99f3f0c8009,
3687 fidl::encoding::DynamicFlags::FLEXIBLE,
3688 ___deadline,
3689 )?
3690 .into_result::<ScanResultListenerMarker>("on_peers_discovered")?;
3691 Ok(_response)
3692 }
3693}
3694
3695#[cfg(target_os = "fuchsia")]
3696impl From<ScanResultListenerSynchronousProxy> for zx::NullableHandle {
3697 fn from(value: ScanResultListenerSynchronousProxy) -> Self {
3698 value.into_channel().into()
3699 }
3700}
3701
3702#[cfg(target_os = "fuchsia")]
3703impl From<fidl::Channel> for ScanResultListenerSynchronousProxy {
3704 fn from(value: fidl::Channel) -> Self {
3705 Self::new(value)
3706 }
3707}
3708
3709#[cfg(target_os = "fuchsia")]
3710impl fidl::endpoints::FromClient for ScanResultListenerSynchronousProxy {
3711 type Protocol = ScanResultListenerMarker;
3712
3713 fn from_client(value: fidl::endpoints::ClientEnd<ScanResultListenerMarker>) -> Self {
3714 Self::new(value.into_channel())
3715 }
3716}
3717
3718#[derive(Debug, Clone)]
3719pub struct ScanResultListenerProxy {
3720 client: fidl::client::Client<fidl::encoding::DefaultFuchsiaResourceDialect>,
3721}
3722
3723impl fidl::endpoints::Proxy for ScanResultListenerProxy {
3724 type Protocol = ScanResultListenerMarker;
3725
3726 fn from_channel(inner: ::fidl::AsyncChannel) -> Self {
3727 Self::new(inner)
3728 }
3729
3730 fn into_channel(self) -> Result<::fidl::AsyncChannel, Self> {
3731 self.client.into_channel().map_err(|client| Self { client })
3732 }
3733
3734 fn as_channel(&self) -> &::fidl::AsyncChannel {
3735 self.client.as_channel()
3736 }
3737}
3738
3739impl ScanResultListenerProxy {
3740 pub fn new(channel: ::fidl::AsyncChannel) -> Self {
3742 let protocol_name =
3743 <ScanResultListenerMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
3744 Self { client: fidl::client::Client::new(channel, protocol_name) }
3745 }
3746
3747 pub fn take_event_stream(&self) -> ScanResultListenerEventStream {
3753 ScanResultListenerEventStream { event_receiver: self.client.take_event_receiver() }
3754 }
3755
3756 pub fn r#on_peers_discovered(
3758 &self,
3759 mut payload: &ScanResultListenerOnPeersDiscoveredRequest,
3760 ) -> fidl::client::QueryResponseFut<(), fidl::encoding::DefaultFuchsiaResourceDialect> {
3761 ScanResultListenerProxyInterface::r#on_peers_discovered(self, payload)
3762 }
3763}
3764
3765impl ScanResultListenerProxyInterface for ScanResultListenerProxy {
3766 type OnPeersDiscoveredResponseFut =
3767 fidl::client::QueryResponseFut<(), fidl::encoding::DefaultFuchsiaResourceDialect>;
3768 fn r#on_peers_discovered(
3769 &self,
3770 mut payload: &ScanResultListenerOnPeersDiscoveredRequest,
3771 ) -> Self::OnPeersDiscoveredResponseFut {
3772 fn _decode(
3773 mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
3774 ) -> Result<(), fidl::Error> {
3775 let _response = fidl::client::decode_transaction_body::<
3776 fidl::encoding::FlexibleType<fidl::encoding::EmptyStruct>,
3777 fidl::encoding::DefaultFuchsiaResourceDialect,
3778 0x111ea99f3f0c8009,
3779 >(_buf?)?
3780 .into_result::<ScanResultListenerMarker>("on_peers_discovered")?;
3781 Ok(_response)
3782 }
3783 self.client.send_query_and_decode::<ScanResultListenerOnPeersDiscoveredRequest, ()>(
3784 payload,
3785 0x111ea99f3f0c8009,
3786 fidl::encoding::DynamicFlags::FLEXIBLE,
3787 _decode,
3788 )
3789 }
3790}
3791
3792pub struct ScanResultListenerEventStream {
3793 event_receiver: fidl::client::EventReceiver<fidl::encoding::DefaultFuchsiaResourceDialect>,
3794}
3795
3796impl std::marker::Unpin for ScanResultListenerEventStream {}
3797
3798impl futures::stream::FusedStream for ScanResultListenerEventStream {
3799 fn is_terminated(&self) -> bool {
3800 self.event_receiver.is_terminated()
3801 }
3802}
3803
3804impl futures::Stream for ScanResultListenerEventStream {
3805 type Item = Result<ScanResultListenerEvent, fidl::Error>;
3806
3807 fn poll_next(
3808 mut self: std::pin::Pin<&mut Self>,
3809 cx: &mut std::task::Context<'_>,
3810 ) -> std::task::Poll<Option<Self::Item>> {
3811 match futures::ready!(futures::stream::StreamExt::poll_next_unpin(
3812 &mut self.event_receiver,
3813 cx
3814 )?) {
3815 Some(buf) => std::task::Poll::Ready(Some(ScanResultListenerEvent::decode(buf))),
3816 None => std::task::Poll::Ready(None),
3817 }
3818 }
3819}
3820
3821#[derive(Debug)]
3822pub enum ScanResultListenerEvent {
3823 #[non_exhaustive]
3824 _UnknownEvent {
3825 ordinal: u64,
3827 },
3828}
3829
3830impl ScanResultListenerEvent {
3831 fn decode(
3833 mut buf: <fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc,
3834 ) -> Result<ScanResultListenerEvent, fidl::Error> {
3835 let (bytes, _handles) = buf.split_mut();
3836 let (tx_header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
3837 debug_assert_eq!(tx_header.tx_id, 0);
3838 match tx_header.ordinal {
3839 _ if tx_header.dynamic_flags().contains(fidl::encoding::DynamicFlags::FLEXIBLE) => {
3840 Ok(ScanResultListenerEvent::_UnknownEvent { ordinal: tx_header.ordinal })
3841 }
3842 _ => Err(fidl::Error::UnknownOrdinal {
3843 ordinal: tx_header.ordinal,
3844 protocol_name:
3845 <ScanResultListenerMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
3846 }),
3847 }
3848 }
3849}
3850
3851pub struct ScanResultListenerRequestStream {
3853 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
3854 is_terminated: bool,
3855}
3856
3857impl std::marker::Unpin for ScanResultListenerRequestStream {}
3858
3859impl futures::stream::FusedStream for ScanResultListenerRequestStream {
3860 fn is_terminated(&self) -> bool {
3861 self.is_terminated
3862 }
3863}
3864
3865impl fidl::endpoints::RequestStream for ScanResultListenerRequestStream {
3866 type Protocol = ScanResultListenerMarker;
3867 type ControlHandle = ScanResultListenerControlHandle;
3868
3869 fn from_channel(channel: ::fidl::AsyncChannel) -> Self {
3870 Self { inner: std::sync::Arc::new(fidl::ServeInner::new(channel)), is_terminated: false }
3871 }
3872
3873 fn control_handle(&self) -> Self::ControlHandle {
3874 ScanResultListenerControlHandle { inner: self.inner.clone() }
3875 }
3876
3877 fn into_inner(
3878 self,
3879 ) -> (::std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>, bool)
3880 {
3881 (self.inner, self.is_terminated)
3882 }
3883
3884 fn from_inner(
3885 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
3886 is_terminated: bool,
3887 ) -> Self {
3888 Self { inner, is_terminated }
3889 }
3890}
3891
3892impl futures::Stream for ScanResultListenerRequestStream {
3893 type Item = Result<ScanResultListenerRequest, fidl::Error>;
3894
3895 fn poll_next(
3896 mut self: std::pin::Pin<&mut Self>,
3897 cx: &mut std::task::Context<'_>,
3898 ) -> std::task::Poll<Option<Self::Item>> {
3899 let this = &mut *self;
3900 if this.inner.check_shutdown(cx) {
3901 this.is_terminated = true;
3902 return std::task::Poll::Ready(None);
3903 }
3904 if this.is_terminated {
3905 panic!("polled ScanResultListenerRequestStream after completion");
3906 }
3907 fidl::encoding::with_tls_decode_buf::<_, fidl::encoding::DefaultFuchsiaResourceDialect>(
3908 |bytes, handles| {
3909 match this.inner.channel().read_etc(cx, bytes, handles) {
3910 std::task::Poll::Ready(Ok(())) => {}
3911 std::task::Poll::Pending => return std::task::Poll::Pending,
3912 std::task::Poll::Ready(Err(zx_status::Status::PEER_CLOSED)) => {
3913 this.is_terminated = true;
3914 return std::task::Poll::Ready(None);
3915 }
3916 std::task::Poll::Ready(Err(e)) => {
3917 return std::task::Poll::Ready(Some(Err(fidl::Error::ServerRequestRead(
3918 e.into(),
3919 ))));
3920 }
3921 }
3922
3923 let (header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
3925
3926 std::task::Poll::Ready(Some(match header.ordinal {
3927 0x111ea99f3f0c8009 => {
3928 header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
3929 let mut req = fidl::new_empty!(ScanResultListenerOnPeersDiscoveredRequest, fidl::encoding::DefaultFuchsiaResourceDialect);
3930 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<ScanResultListenerOnPeersDiscoveredRequest>(&header, _body_bytes, handles, &mut req)?;
3931 let control_handle = ScanResultListenerControlHandle {
3932 inner: this.inner.clone(),
3933 };
3934 Ok(ScanResultListenerRequest::OnPeersDiscovered {payload: req,
3935 responder: ScanResultListenerOnPeersDiscoveredResponder {
3936 control_handle: std::mem::ManuallyDrop::new(control_handle),
3937 tx_id: header.tx_id,
3938 },
3939 })
3940 }
3941 _ if header.tx_id == 0 && header.dynamic_flags().contains(fidl::encoding::DynamicFlags::FLEXIBLE) => {
3942 Ok(ScanResultListenerRequest::_UnknownMethod {
3943 ordinal: header.ordinal,
3944 control_handle: ScanResultListenerControlHandle { inner: this.inner.clone() },
3945 method_type: fidl::MethodType::OneWay,
3946 })
3947 }
3948 _ if header.dynamic_flags().contains(fidl::encoding::DynamicFlags::FLEXIBLE) => {
3949 this.inner.send_framework_err(
3950 fidl::encoding::FrameworkErr::UnknownMethod,
3951 header.tx_id,
3952 header.ordinal,
3953 header.dynamic_flags(),
3954 (bytes, handles),
3955 )?;
3956 Ok(ScanResultListenerRequest::_UnknownMethod {
3957 ordinal: header.ordinal,
3958 control_handle: ScanResultListenerControlHandle { inner: this.inner.clone() },
3959 method_type: fidl::MethodType::TwoWay,
3960 })
3961 }
3962 _ => Err(fidl::Error::UnknownOrdinal {
3963 ordinal: header.ordinal,
3964 protocol_name: <ScanResultListenerMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
3965 }),
3966 }))
3967 },
3968 )
3969 }
3970}
3971
3972#[derive(Debug)]
3974pub enum ScanResultListenerRequest {
3975 OnPeersDiscovered {
3977 payload: ScanResultListenerOnPeersDiscoveredRequest,
3978 responder: ScanResultListenerOnPeersDiscoveredResponder,
3979 },
3980 #[non_exhaustive]
3982 _UnknownMethod {
3983 ordinal: u64,
3985 control_handle: ScanResultListenerControlHandle,
3986 method_type: fidl::MethodType,
3987 },
3988}
3989
3990impl ScanResultListenerRequest {
3991 #[allow(irrefutable_let_patterns)]
3992 pub fn into_on_peers_discovered(
3993 self,
3994 ) -> Option<(
3995 ScanResultListenerOnPeersDiscoveredRequest,
3996 ScanResultListenerOnPeersDiscoveredResponder,
3997 )> {
3998 if let ScanResultListenerRequest::OnPeersDiscovered { payload, responder } = self {
3999 Some((payload, responder))
4000 } else {
4001 None
4002 }
4003 }
4004
4005 pub fn method_name(&self) -> &'static str {
4007 match *self {
4008 ScanResultListenerRequest::OnPeersDiscovered { .. } => "on_peers_discovered",
4009 ScanResultListenerRequest::_UnknownMethod {
4010 method_type: fidl::MethodType::OneWay,
4011 ..
4012 } => "unknown one-way method",
4013 ScanResultListenerRequest::_UnknownMethod {
4014 method_type: fidl::MethodType::TwoWay,
4015 ..
4016 } => "unknown two-way method",
4017 }
4018 }
4019}
4020
4021#[derive(Debug, Clone)]
4022pub struct ScanResultListenerControlHandle {
4023 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
4024}
4025
4026impl ScanResultListenerControlHandle {
4027 pub fn shutdown_with_epitaph(&self, status: impl Into<fidl::Epitaph>) {
4028 self.inner.shutdown_with_epitaph(status.into())
4029 }
4030}
4031
4032impl fidl::endpoints::ControlHandle for ScanResultListenerControlHandle {
4033 fn shutdown(&self) {
4034 self.inner.shutdown()
4035 }
4036
4037 fn shutdown_with_epitaph(&self, status: fidl::Epitaph) {
4038 self.inner.shutdown_with_epitaph(status)
4039 }
4040
4041 fn is_closed(&self) -> bool {
4042 self.inner.channel().is_closed()
4043 }
4044 fn on_closed(&self) -> fidl::OnSignalsRef<'_> {
4045 self.inner.channel().on_closed()
4046 }
4047
4048 #[cfg(target_os = "fuchsia")]
4049 fn signal_peer(
4050 &self,
4051 clear_mask: zx::Signals,
4052 set_mask: zx::Signals,
4053 ) -> Result<(), zx_status::Status> {
4054 use fidl::Peered;
4055 self.inner.channel().signal_peer(clear_mask, set_mask)
4056 }
4057}
4058
4059impl ScanResultListenerControlHandle {}
4060
4061#[must_use = "FIDL methods require a response to be sent"]
4062#[derive(Debug)]
4063pub struct ScanResultListenerOnPeersDiscoveredResponder {
4064 control_handle: std::mem::ManuallyDrop<ScanResultListenerControlHandle>,
4065 tx_id: u32,
4066}
4067
4068impl std::ops::Drop for ScanResultListenerOnPeersDiscoveredResponder {
4072 fn drop(&mut self) {
4073 self.control_handle.shutdown();
4074 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
4076 }
4077}
4078
4079impl fidl::endpoints::Responder for ScanResultListenerOnPeersDiscoveredResponder {
4080 type ControlHandle = ScanResultListenerControlHandle;
4081
4082 fn control_handle(&self) -> &ScanResultListenerControlHandle {
4083 &self.control_handle
4084 }
4085
4086 fn drop_without_shutdown(mut self) {
4087 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
4089 std::mem::forget(self);
4091 }
4092}
4093
4094impl ScanResultListenerOnPeersDiscoveredResponder {
4095 pub fn send(self) -> Result<(), fidl::Error> {
4099 let _result = self.send_raw();
4100 if _result.is_err() {
4101 self.control_handle.shutdown();
4102 }
4103 self.drop_without_shutdown();
4104 _result
4105 }
4106
4107 pub fn send_no_shutdown_on_err(self) -> Result<(), fidl::Error> {
4109 let _result = self.send_raw();
4110 self.drop_without_shutdown();
4111 _result
4112 }
4113
4114 fn send_raw(&self) -> Result<(), fidl::Error> {
4115 self.control_handle.inner.send::<fidl::encoding::FlexibleType<fidl::encoding::EmptyStruct>>(
4116 fidl::encoding::Flexible::new(()),
4117 self.tx_id,
4118 0x111ea99f3f0c8009,
4119 fidl::encoding::DynamicFlags::FLEXIBLE,
4120 )
4121 }
4122}
4123
4124mod internal {
4125 use super::*;
4126
4127 impl CentralControllerStartScanRequest {
4128 #[inline(always)]
4129 fn max_ordinal_present(&self) -> u64 {
4130 if let Some(_) = self.listener {
4131 return 1;
4132 }
4133 0
4134 }
4135 }
4136
4137 impl fidl::encoding::ResourceTypeMarker for CentralControllerStartScanRequest {
4138 type Borrowed<'a> = &'a mut Self;
4139 fn take_or_borrow<'a>(
4140 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
4141 ) -> Self::Borrowed<'a> {
4142 value
4143 }
4144 }
4145
4146 unsafe impl fidl::encoding::TypeMarker for CentralControllerStartScanRequest {
4147 type Owned = Self;
4148
4149 #[inline(always)]
4150 fn inline_align(_context: fidl::encoding::Context) -> usize {
4151 8
4152 }
4153
4154 #[inline(always)]
4155 fn inline_size(_context: fidl::encoding::Context) -> usize {
4156 16
4157 }
4158 }
4159
4160 unsafe impl
4161 fidl::encoding::Encode<
4162 CentralControllerStartScanRequest,
4163 fidl::encoding::DefaultFuchsiaResourceDialect,
4164 > for &mut CentralControllerStartScanRequest
4165 {
4166 unsafe fn encode(
4167 self,
4168 encoder: &mut fidl::encoding::Encoder<
4169 '_,
4170 fidl::encoding::DefaultFuchsiaResourceDialect,
4171 >,
4172 offset: usize,
4173 mut depth: fidl::encoding::Depth,
4174 ) -> fidl::Result<()> {
4175 encoder.debug_check_bounds::<CentralControllerStartScanRequest>(offset);
4176 let max_ordinal: u64 = self.max_ordinal_present();
4178 encoder.write_num(max_ordinal, offset);
4179 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
4180 if max_ordinal == 0 {
4182 return Ok(());
4183 }
4184 depth.increment()?;
4185 let envelope_size = 8;
4186 let bytes_len = max_ordinal as usize * envelope_size;
4187 #[allow(unused_variables)]
4188 let offset = encoder.out_of_line_offset(bytes_len);
4189 let mut _prev_end_offset: usize = 0;
4190 if 1 > max_ordinal {
4191 return Ok(());
4192 }
4193
4194 let cur_offset: usize = (1 - 1) * envelope_size;
4197
4198 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4200
4201 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<ScanResultListenerMarker>>, fidl::encoding::DefaultFuchsiaResourceDialect>(
4206 self.listener.as_mut().map(<fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<ScanResultListenerMarker>> as fidl::encoding::ResourceTypeMarker>::take_or_borrow),
4207 encoder, offset + cur_offset, depth
4208 )?;
4209
4210 _prev_end_offset = cur_offset + envelope_size;
4211
4212 Ok(())
4213 }
4214 }
4215
4216 impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
4217 for CentralControllerStartScanRequest
4218 {
4219 #[inline(always)]
4220 fn new_empty() -> Self {
4221 Self::default()
4222 }
4223
4224 unsafe fn decode(
4225 &mut self,
4226 decoder: &mut fidl::encoding::Decoder<
4227 '_,
4228 fidl::encoding::DefaultFuchsiaResourceDialect,
4229 >,
4230 offset: usize,
4231 mut depth: fidl::encoding::Depth,
4232 ) -> fidl::Result<()> {
4233 decoder.debug_check_bounds::<Self>(offset);
4234 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
4235 None => return Err(fidl::Error::NotNullable),
4236 Some(len) => len,
4237 };
4238 if len == 0 {
4240 return Ok(());
4241 };
4242 depth.increment()?;
4243 let envelope_size = 8;
4244 let bytes_len = len * envelope_size;
4245 let offset = decoder.out_of_line_offset(bytes_len)?;
4246 let mut _next_ordinal_to_read = 0;
4248 let mut next_offset = offset;
4249 let end_offset = offset + bytes_len;
4250 _next_ordinal_to_read += 1;
4251 if next_offset >= end_offset {
4252 return Ok(());
4253 }
4254
4255 while _next_ordinal_to_read < 1 {
4257 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4258 _next_ordinal_to_read += 1;
4259 next_offset += envelope_size;
4260 }
4261
4262 let next_out_of_line = decoder.next_out_of_line();
4263 let handles_before = decoder.remaining_handles();
4264 if let Some((inlined, num_bytes, num_handles)) =
4265 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4266 {
4267 let member_inline_size = <fidl::encoding::Endpoint<
4268 fidl::endpoints::ClientEnd<ScanResultListenerMarker>,
4269 > as fidl::encoding::TypeMarker>::inline_size(
4270 decoder.context
4271 );
4272 if inlined != (member_inline_size <= 4) {
4273 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4274 }
4275 let inner_offset;
4276 let mut inner_depth = depth.clone();
4277 if inlined {
4278 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4279 inner_offset = next_offset;
4280 } else {
4281 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4282 inner_depth.increment()?;
4283 }
4284 let val_ref = self.listener.get_or_insert_with(|| {
4285 fidl::new_empty!(
4286 fidl::encoding::Endpoint<
4287 fidl::endpoints::ClientEnd<ScanResultListenerMarker>,
4288 >,
4289 fidl::encoding::DefaultFuchsiaResourceDialect
4290 )
4291 });
4292 fidl::decode!(
4293 fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<ScanResultListenerMarker>>,
4294 fidl::encoding::DefaultFuchsiaResourceDialect,
4295 val_ref,
4296 decoder,
4297 inner_offset,
4298 inner_depth
4299 )?;
4300 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4301 {
4302 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4303 }
4304 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4305 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4306 }
4307 }
4308
4309 next_offset += envelope_size;
4310
4311 while next_offset < end_offset {
4313 _next_ordinal_to_read += 1;
4314 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4315 next_offset += envelope_size;
4316 }
4317
4318 Ok(())
4319 }
4320 }
4321}