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_power_broker__common::*;
11use futures::future::{self, MaybeDone, TryFutureExt};
12use zx_status;
13
14pub type DependencyToken = fidl::Event;
18
19pub type LeaseToken = fidl::EventPair;
24
25#[derive(Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
26pub struct ElementControlOpenStatusChannelRequest {
27 pub status_channel: fidl::endpoints::ServerEnd<StatusMarker>,
28}
29
30impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect>
31 for ElementControlOpenStatusChannelRequest
32{
33}
34
35#[derive(Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
36pub struct ElementControlRegisterDependencyTokenRequest {
37 pub token: fidl::Event,
38}
39
40impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect>
41 for ElementControlRegisterDependencyTokenRequest
42{
43}
44
45#[derive(Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
46pub struct ElementControlUnregisterDependencyTokenRequest {
47 pub token: fidl::Event,
48}
49
50impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect>
51 for ElementControlUnregisterDependencyTokenRequest
52{
53}
54
55#[derive(Debug, PartialEq)]
56pub struct ElementInfoProviderGetElementPowerLevelNamesResponse {
57 pub level_names: Vec<ElementPowerLevelNames>,
58}
59
60impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect>
61 for ElementInfoProviderGetElementPowerLevelNamesResponse
62{
63}
64
65#[derive(Debug, PartialEq)]
66pub struct ElementInfoProviderGetStatusEndpointsResponse {
67 pub endpoints: Vec<ElementStatusEndpoint>,
68}
69
70impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect>
71 for ElementInfoProviderGetStatusEndpointsResponse
72{
73}
74
75#[derive(Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
76#[repr(C)]
77pub struct LessorLeaseRequest {
78 pub level: u8,
80}
81
82impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect> for LessorLeaseRequest {}
83
84#[derive(Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
85pub struct LessorLeaseResponse {
86 pub lease_control: fidl::endpoints::ClientEnd<LeaseControlMarker>,
89}
90
91impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect> for LessorLeaseResponse {}
92
93#[derive(Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
108pub struct LevelDependency {
109 pub dependent_level: u8,
113 pub requires_token: fidl::Event,
116 pub requires_level_by_preference: Vec<u8>,
125}
126
127impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect> for LevelDependency {}
128
129#[derive(Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
130#[repr(C)]
131pub struct StatusWatchPowerLevelResponse {
132 pub current_level: u8,
133}
134
135impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect>
136 for StatusWatchPowerLevelResponse
137{
138}
139
140#[derive(Debug, Default, PartialEq)]
142pub struct ElementSchema {
143 pub element_name: Option<String>,
145 pub initial_current_level: Option<u8>,
147 pub valid_levels: Option<Vec<u8>>,
155 pub dependencies: Option<Vec<LevelDependency>>,
158 pub lessor_channel: Option<fidl::endpoints::ServerEnd<LessorMarker>>,
163 pub element_control: Option<fidl::endpoints::ServerEnd<ElementControlMarker>>,
169 pub element_runner: Option<fidl::endpoints::ClientEnd<ElementRunnerMarker>>,
173 #[doc(hidden)]
174 pub __source_breaking: fidl::marker::SourceBreaking,
175}
176
177impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect> for ElementSchema {}
178
179#[derive(Debug, Default, PartialEq)]
183pub struct ElementStatusEndpoint {
184 pub identifier: Option<String>,
185 pub status: Option<fidl::endpoints::ClientEnd<StatusMarker>>,
186 #[doc(hidden)]
187 pub __source_breaking: fidl::marker::SourceBreaking,
188}
189
190impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect> for ElementStatusEndpoint {}
191
192#[derive(Debug, Default, PartialEq)]
193pub struct LeaseDependency {
194 pub requires_token: Option<fidl::Event>,
197 pub requires_level: Option<u8>,
201 pub requires_level_by_preference: Option<Vec<u8>>,
213 #[doc(hidden)]
214 pub __source_breaking: fidl::marker::SourceBreaking,
215}
216
217impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect> for LeaseDependency {}
218
219#[derive(Debug, Default, PartialEq)]
221pub struct LeaseSchema {
222 pub lease_token: Option<fidl::EventPair>,
226 pub lease_name: Option<String>,
228 pub dependencies: Option<Vec<LeaseDependency>>,
230 pub should_return_pending_lease: Option<bool>,
236 #[doc(hidden)]
237 pub __source_breaking: fidl::marker::SourceBreaking,
238}
239
240impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect> for LeaseSchema {}
241
242#[derive(Debug, Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash)]
243pub struct ElementControlMarker;
244
245impl fidl::endpoints::ProtocolMarker for ElementControlMarker {
246 type Proxy = ElementControlProxy;
247 type RequestStream = ElementControlRequestStream;
248 #[cfg(target_os = "fuchsia")]
249 type SynchronousProxy = ElementControlSynchronousProxy;
250
251 const DEBUG_NAME: &'static str = "(anonymous) ElementControl";
252}
253pub type ElementControlRegisterDependencyTokenResult = Result<(), RegisterDependencyTokenError>;
254pub type ElementControlUnregisterDependencyTokenResult = Result<(), UnregisterDependencyTokenError>;
255
256pub trait ElementControlProxyInterface: Send + Sync {
257 fn r#open_status_channel(
258 &self,
259 status_channel: fidl::endpoints::ServerEnd<StatusMarker>,
260 ) -> Result<(), fidl::Error>;
261 type RegisterDependencyTokenResponseFut: std::future::Future<
262 Output = Result<ElementControlRegisterDependencyTokenResult, fidl::Error>,
263 > + Send;
264 fn r#register_dependency_token(
265 &self,
266 token: fidl::Event,
267 ) -> Self::RegisterDependencyTokenResponseFut;
268 type UnregisterDependencyTokenResponseFut: std::future::Future<
269 Output = Result<ElementControlUnregisterDependencyTokenResult, fidl::Error>,
270 > + Send;
271 fn r#unregister_dependency_token(
272 &self,
273 token: fidl::Event,
274 ) -> Self::UnregisterDependencyTokenResponseFut;
275}
276#[derive(Debug)]
277#[cfg(target_os = "fuchsia")]
278pub struct ElementControlSynchronousProxy {
279 client: fidl::client::sync::Client,
280}
281
282#[cfg(target_os = "fuchsia")]
283impl fidl::endpoints::SynchronousProxy for ElementControlSynchronousProxy {
284 type Proxy = ElementControlProxy;
285 type Protocol = ElementControlMarker;
286
287 fn from_channel(inner: fidl::Channel) -> Self {
288 Self::new(inner)
289 }
290
291 fn into_channel(self) -> fidl::Channel {
292 self.client.into_channel()
293 }
294
295 fn as_channel(&self) -> &fidl::Channel {
296 self.client.as_channel()
297 }
298}
299
300#[cfg(target_os = "fuchsia")]
301impl ElementControlSynchronousProxy {
302 pub fn new(channel: fidl::Channel) -> Self {
303 Self { client: fidl::client::sync::Client::new(channel) }
304 }
305
306 pub fn into_channel(self) -> fidl::Channel {
307 self.client.into_channel()
308 }
309
310 pub fn wait_for_event(
313 &self,
314 deadline: zx::MonotonicInstant,
315 ) -> Result<ElementControlEvent, fidl::Error> {
316 ElementControlEvent::decode(self.client.wait_for_event::<ElementControlMarker>(deadline)?)
317 }
318
319 pub fn r#open_status_channel(
325 &self,
326 mut status_channel: fidl::endpoints::ServerEnd<StatusMarker>,
327 ) -> Result<(), fidl::Error> {
328 self.client.send::<ElementControlOpenStatusChannelRequest>(
329 (status_channel,),
330 0x4d7772e93dba6300,
331 fidl::encoding::DynamicFlags::FLEXIBLE,
332 )
333 }
334
335 pub fn r#register_dependency_token(
338 &self,
339 mut token: fidl::Event,
340 ___deadline: zx::MonotonicInstant,
341 ) -> Result<ElementControlRegisterDependencyTokenResult, fidl::Error> {
342 let _response = self.client.send_query::<
343 ElementControlRegisterDependencyTokenRequest,
344 fidl::encoding::FlexibleResultType<fidl::encoding::EmptyStruct, RegisterDependencyTokenError>,
345 ElementControlMarker,
346 >(
347 (token,),
348 0x3a5016663d198d61,
349 fidl::encoding::DynamicFlags::FLEXIBLE,
350 ___deadline,
351 )?
352 .into_result::<ElementControlMarker>("register_dependency_token")?;
353 Ok(_response.map(|x| x))
354 }
355
356 pub fn r#unregister_dependency_token(
358 &self,
359 mut token: fidl::Event,
360 ___deadline: zx::MonotonicInstant,
361 ) -> Result<ElementControlUnregisterDependencyTokenResult, fidl::Error> {
362 let _response = self.client.send_query::<
363 ElementControlUnregisterDependencyTokenRequest,
364 fidl::encoding::FlexibleResultType<fidl::encoding::EmptyStruct, UnregisterDependencyTokenError>,
365 ElementControlMarker,
366 >(
367 (token,),
368 0x65a31a3661499529,
369 fidl::encoding::DynamicFlags::FLEXIBLE,
370 ___deadline,
371 )?
372 .into_result::<ElementControlMarker>("unregister_dependency_token")?;
373 Ok(_response.map(|x| x))
374 }
375}
376
377#[cfg(target_os = "fuchsia")]
378impl From<ElementControlSynchronousProxy> for zx::NullableHandle {
379 fn from(value: ElementControlSynchronousProxy) -> Self {
380 value.into_channel().into()
381 }
382}
383
384#[cfg(target_os = "fuchsia")]
385impl From<fidl::Channel> for ElementControlSynchronousProxy {
386 fn from(value: fidl::Channel) -> Self {
387 Self::new(value)
388 }
389}
390
391#[cfg(target_os = "fuchsia")]
392impl fidl::endpoints::FromClient for ElementControlSynchronousProxy {
393 type Protocol = ElementControlMarker;
394
395 fn from_client(value: fidl::endpoints::ClientEnd<ElementControlMarker>) -> Self {
396 Self::new(value.into_channel())
397 }
398}
399
400#[derive(Debug, Clone)]
401pub struct ElementControlProxy {
402 client: fidl::client::Client<fidl::encoding::DefaultFuchsiaResourceDialect>,
403}
404
405impl fidl::endpoints::Proxy for ElementControlProxy {
406 type Protocol = ElementControlMarker;
407
408 fn from_channel(inner: ::fidl::AsyncChannel) -> Self {
409 Self::new(inner)
410 }
411
412 fn into_channel(self) -> Result<::fidl::AsyncChannel, Self> {
413 self.client.into_channel().map_err(|client| Self { client })
414 }
415
416 fn as_channel(&self) -> &::fidl::AsyncChannel {
417 self.client.as_channel()
418 }
419}
420
421impl ElementControlProxy {
422 pub fn new(channel: ::fidl::AsyncChannel) -> Self {
424 let protocol_name = <ElementControlMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
425 Self { client: fidl::client::Client::new(channel, protocol_name) }
426 }
427
428 pub fn take_event_stream(&self) -> ElementControlEventStream {
434 ElementControlEventStream { event_receiver: self.client.take_event_receiver() }
435 }
436
437 pub fn r#open_status_channel(
443 &self,
444 mut status_channel: fidl::endpoints::ServerEnd<StatusMarker>,
445 ) -> Result<(), fidl::Error> {
446 ElementControlProxyInterface::r#open_status_channel(self, status_channel)
447 }
448
449 pub fn r#register_dependency_token(
452 &self,
453 mut token: fidl::Event,
454 ) -> fidl::client::QueryResponseFut<
455 ElementControlRegisterDependencyTokenResult,
456 fidl::encoding::DefaultFuchsiaResourceDialect,
457 > {
458 ElementControlProxyInterface::r#register_dependency_token(self, token)
459 }
460
461 pub fn r#unregister_dependency_token(
463 &self,
464 mut token: fidl::Event,
465 ) -> fidl::client::QueryResponseFut<
466 ElementControlUnregisterDependencyTokenResult,
467 fidl::encoding::DefaultFuchsiaResourceDialect,
468 > {
469 ElementControlProxyInterface::r#unregister_dependency_token(self, token)
470 }
471}
472
473impl ElementControlProxyInterface for ElementControlProxy {
474 fn r#open_status_channel(
475 &self,
476 mut status_channel: fidl::endpoints::ServerEnd<StatusMarker>,
477 ) -> Result<(), fidl::Error> {
478 self.client.send::<ElementControlOpenStatusChannelRequest>(
479 (status_channel,),
480 0x4d7772e93dba6300,
481 fidl::encoding::DynamicFlags::FLEXIBLE,
482 )
483 }
484
485 type RegisterDependencyTokenResponseFut = fidl::client::QueryResponseFut<
486 ElementControlRegisterDependencyTokenResult,
487 fidl::encoding::DefaultFuchsiaResourceDialect,
488 >;
489 fn r#register_dependency_token(
490 &self,
491 mut token: fidl::Event,
492 ) -> Self::RegisterDependencyTokenResponseFut {
493 fn _decode(
494 mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
495 ) -> Result<ElementControlRegisterDependencyTokenResult, fidl::Error> {
496 let _response = fidl::client::decode_transaction_body::<
497 fidl::encoding::FlexibleResultType<
498 fidl::encoding::EmptyStruct,
499 RegisterDependencyTokenError,
500 >,
501 fidl::encoding::DefaultFuchsiaResourceDialect,
502 0x3a5016663d198d61,
503 >(_buf?)?
504 .into_result::<ElementControlMarker>("register_dependency_token")?;
505 Ok(_response.map(|x| x))
506 }
507 self.client.send_query_and_decode::<
508 ElementControlRegisterDependencyTokenRequest,
509 ElementControlRegisterDependencyTokenResult,
510 >(
511 (token,),
512 0x3a5016663d198d61,
513 fidl::encoding::DynamicFlags::FLEXIBLE,
514 _decode,
515 )
516 }
517
518 type UnregisterDependencyTokenResponseFut = fidl::client::QueryResponseFut<
519 ElementControlUnregisterDependencyTokenResult,
520 fidl::encoding::DefaultFuchsiaResourceDialect,
521 >;
522 fn r#unregister_dependency_token(
523 &self,
524 mut token: fidl::Event,
525 ) -> Self::UnregisterDependencyTokenResponseFut {
526 fn _decode(
527 mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
528 ) -> Result<ElementControlUnregisterDependencyTokenResult, fidl::Error> {
529 let _response = fidl::client::decode_transaction_body::<
530 fidl::encoding::FlexibleResultType<
531 fidl::encoding::EmptyStruct,
532 UnregisterDependencyTokenError,
533 >,
534 fidl::encoding::DefaultFuchsiaResourceDialect,
535 0x65a31a3661499529,
536 >(_buf?)?
537 .into_result::<ElementControlMarker>("unregister_dependency_token")?;
538 Ok(_response.map(|x| x))
539 }
540 self.client.send_query_and_decode::<
541 ElementControlUnregisterDependencyTokenRequest,
542 ElementControlUnregisterDependencyTokenResult,
543 >(
544 (token,),
545 0x65a31a3661499529,
546 fidl::encoding::DynamicFlags::FLEXIBLE,
547 _decode,
548 )
549 }
550}
551
552pub struct ElementControlEventStream {
553 event_receiver: fidl::client::EventReceiver<fidl::encoding::DefaultFuchsiaResourceDialect>,
554}
555
556impl std::marker::Unpin for ElementControlEventStream {}
557
558impl futures::stream::FusedStream for ElementControlEventStream {
559 fn is_terminated(&self) -> bool {
560 self.event_receiver.is_terminated()
561 }
562}
563
564impl futures::Stream for ElementControlEventStream {
565 type Item = Result<ElementControlEvent, fidl::Error>;
566
567 fn poll_next(
568 mut self: std::pin::Pin<&mut Self>,
569 cx: &mut std::task::Context<'_>,
570 ) -> std::task::Poll<Option<Self::Item>> {
571 match futures::ready!(futures::stream::StreamExt::poll_next_unpin(
572 &mut self.event_receiver,
573 cx
574 )?) {
575 Some(buf) => std::task::Poll::Ready(Some(ElementControlEvent::decode(buf))),
576 None => std::task::Poll::Ready(None),
577 }
578 }
579}
580
581#[derive(Debug)]
582pub enum ElementControlEvent {
583 #[non_exhaustive]
584 _UnknownEvent {
585 ordinal: u64,
587 },
588}
589
590impl ElementControlEvent {
591 fn decode(
593 mut buf: <fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc,
594 ) -> Result<ElementControlEvent, fidl::Error> {
595 let (bytes, _handles) = buf.split_mut();
596 let (tx_header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
597 debug_assert_eq!(tx_header.tx_id, 0);
598 match tx_header.ordinal {
599 _ if tx_header.dynamic_flags().contains(fidl::encoding::DynamicFlags::FLEXIBLE) => {
600 Ok(ElementControlEvent::_UnknownEvent { ordinal: tx_header.ordinal })
601 }
602 _ => Err(fidl::Error::UnknownOrdinal {
603 ordinal: tx_header.ordinal,
604 protocol_name:
605 <ElementControlMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
606 }),
607 }
608 }
609}
610
611pub struct ElementControlRequestStream {
613 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
614 is_terminated: bool,
615}
616
617impl std::marker::Unpin for ElementControlRequestStream {}
618
619impl futures::stream::FusedStream for ElementControlRequestStream {
620 fn is_terminated(&self) -> bool {
621 self.is_terminated
622 }
623}
624
625impl fidl::endpoints::RequestStream for ElementControlRequestStream {
626 type Protocol = ElementControlMarker;
627 type ControlHandle = ElementControlControlHandle;
628
629 fn from_channel(channel: ::fidl::AsyncChannel) -> Self {
630 Self { inner: std::sync::Arc::new(fidl::ServeInner::new(channel)), is_terminated: false }
631 }
632
633 fn control_handle(&self) -> Self::ControlHandle {
634 ElementControlControlHandle { inner: self.inner.clone() }
635 }
636
637 fn into_inner(
638 self,
639 ) -> (::std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>, bool)
640 {
641 (self.inner, self.is_terminated)
642 }
643
644 fn from_inner(
645 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
646 is_terminated: bool,
647 ) -> Self {
648 Self { inner, is_terminated }
649 }
650}
651
652impl futures::Stream for ElementControlRequestStream {
653 type Item = Result<ElementControlRequest, fidl::Error>;
654
655 fn poll_next(
656 mut self: std::pin::Pin<&mut Self>,
657 cx: &mut std::task::Context<'_>,
658 ) -> std::task::Poll<Option<Self::Item>> {
659 let this = &mut *self;
660 if this.inner.check_shutdown(cx) {
661 this.is_terminated = true;
662 return std::task::Poll::Ready(None);
663 }
664 if this.is_terminated {
665 panic!("polled ElementControlRequestStream after completion");
666 }
667 fidl::encoding::with_tls_decode_buf::<_, fidl::encoding::DefaultFuchsiaResourceDialect>(
668 |bytes, handles| {
669 match this.inner.channel().read_etc(cx, bytes, handles) {
670 std::task::Poll::Ready(Ok(())) => {}
671 std::task::Poll::Pending => return std::task::Poll::Pending,
672 std::task::Poll::Ready(Err(zx_status::Status::PEER_CLOSED)) => {
673 this.is_terminated = true;
674 return std::task::Poll::Ready(None);
675 }
676 std::task::Poll::Ready(Err(e)) => {
677 return std::task::Poll::Ready(Some(Err(fidl::Error::ServerRequestRead(
678 e.into(),
679 ))));
680 }
681 }
682
683 let (header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
685
686 std::task::Poll::Ready(Some(match header.ordinal {
687 0x4d7772e93dba6300 => {
688 header.validate_request_tx_id(fidl::MethodType::OneWay)?;
689 let mut req = fidl::new_empty!(
690 ElementControlOpenStatusChannelRequest,
691 fidl::encoding::DefaultFuchsiaResourceDialect
692 );
693 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<ElementControlOpenStatusChannelRequest>(&header, _body_bytes, handles, &mut req)?;
694 let control_handle =
695 ElementControlControlHandle { inner: this.inner.clone() };
696 Ok(ElementControlRequest::OpenStatusChannel {
697 status_channel: req.status_channel,
698
699 control_handle,
700 })
701 }
702 0x3a5016663d198d61 => {
703 header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
704 let mut req = fidl::new_empty!(
705 ElementControlRegisterDependencyTokenRequest,
706 fidl::encoding::DefaultFuchsiaResourceDialect
707 );
708 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<ElementControlRegisterDependencyTokenRequest>(&header, _body_bytes, handles, &mut req)?;
709 let control_handle =
710 ElementControlControlHandle { inner: this.inner.clone() };
711 Ok(ElementControlRequest::RegisterDependencyToken {
712 token: req.token,
713
714 responder: ElementControlRegisterDependencyTokenResponder {
715 control_handle: std::mem::ManuallyDrop::new(control_handle),
716 tx_id: header.tx_id,
717 },
718 })
719 }
720 0x65a31a3661499529 => {
721 header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
722 let mut req = fidl::new_empty!(
723 ElementControlUnregisterDependencyTokenRequest,
724 fidl::encoding::DefaultFuchsiaResourceDialect
725 );
726 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<ElementControlUnregisterDependencyTokenRequest>(&header, _body_bytes, handles, &mut req)?;
727 let control_handle =
728 ElementControlControlHandle { inner: this.inner.clone() };
729 Ok(ElementControlRequest::UnregisterDependencyToken {
730 token: req.token,
731
732 responder: ElementControlUnregisterDependencyTokenResponder {
733 control_handle: std::mem::ManuallyDrop::new(control_handle),
734 tx_id: header.tx_id,
735 },
736 })
737 }
738 _ if header.tx_id == 0
739 && header
740 .dynamic_flags()
741 .contains(fidl::encoding::DynamicFlags::FLEXIBLE) =>
742 {
743 Ok(ElementControlRequest::_UnknownMethod {
744 ordinal: header.ordinal,
745 control_handle: ElementControlControlHandle {
746 inner: this.inner.clone(),
747 },
748 method_type: fidl::MethodType::OneWay,
749 })
750 }
751 _ if header
752 .dynamic_flags()
753 .contains(fidl::encoding::DynamicFlags::FLEXIBLE) =>
754 {
755 this.inner.send_framework_err(
756 fidl::encoding::FrameworkErr::UnknownMethod,
757 header.tx_id,
758 header.ordinal,
759 header.dynamic_flags(),
760 (bytes, handles),
761 )?;
762 Ok(ElementControlRequest::_UnknownMethod {
763 ordinal: header.ordinal,
764 control_handle: ElementControlControlHandle {
765 inner: this.inner.clone(),
766 },
767 method_type: fidl::MethodType::TwoWay,
768 })
769 }
770 _ => Err(fidl::Error::UnknownOrdinal {
771 ordinal: header.ordinal,
772 protocol_name:
773 <ElementControlMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
774 }),
775 }))
776 },
777 )
778 }
779}
780
781#[derive(Debug)]
784pub enum ElementControlRequest {
785 OpenStatusChannel {
791 status_channel: fidl::endpoints::ServerEnd<StatusMarker>,
792 control_handle: ElementControlControlHandle,
793 },
794 RegisterDependencyToken {
797 token: fidl::Event,
798 responder: ElementControlRegisterDependencyTokenResponder,
799 },
800 UnregisterDependencyToken {
802 token: fidl::Event,
803 responder: ElementControlUnregisterDependencyTokenResponder,
804 },
805 #[non_exhaustive]
807 _UnknownMethod {
808 ordinal: u64,
810 control_handle: ElementControlControlHandle,
811 method_type: fidl::MethodType,
812 },
813}
814
815impl ElementControlRequest {
816 #[allow(irrefutable_let_patterns)]
817 pub fn into_open_status_channel(
818 self,
819 ) -> Option<(fidl::endpoints::ServerEnd<StatusMarker>, ElementControlControlHandle)> {
820 if let ElementControlRequest::OpenStatusChannel { status_channel, control_handle } = self {
821 Some((status_channel, control_handle))
822 } else {
823 None
824 }
825 }
826
827 #[allow(irrefutable_let_patterns)]
828 pub fn into_register_dependency_token(
829 self,
830 ) -> Option<(fidl::Event, ElementControlRegisterDependencyTokenResponder)> {
831 if let ElementControlRequest::RegisterDependencyToken { token, responder } = self {
832 Some((token, responder))
833 } else {
834 None
835 }
836 }
837
838 #[allow(irrefutable_let_patterns)]
839 pub fn into_unregister_dependency_token(
840 self,
841 ) -> Option<(fidl::Event, ElementControlUnregisterDependencyTokenResponder)> {
842 if let ElementControlRequest::UnregisterDependencyToken { token, responder } = self {
843 Some((token, responder))
844 } else {
845 None
846 }
847 }
848
849 pub fn method_name(&self) -> &'static str {
851 match *self {
852 ElementControlRequest::OpenStatusChannel { .. } => "open_status_channel",
853 ElementControlRequest::RegisterDependencyToken { .. } => "register_dependency_token",
854 ElementControlRequest::UnregisterDependencyToken { .. } => {
855 "unregister_dependency_token"
856 }
857 ElementControlRequest::_UnknownMethod {
858 method_type: fidl::MethodType::OneWay, ..
859 } => "unknown one-way method",
860 ElementControlRequest::_UnknownMethod {
861 method_type: fidl::MethodType::TwoWay, ..
862 } => "unknown two-way method",
863 }
864 }
865}
866
867#[derive(Debug, Clone)]
868pub struct ElementControlControlHandle {
869 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
870}
871
872impl fidl::endpoints::ControlHandle for ElementControlControlHandle {
873 fn shutdown(&self) {
874 self.inner.shutdown()
875 }
876
877 fn shutdown_with_epitaph(&self, status: zx_status::Status) {
878 self.inner.shutdown_with_epitaph(status)
879 }
880
881 fn is_closed(&self) -> bool {
882 self.inner.channel().is_closed()
883 }
884 fn on_closed(&self) -> fidl::OnSignalsRef<'_> {
885 self.inner.channel().on_closed()
886 }
887
888 #[cfg(target_os = "fuchsia")]
889 fn signal_peer(
890 &self,
891 clear_mask: zx::Signals,
892 set_mask: zx::Signals,
893 ) -> Result<(), zx_status::Status> {
894 use fidl::Peered;
895 self.inner.channel().signal_peer(clear_mask, set_mask)
896 }
897}
898
899impl ElementControlControlHandle {}
900
901#[must_use = "FIDL methods require a response to be sent"]
902#[derive(Debug)]
903pub struct ElementControlRegisterDependencyTokenResponder {
904 control_handle: std::mem::ManuallyDrop<ElementControlControlHandle>,
905 tx_id: u32,
906}
907
908impl std::ops::Drop for ElementControlRegisterDependencyTokenResponder {
912 fn drop(&mut self) {
913 self.control_handle.shutdown();
914 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
916 }
917}
918
919impl fidl::endpoints::Responder for ElementControlRegisterDependencyTokenResponder {
920 type ControlHandle = ElementControlControlHandle;
921
922 fn control_handle(&self) -> &ElementControlControlHandle {
923 &self.control_handle
924 }
925
926 fn drop_without_shutdown(mut self) {
927 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
929 std::mem::forget(self);
931 }
932}
933
934impl ElementControlRegisterDependencyTokenResponder {
935 pub fn send(
939 self,
940 mut result: Result<(), RegisterDependencyTokenError>,
941 ) -> Result<(), fidl::Error> {
942 let _result = self.send_raw(result);
943 if _result.is_err() {
944 self.control_handle.shutdown();
945 }
946 self.drop_without_shutdown();
947 _result
948 }
949
950 pub fn send_no_shutdown_on_err(
952 self,
953 mut result: Result<(), RegisterDependencyTokenError>,
954 ) -> Result<(), fidl::Error> {
955 let _result = self.send_raw(result);
956 self.drop_without_shutdown();
957 _result
958 }
959
960 fn send_raw(
961 &self,
962 mut result: Result<(), RegisterDependencyTokenError>,
963 ) -> Result<(), fidl::Error> {
964 self.control_handle.inner.send::<fidl::encoding::FlexibleResultType<
965 fidl::encoding::EmptyStruct,
966 RegisterDependencyTokenError,
967 >>(
968 fidl::encoding::FlexibleResult::new(result),
969 self.tx_id,
970 0x3a5016663d198d61,
971 fidl::encoding::DynamicFlags::FLEXIBLE,
972 )
973 }
974}
975
976#[must_use = "FIDL methods require a response to be sent"]
977#[derive(Debug)]
978pub struct ElementControlUnregisterDependencyTokenResponder {
979 control_handle: std::mem::ManuallyDrop<ElementControlControlHandle>,
980 tx_id: u32,
981}
982
983impl std::ops::Drop for ElementControlUnregisterDependencyTokenResponder {
987 fn drop(&mut self) {
988 self.control_handle.shutdown();
989 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
991 }
992}
993
994impl fidl::endpoints::Responder for ElementControlUnregisterDependencyTokenResponder {
995 type ControlHandle = ElementControlControlHandle;
996
997 fn control_handle(&self) -> &ElementControlControlHandle {
998 &self.control_handle
999 }
1000
1001 fn drop_without_shutdown(mut self) {
1002 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
1004 std::mem::forget(self);
1006 }
1007}
1008
1009impl ElementControlUnregisterDependencyTokenResponder {
1010 pub fn send(
1014 self,
1015 mut result: Result<(), UnregisterDependencyTokenError>,
1016 ) -> Result<(), fidl::Error> {
1017 let _result = self.send_raw(result);
1018 if _result.is_err() {
1019 self.control_handle.shutdown();
1020 }
1021 self.drop_without_shutdown();
1022 _result
1023 }
1024
1025 pub fn send_no_shutdown_on_err(
1027 self,
1028 mut result: Result<(), UnregisterDependencyTokenError>,
1029 ) -> Result<(), fidl::Error> {
1030 let _result = self.send_raw(result);
1031 self.drop_without_shutdown();
1032 _result
1033 }
1034
1035 fn send_raw(
1036 &self,
1037 mut result: Result<(), UnregisterDependencyTokenError>,
1038 ) -> Result<(), fidl::Error> {
1039 self.control_handle.inner.send::<fidl::encoding::FlexibleResultType<
1040 fidl::encoding::EmptyStruct,
1041 UnregisterDependencyTokenError,
1042 >>(
1043 fidl::encoding::FlexibleResult::new(result),
1044 self.tx_id,
1045 0x65a31a3661499529,
1046 fidl::encoding::DynamicFlags::FLEXIBLE,
1047 )
1048 }
1049}
1050
1051#[derive(Debug, Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash)]
1052pub struct ElementInfoProviderMarker;
1053
1054impl fidl::endpoints::ProtocolMarker for ElementInfoProviderMarker {
1055 type Proxy = ElementInfoProviderProxy;
1056 type RequestStream = ElementInfoProviderRequestStream;
1057 #[cfg(target_os = "fuchsia")]
1058 type SynchronousProxy = ElementInfoProviderSynchronousProxy;
1059
1060 const DEBUG_NAME: &'static str = "fuchsia.power.broker.ElementInfoProvider";
1061}
1062impl fidl::endpoints::DiscoverableProtocolMarker for ElementInfoProviderMarker {}
1063pub type ElementInfoProviderGetElementPowerLevelNamesResult =
1064 Result<Vec<ElementPowerLevelNames>, ElementInfoProviderError>;
1065pub type ElementInfoProviderGetStatusEndpointsResult =
1066 Result<Vec<ElementStatusEndpoint>, ElementInfoProviderError>;
1067
1068pub trait ElementInfoProviderProxyInterface: Send + Sync {
1069 type GetElementPowerLevelNamesResponseFut: std::future::Future<
1070 Output = Result<ElementInfoProviderGetElementPowerLevelNamesResult, fidl::Error>,
1071 > + Send;
1072 fn r#get_element_power_level_names(&self) -> Self::GetElementPowerLevelNamesResponseFut;
1073 type GetStatusEndpointsResponseFut: std::future::Future<
1074 Output = Result<ElementInfoProviderGetStatusEndpointsResult, fidl::Error>,
1075 > + Send;
1076 fn r#get_status_endpoints(&self) -> Self::GetStatusEndpointsResponseFut;
1077}
1078#[derive(Debug)]
1079#[cfg(target_os = "fuchsia")]
1080pub struct ElementInfoProviderSynchronousProxy {
1081 client: fidl::client::sync::Client,
1082}
1083
1084#[cfg(target_os = "fuchsia")]
1085impl fidl::endpoints::SynchronousProxy for ElementInfoProviderSynchronousProxy {
1086 type Proxy = ElementInfoProviderProxy;
1087 type Protocol = ElementInfoProviderMarker;
1088
1089 fn from_channel(inner: fidl::Channel) -> Self {
1090 Self::new(inner)
1091 }
1092
1093 fn into_channel(self) -> fidl::Channel {
1094 self.client.into_channel()
1095 }
1096
1097 fn as_channel(&self) -> &fidl::Channel {
1098 self.client.as_channel()
1099 }
1100}
1101
1102#[cfg(target_os = "fuchsia")]
1103impl ElementInfoProviderSynchronousProxy {
1104 pub fn new(channel: fidl::Channel) -> Self {
1105 Self { client: fidl::client::sync::Client::new(channel) }
1106 }
1107
1108 pub fn into_channel(self) -> fidl::Channel {
1109 self.client.into_channel()
1110 }
1111
1112 pub fn wait_for_event(
1115 &self,
1116 deadline: zx::MonotonicInstant,
1117 ) -> Result<ElementInfoProviderEvent, fidl::Error> {
1118 ElementInfoProviderEvent::decode(
1119 self.client.wait_for_event::<ElementInfoProviderMarker>(deadline)?,
1120 )
1121 }
1122
1123 pub fn r#get_element_power_level_names(
1126 &self,
1127 ___deadline: zx::MonotonicInstant,
1128 ) -> Result<ElementInfoProviderGetElementPowerLevelNamesResult, fidl::Error> {
1129 let _response = self
1130 .client
1131 .send_query::<fidl::encoding::EmptyPayload, fidl::encoding::FlexibleResultType<
1132 ElementInfoProviderGetElementPowerLevelNamesResponse,
1133 ElementInfoProviderError,
1134 >, ElementInfoProviderMarker>(
1135 (),
1136 0x298f63881fc9ed49,
1137 fidl::encoding::DynamicFlags::FLEXIBLE,
1138 ___deadline,
1139 )?
1140 .into_result::<ElementInfoProviderMarker>("get_element_power_level_names")?;
1141 Ok(_response.map(|x| x.level_names))
1142 }
1143
1144 pub fn r#get_status_endpoints(
1148 &self,
1149 ___deadline: zx::MonotonicInstant,
1150 ) -> Result<ElementInfoProviderGetStatusEndpointsResult, fidl::Error> {
1151 let _response = self
1152 .client
1153 .send_query::<fidl::encoding::EmptyPayload, fidl::encoding::FlexibleResultType<
1154 ElementInfoProviderGetStatusEndpointsResponse,
1155 ElementInfoProviderError,
1156 >, ElementInfoProviderMarker>(
1157 (),
1158 0x456f2b6c5bf0777c,
1159 fidl::encoding::DynamicFlags::FLEXIBLE,
1160 ___deadline,
1161 )?
1162 .into_result::<ElementInfoProviderMarker>("get_status_endpoints")?;
1163 Ok(_response.map(|x| x.endpoints))
1164 }
1165}
1166
1167#[cfg(target_os = "fuchsia")]
1168impl From<ElementInfoProviderSynchronousProxy> for zx::NullableHandle {
1169 fn from(value: ElementInfoProviderSynchronousProxy) -> Self {
1170 value.into_channel().into()
1171 }
1172}
1173
1174#[cfg(target_os = "fuchsia")]
1175impl From<fidl::Channel> for ElementInfoProviderSynchronousProxy {
1176 fn from(value: fidl::Channel) -> Self {
1177 Self::new(value)
1178 }
1179}
1180
1181#[cfg(target_os = "fuchsia")]
1182impl fidl::endpoints::FromClient for ElementInfoProviderSynchronousProxy {
1183 type Protocol = ElementInfoProviderMarker;
1184
1185 fn from_client(value: fidl::endpoints::ClientEnd<ElementInfoProviderMarker>) -> Self {
1186 Self::new(value.into_channel())
1187 }
1188}
1189
1190#[derive(Debug, Clone)]
1191pub struct ElementInfoProviderProxy {
1192 client: fidl::client::Client<fidl::encoding::DefaultFuchsiaResourceDialect>,
1193}
1194
1195impl fidl::endpoints::Proxy for ElementInfoProviderProxy {
1196 type Protocol = ElementInfoProviderMarker;
1197
1198 fn from_channel(inner: ::fidl::AsyncChannel) -> Self {
1199 Self::new(inner)
1200 }
1201
1202 fn into_channel(self) -> Result<::fidl::AsyncChannel, Self> {
1203 self.client.into_channel().map_err(|client| Self { client })
1204 }
1205
1206 fn as_channel(&self) -> &::fidl::AsyncChannel {
1207 self.client.as_channel()
1208 }
1209}
1210
1211impl ElementInfoProviderProxy {
1212 pub fn new(channel: ::fidl::AsyncChannel) -> Self {
1214 let protocol_name =
1215 <ElementInfoProviderMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
1216 Self { client: fidl::client::Client::new(channel, protocol_name) }
1217 }
1218
1219 pub fn take_event_stream(&self) -> ElementInfoProviderEventStream {
1225 ElementInfoProviderEventStream { event_receiver: self.client.take_event_receiver() }
1226 }
1227
1228 pub fn r#get_element_power_level_names(
1231 &self,
1232 ) -> fidl::client::QueryResponseFut<
1233 ElementInfoProviderGetElementPowerLevelNamesResult,
1234 fidl::encoding::DefaultFuchsiaResourceDialect,
1235 > {
1236 ElementInfoProviderProxyInterface::r#get_element_power_level_names(self)
1237 }
1238
1239 pub fn r#get_status_endpoints(
1243 &self,
1244 ) -> fidl::client::QueryResponseFut<
1245 ElementInfoProviderGetStatusEndpointsResult,
1246 fidl::encoding::DefaultFuchsiaResourceDialect,
1247 > {
1248 ElementInfoProviderProxyInterface::r#get_status_endpoints(self)
1249 }
1250}
1251
1252impl ElementInfoProviderProxyInterface for ElementInfoProviderProxy {
1253 type GetElementPowerLevelNamesResponseFut = fidl::client::QueryResponseFut<
1254 ElementInfoProviderGetElementPowerLevelNamesResult,
1255 fidl::encoding::DefaultFuchsiaResourceDialect,
1256 >;
1257 fn r#get_element_power_level_names(&self) -> Self::GetElementPowerLevelNamesResponseFut {
1258 fn _decode(
1259 mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
1260 ) -> Result<ElementInfoProviderGetElementPowerLevelNamesResult, fidl::Error> {
1261 let _response = fidl::client::decode_transaction_body::<
1262 fidl::encoding::FlexibleResultType<
1263 ElementInfoProviderGetElementPowerLevelNamesResponse,
1264 ElementInfoProviderError,
1265 >,
1266 fidl::encoding::DefaultFuchsiaResourceDialect,
1267 0x298f63881fc9ed49,
1268 >(_buf?)?
1269 .into_result::<ElementInfoProviderMarker>("get_element_power_level_names")?;
1270 Ok(_response.map(|x| x.level_names))
1271 }
1272 self.client.send_query_and_decode::<
1273 fidl::encoding::EmptyPayload,
1274 ElementInfoProviderGetElementPowerLevelNamesResult,
1275 >(
1276 (),
1277 0x298f63881fc9ed49,
1278 fidl::encoding::DynamicFlags::FLEXIBLE,
1279 _decode,
1280 )
1281 }
1282
1283 type GetStatusEndpointsResponseFut = fidl::client::QueryResponseFut<
1284 ElementInfoProviderGetStatusEndpointsResult,
1285 fidl::encoding::DefaultFuchsiaResourceDialect,
1286 >;
1287 fn r#get_status_endpoints(&self) -> Self::GetStatusEndpointsResponseFut {
1288 fn _decode(
1289 mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
1290 ) -> Result<ElementInfoProviderGetStatusEndpointsResult, fidl::Error> {
1291 let _response = fidl::client::decode_transaction_body::<
1292 fidl::encoding::FlexibleResultType<
1293 ElementInfoProviderGetStatusEndpointsResponse,
1294 ElementInfoProviderError,
1295 >,
1296 fidl::encoding::DefaultFuchsiaResourceDialect,
1297 0x456f2b6c5bf0777c,
1298 >(_buf?)?
1299 .into_result::<ElementInfoProviderMarker>("get_status_endpoints")?;
1300 Ok(_response.map(|x| x.endpoints))
1301 }
1302 self.client.send_query_and_decode::<
1303 fidl::encoding::EmptyPayload,
1304 ElementInfoProviderGetStatusEndpointsResult,
1305 >(
1306 (),
1307 0x456f2b6c5bf0777c,
1308 fidl::encoding::DynamicFlags::FLEXIBLE,
1309 _decode,
1310 )
1311 }
1312}
1313
1314pub struct ElementInfoProviderEventStream {
1315 event_receiver: fidl::client::EventReceiver<fidl::encoding::DefaultFuchsiaResourceDialect>,
1316}
1317
1318impl std::marker::Unpin for ElementInfoProviderEventStream {}
1319
1320impl futures::stream::FusedStream for ElementInfoProviderEventStream {
1321 fn is_terminated(&self) -> bool {
1322 self.event_receiver.is_terminated()
1323 }
1324}
1325
1326impl futures::Stream for ElementInfoProviderEventStream {
1327 type Item = Result<ElementInfoProviderEvent, fidl::Error>;
1328
1329 fn poll_next(
1330 mut self: std::pin::Pin<&mut Self>,
1331 cx: &mut std::task::Context<'_>,
1332 ) -> std::task::Poll<Option<Self::Item>> {
1333 match futures::ready!(futures::stream::StreamExt::poll_next_unpin(
1334 &mut self.event_receiver,
1335 cx
1336 )?) {
1337 Some(buf) => std::task::Poll::Ready(Some(ElementInfoProviderEvent::decode(buf))),
1338 None => std::task::Poll::Ready(None),
1339 }
1340 }
1341}
1342
1343#[derive(Debug)]
1344pub enum ElementInfoProviderEvent {
1345 #[non_exhaustive]
1346 _UnknownEvent {
1347 ordinal: u64,
1349 },
1350}
1351
1352impl ElementInfoProviderEvent {
1353 fn decode(
1355 mut buf: <fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc,
1356 ) -> Result<ElementInfoProviderEvent, fidl::Error> {
1357 let (bytes, _handles) = buf.split_mut();
1358 let (tx_header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
1359 debug_assert_eq!(tx_header.tx_id, 0);
1360 match tx_header.ordinal {
1361 _ if tx_header.dynamic_flags().contains(fidl::encoding::DynamicFlags::FLEXIBLE) => {
1362 Ok(ElementInfoProviderEvent::_UnknownEvent { ordinal: tx_header.ordinal })
1363 }
1364 _ => Err(fidl::Error::UnknownOrdinal {
1365 ordinal: tx_header.ordinal,
1366 protocol_name:
1367 <ElementInfoProviderMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
1368 }),
1369 }
1370 }
1371}
1372
1373pub struct ElementInfoProviderRequestStream {
1375 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
1376 is_terminated: bool,
1377}
1378
1379impl std::marker::Unpin for ElementInfoProviderRequestStream {}
1380
1381impl futures::stream::FusedStream for ElementInfoProviderRequestStream {
1382 fn is_terminated(&self) -> bool {
1383 self.is_terminated
1384 }
1385}
1386
1387impl fidl::endpoints::RequestStream for ElementInfoProviderRequestStream {
1388 type Protocol = ElementInfoProviderMarker;
1389 type ControlHandle = ElementInfoProviderControlHandle;
1390
1391 fn from_channel(channel: ::fidl::AsyncChannel) -> Self {
1392 Self { inner: std::sync::Arc::new(fidl::ServeInner::new(channel)), is_terminated: false }
1393 }
1394
1395 fn control_handle(&self) -> Self::ControlHandle {
1396 ElementInfoProviderControlHandle { inner: self.inner.clone() }
1397 }
1398
1399 fn into_inner(
1400 self,
1401 ) -> (::std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>, bool)
1402 {
1403 (self.inner, self.is_terminated)
1404 }
1405
1406 fn from_inner(
1407 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
1408 is_terminated: bool,
1409 ) -> Self {
1410 Self { inner, is_terminated }
1411 }
1412}
1413
1414impl futures::Stream for ElementInfoProviderRequestStream {
1415 type Item = Result<ElementInfoProviderRequest, fidl::Error>;
1416
1417 fn poll_next(
1418 mut self: std::pin::Pin<&mut Self>,
1419 cx: &mut std::task::Context<'_>,
1420 ) -> std::task::Poll<Option<Self::Item>> {
1421 let this = &mut *self;
1422 if this.inner.check_shutdown(cx) {
1423 this.is_terminated = true;
1424 return std::task::Poll::Ready(None);
1425 }
1426 if this.is_terminated {
1427 panic!("polled ElementInfoProviderRequestStream after completion");
1428 }
1429 fidl::encoding::with_tls_decode_buf::<_, fidl::encoding::DefaultFuchsiaResourceDialect>(
1430 |bytes, handles| {
1431 match this.inner.channel().read_etc(cx, bytes, handles) {
1432 std::task::Poll::Ready(Ok(())) => {}
1433 std::task::Poll::Pending => return std::task::Poll::Pending,
1434 std::task::Poll::Ready(Err(zx_status::Status::PEER_CLOSED)) => {
1435 this.is_terminated = true;
1436 return std::task::Poll::Ready(None);
1437 }
1438 std::task::Poll::Ready(Err(e)) => {
1439 return std::task::Poll::Ready(Some(Err(fidl::Error::ServerRequestRead(
1440 e.into(),
1441 ))));
1442 }
1443 }
1444
1445 let (header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
1447
1448 std::task::Poll::Ready(Some(match header.ordinal {
1449 0x298f63881fc9ed49 => {
1450 header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
1451 let mut req = fidl::new_empty!(fidl::encoding::EmptyPayload, fidl::encoding::DefaultFuchsiaResourceDialect);
1452 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
1453 let control_handle = ElementInfoProviderControlHandle {
1454 inner: this.inner.clone(),
1455 };
1456 Ok(ElementInfoProviderRequest::GetElementPowerLevelNames {
1457 responder: ElementInfoProviderGetElementPowerLevelNamesResponder {
1458 control_handle: std::mem::ManuallyDrop::new(control_handle),
1459 tx_id: header.tx_id,
1460 },
1461 })
1462 }
1463 0x456f2b6c5bf0777c => {
1464 header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
1465 let mut req = fidl::new_empty!(fidl::encoding::EmptyPayload, fidl::encoding::DefaultFuchsiaResourceDialect);
1466 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
1467 let control_handle = ElementInfoProviderControlHandle {
1468 inner: this.inner.clone(),
1469 };
1470 Ok(ElementInfoProviderRequest::GetStatusEndpoints {
1471 responder: ElementInfoProviderGetStatusEndpointsResponder {
1472 control_handle: std::mem::ManuallyDrop::new(control_handle),
1473 tx_id: header.tx_id,
1474 },
1475 })
1476 }
1477 _ if header.tx_id == 0 && header.dynamic_flags().contains(fidl::encoding::DynamicFlags::FLEXIBLE) => {
1478 Ok(ElementInfoProviderRequest::_UnknownMethod {
1479 ordinal: header.ordinal,
1480 control_handle: ElementInfoProviderControlHandle { inner: this.inner.clone() },
1481 method_type: fidl::MethodType::OneWay,
1482 })
1483 }
1484 _ if header.dynamic_flags().contains(fidl::encoding::DynamicFlags::FLEXIBLE) => {
1485 this.inner.send_framework_err(
1486 fidl::encoding::FrameworkErr::UnknownMethod,
1487 header.tx_id,
1488 header.ordinal,
1489 header.dynamic_flags(),
1490 (bytes, handles),
1491 )?;
1492 Ok(ElementInfoProviderRequest::_UnknownMethod {
1493 ordinal: header.ordinal,
1494 control_handle: ElementInfoProviderControlHandle { inner: this.inner.clone() },
1495 method_type: fidl::MethodType::TwoWay,
1496 })
1497 }
1498 _ => Err(fidl::Error::UnknownOrdinal {
1499 ordinal: header.ordinal,
1500 protocol_name: <ElementInfoProviderMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
1501 }),
1502 }))
1503 },
1504 )
1505 }
1506}
1507
1508#[derive(Debug)]
1510pub enum ElementInfoProviderRequest {
1511 GetElementPowerLevelNames { responder: ElementInfoProviderGetElementPowerLevelNamesResponder },
1514 GetStatusEndpoints { responder: ElementInfoProviderGetStatusEndpointsResponder },
1518 #[non_exhaustive]
1520 _UnknownMethod {
1521 ordinal: u64,
1523 control_handle: ElementInfoProviderControlHandle,
1524 method_type: fidl::MethodType,
1525 },
1526}
1527
1528impl ElementInfoProviderRequest {
1529 #[allow(irrefutable_let_patterns)]
1530 pub fn into_get_element_power_level_names(
1531 self,
1532 ) -> Option<(ElementInfoProviderGetElementPowerLevelNamesResponder)> {
1533 if let ElementInfoProviderRequest::GetElementPowerLevelNames { responder } = self {
1534 Some((responder))
1535 } else {
1536 None
1537 }
1538 }
1539
1540 #[allow(irrefutable_let_patterns)]
1541 pub fn into_get_status_endpoints(
1542 self,
1543 ) -> Option<(ElementInfoProviderGetStatusEndpointsResponder)> {
1544 if let ElementInfoProviderRequest::GetStatusEndpoints { responder } = self {
1545 Some((responder))
1546 } else {
1547 None
1548 }
1549 }
1550
1551 pub fn method_name(&self) -> &'static str {
1553 match *self {
1554 ElementInfoProviderRequest::GetElementPowerLevelNames { .. } => {
1555 "get_element_power_level_names"
1556 }
1557 ElementInfoProviderRequest::GetStatusEndpoints { .. } => "get_status_endpoints",
1558 ElementInfoProviderRequest::_UnknownMethod {
1559 method_type: fidl::MethodType::OneWay,
1560 ..
1561 } => "unknown one-way method",
1562 ElementInfoProviderRequest::_UnknownMethod {
1563 method_type: fidl::MethodType::TwoWay,
1564 ..
1565 } => "unknown two-way method",
1566 }
1567 }
1568}
1569
1570#[derive(Debug, Clone)]
1571pub struct ElementInfoProviderControlHandle {
1572 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
1573}
1574
1575impl fidl::endpoints::ControlHandle for ElementInfoProviderControlHandle {
1576 fn shutdown(&self) {
1577 self.inner.shutdown()
1578 }
1579
1580 fn shutdown_with_epitaph(&self, status: zx_status::Status) {
1581 self.inner.shutdown_with_epitaph(status)
1582 }
1583
1584 fn is_closed(&self) -> bool {
1585 self.inner.channel().is_closed()
1586 }
1587 fn on_closed(&self) -> fidl::OnSignalsRef<'_> {
1588 self.inner.channel().on_closed()
1589 }
1590
1591 #[cfg(target_os = "fuchsia")]
1592 fn signal_peer(
1593 &self,
1594 clear_mask: zx::Signals,
1595 set_mask: zx::Signals,
1596 ) -> Result<(), zx_status::Status> {
1597 use fidl::Peered;
1598 self.inner.channel().signal_peer(clear_mask, set_mask)
1599 }
1600}
1601
1602impl ElementInfoProviderControlHandle {}
1603
1604#[must_use = "FIDL methods require a response to be sent"]
1605#[derive(Debug)]
1606pub struct ElementInfoProviderGetElementPowerLevelNamesResponder {
1607 control_handle: std::mem::ManuallyDrop<ElementInfoProviderControlHandle>,
1608 tx_id: u32,
1609}
1610
1611impl std::ops::Drop for ElementInfoProviderGetElementPowerLevelNamesResponder {
1615 fn drop(&mut self) {
1616 self.control_handle.shutdown();
1617 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
1619 }
1620}
1621
1622impl fidl::endpoints::Responder for ElementInfoProviderGetElementPowerLevelNamesResponder {
1623 type ControlHandle = ElementInfoProviderControlHandle;
1624
1625 fn control_handle(&self) -> &ElementInfoProviderControlHandle {
1626 &self.control_handle
1627 }
1628
1629 fn drop_without_shutdown(mut self) {
1630 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
1632 std::mem::forget(self);
1634 }
1635}
1636
1637impl ElementInfoProviderGetElementPowerLevelNamesResponder {
1638 pub fn send(
1642 self,
1643 mut result: Result<&[ElementPowerLevelNames], ElementInfoProviderError>,
1644 ) -> Result<(), fidl::Error> {
1645 let _result = self.send_raw(result);
1646 if _result.is_err() {
1647 self.control_handle.shutdown();
1648 }
1649 self.drop_without_shutdown();
1650 _result
1651 }
1652
1653 pub fn send_no_shutdown_on_err(
1655 self,
1656 mut result: Result<&[ElementPowerLevelNames], ElementInfoProviderError>,
1657 ) -> Result<(), fidl::Error> {
1658 let _result = self.send_raw(result);
1659 self.drop_without_shutdown();
1660 _result
1661 }
1662
1663 fn send_raw(
1664 &self,
1665 mut result: Result<&[ElementPowerLevelNames], ElementInfoProviderError>,
1666 ) -> Result<(), fidl::Error> {
1667 self.control_handle.inner.send::<fidl::encoding::FlexibleResultType<
1668 ElementInfoProviderGetElementPowerLevelNamesResponse,
1669 ElementInfoProviderError,
1670 >>(
1671 fidl::encoding::FlexibleResult::new(result.map(|level_names| (level_names,))),
1672 self.tx_id,
1673 0x298f63881fc9ed49,
1674 fidl::encoding::DynamicFlags::FLEXIBLE,
1675 )
1676 }
1677}
1678
1679#[must_use = "FIDL methods require a response to be sent"]
1680#[derive(Debug)]
1681pub struct ElementInfoProviderGetStatusEndpointsResponder {
1682 control_handle: std::mem::ManuallyDrop<ElementInfoProviderControlHandle>,
1683 tx_id: u32,
1684}
1685
1686impl std::ops::Drop for ElementInfoProviderGetStatusEndpointsResponder {
1690 fn drop(&mut self) {
1691 self.control_handle.shutdown();
1692 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
1694 }
1695}
1696
1697impl fidl::endpoints::Responder for ElementInfoProviderGetStatusEndpointsResponder {
1698 type ControlHandle = ElementInfoProviderControlHandle;
1699
1700 fn control_handle(&self) -> &ElementInfoProviderControlHandle {
1701 &self.control_handle
1702 }
1703
1704 fn drop_without_shutdown(mut self) {
1705 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
1707 std::mem::forget(self);
1709 }
1710}
1711
1712impl ElementInfoProviderGetStatusEndpointsResponder {
1713 pub fn send(
1717 self,
1718 mut result: Result<Vec<ElementStatusEndpoint>, ElementInfoProviderError>,
1719 ) -> Result<(), fidl::Error> {
1720 let _result = self.send_raw(result);
1721 if _result.is_err() {
1722 self.control_handle.shutdown();
1723 }
1724 self.drop_without_shutdown();
1725 _result
1726 }
1727
1728 pub fn send_no_shutdown_on_err(
1730 self,
1731 mut result: Result<Vec<ElementStatusEndpoint>, ElementInfoProviderError>,
1732 ) -> Result<(), fidl::Error> {
1733 let _result = self.send_raw(result);
1734 self.drop_without_shutdown();
1735 _result
1736 }
1737
1738 fn send_raw(
1739 &self,
1740 mut result: Result<Vec<ElementStatusEndpoint>, ElementInfoProviderError>,
1741 ) -> Result<(), fidl::Error> {
1742 self.control_handle.inner.send::<fidl::encoding::FlexibleResultType<
1743 ElementInfoProviderGetStatusEndpointsResponse,
1744 ElementInfoProviderError,
1745 >>(
1746 fidl::encoding::FlexibleResult::new(
1747 result.as_mut().map_err(|e| *e).map(|endpoints| (endpoints.as_mut_slice(),)),
1748 ),
1749 self.tx_id,
1750 0x456f2b6c5bf0777c,
1751 fidl::encoding::DynamicFlags::FLEXIBLE,
1752 )
1753 }
1754}
1755
1756#[derive(Debug, Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash)]
1757pub struct ElementRunnerMarker;
1758
1759impl fidl::endpoints::ProtocolMarker for ElementRunnerMarker {
1760 type Proxy = ElementRunnerProxy;
1761 type RequestStream = ElementRunnerRequestStream;
1762 #[cfg(target_os = "fuchsia")]
1763 type SynchronousProxy = ElementRunnerSynchronousProxy;
1764
1765 const DEBUG_NAME: &'static str = "fuchsia.power.broker.ElementRunner";
1766}
1767impl fidl::endpoints::DiscoverableProtocolMarker for ElementRunnerMarker {}
1768
1769pub trait ElementRunnerProxyInterface: Send + Sync {
1770 type SetLevelResponseFut: std::future::Future<Output = Result<(), fidl::Error>> + Send;
1771 fn r#set_level(&self, level: u8) -> Self::SetLevelResponseFut;
1772}
1773#[derive(Debug)]
1774#[cfg(target_os = "fuchsia")]
1775pub struct ElementRunnerSynchronousProxy {
1776 client: fidl::client::sync::Client,
1777}
1778
1779#[cfg(target_os = "fuchsia")]
1780impl fidl::endpoints::SynchronousProxy for ElementRunnerSynchronousProxy {
1781 type Proxy = ElementRunnerProxy;
1782 type Protocol = ElementRunnerMarker;
1783
1784 fn from_channel(inner: fidl::Channel) -> Self {
1785 Self::new(inner)
1786 }
1787
1788 fn into_channel(self) -> fidl::Channel {
1789 self.client.into_channel()
1790 }
1791
1792 fn as_channel(&self) -> &fidl::Channel {
1793 self.client.as_channel()
1794 }
1795}
1796
1797#[cfg(target_os = "fuchsia")]
1798impl ElementRunnerSynchronousProxy {
1799 pub fn new(channel: fidl::Channel) -> Self {
1800 Self { client: fidl::client::sync::Client::new(channel) }
1801 }
1802
1803 pub fn into_channel(self) -> fidl::Channel {
1804 self.client.into_channel()
1805 }
1806
1807 pub fn wait_for_event(
1810 &self,
1811 deadline: zx::MonotonicInstant,
1812 ) -> Result<ElementRunnerEvent, fidl::Error> {
1813 ElementRunnerEvent::decode(self.client.wait_for_event::<ElementRunnerMarker>(deadline)?)
1814 }
1815
1816 pub fn r#set_level(
1823 &self,
1824 mut level: u8,
1825 ___deadline: zx::MonotonicInstant,
1826 ) -> Result<(), fidl::Error> {
1827 let _response = self.client.send_query::<
1828 ElementRunnerSetLevelRequest,
1829 fidl::encoding::FlexibleType<fidl::encoding::EmptyStruct>,
1830 ElementRunnerMarker,
1831 >(
1832 (level,),
1833 0x11a93092b228f0b,
1834 fidl::encoding::DynamicFlags::FLEXIBLE,
1835 ___deadline,
1836 )?
1837 .into_result::<ElementRunnerMarker>("set_level")?;
1838 Ok(_response)
1839 }
1840}
1841
1842#[cfg(target_os = "fuchsia")]
1843impl From<ElementRunnerSynchronousProxy> for zx::NullableHandle {
1844 fn from(value: ElementRunnerSynchronousProxy) -> Self {
1845 value.into_channel().into()
1846 }
1847}
1848
1849#[cfg(target_os = "fuchsia")]
1850impl From<fidl::Channel> for ElementRunnerSynchronousProxy {
1851 fn from(value: fidl::Channel) -> Self {
1852 Self::new(value)
1853 }
1854}
1855
1856#[cfg(target_os = "fuchsia")]
1857impl fidl::endpoints::FromClient for ElementRunnerSynchronousProxy {
1858 type Protocol = ElementRunnerMarker;
1859
1860 fn from_client(value: fidl::endpoints::ClientEnd<ElementRunnerMarker>) -> Self {
1861 Self::new(value.into_channel())
1862 }
1863}
1864
1865#[derive(Debug, Clone)]
1866pub struct ElementRunnerProxy {
1867 client: fidl::client::Client<fidl::encoding::DefaultFuchsiaResourceDialect>,
1868}
1869
1870impl fidl::endpoints::Proxy for ElementRunnerProxy {
1871 type Protocol = ElementRunnerMarker;
1872
1873 fn from_channel(inner: ::fidl::AsyncChannel) -> Self {
1874 Self::new(inner)
1875 }
1876
1877 fn into_channel(self) -> Result<::fidl::AsyncChannel, Self> {
1878 self.client.into_channel().map_err(|client| Self { client })
1879 }
1880
1881 fn as_channel(&self) -> &::fidl::AsyncChannel {
1882 self.client.as_channel()
1883 }
1884}
1885
1886impl ElementRunnerProxy {
1887 pub fn new(channel: ::fidl::AsyncChannel) -> Self {
1889 let protocol_name = <ElementRunnerMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
1890 Self { client: fidl::client::Client::new(channel, protocol_name) }
1891 }
1892
1893 pub fn take_event_stream(&self) -> ElementRunnerEventStream {
1899 ElementRunnerEventStream { event_receiver: self.client.take_event_receiver() }
1900 }
1901
1902 pub fn r#set_level(
1909 &self,
1910 mut level: u8,
1911 ) -> fidl::client::QueryResponseFut<(), fidl::encoding::DefaultFuchsiaResourceDialect> {
1912 ElementRunnerProxyInterface::r#set_level(self, level)
1913 }
1914}
1915
1916impl ElementRunnerProxyInterface for ElementRunnerProxy {
1917 type SetLevelResponseFut =
1918 fidl::client::QueryResponseFut<(), fidl::encoding::DefaultFuchsiaResourceDialect>;
1919 fn r#set_level(&self, mut level: u8) -> Self::SetLevelResponseFut {
1920 fn _decode(
1921 mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
1922 ) -> Result<(), fidl::Error> {
1923 let _response = fidl::client::decode_transaction_body::<
1924 fidl::encoding::FlexibleType<fidl::encoding::EmptyStruct>,
1925 fidl::encoding::DefaultFuchsiaResourceDialect,
1926 0x11a93092b228f0b,
1927 >(_buf?)?
1928 .into_result::<ElementRunnerMarker>("set_level")?;
1929 Ok(_response)
1930 }
1931 self.client.send_query_and_decode::<ElementRunnerSetLevelRequest, ()>(
1932 (level,),
1933 0x11a93092b228f0b,
1934 fidl::encoding::DynamicFlags::FLEXIBLE,
1935 _decode,
1936 )
1937 }
1938}
1939
1940pub struct ElementRunnerEventStream {
1941 event_receiver: fidl::client::EventReceiver<fidl::encoding::DefaultFuchsiaResourceDialect>,
1942}
1943
1944impl std::marker::Unpin for ElementRunnerEventStream {}
1945
1946impl futures::stream::FusedStream for ElementRunnerEventStream {
1947 fn is_terminated(&self) -> bool {
1948 self.event_receiver.is_terminated()
1949 }
1950}
1951
1952impl futures::Stream for ElementRunnerEventStream {
1953 type Item = Result<ElementRunnerEvent, fidl::Error>;
1954
1955 fn poll_next(
1956 mut self: std::pin::Pin<&mut Self>,
1957 cx: &mut std::task::Context<'_>,
1958 ) -> std::task::Poll<Option<Self::Item>> {
1959 match futures::ready!(futures::stream::StreamExt::poll_next_unpin(
1960 &mut self.event_receiver,
1961 cx
1962 )?) {
1963 Some(buf) => std::task::Poll::Ready(Some(ElementRunnerEvent::decode(buf))),
1964 None => std::task::Poll::Ready(None),
1965 }
1966 }
1967}
1968
1969#[derive(Debug)]
1970pub enum ElementRunnerEvent {
1971 #[non_exhaustive]
1972 _UnknownEvent {
1973 ordinal: u64,
1975 },
1976}
1977
1978impl ElementRunnerEvent {
1979 fn decode(
1981 mut buf: <fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc,
1982 ) -> Result<ElementRunnerEvent, fidl::Error> {
1983 let (bytes, _handles) = buf.split_mut();
1984 let (tx_header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
1985 debug_assert_eq!(tx_header.tx_id, 0);
1986 match tx_header.ordinal {
1987 _ if tx_header.dynamic_flags().contains(fidl::encoding::DynamicFlags::FLEXIBLE) => {
1988 Ok(ElementRunnerEvent::_UnknownEvent { ordinal: tx_header.ordinal })
1989 }
1990 _ => Err(fidl::Error::UnknownOrdinal {
1991 ordinal: tx_header.ordinal,
1992 protocol_name: <ElementRunnerMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
1993 }),
1994 }
1995 }
1996}
1997
1998pub struct ElementRunnerRequestStream {
2000 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
2001 is_terminated: bool,
2002}
2003
2004impl std::marker::Unpin for ElementRunnerRequestStream {}
2005
2006impl futures::stream::FusedStream for ElementRunnerRequestStream {
2007 fn is_terminated(&self) -> bool {
2008 self.is_terminated
2009 }
2010}
2011
2012impl fidl::endpoints::RequestStream for ElementRunnerRequestStream {
2013 type Protocol = ElementRunnerMarker;
2014 type ControlHandle = ElementRunnerControlHandle;
2015
2016 fn from_channel(channel: ::fidl::AsyncChannel) -> Self {
2017 Self { inner: std::sync::Arc::new(fidl::ServeInner::new(channel)), is_terminated: false }
2018 }
2019
2020 fn control_handle(&self) -> Self::ControlHandle {
2021 ElementRunnerControlHandle { inner: self.inner.clone() }
2022 }
2023
2024 fn into_inner(
2025 self,
2026 ) -> (::std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>, bool)
2027 {
2028 (self.inner, self.is_terminated)
2029 }
2030
2031 fn from_inner(
2032 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
2033 is_terminated: bool,
2034 ) -> Self {
2035 Self { inner, is_terminated }
2036 }
2037}
2038
2039impl futures::Stream for ElementRunnerRequestStream {
2040 type Item = Result<ElementRunnerRequest, fidl::Error>;
2041
2042 fn poll_next(
2043 mut self: std::pin::Pin<&mut Self>,
2044 cx: &mut std::task::Context<'_>,
2045 ) -> std::task::Poll<Option<Self::Item>> {
2046 let this = &mut *self;
2047 if this.inner.check_shutdown(cx) {
2048 this.is_terminated = true;
2049 return std::task::Poll::Ready(None);
2050 }
2051 if this.is_terminated {
2052 panic!("polled ElementRunnerRequestStream after completion");
2053 }
2054 fidl::encoding::with_tls_decode_buf::<_, fidl::encoding::DefaultFuchsiaResourceDialect>(
2055 |bytes, handles| {
2056 match this.inner.channel().read_etc(cx, bytes, handles) {
2057 std::task::Poll::Ready(Ok(())) => {}
2058 std::task::Poll::Pending => return std::task::Poll::Pending,
2059 std::task::Poll::Ready(Err(zx_status::Status::PEER_CLOSED)) => {
2060 this.is_terminated = true;
2061 return std::task::Poll::Ready(None);
2062 }
2063 std::task::Poll::Ready(Err(e)) => {
2064 return std::task::Poll::Ready(Some(Err(fidl::Error::ServerRequestRead(
2065 e.into(),
2066 ))));
2067 }
2068 }
2069
2070 let (header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
2072
2073 std::task::Poll::Ready(Some(match header.ordinal {
2074 0x11a93092b228f0b => {
2075 header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
2076 let mut req = fidl::new_empty!(
2077 ElementRunnerSetLevelRequest,
2078 fidl::encoding::DefaultFuchsiaResourceDialect
2079 );
2080 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<ElementRunnerSetLevelRequest>(&header, _body_bytes, handles, &mut req)?;
2081 let control_handle =
2082 ElementRunnerControlHandle { inner: this.inner.clone() };
2083 Ok(ElementRunnerRequest::SetLevel {
2084 level: req.level,
2085
2086 responder: ElementRunnerSetLevelResponder {
2087 control_handle: std::mem::ManuallyDrop::new(control_handle),
2088 tx_id: header.tx_id,
2089 },
2090 })
2091 }
2092 _ if header.tx_id == 0
2093 && header
2094 .dynamic_flags()
2095 .contains(fidl::encoding::DynamicFlags::FLEXIBLE) =>
2096 {
2097 Ok(ElementRunnerRequest::_UnknownMethod {
2098 ordinal: header.ordinal,
2099 control_handle: ElementRunnerControlHandle {
2100 inner: this.inner.clone(),
2101 },
2102 method_type: fidl::MethodType::OneWay,
2103 })
2104 }
2105 _ if header
2106 .dynamic_flags()
2107 .contains(fidl::encoding::DynamicFlags::FLEXIBLE) =>
2108 {
2109 this.inner.send_framework_err(
2110 fidl::encoding::FrameworkErr::UnknownMethod,
2111 header.tx_id,
2112 header.ordinal,
2113 header.dynamic_flags(),
2114 (bytes, handles),
2115 )?;
2116 Ok(ElementRunnerRequest::_UnknownMethod {
2117 ordinal: header.ordinal,
2118 control_handle: ElementRunnerControlHandle {
2119 inner: this.inner.clone(),
2120 },
2121 method_type: fidl::MethodType::TwoWay,
2122 })
2123 }
2124 _ => Err(fidl::Error::UnknownOrdinal {
2125 ordinal: header.ordinal,
2126 protocol_name:
2127 <ElementRunnerMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
2128 }),
2129 }))
2130 },
2131 )
2132 }
2133}
2134
2135#[derive(Debug)]
2141pub enum ElementRunnerRequest {
2142 SetLevel { level: u8, responder: ElementRunnerSetLevelResponder },
2149 #[non_exhaustive]
2151 _UnknownMethod {
2152 ordinal: u64,
2154 control_handle: ElementRunnerControlHandle,
2155 method_type: fidl::MethodType,
2156 },
2157}
2158
2159impl ElementRunnerRequest {
2160 #[allow(irrefutable_let_patterns)]
2161 pub fn into_set_level(self) -> Option<(u8, ElementRunnerSetLevelResponder)> {
2162 if let ElementRunnerRequest::SetLevel { level, responder } = self {
2163 Some((level, responder))
2164 } else {
2165 None
2166 }
2167 }
2168
2169 pub fn method_name(&self) -> &'static str {
2171 match *self {
2172 ElementRunnerRequest::SetLevel { .. } => "set_level",
2173 ElementRunnerRequest::_UnknownMethod {
2174 method_type: fidl::MethodType::OneWay, ..
2175 } => "unknown one-way method",
2176 ElementRunnerRequest::_UnknownMethod {
2177 method_type: fidl::MethodType::TwoWay, ..
2178 } => "unknown two-way method",
2179 }
2180 }
2181}
2182
2183#[derive(Debug, Clone)]
2184pub struct ElementRunnerControlHandle {
2185 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
2186}
2187
2188impl fidl::endpoints::ControlHandle for ElementRunnerControlHandle {
2189 fn shutdown(&self) {
2190 self.inner.shutdown()
2191 }
2192
2193 fn shutdown_with_epitaph(&self, status: zx_status::Status) {
2194 self.inner.shutdown_with_epitaph(status)
2195 }
2196
2197 fn is_closed(&self) -> bool {
2198 self.inner.channel().is_closed()
2199 }
2200 fn on_closed(&self) -> fidl::OnSignalsRef<'_> {
2201 self.inner.channel().on_closed()
2202 }
2203
2204 #[cfg(target_os = "fuchsia")]
2205 fn signal_peer(
2206 &self,
2207 clear_mask: zx::Signals,
2208 set_mask: zx::Signals,
2209 ) -> Result<(), zx_status::Status> {
2210 use fidl::Peered;
2211 self.inner.channel().signal_peer(clear_mask, set_mask)
2212 }
2213}
2214
2215impl ElementRunnerControlHandle {}
2216
2217#[must_use = "FIDL methods require a response to be sent"]
2218#[derive(Debug)]
2219pub struct ElementRunnerSetLevelResponder {
2220 control_handle: std::mem::ManuallyDrop<ElementRunnerControlHandle>,
2221 tx_id: u32,
2222}
2223
2224impl std::ops::Drop for ElementRunnerSetLevelResponder {
2228 fn drop(&mut self) {
2229 self.control_handle.shutdown();
2230 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
2232 }
2233}
2234
2235impl fidl::endpoints::Responder for ElementRunnerSetLevelResponder {
2236 type ControlHandle = ElementRunnerControlHandle;
2237
2238 fn control_handle(&self) -> &ElementRunnerControlHandle {
2239 &self.control_handle
2240 }
2241
2242 fn drop_without_shutdown(mut self) {
2243 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
2245 std::mem::forget(self);
2247 }
2248}
2249
2250impl ElementRunnerSetLevelResponder {
2251 pub fn send(self) -> Result<(), fidl::Error> {
2255 let _result = self.send_raw();
2256 if _result.is_err() {
2257 self.control_handle.shutdown();
2258 }
2259 self.drop_without_shutdown();
2260 _result
2261 }
2262
2263 pub fn send_no_shutdown_on_err(self) -> Result<(), fidl::Error> {
2265 let _result = self.send_raw();
2266 self.drop_without_shutdown();
2267 _result
2268 }
2269
2270 fn send_raw(&self) -> Result<(), fidl::Error> {
2271 self.control_handle.inner.send::<fidl::encoding::FlexibleType<fidl::encoding::EmptyStruct>>(
2272 fidl::encoding::Flexible::new(()),
2273 self.tx_id,
2274 0x11a93092b228f0b,
2275 fidl::encoding::DynamicFlags::FLEXIBLE,
2276 )
2277 }
2278}
2279
2280#[derive(Debug, Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash)]
2281pub struct LeaseControlMarker;
2282
2283impl fidl::endpoints::ProtocolMarker for LeaseControlMarker {
2284 type Proxy = LeaseControlProxy;
2285 type RequestStream = LeaseControlRequestStream;
2286 #[cfg(target_os = "fuchsia")]
2287 type SynchronousProxy = LeaseControlSynchronousProxy;
2288
2289 const DEBUG_NAME: &'static str = "(anonymous) LeaseControl";
2290}
2291
2292pub trait LeaseControlProxyInterface: Send + Sync {
2293 type WatchStatusResponseFut: std::future::Future<Output = Result<LeaseStatus, fidl::Error>>
2294 + Send;
2295 fn r#watch_status(&self, last_status: LeaseStatus) -> Self::WatchStatusResponseFut;
2296}
2297#[derive(Debug)]
2298#[cfg(target_os = "fuchsia")]
2299pub struct LeaseControlSynchronousProxy {
2300 client: fidl::client::sync::Client,
2301}
2302
2303#[cfg(target_os = "fuchsia")]
2304impl fidl::endpoints::SynchronousProxy for LeaseControlSynchronousProxy {
2305 type Proxy = LeaseControlProxy;
2306 type Protocol = LeaseControlMarker;
2307
2308 fn from_channel(inner: fidl::Channel) -> Self {
2309 Self::new(inner)
2310 }
2311
2312 fn into_channel(self) -> fidl::Channel {
2313 self.client.into_channel()
2314 }
2315
2316 fn as_channel(&self) -> &fidl::Channel {
2317 self.client.as_channel()
2318 }
2319}
2320
2321#[cfg(target_os = "fuchsia")]
2322impl LeaseControlSynchronousProxy {
2323 pub fn new(channel: fidl::Channel) -> Self {
2324 Self { client: fidl::client::sync::Client::new(channel) }
2325 }
2326
2327 pub fn into_channel(self) -> fidl::Channel {
2328 self.client.into_channel()
2329 }
2330
2331 pub fn wait_for_event(
2334 &self,
2335 deadline: zx::MonotonicInstant,
2336 ) -> Result<LeaseControlEvent, fidl::Error> {
2337 LeaseControlEvent::decode(self.client.wait_for_event::<LeaseControlMarker>(deadline)?)
2338 }
2339
2340 pub fn r#watch_status(
2345 &self,
2346 mut last_status: LeaseStatus,
2347 ___deadline: zx::MonotonicInstant,
2348 ) -> Result<LeaseStatus, fidl::Error> {
2349 let _response = self.client.send_query::<
2350 LeaseControlWatchStatusRequest,
2351 fidl::encoding::FlexibleType<LeaseControlWatchStatusResponse>,
2352 LeaseControlMarker,
2353 >(
2354 (last_status,),
2355 0x293ab9b0301ca881,
2356 fidl::encoding::DynamicFlags::FLEXIBLE,
2357 ___deadline,
2358 )?
2359 .into_result::<LeaseControlMarker>("watch_status")?;
2360 Ok(_response.status)
2361 }
2362}
2363
2364#[cfg(target_os = "fuchsia")]
2365impl From<LeaseControlSynchronousProxy> for zx::NullableHandle {
2366 fn from(value: LeaseControlSynchronousProxy) -> Self {
2367 value.into_channel().into()
2368 }
2369}
2370
2371#[cfg(target_os = "fuchsia")]
2372impl From<fidl::Channel> for LeaseControlSynchronousProxy {
2373 fn from(value: fidl::Channel) -> Self {
2374 Self::new(value)
2375 }
2376}
2377
2378#[cfg(target_os = "fuchsia")]
2379impl fidl::endpoints::FromClient for LeaseControlSynchronousProxy {
2380 type Protocol = LeaseControlMarker;
2381
2382 fn from_client(value: fidl::endpoints::ClientEnd<LeaseControlMarker>) -> Self {
2383 Self::new(value.into_channel())
2384 }
2385}
2386
2387#[derive(Debug, Clone)]
2388pub struct LeaseControlProxy {
2389 client: fidl::client::Client<fidl::encoding::DefaultFuchsiaResourceDialect>,
2390}
2391
2392impl fidl::endpoints::Proxy for LeaseControlProxy {
2393 type Protocol = LeaseControlMarker;
2394
2395 fn from_channel(inner: ::fidl::AsyncChannel) -> Self {
2396 Self::new(inner)
2397 }
2398
2399 fn into_channel(self) -> Result<::fidl::AsyncChannel, Self> {
2400 self.client.into_channel().map_err(|client| Self { client })
2401 }
2402
2403 fn as_channel(&self) -> &::fidl::AsyncChannel {
2404 self.client.as_channel()
2405 }
2406}
2407
2408impl LeaseControlProxy {
2409 pub fn new(channel: ::fidl::AsyncChannel) -> Self {
2411 let protocol_name = <LeaseControlMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
2412 Self { client: fidl::client::Client::new(channel, protocol_name) }
2413 }
2414
2415 pub fn take_event_stream(&self) -> LeaseControlEventStream {
2421 LeaseControlEventStream { event_receiver: self.client.take_event_receiver() }
2422 }
2423
2424 pub fn r#watch_status(
2429 &self,
2430 mut last_status: LeaseStatus,
2431 ) -> fidl::client::QueryResponseFut<LeaseStatus, fidl::encoding::DefaultFuchsiaResourceDialect>
2432 {
2433 LeaseControlProxyInterface::r#watch_status(self, last_status)
2434 }
2435}
2436
2437impl LeaseControlProxyInterface for LeaseControlProxy {
2438 type WatchStatusResponseFut =
2439 fidl::client::QueryResponseFut<LeaseStatus, fidl::encoding::DefaultFuchsiaResourceDialect>;
2440 fn r#watch_status(&self, mut last_status: LeaseStatus) -> Self::WatchStatusResponseFut {
2441 fn _decode(
2442 mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
2443 ) -> Result<LeaseStatus, fidl::Error> {
2444 let _response = fidl::client::decode_transaction_body::<
2445 fidl::encoding::FlexibleType<LeaseControlWatchStatusResponse>,
2446 fidl::encoding::DefaultFuchsiaResourceDialect,
2447 0x293ab9b0301ca881,
2448 >(_buf?)?
2449 .into_result::<LeaseControlMarker>("watch_status")?;
2450 Ok(_response.status)
2451 }
2452 self.client.send_query_and_decode::<LeaseControlWatchStatusRequest, LeaseStatus>(
2453 (last_status,),
2454 0x293ab9b0301ca881,
2455 fidl::encoding::DynamicFlags::FLEXIBLE,
2456 _decode,
2457 )
2458 }
2459}
2460
2461pub struct LeaseControlEventStream {
2462 event_receiver: fidl::client::EventReceiver<fidl::encoding::DefaultFuchsiaResourceDialect>,
2463}
2464
2465impl std::marker::Unpin for LeaseControlEventStream {}
2466
2467impl futures::stream::FusedStream for LeaseControlEventStream {
2468 fn is_terminated(&self) -> bool {
2469 self.event_receiver.is_terminated()
2470 }
2471}
2472
2473impl futures::Stream for LeaseControlEventStream {
2474 type Item = Result<LeaseControlEvent, fidl::Error>;
2475
2476 fn poll_next(
2477 mut self: std::pin::Pin<&mut Self>,
2478 cx: &mut std::task::Context<'_>,
2479 ) -> std::task::Poll<Option<Self::Item>> {
2480 match futures::ready!(futures::stream::StreamExt::poll_next_unpin(
2481 &mut self.event_receiver,
2482 cx
2483 )?) {
2484 Some(buf) => std::task::Poll::Ready(Some(LeaseControlEvent::decode(buf))),
2485 None => std::task::Poll::Ready(None),
2486 }
2487 }
2488}
2489
2490#[derive(Debug)]
2491pub enum LeaseControlEvent {
2492 #[non_exhaustive]
2493 _UnknownEvent {
2494 ordinal: u64,
2496 },
2497}
2498
2499impl LeaseControlEvent {
2500 fn decode(
2502 mut buf: <fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc,
2503 ) -> Result<LeaseControlEvent, fidl::Error> {
2504 let (bytes, _handles) = buf.split_mut();
2505 let (tx_header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
2506 debug_assert_eq!(tx_header.tx_id, 0);
2507 match tx_header.ordinal {
2508 _ if tx_header.dynamic_flags().contains(fidl::encoding::DynamicFlags::FLEXIBLE) => {
2509 Ok(LeaseControlEvent::_UnknownEvent { ordinal: tx_header.ordinal })
2510 }
2511 _ => Err(fidl::Error::UnknownOrdinal {
2512 ordinal: tx_header.ordinal,
2513 protocol_name: <LeaseControlMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
2514 }),
2515 }
2516 }
2517}
2518
2519pub struct LeaseControlRequestStream {
2521 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
2522 is_terminated: bool,
2523}
2524
2525impl std::marker::Unpin for LeaseControlRequestStream {}
2526
2527impl futures::stream::FusedStream for LeaseControlRequestStream {
2528 fn is_terminated(&self) -> bool {
2529 self.is_terminated
2530 }
2531}
2532
2533impl fidl::endpoints::RequestStream for LeaseControlRequestStream {
2534 type Protocol = LeaseControlMarker;
2535 type ControlHandle = LeaseControlControlHandle;
2536
2537 fn from_channel(channel: ::fidl::AsyncChannel) -> Self {
2538 Self { inner: std::sync::Arc::new(fidl::ServeInner::new(channel)), is_terminated: false }
2539 }
2540
2541 fn control_handle(&self) -> Self::ControlHandle {
2542 LeaseControlControlHandle { inner: self.inner.clone() }
2543 }
2544
2545 fn into_inner(
2546 self,
2547 ) -> (::std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>, bool)
2548 {
2549 (self.inner, self.is_terminated)
2550 }
2551
2552 fn from_inner(
2553 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
2554 is_terminated: bool,
2555 ) -> Self {
2556 Self { inner, is_terminated }
2557 }
2558}
2559
2560impl futures::Stream for LeaseControlRequestStream {
2561 type Item = Result<LeaseControlRequest, fidl::Error>;
2562
2563 fn poll_next(
2564 mut self: std::pin::Pin<&mut Self>,
2565 cx: &mut std::task::Context<'_>,
2566 ) -> std::task::Poll<Option<Self::Item>> {
2567 let this = &mut *self;
2568 if this.inner.check_shutdown(cx) {
2569 this.is_terminated = true;
2570 return std::task::Poll::Ready(None);
2571 }
2572 if this.is_terminated {
2573 panic!("polled LeaseControlRequestStream after completion");
2574 }
2575 fidl::encoding::with_tls_decode_buf::<_, fidl::encoding::DefaultFuchsiaResourceDialect>(
2576 |bytes, handles| {
2577 match this.inner.channel().read_etc(cx, bytes, handles) {
2578 std::task::Poll::Ready(Ok(())) => {}
2579 std::task::Poll::Pending => return std::task::Poll::Pending,
2580 std::task::Poll::Ready(Err(zx_status::Status::PEER_CLOSED)) => {
2581 this.is_terminated = true;
2582 return std::task::Poll::Ready(None);
2583 }
2584 std::task::Poll::Ready(Err(e)) => {
2585 return std::task::Poll::Ready(Some(Err(fidl::Error::ServerRequestRead(
2586 e.into(),
2587 ))));
2588 }
2589 }
2590
2591 let (header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
2593
2594 std::task::Poll::Ready(Some(match header.ordinal {
2595 0x293ab9b0301ca881 => {
2596 header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
2597 let mut req = fidl::new_empty!(
2598 LeaseControlWatchStatusRequest,
2599 fidl::encoding::DefaultFuchsiaResourceDialect
2600 );
2601 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<LeaseControlWatchStatusRequest>(&header, _body_bytes, handles, &mut req)?;
2602 let control_handle =
2603 LeaseControlControlHandle { inner: this.inner.clone() };
2604 Ok(LeaseControlRequest::WatchStatus {
2605 last_status: req.last_status,
2606
2607 responder: LeaseControlWatchStatusResponder {
2608 control_handle: std::mem::ManuallyDrop::new(control_handle),
2609 tx_id: header.tx_id,
2610 },
2611 })
2612 }
2613 _ if header.tx_id == 0
2614 && header
2615 .dynamic_flags()
2616 .contains(fidl::encoding::DynamicFlags::FLEXIBLE) =>
2617 {
2618 Ok(LeaseControlRequest::_UnknownMethod {
2619 ordinal: header.ordinal,
2620 control_handle: LeaseControlControlHandle { inner: this.inner.clone() },
2621 method_type: fidl::MethodType::OneWay,
2622 })
2623 }
2624 _ if header
2625 .dynamic_flags()
2626 .contains(fidl::encoding::DynamicFlags::FLEXIBLE) =>
2627 {
2628 this.inner.send_framework_err(
2629 fidl::encoding::FrameworkErr::UnknownMethod,
2630 header.tx_id,
2631 header.ordinal,
2632 header.dynamic_flags(),
2633 (bytes, handles),
2634 )?;
2635 Ok(LeaseControlRequest::_UnknownMethod {
2636 ordinal: header.ordinal,
2637 control_handle: LeaseControlControlHandle { inner: this.inner.clone() },
2638 method_type: fidl::MethodType::TwoWay,
2639 })
2640 }
2641 _ => Err(fidl::Error::UnknownOrdinal {
2642 ordinal: header.ordinal,
2643 protocol_name:
2644 <LeaseControlMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
2645 }),
2646 }))
2647 },
2648 )
2649 }
2650}
2651
2652#[derive(Debug)]
2657pub enum LeaseControlRequest {
2658 WatchStatus { last_status: LeaseStatus, responder: LeaseControlWatchStatusResponder },
2663 #[non_exhaustive]
2665 _UnknownMethod {
2666 ordinal: u64,
2668 control_handle: LeaseControlControlHandle,
2669 method_type: fidl::MethodType,
2670 },
2671}
2672
2673impl LeaseControlRequest {
2674 #[allow(irrefutable_let_patterns)]
2675 pub fn into_watch_status(self) -> Option<(LeaseStatus, LeaseControlWatchStatusResponder)> {
2676 if let LeaseControlRequest::WatchStatus { last_status, responder } = self {
2677 Some((last_status, responder))
2678 } else {
2679 None
2680 }
2681 }
2682
2683 pub fn method_name(&self) -> &'static str {
2685 match *self {
2686 LeaseControlRequest::WatchStatus { .. } => "watch_status",
2687 LeaseControlRequest::_UnknownMethod {
2688 method_type: fidl::MethodType::OneWay, ..
2689 } => "unknown one-way method",
2690 LeaseControlRequest::_UnknownMethod {
2691 method_type: fidl::MethodType::TwoWay, ..
2692 } => "unknown two-way method",
2693 }
2694 }
2695}
2696
2697#[derive(Debug, Clone)]
2698pub struct LeaseControlControlHandle {
2699 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
2700}
2701
2702impl fidl::endpoints::ControlHandle for LeaseControlControlHandle {
2703 fn shutdown(&self) {
2704 self.inner.shutdown()
2705 }
2706
2707 fn shutdown_with_epitaph(&self, status: zx_status::Status) {
2708 self.inner.shutdown_with_epitaph(status)
2709 }
2710
2711 fn is_closed(&self) -> bool {
2712 self.inner.channel().is_closed()
2713 }
2714 fn on_closed(&self) -> fidl::OnSignalsRef<'_> {
2715 self.inner.channel().on_closed()
2716 }
2717
2718 #[cfg(target_os = "fuchsia")]
2719 fn signal_peer(
2720 &self,
2721 clear_mask: zx::Signals,
2722 set_mask: zx::Signals,
2723 ) -> Result<(), zx_status::Status> {
2724 use fidl::Peered;
2725 self.inner.channel().signal_peer(clear_mask, set_mask)
2726 }
2727}
2728
2729impl LeaseControlControlHandle {}
2730
2731#[must_use = "FIDL methods require a response to be sent"]
2732#[derive(Debug)]
2733pub struct LeaseControlWatchStatusResponder {
2734 control_handle: std::mem::ManuallyDrop<LeaseControlControlHandle>,
2735 tx_id: u32,
2736}
2737
2738impl std::ops::Drop for LeaseControlWatchStatusResponder {
2742 fn drop(&mut self) {
2743 self.control_handle.shutdown();
2744 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
2746 }
2747}
2748
2749impl fidl::endpoints::Responder for LeaseControlWatchStatusResponder {
2750 type ControlHandle = LeaseControlControlHandle;
2751
2752 fn control_handle(&self) -> &LeaseControlControlHandle {
2753 &self.control_handle
2754 }
2755
2756 fn drop_without_shutdown(mut self) {
2757 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
2759 std::mem::forget(self);
2761 }
2762}
2763
2764impl LeaseControlWatchStatusResponder {
2765 pub fn send(self, mut status: LeaseStatus) -> Result<(), fidl::Error> {
2769 let _result = self.send_raw(status);
2770 if _result.is_err() {
2771 self.control_handle.shutdown();
2772 }
2773 self.drop_without_shutdown();
2774 _result
2775 }
2776
2777 pub fn send_no_shutdown_on_err(self, mut status: LeaseStatus) -> Result<(), fidl::Error> {
2779 let _result = self.send_raw(status);
2780 self.drop_without_shutdown();
2781 _result
2782 }
2783
2784 fn send_raw(&self, mut status: LeaseStatus) -> Result<(), fidl::Error> {
2785 self.control_handle
2786 .inner
2787 .send::<fidl::encoding::FlexibleType<LeaseControlWatchStatusResponse>>(
2788 fidl::encoding::Flexible::new((status,)),
2789 self.tx_id,
2790 0x293ab9b0301ca881,
2791 fidl::encoding::DynamicFlags::FLEXIBLE,
2792 )
2793 }
2794}
2795
2796#[derive(Debug, Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash)]
2797pub struct LessorMarker;
2798
2799impl fidl::endpoints::ProtocolMarker for LessorMarker {
2800 type Proxy = LessorProxy;
2801 type RequestStream = LessorRequestStream;
2802 #[cfg(target_os = "fuchsia")]
2803 type SynchronousProxy = LessorSynchronousProxy;
2804
2805 const DEBUG_NAME: &'static str = "(anonymous) Lessor";
2806}
2807pub type LessorLeaseResult = Result<fidl::endpoints::ClientEnd<LeaseControlMarker>, LeaseError>;
2808
2809pub trait LessorProxyInterface: Send + Sync {
2810 type LeaseResponseFut: std::future::Future<Output = Result<LessorLeaseResult, fidl::Error>>
2811 + Send;
2812 fn r#lease(&self, level: u8) -> Self::LeaseResponseFut;
2813}
2814#[derive(Debug)]
2815#[cfg(target_os = "fuchsia")]
2816pub struct LessorSynchronousProxy {
2817 client: fidl::client::sync::Client,
2818}
2819
2820#[cfg(target_os = "fuchsia")]
2821impl fidl::endpoints::SynchronousProxy for LessorSynchronousProxy {
2822 type Proxy = LessorProxy;
2823 type Protocol = LessorMarker;
2824
2825 fn from_channel(inner: fidl::Channel) -> Self {
2826 Self::new(inner)
2827 }
2828
2829 fn into_channel(self) -> fidl::Channel {
2830 self.client.into_channel()
2831 }
2832
2833 fn as_channel(&self) -> &fidl::Channel {
2834 self.client.as_channel()
2835 }
2836}
2837
2838#[cfg(target_os = "fuchsia")]
2839impl LessorSynchronousProxy {
2840 pub fn new(channel: fidl::Channel) -> Self {
2841 Self { client: fidl::client::sync::Client::new(channel) }
2842 }
2843
2844 pub fn into_channel(self) -> fidl::Channel {
2845 self.client.into_channel()
2846 }
2847
2848 pub fn wait_for_event(
2851 &self,
2852 deadline: zx::MonotonicInstant,
2853 ) -> Result<LessorEvent, fidl::Error> {
2854 LessorEvent::decode(self.client.wait_for_event::<LessorMarker>(deadline)?)
2855 }
2856
2857 pub fn r#lease(
2869 &self,
2870 mut level: u8,
2871 ___deadline: zx::MonotonicInstant,
2872 ) -> Result<LessorLeaseResult, fidl::Error> {
2873 let _response = self.client.send_query::<
2874 LessorLeaseRequest,
2875 fidl::encoding::FlexibleResultType<LessorLeaseResponse, LeaseError>,
2876 LessorMarker,
2877 >(
2878 (level,),
2879 0x38999f84b2f1f9ad,
2880 fidl::encoding::DynamicFlags::FLEXIBLE,
2881 ___deadline,
2882 )?
2883 .into_result::<LessorMarker>("lease")?;
2884 Ok(_response.map(|x| x.lease_control))
2885 }
2886}
2887
2888#[cfg(target_os = "fuchsia")]
2889impl From<LessorSynchronousProxy> for zx::NullableHandle {
2890 fn from(value: LessorSynchronousProxy) -> Self {
2891 value.into_channel().into()
2892 }
2893}
2894
2895#[cfg(target_os = "fuchsia")]
2896impl From<fidl::Channel> for LessorSynchronousProxy {
2897 fn from(value: fidl::Channel) -> Self {
2898 Self::new(value)
2899 }
2900}
2901
2902#[cfg(target_os = "fuchsia")]
2903impl fidl::endpoints::FromClient for LessorSynchronousProxy {
2904 type Protocol = LessorMarker;
2905
2906 fn from_client(value: fidl::endpoints::ClientEnd<LessorMarker>) -> Self {
2907 Self::new(value.into_channel())
2908 }
2909}
2910
2911#[derive(Debug, Clone)]
2912pub struct LessorProxy {
2913 client: fidl::client::Client<fidl::encoding::DefaultFuchsiaResourceDialect>,
2914}
2915
2916impl fidl::endpoints::Proxy for LessorProxy {
2917 type Protocol = LessorMarker;
2918
2919 fn from_channel(inner: ::fidl::AsyncChannel) -> Self {
2920 Self::new(inner)
2921 }
2922
2923 fn into_channel(self) -> Result<::fidl::AsyncChannel, Self> {
2924 self.client.into_channel().map_err(|client| Self { client })
2925 }
2926
2927 fn as_channel(&self) -> &::fidl::AsyncChannel {
2928 self.client.as_channel()
2929 }
2930}
2931
2932impl LessorProxy {
2933 pub fn new(channel: ::fidl::AsyncChannel) -> Self {
2935 let protocol_name = <LessorMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
2936 Self { client: fidl::client::Client::new(channel, protocol_name) }
2937 }
2938
2939 pub fn take_event_stream(&self) -> LessorEventStream {
2945 LessorEventStream { event_receiver: self.client.take_event_receiver() }
2946 }
2947
2948 pub fn r#lease(
2960 &self,
2961 mut level: u8,
2962 ) -> fidl::client::QueryResponseFut<
2963 LessorLeaseResult,
2964 fidl::encoding::DefaultFuchsiaResourceDialect,
2965 > {
2966 LessorProxyInterface::r#lease(self, level)
2967 }
2968}
2969
2970impl LessorProxyInterface for LessorProxy {
2971 type LeaseResponseFut = fidl::client::QueryResponseFut<
2972 LessorLeaseResult,
2973 fidl::encoding::DefaultFuchsiaResourceDialect,
2974 >;
2975 fn r#lease(&self, mut level: u8) -> Self::LeaseResponseFut {
2976 fn _decode(
2977 mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
2978 ) -> Result<LessorLeaseResult, fidl::Error> {
2979 let _response = fidl::client::decode_transaction_body::<
2980 fidl::encoding::FlexibleResultType<LessorLeaseResponse, LeaseError>,
2981 fidl::encoding::DefaultFuchsiaResourceDialect,
2982 0x38999f84b2f1f9ad,
2983 >(_buf?)?
2984 .into_result::<LessorMarker>("lease")?;
2985 Ok(_response.map(|x| x.lease_control))
2986 }
2987 self.client.send_query_and_decode::<LessorLeaseRequest, LessorLeaseResult>(
2988 (level,),
2989 0x38999f84b2f1f9ad,
2990 fidl::encoding::DynamicFlags::FLEXIBLE,
2991 _decode,
2992 )
2993 }
2994}
2995
2996pub struct LessorEventStream {
2997 event_receiver: fidl::client::EventReceiver<fidl::encoding::DefaultFuchsiaResourceDialect>,
2998}
2999
3000impl std::marker::Unpin for LessorEventStream {}
3001
3002impl futures::stream::FusedStream for LessorEventStream {
3003 fn is_terminated(&self) -> bool {
3004 self.event_receiver.is_terminated()
3005 }
3006}
3007
3008impl futures::Stream for LessorEventStream {
3009 type Item = Result<LessorEvent, fidl::Error>;
3010
3011 fn poll_next(
3012 mut self: std::pin::Pin<&mut Self>,
3013 cx: &mut std::task::Context<'_>,
3014 ) -> std::task::Poll<Option<Self::Item>> {
3015 match futures::ready!(futures::stream::StreamExt::poll_next_unpin(
3016 &mut self.event_receiver,
3017 cx
3018 )?) {
3019 Some(buf) => std::task::Poll::Ready(Some(LessorEvent::decode(buf))),
3020 None => std::task::Poll::Ready(None),
3021 }
3022 }
3023}
3024
3025#[derive(Debug)]
3026pub enum LessorEvent {
3027 #[non_exhaustive]
3028 _UnknownEvent {
3029 ordinal: u64,
3031 },
3032}
3033
3034impl LessorEvent {
3035 fn decode(
3037 mut buf: <fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc,
3038 ) -> Result<LessorEvent, fidl::Error> {
3039 let (bytes, _handles) = buf.split_mut();
3040 let (tx_header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
3041 debug_assert_eq!(tx_header.tx_id, 0);
3042 match tx_header.ordinal {
3043 _ if tx_header.dynamic_flags().contains(fidl::encoding::DynamicFlags::FLEXIBLE) => {
3044 Ok(LessorEvent::_UnknownEvent { ordinal: tx_header.ordinal })
3045 }
3046 _ => Err(fidl::Error::UnknownOrdinal {
3047 ordinal: tx_header.ordinal,
3048 protocol_name: <LessorMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
3049 }),
3050 }
3051 }
3052}
3053
3054pub struct LessorRequestStream {
3056 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
3057 is_terminated: bool,
3058}
3059
3060impl std::marker::Unpin for LessorRequestStream {}
3061
3062impl futures::stream::FusedStream for LessorRequestStream {
3063 fn is_terminated(&self) -> bool {
3064 self.is_terminated
3065 }
3066}
3067
3068impl fidl::endpoints::RequestStream for LessorRequestStream {
3069 type Protocol = LessorMarker;
3070 type ControlHandle = LessorControlHandle;
3071
3072 fn from_channel(channel: ::fidl::AsyncChannel) -> Self {
3073 Self { inner: std::sync::Arc::new(fidl::ServeInner::new(channel)), is_terminated: false }
3074 }
3075
3076 fn control_handle(&self) -> Self::ControlHandle {
3077 LessorControlHandle { inner: self.inner.clone() }
3078 }
3079
3080 fn into_inner(
3081 self,
3082 ) -> (::std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>, bool)
3083 {
3084 (self.inner, self.is_terminated)
3085 }
3086
3087 fn from_inner(
3088 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
3089 is_terminated: bool,
3090 ) -> Self {
3091 Self { inner, is_terminated }
3092 }
3093}
3094
3095impl futures::Stream for LessorRequestStream {
3096 type Item = Result<LessorRequest, fidl::Error>;
3097
3098 fn poll_next(
3099 mut self: std::pin::Pin<&mut Self>,
3100 cx: &mut std::task::Context<'_>,
3101 ) -> std::task::Poll<Option<Self::Item>> {
3102 let this = &mut *self;
3103 if this.inner.check_shutdown(cx) {
3104 this.is_terminated = true;
3105 return std::task::Poll::Ready(None);
3106 }
3107 if this.is_terminated {
3108 panic!("polled LessorRequestStream after completion");
3109 }
3110 fidl::encoding::with_tls_decode_buf::<_, fidl::encoding::DefaultFuchsiaResourceDialect>(
3111 |bytes, handles| {
3112 match this.inner.channel().read_etc(cx, bytes, handles) {
3113 std::task::Poll::Ready(Ok(())) => {}
3114 std::task::Poll::Pending => return std::task::Poll::Pending,
3115 std::task::Poll::Ready(Err(zx_status::Status::PEER_CLOSED)) => {
3116 this.is_terminated = true;
3117 return std::task::Poll::Ready(None);
3118 }
3119 std::task::Poll::Ready(Err(e)) => {
3120 return std::task::Poll::Ready(Some(Err(fidl::Error::ServerRequestRead(
3121 e.into(),
3122 ))));
3123 }
3124 }
3125
3126 let (header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
3128
3129 std::task::Poll::Ready(Some(match header.ordinal {
3130 0x38999f84b2f1f9ad => {
3131 header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
3132 let mut req = fidl::new_empty!(
3133 LessorLeaseRequest,
3134 fidl::encoding::DefaultFuchsiaResourceDialect
3135 );
3136 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<LessorLeaseRequest>(&header, _body_bytes, handles, &mut req)?;
3137 let control_handle = LessorControlHandle { inner: this.inner.clone() };
3138 Ok(LessorRequest::Lease {
3139 level: req.level,
3140
3141 responder: LessorLeaseResponder {
3142 control_handle: std::mem::ManuallyDrop::new(control_handle),
3143 tx_id: header.tx_id,
3144 },
3145 })
3146 }
3147 _ if header.tx_id == 0
3148 && header
3149 .dynamic_flags()
3150 .contains(fidl::encoding::DynamicFlags::FLEXIBLE) =>
3151 {
3152 Ok(LessorRequest::_UnknownMethod {
3153 ordinal: header.ordinal,
3154 control_handle: LessorControlHandle { inner: this.inner.clone() },
3155 method_type: fidl::MethodType::OneWay,
3156 })
3157 }
3158 _ if header
3159 .dynamic_flags()
3160 .contains(fidl::encoding::DynamicFlags::FLEXIBLE) =>
3161 {
3162 this.inner.send_framework_err(
3163 fidl::encoding::FrameworkErr::UnknownMethod,
3164 header.tx_id,
3165 header.ordinal,
3166 header.dynamic_flags(),
3167 (bytes, handles),
3168 )?;
3169 Ok(LessorRequest::_UnknownMethod {
3170 ordinal: header.ordinal,
3171 control_handle: LessorControlHandle { inner: this.inner.clone() },
3172 method_type: fidl::MethodType::TwoWay,
3173 })
3174 }
3175 _ => Err(fidl::Error::UnknownOrdinal {
3176 ordinal: header.ordinal,
3177 protocol_name:
3178 <LessorMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
3179 }),
3180 }))
3181 },
3182 )
3183 }
3184}
3185
3186#[derive(Debug)]
3189pub enum LessorRequest {
3190 Lease { level: u8, responder: LessorLeaseResponder },
3202 #[non_exhaustive]
3204 _UnknownMethod {
3205 ordinal: u64,
3207 control_handle: LessorControlHandle,
3208 method_type: fidl::MethodType,
3209 },
3210}
3211
3212impl LessorRequest {
3213 #[allow(irrefutable_let_patterns)]
3214 pub fn into_lease(self) -> Option<(u8, LessorLeaseResponder)> {
3215 if let LessorRequest::Lease { level, responder } = self {
3216 Some((level, responder))
3217 } else {
3218 None
3219 }
3220 }
3221
3222 pub fn method_name(&self) -> &'static str {
3224 match *self {
3225 LessorRequest::Lease { .. } => "lease",
3226 LessorRequest::_UnknownMethod { method_type: fidl::MethodType::OneWay, .. } => {
3227 "unknown one-way method"
3228 }
3229 LessorRequest::_UnknownMethod { method_type: fidl::MethodType::TwoWay, .. } => {
3230 "unknown two-way method"
3231 }
3232 }
3233 }
3234}
3235
3236#[derive(Debug, Clone)]
3237pub struct LessorControlHandle {
3238 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
3239}
3240
3241impl fidl::endpoints::ControlHandle for LessorControlHandle {
3242 fn shutdown(&self) {
3243 self.inner.shutdown()
3244 }
3245
3246 fn shutdown_with_epitaph(&self, status: zx_status::Status) {
3247 self.inner.shutdown_with_epitaph(status)
3248 }
3249
3250 fn is_closed(&self) -> bool {
3251 self.inner.channel().is_closed()
3252 }
3253 fn on_closed(&self) -> fidl::OnSignalsRef<'_> {
3254 self.inner.channel().on_closed()
3255 }
3256
3257 #[cfg(target_os = "fuchsia")]
3258 fn signal_peer(
3259 &self,
3260 clear_mask: zx::Signals,
3261 set_mask: zx::Signals,
3262 ) -> Result<(), zx_status::Status> {
3263 use fidl::Peered;
3264 self.inner.channel().signal_peer(clear_mask, set_mask)
3265 }
3266}
3267
3268impl LessorControlHandle {}
3269
3270#[must_use = "FIDL methods require a response to be sent"]
3271#[derive(Debug)]
3272pub struct LessorLeaseResponder {
3273 control_handle: std::mem::ManuallyDrop<LessorControlHandle>,
3274 tx_id: u32,
3275}
3276
3277impl std::ops::Drop for LessorLeaseResponder {
3281 fn drop(&mut self) {
3282 self.control_handle.shutdown();
3283 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
3285 }
3286}
3287
3288impl fidl::endpoints::Responder for LessorLeaseResponder {
3289 type ControlHandle = LessorControlHandle;
3290
3291 fn control_handle(&self) -> &LessorControlHandle {
3292 &self.control_handle
3293 }
3294
3295 fn drop_without_shutdown(mut self) {
3296 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
3298 std::mem::forget(self);
3300 }
3301}
3302
3303impl LessorLeaseResponder {
3304 pub fn send(
3308 self,
3309 mut result: Result<fidl::endpoints::ClientEnd<LeaseControlMarker>, LeaseError>,
3310 ) -> Result<(), fidl::Error> {
3311 let _result = self.send_raw(result);
3312 if _result.is_err() {
3313 self.control_handle.shutdown();
3314 }
3315 self.drop_without_shutdown();
3316 _result
3317 }
3318
3319 pub fn send_no_shutdown_on_err(
3321 self,
3322 mut result: Result<fidl::endpoints::ClientEnd<LeaseControlMarker>, LeaseError>,
3323 ) -> Result<(), fidl::Error> {
3324 let _result = self.send_raw(result);
3325 self.drop_without_shutdown();
3326 _result
3327 }
3328
3329 fn send_raw(
3330 &self,
3331 mut result: Result<fidl::endpoints::ClientEnd<LeaseControlMarker>, LeaseError>,
3332 ) -> Result<(), fidl::Error> {
3333 self.control_handle
3334 .inner
3335 .send::<fidl::encoding::FlexibleResultType<LessorLeaseResponse, LeaseError>>(
3336 fidl::encoding::FlexibleResult::new(result.map(|lease_control| (lease_control,))),
3337 self.tx_id,
3338 0x38999f84b2f1f9ad,
3339 fidl::encoding::DynamicFlags::FLEXIBLE,
3340 )
3341 }
3342}
3343
3344#[derive(Debug, Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash)]
3345pub struct StatusMarker;
3346
3347impl fidl::endpoints::ProtocolMarker for StatusMarker {
3348 type Proxy = StatusProxy;
3349 type RequestStream = StatusRequestStream;
3350 #[cfg(target_os = "fuchsia")]
3351 type SynchronousProxy = StatusSynchronousProxy;
3352
3353 const DEBUG_NAME: &'static str = "(anonymous) Status";
3354}
3355pub type StatusWatchPowerLevelResult = Result<u8, StatusError>;
3356
3357pub trait StatusProxyInterface: Send + Sync {
3358 type WatchPowerLevelResponseFut: std::future::Future<Output = Result<StatusWatchPowerLevelResult, fidl::Error>>
3359 + Send;
3360 fn r#watch_power_level(&self) -> Self::WatchPowerLevelResponseFut;
3361}
3362#[derive(Debug)]
3363#[cfg(target_os = "fuchsia")]
3364pub struct StatusSynchronousProxy {
3365 client: fidl::client::sync::Client,
3366}
3367
3368#[cfg(target_os = "fuchsia")]
3369impl fidl::endpoints::SynchronousProxy for StatusSynchronousProxy {
3370 type Proxy = StatusProxy;
3371 type Protocol = StatusMarker;
3372
3373 fn from_channel(inner: fidl::Channel) -> Self {
3374 Self::new(inner)
3375 }
3376
3377 fn into_channel(self) -> fidl::Channel {
3378 self.client.into_channel()
3379 }
3380
3381 fn as_channel(&self) -> &fidl::Channel {
3382 self.client.as_channel()
3383 }
3384}
3385
3386#[cfg(target_os = "fuchsia")]
3387impl StatusSynchronousProxy {
3388 pub fn new(channel: fidl::Channel) -> Self {
3389 Self { client: fidl::client::sync::Client::new(channel) }
3390 }
3391
3392 pub fn into_channel(self) -> fidl::Channel {
3393 self.client.into_channel()
3394 }
3395
3396 pub fn wait_for_event(
3399 &self,
3400 deadline: zx::MonotonicInstant,
3401 ) -> Result<StatusEvent, fidl::Error> {
3402 StatusEvent::decode(self.client.wait_for_event::<StatusMarker>(deadline)?)
3403 }
3404
3405 pub fn r#watch_power_level(
3409 &self,
3410 ___deadline: zx::MonotonicInstant,
3411 ) -> Result<StatusWatchPowerLevelResult, fidl::Error> {
3412 let _response = self.client.send_query::<
3413 fidl::encoding::EmptyPayload,
3414 fidl::encoding::FlexibleResultType<StatusWatchPowerLevelResponse, StatusError>,
3415 StatusMarker,
3416 >(
3417 (),
3418 0x2f11ba8df9b5614e,
3419 fidl::encoding::DynamicFlags::FLEXIBLE,
3420 ___deadline,
3421 )?
3422 .into_result::<StatusMarker>("watch_power_level")?;
3423 Ok(_response.map(|x| x.current_level))
3424 }
3425}
3426
3427#[cfg(target_os = "fuchsia")]
3428impl From<StatusSynchronousProxy> for zx::NullableHandle {
3429 fn from(value: StatusSynchronousProxy) -> Self {
3430 value.into_channel().into()
3431 }
3432}
3433
3434#[cfg(target_os = "fuchsia")]
3435impl From<fidl::Channel> for StatusSynchronousProxy {
3436 fn from(value: fidl::Channel) -> Self {
3437 Self::new(value)
3438 }
3439}
3440
3441#[cfg(target_os = "fuchsia")]
3442impl fidl::endpoints::FromClient for StatusSynchronousProxy {
3443 type Protocol = StatusMarker;
3444
3445 fn from_client(value: fidl::endpoints::ClientEnd<StatusMarker>) -> Self {
3446 Self::new(value.into_channel())
3447 }
3448}
3449
3450#[derive(Debug, Clone)]
3451pub struct StatusProxy {
3452 client: fidl::client::Client<fidl::encoding::DefaultFuchsiaResourceDialect>,
3453}
3454
3455impl fidl::endpoints::Proxy for StatusProxy {
3456 type Protocol = StatusMarker;
3457
3458 fn from_channel(inner: ::fidl::AsyncChannel) -> Self {
3459 Self::new(inner)
3460 }
3461
3462 fn into_channel(self) -> Result<::fidl::AsyncChannel, Self> {
3463 self.client.into_channel().map_err(|client| Self { client })
3464 }
3465
3466 fn as_channel(&self) -> &::fidl::AsyncChannel {
3467 self.client.as_channel()
3468 }
3469}
3470
3471impl StatusProxy {
3472 pub fn new(channel: ::fidl::AsyncChannel) -> Self {
3474 let protocol_name = <StatusMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
3475 Self { client: fidl::client::Client::new(channel, protocol_name) }
3476 }
3477
3478 pub fn take_event_stream(&self) -> StatusEventStream {
3484 StatusEventStream { event_receiver: self.client.take_event_receiver() }
3485 }
3486
3487 pub fn r#watch_power_level(
3491 &self,
3492 ) -> fidl::client::QueryResponseFut<
3493 StatusWatchPowerLevelResult,
3494 fidl::encoding::DefaultFuchsiaResourceDialect,
3495 > {
3496 StatusProxyInterface::r#watch_power_level(self)
3497 }
3498}
3499
3500impl StatusProxyInterface for StatusProxy {
3501 type WatchPowerLevelResponseFut = fidl::client::QueryResponseFut<
3502 StatusWatchPowerLevelResult,
3503 fidl::encoding::DefaultFuchsiaResourceDialect,
3504 >;
3505 fn r#watch_power_level(&self) -> Self::WatchPowerLevelResponseFut {
3506 fn _decode(
3507 mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
3508 ) -> Result<StatusWatchPowerLevelResult, fidl::Error> {
3509 let _response = fidl::client::decode_transaction_body::<
3510 fidl::encoding::FlexibleResultType<StatusWatchPowerLevelResponse, StatusError>,
3511 fidl::encoding::DefaultFuchsiaResourceDialect,
3512 0x2f11ba8df9b5614e,
3513 >(_buf?)?
3514 .into_result::<StatusMarker>("watch_power_level")?;
3515 Ok(_response.map(|x| x.current_level))
3516 }
3517 self.client
3518 .send_query_and_decode::<fidl::encoding::EmptyPayload, StatusWatchPowerLevelResult>(
3519 (),
3520 0x2f11ba8df9b5614e,
3521 fidl::encoding::DynamicFlags::FLEXIBLE,
3522 _decode,
3523 )
3524 }
3525}
3526
3527pub struct StatusEventStream {
3528 event_receiver: fidl::client::EventReceiver<fidl::encoding::DefaultFuchsiaResourceDialect>,
3529}
3530
3531impl std::marker::Unpin for StatusEventStream {}
3532
3533impl futures::stream::FusedStream for StatusEventStream {
3534 fn is_terminated(&self) -> bool {
3535 self.event_receiver.is_terminated()
3536 }
3537}
3538
3539impl futures::Stream for StatusEventStream {
3540 type Item = Result<StatusEvent, fidl::Error>;
3541
3542 fn poll_next(
3543 mut self: std::pin::Pin<&mut Self>,
3544 cx: &mut std::task::Context<'_>,
3545 ) -> std::task::Poll<Option<Self::Item>> {
3546 match futures::ready!(futures::stream::StreamExt::poll_next_unpin(
3547 &mut self.event_receiver,
3548 cx
3549 )?) {
3550 Some(buf) => std::task::Poll::Ready(Some(StatusEvent::decode(buf))),
3551 None => std::task::Poll::Ready(None),
3552 }
3553 }
3554}
3555
3556#[derive(Debug)]
3557pub enum StatusEvent {
3558 #[non_exhaustive]
3559 _UnknownEvent {
3560 ordinal: u64,
3562 },
3563}
3564
3565impl StatusEvent {
3566 fn decode(
3568 mut buf: <fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc,
3569 ) -> Result<StatusEvent, fidl::Error> {
3570 let (bytes, _handles) = buf.split_mut();
3571 let (tx_header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
3572 debug_assert_eq!(tx_header.tx_id, 0);
3573 match tx_header.ordinal {
3574 _ if tx_header.dynamic_flags().contains(fidl::encoding::DynamicFlags::FLEXIBLE) => {
3575 Ok(StatusEvent::_UnknownEvent { ordinal: tx_header.ordinal })
3576 }
3577 _ => Err(fidl::Error::UnknownOrdinal {
3578 ordinal: tx_header.ordinal,
3579 protocol_name: <StatusMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
3580 }),
3581 }
3582 }
3583}
3584
3585pub struct StatusRequestStream {
3587 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
3588 is_terminated: bool,
3589}
3590
3591impl std::marker::Unpin for StatusRequestStream {}
3592
3593impl futures::stream::FusedStream for StatusRequestStream {
3594 fn is_terminated(&self) -> bool {
3595 self.is_terminated
3596 }
3597}
3598
3599impl fidl::endpoints::RequestStream for StatusRequestStream {
3600 type Protocol = StatusMarker;
3601 type ControlHandle = StatusControlHandle;
3602
3603 fn from_channel(channel: ::fidl::AsyncChannel) -> Self {
3604 Self { inner: std::sync::Arc::new(fidl::ServeInner::new(channel)), is_terminated: false }
3605 }
3606
3607 fn control_handle(&self) -> Self::ControlHandle {
3608 StatusControlHandle { inner: self.inner.clone() }
3609 }
3610
3611 fn into_inner(
3612 self,
3613 ) -> (::std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>, bool)
3614 {
3615 (self.inner, self.is_terminated)
3616 }
3617
3618 fn from_inner(
3619 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
3620 is_terminated: bool,
3621 ) -> Self {
3622 Self { inner, is_terminated }
3623 }
3624}
3625
3626impl futures::Stream for StatusRequestStream {
3627 type Item = Result<StatusRequest, fidl::Error>;
3628
3629 fn poll_next(
3630 mut self: std::pin::Pin<&mut Self>,
3631 cx: &mut std::task::Context<'_>,
3632 ) -> std::task::Poll<Option<Self::Item>> {
3633 let this = &mut *self;
3634 if this.inner.check_shutdown(cx) {
3635 this.is_terminated = true;
3636 return std::task::Poll::Ready(None);
3637 }
3638 if this.is_terminated {
3639 panic!("polled StatusRequestStream after completion");
3640 }
3641 fidl::encoding::with_tls_decode_buf::<_, fidl::encoding::DefaultFuchsiaResourceDialect>(
3642 |bytes, handles| {
3643 match this.inner.channel().read_etc(cx, bytes, handles) {
3644 std::task::Poll::Ready(Ok(())) => {}
3645 std::task::Poll::Pending => return std::task::Poll::Pending,
3646 std::task::Poll::Ready(Err(zx_status::Status::PEER_CLOSED)) => {
3647 this.is_terminated = true;
3648 return std::task::Poll::Ready(None);
3649 }
3650 std::task::Poll::Ready(Err(e)) => {
3651 return std::task::Poll::Ready(Some(Err(fidl::Error::ServerRequestRead(
3652 e.into(),
3653 ))));
3654 }
3655 }
3656
3657 let (header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
3659
3660 std::task::Poll::Ready(Some(match header.ordinal {
3661 0x2f11ba8df9b5614e => {
3662 header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
3663 let mut req = fidl::new_empty!(
3664 fidl::encoding::EmptyPayload,
3665 fidl::encoding::DefaultFuchsiaResourceDialect
3666 );
3667 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
3668 let control_handle = StatusControlHandle { inner: this.inner.clone() };
3669 Ok(StatusRequest::WatchPowerLevel {
3670 responder: StatusWatchPowerLevelResponder {
3671 control_handle: std::mem::ManuallyDrop::new(control_handle),
3672 tx_id: header.tx_id,
3673 },
3674 })
3675 }
3676 _ if header.tx_id == 0
3677 && header
3678 .dynamic_flags()
3679 .contains(fidl::encoding::DynamicFlags::FLEXIBLE) =>
3680 {
3681 Ok(StatusRequest::_UnknownMethod {
3682 ordinal: header.ordinal,
3683 control_handle: StatusControlHandle { inner: this.inner.clone() },
3684 method_type: fidl::MethodType::OneWay,
3685 })
3686 }
3687 _ if header
3688 .dynamic_flags()
3689 .contains(fidl::encoding::DynamicFlags::FLEXIBLE) =>
3690 {
3691 this.inner.send_framework_err(
3692 fidl::encoding::FrameworkErr::UnknownMethod,
3693 header.tx_id,
3694 header.ordinal,
3695 header.dynamic_flags(),
3696 (bytes, handles),
3697 )?;
3698 Ok(StatusRequest::_UnknownMethod {
3699 ordinal: header.ordinal,
3700 control_handle: StatusControlHandle { inner: this.inner.clone() },
3701 method_type: fidl::MethodType::TwoWay,
3702 })
3703 }
3704 _ => Err(fidl::Error::UnknownOrdinal {
3705 ordinal: header.ordinal,
3706 protocol_name:
3707 <StatusMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
3708 }),
3709 }))
3710 },
3711 )
3712 }
3713}
3714
3715#[derive(Debug)]
3721pub enum StatusRequest {
3722 WatchPowerLevel { responder: StatusWatchPowerLevelResponder },
3726 #[non_exhaustive]
3728 _UnknownMethod {
3729 ordinal: u64,
3731 control_handle: StatusControlHandle,
3732 method_type: fidl::MethodType,
3733 },
3734}
3735
3736impl StatusRequest {
3737 #[allow(irrefutable_let_patterns)]
3738 pub fn into_watch_power_level(self) -> Option<(StatusWatchPowerLevelResponder)> {
3739 if let StatusRequest::WatchPowerLevel { responder } = self {
3740 Some((responder))
3741 } else {
3742 None
3743 }
3744 }
3745
3746 pub fn method_name(&self) -> &'static str {
3748 match *self {
3749 StatusRequest::WatchPowerLevel { .. } => "watch_power_level",
3750 StatusRequest::_UnknownMethod { method_type: fidl::MethodType::OneWay, .. } => {
3751 "unknown one-way method"
3752 }
3753 StatusRequest::_UnknownMethod { method_type: fidl::MethodType::TwoWay, .. } => {
3754 "unknown two-way method"
3755 }
3756 }
3757 }
3758}
3759
3760#[derive(Debug, Clone)]
3761pub struct StatusControlHandle {
3762 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
3763}
3764
3765impl fidl::endpoints::ControlHandle for StatusControlHandle {
3766 fn shutdown(&self) {
3767 self.inner.shutdown()
3768 }
3769
3770 fn shutdown_with_epitaph(&self, status: zx_status::Status) {
3771 self.inner.shutdown_with_epitaph(status)
3772 }
3773
3774 fn is_closed(&self) -> bool {
3775 self.inner.channel().is_closed()
3776 }
3777 fn on_closed(&self) -> fidl::OnSignalsRef<'_> {
3778 self.inner.channel().on_closed()
3779 }
3780
3781 #[cfg(target_os = "fuchsia")]
3782 fn signal_peer(
3783 &self,
3784 clear_mask: zx::Signals,
3785 set_mask: zx::Signals,
3786 ) -> Result<(), zx_status::Status> {
3787 use fidl::Peered;
3788 self.inner.channel().signal_peer(clear_mask, set_mask)
3789 }
3790}
3791
3792impl StatusControlHandle {}
3793
3794#[must_use = "FIDL methods require a response to be sent"]
3795#[derive(Debug)]
3796pub struct StatusWatchPowerLevelResponder {
3797 control_handle: std::mem::ManuallyDrop<StatusControlHandle>,
3798 tx_id: u32,
3799}
3800
3801impl std::ops::Drop for StatusWatchPowerLevelResponder {
3805 fn drop(&mut self) {
3806 self.control_handle.shutdown();
3807 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
3809 }
3810}
3811
3812impl fidl::endpoints::Responder for StatusWatchPowerLevelResponder {
3813 type ControlHandle = StatusControlHandle;
3814
3815 fn control_handle(&self) -> &StatusControlHandle {
3816 &self.control_handle
3817 }
3818
3819 fn drop_without_shutdown(mut self) {
3820 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
3822 std::mem::forget(self);
3824 }
3825}
3826
3827impl StatusWatchPowerLevelResponder {
3828 pub fn send(self, mut result: Result<u8, StatusError>) -> Result<(), fidl::Error> {
3832 let _result = self.send_raw(result);
3833 if _result.is_err() {
3834 self.control_handle.shutdown();
3835 }
3836 self.drop_without_shutdown();
3837 _result
3838 }
3839
3840 pub fn send_no_shutdown_on_err(
3842 self,
3843 mut result: Result<u8, StatusError>,
3844 ) -> Result<(), fidl::Error> {
3845 let _result = self.send_raw(result);
3846 self.drop_without_shutdown();
3847 _result
3848 }
3849
3850 fn send_raw(&self, mut result: Result<u8, StatusError>) -> Result<(), fidl::Error> {
3851 self.control_handle.inner.send::<fidl::encoding::FlexibleResultType<
3852 StatusWatchPowerLevelResponse,
3853 StatusError,
3854 >>(
3855 fidl::encoding::FlexibleResult::new(result.map(|current_level| (current_level,))),
3856 self.tx_id,
3857 0x2f11ba8df9b5614e,
3858 fidl::encoding::DynamicFlags::FLEXIBLE,
3859 )
3860 }
3861}
3862
3863#[derive(Debug, Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash)]
3864pub struct TopologyMarker;
3865
3866impl fidl::endpoints::ProtocolMarker for TopologyMarker {
3867 type Proxy = TopologyProxy;
3868 type RequestStream = TopologyRequestStream;
3869 #[cfg(target_os = "fuchsia")]
3870 type SynchronousProxy = TopologySynchronousProxy;
3871
3872 const DEBUG_NAME: &'static str = "fuchsia.power.broker.Topology";
3873}
3874impl fidl::endpoints::DiscoverableProtocolMarker for TopologyMarker {}
3875pub type TopologyAddElementResult = Result<(), AddElementError>;
3876pub type TopologyLeaseResult = Result<(), LeaseError>;
3877
3878pub trait TopologyProxyInterface: Send + Sync {
3879 type AddElementResponseFut: std::future::Future<Output = Result<TopologyAddElementResult, fidl::Error>>
3880 + Send;
3881 fn r#add_element(&self, payload: ElementSchema) -> Self::AddElementResponseFut;
3882 type LeaseResponseFut: std::future::Future<Output = Result<TopologyLeaseResult, fidl::Error>>
3883 + Send;
3884 fn r#lease(&self, payload: LeaseSchema) -> Self::LeaseResponseFut;
3885}
3886#[derive(Debug)]
3887#[cfg(target_os = "fuchsia")]
3888pub struct TopologySynchronousProxy {
3889 client: fidl::client::sync::Client,
3890}
3891
3892#[cfg(target_os = "fuchsia")]
3893impl fidl::endpoints::SynchronousProxy for TopologySynchronousProxy {
3894 type Proxy = TopologyProxy;
3895 type Protocol = TopologyMarker;
3896
3897 fn from_channel(inner: fidl::Channel) -> Self {
3898 Self::new(inner)
3899 }
3900
3901 fn into_channel(self) -> fidl::Channel {
3902 self.client.into_channel()
3903 }
3904
3905 fn as_channel(&self) -> &fidl::Channel {
3906 self.client.as_channel()
3907 }
3908}
3909
3910#[cfg(target_os = "fuchsia")]
3911impl TopologySynchronousProxy {
3912 pub fn new(channel: fidl::Channel) -> Self {
3913 Self { client: fidl::client::sync::Client::new(channel) }
3914 }
3915
3916 pub fn into_channel(self) -> fidl::Channel {
3917 self.client.into_channel()
3918 }
3919
3920 pub fn wait_for_event(
3923 &self,
3924 deadline: zx::MonotonicInstant,
3925 ) -> Result<TopologyEvent, fidl::Error> {
3926 TopologyEvent::decode(self.client.wait_for_event::<TopologyMarker>(deadline)?)
3927 }
3928
3929 pub fn r#add_element(
3932 &self,
3933 mut payload: ElementSchema,
3934 ___deadline: zx::MonotonicInstant,
3935 ) -> Result<TopologyAddElementResult, fidl::Error> {
3936 let _response = self.client.send_query::<
3937 ElementSchema,
3938 fidl::encoding::FlexibleResultType<fidl::encoding::EmptyStruct, AddElementError>,
3939 TopologyMarker,
3940 >(
3941 &mut payload,
3942 0x269ed93c9e87fa03,
3943 fidl::encoding::DynamicFlags::FLEXIBLE,
3944 ___deadline,
3945 )?
3946 .into_result::<TopologyMarker>("add_element")?;
3947 Ok(_response.map(|x| x))
3948 }
3949
3950 pub fn r#lease(
3953 &self,
3954 mut payload: LeaseSchema,
3955 ___deadline: zx::MonotonicInstant,
3956 ) -> Result<TopologyLeaseResult, fidl::Error> {
3957 let _response = self.client.send_query::<
3958 LeaseSchema,
3959 fidl::encoding::FlexibleResultType<fidl::encoding::EmptyStruct, LeaseError>,
3960 TopologyMarker,
3961 >(
3962 &mut payload,
3963 0x7f39c02fb9775330,
3964 fidl::encoding::DynamicFlags::FLEXIBLE,
3965 ___deadline,
3966 )?
3967 .into_result::<TopologyMarker>("lease")?;
3968 Ok(_response.map(|x| x))
3969 }
3970}
3971
3972#[cfg(target_os = "fuchsia")]
3973impl From<TopologySynchronousProxy> for zx::NullableHandle {
3974 fn from(value: TopologySynchronousProxy) -> Self {
3975 value.into_channel().into()
3976 }
3977}
3978
3979#[cfg(target_os = "fuchsia")]
3980impl From<fidl::Channel> for TopologySynchronousProxy {
3981 fn from(value: fidl::Channel) -> Self {
3982 Self::new(value)
3983 }
3984}
3985
3986#[cfg(target_os = "fuchsia")]
3987impl fidl::endpoints::FromClient for TopologySynchronousProxy {
3988 type Protocol = TopologyMarker;
3989
3990 fn from_client(value: fidl::endpoints::ClientEnd<TopologyMarker>) -> Self {
3991 Self::new(value.into_channel())
3992 }
3993}
3994
3995#[derive(Debug, Clone)]
3996pub struct TopologyProxy {
3997 client: fidl::client::Client<fidl::encoding::DefaultFuchsiaResourceDialect>,
3998}
3999
4000impl fidl::endpoints::Proxy for TopologyProxy {
4001 type Protocol = TopologyMarker;
4002
4003 fn from_channel(inner: ::fidl::AsyncChannel) -> Self {
4004 Self::new(inner)
4005 }
4006
4007 fn into_channel(self) -> Result<::fidl::AsyncChannel, Self> {
4008 self.client.into_channel().map_err(|client| Self { client })
4009 }
4010
4011 fn as_channel(&self) -> &::fidl::AsyncChannel {
4012 self.client.as_channel()
4013 }
4014}
4015
4016impl TopologyProxy {
4017 pub fn new(channel: ::fidl::AsyncChannel) -> Self {
4019 let protocol_name = <TopologyMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
4020 Self { client: fidl::client::Client::new(channel, protocol_name) }
4021 }
4022
4023 pub fn take_event_stream(&self) -> TopologyEventStream {
4029 TopologyEventStream { event_receiver: self.client.take_event_receiver() }
4030 }
4031
4032 pub fn r#add_element(
4035 &self,
4036 mut payload: ElementSchema,
4037 ) -> fidl::client::QueryResponseFut<
4038 TopologyAddElementResult,
4039 fidl::encoding::DefaultFuchsiaResourceDialect,
4040 > {
4041 TopologyProxyInterface::r#add_element(self, payload)
4042 }
4043
4044 pub fn r#lease(
4047 &self,
4048 mut payload: LeaseSchema,
4049 ) -> fidl::client::QueryResponseFut<
4050 TopologyLeaseResult,
4051 fidl::encoding::DefaultFuchsiaResourceDialect,
4052 > {
4053 TopologyProxyInterface::r#lease(self, payload)
4054 }
4055}
4056
4057impl TopologyProxyInterface for TopologyProxy {
4058 type AddElementResponseFut = fidl::client::QueryResponseFut<
4059 TopologyAddElementResult,
4060 fidl::encoding::DefaultFuchsiaResourceDialect,
4061 >;
4062 fn r#add_element(&self, mut payload: ElementSchema) -> Self::AddElementResponseFut {
4063 fn _decode(
4064 mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
4065 ) -> Result<TopologyAddElementResult, fidl::Error> {
4066 let _response = fidl::client::decode_transaction_body::<
4067 fidl::encoding::FlexibleResultType<fidl::encoding::EmptyStruct, AddElementError>,
4068 fidl::encoding::DefaultFuchsiaResourceDialect,
4069 0x269ed93c9e87fa03,
4070 >(_buf?)?
4071 .into_result::<TopologyMarker>("add_element")?;
4072 Ok(_response.map(|x| x))
4073 }
4074 self.client.send_query_and_decode::<ElementSchema, TopologyAddElementResult>(
4075 &mut payload,
4076 0x269ed93c9e87fa03,
4077 fidl::encoding::DynamicFlags::FLEXIBLE,
4078 _decode,
4079 )
4080 }
4081
4082 type LeaseResponseFut = fidl::client::QueryResponseFut<
4083 TopologyLeaseResult,
4084 fidl::encoding::DefaultFuchsiaResourceDialect,
4085 >;
4086 fn r#lease(&self, mut payload: LeaseSchema) -> Self::LeaseResponseFut {
4087 fn _decode(
4088 mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
4089 ) -> Result<TopologyLeaseResult, fidl::Error> {
4090 let _response = fidl::client::decode_transaction_body::<
4091 fidl::encoding::FlexibleResultType<fidl::encoding::EmptyStruct, LeaseError>,
4092 fidl::encoding::DefaultFuchsiaResourceDialect,
4093 0x7f39c02fb9775330,
4094 >(_buf?)?
4095 .into_result::<TopologyMarker>("lease")?;
4096 Ok(_response.map(|x| x))
4097 }
4098 self.client.send_query_and_decode::<LeaseSchema, TopologyLeaseResult>(
4099 &mut payload,
4100 0x7f39c02fb9775330,
4101 fidl::encoding::DynamicFlags::FLEXIBLE,
4102 _decode,
4103 )
4104 }
4105}
4106
4107pub struct TopologyEventStream {
4108 event_receiver: fidl::client::EventReceiver<fidl::encoding::DefaultFuchsiaResourceDialect>,
4109}
4110
4111impl std::marker::Unpin for TopologyEventStream {}
4112
4113impl futures::stream::FusedStream for TopologyEventStream {
4114 fn is_terminated(&self) -> bool {
4115 self.event_receiver.is_terminated()
4116 }
4117}
4118
4119impl futures::Stream for TopologyEventStream {
4120 type Item = Result<TopologyEvent, fidl::Error>;
4121
4122 fn poll_next(
4123 mut self: std::pin::Pin<&mut Self>,
4124 cx: &mut std::task::Context<'_>,
4125 ) -> std::task::Poll<Option<Self::Item>> {
4126 match futures::ready!(futures::stream::StreamExt::poll_next_unpin(
4127 &mut self.event_receiver,
4128 cx
4129 )?) {
4130 Some(buf) => std::task::Poll::Ready(Some(TopologyEvent::decode(buf))),
4131 None => std::task::Poll::Ready(None),
4132 }
4133 }
4134}
4135
4136#[derive(Debug)]
4137pub enum TopologyEvent {
4138 #[non_exhaustive]
4139 _UnknownEvent {
4140 ordinal: u64,
4142 },
4143}
4144
4145impl TopologyEvent {
4146 fn decode(
4148 mut buf: <fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc,
4149 ) -> Result<TopologyEvent, fidl::Error> {
4150 let (bytes, _handles) = buf.split_mut();
4151 let (tx_header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
4152 debug_assert_eq!(tx_header.tx_id, 0);
4153 match tx_header.ordinal {
4154 _ if tx_header.dynamic_flags().contains(fidl::encoding::DynamicFlags::FLEXIBLE) => {
4155 Ok(TopologyEvent::_UnknownEvent { ordinal: tx_header.ordinal })
4156 }
4157 _ => Err(fidl::Error::UnknownOrdinal {
4158 ordinal: tx_header.ordinal,
4159 protocol_name: <TopologyMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
4160 }),
4161 }
4162 }
4163}
4164
4165pub struct TopologyRequestStream {
4167 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
4168 is_terminated: bool,
4169}
4170
4171impl std::marker::Unpin for TopologyRequestStream {}
4172
4173impl futures::stream::FusedStream for TopologyRequestStream {
4174 fn is_terminated(&self) -> bool {
4175 self.is_terminated
4176 }
4177}
4178
4179impl fidl::endpoints::RequestStream for TopologyRequestStream {
4180 type Protocol = TopologyMarker;
4181 type ControlHandle = TopologyControlHandle;
4182
4183 fn from_channel(channel: ::fidl::AsyncChannel) -> Self {
4184 Self { inner: std::sync::Arc::new(fidl::ServeInner::new(channel)), is_terminated: false }
4185 }
4186
4187 fn control_handle(&self) -> Self::ControlHandle {
4188 TopologyControlHandle { inner: self.inner.clone() }
4189 }
4190
4191 fn into_inner(
4192 self,
4193 ) -> (::std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>, bool)
4194 {
4195 (self.inner, self.is_terminated)
4196 }
4197
4198 fn from_inner(
4199 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
4200 is_terminated: bool,
4201 ) -> Self {
4202 Self { inner, is_terminated }
4203 }
4204}
4205
4206impl futures::Stream for TopologyRequestStream {
4207 type Item = Result<TopologyRequest, fidl::Error>;
4208
4209 fn poll_next(
4210 mut self: std::pin::Pin<&mut Self>,
4211 cx: &mut std::task::Context<'_>,
4212 ) -> std::task::Poll<Option<Self::Item>> {
4213 let this = &mut *self;
4214 if this.inner.check_shutdown(cx) {
4215 this.is_terminated = true;
4216 return std::task::Poll::Ready(None);
4217 }
4218 if this.is_terminated {
4219 panic!("polled TopologyRequestStream after completion");
4220 }
4221 fidl::encoding::with_tls_decode_buf::<_, fidl::encoding::DefaultFuchsiaResourceDialect>(
4222 |bytes, handles| {
4223 match this.inner.channel().read_etc(cx, bytes, handles) {
4224 std::task::Poll::Ready(Ok(())) => {}
4225 std::task::Poll::Pending => return std::task::Poll::Pending,
4226 std::task::Poll::Ready(Err(zx_status::Status::PEER_CLOSED)) => {
4227 this.is_terminated = true;
4228 return std::task::Poll::Ready(None);
4229 }
4230 std::task::Poll::Ready(Err(e)) => {
4231 return std::task::Poll::Ready(Some(Err(fidl::Error::ServerRequestRead(
4232 e.into(),
4233 ))));
4234 }
4235 }
4236
4237 let (header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
4239
4240 std::task::Poll::Ready(Some(match header.ordinal {
4241 0x269ed93c9e87fa03 => {
4242 header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
4243 let mut req = fidl::new_empty!(
4244 ElementSchema,
4245 fidl::encoding::DefaultFuchsiaResourceDialect
4246 );
4247 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<ElementSchema>(&header, _body_bytes, handles, &mut req)?;
4248 let control_handle = TopologyControlHandle { inner: this.inner.clone() };
4249 Ok(TopologyRequest::AddElement {
4250 payload: req,
4251 responder: TopologyAddElementResponder {
4252 control_handle: std::mem::ManuallyDrop::new(control_handle),
4253 tx_id: header.tx_id,
4254 },
4255 })
4256 }
4257 0x7f39c02fb9775330 => {
4258 header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
4259 let mut req = fidl::new_empty!(
4260 LeaseSchema,
4261 fidl::encoding::DefaultFuchsiaResourceDialect
4262 );
4263 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<LeaseSchema>(&header, _body_bytes, handles, &mut req)?;
4264 let control_handle = TopologyControlHandle { inner: this.inner.clone() };
4265 Ok(TopologyRequest::Lease {
4266 payload: req,
4267 responder: TopologyLeaseResponder {
4268 control_handle: std::mem::ManuallyDrop::new(control_handle),
4269 tx_id: header.tx_id,
4270 },
4271 })
4272 }
4273 _ if header.tx_id == 0
4274 && header
4275 .dynamic_flags()
4276 .contains(fidl::encoding::DynamicFlags::FLEXIBLE) =>
4277 {
4278 Ok(TopologyRequest::_UnknownMethod {
4279 ordinal: header.ordinal,
4280 control_handle: TopologyControlHandle { inner: this.inner.clone() },
4281 method_type: fidl::MethodType::OneWay,
4282 })
4283 }
4284 _ if header
4285 .dynamic_flags()
4286 .contains(fidl::encoding::DynamicFlags::FLEXIBLE) =>
4287 {
4288 this.inner.send_framework_err(
4289 fidl::encoding::FrameworkErr::UnknownMethod,
4290 header.tx_id,
4291 header.ordinal,
4292 header.dynamic_flags(),
4293 (bytes, handles),
4294 )?;
4295 Ok(TopologyRequest::_UnknownMethod {
4296 ordinal: header.ordinal,
4297 control_handle: TopologyControlHandle { inner: this.inner.clone() },
4298 method_type: fidl::MethodType::TwoWay,
4299 })
4300 }
4301 _ => Err(fidl::Error::UnknownOrdinal {
4302 ordinal: header.ordinal,
4303 protocol_name:
4304 <TopologyMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
4305 }),
4306 }))
4307 },
4308 )
4309 }
4310}
4311
4312#[derive(Debug)]
4318pub enum TopologyRequest {
4319 AddElement { payload: ElementSchema, responder: TopologyAddElementResponder },
4322 Lease { payload: LeaseSchema, responder: TopologyLeaseResponder },
4325 #[non_exhaustive]
4327 _UnknownMethod {
4328 ordinal: u64,
4330 control_handle: TopologyControlHandle,
4331 method_type: fidl::MethodType,
4332 },
4333}
4334
4335impl TopologyRequest {
4336 #[allow(irrefutable_let_patterns)]
4337 pub fn into_add_element(self) -> Option<(ElementSchema, TopologyAddElementResponder)> {
4338 if let TopologyRequest::AddElement { payload, responder } = self {
4339 Some((payload, responder))
4340 } else {
4341 None
4342 }
4343 }
4344
4345 #[allow(irrefutable_let_patterns)]
4346 pub fn into_lease(self) -> Option<(LeaseSchema, TopologyLeaseResponder)> {
4347 if let TopologyRequest::Lease { payload, responder } = self {
4348 Some((payload, responder))
4349 } else {
4350 None
4351 }
4352 }
4353
4354 pub fn method_name(&self) -> &'static str {
4356 match *self {
4357 TopologyRequest::AddElement { .. } => "add_element",
4358 TopologyRequest::Lease { .. } => "lease",
4359 TopologyRequest::_UnknownMethod { method_type: fidl::MethodType::OneWay, .. } => {
4360 "unknown one-way method"
4361 }
4362 TopologyRequest::_UnknownMethod { method_type: fidl::MethodType::TwoWay, .. } => {
4363 "unknown two-way method"
4364 }
4365 }
4366 }
4367}
4368
4369#[derive(Debug, Clone)]
4370pub struct TopologyControlHandle {
4371 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
4372}
4373
4374impl fidl::endpoints::ControlHandle for TopologyControlHandle {
4375 fn shutdown(&self) {
4376 self.inner.shutdown()
4377 }
4378
4379 fn shutdown_with_epitaph(&self, status: zx_status::Status) {
4380 self.inner.shutdown_with_epitaph(status)
4381 }
4382
4383 fn is_closed(&self) -> bool {
4384 self.inner.channel().is_closed()
4385 }
4386 fn on_closed(&self) -> fidl::OnSignalsRef<'_> {
4387 self.inner.channel().on_closed()
4388 }
4389
4390 #[cfg(target_os = "fuchsia")]
4391 fn signal_peer(
4392 &self,
4393 clear_mask: zx::Signals,
4394 set_mask: zx::Signals,
4395 ) -> Result<(), zx_status::Status> {
4396 use fidl::Peered;
4397 self.inner.channel().signal_peer(clear_mask, set_mask)
4398 }
4399}
4400
4401impl TopologyControlHandle {}
4402
4403#[must_use = "FIDL methods require a response to be sent"]
4404#[derive(Debug)]
4405pub struct TopologyAddElementResponder {
4406 control_handle: std::mem::ManuallyDrop<TopologyControlHandle>,
4407 tx_id: u32,
4408}
4409
4410impl std::ops::Drop for TopologyAddElementResponder {
4414 fn drop(&mut self) {
4415 self.control_handle.shutdown();
4416 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
4418 }
4419}
4420
4421impl fidl::endpoints::Responder for TopologyAddElementResponder {
4422 type ControlHandle = TopologyControlHandle;
4423
4424 fn control_handle(&self) -> &TopologyControlHandle {
4425 &self.control_handle
4426 }
4427
4428 fn drop_without_shutdown(mut self) {
4429 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
4431 std::mem::forget(self);
4433 }
4434}
4435
4436impl TopologyAddElementResponder {
4437 pub fn send(self, mut result: Result<(), AddElementError>) -> Result<(), fidl::Error> {
4441 let _result = self.send_raw(result);
4442 if _result.is_err() {
4443 self.control_handle.shutdown();
4444 }
4445 self.drop_without_shutdown();
4446 _result
4447 }
4448
4449 pub fn send_no_shutdown_on_err(
4451 self,
4452 mut result: Result<(), AddElementError>,
4453 ) -> Result<(), fidl::Error> {
4454 let _result = self.send_raw(result);
4455 self.drop_without_shutdown();
4456 _result
4457 }
4458
4459 fn send_raw(&self, mut result: Result<(), AddElementError>) -> Result<(), fidl::Error> {
4460 self.control_handle.inner.send::<fidl::encoding::FlexibleResultType<
4461 fidl::encoding::EmptyStruct,
4462 AddElementError,
4463 >>(
4464 fidl::encoding::FlexibleResult::new(result),
4465 self.tx_id,
4466 0x269ed93c9e87fa03,
4467 fidl::encoding::DynamicFlags::FLEXIBLE,
4468 )
4469 }
4470}
4471
4472#[must_use = "FIDL methods require a response to be sent"]
4473#[derive(Debug)]
4474pub struct TopologyLeaseResponder {
4475 control_handle: std::mem::ManuallyDrop<TopologyControlHandle>,
4476 tx_id: u32,
4477}
4478
4479impl std::ops::Drop for TopologyLeaseResponder {
4483 fn drop(&mut self) {
4484 self.control_handle.shutdown();
4485 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
4487 }
4488}
4489
4490impl fidl::endpoints::Responder for TopologyLeaseResponder {
4491 type ControlHandle = TopologyControlHandle;
4492
4493 fn control_handle(&self) -> &TopologyControlHandle {
4494 &self.control_handle
4495 }
4496
4497 fn drop_without_shutdown(mut self) {
4498 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
4500 std::mem::forget(self);
4502 }
4503}
4504
4505impl TopologyLeaseResponder {
4506 pub fn send(self, mut result: Result<(), LeaseError>) -> Result<(), fidl::Error> {
4510 let _result = self.send_raw(result);
4511 if _result.is_err() {
4512 self.control_handle.shutdown();
4513 }
4514 self.drop_without_shutdown();
4515 _result
4516 }
4517
4518 pub fn send_no_shutdown_on_err(
4520 self,
4521 mut result: Result<(), LeaseError>,
4522 ) -> Result<(), fidl::Error> {
4523 let _result = self.send_raw(result);
4524 self.drop_without_shutdown();
4525 _result
4526 }
4527
4528 fn send_raw(&self, mut result: Result<(), LeaseError>) -> Result<(), fidl::Error> {
4529 self.control_handle.inner.send::<fidl::encoding::FlexibleResultType<
4530 fidl::encoding::EmptyStruct,
4531 LeaseError,
4532 >>(
4533 fidl::encoding::FlexibleResult::new(result),
4534 self.tx_id,
4535 0x7f39c02fb9775330,
4536 fidl::encoding::DynamicFlags::FLEXIBLE,
4537 )
4538 }
4539}
4540
4541#[derive(Debug, Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash)]
4542pub struct ElementInfoProviderServiceMarker;
4543
4544#[cfg(target_os = "fuchsia")]
4545impl fidl::endpoints::ServiceMarker for ElementInfoProviderServiceMarker {
4546 type Proxy = ElementInfoProviderServiceProxy;
4547 type Request = ElementInfoProviderServiceRequest;
4548 const SERVICE_NAME: &'static str = "fuchsia.power.broker.ElementInfoProviderService";
4549}
4550
4551#[cfg(target_os = "fuchsia")]
4554pub enum ElementInfoProviderServiceRequest {
4555 StatusProvider(ElementInfoProviderRequestStream),
4556}
4557
4558#[cfg(target_os = "fuchsia")]
4559impl fidl::endpoints::ServiceRequest for ElementInfoProviderServiceRequest {
4560 type Service = ElementInfoProviderServiceMarker;
4561
4562 fn dispatch(name: &str, _channel: fidl::AsyncChannel) -> Self {
4563 match name {
4564 "status_provider" => Self::StatusProvider(
4565 <ElementInfoProviderRequestStream as fidl::endpoints::RequestStream>::from_channel(
4566 _channel,
4567 ),
4568 ),
4569 _ => panic!("no such member protocol name for service ElementInfoProviderService"),
4570 }
4571 }
4572
4573 fn member_names() -> &'static [&'static str] {
4574 &["status_provider"]
4575 }
4576}
4577#[cfg(target_os = "fuchsia")]
4578pub struct ElementInfoProviderServiceProxy(
4579 #[allow(dead_code)] Box<dyn fidl::endpoints::MemberOpener>,
4580);
4581
4582#[cfg(target_os = "fuchsia")]
4583impl fidl::endpoints::ServiceProxy for ElementInfoProviderServiceProxy {
4584 type Service = ElementInfoProviderServiceMarker;
4585
4586 fn from_member_opener(opener: Box<dyn fidl::endpoints::MemberOpener>) -> Self {
4587 Self(opener)
4588 }
4589}
4590
4591#[cfg(target_os = "fuchsia")]
4592impl ElementInfoProviderServiceProxy {
4593 pub fn connect_to_status_provider(&self) -> Result<ElementInfoProviderProxy, fidl::Error> {
4594 let (proxy, server_end) = fidl::endpoints::create_proxy::<ElementInfoProviderMarker>();
4595 self.connect_channel_to_status_provider(server_end)?;
4596 Ok(proxy)
4597 }
4598
4599 pub fn connect_to_status_provider_sync(
4602 &self,
4603 ) -> Result<ElementInfoProviderSynchronousProxy, fidl::Error> {
4604 let (proxy, server_end) = fidl::endpoints::create_sync_proxy::<ElementInfoProviderMarker>();
4605 self.connect_channel_to_status_provider(server_end)?;
4606 Ok(proxy)
4607 }
4608
4609 pub fn connect_channel_to_status_provider(
4612 &self,
4613 server_end: fidl::endpoints::ServerEnd<ElementInfoProviderMarker>,
4614 ) -> Result<(), fidl::Error> {
4615 self.0.open_member("status_provider", server_end.into_channel())
4616 }
4617
4618 pub fn instance_name(&self) -> &str {
4619 self.0.instance_name()
4620 }
4621}
4622
4623mod internal {
4624 use super::*;
4625
4626 impl fidl::encoding::ResourceTypeMarker for ElementControlOpenStatusChannelRequest {
4627 type Borrowed<'a> = &'a mut Self;
4628 fn take_or_borrow<'a>(
4629 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
4630 ) -> Self::Borrowed<'a> {
4631 value
4632 }
4633 }
4634
4635 unsafe impl fidl::encoding::TypeMarker for ElementControlOpenStatusChannelRequest {
4636 type Owned = Self;
4637
4638 #[inline(always)]
4639 fn inline_align(_context: fidl::encoding::Context) -> usize {
4640 4
4641 }
4642
4643 #[inline(always)]
4644 fn inline_size(_context: fidl::encoding::Context) -> usize {
4645 4
4646 }
4647 }
4648
4649 unsafe impl
4650 fidl::encoding::Encode<
4651 ElementControlOpenStatusChannelRequest,
4652 fidl::encoding::DefaultFuchsiaResourceDialect,
4653 > for &mut ElementControlOpenStatusChannelRequest
4654 {
4655 #[inline]
4656 unsafe fn encode(
4657 self,
4658 encoder: &mut fidl::encoding::Encoder<
4659 '_,
4660 fidl::encoding::DefaultFuchsiaResourceDialect,
4661 >,
4662 offset: usize,
4663 _depth: fidl::encoding::Depth,
4664 ) -> fidl::Result<()> {
4665 encoder.debug_check_bounds::<ElementControlOpenStatusChannelRequest>(offset);
4666 fidl::encoding::Encode::<ElementControlOpenStatusChannelRequest, fidl::encoding::DefaultFuchsiaResourceDialect>::encode(
4668 (
4669 <fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<StatusMarker>> as fidl::encoding::ResourceTypeMarker>::take_or_borrow(&mut self.status_channel),
4670 ),
4671 encoder, offset, _depth
4672 )
4673 }
4674 }
4675 unsafe impl<
4676 T0: fidl::encoding::Encode<
4677 fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<StatusMarker>>,
4678 fidl::encoding::DefaultFuchsiaResourceDialect,
4679 >,
4680 >
4681 fidl::encoding::Encode<
4682 ElementControlOpenStatusChannelRequest,
4683 fidl::encoding::DefaultFuchsiaResourceDialect,
4684 > for (T0,)
4685 {
4686 #[inline]
4687 unsafe fn encode(
4688 self,
4689 encoder: &mut fidl::encoding::Encoder<
4690 '_,
4691 fidl::encoding::DefaultFuchsiaResourceDialect,
4692 >,
4693 offset: usize,
4694 depth: fidl::encoding::Depth,
4695 ) -> fidl::Result<()> {
4696 encoder.debug_check_bounds::<ElementControlOpenStatusChannelRequest>(offset);
4697 self.0.encode(encoder, offset + 0, depth)?;
4701 Ok(())
4702 }
4703 }
4704
4705 impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
4706 for ElementControlOpenStatusChannelRequest
4707 {
4708 #[inline(always)]
4709 fn new_empty() -> Self {
4710 Self {
4711 status_channel: fidl::new_empty!(
4712 fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<StatusMarker>>,
4713 fidl::encoding::DefaultFuchsiaResourceDialect
4714 ),
4715 }
4716 }
4717
4718 #[inline]
4719 unsafe fn decode(
4720 &mut self,
4721 decoder: &mut fidl::encoding::Decoder<
4722 '_,
4723 fidl::encoding::DefaultFuchsiaResourceDialect,
4724 >,
4725 offset: usize,
4726 _depth: fidl::encoding::Depth,
4727 ) -> fidl::Result<()> {
4728 decoder.debug_check_bounds::<Self>(offset);
4729 fidl::decode!(
4731 fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<StatusMarker>>,
4732 fidl::encoding::DefaultFuchsiaResourceDialect,
4733 &mut self.status_channel,
4734 decoder,
4735 offset + 0,
4736 _depth
4737 )?;
4738 Ok(())
4739 }
4740 }
4741
4742 impl fidl::encoding::ResourceTypeMarker for ElementControlRegisterDependencyTokenRequest {
4743 type Borrowed<'a> = &'a mut Self;
4744 fn take_or_borrow<'a>(
4745 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
4746 ) -> Self::Borrowed<'a> {
4747 value
4748 }
4749 }
4750
4751 unsafe impl fidl::encoding::TypeMarker for ElementControlRegisterDependencyTokenRequest {
4752 type Owned = Self;
4753
4754 #[inline(always)]
4755 fn inline_align(_context: fidl::encoding::Context) -> usize {
4756 4
4757 }
4758
4759 #[inline(always)]
4760 fn inline_size(_context: fidl::encoding::Context) -> usize {
4761 4
4762 }
4763 }
4764
4765 unsafe impl
4766 fidl::encoding::Encode<
4767 ElementControlRegisterDependencyTokenRequest,
4768 fidl::encoding::DefaultFuchsiaResourceDialect,
4769 > for &mut ElementControlRegisterDependencyTokenRequest
4770 {
4771 #[inline]
4772 unsafe fn encode(
4773 self,
4774 encoder: &mut fidl::encoding::Encoder<
4775 '_,
4776 fidl::encoding::DefaultFuchsiaResourceDialect,
4777 >,
4778 offset: usize,
4779 _depth: fidl::encoding::Depth,
4780 ) -> fidl::Result<()> {
4781 encoder.debug_check_bounds::<ElementControlRegisterDependencyTokenRequest>(offset);
4782 fidl::encoding::Encode::<
4784 ElementControlRegisterDependencyTokenRequest,
4785 fidl::encoding::DefaultFuchsiaResourceDialect,
4786 >::encode(
4787 (<fidl::encoding::HandleType<
4788 fidl::Event,
4789 { fidl::ObjectType::EVENT.into_raw() },
4790 2147483648,
4791 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow(
4792 &mut self.token
4793 ),),
4794 encoder,
4795 offset,
4796 _depth,
4797 )
4798 }
4799 }
4800 unsafe impl<
4801 T0: fidl::encoding::Encode<
4802 fidl::encoding::HandleType<
4803 fidl::Event,
4804 { fidl::ObjectType::EVENT.into_raw() },
4805 2147483648,
4806 >,
4807 fidl::encoding::DefaultFuchsiaResourceDialect,
4808 >,
4809 >
4810 fidl::encoding::Encode<
4811 ElementControlRegisterDependencyTokenRequest,
4812 fidl::encoding::DefaultFuchsiaResourceDialect,
4813 > for (T0,)
4814 {
4815 #[inline]
4816 unsafe fn encode(
4817 self,
4818 encoder: &mut fidl::encoding::Encoder<
4819 '_,
4820 fidl::encoding::DefaultFuchsiaResourceDialect,
4821 >,
4822 offset: usize,
4823 depth: fidl::encoding::Depth,
4824 ) -> fidl::Result<()> {
4825 encoder.debug_check_bounds::<ElementControlRegisterDependencyTokenRequest>(offset);
4826 self.0.encode(encoder, offset + 0, depth)?;
4830 Ok(())
4831 }
4832 }
4833
4834 impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
4835 for ElementControlRegisterDependencyTokenRequest
4836 {
4837 #[inline(always)]
4838 fn new_empty() -> Self {
4839 Self {
4840 token: fidl::new_empty!(fidl::encoding::HandleType<fidl::Event, { fidl::ObjectType::EVENT.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect),
4841 }
4842 }
4843
4844 #[inline]
4845 unsafe fn decode(
4846 &mut self,
4847 decoder: &mut fidl::encoding::Decoder<
4848 '_,
4849 fidl::encoding::DefaultFuchsiaResourceDialect,
4850 >,
4851 offset: usize,
4852 _depth: fidl::encoding::Depth,
4853 ) -> fidl::Result<()> {
4854 decoder.debug_check_bounds::<Self>(offset);
4855 fidl::decode!(fidl::encoding::HandleType<fidl::Event, { fidl::ObjectType::EVENT.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect, &mut self.token, decoder, offset + 0, _depth)?;
4857 Ok(())
4858 }
4859 }
4860
4861 impl fidl::encoding::ResourceTypeMarker for ElementControlUnregisterDependencyTokenRequest {
4862 type Borrowed<'a> = &'a mut Self;
4863 fn take_or_borrow<'a>(
4864 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
4865 ) -> Self::Borrowed<'a> {
4866 value
4867 }
4868 }
4869
4870 unsafe impl fidl::encoding::TypeMarker for ElementControlUnregisterDependencyTokenRequest {
4871 type Owned = Self;
4872
4873 #[inline(always)]
4874 fn inline_align(_context: fidl::encoding::Context) -> usize {
4875 4
4876 }
4877
4878 #[inline(always)]
4879 fn inline_size(_context: fidl::encoding::Context) -> usize {
4880 4
4881 }
4882 }
4883
4884 unsafe impl
4885 fidl::encoding::Encode<
4886 ElementControlUnregisterDependencyTokenRequest,
4887 fidl::encoding::DefaultFuchsiaResourceDialect,
4888 > for &mut ElementControlUnregisterDependencyTokenRequest
4889 {
4890 #[inline]
4891 unsafe fn encode(
4892 self,
4893 encoder: &mut fidl::encoding::Encoder<
4894 '_,
4895 fidl::encoding::DefaultFuchsiaResourceDialect,
4896 >,
4897 offset: usize,
4898 _depth: fidl::encoding::Depth,
4899 ) -> fidl::Result<()> {
4900 encoder.debug_check_bounds::<ElementControlUnregisterDependencyTokenRequest>(offset);
4901 fidl::encoding::Encode::<
4903 ElementControlUnregisterDependencyTokenRequest,
4904 fidl::encoding::DefaultFuchsiaResourceDialect,
4905 >::encode(
4906 (<fidl::encoding::HandleType<
4907 fidl::Event,
4908 { fidl::ObjectType::EVENT.into_raw() },
4909 2147483648,
4910 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow(
4911 &mut self.token
4912 ),),
4913 encoder,
4914 offset,
4915 _depth,
4916 )
4917 }
4918 }
4919 unsafe impl<
4920 T0: fidl::encoding::Encode<
4921 fidl::encoding::HandleType<
4922 fidl::Event,
4923 { fidl::ObjectType::EVENT.into_raw() },
4924 2147483648,
4925 >,
4926 fidl::encoding::DefaultFuchsiaResourceDialect,
4927 >,
4928 >
4929 fidl::encoding::Encode<
4930 ElementControlUnregisterDependencyTokenRequest,
4931 fidl::encoding::DefaultFuchsiaResourceDialect,
4932 > for (T0,)
4933 {
4934 #[inline]
4935 unsafe fn encode(
4936 self,
4937 encoder: &mut fidl::encoding::Encoder<
4938 '_,
4939 fidl::encoding::DefaultFuchsiaResourceDialect,
4940 >,
4941 offset: usize,
4942 depth: fidl::encoding::Depth,
4943 ) -> fidl::Result<()> {
4944 encoder.debug_check_bounds::<ElementControlUnregisterDependencyTokenRequest>(offset);
4945 self.0.encode(encoder, offset + 0, depth)?;
4949 Ok(())
4950 }
4951 }
4952
4953 impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
4954 for ElementControlUnregisterDependencyTokenRequest
4955 {
4956 #[inline(always)]
4957 fn new_empty() -> Self {
4958 Self {
4959 token: fidl::new_empty!(fidl::encoding::HandleType<fidl::Event, { fidl::ObjectType::EVENT.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect),
4960 }
4961 }
4962
4963 #[inline]
4964 unsafe fn decode(
4965 &mut self,
4966 decoder: &mut fidl::encoding::Decoder<
4967 '_,
4968 fidl::encoding::DefaultFuchsiaResourceDialect,
4969 >,
4970 offset: usize,
4971 _depth: fidl::encoding::Depth,
4972 ) -> fidl::Result<()> {
4973 decoder.debug_check_bounds::<Self>(offset);
4974 fidl::decode!(fidl::encoding::HandleType<fidl::Event, { fidl::ObjectType::EVENT.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect, &mut self.token, decoder, offset + 0, _depth)?;
4976 Ok(())
4977 }
4978 }
4979
4980 impl fidl::encoding::ResourceTypeMarker for ElementInfoProviderGetElementPowerLevelNamesResponse {
4981 type Borrowed<'a> = &'a mut Self;
4982 fn take_or_borrow<'a>(
4983 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
4984 ) -> Self::Borrowed<'a> {
4985 value
4986 }
4987 }
4988
4989 unsafe impl fidl::encoding::TypeMarker for ElementInfoProviderGetElementPowerLevelNamesResponse {
4990 type Owned = Self;
4991
4992 #[inline(always)]
4993 fn inline_align(_context: fidl::encoding::Context) -> usize {
4994 8
4995 }
4996
4997 #[inline(always)]
4998 fn inline_size(_context: fidl::encoding::Context) -> usize {
4999 16
5000 }
5001 }
5002
5003 unsafe impl
5004 fidl::encoding::Encode<
5005 ElementInfoProviderGetElementPowerLevelNamesResponse,
5006 fidl::encoding::DefaultFuchsiaResourceDialect,
5007 > for &mut ElementInfoProviderGetElementPowerLevelNamesResponse
5008 {
5009 #[inline]
5010 unsafe fn encode(
5011 self,
5012 encoder: &mut fidl::encoding::Encoder<
5013 '_,
5014 fidl::encoding::DefaultFuchsiaResourceDialect,
5015 >,
5016 offset: usize,
5017 _depth: fidl::encoding::Depth,
5018 ) -> fidl::Result<()> {
5019 encoder
5020 .debug_check_bounds::<ElementInfoProviderGetElementPowerLevelNamesResponse>(offset);
5021 fidl::encoding::Encode::<ElementInfoProviderGetElementPowerLevelNamesResponse, fidl::encoding::DefaultFuchsiaResourceDialect>::encode(
5023 (
5024 <fidl::encoding::UnboundedVector<ElementPowerLevelNames> as fidl::encoding::ValueTypeMarker>::borrow(&self.level_names),
5025 ),
5026 encoder, offset, _depth
5027 )
5028 }
5029 }
5030 unsafe impl<
5031 T0: fidl::encoding::Encode<
5032 fidl::encoding::UnboundedVector<ElementPowerLevelNames>,
5033 fidl::encoding::DefaultFuchsiaResourceDialect,
5034 >,
5035 >
5036 fidl::encoding::Encode<
5037 ElementInfoProviderGetElementPowerLevelNamesResponse,
5038 fidl::encoding::DefaultFuchsiaResourceDialect,
5039 > for (T0,)
5040 {
5041 #[inline]
5042 unsafe fn encode(
5043 self,
5044 encoder: &mut fidl::encoding::Encoder<
5045 '_,
5046 fidl::encoding::DefaultFuchsiaResourceDialect,
5047 >,
5048 offset: usize,
5049 depth: fidl::encoding::Depth,
5050 ) -> fidl::Result<()> {
5051 encoder
5052 .debug_check_bounds::<ElementInfoProviderGetElementPowerLevelNamesResponse>(offset);
5053 self.0.encode(encoder, offset + 0, depth)?;
5057 Ok(())
5058 }
5059 }
5060
5061 impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
5062 for ElementInfoProviderGetElementPowerLevelNamesResponse
5063 {
5064 #[inline(always)]
5065 fn new_empty() -> Self {
5066 Self {
5067 level_names: fidl::new_empty!(
5068 fidl::encoding::UnboundedVector<ElementPowerLevelNames>,
5069 fidl::encoding::DefaultFuchsiaResourceDialect
5070 ),
5071 }
5072 }
5073
5074 #[inline]
5075 unsafe fn decode(
5076 &mut self,
5077 decoder: &mut fidl::encoding::Decoder<
5078 '_,
5079 fidl::encoding::DefaultFuchsiaResourceDialect,
5080 >,
5081 offset: usize,
5082 _depth: fidl::encoding::Depth,
5083 ) -> fidl::Result<()> {
5084 decoder.debug_check_bounds::<Self>(offset);
5085 fidl::decode!(
5087 fidl::encoding::UnboundedVector<ElementPowerLevelNames>,
5088 fidl::encoding::DefaultFuchsiaResourceDialect,
5089 &mut self.level_names,
5090 decoder,
5091 offset + 0,
5092 _depth
5093 )?;
5094 Ok(())
5095 }
5096 }
5097
5098 impl fidl::encoding::ResourceTypeMarker for ElementInfoProviderGetStatusEndpointsResponse {
5099 type Borrowed<'a> = &'a mut Self;
5100 fn take_or_borrow<'a>(
5101 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
5102 ) -> Self::Borrowed<'a> {
5103 value
5104 }
5105 }
5106
5107 unsafe impl fidl::encoding::TypeMarker for ElementInfoProviderGetStatusEndpointsResponse {
5108 type Owned = Self;
5109
5110 #[inline(always)]
5111 fn inline_align(_context: fidl::encoding::Context) -> usize {
5112 8
5113 }
5114
5115 #[inline(always)]
5116 fn inline_size(_context: fidl::encoding::Context) -> usize {
5117 16
5118 }
5119 }
5120
5121 unsafe impl
5122 fidl::encoding::Encode<
5123 ElementInfoProviderGetStatusEndpointsResponse,
5124 fidl::encoding::DefaultFuchsiaResourceDialect,
5125 > for &mut ElementInfoProviderGetStatusEndpointsResponse
5126 {
5127 #[inline]
5128 unsafe fn encode(
5129 self,
5130 encoder: &mut fidl::encoding::Encoder<
5131 '_,
5132 fidl::encoding::DefaultFuchsiaResourceDialect,
5133 >,
5134 offset: usize,
5135 _depth: fidl::encoding::Depth,
5136 ) -> fidl::Result<()> {
5137 encoder.debug_check_bounds::<ElementInfoProviderGetStatusEndpointsResponse>(offset);
5138 fidl::encoding::Encode::<ElementInfoProviderGetStatusEndpointsResponse, fidl::encoding::DefaultFuchsiaResourceDialect>::encode(
5140 (
5141 <fidl::encoding::UnboundedVector<ElementStatusEndpoint> as fidl::encoding::ResourceTypeMarker>::take_or_borrow(&mut self.endpoints),
5142 ),
5143 encoder, offset, _depth
5144 )
5145 }
5146 }
5147 unsafe impl<
5148 T0: fidl::encoding::Encode<
5149 fidl::encoding::UnboundedVector<ElementStatusEndpoint>,
5150 fidl::encoding::DefaultFuchsiaResourceDialect,
5151 >,
5152 >
5153 fidl::encoding::Encode<
5154 ElementInfoProviderGetStatusEndpointsResponse,
5155 fidl::encoding::DefaultFuchsiaResourceDialect,
5156 > for (T0,)
5157 {
5158 #[inline]
5159 unsafe fn encode(
5160 self,
5161 encoder: &mut fidl::encoding::Encoder<
5162 '_,
5163 fidl::encoding::DefaultFuchsiaResourceDialect,
5164 >,
5165 offset: usize,
5166 depth: fidl::encoding::Depth,
5167 ) -> fidl::Result<()> {
5168 encoder.debug_check_bounds::<ElementInfoProviderGetStatusEndpointsResponse>(offset);
5169 self.0.encode(encoder, offset + 0, depth)?;
5173 Ok(())
5174 }
5175 }
5176
5177 impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
5178 for ElementInfoProviderGetStatusEndpointsResponse
5179 {
5180 #[inline(always)]
5181 fn new_empty() -> Self {
5182 Self {
5183 endpoints: fidl::new_empty!(
5184 fidl::encoding::UnboundedVector<ElementStatusEndpoint>,
5185 fidl::encoding::DefaultFuchsiaResourceDialect
5186 ),
5187 }
5188 }
5189
5190 #[inline]
5191 unsafe fn decode(
5192 &mut self,
5193 decoder: &mut fidl::encoding::Decoder<
5194 '_,
5195 fidl::encoding::DefaultFuchsiaResourceDialect,
5196 >,
5197 offset: usize,
5198 _depth: fidl::encoding::Depth,
5199 ) -> fidl::Result<()> {
5200 decoder.debug_check_bounds::<Self>(offset);
5201 fidl::decode!(
5203 fidl::encoding::UnboundedVector<ElementStatusEndpoint>,
5204 fidl::encoding::DefaultFuchsiaResourceDialect,
5205 &mut self.endpoints,
5206 decoder,
5207 offset + 0,
5208 _depth
5209 )?;
5210 Ok(())
5211 }
5212 }
5213
5214 impl fidl::encoding::ResourceTypeMarker for LessorLeaseRequest {
5215 type Borrowed<'a> = &'a mut Self;
5216 fn take_or_borrow<'a>(
5217 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
5218 ) -> Self::Borrowed<'a> {
5219 value
5220 }
5221 }
5222
5223 unsafe impl fidl::encoding::TypeMarker for LessorLeaseRequest {
5224 type Owned = Self;
5225
5226 #[inline(always)]
5227 fn inline_align(_context: fidl::encoding::Context) -> usize {
5228 1
5229 }
5230
5231 #[inline(always)]
5232 fn inline_size(_context: fidl::encoding::Context) -> usize {
5233 1
5234 }
5235 #[inline(always)]
5236 fn encode_is_copy() -> bool {
5237 true
5238 }
5239
5240 #[inline(always)]
5241 fn decode_is_copy() -> bool {
5242 true
5243 }
5244 }
5245
5246 unsafe impl
5247 fidl::encoding::Encode<LessorLeaseRequest, fidl::encoding::DefaultFuchsiaResourceDialect>
5248 for &mut LessorLeaseRequest
5249 {
5250 #[inline]
5251 unsafe fn encode(
5252 self,
5253 encoder: &mut fidl::encoding::Encoder<
5254 '_,
5255 fidl::encoding::DefaultFuchsiaResourceDialect,
5256 >,
5257 offset: usize,
5258 _depth: fidl::encoding::Depth,
5259 ) -> fidl::Result<()> {
5260 encoder.debug_check_bounds::<LessorLeaseRequest>(offset);
5261 unsafe {
5262 let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
5264 (buf_ptr as *mut LessorLeaseRequest)
5265 .write_unaligned((self as *const LessorLeaseRequest).read());
5266 }
5269 Ok(())
5270 }
5271 }
5272 unsafe impl<T0: fidl::encoding::Encode<u8, fidl::encoding::DefaultFuchsiaResourceDialect>>
5273 fidl::encoding::Encode<LessorLeaseRequest, fidl::encoding::DefaultFuchsiaResourceDialect>
5274 for (T0,)
5275 {
5276 #[inline]
5277 unsafe fn encode(
5278 self,
5279 encoder: &mut fidl::encoding::Encoder<
5280 '_,
5281 fidl::encoding::DefaultFuchsiaResourceDialect,
5282 >,
5283 offset: usize,
5284 depth: fidl::encoding::Depth,
5285 ) -> fidl::Result<()> {
5286 encoder.debug_check_bounds::<LessorLeaseRequest>(offset);
5287 self.0.encode(encoder, offset + 0, depth)?;
5291 Ok(())
5292 }
5293 }
5294
5295 impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
5296 for LessorLeaseRequest
5297 {
5298 #[inline(always)]
5299 fn new_empty() -> Self {
5300 Self { level: fidl::new_empty!(u8, fidl::encoding::DefaultFuchsiaResourceDialect) }
5301 }
5302
5303 #[inline]
5304 unsafe fn decode(
5305 &mut self,
5306 decoder: &mut fidl::encoding::Decoder<
5307 '_,
5308 fidl::encoding::DefaultFuchsiaResourceDialect,
5309 >,
5310 offset: usize,
5311 _depth: fidl::encoding::Depth,
5312 ) -> fidl::Result<()> {
5313 decoder.debug_check_bounds::<Self>(offset);
5314 let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
5315 unsafe {
5318 std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 1);
5319 }
5320 Ok(())
5321 }
5322 }
5323
5324 impl fidl::encoding::ResourceTypeMarker for LessorLeaseResponse {
5325 type Borrowed<'a> = &'a mut Self;
5326 fn take_or_borrow<'a>(
5327 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
5328 ) -> Self::Borrowed<'a> {
5329 value
5330 }
5331 }
5332
5333 unsafe impl fidl::encoding::TypeMarker for LessorLeaseResponse {
5334 type Owned = Self;
5335
5336 #[inline(always)]
5337 fn inline_align(_context: fidl::encoding::Context) -> usize {
5338 4
5339 }
5340
5341 #[inline(always)]
5342 fn inline_size(_context: fidl::encoding::Context) -> usize {
5343 4
5344 }
5345 }
5346
5347 unsafe impl
5348 fidl::encoding::Encode<LessorLeaseResponse, fidl::encoding::DefaultFuchsiaResourceDialect>
5349 for &mut LessorLeaseResponse
5350 {
5351 #[inline]
5352 unsafe fn encode(
5353 self,
5354 encoder: &mut fidl::encoding::Encoder<
5355 '_,
5356 fidl::encoding::DefaultFuchsiaResourceDialect,
5357 >,
5358 offset: usize,
5359 _depth: fidl::encoding::Depth,
5360 ) -> fidl::Result<()> {
5361 encoder.debug_check_bounds::<LessorLeaseResponse>(offset);
5362 fidl::encoding::Encode::<LessorLeaseResponse, fidl::encoding::DefaultFuchsiaResourceDialect>::encode(
5364 (
5365 <fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<LeaseControlMarker>> as fidl::encoding::ResourceTypeMarker>::take_or_borrow(&mut self.lease_control),
5366 ),
5367 encoder, offset, _depth
5368 )
5369 }
5370 }
5371 unsafe impl<
5372 T0: fidl::encoding::Encode<
5373 fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<LeaseControlMarker>>,
5374 fidl::encoding::DefaultFuchsiaResourceDialect,
5375 >,
5376 > fidl::encoding::Encode<LessorLeaseResponse, fidl::encoding::DefaultFuchsiaResourceDialect>
5377 for (T0,)
5378 {
5379 #[inline]
5380 unsafe fn encode(
5381 self,
5382 encoder: &mut fidl::encoding::Encoder<
5383 '_,
5384 fidl::encoding::DefaultFuchsiaResourceDialect,
5385 >,
5386 offset: usize,
5387 depth: fidl::encoding::Depth,
5388 ) -> fidl::Result<()> {
5389 encoder.debug_check_bounds::<LessorLeaseResponse>(offset);
5390 self.0.encode(encoder, offset + 0, depth)?;
5394 Ok(())
5395 }
5396 }
5397
5398 impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
5399 for LessorLeaseResponse
5400 {
5401 #[inline(always)]
5402 fn new_empty() -> Self {
5403 Self {
5404 lease_control: fidl::new_empty!(
5405 fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<LeaseControlMarker>>,
5406 fidl::encoding::DefaultFuchsiaResourceDialect
5407 ),
5408 }
5409 }
5410
5411 #[inline]
5412 unsafe fn decode(
5413 &mut self,
5414 decoder: &mut fidl::encoding::Decoder<
5415 '_,
5416 fidl::encoding::DefaultFuchsiaResourceDialect,
5417 >,
5418 offset: usize,
5419 _depth: fidl::encoding::Depth,
5420 ) -> fidl::Result<()> {
5421 decoder.debug_check_bounds::<Self>(offset);
5422 fidl::decode!(
5424 fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<LeaseControlMarker>>,
5425 fidl::encoding::DefaultFuchsiaResourceDialect,
5426 &mut self.lease_control,
5427 decoder,
5428 offset + 0,
5429 _depth
5430 )?;
5431 Ok(())
5432 }
5433 }
5434
5435 impl fidl::encoding::ResourceTypeMarker for LevelDependency {
5436 type Borrowed<'a> = &'a mut Self;
5437 fn take_or_borrow<'a>(
5438 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
5439 ) -> Self::Borrowed<'a> {
5440 value
5441 }
5442 }
5443
5444 unsafe impl fidl::encoding::TypeMarker for LevelDependency {
5445 type Owned = Self;
5446
5447 #[inline(always)]
5448 fn inline_align(_context: fidl::encoding::Context) -> usize {
5449 8
5450 }
5451
5452 #[inline(always)]
5453 fn inline_size(_context: fidl::encoding::Context) -> usize {
5454 24
5455 }
5456 }
5457
5458 unsafe impl
5459 fidl::encoding::Encode<LevelDependency, fidl::encoding::DefaultFuchsiaResourceDialect>
5460 for &mut LevelDependency
5461 {
5462 #[inline]
5463 unsafe fn encode(
5464 self,
5465 encoder: &mut fidl::encoding::Encoder<
5466 '_,
5467 fidl::encoding::DefaultFuchsiaResourceDialect,
5468 >,
5469 offset: usize,
5470 _depth: fidl::encoding::Depth,
5471 ) -> fidl::Result<()> {
5472 encoder.debug_check_bounds::<LevelDependency>(offset);
5473 fidl::encoding::Encode::<LevelDependency, fidl::encoding::DefaultFuchsiaResourceDialect>::encode(
5475 (
5476 <u8 as fidl::encoding::ValueTypeMarker>::borrow(&self.dependent_level),
5477 <fidl::encoding::HandleType<fidl::Event, { fidl::ObjectType::EVENT.into_raw() }, 2147483648> as fidl::encoding::ResourceTypeMarker>::take_or_borrow(&mut self.requires_token),
5478 <fidl::encoding::Vector<u8, 256> as fidl::encoding::ValueTypeMarker>::borrow(&self.requires_level_by_preference),
5479 ),
5480 encoder, offset, _depth
5481 )
5482 }
5483 }
5484 unsafe impl<
5485 T0: fidl::encoding::Encode<u8, fidl::encoding::DefaultFuchsiaResourceDialect>,
5486 T1: fidl::encoding::Encode<
5487 fidl::encoding::HandleType<
5488 fidl::Event,
5489 { fidl::ObjectType::EVENT.into_raw() },
5490 2147483648,
5491 >,
5492 fidl::encoding::DefaultFuchsiaResourceDialect,
5493 >,
5494 T2: fidl::encoding::Encode<
5495 fidl::encoding::Vector<u8, 256>,
5496 fidl::encoding::DefaultFuchsiaResourceDialect,
5497 >,
5498 > fidl::encoding::Encode<LevelDependency, fidl::encoding::DefaultFuchsiaResourceDialect>
5499 for (T0, T1, T2)
5500 {
5501 #[inline]
5502 unsafe fn encode(
5503 self,
5504 encoder: &mut fidl::encoding::Encoder<
5505 '_,
5506 fidl::encoding::DefaultFuchsiaResourceDialect,
5507 >,
5508 offset: usize,
5509 depth: fidl::encoding::Depth,
5510 ) -> fidl::Result<()> {
5511 encoder.debug_check_bounds::<LevelDependency>(offset);
5512 unsafe {
5515 let ptr = encoder.buf.as_mut_ptr().add(offset).offset(0);
5516 (ptr as *mut u64).write_unaligned(0);
5517 }
5518 self.0.encode(encoder, offset + 0, depth)?;
5520 self.1.encode(encoder, offset + 4, depth)?;
5521 self.2.encode(encoder, offset + 8, depth)?;
5522 Ok(())
5523 }
5524 }
5525
5526 impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
5527 for LevelDependency
5528 {
5529 #[inline(always)]
5530 fn new_empty() -> Self {
5531 Self {
5532 dependent_level: fidl::new_empty!(
5533 u8,
5534 fidl::encoding::DefaultFuchsiaResourceDialect
5535 ),
5536 requires_token: fidl::new_empty!(fidl::encoding::HandleType<fidl::Event, { fidl::ObjectType::EVENT.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect),
5537 requires_level_by_preference: fidl::new_empty!(fidl::encoding::Vector<u8, 256>, fidl::encoding::DefaultFuchsiaResourceDialect),
5538 }
5539 }
5540
5541 #[inline]
5542 unsafe fn decode(
5543 &mut self,
5544 decoder: &mut fidl::encoding::Decoder<
5545 '_,
5546 fidl::encoding::DefaultFuchsiaResourceDialect,
5547 >,
5548 offset: usize,
5549 _depth: fidl::encoding::Depth,
5550 ) -> fidl::Result<()> {
5551 decoder.debug_check_bounds::<Self>(offset);
5552 let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(0) };
5554 let padval = unsafe { (ptr as *const u64).read_unaligned() };
5555 let mask = 0xffffff00u64;
5556 let maskedval = padval & mask;
5557 if maskedval != 0 {
5558 return Err(fidl::Error::NonZeroPadding {
5559 padding_start: offset + 0 + ((mask as u64).trailing_zeros() / 8) as usize,
5560 });
5561 }
5562 fidl::decode!(
5563 u8,
5564 fidl::encoding::DefaultFuchsiaResourceDialect,
5565 &mut self.dependent_level,
5566 decoder,
5567 offset + 0,
5568 _depth
5569 )?;
5570 fidl::decode!(fidl::encoding::HandleType<fidl::Event, { fidl::ObjectType::EVENT.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect, &mut self.requires_token, decoder, offset + 4, _depth)?;
5571 fidl::decode!(fidl::encoding::Vector<u8, 256>, fidl::encoding::DefaultFuchsiaResourceDialect, &mut self.requires_level_by_preference, decoder, offset + 8, _depth)?;
5572 Ok(())
5573 }
5574 }
5575
5576 impl fidl::encoding::ResourceTypeMarker for StatusWatchPowerLevelResponse {
5577 type Borrowed<'a> = &'a mut Self;
5578 fn take_or_borrow<'a>(
5579 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
5580 ) -> Self::Borrowed<'a> {
5581 value
5582 }
5583 }
5584
5585 unsafe impl fidl::encoding::TypeMarker for StatusWatchPowerLevelResponse {
5586 type Owned = Self;
5587
5588 #[inline(always)]
5589 fn inline_align(_context: fidl::encoding::Context) -> usize {
5590 1
5591 }
5592
5593 #[inline(always)]
5594 fn inline_size(_context: fidl::encoding::Context) -> usize {
5595 1
5596 }
5597 #[inline(always)]
5598 fn encode_is_copy() -> bool {
5599 true
5600 }
5601
5602 #[inline(always)]
5603 fn decode_is_copy() -> bool {
5604 true
5605 }
5606 }
5607
5608 unsafe impl
5609 fidl::encoding::Encode<
5610 StatusWatchPowerLevelResponse,
5611 fidl::encoding::DefaultFuchsiaResourceDialect,
5612 > for &mut StatusWatchPowerLevelResponse
5613 {
5614 #[inline]
5615 unsafe fn encode(
5616 self,
5617 encoder: &mut fidl::encoding::Encoder<
5618 '_,
5619 fidl::encoding::DefaultFuchsiaResourceDialect,
5620 >,
5621 offset: usize,
5622 _depth: fidl::encoding::Depth,
5623 ) -> fidl::Result<()> {
5624 encoder.debug_check_bounds::<StatusWatchPowerLevelResponse>(offset);
5625 unsafe {
5626 let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
5628 (buf_ptr as *mut StatusWatchPowerLevelResponse)
5629 .write_unaligned((self as *const StatusWatchPowerLevelResponse).read());
5630 }
5633 Ok(())
5634 }
5635 }
5636 unsafe impl<T0: fidl::encoding::Encode<u8, fidl::encoding::DefaultFuchsiaResourceDialect>>
5637 fidl::encoding::Encode<
5638 StatusWatchPowerLevelResponse,
5639 fidl::encoding::DefaultFuchsiaResourceDialect,
5640 > for (T0,)
5641 {
5642 #[inline]
5643 unsafe fn encode(
5644 self,
5645 encoder: &mut fidl::encoding::Encoder<
5646 '_,
5647 fidl::encoding::DefaultFuchsiaResourceDialect,
5648 >,
5649 offset: usize,
5650 depth: fidl::encoding::Depth,
5651 ) -> fidl::Result<()> {
5652 encoder.debug_check_bounds::<StatusWatchPowerLevelResponse>(offset);
5653 self.0.encode(encoder, offset + 0, depth)?;
5657 Ok(())
5658 }
5659 }
5660
5661 impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
5662 for StatusWatchPowerLevelResponse
5663 {
5664 #[inline(always)]
5665 fn new_empty() -> Self {
5666 Self {
5667 current_level: fidl::new_empty!(u8, fidl::encoding::DefaultFuchsiaResourceDialect),
5668 }
5669 }
5670
5671 #[inline]
5672 unsafe fn decode(
5673 &mut self,
5674 decoder: &mut fidl::encoding::Decoder<
5675 '_,
5676 fidl::encoding::DefaultFuchsiaResourceDialect,
5677 >,
5678 offset: usize,
5679 _depth: fidl::encoding::Depth,
5680 ) -> fidl::Result<()> {
5681 decoder.debug_check_bounds::<Self>(offset);
5682 let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
5683 unsafe {
5686 std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 1);
5687 }
5688 Ok(())
5689 }
5690 }
5691
5692 impl ElementSchema {
5693 #[inline(always)]
5694 fn max_ordinal_present(&self) -> u64 {
5695 if let Some(_) = self.element_runner {
5696 return 10;
5697 }
5698 if let Some(_) = self.element_control {
5699 return 9;
5700 }
5701 if let Some(_) = self.lessor_channel {
5702 return 8;
5703 }
5704 if let Some(_) = self.dependencies {
5705 return 4;
5706 }
5707 if let Some(_) = self.valid_levels {
5708 return 3;
5709 }
5710 if let Some(_) = self.initial_current_level {
5711 return 2;
5712 }
5713 if let Some(_) = self.element_name {
5714 return 1;
5715 }
5716 0
5717 }
5718 }
5719
5720 impl fidl::encoding::ResourceTypeMarker for ElementSchema {
5721 type Borrowed<'a> = &'a mut Self;
5722 fn take_or_borrow<'a>(
5723 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
5724 ) -> Self::Borrowed<'a> {
5725 value
5726 }
5727 }
5728
5729 unsafe impl fidl::encoding::TypeMarker for ElementSchema {
5730 type Owned = Self;
5731
5732 #[inline(always)]
5733 fn inline_align(_context: fidl::encoding::Context) -> usize {
5734 8
5735 }
5736
5737 #[inline(always)]
5738 fn inline_size(_context: fidl::encoding::Context) -> usize {
5739 16
5740 }
5741 }
5742
5743 unsafe impl fidl::encoding::Encode<ElementSchema, fidl::encoding::DefaultFuchsiaResourceDialect>
5744 for &mut ElementSchema
5745 {
5746 unsafe fn encode(
5747 self,
5748 encoder: &mut fidl::encoding::Encoder<
5749 '_,
5750 fidl::encoding::DefaultFuchsiaResourceDialect,
5751 >,
5752 offset: usize,
5753 mut depth: fidl::encoding::Depth,
5754 ) -> fidl::Result<()> {
5755 encoder.debug_check_bounds::<ElementSchema>(offset);
5756 let max_ordinal: u64 = self.max_ordinal_present();
5758 encoder.write_num(max_ordinal, offset);
5759 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
5760 if max_ordinal == 0 {
5762 return Ok(());
5763 }
5764 depth.increment()?;
5765 let envelope_size = 8;
5766 let bytes_len = max_ordinal as usize * envelope_size;
5767 #[allow(unused_variables)]
5768 let offset = encoder.out_of_line_offset(bytes_len);
5769 let mut _prev_end_offset: usize = 0;
5770 if 1 > max_ordinal {
5771 return Ok(());
5772 }
5773
5774 let cur_offset: usize = (1 - 1) * envelope_size;
5777
5778 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5780
5781 fidl::encoding::encode_in_envelope_optional::<
5786 fidl::encoding::BoundedString<64>,
5787 fidl::encoding::DefaultFuchsiaResourceDialect,
5788 >(
5789 self.element_name.as_ref().map(
5790 <fidl::encoding::BoundedString<64> as fidl::encoding::ValueTypeMarker>::borrow,
5791 ),
5792 encoder,
5793 offset + cur_offset,
5794 depth,
5795 )?;
5796
5797 _prev_end_offset = cur_offset + envelope_size;
5798 if 2 > max_ordinal {
5799 return Ok(());
5800 }
5801
5802 let cur_offset: usize = (2 - 1) * envelope_size;
5805
5806 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5808
5809 fidl::encoding::encode_in_envelope_optional::<
5814 u8,
5815 fidl::encoding::DefaultFuchsiaResourceDialect,
5816 >(
5817 self.initial_current_level
5818 .as_ref()
5819 .map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
5820 encoder,
5821 offset + cur_offset,
5822 depth,
5823 )?;
5824
5825 _prev_end_offset = cur_offset + envelope_size;
5826 if 3 > max_ordinal {
5827 return Ok(());
5828 }
5829
5830 let cur_offset: usize = (3 - 1) * envelope_size;
5833
5834 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5836
5837 fidl::encoding::encode_in_envelope_optional::<
5842 fidl::encoding::Vector<u8, 256>,
5843 fidl::encoding::DefaultFuchsiaResourceDialect,
5844 >(
5845 self.valid_levels.as_ref().map(
5846 <fidl::encoding::Vector<u8, 256> as fidl::encoding::ValueTypeMarker>::borrow,
5847 ),
5848 encoder,
5849 offset + cur_offset,
5850 depth,
5851 )?;
5852
5853 _prev_end_offset = cur_offset + envelope_size;
5854 if 4 > max_ordinal {
5855 return Ok(());
5856 }
5857
5858 let cur_offset: usize = (4 - 1) * envelope_size;
5861
5862 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5864
5865 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<LevelDependency, 128>, fidl::encoding::DefaultFuchsiaResourceDialect>(
5870 self.dependencies.as_mut().map(<fidl::encoding::Vector<LevelDependency, 128> as fidl::encoding::ResourceTypeMarker>::take_or_borrow),
5871 encoder, offset + cur_offset, depth
5872 )?;
5873
5874 _prev_end_offset = cur_offset + envelope_size;
5875 if 8 > max_ordinal {
5876 return Ok(());
5877 }
5878
5879 let cur_offset: usize = (8 - 1) * envelope_size;
5882
5883 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5885
5886 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<LessorMarker>>, fidl::encoding::DefaultFuchsiaResourceDialect>(
5891 self.lessor_channel.as_mut().map(<fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<LessorMarker>> as fidl::encoding::ResourceTypeMarker>::take_or_borrow),
5892 encoder, offset + cur_offset, depth
5893 )?;
5894
5895 _prev_end_offset = cur_offset + envelope_size;
5896 if 9 > max_ordinal {
5897 return Ok(());
5898 }
5899
5900 let cur_offset: usize = (9 - 1) * envelope_size;
5903
5904 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5906
5907 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<ElementControlMarker>>, fidl::encoding::DefaultFuchsiaResourceDialect>(
5912 self.element_control.as_mut().map(<fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<ElementControlMarker>> as fidl::encoding::ResourceTypeMarker>::take_or_borrow),
5913 encoder, offset + cur_offset, depth
5914 )?;
5915
5916 _prev_end_offset = cur_offset + envelope_size;
5917 if 10 > max_ordinal {
5918 return Ok(());
5919 }
5920
5921 let cur_offset: usize = (10 - 1) * envelope_size;
5924
5925 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5927
5928 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<ElementRunnerMarker>>, fidl::encoding::DefaultFuchsiaResourceDialect>(
5933 self.element_runner.as_mut().map(<fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<ElementRunnerMarker>> as fidl::encoding::ResourceTypeMarker>::take_or_borrow),
5934 encoder, offset + cur_offset, depth
5935 )?;
5936
5937 _prev_end_offset = cur_offset + envelope_size;
5938
5939 Ok(())
5940 }
5941 }
5942
5943 impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect> for ElementSchema {
5944 #[inline(always)]
5945 fn new_empty() -> Self {
5946 Self::default()
5947 }
5948
5949 unsafe fn decode(
5950 &mut self,
5951 decoder: &mut fidl::encoding::Decoder<
5952 '_,
5953 fidl::encoding::DefaultFuchsiaResourceDialect,
5954 >,
5955 offset: usize,
5956 mut depth: fidl::encoding::Depth,
5957 ) -> fidl::Result<()> {
5958 decoder.debug_check_bounds::<Self>(offset);
5959 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
5960 None => return Err(fidl::Error::NotNullable),
5961 Some(len) => len,
5962 };
5963 if len == 0 {
5965 return Ok(());
5966 };
5967 depth.increment()?;
5968 let envelope_size = 8;
5969 let bytes_len = len * envelope_size;
5970 let offset = decoder.out_of_line_offset(bytes_len)?;
5971 let mut _next_ordinal_to_read = 0;
5973 let mut next_offset = offset;
5974 let end_offset = offset + bytes_len;
5975 _next_ordinal_to_read += 1;
5976 if next_offset >= end_offset {
5977 return Ok(());
5978 }
5979
5980 while _next_ordinal_to_read < 1 {
5982 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5983 _next_ordinal_to_read += 1;
5984 next_offset += envelope_size;
5985 }
5986
5987 let next_out_of_line = decoder.next_out_of_line();
5988 let handles_before = decoder.remaining_handles();
5989 if let Some((inlined, num_bytes, num_handles)) =
5990 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5991 {
5992 let member_inline_size =
5993 <fidl::encoding::BoundedString<64> as fidl::encoding::TypeMarker>::inline_size(
5994 decoder.context,
5995 );
5996 if inlined != (member_inline_size <= 4) {
5997 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5998 }
5999 let inner_offset;
6000 let mut inner_depth = depth.clone();
6001 if inlined {
6002 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6003 inner_offset = next_offset;
6004 } else {
6005 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6006 inner_depth.increment()?;
6007 }
6008 let val_ref = self.element_name.get_or_insert_with(|| {
6009 fidl::new_empty!(
6010 fidl::encoding::BoundedString<64>,
6011 fidl::encoding::DefaultFuchsiaResourceDialect
6012 )
6013 });
6014 fidl::decode!(
6015 fidl::encoding::BoundedString<64>,
6016 fidl::encoding::DefaultFuchsiaResourceDialect,
6017 val_ref,
6018 decoder,
6019 inner_offset,
6020 inner_depth
6021 )?;
6022 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6023 {
6024 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6025 }
6026 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6027 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6028 }
6029 }
6030
6031 next_offset += envelope_size;
6032 _next_ordinal_to_read += 1;
6033 if next_offset >= end_offset {
6034 return Ok(());
6035 }
6036
6037 while _next_ordinal_to_read < 2 {
6039 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6040 _next_ordinal_to_read += 1;
6041 next_offset += envelope_size;
6042 }
6043
6044 let next_out_of_line = decoder.next_out_of_line();
6045 let handles_before = decoder.remaining_handles();
6046 if let Some((inlined, num_bytes, num_handles)) =
6047 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6048 {
6049 let member_inline_size =
6050 <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6051 if inlined != (member_inline_size <= 4) {
6052 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6053 }
6054 let inner_offset;
6055 let mut inner_depth = depth.clone();
6056 if inlined {
6057 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6058 inner_offset = next_offset;
6059 } else {
6060 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6061 inner_depth.increment()?;
6062 }
6063 let val_ref = self.initial_current_level.get_or_insert_with(|| {
6064 fidl::new_empty!(u8, fidl::encoding::DefaultFuchsiaResourceDialect)
6065 });
6066 fidl::decode!(
6067 u8,
6068 fidl::encoding::DefaultFuchsiaResourceDialect,
6069 val_ref,
6070 decoder,
6071 inner_offset,
6072 inner_depth
6073 )?;
6074 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6075 {
6076 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6077 }
6078 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6079 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6080 }
6081 }
6082
6083 next_offset += envelope_size;
6084 _next_ordinal_to_read += 1;
6085 if next_offset >= end_offset {
6086 return Ok(());
6087 }
6088
6089 while _next_ordinal_to_read < 3 {
6091 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6092 _next_ordinal_to_read += 1;
6093 next_offset += envelope_size;
6094 }
6095
6096 let next_out_of_line = decoder.next_out_of_line();
6097 let handles_before = decoder.remaining_handles();
6098 if let Some((inlined, num_bytes, num_handles)) =
6099 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6100 {
6101 let member_inline_size =
6102 <fidl::encoding::Vector<u8, 256> as fidl::encoding::TypeMarker>::inline_size(
6103 decoder.context,
6104 );
6105 if inlined != (member_inline_size <= 4) {
6106 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6107 }
6108 let inner_offset;
6109 let mut inner_depth = depth.clone();
6110 if inlined {
6111 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6112 inner_offset = next_offset;
6113 } else {
6114 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6115 inner_depth.increment()?;
6116 }
6117 let val_ref =
6118 self.valid_levels.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u8, 256>, fidl::encoding::DefaultFuchsiaResourceDialect));
6119 fidl::decode!(fidl::encoding::Vector<u8, 256>, fidl::encoding::DefaultFuchsiaResourceDialect, val_ref, decoder, inner_offset, inner_depth)?;
6120 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6121 {
6122 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6123 }
6124 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6125 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6126 }
6127 }
6128
6129 next_offset += envelope_size;
6130 _next_ordinal_to_read += 1;
6131 if next_offset >= end_offset {
6132 return Ok(());
6133 }
6134
6135 while _next_ordinal_to_read < 4 {
6137 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6138 _next_ordinal_to_read += 1;
6139 next_offset += envelope_size;
6140 }
6141
6142 let next_out_of_line = decoder.next_out_of_line();
6143 let handles_before = decoder.remaining_handles();
6144 if let Some((inlined, num_bytes, num_handles)) =
6145 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6146 {
6147 let member_inline_size = <fidl::encoding::Vector<LevelDependency, 128> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6148 if inlined != (member_inline_size <= 4) {
6149 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6150 }
6151 let inner_offset;
6152 let mut inner_depth = depth.clone();
6153 if inlined {
6154 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6155 inner_offset = next_offset;
6156 } else {
6157 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6158 inner_depth.increment()?;
6159 }
6160 let val_ref =
6161 self.dependencies.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<LevelDependency, 128>, fidl::encoding::DefaultFuchsiaResourceDialect));
6162 fidl::decode!(fidl::encoding::Vector<LevelDependency, 128>, fidl::encoding::DefaultFuchsiaResourceDialect, val_ref, decoder, inner_offset, inner_depth)?;
6163 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6164 {
6165 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6166 }
6167 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6168 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6169 }
6170 }
6171
6172 next_offset += envelope_size;
6173 _next_ordinal_to_read += 1;
6174 if next_offset >= end_offset {
6175 return Ok(());
6176 }
6177
6178 while _next_ordinal_to_read < 8 {
6180 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6181 _next_ordinal_to_read += 1;
6182 next_offset += envelope_size;
6183 }
6184
6185 let next_out_of_line = decoder.next_out_of_line();
6186 let handles_before = decoder.remaining_handles();
6187 if let Some((inlined, num_bytes, num_handles)) =
6188 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6189 {
6190 let member_inline_size = <fidl::encoding::Endpoint<
6191 fidl::endpoints::ServerEnd<LessorMarker>,
6192 > as fidl::encoding::TypeMarker>::inline_size(
6193 decoder.context
6194 );
6195 if inlined != (member_inline_size <= 4) {
6196 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6197 }
6198 let inner_offset;
6199 let mut inner_depth = depth.clone();
6200 if inlined {
6201 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6202 inner_offset = next_offset;
6203 } else {
6204 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6205 inner_depth.increment()?;
6206 }
6207 let val_ref = self.lessor_channel.get_or_insert_with(|| {
6208 fidl::new_empty!(
6209 fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<LessorMarker>>,
6210 fidl::encoding::DefaultFuchsiaResourceDialect
6211 )
6212 });
6213 fidl::decode!(
6214 fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<LessorMarker>>,
6215 fidl::encoding::DefaultFuchsiaResourceDialect,
6216 val_ref,
6217 decoder,
6218 inner_offset,
6219 inner_depth
6220 )?;
6221 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6222 {
6223 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6224 }
6225 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6226 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6227 }
6228 }
6229
6230 next_offset += envelope_size;
6231 _next_ordinal_to_read += 1;
6232 if next_offset >= end_offset {
6233 return Ok(());
6234 }
6235
6236 while _next_ordinal_to_read < 9 {
6238 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6239 _next_ordinal_to_read += 1;
6240 next_offset += envelope_size;
6241 }
6242
6243 let next_out_of_line = decoder.next_out_of_line();
6244 let handles_before = decoder.remaining_handles();
6245 if let Some((inlined, num_bytes, num_handles)) =
6246 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6247 {
6248 let member_inline_size = <fidl::encoding::Endpoint<
6249 fidl::endpoints::ServerEnd<ElementControlMarker>,
6250 > as fidl::encoding::TypeMarker>::inline_size(
6251 decoder.context
6252 );
6253 if inlined != (member_inline_size <= 4) {
6254 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6255 }
6256 let inner_offset;
6257 let mut inner_depth = depth.clone();
6258 if inlined {
6259 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6260 inner_offset = next_offset;
6261 } else {
6262 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6263 inner_depth.increment()?;
6264 }
6265 let val_ref = self.element_control.get_or_insert_with(|| {
6266 fidl::new_empty!(
6267 fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<ElementControlMarker>>,
6268 fidl::encoding::DefaultFuchsiaResourceDialect
6269 )
6270 });
6271 fidl::decode!(
6272 fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<ElementControlMarker>>,
6273 fidl::encoding::DefaultFuchsiaResourceDialect,
6274 val_ref,
6275 decoder,
6276 inner_offset,
6277 inner_depth
6278 )?;
6279 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6280 {
6281 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6282 }
6283 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6284 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6285 }
6286 }
6287
6288 next_offset += envelope_size;
6289 _next_ordinal_to_read += 1;
6290 if next_offset >= end_offset {
6291 return Ok(());
6292 }
6293
6294 while _next_ordinal_to_read < 10 {
6296 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6297 _next_ordinal_to_read += 1;
6298 next_offset += envelope_size;
6299 }
6300
6301 let next_out_of_line = decoder.next_out_of_line();
6302 let handles_before = decoder.remaining_handles();
6303 if let Some((inlined, num_bytes, num_handles)) =
6304 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6305 {
6306 let member_inline_size = <fidl::encoding::Endpoint<
6307 fidl::endpoints::ClientEnd<ElementRunnerMarker>,
6308 > as fidl::encoding::TypeMarker>::inline_size(
6309 decoder.context
6310 );
6311 if inlined != (member_inline_size <= 4) {
6312 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6313 }
6314 let inner_offset;
6315 let mut inner_depth = depth.clone();
6316 if inlined {
6317 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6318 inner_offset = next_offset;
6319 } else {
6320 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6321 inner_depth.increment()?;
6322 }
6323 let val_ref = self.element_runner.get_or_insert_with(|| {
6324 fidl::new_empty!(
6325 fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<ElementRunnerMarker>>,
6326 fidl::encoding::DefaultFuchsiaResourceDialect
6327 )
6328 });
6329 fidl::decode!(
6330 fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<ElementRunnerMarker>>,
6331 fidl::encoding::DefaultFuchsiaResourceDialect,
6332 val_ref,
6333 decoder,
6334 inner_offset,
6335 inner_depth
6336 )?;
6337 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6338 {
6339 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6340 }
6341 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6342 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6343 }
6344 }
6345
6346 next_offset += envelope_size;
6347
6348 while next_offset < end_offset {
6350 _next_ordinal_to_read += 1;
6351 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6352 next_offset += envelope_size;
6353 }
6354
6355 Ok(())
6356 }
6357 }
6358
6359 impl ElementStatusEndpoint {
6360 #[inline(always)]
6361 fn max_ordinal_present(&self) -> u64 {
6362 if let Some(_) = self.status {
6363 return 2;
6364 }
6365 if let Some(_) = self.identifier {
6366 return 1;
6367 }
6368 0
6369 }
6370 }
6371
6372 impl fidl::encoding::ResourceTypeMarker for ElementStatusEndpoint {
6373 type Borrowed<'a> = &'a mut Self;
6374 fn take_or_borrow<'a>(
6375 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
6376 ) -> Self::Borrowed<'a> {
6377 value
6378 }
6379 }
6380
6381 unsafe impl fidl::encoding::TypeMarker for ElementStatusEndpoint {
6382 type Owned = Self;
6383
6384 #[inline(always)]
6385 fn inline_align(_context: fidl::encoding::Context) -> usize {
6386 8
6387 }
6388
6389 #[inline(always)]
6390 fn inline_size(_context: fidl::encoding::Context) -> usize {
6391 16
6392 }
6393 }
6394
6395 unsafe impl
6396 fidl::encoding::Encode<ElementStatusEndpoint, fidl::encoding::DefaultFuchsiaResourceDialect>
6397 for &mut ElementStatusEndpoint
6398 {
6399 unsafe fn encode(
6400 self,
6401 encoder: &mut fidl::encoding::Encoder<
6402 '_,
6403 fidl::encoding::DefaultFuchsiaResourceDialect,
6404 >,
6405 offset: usize,
6406 mut depth: fidl::encoding::Depth,
6407 ) -> fidl::Result<()> {
6408 encoder.debug_check_bounds::<ElementStatusEndpoint>(offset);
6409 let max_ordinal: u64 = self.max_ordinal_present();
6411 encoder.write_num(max_ordinal, offset);
6412 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
6413 if max_ordinal == 0 {
6415 return Ok(());
6416 }
6417 depth.increment()?;
6418 let envelope_size = 8;
6419 let bytes_len = max_ordinal as usize * envelope_size;
6420 #[allow(unused_variables)]
6421 let offset = encoder.out_of_line_offset(bytes_len);
6422 let mut _prev_end_offset: usize = 0;
6423 if 1 > max_ordinal {
6424 return Ok(());
6425 }
6426
6427 let cur_offset: usize = (1 - 1) * envelope_size;
6430
6431 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6433
6434 fidl::encoding::encode_in_envelope_optional::<
6439 fidl::encoding::BoundedString<64>,
6440 fidl::encoding::DefaultFuchsiaResourceDialect,
6441 >(
6442 self.identifier.as_ref().map(
6443 <fidl::encoding::BoundedString<64> as fidl::encoding::ValueTypeMarker>::borrow,
6444 ),
6445 encoder,
6446 offset + cur_offset,
6447 depth,
6448 )?;
6449
6450 _prev_end_offset = cur_offset + envelope_size;
6451 if 2 > max_ordinal {
6452 return Ok(());
6453 }
6454
6455 let cur_offset: usize = (2 - 1) * envelope_size;
6458
6459 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6461
6462 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<StatusMarker>>, fidl::encoding::DefaultFuchsiaResourceDialect>(
6467 self.status.as_mut().map(<fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<StatusMarker>> as fidl::encoding::ResourceTypeMarker>::take_or_borrow),
6468 encoder, offset + cur_offset, depth
6469 )?;
6470
6471 _prev_end_offset = cur_offset + envelope_size;
6472
6473 Ok(())
6474 }
6475 }
6476
6477 impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
6478 for ElementStatusEndpoint
6479 {
6480 #[inline(always)]
6481 fn new_empty() -> Self {
6482 Self::default()
6483 }
6484
6485 unsafe fn decode(
6486 &mut self,
6487 decoder: &mut fidl::encoding::Decoder<
6488 '_,
6489 fidl::encoding::DefaultFuchsiaResourceDialect,
6490 >,
6491 offset: usize,
6492 mut depth: fidl::encoding::Depth,
6493 ) -> fidl::Result<()> {
6494 decoder.debug_check_bounds::<Self>(offset);
6495 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
6496 None => return Err(fidl::Error::NotNullable),
6497 Some(len) => len,
6498 };
6499 if len == 0 {
6501 return Ok(());
6502 };
6503 depth.increment()?;
6504 let envelope_size = 8;
6505 let bytes_len = len * envelope_size;
6506 let offset = decoder.out_of_line_offset(bytes_len)?;
6507 let mut _next_ordinal_to_read = 0;
6509 let mut next_offset = offset;
6510 let end_offset = offset + bytes_len;
6511 _next_ordinal_to_read += 1;
6512 if next_offset >= end_offset {
6513 return Ok(());
6514 }
6515
6516 while _next_ordinal_to_read < 1 {
6518 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6519 _next_ordinal_to_read += 1;
6520 next_offset += envelope_size;
6521 }
6522
6523 let next_out_of_line = decoder.next_out_of_line();
6524 let handles_before = decoder.remaining_handles();
6525 if let Some((inlined, num_bytes, num_handles)) =
6526 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6527 {
6528 let member_inline_size =
6529 <fidl::encoding::BoundedString<64> as fidl::encoding::TypeMarker>::inline_size(
6530 decoder.context,
6531 );
6532 if inlined != (member_inline_size <= 4) {
6533 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6534 }
6535 let inner_offset;
6536 let mut inner_depth = depth.clone();
6537 if inlined {
6538 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6539 inner_offset = next_offset;
6540 } else {
6541 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6542 inner_depth.increment()?;
6543 }
6544 let val_ref = self.identifier.get_or_insert_with(|| {
6545 fidl::new_empty!(
6546 fidl::encoding::BoundedString<64>,
6547 fidl::encoding::DefaultFuchsiaResourceDialect
6548 )
6549 });
6550 fidl::decode!(
6551 fidl::encoding::BoundedString<64>,
6552 fidl::encoding::DefaultFuchsiaResourceDialect,
6553 val_ref,
6554 decoder,
6555 inner_offset,
6556 inner_depth
6557 )?;
6558 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6559 {
6560 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6561 }
6562 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6563 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6564 }
6565 }
6566
6567 next_offset += envelope_size;
6568 _next_ordinal_to_read += 1;
6569 if next_offset >= end_offset {
6570 return Ok(());
6571 }
6572
6573 while _next_ordinal_to_read < 2 {
6575 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6576 _next_ordinal_to_read += 1;
6577 next_offset += envelope_size;
6578 }
6579
6580 let next_out_of_line = decoder.next_out_of_line();
6581 let handles_before = decoder.remaining_handles();
6582 if let Some((inlined, num_bytes, num_handles)) =
6583 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6584 {
6585 let member_inline_size = <fidl::encoding::Endpoint<
6586 fidl::endpoints::ClientEnd<StatusMarker>,
6587 > as fidl::encoding::TypeMarker>::inline_size(
6588 decoder.context
6589 );
6590 if inlined != (member_inline_size <= 4) {
6591 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6592 }
6593 let inner_offset;
6594 let mut inner_depth = depth.clone();
6595 if inlined {
6596 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6597 inner_offset = next_offset;
6598 } else {
6599 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6600 inner_depth.increment()?;
6601 }
6602 let val_ref = self.status.get_or_insert_with(|| {
6603 fidl::new_empty!(
6604 fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<StatusMarker>>,
6605 fidl::encoding::DefaultFuchsiaResourceDialect
6606 )
6607 });
6608 fidl::decode!(
6609 fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<StatusMarker>>,
6610 fidl::encoding::DefaultFuchsiaResourceDialect,
6611 val_ref,
6612 decoder,
6613 inner_offset,
6614 inner_depth
6615 )?;
6616 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6617 {
6618 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6619 }
6620 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6621 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6622 }
6623 }
6624
6625 next_offset += envelope_size;
6626
6627 while next_offset < end_offset {
6629 _next_ordinal_to_read += 1;
6630 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6631 next_offset += envelope_size;
6632 }
6633
6634 Ok(())
6635 }
6636 }
6637
6638 impl LeaseDependency {
6639 #[inline(always)]
6640 fn max_ordinal_present(&self) -> u64 {
6641 if let Some(_) = self.requires_level_by_preference {
6642 return 3;
6643 }
6644 if let Some(_) = self.requires_level {
6645 return 2;
6646 }
6647 if let Some(_) = self.requires_token {
6648 return 1;
6649 }
6650 0
6651 }
6652 }
6653
6654 impl fidl::encoding::ResourceTypeMarker for LeaseDependency {
6655 type Borrowed<'a> = &'a mut Self;
6656 fn take_or_borrow<'a>(
6657 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
6658 ) -> Self::Borrowed<'a> {
6659 value
6660 }
6661 }
6662
6663 unsafe impl fidl::encoding::TypeMarker for LeaseDependency {
6664 type Owned = Self;
6665
6666 #[inline(always)]
6667 fn inline_align(_context: fidl::encoding::Context) -> usize {
6668 8
6669 }
6670
6671 #[inline(always)]
6672 fn inline_size(_context: fidl::encoding::Context) -> usize {
6673 16
6674 }
6675 }
6676
6677 unsafe impl
6678 fidl::encoding::Encode<LeaseDependency, fidl::encoding::DefaultFuchsiaResourceDialect>
6679 for &mut LeaseDependency
6680 {
6681 unsafe fn encode(
6682 self,
6683 encoder: &mut fidl::encoding::Encoder<
6684 '_,
6685 fidl::encoding::DefaultFuchsiaResourceDialect,
6686 >,
6687 offset: usize,
6688 mut depth: fidl::encoding::Depth,
6689 ) -> fidl::Result<()> {
6690 encoder.debug_check_bounds::<LeaseDependency>(offset);
6691 let max_ordinal: u64 = self.max_ordinal_present();
6693 encoder.write_num(max_ordinal, offset);
6694 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
6695 if max_ordinal == 0 {
6697 return Ok(());
6698 }
6699 depth.increment()?;
6700 let envelope_size = 8;
6701 let bytes_len = max_ordinal as usize * envelope_size;
6702 #[allow(unused_variables)]
6703 let offset = encoder.out_of_line_offset(bytes_len);
6704 let mut _prev_end_offset: usize = 0;
6705 if 1 > max_ordinal {
6706 return Ok(());
6707 }
6708
6709 let cur_offset: usize = (1 - 1) * envelope_size;
6712
6713 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6715
6716 fidl::encoding::encode_in_envelope_optional::<
6721 fidl::encoding::HandleType<
6722 fidl::Event,
6723 { fidl::ObjectType::EVENT.into_raw() },
6724 2147483648,
6725 >,
6726 fidl::encoding::DefaultFuchsiaResourceDialect,
6727 >(
6728 self.requires_token.as_mut().map(
6729 <fidl::encoding::HandleType<
6730 fidl::Event,
6731 { fidl::ObjectType::EVENT.into_raw() },
6732 2147483648,
6733 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow,
6734 ),
6735 encoder,
6736 offset + cur_offset,
6737 depth,
6738 )?;
6739
6740 _prev_end_offset = cur_offset + envelope_size;
6741 if 2 > max_ordinal {
6742 return Ok(());
6743 }
6744
6745 let cur_offset: usize = (2 - 1) * envelope_size;
6748
6749 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6751
6752 fidl::encoding::encode_in_envelope_optional::<
6757 u8,
6758 fidl::encoding::DefaultFuchsiaResourceDialect,
6759 >(
6760 self.requires_level.as_ref().map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
6761 encoder,
6762 offset + cur_offset,
6763 depth,
6764 )?;
6765
6766 _prev_end_offset = cur_offset + envelope_size;
6767 if 3 > max_ordinal {
6768 return Ok(());
6769 }
6770
6771 let cur_offset: usize = (3 - 1) * envelope_size;
6774
6775 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6777
6778 fidl::encoding::encode_in_envelope_optional::<
6783 fidl::encoding::Vector<u8, 256>,
6784 fidl::encoding::DefaultFuchsiaResourceDialect,
6785 >(
6786 self.requires_level_by_preference.as_ref().map(
6787 <fidl::encoding::Vector<u8, 256> as fidl::encoding::ValueTypeMarker>::borrow,
6788 ),
6789 encoder,
6790 offset + cur_offset,
6791 depth,
6792 )?;
6793
6794 _prev_end_offset = cur_offset + envelope_size;
6795
6796 Ok(())
6797 }
6798 }
6799
6800 impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
6801 for LeaseDependency
6802 {
6803 #[inline(always)]
6804 fn new_empty() -> Self {
6805 Self::default()
6806 }
6807
6808 unsafe fn decode(
6809 &mut self,
6810 decoder: &mut fidl::encoding::Decoder<
6811 '_,
6812 fidl::encoding::DefaultFuchsiaResourceDialect,
6813 >,
6814 offset: usize,
6815 mut depth: fidl::encoding::Depth,
6816 ) -> fidl::Result<()> {
6817 decoder.debug_check_bounds::<Self>(offset);
6818 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
6819 None => return Err(fidl::Error::NotNullable),
6820 Some(len) => len,
6821 };
6822 if len == 0 {
6824 return Ok(());
6825 };
6826 depth.increment()?;
6827 let envelope_size = 8;
6828 let bytes_len = len * envelope_size;
6829 let offset = decoder.out_of_line_offset(bytes_len)?;
6830 let mut _next_ordinal_to_read = 0;
6832 let mut next_offset = offset;
6833 let end_offset = offset + bytes_len;
6834 _next_ordinal_to_read += 1;
6835 if next_offset >= end_offset {
6836 return Ok(());
6837 }
6838
6839 while _next_ordinal_to_read < 1 {
6841 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6842 _next_ordinal_to_read += 1;
6843 next_offset += envelope_size;
6844 }
6845
6846 let next_out_of_line = decoder.next_out_of_line();
6847 let handles_before = decoder.remaining_handles();
6848 if let Some((inlined, num_bytes, num_handles)) =
6849 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6850 {
6851 let member_inline_size = <fidl::encoding::HandleType<
6852 fidl::Event,
6853 { fidl::ObjectType::EVENT.into_raw() },
6854 2147483648,
6855 > as fidl::encoding::TypeMarker>::inline_size(
6856 decoder.context
6857 );
6858 if inlined != (member_inline_size <= 4) {
6859 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6860 }
6861 let inner_offset;
6862 let mut inner_depth = depth.clone();
6863 if inlined {
6864 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6865 inner_offset = next_offset;
6866 } else {
6867 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6868 inner_depth.increment()?;
6869 }
6870 let val_ref =
6871 self.requires_token.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::HandleType<fidl::Event, { fidl::ObjectType::EVENT.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect));
6872 fidl::decode!(fidl::encoding::HandleType<fidl::Event, { fidl::ObjectType::EVENT.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect, val_ref, decoder, inner_offset, inner_depth)?;
6873 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6874 {
6875 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6876 }
6877 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6878 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6879 }
6880 }
6881
6882 next_offset += envelope_size;
6883 _next_ordinal_to_read += 1;
6884 if next_offset >= end_offset {
6885 return Ok(());
6886 }
6887
6888 while _next_ordinal_to_read < 2 {
6890 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6891 _next_ordinal_to_read += 1;
6892 next_offset += envelope_size;
6893 }
6894
6895 let next_out_of_line = decoder.next_out_of_line();
6896 let handles_before = decoder.remaining_handles();
6897 if let Some((inlined, num_bytes, num_handles)) =
6898 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6899 {
6900 let member_inline_size =
6901 <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6902 if inlined != (member_inline_size <= 4) {
6903 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6904 }
6905 let inner_offset;
6906 let mut inner_depth = depth.clone();
6907 if inlined {
6908 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6909 inner_offset = next_offset;
6910 } else {
6911 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6912 inner_depth.increment()?;
6913 }
6914 let val_ref = self.requires_level.get_or_insert_with(|| {
6915 fidl::new_empty!(u8, fidl::encoding::DefaultFuchsiaResourceDialect)
6916 });
6917 fidl::decode!(
6918 u8,
6919 fidl::encoding::DefaultFuchsiaResourceDialect,
6920 val_ref,
6921 decoder,
6922 inner_offset,
6923 inner_depth
6924 )?;
6925 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6926 {
6927 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6928 }
6929 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6930 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6931 }
6932 }
6933
6934 next_offset += envelope_size;
6935 _next_ordinal_to_read += 1;
6936 if next_offset >= end_offset {
6937 return Ok(());
6938 }
6939
6940 while _next_ordinal_to_read < 3 {
6942 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6943 _next_ordinal_to_read += 1;
6944 next_offset += envelope_size;
6945 }
6946
6947 let next_out_of_line = decoder.next_out_of_line();
6948 let handles_before = decoder.remaining_handles();
6949 if let Some((inlined, num_bytes, num_handles)) =
6950 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6951 {
6952 let member_inline_size =
6953 <fidl::encoding::Vector<u8, 256> as fidl::encoding::TypeMarker>::inline_size(
6954 decoder.context,
6955 );
6956 if inlined != (member_inline_size <= 4) {
6957 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6958 }
6959 let inner_offset;
6960 let mut inner_depth = depth.clone();
6961 if inlined {
6962 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6963 inner_offset = next_offset;
6964 } else {
6965 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6966 inner_depth.increment()?;
6967 }
6968 let val_ref =
6969 self.requires_level_by_preference.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u8, 256>, fidl::encoding::DefaultFuchsiaResourceDialect));
6970 fidl::decode!(fidl::encoding::Vector<u8, 256>, fidl::encoding::DefaultFuchsiaResourceDialect, val_ref, decoder, inner_offset, inner_depth)?;
6971 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6972 {
6973 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6974 }
6975 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6976 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6977 }
6978 }
6979
6980 next_offset += envelope_size;
6981
6982 while next_offset < end_offset {
6984 _next_ordinal_to_read += 1;
6985 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6986 next_offset += envelope_size;
6987 }
6988
6989 Ok(())
6990 }
6991 }
6992
6993 impl LeaseSchema {
6994 #[inline(always)]
6995 fn max_ordinal_present(&self) -> u64 {
6996 if let Some(_) = self.should_return_pending_lease {
6997 return 4;
6998 }
6999 if let Some(_) = self.dependencies {
7000 return 3;
7001 }
7002 if let Some(_) = self.lease_name {
7003 return 2;
7004 }
7005 if let Some(_) = self.lease_token {
7006 return 1;
7007 }
7008 0
7009 }
7010 }
7011
7012 impl fidl::encoding::ResourceTypeMarker for LeaseSchema {
7013 type Borrowed<'a> = &'a mut Self;
7014 fn take_or_borrow<'a>(
7015 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
7016 ) -> Self::Borrowed<'a> {
7017 value
7018 }
7019 }
7020
7021 unsafe impl fidl::encoding::TypeMarker for LeaseSchema {
7022 type Owned = Self;
7023
7024 #[inline(always)]
7025 fn inline_align(_context: fidl::encoding::Context) -> usize {
7026 8
7027 }
7028
7029 #[inline(always)]
7030 fn inline_size(_context: fidl::encoding::Context) -> usize {
7031 16
7032 }
7033 }
7034
7035 unsafe impl fidl::encoding::Encode<LeaseSchema, fidl::encoding::DefaultFuchsiaResourceDialect>
7036 for &mut LeaseSchema
7037 {
7038 unsafe fn encode(
7039 self,
7040 encoder: &mut fidl::encoding::Encoder<
7041 '_,
7042 fidl::encoding::DefaultFuchsiaResourceDialect,
7043 >,
7044 offset: usize,
7045 mut depth: fidl::encoding::Depth,
7046 ) -> fidl::Result<()> {
7047 encoder.debug_check_bounds::<LeaseSchema>(offset);
7048 let max_ordinal: u64 = self.max_ordinal_present();
7050 encoder.write_num(max_ordinal, offset);
7051 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
7052 if max_ordinal == 0 {
7054 return Ok(());
7055 }
7056 depth.increment()?;
7057 let envelope_size = 8;
7058 let bytes_len = max_ordinal as usize * envelope_size;
7059 #[allow(unused_variables)]
7060 let offset = encoder.out_of_line_offset(bytes_len);
7061 let mut _prev_end_offset: usize = 0;
7062 if 1 > max_ordinal {
7063 return Ok(());
7064 }
7065
7066 let cur_offset: usize = (1 - 1) * envelope_size;
7069
7070 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7072
7073 fidl::encoding::encode_in_envelope_optional::<
7078 fidl::encoding::HandleType<
7079 fidl::EventPair,
7080 { fidl::ObjectType::EVENTPAIR.into_raw() },
7081 24579,
7082 >,
7083 fidl::encoding::DefaultFuchsiaResourceDialect,
7084 >(
7085 self.lease_token.as_mut().map(
7086 <fidl::encoding::HandleType<
7087 fidl::EventPair,
7088 { fidl::ObjectType::EVENTPAIR.into_raw() },
7089 24579,
7090 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow,
7091 ),
7092 encoder,
7093 offset + cur_offset,
7094 depth,
7095 )?;
7096
7097 _prev_end_offset = cur_offset + envelope_size;
7098 if 2 > max_ordinal {
7099 return Ok(());
7100 }
7101
7102 let cur_offset: usize = (2 - 1) * envelope_size;
7105
7106 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7108
7109 fidl::encoding::encode_in_envelope_optional::<
7114 fidl::encoding::BoundedString<64>,
7115 fidl::encoding::DefaultFuchsiaResourceDialect,
7116 >(
7117 self.lease_name.as_ref().map(
7118 <fidl::encoding::BoundedString<64> as fidl::encoding::ValueTypeMarker>::borrow,
7119 ),
7120 encoder,
7121 offset + cur_offset,
7122 depth,
7123 )?;
7124
7125 _prev_end_offset = cur_offset + envelope_size;
7126 if 3 > max_ordinal {
7127 return Ok(());
7128 }
7129
7130 let cur_offset: usize = (3 - 1) * envelope_size;
7133
7134 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7136
7137 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<LeaseDependency, 128>, fidl::encoding::DefaultFuchsiaResourceDialect>(
7142 self.dependencies.as_mut().map(<fidl::encoding::Vector<LeaseDependency, 128> as fidl::encoding::ResourceTypeMarker>::take_or_borrow),
7143 encoder, offset + cur_offset, depth
7144 )?;
7145
7146 _prev_end_offset = cur_offset + envelope_size;
7147 if 4 > max_ordinal {
7148 return Ok(());
7149 }
7150
7151 let cur_offset: usize = (4 - 1) * envelope_size;
7154
7155 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7157
7158 fidl::encoding::encode_in_envelope_optional::<
7163 bool,
7164 fidl::encoding::DefaultFuchsiaResourceDialect,
7165 >(
7166 self.should_return_pending_lease
7167 .as_ref()
7168 .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
7169 encoder,
7170 offset + cur_offset,
7171 depth,
7172 )?;
7173
7174 _prev_end_offset = cur_offset + envelope_size;
7175
7176 Ok(())
7177 }
7178 }
7179
7180 impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect> for LeaseSchema {
7181 #[inline(always)]
7182 fn new_empty() -> Self {
7183 Self::default()
7184 }
7185
7186 unsafe fn decode(
7187 &mut self,
7188 decoder: &mut fidl::encoding::Decoder<
7189 '_,
7190 fidl::encoding::DefaultFuchsiaResourceDialect,
7191 >,
7192 offset: usize,
7193 mut depth: fidl::encoding::Depth,
7194 ) -> fidl::Result<()> {
7195 decoder.debug_check_bounds::<Self>(offset);
7196 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
7197 None => return Err(fidl::Error::NotNullable),
7198 Some(len) => len,
7199 };
7200 if len == 0 {
7202 return Ok(());
7203 };
7204 depth.increment()?;
7205 let envelope_size = 8;
7206 let bytes_len = len * envelope_size;
7207 let offset = decoder.out_of_line_offset(bytes_len)?;
7208 let mut _next_ordinal_to_read = 0;
7210 let mut next_offset = offset;
7211 let end_offset = offset + bytes_len;
7212 _next_ordinal_to_read += 1;
7213 if next_offset >= end_offset {
7214 return Ok(());
7215 }
7216
7217 while _next_ordinal_to_read < 1 {
7219 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7220 _next_ordinal_to_read += 1;
7221 next_offset += envelope_size;
7222 }
7223
7224 let next_out_of_line = decoder.next_out_of_line();
7225 let handles_before = decoder.remaining_handles();
7226 if let Some((inlined, num_bytes, num_handles)) =
7227 fidl::encoding::decode_envelope_header(decoder, next_offset)?
7228 {
7229 let member_inline_size = <fidl::encoding::HandleType<
7230 fidl::EventPair,
7231 { fidl::ObjectType::EVENTPAIR.into_raw() },
7232 24579,
7233 > as fidl::encoding::TypeMarker>::inline_size(
7234 decoder.context
7235 );
7236 if inlined != (member_inline_size <= 4) {
7237 return Err(fidl::Error::InvalidInlineBitInEnvelope);
7238 }
7239 let inner_offset;
7240 let mut inner_depth = depth.clone();
7241 if inlined {
7242 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7243 inner_offset = next_offset;
7244 } else {
7245 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7246 inner_depth.increment()?;
7247 }
7248 let val_ref =
7249 self.lease_token.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::HandleType<fidl::EventPair, { fidl::ObjectType::EVENTPAIR.into_raw() }, 24579>, fidl::encoding::DefaultFuchsiaResourceDialect));
7250 fidl::decode!(fidl::encoding::HandleType<fidl::EventPair, { fidl::ObjectType::EVENTPAIR.into_raw() }, 24579>, fidl::encoding::DefaultFuchsiaResourceDialect, val_ref, decoder, inner_offset, inner_depth)?;
7251 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7252 {
7253 return Err(fidl::Error::InvalidNumBytesInEnvelope);
7254 }
7255 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7256 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7257 }
7258 }
7259
7260 next_offset += envelope_size;
7261 _next_ordinal_to_read += 1;
7262 if next_offset >= end_offset {
7263 return Ok(());
7264 }
7265
7266 while _next_ordinal_to_read < 2 {
7268 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7269 _next_ordinal_to_read += 1;
7270 next_offset += envelope_size;
7271 }
7272
7273 let next_out_of_line = decoder.next_out_of_line();
7274 let handles_before = decoder.remaining_handles();
7275 if let Some((inlined, num_bytes, num_handles)) =
7276 fidl::encoding::decode_envelope_header(decoder, next_offset)?
7277 {
7278 let member_inline_size =
7279 <fidl::encoding::BoundedString<64> as fidl::encoding::TypeMarker>::inline_size(
7280 decoder.context,
7281 );
7282 if inlined != (member_inline_size <= 4) {
7283 return Err(fidl::Error::InvalidInlineBitInEnvelope);
7284 }
7285 let inner_offset;
7286 let mut inner_depth = depth.clone();
7287 if inlined {
7288 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7289 inner_offset = next_offset;
7290 } else {
7291 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7292 inner_depth.increment()?;
7293 }
7294 let val_ref = self.lease_name.get_or_insert_with(|| {
7295 fidl::new_empty!(
7296 fidl::encoding::BoundedString<64>,
7297 fidl::encoding::DefaultFuchsiaResourceDialect
7298 )
7299 });
7300 fidl::decode!(
7301 fidl::encoding::BoundedString<64>,
7302 fidl::encoding::DefaultFuchsiaResourceDialect,
7303 val_ref,
7304 decoder,
7305 inner_offset,
7306 inner_depth
7307 )?;
7308 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7309 {
7310 return Err(fidl::Error::InvalidNumBytesInEnvelope);
7311 }
7312 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7313 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7314 }
7315 }
7316
7317 next_offset += envelope_size;
7318 _next_ordinal_to_read += 1;
7319 if next_offset >= end_offset {
7320 return Ok(());
7321 }
7322
7323 while _next_ordinal_to_read < 3 {
7325 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7326 _next_ordinal_to_read += 1;
7327 next_offset += envelope_size;
7328 }
7329
7330 let next_out_of_line = decoder.next_out_of_line();
7331 let handles_before = decoder.remaining_handles();
7332 if let Some((inlined, num_bytes, num_handles)) =
7333 fidl::encoding::decode_envelope_header(decoder, next_offset)?
7334 {
7335 let member_inline_size = <fidl::encoding::Vector<LeaseDependency, 128> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7336 if inlined != (member_inline_size <= 4) {
7337 return Err(fidl::Error::InvalidInlineBitInEnvelope);
7338 }
7339 let inner_offset;
7340 let mut inner_depth = depth.clone();
7341 if inlined {
7342 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7343 inner_offset = next_offset;
7344 } else {
7345 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7346 inner_depth.increment()?;
7347 }
7348 let val_ref =
7349 self.dependencies.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<LeaseDependency, 128>, fidl::encoding::DefaultFuchsiaResourceDialect));
7350 fidl::decode!(fidl::encoding::Vector<LeaseDependency, 128>, fidl::encoding::DefaultFuchsiaResourceDialect, val_ref, decoder, inner_offset, inner_depth)?;
7351 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7352 {
7353 return Err(fidl::Error::InvalidNumBytesInEnvelope);
7354 }
7355 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7356 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7357 }
7358 }
7359
7360 next_offset += envelope_size;
7361 _next_ordinal_to_read += 1;
7362 if next_offset >= end_offset {
7363 return Ok(());
7364 }
7365
7366 while _next_ordinal_to_read < 4 {
7368 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7369 _next_ordinal_to_read += 1;
7370 next_offset += envelope_size;
7371 }
7372
7373 let next_out_of_line = decoder.next_out_of_line();
7374 let handles_before = decoder.remaining_handles();
7375 if let Some((inlined, num_bytes, num_handles)) =
7376 fidl::encoding::decode_envelope_header(decoder, next_offset)?
7377 {
7378 let member_inline_size =
7379 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7380 if inlined != (member_inline_size <= 4) {
7381 return Err(fidl::Error::InvalidInlineBitInEnvelope);
7382 }
7383 let inner_offset;
7384 let mut inner_depth = depth.clone();
7385 if inlined {
7386 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7387 inner_offset = next_offset;
7388 } else {
7389 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7390 inner_depth.increment()?;
7391 }
7392 let val_ref = self.should_return_pending_lease.get_or_insert_with(|| {
7393 fidl::new_empty!(bool, fidl::encoding::DefaultFuchsiaResourceDialect)
7394 });
7395 fidl::decode!(
7396 bool,
7397 fidl::encoding::DefaultFuchsiaResourceDialect,
7398 val_ref,
7399 decoder,
7400 inner_offset,
7401 inner_depth
7402 )?;
7403 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7404 {
7405 return Err(fidl::Error::InvalidNumBytesInEnvelope);
7406 }
7407 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7408 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7409 }
7410 }
7411
7412 next_offset += envelope_size;
7413
7414 while next_offset < end_offset {
7416 _next_ordinal_to_read += 1;
7417 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7418 next_offset += envelope_size;
7419 }
7420
7421 Ok(())
7422 }
7423 }
7424}