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_memorypressure_common::*;
11use futures::future::{self, MaybeDone, TryFutureExt};
12use zx_status;
13
14#[derive(Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
15pub struct ProviderRegisterWatcherRequest {
16 pub watcher: fidl::endpoints::ClientEnd<WatcherMarker>,
17}
18
19impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect>
20 for ProviderRegisterWatcherRequest
21{
22}
23
24#[derive(Debug, Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash)]
25pub struct ProviderMarker;
26
27impl fidl::endpoints::ProtocolMarker for ProviderMarker {
28 type Proxy = ProviderProxy;
29 type RequestStream = ProviderRequestStream;
30 #[cfg(target_os = "fuchsia")]
31 type SynchronousProxy = ProviderSynchronousProxy;
32
33 const DEBUG_NAME: &'static str = "fuchsia.memorypressure.Provider";
34}
35impl fidl::endpoints::DiscoverableProtocolMarker for ProviderMarker {}
36
37pub trait ProviderProxyInterface: Send + Sync {
38 fn r#register_watcher(
39 &self,
40 watcher: fidl::endpoints::ClientEnd<WatcherMarker>,
41 ) -> Result<(), fidl::Error>;
42}
43#[derive(Debug)]
44#[cfg(target_os = "fuchsia")]
45pub struct ProviderSynchronousProxy {
46 client: fidl::client::sync::Client,
47}
48
49#[cfg(target_os = "fuchsia")]
50impl fidl::endpoints::SynchronousProxy for ProviderSynchronousProxy {
51 type Proxy = ProviderProxy;
52 type Protocol = ProviderMarker;
53
54 fn from_channel(inner: fidl::Channel) -> Self {
55 Self::new(inner)
56 }
57
58 fn into_channel(self) -> fidl::Channel {
59 self.client.into_channel()
60 }
61
62 fn as_channel(&self) -> &fidl::Channel {
63 self.client.as_channel()
64 }
65}
66
67#[cfg(target_os = "fuchsia")]
68impl ProviderSynchronousProxy {
69 pub fn new(channel: fidl::Channel) -> Self {
70 let protocol_name = <ProviderMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
71 Self { client: fidl::client::sync::Client::new(channel, protocol_name) }
72 }
73
74 pub fn into_channel(self) -> fidl::Channel {
75 self.client.into_channel()
76 }
77
78 pub fn wait_for_event(
81 &self,
82 deadline: zx::MonotonicInstant,
83 ) -> Result<ProviderEvent, fidl::Error> {
84 ProviderEvent::decode(self.client.wait_for_event(deadline)?)
85 }
86
87 pub fn r#register_watcher(
101 &self,
102 mut watcher: fidl::endpoints::ClientEnd<WatcherMarker>,
103 ) -> Result<(), fidl::Error> {
104 self.client.send::<ProviderRegisterWatcherRequest>(
105 (watcher,),
106 0x91e65af25aae4a9,
107 fidl::encoding::DynamicFlags::empty(),
108 )
109 }
110}
111
112#[derive(Debug, Clone)]
113pub struct ProviderProxy {
114 client: fidl::client::Client<fidl::encoding::DefaultFuchsiaResourceDialect>,
115}
116
117impl fidl::endpoints::Proxy for ProviderProxy {
118 type Protocol = ProviderMarker;
119
120 fn from_channel(inner: ::fidl::AsyncChannel) -> Self {
121 Self::new(inner)
122 }
123
124 fn into_channel(self) -> Result<::fidl::AsyncChannel, Self> {
125 self.client.into_channel().map_err(|client| Self { client })
126 }
127
128 fn as_channel(&self) -> &::fidl::AsyncChannel {
129 self.client.as_channel()
130 }
131}
132
133impl ProviderProxy {
134 pub fn new(channel: ::fidl::AsyncChannel) -> Self {
136 let protocol_name = <ProviderMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
137 Self { client: fidl::client::Client::new(channel, protocol_name) }
138 }
139
140 pub fn take_event_stream(&self) -> ProviderEventStream {
146 ProviderEventStream { event_receiver: self.client.take_event_receiver() }
147 }
148
149 pub fn r#register_watcher(
163 &self,
164 mut watcher: fidl::endpoints::ClientEnd<WatcherMarker>,
165 ) -> Result<(), fidl::Error> {
166 ProviderProxyInterface::r#register_watcher(self, watcher)
167 }
168}
169
170impl ProviderProxyInterface for ProviderProxy {
171 fn r#register_watcher(
172 &self,
173 mut watcher: fidl::endpoints::ClientEnd<WatcherMarker>,
174 ) -> Result<(), fidl::Error> {
175 self.client.send::<ProviderRegisterWatcherRequest>(
176 (watcher,),
177 0x91e65af25aae4a9,
178 fidl::encoding::DynamicFlags::empty(),
179 )
180 }
181}
182
183pub struct ProviderEventStream {
184 event_receiver: fidl::client::EventReceiver<fidl::encoding::DefaultFuchsiaResourceDialect>,
185}
186
187impl std::marker::Unpin for ProviderEventStream {}
188
189impl futures::stream::FusedStream for ProviderEventStream {
190 fn is_terminated(&self) -> bool {
191 self.event_receiver.is_terminated()
192 }
193}
194
195impl futures::Stream for ProviderEventStream {
196 type Item = Result<ProviderEvent, fidl::Error>;
197
198 fn poll_next(
199 mut self: std::pin::Pin<&mut Self>,
200 cx: &mut std::task::Context<'_>,
201 ) -> std::task::Poll<Option<Self::Item>> {
202 match futures::ready!(futures::stream::StreamExt::poll_next_unpin(
203 &mut self.event_receiver,
204 cx
205 )?) {
206 Some(buf) => std::task::Poll::Ready(Some(ProviderEvent::decode(buf))),
207 None => std::task::Poll::Ready(None),
208 }
209 }
210}
211
212#[derive(Debug)]
213pub enum ProviderEvent {}
214
215impl ProviderEvent {
216 fn decode(
218 mut buf: <fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc,
219 ) -> Result<ProviderEvent, fidl::Error> {
220 let (bytes, _handles) = buf.split_mut();
221 let (tx_header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
222 debug_assert_eq!(tx_header.tx_id, 0);
223 match tx_header.ordinal {
224 _ => Err(fidl::Error::UnknownOrdinal {
225 ordinal: tx_header.ordinal,
226 protocol_name: <ProviderMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
227 }),
228 }
229 }
230}
231
232pub struct ProviderRequestStream {
234 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
235 is_terminated: bool,
236}
237
238impl std::marker::Unpin for ProviderRequestStream {}
239
240impl futures::stream::FusedStream for ProviderRequestStream {
241 fn is_terminated(&self) -> bool {
242 self.is_terminated
243 }
244}
245
246impl fidl::endpoints::RequestStream for ProviderRequestStream {
247 type Protocol = ProviderMarker;
248 type ControlHandle = ProviderControlHandle;
249
250 fn from_channel(channel: ::fidl::AsyncChannel) -> Self {
251 Self { inner: std::sync::Arc::new(fidl::ServeInner::new(channel)), is_terminated: false }
252 }
253
254 fn control_handle(&self) -> Self::ControlHandle {
255 ProviderControlHandle { inner: self.inner.clone() }
256 }
257
258 fn into_inner(
259 self,
260 ) -> (::std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>, bool)
261 {
262 (self.inner, self.is_terminated)
263 }
264
265 fn from_inner(
266 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
267 is_terminated: bool,
268 ) -> Self {
269 Self { inner, is_terminated }
270 }
271}
272
273impl futures::Stream for ProviderRequestStream {
274 type Item = Result<ProviderRequest, fidl::Error>;
275
276 fn poll_next(
277 mut self: std::pin::Pin<&mut Self>,
278 cx: &mut std::task::Context<'_>,
279 ) -> std::task::Poll<Option<Self::Item>> {
280 let this = &mut *self;
281 if this.inner.check_shutdown(cx) {
282 this.is_terminated = true;
283 return std::task::Poll::Ready(None);
284 }
285 if this.is_terminated {
286 panic!("polled ProviderRequestStream after completion");
287 }
288 fidl::encoding::with_tls_decode_buf::<_, fidl::encoding::DefaultFuchsiaResourceDialect>(
289 |bytes, handles| {
290 match this.inner.channel().read_etc(cx, bytes, handles) {
291 std::task::Poll::Ready(Ok(())) => {}
292 std::task::Poll::Pending => return std::task::Poll::Pending,
293 std::task::Poll::Ready(Err(zx_status::Status::PEER_CLOSED)) => {
294 this.is_terminated = true;
295 return std::task::Poll::Ready(None);
296 }
297 std::task::Poll::Ready(Err(e)) => {
298 return std::task::Poll::Ready(Some(Err(fidl::Error::ServerRequestRead(
299 e.into(),
300 ))))
301 }
302 }
303
304 let (header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
306
307 std::task::Poll::Ready(Some(match header.ordinal {
308 0x91e65af25aae4a9 => {
309 header.validate_request_tx_id(fidl::MethodType::OneWay)?;
310 let mut req = fidl::new_empty!(
311 ProviderRegisterWatcherRequest,
312 fidl::encoding::DefaultFuchsiaResourceDialect
313 );
314 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<ProviderRegisterWatcherRequest>(&header, _body_bytes, handles, &mut req)?;
315 let control_handle = ProviderControlHandle { inner: this.inner.clone() };
316 Ok(ProviderRequest::RegisterWatcher {
317 watcher: req.watcher,
318
319 control_handle,
320 })
321 }
322 _ => Err(fidl::Error::UnknownOrdinal {
323 ordinal: header.ordinal,
324 protocol_name:
325 <ProviderMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
326 }),
327 }))
328 },
329 )
330 }
331}
332
333#[derive(Debug)]
335pub enum ProviderRequest {
336 RegisterWatcher {
350 watcher: fidl::endpoints::ClientEnd<WatcherMarker>,
351 control_handle: ProviderControlHandle,
352 },
353}
354
355impl ProviderRequest {
356 #[allow(irrefutable_let_patterns)]
357 pub fn into_register_watcher(
358 self,
359 ) -> Option<(fidl::endpoints::ClientEnd<WatcherMarker>, ProviderControlHandle)> {
360 if let ProviderRequest::RegisterWatcher { watcher, control_handle } = self {
361 Some((watcher, control_handle))
362 } else {
363 None
364 }
365 }
366
367 pub fn method_name(&self) -> &'static str {
369 match *self {
370 ProviderRequest::RegisterWatcher { .. } => "register_watcher",
371 }
372 }
373}
374
375#[derive(Debug, Clone)]
376pub struct ProviderControlHandle {
377 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
378}
379
380impl fidl::endpoints::ControlHandle for ProviderControlHandle {
381 fn shutdown(&self) {
382 self.inner.shutdown()
383 }
384 fn shutdown_with_epitaph(&self, status: zx_status::Status) {
385 self.inner.shutdown_with_epitaph(status)
386 }
387
388 fn is_closed(&self) -> bool {
389 self.inner.channel().is_closed()
390 }
391 fn on_closed(&self) -> fidl::OnSignalsRef<'_> {
392 self.inner.channel().on_closed()
393 }
394
395 #[cfg(target_os = "fuchsia")]
396 fn signal_peer(
397 &self,
398 clear_mask: zx::Signals,
399 set_mask: zx::Signals,
400 ) -> Result<(), zx_status::Status> {
401 use fidl::Peered;
402 self.inner.channel().signal_peer(clear_mask, set_mask)
403 }
404}
405
406impl ProviderControlHandle {}
407
408#[derive(Debug, Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash)]
409pub struct WatcherMarker;
410
411impl fidl::endpoints::ProtocolMarker for WatcherMarker {
412 type Proxy = WatcherProxy;
413 type RequestStream = WatcherRequestStream;
414 #[cfg(target_os = "fuchsia")]
415 type SynchronousProxy = WatcherSynchronousProxy;
416
417 const DEBUG_NAME: &'static str = "(anonymous) Watcher";
418}
419
420pub trait WatcherProxyInterface: Send + Sync {
421 type OnLevelChangedResponseFut: std::future::Future<Output = Result<(), fidl::Error>> + Send;
422 fn r#on_level_changed(&self, level: Level) -> Self::OnLevelChangedResponseFut;
423}
424#[derive(Debug)]
425#[cfg(target_os = "fuchsia")]
426pub struct WatcherSynchronousProxy {
427 client: fidl::client::sync::Client,
428}
429
430#[cfg(target_os = "fuchsia")]
431impl fidl::endpoints::SynchronousProxy for WatcherSynchronousProxy {
432 type Proxy = WatcherProxy;
433 type Protocol = WatcherMarker;
434
435 fn from_channel(inner: fidl::Channel) -> Self {
436 Self::new(inner)
437 }
438
439 fn into_channel(self) -> fidl::Channel {
440 self.client.into_channel()
441 }
442
443 fn as_channel(&self) -> &fidl::Channel {
444 self.client.as_channel()
445 }
446}
447
448#[cfg(target_os = "fuchsia")]
449impl WatcherSynchronousProxy {
450 pub fn new(channel: fidl::Channel) -> Self {
451 let protocol_name = <WatcherMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
452 Self { client: fidl::client::sync::Client::new(channel, protocol_name) }
453 }
454
455 pub fn into_channel(self) -> fidl::Channel {
456 self.client.into_channel()
457 }
458
459 pub fn wait_for_event(
462 &self,
463 deadline: zx::MonotonicInstant,
464 ) -> Result<WatcherEvent, fidl::Error> {
465 WatcherEvent::decode(self.client.wait_for_event(deadline)?)
466 }
467
468 pub fn r#on_level_changed(
501 &self,
502 mut level: Level,
503 ___deadline: zx::MonotonicInstant,
504 ) -> Result<(), fidl::Error> {
505 let _response =
506 self.client.send_query::<WatcherOnLevelChangedRequest, fidl::encoding::EmptyPayload>(
507 (level,),
508 0x55d559533407fed9,
509 fidl::encoding::DynamicFlags::empty(),
510 ___deadline,
511 )?;
512 Ok(_response)
513 }
514}
515
516#[derive(Debug, Clone)]
517pub struct WatcherProxy {
518 client: fidl::client::Client<fidl::encoding::DefaultFuchsiaResourceDialect>,
519}
520
521impl fidl::endpoints::Proxy for WatcherProxy {
522 type Protocol = WatcherMarker;
523
524 fn from_channel(inner: ::fidl::AsyncChannel) -> Self {
525 Self::new(inner)
526 }
527
528 fn into_channel(self) -> Result<::fidl::AsyncChannel, Self> {
529 self.client.into_channel().map_err(|client| Self { client })
530 }
531
532 fn as_channel(&self) -> &::fidl::AsyncChannel {
533 self.client.as_channel()
534 }
535}
536
537impl WatcherProxy {
538 pub fn new(channel: ::fidl::AsyncChannel) -> Self {
540 let protocol_name = <WatcherMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
541 Self { client: fidl::client::Client::new(channel, protocol_name) }
542 }
543
544 pub fn take_event_stream(&self) -> WatcherEventStream {
550 WatcherEventStream { event_receiver: self.client.take_event_receiver() }
551 }
552
553 pub fn r#on_level_changed(
586 &self,
587 mut level: Level,
588 ) -> fidl::client::QueryResponseFut<(), fidl::encoding::DefaultFuchsiaResourceDialect> {
589 WatcherProxyInterface::r#on_level_changed(self, level)
590 }
591}
592
593impl WatcherProxyInterface for WatcherProxy {
594 type OnLevelChangedResponseFut =
595 fidl::client::QueryResponseFut<(), fidl::encoding::DefaultFuchsiaResourceDialect>;
596 fn r#on_level_changed(&self, mut level: Level) -> Self::OnLevelChangedResponseFut {
597 fn _decode(
598 mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
599 ) -> Result<(), fidl::Error> {
600 let _response = fidl::client::decode_transaction_body::<
601 fidl::encoding::EmptyPayload,
602 fidl::encoding::DefaultFuchsiaResourceDialect,
603 0x55d559533407fed9,
604 >(_buf?)?;
605 Ok(_response)
606 }
607 self.client.send_query_and_decode::<WatcherOnLevelChangedRequest, ()>(
608 (level,),
609 0x55d559533407fed9,
610 fidl::encoding::DynamicFlags::empty(),
611 _decode,
612 )
613 }
614}
615
616pub struct WatcherEventStream {
617 event_receiver: fidl::client::EventReceiver<fidl::encoding::DefaultFuchsiaResourceDialect>,
618}
619
620impl std::marker::Unpin for WatcherEventStream {}
621
622impl futures::stream::FusedStream for WatcherEventStream {
623 fn is_terminated(&self) -> bool {
624 self.event_receiver.is_terminated()
625 }
626}
627
628impl futures::Stream for WatcherEventStream {
629 type Item = Result<WatcherEvent, fidl::Error>;
630
631 fn poll_next(
632 mut self: std::pin::Pin<&mut Self>,
633 cx: &mut std::task::Context<'_>,
634 ) -> std::task::Poll<Option<Self::Item>> {
635 match futures::ready!(futures::stream::StreamExt::poll_next_unpin(
636 &mut self.event_receiver,
637 cx
638 )?) {
639 Some(buf) => std::task::Poll::Ready(Some(WatcherEvent::decode(buf))),
640 None => std::task::Poll::Ready(None),
641 }
642 }
643}
644
645#[derive(Debug)]
646pub enum WatcherEvent {}
647
648impl WatcherEvent {
649 fn decode(
651 mut buf: <fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc,
652 ) -> Result<WatcherEvent, fidl::Error> {
653 let (bytes, _handles) = buf.split_mut();
654 let (tx_header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
655 debug_assert_eq!(tx_header.tx_id, 0);
656 match tx_header.ordinal {
657 _ => Err(fidl::Error::UnknownOrdinal {
658 ordinal: tx_header.ordinal,
659 protocol_name: <WatcherMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
660 }),
661 }
662 }
663}
664
665pub struct WatcherRequestStream {
667 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
668 is_terminated: bool,
669}
670
671impl std::marker::Unpin for WatcherRequestStream {}
672
673impl futures::stream::FusedStream for WatcherRequestStream {
674 fn is_terminated(&self) -> bool {
675 self.is_terminated
676 }
677}
678
679impl fidl::endpoints::RequestStream for WatcherRequestStream {
680 type Protocol = WatcherMarker;
681 type ControlHandle = WatcherControlHandle;
682
683 fn from_channel(channel: ::fidl::AsyncChannel) -> Self {
684 Self { inner: std::sync::Arc::new(fidl::ServeInner::new(channel)), is_terminated: false }
685 }
686
687 fn control_handle(&self) -> Self::ControlHandle {
688 WatcherControlHandle { inner: self.inner.clone() }
689 }
690
691 fn into_inner(
692 self,
693 ) -> (::std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>, bool)
694 {
695 (self.inner, self.is_terminated)
696 }
697
698 fn from_inner(
699 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
700 is_terminated: bool,
701 ) -> Self {
702 Self { inner, is_terminated }
703 }
704}
705
706impl futures::Stream for WatcherRequestStream {
707 type Item = Result<WatcherRequest, fidl::Error>;
708
709 fn poll_next(
710 mut self: std::pin::Pin<&mut Self>,
711 cx: &mut std::task::Context<'_>,
712 ) -> std::task::Poll<Option<Self::Item>> {
713 let this = &mut *self;
714 if this.inner.check_shutdown(cx) {
715 this.is_terminated = true;
716 return std::task::Poll::Ready(None);
717 }
718 if this.is_terminated {
719 panic!("polled WatcherRequestStream after completion");
720 }
721 fidl::encoding::with_tls_decode_buf::<_, fidl::encoding::DefaultFuchsiaResourceDialect>(
722 |bytes, handles| {
723 match this.inner.channel().read_etc(cx, bytes, handles) {
724 std::task::Poll::Ready(Ok(())) => {}
725 std::task::Poll::Pending => return std::task::Poll::Pending,
726 std::task::Poll::Ready(Err(zx_status::Status::PEER_CLOSED)) => {
727 this.is_terminated = true;
728 return std::task::Poll::Ready(None);
729 }
730 std::task::Poll::Ready(Err(e)) => {
731 return std::task::Poll::Ready(Some(Err(fidl::Error::ServerRequestRead(
732 e.into(),
733 ))))
734 }
735 }
736
737 let (header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
739
740 std::task::Poll::Ready(Some(match header.ordinal {
741 0x55d559533407fed9 => {
742 header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
743 let mut req = fidl::new_empty!(
744 WatcherOnLevelChangedRequest,
745 fidl::encoding::DefaultFuchsiaResourceDialect
746 );
747 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<WatcherOnLevelChangedRequest>(&header, _body_bytes, handles, &mut req)?;
748 let control_handle = WatcherControlHandle { inner: this.inner.clone() };
749 Ok(WatcherRequest::OnLevelChanged {
750 level: req.level,
751
752 responder: WatcherOnLevelChangedResponder {
753 control_handle: std::mem::ManuallyDrop::new(control_handle),
754 tx_id: header.tx_id,
755 },
756 })
757 }
758 _ => Err(fidl::Error::UnknownOrdinal {
759 ordinal: header.ordinal,
760 protocol_name:
761 <WatcherMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
762 }),
763 }))
764 },
765 )
766 }
767}
768
769#[derive(Debug)]
772pub enum WatcherRequest {
773 OnLevelChanged { level: Level, responder: WatcherOnLevelChangedResponder },
806}
807
808impl WatcherRequest {
809 #[allow(irrefutable_let_patterns)]
810 pub fn into_on_level_changed(self) -> Option<(Level, WatcherOnLevelChangedResponder)> {
811 if let WatcherRequest::OnLevelChanged { level, responder } = self {
812 Some((level, responder))
813 } else {
814 None
815 }
816 }
817
818 pub fn method_name(&self) -> &'static str {
820 match *self {
821 WatcherRequest::OnLevelChanged { .. } => "on_level_changed",
822 }
823 }
824}
825
826#[derive(Debug, Clone)]
827pub struct WatcherControlHandle {
828 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
829}
830
831impl fidl::endpoints::ControlHandle for WatcherControlHandle {
832 fn shutdown(&self) {
833 self.inner.shutdown()
834 }
835 fn shutdown_with_epitaph(&self, status: zx_status::Status) {
836 self.inner.shutdown_with_epitaph(status)
837 }
838
839 fn is_closed(&self) -> bool {
840 self.inner.channel().is_closed()
841 }
842 fn on_closed(&self) -> fidl::OnSignalsRef<'_> {
843 self.inner.channel().on_closed()
844 }
845
846 #[cfg(target_os = "fuchsia")]
847 fn signal_peer(
848 &self,
849 clear_mask: zx::Signals,
850 set_mask: zx::Signals,
851 ) -> Result<(), zx_status::Status> {
852 use fidl::Peered;
853 self.inner.channel().signal_peer(clear_mask, set_mask)
854 }
855}
856
857impl WatcherControlHandle {}
858
859#[must_use = "FIDL methods require a response to be sent"]
860#[derive(Debug)]
861pub struct WatcherOnLevelChangedResponder {
862 control_handle: std::mem::ManuallyDrop<WatcherControlHandle>,
863 tx_id: u32,
864}
865
866impl std::ops::Drop for WatcherOnLevelChangedResponder {
870 fn drop(&mut self) {
871 self.control_handle.shutdown();
872 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
874 }
875}
876
877impl fidl::endpoints::Responder for WatcherOnLevelChangedResponder {
878 type ControlHandle = WatcherControlHandle;
879
880 fn control_handle(&self) -> &WatcherControlHandle {
881 &self.control_handle
882 }
883
884 fn drop_without_shutdown(mut self) {
885 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
887 std::mem::forget(self);
889 }
890}
891
892impl WatcherOnLevelChangedResponder {
893 pub fn send(self) -> Result<(), fidl::Error> {
897 let _result = self.send_raw();
898 if _result.is_err() {
899 self.control_handle.shutdown();
900 }
901 self.drop_without_shutdown();
902 _result
903 }
904
905 pub fn send_no_shutdown_on_err(self) -> Result<(), fidl::Error> {
907 let _result = self.send_raw();
908 self.drop_without_shutdown();
909 _result
910 }
911
912 fn send_raw(&self) -> Result<(), fidl::Error> {
913 self.control_handle.inner.send::<fidl::encoding::EmptyPayload>(
914 (),
915 self.tx_id,
916 0x55d559533407fed9,
917 fidl::encoding::DynamicFlags::empty(),
918 )
919 }
920}
921
922mod internal {
923 use super::*;
924
925 impl fidl::encoding::ResourceTypeMarker for ProviderRegisterWatcherRequest {
926 type Borrowed<'a> = &'a mut Self;
927 fn take_or_borrow<'a>(
928 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
929 ) -> Self::Borrowed<'a> {
930 value
931 }
932 }
933
934 unsafe impl fidl::encoding::TypeMarker for ProviderRegisterWatcherRequest {
935 type Owned = Self;
936
937 #[inline(always)]
938 fn inline_align(_context: fidl::encoding::Context) -> usize {
939 4
940 }
941
942 #[inline(always)]
943 fn inline_size(_context: fidl::encoding::Context) -> usize {
944 4
945 }
946 }
947
948 unsafe impl
949 fidl::encoding::Encode<
950 ProviderRegisterWatcherRequest,
951 fidl::encoding::DefaultFuchsiaResourceDialect,
952 > for &mut ProviderRegisterWatcherRequest
953 {
954 #[inline]
955 unsafe fn encode(
956 self,
957 encoder: &mut fidl::encoding::Encoder<
958 '_,
959 fidl::encoding::DefaultFuchsiaResourceDialect,
960 >,
961 offset: usize,
962 _depth: fidl::encoding::Depth,
963 ) -> fidl::Result<()> {
964 encoder.debug_check_bounds::<ProviderRegisterWatcherRequest>(offset);
965 fidl::encoding::Encode::<ProviderRegisterWatcherRequest, fidl::encoding::DefaultFuchsiaResourceDialect>::encode(
967 (
968 <fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<WatcherMarker>> as fidl::encoding::ResourceTypeMarker>::take_or_borrow(&mut self.watcher),
969 ),
970 encoder, offset, _depth
971 )
972 }
973 }
974 unsafe impl<
975 T0: fidl::encoding::Encode<
976 fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<WatcherMarker>>,
977 fidl::encoding::DefaultFuchsiaResourceDialect,
978 >,
979 >
980 fidl::encoding::Encode<
981 ProviderRegisterWatcherRequest,
982 fidl::encoding::DefaultFuchsiaResourceDialect,
983 > for (T0,)
984 {
985 #[inline]
986 unsafe fn encode(
987 self,
988 encoder: &mut fidl::encoding::Encoder<
989 '_,
990 fidl::encoding::DefaultFuchsiaResourceDialect,
991 >,
992 offset: usize,
993 depth: fidl::encoding::Depth,
994 ) -> fidl::Result<()> {
995 encoder.debug_check_bounds::<ProviderRegisterWatcherRequest>(offset);
996 self.0.encode(encoder, offset + 0, depth)?;
1000 Ok(())
1001 }
1002 }
1003
1004 impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
1005 for ProviderRegisterWatcherRequest
1006 {
1007 #[inline(always)]
1008 fn new_empty() -> Self {
1009 Self {
1010 watcher: fidl::new_empty!(
1011 fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<WatcherMarker>>,
1012 fidl::encoding::DefaultFuchsiaResourceDialect
1013 ),
1014 }
1015 }
1016
1017 #[inline]
1018 unsafe fn decode(
1019 &mut self,
1020 decoder: &mut fidl::encoding::Decoder<
1021 '_,
1022 fidl::encoding::DefaultFuchsiaResourceDialect,
1023 >,
1024 offset: usize,
1025 _depth: fidl::encoding::Depth,
1026 ) -> fidl::Result<()> {
1027 decoder.debug_check_bounds::<Self>(offset);
1028 fidl::decode!(
1030 fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<WatcherMarker>>,
1031 fidl::encoding::DefaultFuchsiaResourceDialect,
1032 &mut self.watcher,
1033 decoder,
1034 offset + 0,
1035 _depth
1036 )?;
1037 Ok(())
1038 }
1039 }
1040}