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