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)]
90#[repr(C)]
91pub struct StatusWatchPowerLevelResponse {
92 pub current_level: u8,
93}
94
95impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect>
96 for StatusWatchPowerLevelResponse
97{
98}
99
100#[derive(Debug, Default, PartialEq)]
102pub struct ElementSchema {
103 pub element_name: Option<String>,
105 pub initial_current_level: Option<u8>,
108 pub valid_levels: Option<Vec<u8>>,
116 pub dependencies: Option<Vec<LevelDependency>>,
119 pub lessor_channel: Option<fidl::endpoints::ServerEnd<LessorMarker>>,
125 pub element_control: Option<fidl::endpoints::ServerEnd<ElementControlMarker>>,
131 pub element_runner: Option<fidl::endpoints::ClientEnd<ElementRunnerMarker>>,
135 pub initial_lease_token: Option<fidl::EventPair>,
148 #[doc(hidden)]
149 pub __source_breaking: fidl::marker::SourceBreaking,
150}
151
152impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect> for ElementSchema {}
153
154#[derive(Debug, Default, PartialEq)]
158pub struct ElementStatusEndpoint {
159 pub identifier: Option<String>,
160 pub status: Option<fidl::endpoints::ClientEnd<StatusMarker>>,
161 #[doc(hidden)]
162 pub __source_breaking: fidl::marker::SourceBreaking,
163}
164
165impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect> for ElementStatusEndpoint {}
166
167#[derive(Debug, Default, PartialEq)]
168pub struct LeaseDependency {
169 pub requires_token: Option<fidl::Event>,
172 pub requires_level: Option<u8>,
176 pub requires_level_by_preference: Option<Vec<u8>>,
188 #[doc(hidden)]
189 pub __source_breaking: fidl::marker::SourceBreaking,
190}
191
192impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect> for LeaseDependency {}
193
194#[derive(Debug, Default, PartialEq)]
196pub struct LeaseSchema {
197 pub lease_token: Option<fidl::EventPair>,
201 pub lease_name: Option<String>,
203 pub dependencies: Option<Vec<LeaseDependency>>,
205 pub should_return_pending_lease: Option<bool>,
211 #[doc(hidden)]
212 pub __source_breaking: fidl::marker::SourceBreaking,
213}
214
215impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect> for LeaseSchema {}
216
217#[derive(Debug, Default, PartialEq)]
232pub struct LevelDependency {
233 pub dependent_level: Option<u8>,
237 pub requires_token: Option<fidl::Event>,
240 pub requires_level_by_preference: Option<Vec<u8>>,
249 pub remove_with_required_element: Option<bool>,
252 #[doc(hidden)]
253 pub __source_breaking: fidl::marker::SourceBreaking,
254}
255
256impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect> for LevelDependency {}
257
258#[derive(Debug, Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash)]
259pub struct ElementControlMarker;
260
261impl fidl::endpoints::ProtocolMarker for ElementControlMarker {
262 type Proxy = ElementControlProxy;
263 type RequestStream = ElementControlRequestStream;
264 #[cfg(target_os = "fuchsia")]
265 type SynchronousProxy = ElementControlSynchronousProxy;
266
267 const DEBUG_NAME: &'static str = "(anonymous) ElementControl";
268}
269pub type ElementControlRegisterDependencyTokenResult = Result<(), RegisterDependencyTokenError>;
270pub type ElementControlUnregisterDependencyTokenResult = Result<(), UnregisterDependencyTokenError>;
271pub type ElementControlAddDependencyResult = Result<(), ModifyDependencyError>;
272
273pub trait ElementControlProxyInterface: Send + Sync {
274 fn r#open_status_channel(
275 &self,
276 status_channel: fidl::endpoints::ServerEnd<StatusMarker>,
277 ) -> Result<(), fidl::Error>;
278 type RegisterDependencyTokenResponseFut: std::future::Future<
279 Output = Result<ElementControlRegisterDependencyTokenResult, fidl::Error>,
280 > + Send;
281 fn r#register_dependency_token(
282 &self,
283 token: fidl::Event,
284 ) -> Self::RegisterDependencyTokenResponseFut;
285 type UnregisterDependencyTokenResponseFut: std::future::Future<
286 Output = Result<ElementControlUnregisterDependencyTokenResult, fidl::Error>,
287 > + Send;
288 fn r#unregister_dependency_token(
289 &self,
290 token: fidl::Event,
291 ) -> Self::UnregisterDependencyTokenResponseFut;
292 type AddDependencyResponseFut: std::future::Future<Output = Result<ElementControlAddDependencyResult, fidl::Error>>
293 + Send;
294 fn r#add_dependency(&self, payload: LevelDependency) -> Self::AddDependencyResponseFut;
295}
296#[derive(Debug)]
297#[cfg(target_os = "fuchsia")]
298pub struct ElementControlSynchronousProxy {
299 client: fidl::client::sync::Client,
300}
301
302#[cfg(target_os = "fuchsia")]
303impl fidl::endpoints::SynchronousProxy for ElementControlSynchronousProxy {
304 type Proxy = ElementControlProxy;
305 type Protocol = ElementControlMarker;
306
307 fn from_channel(inner: fidl::Channel) -> Self {
308 Self::new(inner)
309 }
310
311 fn into_channel(self) -> fidl::Channel {
312 self.client.into_channel()
313 }
314
315 fn as_channel(&self) -> &fidl::Channel {
316 self.client.as_channel()
317 }
318}
319
320#[cfg(target_os = "fuchsia")]
321impl ElementControlSynchronousProxy {
322 pub fn new(channel: fidl::Channel) -> Self {
323 Self { client: fidl::client::sync::Client::new(channel) }
324 }
325
326 pub fn into_channel(self) -> fidl::Channel {
327 self.client.into_channel()
328 }
329
330 pub fn wait_for_event(
333 &self,
334 deadline: zx::MonotonicInstant,
335 ) -> Result<ElementControlEvent, fidl::Error> {
336 ElementControlEvent::decode(self.client.wait_for_event::<ElementControlMarker>(deadline)?)
337 }
338
339 pub fn r#open_status_channel(
345 &self,
346 mut status_channel: fidl::endpoints::ServerEnd<StatusMarker>,
347 ) -> Result<(), fidl::Error> {
348 self.client.send::<ElementControlOpenStatusChannelRequest>(
349 (status_channel,),
350 0x4d7772e93dba6300,
351 fidl::encoding::DynamicFlags::FLEXIBLE,
352 )
353 }
354
355 pub fn r#register_dependency_token(
358 &self,
359 mut token: fidl::Event,
360 ___deadline: zx::MonotonicInstant,
361 ) -> Result<ElementControlRegisterDependencyTokenResult, fidl::Error> {
362 let _response = self.client.send_query::<
363 ElementControlRegisterDependencyTokenRequest,
364 fidl::encoding::FlexibleResultType<fidl::encoding::EmptyStruct, RegisterDependencyTokenError>,
365 ElementControlMarker,
366 >(
367 (token,),
368 0x3a5016663d198d61,
369 fidl::encoding::DynamicFlags::FLEXIBLE,
370 ___deadline,
371 )?
372 .into_result::<ElementControlMarker>("register_dependency_token")?;
373 Ok(_response.map(|x| x))
374 }
375
376 pub fn r#unregister_dependency_token(
378 &self,
379 mut token: fidl::Event,
380 ___deadline: zx::MonotonicInstant,
381 ) -> Result<ElementControlUnregisterDependencyTokenResult, fidl::Error> {
382 let _response = self.client.send_query::<
383 ElementControlUnregisterDependencyTokenRequest,
384 fidl::encoding::FlexibleResultType<fidl::encoding::EmptyStruct, UnregisterDependencyTokenError>,
385 ElementControlMarker,
386 >(
387 (token,),
388 0x65a31a3661499529,
389 fidl::encoding::DynamicFlags::FLEXIBLE,
390 ___deadline,
391 )?
392 .into_result::<ElementControlMarker>("unregister_dependency_token")?;
393 Ok(_response.map(|x| x))
394 }
395
396 pub fn r#add_dependency(
402 &self,
403 mut payload: LevelDependency,
404 ___deadline: zx::MonotonicInstant,
405 ) -> Result<ElementControlAddDependencyResult, fidl::Error> {
406 let _response =
407 self.client
408 .send_query::<LevelDependency, fidl::encoding::FlexibleResultType<
409 fidl::encoding::EmptyStruct,
410 ModifyDependencyError,
411 >, ElementControlMarker>(
412 &mut payload,
413 0x3df1b453e28691f4,
414 fidl::encoding::DynamicFlags::FLEXIBLE,
415 ___deadline,
416 )?
417 .into_result::<ElementControlMarker>("add_dependency")?;
418 Ok(_response.map(|x| x))
419 }
420}
421
422#[cfg(target_os = "fuchsia")]
423impl From<ElementControlSynchronousProxy> for zx::NullableHandle {
424 fn from(value: ElementControlSynchronousProxy) -> Self {
425 value.into_channel().into()
426 }
427}
428
429#[cfg(target_os = "fuchsia")]
430impl From<fidl::Channel> for ElementControlSynchronousProxy {
431 fn from(value: fidl::Channel) -> Self {
432 Self::new(value)
433 }
434}
435
436#[cfg(target_os = "fuchsia")]
437impl fidl::endpoints::FromClient for ElementControlSynchronousProxy {
438 type Protocol = ElementControlMarker;
439
440 fn from_client(value: fidl::endpoints::ClientEnd<ElementControlMarker>) -> Self {
441 Self::new(value.into_channel())
442 }
443}
444
445#[derive(Debug, Clone)]
446pub struct ElementControlProxy {
447 client: fidl::client::Client<fidl::encoding::DefaultFuchsiaResourceDialect>,
448}
449
450impl fidl::endpoints::Proxy for ElementControlProxy {
451 type Protocol = ElementControlMarker;
452
453 fn from_channel(inner: ::fidl::AsyncChannel) -> Self {
454 Self::new(inner)
455 }
456
457 fn into_channel(self) -> Result<::fidl::AsyncChannel, Self> {
458 self.client.into_channel().map_err(|client| Self { client })
459 }
460
461 fn as_channel(&self) -> &::fidl::AsyncChannel {
462 self.client.as_channel()
463 }
464}
465
466impl ElementControlProxy {
467 pub fn new(channel: ::fidl::AsyncChannel) -> Self {
469 let protocol_name = <ElementControlMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
470 Self { client: fidl::client::Client::new(channel, protocol_name) }
471 }
472
473 pub fn take_event_stream(&self) -> ElementControlEventStream {
479 ElementControlEventStream { event_receiver: self.client.take_event_receiver() }
480 }
481
482 pub fn r#open_status_channel(
488 &self,
489 mut status_channel: fidl::endpoints::ServerEnd<StatusMarker>,
490 ) -> Result<(), fidl::Error> {
491 ElementControlProxyInterface::r#open_status_channel(self, status_channel)
492 }
493
494 pub fn r#register_dependency_token(
497 &self,
498 mut token: fidl::Event,
499 ) -> fidl::client::QueryResponseFut<
500 ElementControlRegisterDependencyTokenResult,
501 fidl::encoding::DefaultFuchsiaResourceDialect,
502 > {
503 ElementControlProxyInterface::r#register_dependency_token(self, token)
504 }
505
506 pub fn r#unregister_dependency_token(
508 &self,
509 mut token: fidl::Event,
510 ) -> fidl::client::QueryResponseFut<
511 ElementControlUnregisterDependencyTokenResult,
512 fidl::encoding::DefaultFuchsiaResourceDialect,
513 > {
514 ElementControlProxyInterface::r#unregister_dependency_token(self, token)
515 }
516
517 pub fn r#add_dependency(
523 &self,
524 mut payload: LevelDependency,
525 ) -> fidl::client::QueryResponseFut<
526 ElementControlAddDependencyResult,
527 fidl::encoding::DefaultFuchsiaResourceDialect,
528 > {
529 ElementControlProxyInterface::r#add_dependency(self, payload)
530 }
531}
532
533impl ElementControlProxyInterface for ElementControlProxy {
534 fn r#open_status_channel(
535 &self,
536 mut status_channel: fidl::endpoints::ServerEnd<StatusMarker>,
537 ) -> Result<(), fidl::Error> {
538 self.client.send::<ElementControlOpenStatusChannelRequest>(
539 (status_channel,),
540 0x4d7772e93dba6300,
541 fidl::encoding::DynamicFlags::FLEXIBLE,
542 )
543 }
544
545 type RegisterDependencyTokenResponseFut = fidl::client::QueryResponseFut<
546 ElementControlRegisterDependencyTokenResult,
547 fidl::encoding::DefaultFuchsiaResourceDialect,
548 >;
549 fn r#register_dependency_token(
550 &self,
551 mut token: fidl::Event,
552 ) -> Self::RegisterDependencyTokenResponseFut {
553 fn _decode(
554 mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
555 ) -> Result<ElementControlRegisterDependencyTokenResult, fidl::Error> {
556 let _response = fidl::client::decode_transaction_body::<
557 fidl::encoding::FlexibleResultType<
558 fidl::encoding::EmptyStruct,
559 RegisterDependencyTokenError,
560 >,
561 fidl::encoding::DefaultFuchsiaResourceDialect,
562 0x3a5016663d198d61,
563 >(_buf?)?
564 .into_result::<ElementControlMarker>("register_dependency_token")?;
565 Ok(_response.map(|x| x))
566 }
567 self.client.send_query_and_decode::<
568 ElementControlRegisterDependencyTokenRequest,
569 ElementControlRegisterDependencyTokenResult,
570 >(
571 (token,),
572 0x3a5016663d198d61,
573 fidl::encoding::DynamicFlags::FLEXIBLE,
574 _decode,
575 )
576 }
577
578 type UnregisterDependencyTokenResponseFut = fidl::client::QueryResponseFut<
579 ElementControlUnregisterDependencyTokenResult,
580 fidl::encoding::DefaultFuchsiaResourceDialect,
581 >;
582 fn r#unregister_dependency_token(
583 &self,
584 mut token: fidl::Event,
585 ) -> Self::UnregisterDependencyTokenResponseFut {
586 fn _decode(
587 mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
588 ) -> Result<ElementControlUnregisterDependencyTokenResult, fidl::Error> {
589 let _response = fidl::client::decode_transaction_body::<
590 fidl::encoding::FlexibleResultType<
591 fidl::encoding::EmptyStruct,
592 UnregisterDependencyTokenError,
593 >,
594 fidl::encoding::DefaultFuchsiaResourceDialect,
595 0x65a31a3661499529,
596 >(_buf?)?
597 .into_result::<ElementControlMarker>("unregister_dependency_token")?;
598 Ok(_response.map(|x| x))
599 }
600 self.client.send_query_and_decode::<
601 ElementControlUnregisterDependencyTokenRequest,
602 ElementControlUnregisterDependencyTokenResult,
603 >(
604 (token,),
605 0x65a31a3661499529,
606 fidl::encoding::DynamicFlags::FLEXIBLE,
607 _decode,
608 )
609 }
610
611 type AddDependencyResponseFut = fidl::client::QueryResponseFut<
612 ElementControlAddDependencyResult,
613 fidl::encoding::DefaultFuchsiaResourceDialect,
614 >;
615 fn r#add_dependency(&self, mut payload: LevelDependency) -> Self::AddDependencyResponseFut {
616 fn _decode(
617 mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
618 ) -> Result<ElementControlAddDependencyResult, fidl::Error> {
619 let _response = fidl::client::decode_transaction_body::<
620 fidl::encoding::FlexibleResultType<
621 fidl::encoding::EmptyStruct,
622 ModifyDependencyError,
623 >,
624 fidl::encoding::DefaultFuchsiaResourceDialect,
625 0x3df1b453e28691f4,
626 >(_buf?)?
627 .into_result::<ElementControlMarker>("add_dependency")?;
628 Ok(_response.map(|x| x))
629 }
630 self.client.send_query_and_decode::<LevelDependency, ElementControlAddDependencyResult>(
631 &mut payload,
632 0x3df1b453e28691f4,
633 fidl::encoding::DynamicFlags::FLEXIBLE,
634 _decode,
635 )
636 }
637}
638
639pub struct ElementControlEventStream {
640 event_receiver: fidl::client::EventReceiver<fidl::encoding::DefaultFuchsiaResourceDialect>,
641}
642
643impl std::marker::Unpin for ElementControlEventStream {}
644
645impl futures::stream::FusedStream for ElementControlEventStream {
646 fn is_terminated(&self) -> bool {
647 self.event_receiver.is_terminated()
648 }
649}
650
651impl futures::Stream for ElementControlEventStream {
652 type Item = Result<ElementControlEvent, fidl::Error>;
653
654 fn poll_next(
655 mut self: std::pin::Pin<&mut Self>,
656 cx: &mut std::task::Context<'_>,
657 ) -> std::task::Poll<Option<Self::Item>> {
658 match futures::ready!(futures::stream::StreamExt::poll_next_unpin(
659 &mut self.event_receiver,
660 cx
661 )?) {
662 Some(buf) => std::task::Poll::Ready(Some(ElementControlEvent::decode(buf))),
663 None => std::task::Poll::Ready(None),
664 }
665 }
666}
667
668#[derive(Debug)]
669pub enum ElementControlEvent {
670 #[non_exhaustive]
671 _UnknownEvent {
672 ordinal: u64,
674 },
675}
676
677impl ElementControlEvent {
678 fn decode(
680 mut buf: <fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc,
681 ) -> Result<ElementControlEvent, fidl::Error> {
682 let (bytes, _handles) = buf.split_mut();
683 let (tx_header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
684 debug_assert_eq!(tx_header.tx_id, 0);
685 match tx_header.ordinal {
686 _ if tx_header.dynamic_flags().contains(fidl::encoding::DynamicFlags::FLEXIBLE) => {
687 Ok(ElementControlEvent::_UnknownEvent { ordinal: tx_header.ordinal })
688 }
689 _ => Err(fidl::Error::UnknownOrdinal {
690 ordinal: tx_header.ordinal,
691 protocol_name:
692 <ElementControlMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
693 }),
694 }
695 }
696}
697
698pub struct ElementControlRequestStream {
700 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
701 is_terminated: bool,
702}
703
704impl std::marker::Unpin for ElementControlRequestStream {}
705
706impl futures::stream::FusedStream for ElementControlRequestStream {
707 fn is_terminated(&self) -> bool {
708 self.is_terminated
709 }
710}
711
712impl fidl::endpoints::RequestStream for ElementControlRequestStream {
713 type Protocol = ElementControlMarker;
714 type ControlHandle = ElementControlControlHandle;
715
716 fn from_channel(channel: ::fidl::AsyncChannel) -> Self {
717 Self { inner: std::sync::Arc::new(fidl::ServeInner::new(channel)), is_terminated: false }
718 }
719
720 fn control_handle(&self) -> Self::ControlHandle {
721 ElementControlControlHandle { inner: self.inner.clone() }
722 }
723
724 fn into_inner(
725 self,
726 ) -> (::std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>, bool)
727 {
728 (self.inner, self.is_terminated)
729 }
730
731 fn from_inner(
732 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
733 is_terminated: bool,
734 ) -> Self {
735 Self { inner, is_terminated }
736 }
737}
738
739impl futures::Stream for ElementControlRequestStream {
740 type Item = Result<ElementControlRequest, fidl::Error>;
741
742 fn poll_next(
743 mut self: std::pin::Pin<&mut Self>,
744 cx: &mut std::task::Context<'_>,
745 ) -> std::task::Poll<Option<Self::Item>> {
746 let this = &mut *self;
747 if this.inner.check_shutdown(cx) {
748 this.is_terminated = true;
749 return std::task::Poll::Ready(None);
750 }
751 if this.is_terminated {
752 panic!("polled ElementControlRequestStream after completion");
753 }
754 fidl::encoding::with_tls_decode_buf::<_, fidl::encoding::DefaultFuchsiaResourceDialect>(
755 |bytes, handles| {
756 match this.inner.channel().read_etc(cx, bytes, handles) {
757 std::task::Poll::Ready(Ok(())) => {}
758 std::task::Poll::Pending => return std::task::Poll::Pending,
759 std::task::Poll::Ready(Err(zx_status::Status::PEER_CLOSED)) => {
760 this.is_terminated = true;
761 return std::task::Poll::Ready(None);
762 }
763 std::task::Poll::Ready(Err(e)) => {
764 return std::task::Poll::Ready(Some(Err(fidl::Error::ServerRequestRead(
765 e.into(),
766 ))));
767 }
768 }
769
770 let (header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
772
773 std::task::Poll::Ready(Some(match header.ordinal {
774 0x4d7772e93dba6300 => {
775 header.validate_request_tx_id(fidl::MethodType::OneWay)?;
776 let mut req = fidl::new_empty!(
777 ElementControlOpenStatusChannelRequest,
778 fidl::encoding::DefaultFuchsiaResourceDialect
779 );
780 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<ElementControlOpenStatusChannelRequest>(&header, _body_bytes, handles, &mut req)?;
781 let control_handle =
782 ElementControlControlHandle { inner: this.inner.clone() };
783 Ok(ElementControlRequest::OpenStatusChannel {
784 status_channel: req.status_channel,
785
786 control_handle,
787 })
788 }
789 0x3a5016663d198d61 => {
790 header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
791 let mut req = fidl::new_empty!(
792 ElementControlRegisterDependencyTokenRequest,
793 fidl::encoding::DefaultFuchsiaResourceDialect
794 );
795 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<ElementControlRegisterDependencyTokenRequest>(&header, _body_bytes, handles, &mut req)?;
796 let control_handle =
797 ElementControlControlHandle { inner: this.inner.clone() };
798 Ok(ElementControlRequest::RegisterDependencyToken {
799 token: req.token,
800
801 responder: ElementControlRegisterDependencyTokenResponder {
802 control_handle: std::mem::ManuallyDrop::new(control_handle),
803 tx_id: header.tx_id,
804 },
805 })
806 }
807 0x65a31a3661499529 => {
808 header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
809 let mut req = fidl::new_empty!(
810 ElementControlUnregisterDependencyTokenRequest,
811 fidl::encoding::DefaultFuchsiaResourceDialect
812 );
813 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<ElementControlUnregisterDependencyTokenRequest>(&header, _body_bytes, handles, &mut req)?;
814 let control_handle =
815 ElementControlControlHandle { inner: this.inner.clone() };
816 Ok(ElementControlRequest::UnregisterDependencyToken {
817 token: req.token,
818
819 responder: ElementControlUnregisterDependencyTokenResponder {
820 control_handle: std::mem::ManuallyDrop::new(control_handle),
821 tx_id: header.tx_id,
822 },
823 })
824 }
825 0x3df1b453e28691f4 => {
826 header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
827 let mut req = fidl::new_empty!(
828 LevelDependency,
829 fidl::encoding::DefaultFuchsiaResourceDialect
830 );
831 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<LevelDependency>(&header, _body_bytes, handles, &mut req)?;
832 let control_handle =
833 ElementControlControlHandle { inner: this.inner.clone() };
834 Ok(ElementControlRequest::AddDependency {
835 payload: req,
836 responder: ElementControlAddDependencyResponder {
837 control_handle: std::mem::ManuallyDrop::new(control_handle),
838 tx_id: header.tx_id,
839 },
840 })
841 }
842 _ if header.tx_id == 0
843 && header
844 .dynamic_flags()
845 .contains(fidl::encoding::DynamicFlags::FLEXIBLE) =>
846 {
847 Ok(ElementControlRequest::_UnknownMethod {
848 ordinal: header.ordinal,
849 control_handle: ElementControlControlHandle {
850 inner: this.inner.clone(),
851 },
852 method_type: fidl::MethodType::OneWay,
853 })
854 }
855 _ if header
856 .dynamic_flags()
857 .contains(fidl::encoding::DynamicFlags::FLEXIBLE) =>
858 {
859 this.inner.send_framework_err(
860 fidl::encoding::FrameworkErr::UnknownMethod,
861 header.tx_id,
862 header.ordinal,
863 header.dynamic_flags(),
864 (bytes, handles),
865 )?;
866 Ok(ElementControlRequest::_UnknownMethod {
867 ordinal: header.ordinal,
868 control_handle: ElementControlControlHandle {
869 inner: this.inner.clone(),
870 },
871 method_type: fidl::MethodType::TwoWay,
872 })
873 }
874 _ => Err(fidl::Error::UnknownOrdinal {
875 ordinal: header.ordinal,
876 protocol_name:
877 <ElementControlMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
878 }),
879 }))
880 },
881 )
882 }
883}
884
885#[derive(Debug)]
888pub enum ElementControlRequest {
889 OpenStatusChannel {
895 status_channel: fidl::endpoints::ServerEnd<StatusMarker>,
896 control_handle: ElementControlControlHandle,
897 },
898 RegisterDependencyToken {
901 token: fidl::Event,
902 responder: ElementControlRegisterDependencyTokenResponder,
903 },
904 UnregisterDependencyToken {
906 token: fidl::Event,
907 responder: ElementControlUnregisterDependencyTokenResponder,
908 },
909 AddDependency { payload: LevelDependency, responder: ElementControlAddDependencyResponder },
915 #[non_exhaustive]
917 _UnknownMethod {
918 ordinal: u64,
920 control_handle: ElementControlControlHandle,
921 method_type: fidl::MethodType,
922 },
923}
924
925impl ElementControlRequest {
926 #[allow(irrefutable_let_patterns)]
927 pub fn into_open_status_channel(
928 self,
929 ) -> Option<(fidl::endpoints::ServerEnd<StatusMarker>, ElementControlControlHandle)> {
930 if let ElementControlRequest::OpenStatusChannel { status_channel, control_handle } = self {
931 Some((status_channel, control_handle))
932 } else {
933 None
934 }
935 }
936
937 #[allow(irrefutable_let_patterns)]
938 pub fn into_register_dependency_token(
939 self,
940 ) -> Option<(fidl::Event, ElementControlRegisterDependencyTokenResponder)> {
941 if let ElementControlRequest::RegisterDependencyToken { token, responder } = self {
942 Some((token, responder))
943 } else {
944 None
945 }
946 }
947
948 #[allow(irrefutable_let_patterns)]
949 pub fn into_unregister_dependency_token(
950 self,
951 ) -> Option<(fidl::Event, ElementControlUnregisterDependencyTokenResponder)> {
952 if let ElementControlRequest::UnregisterDependencyToken { token, responder } = self {
953 Some((token, responder))
954 } else {
955 None
956 }
957 }
958
959 #[allow(irrefutable_let_patterns)]
960 pub fn into_add_dependency(
961 self,
962 ) -> Option<(LevelDependency, ElementControlAddDependencyResponder)> {
963 if let ElementControlRequest::AddDependency { payload, responder } = self {
964 Some((payload, responder))
965 } else {
966 None
967 }
968 }
969
970 pub fn method_name(&self) -> &'static str {
972 match *self {
973 ElementControlRequest::OpenStatusChannel { .. } => "open_status_channel",
974 ElementControlRequest::RegisterDependencyToken { .. } => "register_dependency_token",
975 ElementControlRequest::UnregisterDependencyToken { .. } => {
976 "unregister_dependency_token"
977 }
978 ElementControlRequest::AddDependency { .. } => "add_dependency",
979 ElementControlRequest::_UnknownMethod {
980 method_type: fidl::MethodType::OneWay, ..
981 } => "unknown one-way method",
982 ElementControlRequest::_UnknownMethod {
983 method_type: fidl::MethodType::TwoWay, ..
984 } => "unknown two-way method",
985 }
986 }
987}
988
989#[derive(Debug, Clone)]
990pub struct ElementControlControlHandle {
991 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
992}
993
994impl ElementControlControlHandle {
995 pub fn shutdown_with_epitaph(&self, status: impl Into<fidl::Epitaph>) {
996 self.inner.shutdown_with_epitaph(status.into())
997 }
998}
999
1000impl fidl::endpoints::ControlHandle for ElementControlControlHandle {
1001 fn shutdown(&self) {
1002 self.inner.shutdown()
1003 }
1004
1005 fn shutdown_with_epitaph(&self, status: fidl::Epitaph) {
1006 self.inner.shutdown_with_epitaph(status)
1007 }
1008
1009 fn is_closed(&self) -> bool {
1010 self.inner.channel().is_closed()
1011 }
1012 fn on_closed(&self) -> fidl::OnSignalsRef<'_> {
1013 self.inner.channel().on_closed()
1014 }
1015
1016 #[cfg(target_os = "fuchsia")]
1017 fn signal_peer(
1018 &self,
1019 clear_mask: zx::Signals,
1020 set_mask: zx::Signals,
1021 ) -> Result<(), zx_status::Status> {
1022 use fidl::Peered;
1023 self.inner.channel().signal_peer(clear_mask, set_mask)
1024 }
1025}
1026
1027impl ElementControlControlHandle {}
1028
1029#[must_use = "FIDL methods require a response to be sent"]
1030#[derive(Debug)]
1031pub struct ElementControlRegisterDependencyTokenResponder {
1032 control_handle: std::mem::ManuallyDrop<ElementControlControlHandle>,
1033 tx_id: u32,
1034}
1035
1036impl std::ops::Drop for ElementControlRegisterDependencyTokenResponder {
1040 fn drop(&mut self) {
1041 self.control_handle.shutdown();
1042 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
1044 }
1045}
1046
1047impl fidl::endpoints::Responder for ElementControlRegisterDependencyTokenResponder {
1048 type ControlHandle = ElementControlControlHandle;
1049
1050 fn control_handle(&self) -> &ElementControlControlHandle {
1051 &self.control_handle
1052 }
1053
1054 fn drop_without_shutdown(mut self) {
1055 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
1057 std::mem::forget(self);
1059 }
1060}
1061
1062impl ElementControlRegisterDependencyTokenResponder {
1063 pub fn send(
1067 self,
1068 mut result: Result<(), RegisterDependencyTokenError>,
1069 ) -> Result<(), fidl::Error> {
1070 let _result = self.send_raw(result);
1071 if _result.is_err() {
1072 self.control_handle.shutdown();
1073 }
1074 self.drop_without_shutdown();
1075 _result
1076 }
1077
1078 pub fn send_no_shutdown_on_err(
1080 self,
1081 mut result: Result<(), RegisterDependencyTokenError>,
1082 ) -> Result<(), fidl::Error> {
1083 let _result = self.send_raw(result);
1084 self.drop_without_shutdown();
1085 _result
1086 }
1087
1088 fn send_raw(
1089 &self,
1090 mut result: Result<(), RegisterDependencyTokenError>,
1091 ) -> Result<(), fidl::Error> {
1092 self.control_handle.inner.send::<fidl::encoding::FlexibleResultType<
1093 fidl::encoding::EmptyStruct,
1094 RegisterDependencyTokenError,
1095 >>(
1096 fidl::encoding::FlexibleResult::new(result),
1097 self.tx_id,
1098 0x3a5016663d198d61,
1099 fidl::encoding::DynamicFlags::FLEXIBLE,
1100 )
1101 }
1102}
1103
1104#[must_use = "FIDL methods require a response to be sent"]
1105#[derive(Debug)]
1106pub struct ElementControlUnregisterDependencyTokenResponder {
1107 control_handle: std::mem::ManuallyDrop<ElementControlControlHandle>,
1108 tx_id: u32,
1109}
1110
1111impl std::ops::Drop for ElementControlUnregisterDependencyTokenResponder {
1115 fn drop(&mut self) {
1116 self.control_handle.shutdown();
1117 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
1119 }
1120}
1121
1122impl fidl::endpoints::Responder for ElementControlUnregisterDependencyTokenResponder {
1123 type ControlHandle = ElementControlControlHandle;
1124
1125 fn control_handle(&self) -> &ElementControlControlHandle {
1126 &self.control_handle
1127 }
1128
1129 fn drop_without_shutdown(mut self) {
1130 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
1132 std::mem::forget(self);
1134 }
1135}
1136
1137impl ElementControlUnregisterDependencyTokenResponder {
1138 pub fn send(
1142 self,
1143 mut result: Result<(), UnregisterDependencyTokenError>,
1144 ) -> Result<(), fidl::Error> {
1145 let _result = self.send_raw(result);
1146 if _result.is_err() {
1147 self.control_handle.shutdown();
1148 }
1149 self.drop_without_shutdown();
1150 _result
1151 }
1152
1153 pub fn send_no_shutdown_on_err(
1155 self,
1156 mut result: Result<(), UnregisterDependencyTokenError>,
1157 ) -> Result<(), fidl::Error> {
1158 let _result = self.send_raw(result);
1159 self.drop_without_shutdown();
1160 _result
1161 }
1162
1163 fn send_raw(
1164 &self,
1165 mut result: Result<(), UnregisterDependencyTokenError>,
1166 ) -> Result<(), fidl::Error> {
1167 self.control_handle.inner.send::<fidl::encoding::FlexibleResultType<
1168 fidl::encoding::EmptyStruct,
1169 UnregisterDependencyTokenError,
1170 >>(
1171 fidl::encoding::FlexibleResult::new(result),
1172 self.tx_id,
1173 0x65a31a3661499529,
1174 fidl::encoding::DynamicFlags::FLEXIBLE,
1175 )
1176 }
1177}
1178
1179#[must_use = "FIDL methods require a response to be sent"]
1180#[derive(Debug)]
1181pub struct ElementControlAddDependencyResponder {
1182 control_handle: std::mem::ManuallyDrop<ElementControlControlHandle>,
1183 tx_id: u32,
1184}
1185
1186impl std::ops::Drop for ElementControlAddDependencyResponder {
1190 fn drop(&mut self) {
1191 self.control_handle.shutdown();
1192 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
1194 }
1195}
1196
1197impl fidl::endpoints::Responder for ElementControlAddDependencyResponder {
1198 type ControlHandle = ElementControlControlHandle;
1199
1200 fn control_handle(&self) -> &ElementControlControlHandle {
1201 &self.control_handle
1202 }
1203
1204 fn drop_without_shutdown(mut self) {
1205 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
1207 std::mem::forget(self);
1209 }
1210}
1211
1212impl ElementControlAddDependencyResponder {
1213 pub fn send(self, mut result: Result<(), ModifyDependencyError>) -> Result<(), fidl::Error> {
1217 let _result = self.send_raw(result);
1218 if _result.is_err() {
1219 self.control_handle.shutdown();
1220 }
1221 self.drop_without_shutdown();
1222 _result
1223 }
1224
1225 pub fn send_no_shutdown_on_err(
1227 self,
1228 mut result: Result<(), ModifyDependencyError>,
1229 ) -> Result<(), fidl::Error> {
1230 let _result = self.send_raw(result);
1231 self.drop_without_shutdown();
1232 _result
1233 }
1234
1235 fn send_raw(&self, mut result: Result<(), ModifyDependencyError>) -> Result<(), fidl::Error> {
1236 self.control_handle.inner.send::<fidl::encoding::FlexibleResultType<
1237 fidl::encoding::EmptyStruct,
1238 ModifyDependencyError,
1239 >>(
1240 fidl::encoding::FlexibleResult::new(result),
1241 self.tx_id,
1242 0x3df1b453e28691f4,
1243 fidl::encoding::DynamicFlags::FLEXIBLE,
1244 )
1245 }
1246}
1247
1248#[derive(Debug, Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash)]
1249pub struct ElementInfoProviderMarker;
1250
1251impl fidl::endpoints::ProtocolMarker for ElementInfoProviderMarker {
1252 type Proxy = ElementInfoProviderProxy;
1253 type RequestStream = ElementInfoProviderRequestStream;
1254 #[cfg(target_os = "fuchsia")]
1255 type SynchronousProxy = ElementInfoProviderSynchronousProxy;
1256
1257 const DEBUG_NAME: &'static str = "fuchsia.power.broker.ElementInfoProvider";
1258}
1259impl fidl::endpoints::DiscoverableProtocolMarker for ElementInfoProviderMarker {}
1260pub type ElementInfoProviderGetElementPowerLevelNamesResult =
1261 Result<Vec<ElementPowerLevelNames>, ElementInfoProviderError>;
1262pub type ElementInfoProviderGetStatusEndpointsResult =
1263 Result<Vec<ElementStatusEndpoint>, ElementInfoProviderError>;
1264
1265pub trait ElementInfoProviderProxyInterface: Send + Sync {
1266 type GetElementPowerLevelNamesResponseFut: std::future::Future<
1267 Output = Result<ElementInfoProviderGetElementPowerLevelNamesResult, fidl::Error>,
1268 > + Send;
1269 fn r#get_element_power_level_names(&self) -> Self::GetElementPowerLevelNamesResponseFut;
1270 type GetStatusEndpointsResponseFut: std::future::Future<
1271 Output = Result<ElementInfoProviderGetStatusEndpointsResult, fidl::Error>,
1272 > + Send;
1273 fn r#get_status_endpoints(&self) -> Self::GetStatusEndpointsResponseFut;
1274}
1275#[derive(Debug)]
1276#[cfg(target_os = "fuchsia")]
1277pub struct ElementInfoProviderSynchronousProxy {
1278 client: fidl::client::sync::Client,
1279}
1280
1281#[cfg(target_os = "fuchsia")]
1282impl fidl::endpoints::SynchronousProxy for ElementInfoProviderSynchronousProxy {
1283 type Proxy = ElementInfoProviderProxy;
1284 type Protocol = ElementInfoProviderMarker;
1285
1286 fn from_channel(inner: fidl::Channel) -> Self {
1287 Self::new(inner)
1288 }
1289
1290 fn into_channel(self) -> fidl::Channel {
1291 self.client.into_channel()
1292 }
1293
1294 fn as_channel(&self) -> &fidl::Channel {
1295 self.client.as_channel()
1296 }
1297}
1298
1299#[cfg(target_os = "fuchsia")]
1300impl ElementInfoProviderSynchronousProxy {
1301 pub fn new(channel: fidl::Channel) -> Self {
1302 Self { client: fidl::client::sync::Client::new(channel) }
1303 }
1304
1305 pub fn into_channel(self) -> fidl::Channel {
1306 self.client.into_channel()
1307 }
1308
1309 pub fn wait_for_event(
1312 &self,
1313 deadline: zx::MonotonicInstant,
1314 ) -> Result<ElementInfoProviderEvent, fidl::Error> {
1315 ElementInfoProviderEvent::decode(
1316 self.client.wait_for_event::<ElementInfoProviderMarker>(deadline)?,
1317 )
1318 }
1319
1320 pub fn r#get_element_power_level_names(
1323 &self,
1324 ___deadline: zx::MonotonicInstant,
1325 ) -> Result<ElementInfoProviderGetElementPowerLevelNamesResult, fidl::Error> {
1326 let _response = self
1327 .client
1328 .send_query::<fidl::encoding::EmptyPayload, fidl::encoding::FlexibleResultType<
1329 ElementInfoProviderGetElementPowerLevelNamesResponse,
1330 ElementInfoProviderError,
1331 >, ElementInfoProviderMarker>(
1332 (),
1333 0x298f63881fc9ed49,
1334 fidl::encoding::DynamicFlags::FLEXIBLE,
1335 ___deadline,
1336 )?
1337 .into_result::<ElementInfoProviderMarker>("get_element_power_level_names")?;
1338 Ok(_response.map(|x| x.level_names))
1339 }
1340
1341 pub fn r#get_status_endpoints(
1345 &self,
1346 ___deadline: zx::MonotonicInstant,
1347 ) -> Result<ElementInfoProviderGetStatusEndpointsResult, fidl::Error> {
1348 let _response = self
1349 .client
1350 .send_query::<fidl::encoding::EmptyPayload, fidl::encoding::FlexibleResultType<
1351 ElementInfoProviderGetStatusEndpointsResponse,
1352 ElementInfoProviderError,
1353 >, ElementInfoProviderMarker>(
1354 (),
1355 0x456f2b6c5bf0777c,
1356 fidl::encoding::DynamicFlags::FLEXIBLE,
1357 ___deadline,
1358 )?
1359 .into_result::<ElementInfoProviderMarker>("get_status_endpoints")?;
1360 Ok(_response.map(|x| x.endpoints))
1361 }
1362}
1363
1364#[cfg(target_os = "fuchsia")]
1365impl From<ElementInfoProviderSynchronousProxy> for zx::NullableHandle {
1366 fn from(value: ElementInfoProviderSynchronousProxy) -> Self {
1367 value.into_channel().into()
1368 }
1369}
1370
1371#[cfg(target_os = "fuchsia")]
1372impl From<fidl::Channel> for ElementInfoProviderSynchronousProxy {
1373 fn from(value: fidl::Channel) -> Self {
1374 Self::new(value)
1375 }
1376}
1377
1378#[cfg(target_os = "fuchsia")]
1379impl fidl::endpoints::FromClient for ElementInfoProviderSynchronousProxy {
1380 type Protocol = ElementInfoProviderMarker;
1381
1382 fn from_client(value: fidl::endpoints::ClientEnd<ElementInfoProviderMarker>) -> Self {
1383 Self::new(value.into_channel())
1384 }
1385}
1386
1387#[derive(Debug, Clone)]
1388pub struct ElementInfoProviderProxy {
1389 client: fidl::client::Client<fidl::encoding::DefaultFuchsiaResourceDialect>,
1390}
1391
1392impl fidl::endpoints::Proxy for ElementInfoProviderProxy {
1393 type Protocol = ElementInfoProviderMarker;
1394
1395 fn from_channel(inner: ::fidl::AsyncChannel) -> Self {
1396 Self::new(inner)
1397 }
1398
1399 fn into_channel(self) -> Result<::fidl::AsyncChannel, Self> {
1400 self.client.into_channel().map_err(|client| Self { client })
1401 }
1402
1403 fn as_channel(&self) -> &::fidl::AsyncChannel {
1404 self.client.as_channel()
1405 }
1406}
1407
1408impl ElementInfoProviderProxy {
1409 pub fn new(channel: ::fidl::AsyncChannel) -> Self {
1411 let protocol_name =
1412 <ElementInfoProviderMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
1413 Self { client: fidl::client::Client::new(channel, protocol_name) }
1414 }
1415
1416 pub fn take_event_stream(&self) -> ElementInfoProviderEventStream {
1422 ElementInfoProviderEventStream { event_receiver: self.client.take_event_receiver() }
1423 }
1424
1425 pub fn r#get_element_power_level_names(
1428 &self,
1429 ) -> fidl::client::QueryResponseFut<
1430 ElementInfoProviderGetElementPowerLevelNamesResult,
1431 fidl::encoding::DefaultFuchsiaResourceDialect,
1432 > {
1433 ElementInfoProviderProxyInterface::r#get_element_power_level_names(self)
1434 }
1435
1436 pub fn r#get_status_endpoints(
1440 &self,
1441 ) -> fidl::client::QueryResponseFut<
1442 ElementInfoProviderGetStatusEndpointsResult,
1443 fidl::encoding::DefaultFuchsiaResourceDialect,
1444 > {
1445 ElementInfoProviderProxyInterface::r#get_status_endpoints(self)
1446 }
1447}
1448
1449impl ElementInfoProviderProxyInterface for ElementInfoProviderProxy {
1450 type GetElementPowerLevelNamesResponseFut = fidl::client::QueryResponseFut<
1451 ElementInfoProviderGetElementPowerLevelNamesResult,
1452 fidl::encoding::DefaultFuchsiaResourceDialect,
1453 >;
1454 fn r#get_element_power_level_names(&self) -> Self::GetElementPowerLevelNamesResponseFut {
1455 fn _decode(
1456 mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
1457 ) -> Result<ElementInfoProviderGetElementPowerLevelNamesResult, fidl::Error> {
1458 let _response = fidl::client::decode_transaction_body::<
1459 fidl::encoding::FlexibleResultType<
1460 ElementInfoProviderGetElementPowerLevelNamesResponse,
1461 ElementInfoProviderError,
1462 >,
1463 fidl::encoding::DefaultFuchsiaResourceDialect,
1464 0x298f63881fc9ed49,
1465 >(_buf?)?
1466 .into_result::<ElementInfoProviderMarker>("get_element_power_level_names")?;
1467 Ok(_response.map(|x| x.level_names))
1468 }
1469 self.client.send_query_and_decode::<
1470 fidl::encoding::EmptyPayload,
1471 ElementInfoProviderGetElementPowerLevelNamesResult,
1472 >(
1473 (),
1474 0x298f63881fc9ed49,
1475 fidl::encoding::DynamicFlags::FLEXIBLE,
1476 _decode,
1477 )
1478 }
1479
1480 type GetStatusEndpointsResponseFut = fidl::client::QueryResponseFut<
1481 ElementInfoProviderGetStatusEndpointsResult,
1482 fidl::encoding::DefaultFuchsiaResourceDialect,
1483 >;
1484 fn r#get_status_endpoints(&self) -> Self::GetStatusEndpointsResponseFut {
1485 fn _decode(
1486 mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
1487 ) -> Result<ElementInfoProviderGetStatusEndpointsResult, fidl::Error> {
1488 let _response = fidl::client::decode_transaction_body::<
1489 fidl::encoding::FlexibleResultType<
1490 ElementInfoProviderGetStatusEndpointsResponse,
1491 ElementInfoProviderError,
1492 >,
1493 fidl::encoding::DefaultFuchsiaResourceDialect,
1494 0x456f2b6c5bf0777c,
1495 >(_buf?)?
1496 .into_result::<ElementInfoProviderMarker>("get_status_endpoints")?;
1497 Ok(_response.map(|x| x.endpoints))
1498 }
1499 self.client.send_query_and_decode::<
1500 fidl::encoding::EmptyPayload,
1501 ElementInfoProviderGetStatusEndpointsResult,
1502 >(
1503 (),
1504 0x456f2b6c5bf0777c,
1505 fidl::encoding::DynamicFlags::FLEXIBLE,
1506 _decode,
1507 )
1508 }
1509}
1510
1511pub struct ElementInfoProviderEventStream {
1512 event_receiver: fidl::client::EventReceiver<fidl::encoding::DefaultFuchsiaResourceDialect>,
1513}
1514
1515impl std::marker::Unpin for ElementInfoProviderEventStream {}
1516
1517impl futures::stream::FusedStream for ElementInfoProviderEventStream {
1518 fn is_terminated(&self) -> bool {
1519 self.event_receiver.is_terminated()
1520 }
1521}
1522
1523impl futures::Stream for ElementInfoProviderEventStream {
1524 type Item = Result<ElementInfoProviderEvent, fidl::Error>;
1525
1526 fn poll_next(
1527 mut self: std::pin::Pin<&mut Self>,
1528 cx: &mut std::task::Context<'_>,
1529 ) -> std::task::Poll<Option<Self::Item>> {
1530 match futures::ready!(futures::stream::StreamExt::poll_next_unpin(
1531 &mut self.event_receiver,
1532 cx
1533 )?) {
1534 Some(buf) => std::task::Poll::Ready(Some(ElementInfoProviderEvent::decode(buf))),
1535 None => std::task::Poll::Ready(None),
1536 }
1537 }
1538}
1539
1540#[derive(Debug)]
1541pub enum ElementInfoProviderEvent {
1542 #[non_exhaustive]
1543 _UnknownEvent {
1544 ordinal: u64,
1546 },
1547}
1548
1549impl ElementInfoProviderEvent {
1550 fn decode(
1552 mut buf: <fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc,
1553 ) -> Result<ElementInfoProviderEvent, fidl::Error> {
1554 let (bytes, _handles) = buf.split_mut();
1555 let (tx_header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
1556 debug_assert_eq!(tx_header.tx_id, 0);
1557 match tx_header.ordinal {
1558 _ if tx_header.dynamic_flags().contains(fidl::encoding::DynamicFlags::FLEXIBLE) => {
1559 Ok(ElementInfoProviderEvent::_UnknownEvent { ordinal: tx_header.ordinal })
1560 }
1561 _ => Err(fidl::Error::UnknownOrdinal {
1562 ordinal: tx_header.ordinal,
1563 protocol_name:
1564 <ElementInfoProviderMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
1565 }),
1566 }
1567 }
1568}
1569
1570pub struct ElementInfoProviderRequestStream {
1572 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
1573 is_terminated: bool,
1574}
1575
1576impl std::marker::Unpin for ElementInfoProviderRequestStream {}
1577
1578impl futures::stream::FusedStream for ElementInfoProviderRequestStream {
1579 fn is_terminated(&self) -> bool {
1580 self.is_terminated
1581 }
1582}
1583
1584impl fidl::endpoints::RequestStream for ElementInfoProviderRequestStream {
1585 type Protocol = ElementInfoProviderMarker;
1586 type ControlHandle = ElementInfoProviderControlHandle;
1587
1588 fn from_channel(channel: ::fidl::AsyncChannel) -> Self {
1589 Self { inner: std::sync::Arc::new(fidl::ServeInner::new(channel)), is_terminated: false }
1590 }
1591
1592 fn control_handle(&self) -> Self::ControlHandle {
1593 ElementInfoProviderControlHandle { inner: self.inner.clone() }
1594 }
1595
1596 fn into_inner(
1597 self,
1598 ) -> (::std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>, bool)
1599 {
1600 (self.inner, self.is_terminated)
1601 }
1602
1603 fn from_inner(
1604 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
1605 is_terminated: bool,
1606 ) -> Self {
1607 Self { inner, is_terminated }
1608 }
1609}
1610
1611impl futures::Stream for ElementInfoProviderRequestStream {
1612 type Item = Result<ElementInfoProviderRequest, fidl::Error>;
1613
1614 fn poll_next(
1615 mut self: std::pin::Pin<&mut Self>,
1616 cx: &mut std::task::Context<'_>,
1617 ) -> std::task::Poll<Option<Self::Item>> {
1618 let this = &mut *self;
1619 if this.inner.check_shutdown(cx) {
1620 this.is_terminated = true;
1621 return std::task::Poll::Ready(None);
1622 }
1623 if this.is_terminated {
1624 panic!("polled ElementInfoProviderRequestStream after completion");
1625 }
1626 fidl::encoding::with_tls_decode_buf::<_, fidl::encoding::DefaultFuchsiaResourceDialect>(
1627 |bytes, handles| {
1628 match this.inner.channel().read_etc(cx, bytes, handles) {
1629 std::task::Poll::Ready(Ok(())) => {}
1630 std::task::Poll::Pending => return std::task::Poll::Pending,
1631 std::task::Poll::Ready(Err(zx_status::Status::PEER_CLOSED)) => {
1632 this.is_terminated = true;
1633 return std::task::Poll::Ready(None);
1634 }
1635 std::task::Poll::Ready(Err(e)) => {
1636 return std::task::Poll::Ready(Some(Err(fidl::Error::ServerRequestRead(
1637 e.into(),
1638 ))));
1639 }
1640 }
1641
1642 let (header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
1644
1645 std::task::Poll::Ready(Some(match header.ordinal {
1646 0x298f63881fc9ed49 => {
1647 header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
1648 let mut req = fidl::new_empty!(fidl::encoding::EmptyPayload, fidl::encoding::DefaultFuchsiaResourceDialect);
1649 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
1650 let control_handle = ElementInfoProviderControlHandle {
1651 inner: this.inner.clone(),
1652 };
1653 Ok(ElementInfoProviderRequest::GetElementPowerLevelNames {
1654 responder: ElementInfoProviderGetElementPowerLevelNamesResponder {
1655 control_handle: std::mem::ManuallyDrop::new(control_handle),
1656 tx_id: header.tx_id,
1657 },
1658 })
1659 }
1660 0x456f2b6c5bf0777c => {
1661 header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
1662 let mut req = fidl::new_empty!(fidl::encoding::EmptyPayload, fidl::encoding::DefaultFuchsiaResourceDialect);
1663 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
1664 let control_handle = ElementInfoProviderControlHandle {
1665 inner: this.inner.clone(),
1666 };
1667 Ok(ElementInfoProviderRequest::GetStatusEndpoints {
1668 responder: ElementInfoProviderGetStatusEndpointsResponder {
1669 control_handle: std::mem::ManuallyDrop::new(control_handle),
1670 tx_id: header.tx_id,
1671 },
1672 })
1673 }
1674 _ if header.tx_id == 0 && header.dynamic_flags().contains(fidl::encoding::DynamicFlags::FLEXIBLE) => {
1675 Ok(ElementInfoProviderRequest::_UnknownMethod {
1676 ordinal: header.ordinal,
1677 control_handle: ElementInfoProviderControlHandle { inner: this.inner.clone() },
1678 method_type: fidl::MethodType::OneWay,
1679 })
1680 }
1681 _ if header.dynamic_flags().contains(fidl::encoding::DynamicFlags::FLEXIBLE) => {
1682 this.inner.send_framework_err(
1683 fidl::encoding::FrameworkErr::UnknownMethod,
1684 header.tx_id,
1685 header.ordinal,
1686 header.dynamic_flags(),
1687 (bytes, handles),
1688 )?;
1689 Ok(ElementInfoProviderRequest::_UnknownMethod {
1690 ordinal: header.ordinal,
1691 control_handle: ElementInfoProviderControlHandle { inner: this.inner.clone() },
1692 method_type: fidl::MethodType::TwoWay,
1693 })
1694 }
1695 _ => Err(fidl::Error::UnknownOrdinal {
1696 ordinal: header.ordinal,
1697 protocol_name: <ElementInfoProviderMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
1698 }),
1699 }))
1700 },
1701 )
1702 }
1703}
1704
1705#[derive(Debug)]
1707pub enum ElementInfoProviderRequest {
1708 GetElementPowerLevelNames { responder: ElementInfoProviderGetElementPowerLevelNamesResponder },
1711 GetStatusEndpoints { responder: ElementInfoProviderGetStatusEndpointsResponder },
1715 #[non_exhaustive]
1717 _UnknownMethod {
1718 ordinal: u64,
1720 control_handle: ElementInfoProviderControlHandle,
1721 method_type: fidl::MethodType,
1722 },
1723}
1724
1725impl ElementInfoProviderRequest {
1726 #[allow(irrefutable_let_patterns)]
1727 pub fn into_get_element_power_level_names(
1728 self,
1729 ) -> Option<(ElementInfoProviderGetElementPowerLevelNamesResponder)> {
1730 if let ElementInfoProviderRequest::GetElementPowerLevelNames { responder } = self {
1731 Some((responder))
1732 } else {
1733 None
1734 }
1735 }
1736
1737 #[allow(irrefutable_let_patterns)]
1738 pub fn into_get_status_endpoints(
1739 self,
1740 ) -> Option<(ElementInfoProviderGetStatusEndpointsResponder)> {
1741 if let ElementInfoProviderRequest::GetStatusEndpoints { responder } = self {
1742 Some((responder))
1743 } else {
1744 None
1745 }
1746 }
1747
1748 pub fn method_name(&self) -> &'static str {
1750 match *self {
1751 ElementInfoProviderRequest::GetElementPowerLevelNames { .. } => {
1752 "get_element_power_level_names"
1753 }
1754 ElementInfoProviderRequest::GetStatusEndpoints { .. } => "get_status_endpoints",
1755 ElementInfoProviderRequest::_UnknownMethod {
1756 method_type: fidl::MethodType::OneWay,
1757 ..
1758 } => "unknown one-way method",
1759 ElementInfoProviderRequest::_UnknownMethod {
1760 method_type: fidl::MethodType::TwoWay,
1761 ..
1762 } => "unknown two-way method",
1763 }
1764 }
1765}
1766
1767#[derive(Debug, Clone)]
1768pub struct ElementInfoProviderControlHandle {
1769 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
1770}
1771
1772impl ElementInfoProviderControlHandle {
1773 pub fn shutdown_with_epitaph(&self, status: impl Into<fidl::Epitaph>) {
1774 self.inner.shutdown_with_epitaph(status.into())
1775 }
1776}
1777
1778impl fidl::endpoints::ControlHandle for ElementInfoProviderControlHandle {
1779 fn shutdown(&self) {
1780 self.inner.shutdown()
1781 }
1782
1783 fn shutdown_with_epitaph(&self, status: fidl::Epitaph) {
1784 self.inner.shutdown_with_epitaph(status)
1785 }
1786
1787 fn is_closed(&self) -> bool {
1788 self.inner.channel().is_closed()
1789 }
1790 fn on_closed(&self) -> fidl::OnSignalsRef<'_> {
1791 self.inner.channel().on_closed()
1792 }
1793
1794 #[cfg(target_os = "fuchsia")]
1795 fn signal_peer(
1796 &self,
1797 clear_mask: zx::Signals,
1798 set_mask: zx::Signals,
1799 ) -> Result<(), zx_status::Status> {
1800 use fidl::Peered;
1801 self.inner.channel().signal_peer(clear_mask, set_mask)
1802 }
1803}
1804
1805impl ElementInfoProviderControlHandle {}
1806
1807#[must_use = "FIDL methods require a response to be sent"]
1808#[derive(Debug)]
1809pub struct ElementInfoProviderGetElementPowerLevelNamesResponder {
1810 control_handle: std::mem::ManuallyDrop<ElementInfoProviderControlHandle>,
1811 tx_id: u32,
1812}
1813
1814impl std::ops::Drop for ElementInfoProviderGetElementPowerLevelNamesResponder {
1818 fn drop(&mut self) {
1819 self.control_handle.shutdown();
1820 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
1822 }
1823}
1824
1825impl fidl::endpoints::Responder for ElementInfoProviderGetElementPowerLevelNamesResponder {
1826 type ControlHandle = ElementInfoProviderControlHandle;
1827
1828 fn control_handle(&self) -> &ElementInfoProviderControlHandle {
1829 &self.control_handle
1830 }
1831
1832 fn drop_without_shutdown(mut self) {
1833 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
1835 std::mem::forget(self);
1837 }
1838}
1839
1840impl ElementInfoProviderGetElementPowerLevelNamesResponder {
1841 pub fn send(
1845 self,
1846 mut result: Result<&[ElementPowerLevelNames], ElementInfoProviderError>,
1847 ) -> Result<(), fidl::Error> {
1848 let _result = self.send_raw(result);
1849 if _result.is_err() {
1850 self.control_handle.shutdown();
1851 }
1852 self.drop_without_shutdown();
1853 _result
1854 }
1855
1856 pub fn send_no_shutdown_on_err(
1858 self,
1859 mut result: Result<&[ElementPowerLevelNames], ElementInfoProviderError>,
1860 ) -> Result<(), fidl::Error> {
1861 let _result = self.send_raw(result);
1862 self.drop_without_shutdown();
1863 _result
1864 }
1865
1866 fn send_raw(
1867 &self,
1868 mut result: Result<&[ElementPowerLevelNames], ElementInfoProviderError>,
1869 ) -> Result<(), fidl::Error> {
1870 self.control_handle.inner.send::<fidl::encoding::FlexibleResultType<
1871 ElementInfoProviderGetElementPowerLevelNamesResponse,
1872 ElementInfoProviderError,
1873 >>(
1874 fidl::encoding::FlexibleResult::new(result.map(|level_names| (level_names,))),
1875 self.tx_id,
1876 0x298f63881fc9ed49,
1877 fidl::encoding::DynamicFlags::FLEXIBLE,
1878 )
1879 }
1880}
1881
1882#[must_use = "FIDL methods require a response to be sent"]
1883#[derive(Debug)]
1884pub struct ElementInfoProviderGetStatusEndpointsResponder {
1885 control_handle: std::mem::ManuallyDrop<ElementInfoProviderControlHandle>,
1886 tx_id: u32,
1887}
1888
1889impl std::ops::Drop for ElementInfoProviderGetStatusEndpointsResponder {
1893 fn drop(&mut self) {
1894 self.control_handle.shutdown();
1895 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
1897 }
1898}
1899
1900impl fidl::endpoints::Responder for ElementInfoProviderGetStatusEndpointsResponder {
1901 type ControlHandle = ElementInfoProviderControlHandle;
1902
1903 fn control_handle(&self) -> &ElementInfoProviderControlHandle {
1904 &self.control_handle
1905 }
1906
1907 fn drop_without_shutdown(mut self) {
1908 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
1910 std::mem::forget(self);
1912 }
1913}
1914
1915impl ElementInfoProviderGetStatusEndpointsResponder {
1916 pub fn send(
1920 self,
1921 mut result: Result<Vec<ElementStatusEndpoint>, ElementInfoProviderError>,
1922 ) -> Result<(), fidl::Error> {
1923 let _result = self.send_raw(result);
1924 if _result.is_err() {
1925 self.control_handle.shutdown();
1926 }
1927 self.drop_without_shutdown();
1928 _result
1929 }
1930
1931 pub fn send_no_shutdown_on_err(
1933 self,
1934 mut result: Result<Vec<ElementStatusEndpoint>, ElementInfoProviderError>,
1935 ) -> Result<(), fidl::Error> {
1936 let _result = self.send_raw(result);
1937 self.drop_without_shutdown();
1938 _result
1939 }
1940
1941 fn send_raw(
1942 &self,
1943 mut result: Result<Vec<ElementStatusEndpoint>, ElementInfoProviderError>,
1944 ) -> Result<(), fidl::Error> {
1945 self.control_handle.inner.send::<fidl::encoding::FlexibleResultType<
1946 ElementInfoProviderGetStatusEndpointsResponse,
1947 ElementInfoProviderError,
1948 >>(
1949 fidl::encoding::FlexibleResult::new(
1950 result.as_mut().map_err(|e| *e).map(|endpoints| (endpoints.as_mut_slice(),)),
1951 ),
1952 self.tx_id,
1953 0x456f2b6c5bf0777c,
1954 fidl::encoding::DynamicFlags::FLEXIBLE,
1955 )
1956 }
1957}
1958
1959#[derive(Debug, Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash)]
1960pub struct ElementRunnerMarker;
1961
1962impl fidl::endpoints::ProtocolMarker for ElementRunnerMarker {
1963 type Proxy = ElementRunnerProxy;
1964 type RequestStream = ElementRunnerRequestStream;
1965 #[cfg(target_os = "fuchsia")]
1966 type SynchronousProxy = ElementRunnerSynchronousProxy;
1967
1968 const DEBUG_NAME: &'static str = "fuchsia.power.broker.ElementRunner";
1969}
1970impl fidl::endpoints::DiscoverableProtocolMarker for ElementRunnerMarker {}
1971
1972pub trait ElementRunnerProxyInterface: Send + Sync {
1973 type SetLevelResponseFut: std::future::Future<Output = Result<(), fidl::Error>> + Send;
1974 fn r#set_level(&self, level: u8) -> Self::SetLevelResponseFut;
1975}
1976#[derive(Debug)]
1977#[cfg(target_os = "fuchsia")]
1978pub struct ElementRunnerSynchronousProxy {
1979 client: fidl::client::sync::Client,
1980}
1981
1982#[cfg(target_os = "fuchsia")]
1983impl fidl::endpoints::SynchronousProxy for ElementRunnerSynchronousProxy {
1984 type Proxy = ElementRunnerProxy;
1985 type Protocol = ElementRunnerMarker;
1986
1987 fn from_channel(inner: fidl::Channel) -> Self {
1988 Self::new(inner)
1989 }
1990
1991 fn into_channel(self) -> fidl::Channel {
1992 self.client.into_channel()
1993 }
1994
1995 fn as_channel(&self) -> &fidl::Channel {
1996 self.client.as_channel()
1997 }
1998}
1999
2000#[cfg(target_os = "fuchsia")]
2001impl ElementRunnerSynchronousProxy {
2002 pub fn new(channel: fidl::Channel) -> Self {
2003 Self { client: fidl::client::sync::Client::new(channel) }
2004 }
2005
2006 pub fn into_channel(self) -> fidl::Channel {
2007 self.client.into_channel()
2008 }
2009
2010 pub fn wait_for_event(
2013 &self,
2014 deadline: zx::MonotonicInstant,
2015 ) -> Result<ElementRunnerEvent, fidl::Error> {
2016 ElementRunnerEvent::decode(self.client.wait_for_event::<ElementRunnerMarker>(deadline)?)
2017 }
2018
2019 pub fn r#set_level(
2026 &self,
2027 mut level: u8,
2028 ___deadline: zx::MonotonicInstant,
2029 ) -> Result<(), fidl::Error> {
2030 let _response = self.client.send_query::<
2031 ElementRunnerSetLevelRequest,
2032 fidl::encoding::FlexibleType<fidl::encoding::EmptyStruct>,
2033 ElementRunnerMarker,
2034 >(
2035 (level,),
2036 0x11a93092b228f0b,
2037 fidl::encoding::DynamicFlags::FLEXIBLE,
2038 ___deadline,
2039 )?
2040 .into_result::<ElementRunnerMarker>("set_level")?;
2041 Ok(_response)
2042 }
2043}
2044
2045#[cfg(target_os = "fuchsia")]
2046impl From<ElementRunnerSynchronousProxy> for zx::NullableHandle {
2047 fn from(value: ElementRunnerSynchronousProxy) -> Self {
2048 value.into_channel().into()
2049 }
2050}
2051
2052#[cfg(target_os = "fuchsia")]
2053impl From<fidl::Channel> for ElementRunnerSynchronousProxy {
2054 fn from(value: fidl::Channel) -> Self {
2055 Self::new(value)
2056 }
2057}
2058
2059#[cfg(target_os = "fuchsia")]
2060impl fidl::endpoints::FromClient for ElementRunnerSynchronousProxy {
2061 type Protocol = ElementRunnerMarker;
2062
2063 fn from_client(value: fidl::endpoints::ClientEnd<ElementRunnerMarker>) -> Self {
2064 Self::new(value.into_channel())
2065 }
2066}
2067
2068#[derive(Debug, Clone)]
2069pub struct ElementRunnerProxy {
2070 client: fidl::client::Client<fidl::encoding::DefaultFuchsiaResourceDialect>,
2071}
2072
2073impl fidl::endpoints::Proxy for ElementRunnerProxy {
2074 type Protocol = ElementRunnerMarker;
2075
2076 fn from_channel(inner: ::fidl::AsyncChannel) -> Self {
2077 Self::new(inner)
2078 }
2079
2080 fn into_channel(self) -> Result<::fidl::AsyncChannel, Self> {
2081 self.client.into_channel().map_err(|client| Self { client })
2082 }
2083
2084 fn as_channel(&self) -> &::fidl::AsyncChannel {
2085 self.client.as_channel()
2086 }
2087}
2088
2089impl ElementRunnerProxy {
2090 pub fn new(channel: ::fidl::AsyncChannel) -> Self {
2092 let protocol_name = <ElementRunnerMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
2093 Self { client: fidl::client::Client::new(channel, protocol_name) }
2094 }
2095
2096 pub fn take_event_stream(&self) -> ElementRunnerEventStream {
2102 ElementRunnerEventStream { event_receiver: self.client.take_event_receiver() }
2103 }
2104
2105 pub fn r#set_level(
2112 &self,
2113 mut level: u8,
2114 ) -> fidl::client::QueryResponseFut<(), fidl::encoding::DefaultFuchsiaResourceDialect> {
2115 ElementRunnerProxyInterface::r#set_level(self, level)
2116 }
2117}
2118
2119impl ElementRunnerProxyInterface for ElementRunnerProxy {
2120 type SetLevelResponseFut =
2121 fidl::client::QueryResponseFut<(), fidl::encoding::DefaultFuchsiaResourceDialect>;
2122 fn r#set_level(&self, mut level: u8) -> Self::SetLevelResponseFut {
2123 fn _decode(
2124 mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
2125 ) -> Result<(), fidl::Error> {
2126 let _response = fidl::client::decode_transaction_body::<
2127 fidl::encoding::FlexibleType<fidl::encoding::EmptyStruct>,
2128 fidl::encoding::DefaultFuchsiaResourceDialect,
2129 0x11a93092b228f0b,
2130 >(_buf?)?
2131 .into_result::<ElementRunnerMarker>("set_level")?;
2132 Ok(_response)
2133 }
2134 self.client.send_query_and_decode::<ElementRunnerSetLevelRequest, ()>(
2135 (level,),
2136 0x11a93092b228f0b,
2137 fidl::encoding::DynamicFlags::FLEXIBLE,
2138 _decode,
2139 )
2140 }
2141}
2142
2143pub struct ElementRunnerEventStream {
2144 event_receiver: fidl::client::EventReceiver<fidl::encoding::DefaultFuchsiaResourceDialect>,
2145}
2146
2147impl std::marker::Unpin for ElementRunnerEventStream {}
2148
2149impl futures::stream::FusedStream for ElementRunnerEventStream {
2150 fn is_terminated(&self) -> bool {
2151 self.event_receiver.is_terminated()
2152 }
2153}
2154
2155impl futures::Stream for ElementRunnerEventStream {
2156 type Item = Result<ElementRunnerEvent, fidl::Error>;
2157
2158 fn poll_next(
2159 mut self: std::pin::Pin<&mut Self>,
2160 cx: &mut std::task::Context<'_>,
2161 ) -> std::task::Poll<Option<Self::Item>> {
2162 match futures::ready!(futures::stream::StreamExt::poll_next_unpin(
2163 &mut self.event_receiver,
2164 cx
2165 )?) {
2166 Some(buf) => std::task::Poll::Ready(Some(ElementRunnerEvent::decode(buf))),
2167 None => std::task::Poll::Ready(None),
2168 }
2169 }
2170}
2171
2172#[derive(Debug)]
2173pub enum ElementRunnerEvent {
2174 #[non_exhaustive]
2175 _UnknownEvent {
2176 ordinal: u64,
2178 },
2179}
2180
2181impl ElementRunnerEvent {
2182 fn decode(
2184 mut buf: <fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc,
2185 ) -> Result<ElementRunnerEvent, fidl::Error> {
2186 let (bytes, _handles) = buf.split_mut();
2187 let (tx_header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
2188 debug_assert_eq!(tx_header.tx_id, 0);
2189 match tx_header.ordinal {
2190 _ if tx_header.dynamic_flags().contains(fidl::encoding::DynamicFlags::FLEXIBLE) => {
2191 Ok(ElementRunnerEvent::_UnknownEvent { ordinal: tx_header.ordinal })
2192 }
2193 _ => Err(fidl::Error::UnknownOrdinal {
2194 ordinal: tx_header.ordinal,
2195 protocol_name: <ElementRunnerMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
2196 }),
2197 }
2198 }
2199}
2200
2201pub struct ElementRunnerRequestStream {
2203 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
2204 is_terminated: bool,
2205}
2206
2207impl std::marker::Unpin for ElementRunnerRequestStream {}
2208
2209impl futures::stream::FusedStream for ElementRunnerRequestStream {
2210 fn is_terminated(&self) -> bool {
2211 self.is_terminated
2212 }
2213}
2214
2215impl fidl::endpoints::RequestStream for ElementRunnerRequestStream {
2216 type Protocol = ElementRunnerMarker;
2217 type ControlHandle = ElementRunnerControlHandle;
2218
2219 fn from_channel(channel: ::fidl::AsyncChannel) -> Self {
2220 Self { inner: std::sync::Arc::new(fidl::ServeInner::new(channel)), is_terminated: false }
2221 }
2222
2223 fn control_handle(&self) -> Self::ControlHandle {
2224 ElementRunnerControlHandle { inner: self.inner.clone() }
2225 }
2226
2227 fn into_inner(
2228 self,
2229 ) -> (::std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>, bool)
2230 {
2231 (self.inner, self.is_terminated)
2232 }
2233
2234 fn from_inner(
2235 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
2236 is_terminated: bool,
2237 ) -> Self {
2238 Self { inner, is_terminated }
2239 }
2240}
2241
2242impl futures::Stream for ElementRunnerRequestStream {
2243 type Item = Result<ElementRunnerRequest, fidl::Error>;
2244
2245 fn poll_next(
2246 mut self: std::pin::Pin<&mut Self>,
2247 cx: &mut std::task::Context<'_>,
2248 ) -> std::task::Poll<Option<Self::Item>> {
2249 let this = &mut *self;
2250 if this.inner.check_shutdown(cx) {
2251 this.is_terminated = true;
2252 return std::task::Poll::Ready(None);
2253 }
2254 if this.is_terminated {
2255 panic!("polled ElementRunnerRequestStream after completion");
2256 }
2257 fidl::encoding::with_tls_decode_buf::<_, fidl::encoding::DefaultFuchsiaResourceDialect>(
2258 |bytes, handles| {
2259 match this.inner.channel().read_etc(cx, bytes, handles) {
2260 std::task::Poll::Ready(Ok(())) => {}
2261 std::task::Poll::Pending => return std::task::Poll::Pending,
2262 std::task::Poll::Ready(Err(zx_status::Status::PEER_CLOSED)) => {
2263 this.is_terminated = true;
2264 return std::task::Poll::Ready(None);
2265 }
2266 std::task::Poll::Ready(Err(e)) => {
2267 return std::task::Poll::Ready(Some(Err(fidl::Error::ServerRequestRead(
2268 e.into(),
2269 ))));
2270 }
2271 }
2272
2273 let (header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
2275
2276 std::task::Poll::Ready(Some(match header.ordinal {
2277 0x11a93092b228f0b => {
2278 header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
2279 let mut req = fidl::new_empty!(
2280 ElementRunnerSetLevelRequest,
2281 fidl::encoding::DefaultFuchsiaResourceDialect
2282 );
2283 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<ElementRunnerSetLevelRequest>(&header, _body_bytes, handles, &mut req)?;
2284 let control_handle =
2285 ElementRunnerControlHandle { inner: this.inner.clone() };
2286 Ok(ElementRunnerRequest::SetLevel {
2287 level: req.level,
2288
2289 responder: ElementRunnerSetLevelResponder {
2290 control_handle: std::mem::ManuallyDrop::new(control_handle),
2291 tx_id: header.tx_id,
2292 },
2293 })
2294 }
2295 _ if header.tx_id == 0
2296 && header
2297 .dynamic_flags()
2298 .contains(fidl::encoding::DynamicFlags::FLEXIBLE) =>
2299 {
2300 Ok(ElementRunnerRequest::_UnknownMethod {
2301 ordinal: header.ordinal,
2302 control_handle: ElementRunnerControlHandle {
2303 inner: this.inner.clone(),
2304 },
2305 method_type: fidl::MethodType::OneWay,
2306 })
2307 }
2308 _ if header
2309 .dynamic_flags()
2310 .contains(fidl::encoding::DynamicFlags::FLEXIBLE) =>
2311 {
2312 this.inner.send_framework_err(
2313 fidl::encoding::FrameworkErr::UnknownMethod,
2314 header.tx_id,
2315 header.ordinal,
2316 header.dynamic_flags(),
2317 (bytes, handles),
2318 )?;
2319 Ok(ElementRunnerRequest::_UnknownMethod {
2320 ordinal: header.ordinal,
2321 control_handle: ElementRunnerControlHandle {
2322 inner: this.inner.clone(),
2323 },
2324 method_type: fidl::MethodType::TwoWay,
2325 })
2326 }
2327 _ => Err(fidl::Error::UnknownOrdinal {
2328 ordinal: header.ordinal,
2329 protocol_name:
2330 <ElementRunnerMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
2331 }),
2332 }))
2333 },
2334 )
2335 }
2336}
2337
2338#[derive(Debug)]
2344pub enum ElementRunnerRequest {
2345 SetLevel { level: u8, responder: ElementRunnerSetLevelResponder },
2352 #[non_exhaustive]
2354 _UnknownMethod {
2355 ordinal: u64,
2357 control_handle: ElementRunnerControlHandle,
2358 method_type: fidl::MethodType,
2359 },
2360}
2361
2362impl ElementRunnerRequest {
2363 #[allow(irrefutable_let_patterns)]
2364 pub fn into_set_level(self) -> Option<(u8, ElementRunnerSetLevelResponder)> {
2365 if let ElementRunnerRequest::SetLevel { level, responder } = self {
2366 Some((level, responder))
2367 } else {
2368 None
2369 }
2370 }
2371
2372 pub fn method_name(&self) -> &'static str {
2374 match *self {
2375 ElementRunnerRequest::SetLevel { .. } => "set_level",
2376 ElementRunnerRequest::_UnknownMethod {
2377 method_type: fidl::MethodType::OneWay, ..
2378 } => "unknown one-way method",
2379 ElementRunnerRequest::_UnknownMethod {
2380 method_type: fidl::MethodType::TwoWay, ..
2381 } => "unknown two-way method",
2382 }
2383 }
2384}
2385
2386#[derive(Debug, Clone)]
2387pub struct ElementRunnerControlHandle {
2388 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
2389}
2390
2391impl ElementRunnerControlHandle {
2392 pub fn shutdown_with_epitaph(&self, status: impl Into<fidl::Epitaph>) {
2393 self.inner.shutdown_with_epitaph(status.into())
2394 }
2395}
2396
2397impl fidl::endpoints::ControlHandle for ElementRunnerControlHandle {
2398 fn shutdown(&self) {
2399 self.inner.shutdown()
2400 }
2401
2402 fn shutdown_with_epitaph(&self, status: fidl::Epitaph) {
2403 self.inner.shutdown_with_epitaph(status)
2404 }
2405
2406 fn is_closed(&self) -> bool {
2407 self.inner.channel().is_closed()
2408 }
2409 fn on_closed(&self) -> fidl::OnSignalsRef<'_> {
2410 self.inner.channel().on_closed()
2411 }
2412
2413 #[cfg(target_os = "fuchsia")]
2414 fn signal_peer(
2415 &self,
2416 clear_mask: zx::Signals,
2417 set_mask: zx::Signals,
2418 ) -> Result<(), zx_status::Status> {
2419 use fidl::Peered;
2420 self.inner.channel().signal_peer(clear_mask, set_mask)
2421 }
2422}
2423
2424impl ElementRunnerControlHandle {}
2425
2426#[must_use = "FIDL methods require a response to be sent"]
2427#[derive(Debug)]
2428pub struct ElementRunnerSetLevelResponder {
2429 control_handle: std::mem::ManuallyDrop<ElementRunnerControlHandle>,
2430 tx_id: u32,
2431}
2432
2433impl std::ops::Drop for ElementRunnerSetLevelResponder {
2437 fn drop(&mut self) {
2438 self.control_handle.shutdown();
2439 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
2441 }
2442}
2443
2444impl fidl::endpoints::Responder for ElementRunnerSetLevelResponder {
2445 type ControlHandle = ElementRunnerControlHandle;
2446
2447 fn control_handle(&self) -> &ElementRunnerControlHandle {
2448 &self.control_handle
2449 }
2450
2451 fn drop_without_shutdown(mut self) {
2452 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
2454 std::mem::forget(self);
2456 }
2457}
2458
2459impl ElementRunnerSetLevelResponder {
2460 pub fn send(self) -> Result<(), fidl::Error> {
2464 let _result = self.send_raw();
2465 if _result.is_err() {
2466 self.control_handle.shutdown();
2467 }
2468 self.drop_without_shutdown();
2469 _result
2470 }
2471
2472 pub fn send_no_shutdown_on_err(self) -> Result<(), fidl::Error> {
2474 let _result = self.send_raw();
2475 self.drop_without_shutdown();
2476 _result
2477 }
2478
2479 fn send_raw(&self) -> Result<(), fidl::Error> {
2480 self.control_handle.inner.send::<fidl::encoding::FlexibleType<fidl::encoding::EmptyStruct>>(
2481 fidl::encoding::Flexible::new(()),
2482 self.tx_id,
2483 0x11a93092b228f0b,
2484 fidl::encoding::DynamicFlags::FLEXIBLE,
2485 )
2486 }
2487}
2488
2489#[derive(Debug, Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash)]
2490pub struct LeaseControlMarker;
2491
2492impl fidl::endpoints::ProtocolMarker for LeaseControlMarker {
2493 type Proxy = LeaseControlProxy;
2494 type RequestStream = LeaseControlRequestStream;
2495 #[cfg(target_os = "fuchsia")]
2496 type SynchronousProxy = LeaseControlSynchronousProxy;
2497
2498 const DEBUG_NAME: &'static str = "(anonymous) LeaseControl";
2499}
2500
2501pub trait LeaseControlProxyInterface: Send + Sync {
2502 type WatchStatusResponseFut: std::future::Future<Output = Result<LeaseStatus, fidl::Error>>
2503 + Send;
2504 fn r#watch_status(&self, last_status: LeaseStatus) -> Self::WatchStatusResponseFut;
2505}
2506#[derive(Debug)]
2507#[cfg(target_os = "fuchsia")]
2508pub struct LeaseControlSynchronousProxy {
2509 client: fidl::client::sync::Client,
2510}
2511
2512#[cfg(target_os = "fuchsia")]
2513impl fidl::endpoints::SynchronousProxy for LeaseControlSynchronousProxy {
2514 type Proxy = LeaseControlProxy;
2515 type Protocol = LeaseControlMarker;
2516
2517 fn from_channel(inner: fidl::Channel) -> Self {
2518 Self::new(inner)
2519 }
2520
2521 fn into_channel(self) -> fidl::Channel {
2522 self.client.into_channel()
2523 }
2524
2525 fn as_channel(&self) -> &fidl::Channel {
2526 self.client.as_channel()
2527 }
2528}
2529
2530#[cfg(target_os = "fuchsia")]
2531impl LeaseControlSynchronousProxy {
2532 pub fn new(channel: fidl::Channel) -> Self {
2533 Self { client: fidl::client::sync::Client::new(channel) }
2534 }
2535
2536 pub fn into_channel(self) -> fidl::Channel {
2537 self.client.into_channel()
2538 }
2539
2540 pub fn wait_for_event(
2543 &self,
2544 deadline: zx::MonotonicInstant,
2545 ) -> Result<LeaseControlEvent, fidl::Error> {
2546 LeaseControlEvent::decode(self.client.wait_for_event::<LeaseControlMarker>(deadline)?)
2547 }
2548
2549 pub fn r#watch_status(
2554 &self,
2555 mut last_status: LeaseStatus,
2556 ___deadline: zx::MonotonicInstant,
2557 ) -> Result<LeaseStatus, fidl::Error> {
2558 let _response = self.client.send_query::<
2559 LeaseControlWatchStatusRequest,
2560 fidl::encoding::FlexibleType<LeaseControlWatchStatusResponse>,
2561 LeaseControlMarker,
2562 >(
2563 (last_status,),
2564 0x293ab9b0301ca881,
2565 fidl::encoding::DynamicFlags::FLEXIBLE,
2566 ___deadline,
2567 )?
2568 .into_result::<LeaseControlMarker>("watch_status")?;
2569 Ok(_response.status)
2570 }
2571}
2572
2573#[cfg(target_os = "fuchsia")]
2574impl From<LeaseControlSynchronousProxy> for zx::NullableHandle {
2575 fn from(value: LeaseControlSynchronousProxy) -> Self {
2576 value.into_channel().into()
2577 }
2578}
2579
2580#[cfg(target_os = "fuchsia")]
2581impl From<fidl::Channel> for LeaseControlSynchronousProxy {
2582 fn from(value: fidl::Channel) -> Self {
2583 Self::new(value)
2584 }
2585}
2586
2587#[cfg(target_os = "fuchsia")]
2588impl fidl::endpoints::FromClient for LeaseControlSynchronousProxy {
2589 type Protocol = LeaseControlMarker;
2590
2591 fn from_client(value: fidl::endpoints::ClientEnd<LeaseControlMarker>) -> Self {
2592 Self::new(value.into_channel())
2593 }
2594}
2595
2596#[derive(Debug, Clone)]
2597pub struct LeaseControlProxy {
2598 client: fidl::client::Client<fidl::encoding::DefaultFuchsiaResourceDialect>,
2599}
2600
2601impl fidl::endpoints::Proxy for LeaseControlProxy {
2602 type Protocol = LeaseControlMarker;
2603
2604 fn from_channel(inner: ::fidl::AsyncChannel) -> Self {
2605 Self::new(inner)
2606 }
2607
2608 fn into_channel(self) -> Result<::fidl::AsyncChannel, Self> {
2609 self.client.into_channel().map_err(|client| Self { client })
2610 }
2611
2612 fn as_channel(&self) -> &::fidl::AsyncChannel {
2613 self.client.as_channel()
2614 }
2615}
2616
2617impl LeaseControlProxy {
2618 pub fn new(channel: ::fidl::AsyncChannel) -> Self {
2620 let protocol_name = <LeaseControlMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
2621 Self { client: fidl::client::Client::new(channel, protocol_name) }
2622 }
2623
2624 pub fn take_event_stream(&self) -> LeaseControlEventStream {
2630 LeaseControlEventStream { event_receiver: self.client.take_event_receiver() }
2631 }
2632
2633 pub fn r#watch_status(
2638 &self,
2639 mut last_status: LeaseStatus,
2640 ) -> fidl::client::QueryResponseFut<LeaseStatus, fidl::encoding::DefaultFuchsiaResourceDialect>
2641 {
2642 LeaseControlProxyInterface::r#watch_status(self, last_status)
2643 }
2644}
2645
2646impl LeaseControlProxyInterface for LeaseControlProxy {
2647 type WatchStatusResponseFut =
2648 fidl::client::QueryResponseFut<LeaseStatus, fidl::encoding::DefaultFuchsiaResourceDialect>;
2649 fn r#watch_status(&self, mut last_status: LeaseStatus) -> Self::WatchStatusResponseFut {
2650 fn _decode(
2651 mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
2652 ) -> Result<LeaseStatus, fidl::Error> {
2653 let _response = fidl::client::decode_transaction_body::<
2654 fidl::encoding::FlexibleType<LeaseControlWatchStatusResponse>,
2655 fidl::encoding::DefaultFuchsiaResourceDialect,
2656 0x293ab9b0301ca881,
2657 >(_buf?)?
2658 .into_result::<LeaseControlMarker>("watch_status")?;
2659 Ok(_response.status)
2660 }
2661 self.client.send_query_and_decode::<LeaseControlWatchStatusRequest, LeaseStatus>(
2662 (last_status,),
2663 0x293ab9b0301ca881,
2664 fidl::encoding::DynamicFlags::FLEXIBLE,
2665 _decode,
2666 )
2667 }
2668}
2669
2670pub struct LeaseControlEventStream {
2671 event_receiver: fidl::client::EventReceiver<fidl::encoding::DefaultFuchsiaResourceDialect>,
2672}
2673
2674impl std::marker::Unpin for LeaseControlEventStream {}
2675
2676impl futures::stream::FusedStream for LeaseControlEventStream {
2677 fn is_terminated(&self) -> bool {
2678 self.event_receiver.is_terminated()
2679 }
2680}
2681
2682impl futures::Stream for LeaseControlEventStream {
2683 type Item = Result<LeaseControlEvent, fidl::Error>;
2684
2685 fn poll_next(
2686 mut self: std::pin::Pin<&mut Self>,
2687 cx: &mut std::task::Context<'_>,
2688 ) -> std::task::Poll<Option<Self::Item>> {
2689 match futures::ready!(futures::stream::StreamExt::poll_next_unpin(
2690 &mut self.event_receiver,
2691 cx
2692 )?) {
2693 Some(buf) => std::task::Poll::Ready(Some(LeaseControlEvent::decode(buf))),
2694 None => std::task::Poll::Ready(None),
2695 }
2696 }
2697}
2698
2699#[derive(Debug)]
2700pub enum LeaseControlEvent {
2701 #[non_exhaustive]
2702 _UnknownEvent {
2703 ordinal: u64,
2705 },
2706}
2707
2708impl LeaseControlEvent {
2709 fn decode(
2711 mut buf: <fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc,
2712 ) -> Result<LeaseControlEvent, fidl::Error> {
2713 let (bytes, _handles) = buf.split_mut();
2714 let (tx_header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
2715 debug_assert_eq!(tx_header.tx_id, 0);
2716 match tx_header.ordinal {
2717 _ if tx_header.dynamic_flags().contains(fidl::encoding::DynamicFlags::FLEXIBLE) => {
2718 Ok(LeaseControlEvent::_UnknownEvent { ordinal: tx_header.ordinal })
2719 }
2720 _ => Err(fidl::Error::UnknownOrdinal {
2721 ordinal: tx_header.ordinal,
2722 protocol_name: <LeaseControlMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
2723 }),
2724 }
2725 }
2726}
2727
2728pub struct LeaseControlRequestStream {
2730 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
2731 is_terminated: bool,
2732}
2733
2734impl std::marker::Unpin for LeaseControlRequestStream {}
2735
2736impl futures::stream::FusedStream for LeaseControlRequestStream {
2737 fn is_terminated(&self) -> bool {
2738 self.is_terminated
2739 }
2740}
2741
2742impl fidl::endpoints::RequestStream for LeaseControlRequestStream {
2743 type Protocol = LeaseControlMarker;
2744 type ControlHandle = LeaseControlControlHandle;
2745
2746 fn from_channel(channel: ::fidl::AsyncChannel) -> Self {
2747 Self { inner: std::sync::Arc::new(fidl::ServeInner::new(channel)), is_terminated: false }
2748 }
2749
2750 fn control_handle(&self) -> Self::ControlHandle {
2751 LeaseControlControlHandle { inner: self.inner.clone() }
2752 }
2753
2754 fn into_inner(
2755 self,
2756 ) -> (::std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>, bool)
2757 {
2758 (self.inner, self.is_terminated)
2759 }
2760
2761 fn from_inner(
2762 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
2763 is_terminated: bool,
2764 ) -> Self {
2765 Self { inner, is_terminated }
2766 }
2767}
2768
2769impl futures::Stream for LeaseControlRequestStream {
2770 type Item = Result<LeaseControlRequest, fidl::Error>;
2771
2772 fn poll_next(
2773 mut self: std::pin::Pin<&mut Self>,
2774 cx: &mut std::task::Context<'_>,
2775 ) -> std::task::Poll<Option<Self::Item>> {
2776 let this = &mut *self;
2777 if this.inner.check_shutdown(cx) {
2778 this.is_terminated = true;
2779 return std::task::Poll::Ready(None);
2780 }
2781 if this.is_terminated {
2782 panic!("polled LeaseControlRequestStream after completion");
2783 }
2784 fidl::encoding::with_tls_decode_buf::<_, fidl::encoding::DefaultFuchsiaResourceDialect>(
2785 |bytes, handles| {
2786 match this.inner.channel().read_etc(cx, bytes, handles) {
2787 std::task::Poll::Ready(Ok(())) => {}
2788 std::task::Poll::Pending => return std::task::Poll::Pending,
2789 std::task::Poll::Ready(Err(zx_status::Status::PEER_CLOSED)) => {
2790 this.is_terminated = true;
2791 return std::task::Poll::Ready(None);
2792 }
2793 std::task::Poll::Ready(Err(e)) => {
2794 return std::task::Poll::Ready(Some(Err(fidl::Error::ServerRequestRead(
2795 e.into(),
2796 ))));
2797 }
2798 }
2799
2800 let (header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
2802
2803 std::task::Poll::Ready(Some(match header.ordinal {
2804 0x293ab9b0301ca881 => {
2805 header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
2806 let mut req = fidl::new_empty!(
2807 LeaseControlWatchStatusRequest,
2808 fidl::encoding::DefaultFuchsiaResourceDialect
2809 );
2810 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<LeaseControlWatchStatusRequest>(&header, _body_bytes, handles, &mut req)?;
2811 let control_handle =
2812 LeaseControlControlHandle { inner: this.inner.clone() };
2813 Ok(LeaseControlRequest::WatchStatus {
2814 last_status: req.last_status,
2815
2816 responder: LeaseControlWatchStatusResponder {
2817 control_handle: std::mem::ManuallyDrop::new(control_handle),
2818 tx_id: header.tx_id,
2819 },
2820 })
2821 }
2822 _ if header.tx_id == 0
2823 && header
2824 .dynamic_flags()
2825 .contains(fidl::encoding::DynamicFlags::FLEXIBLE) =>
2826 {
2827 Ok(LeaseControlRequest::_UnknownMethod {
2828 ordinal: header.ordinal,
2829 control_handle: LeaseControlControlHandle { inner: this.inner.clone() },
2830 method_type: fidl::MethodType::OneWay,
2831 })
2832 }
2833 _ if header
2834 .dynamic_flags()
2835 .contains(fidl::encoding::DynamicFlags::FLEXIBLE) =>
2836 {
2837 this.inner.send_framework_err(
2838 fidl::encoding::FrameworkErr::UnknownMethod,
2839 header.tx_id,
2840 header.ordinal,
2841 header.dynamic_flags(),
2842 (bytes, handles),
2843 )?;
2844 Ok(LeaseControlRequest::_UnknownMethod {
2845 ordinal: header.ordinal,
2846 control_handle: LeaseControlControlHandle { inner: this.inner.clone() },
2847 method_type: fidl::MethodType::TwoWay,
2848 })
2849 }
2850 _ => Err(fidl::Error::UnknownOrdinal {
2851 ordinal: header.ordinal,
2852 protocol_name:
2853 <LeaseControlMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
2854 }),
2855 }))
2856 },
2857 )
2858 }
2859}
2860
2861#[derive(Debug)]
2866pub enum LeaseControlRequest {
2867 WatchStatus { last_status: LeaseStatus, responder: LeaseControlWatchStatusResponder },
2872 #[non_exhaustive]
2874 _UnknownMethod {
2875 ordinal: u64,
2877 control_handle: LeaseControlControlHandle,
2878 method_type: fidl::MethodType,
2879 },
2880}
2881
2882impl LeaseControlRequest {
2883 #[allow(irrefutable_let_patterns)]
2884 pub fn into_watch_status(self) -> Option<(LeaseStatus, LeaseControlWatchStatusResponder)> {
2885 if let LeaseControlRequest::WatchStatus { last_status, responder } = self {
2886 Some((last_status, responder))
2887 } else {
2888 None
2889 }
2890 }
2891
2892 pub fn method_name(&self) -> &'static str {
2894 match *self {
2895 LeaseControlRequest::WatchStatus { .. } => "watch_status",
2896 LeaseControlRequest::_UnknownMethod {
2897 method_type: fidl::MethodType::OneWay, ..
2898 } => "unknown one-way method",
2899 LeaseControlRequest::_UnknownMethod {
2900 method_type: fidl::MethodType::TwoWay, ..
2901 } => "unknown two-way method",
2902 }
2903 }
2904}
2905
2906#[derive(Debug, Clone)]
2907pub struct LeaseControlControlHandle {
2908 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
2909}
2910
2911impl LeaseControlControlHandle {
2912 pub fn shutdown_with_epitaph(&self, status: impl Into<fidl::Epitaph>) {
2913 self.inner.shutdown_with_epitaph(status.into())
2914 }
2915}
2916
2917impl fidl::endpoints::ControlHandle for LeaseControlControlHandle {
2918 fn shutdown(&self) {
2919 self.inner.shutdown()
2920 }
2921
2922 fn shutdown_with_epitaph(&self, status: fidl::Epitaph) {
2923 self.inner.shutdown_with_epitaph(status)
2924 }
2925
2926 fn is_closed(&self) -> bool {
2927 self.inner.channel().is_closed()
2928 }
2929 fn on_closed(&self) -> fidl::OnSignalsRef<'_> {
2930 self.inner.channel().on_closed()
2931 }
2932
2933 #[cfg(target_os = "fuchsia")]
2934 fn signal_peer(
2935 &self,
2936 clear_mask: zx::Signals,
2937 set_mask: zx::Signals,
2938 ) -> Result<(), zx_status::Status> {
2939 use fidl::Peered;
2940 self.inner.channel().signal_peer(clear_mask, set_mask)
2941 }
2942}
2943
2944impl LeaseControlControlHandle {}
2945
2946#[must_use = "FIDL methods require a response to be sent"]
2947#[derive(Debug)]
2948pub struct LeaseControlWatchStatusResponder {
2949 control_handle: std::mem::ManuallyDrop<LeaseControlControlHandle>,
2950 tx_id: u32,
2951}
2952
2953impl std::ops::Drop for LeaseControlWatchStatusResponder {
2957 fn drop(&mut self) {
2958 self.control_handle.shutdown();
2959 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
2961 }
2962}
2963
2964impl fidl::endpoints::Responder for LeaseControlWatchStatusResponder {
2965 type ControlHandle = LeaseControlControlHandle;
2966
2967 fn control_handle(&self) -> &LeaseControlControlHandle {
2968 &self.control_handle
2969 }
2970
2971 fn drop_without_shutdown(mut self) {
2972 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
2974 std::mem::forget(self);
2976 }
2977}
2978
2979impl LeaseControlWatchStatusResponder {
2980 pub fn send(self, mut status: LeaseStatus) -> Result<(), fidl::Error> {
2984 let _result = self.send_raw(status);
2985 if _result.is_err() {
2986 self.control_handle.shutdown();
2987 }
2988 self.drop_without_shutdown();
2989 _result
2990 }
2991
2992 pub fn send_no_shutdown_on_err(self, mut status: LeaseStatus) -> Result<(), fidl::Error> {
2994 let _result = self.send_raw(status);
2995 self.drop_without_shutdown();
2996 _result
2997 }
2998
2999 fn send_raw(&self, mut status: LeaseStatus) -> Result<(), fidl::Error> {
3000 self.control_handle
3001 .inner
3002 .send::<fidl::encoding::FlexibleType<LeaseControlWatchStatusResponse>>(
3003 fidl::encoding::Flexible::new((status,)),
3004 self.tx_id,
3005 0x293ab9b0301ca881,
3006 fidl::encoding::DynamicFlags::FLEXIBLE,
3007 )
3008 }
3009}
3010
3011#[derive(Debug, Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash)]
3012pub struct LessorMarker;
3013
3014impl fidl::endpoints::ProtocolMarker for LessorMarker {
3015 type Proxy = LessorProxy;
3016 type RequestStream = LessorRequestStream;
3017 #[cfg(target_os = "fuchsia")]
3018 type SynchronousProxy = LessorSynchronousProxy;
3019
3020 const DEBUG_NAME: &'static str = "(anonymous) Lessor";
3021}
3022pub type LessorLeaseResult = Result<fidl::endpoints::ClientEnd<LeaseControlMarker>, LeaseError>;
3023
3024pub trait LessorProxyInterface: Send + Sync {
3025 type LeaseResponseFut: std::future::Future<Output = Result<LessorLeaseResult, fidl::Error>>
3026 + Send;
3027 fn r#lease(&self, level: u8) -> Self::LeaseResponseFut;
3028}
3029#[derive(Debug)]
3030#[cfg(target_os = "fuchsia")]
3031pub struct LessorSynchronousProxy {
3032 client: fidl::client::sync::Client,
3033}
3034
3035#[cfg(target_os = "fuchsia")]
3036impl fidl::endpoints::SynchronousProxy for LessorSynchronousProxy {
3037 type Proxy = LessorProxy;
3038 type Protocol = LessorMarker;
3039
3040 fn from_channel(inner: fidl::Channel) -> Self {
3041 Self::new(inner)
3042 }
3043
3044 fn into_channel(self) -> fidl::Channel {
3045 self.client.into_channel()
3046 }
3047
3048 fn as_channel(&self) -> &fidl::Channel {
3049 self.client.as_channel()
3050 }
3051}
3052
3053#[cfg(target_os = "fuchsia")]
3054impl LessorSynchronousProxy {
3055 pub fn new(channel: fidl::Channel) -> Self {
3056 Self { client: fidl::client::sync::Client::new(channel) }
3057 }
3058
3059 pub fn into_channel(self) -> fidl::Channel {
3060 self.client.into_channel()
3061 }
3062
3063 pub fn wait_for_event(
3066 &self,
3067 deadline: zx::MonotonicInstant,
3068 ) -> Result<LessorEvent, fidl::Error> {
3069 LessorEvent::decode(self.client.wait_for_event::<LessorMarker>(deadline)?)
3070 }
3071
3072 pub fn r#lease(
3084 &self,
3085 mut level: u8,
3086 ___deadline: zx::MonotonicInstant,
3087 ) -> Result<LessorLeaseResult, fidl::Error> {
3088 let _response = self.client.send_query::<
3089 LessorLeaseRequest,
3090 fidl::encoding::FlexibleResultType<LessorLeaseResponse, LeaseError>,
3091 LessorMarker,
3092 >(
3093 (level,),
3094 0x38999f84b2f1f9ad,
3095 fidl::encoding::DynamicFlags::FLEXIBLE,
3096 ___deadline,
3097 )?
3098 .into_result::<LessorMarker>("lease")?;
3099 Ok(_response.map(|x| x.lease_control))
3100 }
3101}
3102
3103#[cfg(target_os = "fuchsia")]
3104impl From<LessorSynchronousProxy> for zx::NullableHandle {
3105 fn from(value: LessorSynchronousProxy) -> Self {
3106 value.into_channel().into()
3107 }
3108}
3109
3110#[cfg(target_os = "fuchsia")]
3111impl From<fidl::Channel> for LessorSynchronousProxy {
3112 fn from(value: fidl::Channel) -> Self {
3113 Self::new(value)
3114 }
3115}
3116
3117#[cfg(target_os = "fuchsia")]
3118impl fidl::endpoints::FromClient for LessorSynchronousProxy {
3119 type Protocol = LessorMarker;
3120
3121 fn from_client(value: fidl::endpoints::ClientEnd<LessorMarker>) -> Self {
3122 Self::new(value.into_channel())
3123 }
3124}
3125
3126#[derive(Debug, Clone)]
3127pub struct LessorProxy {
3128 client: fidl::client::Client<fidl::encoding::DefaultFuchsiaResourceDialect>,
3129}
3130
3131impl fidl::endpoints::Proxy for LessorProxy {
3132 type Protocol = LessorMarker;
3133
3134 fn from_channel(inner: ::fidl::AsyncChannel) -> Self {
3135 Self::new(inner)
3136 }
3137
3138 fn into_channel(self) -> Result<::fidl::AsyncChannel, Self> {
3139 self.client.into_channel().map_err(|client| Self { client })
3140 }
3141
3142 fn as_channel(&self) -> &::fidl::AsyncChannel {
3143 self.client.as_channel()
3144 }
3145}
3146
3147impl LessorProxy {
3148 pub fn new(channel: ::fidl::AsyncChannel) -> Self {
3150 let protocol_name = <LessorMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
3151 Self { client: fidl::client::Client::new(channel, protocol_name) }
3152 }
3153
3154 pub fn take_event_stream(&self) -> LessorEventStream {
3160 LessorEventStream { event_receiver: self.client.take_event_receiver() }
3161 }
3162
3163 pub fn r#lease(
3175 &self,
3176 mut level: u8,
3177 ) -> fidl::client::QueryResponseFut<
3178 LessorLeaseResult,
3179 fidl::encoding::DefaultFuchsiaResourceDialect,
3180 > {
3181 LessorProxyInterface::r#lease(self, level)
3182 }
3183}
3184
3185impl LessorProxyInterface for LessorProxy {
3186 type LeaseResponseFut = fidl::client::QueryResponseFut<
3187 LessorLeaseResult,
3188 fidl::encoding::DefaultFuchsiaResourceDialect,
3189 >;
3190 fn r#lease(&self, mut level: u8) -> Self::LeaseResponseFut {
3191 fn _decode(
3192 mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
3193 ) -> Result<LessorLeaseResult, fidl::Error> {
3194 let _response = fidl::client::decode_transaction_body::<
3195 fidl::encoding::FlexibleResultType<LessorLeaseResponse, LeaseError>,
3196 fidl::encoding::DefaultFuchsiaResourceDialect,
3197 0x38999f84b2f1f9ad,
3198 >(_buf?)?
3199 .into_result::<LessorMarker>("lease")?;
3200 Ok(_response.map(|x| x.lease_control))
3201 }
3202 self.client.send_query_and_decode::<LessorLeaseRequest, LessorLeaseResult>(
3203 (level,),
3204 0x38999f84b2f1f9ad,
3205 fidl::encoding::DynamicFlags::FLEXIBLE,
3206 _decode,
3207 )
3208 }
3209}
3210
3211pub struct LessorEventStream {
3212 event_receiver: fidl::client::EventReceiver<fidl::encoding::DefaultFuchsiaResourceDialect>,
3213}
3214
3215impl std::marker::Unpin for LessorEventStream {}
3216
3217impl futures::stream::FusedStream for LessorEventStream {
3218 fn is_terminated(&self) -> bool {
3219 self.event_receiver.is_terminated()
3220 }
3221}
3222
3223impl futures::Stream for LessorEventStream {
3224 type Item = Result<LessorEvent, fidl::Error>;
3225
3226 fn poll_next(
3227 mut self: std::pin::Pin<&mut Self>,
3228 cx: &mut std::task::Context<'_>,
3229 ) -> std::task::Poll<Option<Self::Item>> {
3230 match futures::ready!(futures::stream::StreamExt::poll_next_unpin(
3231 &mut self.event_receiver,
3232 cx
3233 )?) {
3234 Some(buf) => std::task::Poll::Ready(Some(LessorEvent::decode(buf))),
3235 None => std::task::Poll::Ready(None),
3236 }
3237 }
3238}
3239
3240#[derive(Debug)]
3241pub enum LessorEvent {
3242 #[non_exhaustive]
3243 _UnknownEvent {
3244 ordinal: u64,
3246 },
3247}
3248
3249impl LessorEvent {
3250 fn decode(
3252 mut buf: <fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc,
3253 ) -> Result<LessorEvent, fidl::Error> {
3254 let (bytes, _handles) = buf.split_mut();
3255 let (tx_header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
3256 debug_assert_eq!(tx_header.tx_id, 0);
3257 match tx_header.ordinal {
3258 _ if tx_header.dynamic_flags().contains(fidl::encoding::DynamicFlags::FLEXIBLE) => {
3259 Ok(LessorEvent::_UnknownEvent { ordinal: tx_header.ordinal })
3260 }
3261 _ => Err(fidl::Error::UnknownOrdinal {
3262 ordinal: tx_header.ordinal,
3263 protocol_name: <LessorMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
3264 }),
3265 }
3266 }
3267}
3268
3269pub struct LessorRequestStream {
3271 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
3272 is_terminated: bool,
3273}
3274
3275impl std::marker::Unpin for LessorRequestStream {}
3276
3277impl futures::stream::FusedStream for LessorRequestStream {
3278 fn is_terminated(&self) -> bool {
3279 self.is_terminated
3280 }
3281}
3282
3283impl fidl::endpoints::RequestStream for LessorRequestStream {
3284 type Protocol = LessorMarker;
3285 type ControlHandle = LessorControlHandle;
3286
3287 fn from_channel(channel: ::fidl::AsyncChannel) -> Self {
3288 Self { inner: std::sync::Arc::new(fidl::ServeInner::new(channel)), is_terminated: false }
3289 }
3290
3291 fn control_handle(&self) -> Self::ControlHandle {
3292 LessorControlHandle { inner: self.inner.clone() }
3293 }
3294
3295 fn into_inner(
3296 self,
3297 ) -> (::std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>, bool)
3298 {
3299 (self.inner, self.is_terminated)
3300 }
3301
3302 fn from_inner(
3303 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
3304 is_terminated: bool,
3305 ) -> Self {
3306 Self { inner, is_terminated }
3307 }
3308}
3309
3310impl futures::Stream for LessorRequestStream {
3311 type Item = Result<LessorRequest, fidl::Error>;
3312
3313 fn poll_next(
3314 mut self: std::pin::Pin<&mut Self>,
3315 cx: &mut std::task::Context<'_>,
3316 ) -> std::task::Poll<Option<Self::Item>> {
3317 let this = &mut *self;
3318 if this.inner.check_shutdown(cx) {
3319 this.is_terminated = true;
3320 return std::task::Poll::Ready(None);
3321 }
3322 if this.is_terminated {
3323 panic!("polled LessorRequestStream after completion");
3324 }
3325 fidl::encoding::with_tls_decode_buf::<_, fidl::encoding::DefaultFuchsiaResourceDialect>(
3326 |bytes, handles| {
3327 match this.inner.channel().read_etc(cx, bytes, handles) {
3328 std::task::Poll::Ready(Ok(())) => {}
3329 std::task::Poll::Pending => return std::task::Poll::Pending,
3330 std::task::Poll::Ready(Err(zx_status::Status::PEER_CLOSED)) => {
3331 this.is_terminated = true;
3332 return std::task::Poll::Ready(None);
3333 }
3334 std::task::Poll::Ready(Err(e)) => {
3335 return std::task::Poll::Ready(Some(Err(fidl::Error::ServerRequestRead(
3336 e.into(),
3337 ))));
3338 }
3339 }
3340
3341 let (header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
3343
3344 std::task::Poll::Ready(Some(match header.ordinal {
3345 0x38999f84b2f1f9ad => {
3346 header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
3347 let mut req = fidl::new_empty!(
3348 LessorLeaseRequest,
3349 fidl::encoding::DefaultFuchsiaResourceDialect
3350 );
3351 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<LessorLeaseRequest>(&header, _body_bytes, handles, &mut req)?;
3352 let control_handle = LessorControlHandle { inner: this.inner.clone() };
3353 Ok(LessorRequest::Lease {
3354 level: req.level,
3355
3356 responder: LessorLeaseResponder {
3357 control_handle: std::mem::ManuallyDrop::new(control_handle),
3358 tx_id: header.tx_id,
3359 },
3360 })
3361 }
3362 _ if header.tx_id == 0
3363 && header
3364 .dynamic_flags()
3365 .contains(fidl::encoding::DynamicFlags::FLEXIBLE) =>
3366 {
3367 Ok(LessorRequest::_UnknownMethod {
3368 ordinal: header.ordinal,
3369 control_handle: LessorControlHandle { inner: this.inner.clone() },
3370 method_type: fidl::MethodType::OneWay,
3371 })
3372 }
3373 _ if header
3374 .dynamic_flags()
3375 .contains(fidl::encoding::DynamicFlags::FLEXIBLE) =>
3376 {
3377 this.inner.send_framework_err(
3378 fidl::encoding::FrameworkErr::UnknownMethod,
3379 header.tx_id,
3380 header.ordinal,
3381 header.dynamic_flags(),
3382 (bytes, handles),
3383 )?;
3384 Ok(LessorRequest::_UnknownMethod {
3385 ordinal: header.ordinal,
3386 control_handle: LessorControlHandle { inner: this.inner.clone() },
3387 method_type: fidl::MethodType::TwoWay,
3388 })
3389 }
3390 _ => Err(fidl::Error::UnknownOrdinal {
3391 ordinal: header.ordinal,
3392 protocol_name:
3393 <LessorMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
3394 }),
3395 }))
3396 },
3397 )
3398 }
3399}
3400
3401#[derive(Debug)]
3405pub enum LessorRequest {
3406 Lease { level: u8, responder: LessorLeaseResponder },
3418 #[non_exhaustive]
3420 _UnknownMethod {
3421 ordinal: u64,
3423 control_handle: LessorControlHandle,
3424 method_type: fidl::MethodType,
3425 },
3426}
3427
3428impl LessorRequest {
3429 #[allow(irrefutable_let_patterns)]
3430 pub fn into_lease(self) -> Option<(u8, LessorLeaseResponder)> {
3431 if let LessorRequest::Lease { level, responder } = self {
3432 Some((level, responder))
3433 } else {
3434 None
3435 }
3436 }
3437
3438 pub fn method_name(&self) -> &'static str {
3440 match *self {
3441 LessorRequest::Lease { .. } => "lease",
3442 LessorRequest::_UnknownMethod { method_type: fidl::MethodType::OneWay, .. } => {
3443 "unknown one-way method"
3444 }
3445 LessorRequest::_UnknownMethod { method_type: fidl::MethodType::TwoWay, .. } => {
3446 "unknown two-way method"
3447 }
3448 }
3449 }
3450}
3451
3452#[derive(Debug, Clone)]
3453pub struct LessorControlHandle {
3454 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
3455}
3456
3457impl LessorControlHandle {
3458 pub fn shutdown_with_epitaph(&self, status: impl Into<fidl::Epitaph>) {
3459 self.inner.shutdown_with_epitaph(status.into())
3460 }
3461}
3462
3463impl fidl::endpoints::ControlHandle for LessorControlHandle {
3464 fn shutdown(&self) {
3465 self.inner.shutdown()
3466 }
3467
3468 fn shutdown_with_epitaph(&self, status: fidl::Epitaph) {
3469 self.inner.shutdown_with_epitaph(status)
3470 }
3471
3472 fn is_closed(&self) -> bool {
3473 self.inner.channel().is_closed()
3474 }
3475 fn on_closed(&self) -> fidl::OnSignalsRef<'_> {
3476 self.inner.channel().on_closed()
3477 }
3478
3479 #[cfg(target_os = "fuchsia")]
3480 fn signal_peer(
3481 &self,
3482 clear_mask: zx::Signals,
3483 set_mask: zx::Signals,
3484 ) -> Result<(), zx_status::Status> {
3485 use fidl::Peered;
3486 self.inner.channel().signal_peer(clear_mask, set_mask)
3487 }
3488}
3489
3490impl LessorControlHandle {}
3491
3492#[must_use = "FIDL methods require a response to be sent"]
3493#[derive(Debug)]
3494pub struct LessorLeaseResponder {
3495 control_handle: std::mem::ManuallyDrop<LessorControlHandle>,
3496 tx_id: u32,
3497}
3498
3499impl std::ops::Drop for LessorLeaseResponder {
3503 fn drop(&mut self) {
3504 self.control_handle.shutdown();
3505 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
3507 }
3508}
3509
3510impl fidl::endpoints::Responder for LessorLeaseResponder {
3511 type ControlHandle = LessorControlHandle;
3512
3513 fn control_handle(&self) -> &LessorControlHandle {
3514 &self.control_handle
3515 }
3516
3517 fn drop_without_shutdown(mut self) {
3518 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
3520 std::mem::forget(self);
3522 }
3523}
3524
3525impl LessorLeaseResponder {
3526 pub fn send(
3530 self,
3531 mut result: Result<fidl::endpoints::ClientEnd<LeaseControlMarker>, LeaseError>,
3532 ) -> Result<(), fidl::Error> {
3533 let _result = self.send_raw(result);
3534 if _result.is_err() {
3535 self.control_handle.shutdown();
3536 }
3537 self.drop_without_shutdown();
3538 _result
3539 }
3540
3541 pub fn send_no_shutdown_on_err(
3543 self,
3544 mut result: Result<fidl::endpoints::ClientEnd<LeaseControlMarker>, LeaseError>,
3545 ) -> Result<(), fidl::Error> {
3546 let _result = self.send_raw(result);
3547 self.drop_without_shutdown();
3548 _result
3549 }
3550
3551 fn send_raw(
3552 &self,
3553 mut result: Result<fidl::endpoints::ClientEnd<LeaseControlMarker>, LeaseError>,
3554 ) -> Result<(), fidl::Error> {
3555 self.control_handle
3556 .inner
3557 .send::<fidl::encoding::FlexibleResultType<LessorLeaseResponse, LeaseError>>(
3558 fidl::encoding::FlexibleResult::new(result.map(|lease_control| (lease_control,))),
3559 self.tx_id,
3560 0x38999f84b2f1f9ad,
3561 fidl::encoding::DynamicFlags::FLEXIBLE,
3562 )
3563 }
3564}
3565
3566#[derive(Debug, Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash)]
3567pub struct StatusMarker;
3568
3569impl fidl::endpoints::ProtocolMarker for StatusMarker {
3570 type Proxy = StatusProxy;
3571 type RequestStream = StatusRequestStream;
3572 #[cfg(target_os = "fuchsia")]
3573 type SynchronousProxy = StatusSynchronousProxy;
3574
3575 const DEBUG_NAME: &'static str = "(anonymous) Status";
3576}
3577pub type StatusWatchPowerLevelResult = Result<u8, StatusError>;
3578
3579pub trait StatusProxyInterface: Send + Sync {
3580 type WatchPowerLevelResponseFut: std::future::Future<Output = Result<StatusWatchPowerLevelResult, fidl::Error>>
3581 + Send;
3582 fn r#watch_power_level(&self) -> Self::WatchPowerLevelResponseFut;
3583}
3584#[derive(Debug)]
3585#[cfg(target_os = "fuchsia")]
3586pub struct StatusSynchronousProxy {
3587 client: fidl::client::sync::Client,
3588}
3589
3590#[cfg(target_os = "fuchsia")]
3591impl fidl::endpoints::SynchronousProxy for StatusSynchronousProxy {
3592 type Proxy = StatusProxy;
3593 type Protocol = StatusMarker;
3594
3595 fn from_channel(inner: fidl::Channel) -> Self {
3596 Self::new(inner)
3597 }
3598
3599 fn into_channel(self) -> fidl::Channel {
3600 self.client.into_channel()
3601 }
3602
3603 fn as_channel(&self) -> &fidl::Channel {
3604 self.client.as_channel()
3605 }
3606}
3607
3608#[cfg(target_os = "fuchsia")]
3609impl StatusSynchronousProxy {
3610 pub fn new(channel: fidl::Channel) -> Self {
3611 Self { client: fidl::client::sync::Client::new(channel) }
3612 }
3613
3614 pub fn into_channel(self) -> fidl::Channel {
3615 self.client.into_channel()
3616 }
3617
3618 pub fn wait_for_event(
3621 &self,
3622 deadline: zx::MonotonicInstant,
3623 ) -> Result<StatusEvent, fidl::Error> {
3624 StatusEvent::decode(self.client.wait_for_event::<StatusMarker>(deadline)?)
3625 }
3626
3627 pub fn r#watch_power_level(
3631 &self,
3632 ___deadline: zx::MonotonicInstant,
3633 ) -> Result<StatusWatchPowerLevelResult, fidl::Error> {
3634 let _response = self.client.send_query::<
3635 fidl::encoding::EmptyPayload,
3636 fidl::encoding::FlexibleResultType<StatusWatchPowerLevelResponse, StatusError>,
3637 StatusMarker,
3638 >(
3639 (),
3640 0x2f11ba8df9b5614e,
3641 fidl::encoding::DynamicFlags::FLEXIBLE,
3642 ___deadline,
3643 )?
3644 .into_result::<StatusMarker>("watch_power_level")?;
3645 Ok(_response.map(|x| x.current_level))
3646 }
3647}
3648
3649#[cfg(target_os = "fuchsia")]
3650impl From<StatusSynchronousProxy> for zx::NullableHandle {
3651 fn from(value: StatusSynchronousProxy) -> Self {
3652 value.into_channel().into()
3653 }
3654}
3655
3656#[cfg(target_os = "fuchsia")]
3657impl From<fidl::Channel> for StatusSynchronousProxy {
3658 fn from(value: fidl::Channel) -> Self {
3659 Self::new(value)
3660 }
3661}
3662
3663#[cfg(target_os = "fuchsia")]
3664impl fidl::endpoints::FromClient for StatusSynchronousProxy {
3665 type Protocol = StatusMarker;
3666
3667 fn from_client(value: fidl::endpoints::ClientEnd<StatusMarker>) -> Self {
3668 Self::new(value.into_channel())
3669 }
3670}
3671
3672#[derive(Debug, Clone)]
3673pub struct StatusProxy {
3674 client: fidl::client::Client<fidl::encoding::DefaultFuchsiaResourceDialect>,
3675}
3676
3677impl fidl::endpoints::Proxy for StatusProxy {
3678 type Protocol = StatusMarker;
3679
3680 fn from_channel(inner: ::fidl::AsyncChannel) -> Self {
3681 Self::new(inner)
3682 }
3683
3684 fn into_channel(self) -> Result<::fidl::AsyncChannel, Self> {
3685 self.client.into_channel().map_err(|client| Self { client })
3686 }
3687
3688 fn as_channel(&self) -> &::fidl::AsyncChannel {
3689 self.client.as_channel()
3690 }
3691}
3692
3693impl StatusProxy {
3694 pub fn new(channel: ::fidl::AsyncChannel) -> Self {
3696 let protocol_name = <StatusMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
3697 Self { client: fidl::client::Client::new(channel, protocol_name) }
3698 }
3699
3700 pub fn take_event_stream(&self) -> StatusEventStream {
3706 StatusEventStream { event_receiver: self.client.take_event_receiver() }
3707 }
3708
3709 pub fn r#watch_power_level(
3713 &self,
3714 ) -> fidl::client::QueryResponseFut<
3715 StatusWatchPowerLevelResult,
3716 fidl::encoding::DefaultFuchsiaResourceDialect,
3717 > {
3718 StatusProxyInterface::r#watch_power_level(self)
3719 }
3720}
3721
3722impl StatusProxyInterface for StatusProxy {
3723 type WatchPowerLevelResponseFut = fidl::client::QueryResponseFut<
3724 StatusWatchPowerLevelResult,
3725 fidl::encoding::DefaultFuchsiaResourceDialect,
3726 >;
3727 fn r#watch_power_level(&self) -> Self::WatchPowerLevelResponseFut {
3728 fn _decode(
3729 mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
3730 ) -> Result<StatusWatchPowerLevelResult, fidl::Error> {
3731 let _response = fidl::client::decode_transaction_body::<
3732 fidl::encoding::FlexibleResultType<StatusWatchPowerLevelResponse, StatusError>,
3733 fidl::encoding::DefaultFuchsiaResourceDialect,
3734 0x2f11ba8df9b5614e,
3735 >(_buf?)?
3736 .into_result::<StatusMarker>("watch_power_level")?;
3737 Ok(_response.map(|x| x.current_level))
3738 }
3739 self.client
3740 .send_query_and_decode::<fidl::encoding::EmptyPayload, StatusWatchPowerLevelResult>(
3741 (),
3742 0x2f11ba8df9b5614e,
3743 fidl::encoding::DynamicFlags::FLEXIBLE,
3744 _decode,
3745 )
3746 }
3747}
3748
3749pub struct StatusEventStream {
3750 event_receiver: fidl::client::EventReceiver<fidl::encoding::DefaultFuchsiaResourceDialect>,
3751}
3752
3753impl std::marker::Unpin for StatusEventStream {}
3754
3755impl futures::stream::FusedStream for StatusEventStream {
3756 fn is_terminated(&self) -> bool {
3757 self.event_receiver.is_terminated()
3758 }
3759}
3760
3761impl futures::Stream for StatusEventStream {
3762 type Item = Result<StatusEvent, fidl::Error>;
3763
3764 fn poll_next(
3765 mut self: std::pin::Pin<&mut Self>,
3766 cx: &mut std::task::Context<'_>,
3767 ) -> std::task::Poll<Option<Self::Item>> {
3768 match futures::ready!(futures::stream::StreamExt::poll_next_unpin(
3769 &mut self.event_receiver,
3770 cx
3771 )?) {
3772 Some(buf) => std::task::Poll::Ready(Some(StatusEvent::decode(buf))),
3773 None => std::task::Poll::Ready(None),
3774 }
3775 }
3776}
3777
3778#[derive(Debug)]
3779pub enum StatusEvent {
3780 #[non_exhaustive]
3781 _UnknownEvent {
3782 ordinal: u64,
3784 },
3785}
3786
3787impl StatusEvent {
3788 fn decode(
3790 mut buf: <fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc,
3791 ) -> Result<StatusEvent, fidl::Error> {
3792 let (bytes, _handles) = buf.split_mut();
3793 let (tx_header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
3794 debug_assert_eq!(tx_header.tx_id, 0);
3795 match tx_header.ordinal {
3796 _ if tx_header.dynamic_flags().contains(fidl::encoding::DynamicFlags::FLEXIBLE) => {
3797 Ok(StatusEvent::_UnknownEvent { ordinal: tx_header.ordinal })
3798 }
3799 _ => Err(fidl::Error::UnknownOrdinal {
3800 ordinal: tx_header.ordinal,
3801 protocol_name: <StatusMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
3802 }),
3803 }
3804 }
3805}
3806
3807pub struct StatusRequestStream {
3809 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
3810 is_terminated: bool,
3811}
3812
3813impl std::marker::Unpin for StatusRequestStream {}
3814
3815impl futures::stream::FusedStream for StatusRequestStream {
3816 fn is_terminated(&self) -> bool {
3817 self.is_terminated
3818 }
3819}
3820
3821impl fidl::endpoints::RequestStream for StatusRequestStream {
3822 type Protocol = StatusMarker;
3823 type ControlHandle = StatusControlHandle;
3824
3825 fn from_channel(channel: ::fidl::AsyncChannel) -> Self {
3826 Self { inner: std::sync::Arc::new(fidl::ServeInner::new(channel)), is_terminated: false }
3827 }
3828
3829 fn control_handle(&self) -> Self::ControlHandle {
3830 StatusControlHandle { inner: self.inner.clone() }
3831 }
3832
3833 fn into_inner(
3834 self,
3835 ) -> (::std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>, bool)
3836 {
3837 (self.inner, self.is_terminated)
3838 }
3839
3840 fn from_inner(
3841 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
3842 is_terminated: bool,
3843 ) -> Self {
3844 Self { inner, is_terminated }
3845 }
3846}
3847
3848impl futures::Stream for StatusRequestStream {
3849 type Item = Result<StatusRequest, fidl::Error>;
3850
3851 fn poll_next(
3852 mut self: std::pin::Pin<&mut Self>,
3853 cx: &mut std::task::Context<'_>,
3854 ) -> std::task::Poll<Option<Self::Item>> {
3855 let this = &mut *self;
3856 if this.inner.check_shutdown(cx) {
3857 this.is_terminated = true;
3858 return std::task::Poll::Ready(None);
3859 }
3860 if this.is_terminated {
3861 panic!("polled StatusRequestStream after completion");
3862 }
3863 fidl::encoding::with_tls_decode_buf::<_, fidl::encoding::DefaultFuchsiaResourceDialect>(
3864 |bytes, handles| {
3865 match this.inner.channel().read_etc(cx, bytes, handles) {
3866 std::task::Poll::Ready(Ok(())) => {}
3867 std::task::Poll::Pending => return std::task::Poll::Pending,
3868 std::task::Poll::Ready(Err(zx_status::Status::PEER_CLOSED)) => {
3869 this.is_terminated = true;
3870 return std::task::Poll::Ready(None);
3871 }
3872 std::task::Poll::Ready(Err(e)) => {
3873 return std::task::Poll::Ready(Some(Err(fidl::Error::ServerRequestRead(
3874 e.into(),
3875 ))));
3876 }
3877 }
3878
3879 let (header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
3881
3882 std::task::Poll::Ready(Some(match header.ordinal {
3883 0x2f11ba8df9b5614e => {
3884 header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
3885 let mut req = fidl::new_empty!(
3886 fidl::encoding::EmptyPayload,
3887 fidl::encoding::DefaultFuchsiaResourceDialect
3888 );
3889 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
3890 let control_handle = StatusControlHandle { inner: this.inner.clone() };
3891 Ok(StatusRequest::WatchPowerLevel {
3892 responder: StatusWatchPowerLevelResponder {
3893 control_handle: std::mem::ManuallyDrop::new(control_handle),
3894 tx_id: header.tx_id,
3895 },
3896 })
3897 }
3898 _ if header.tx_id == 0
3899 && header
3900 .dynamic_flags()
3901 .contains(fidl::encoding::DynamicFlags::FLEXIBLE) =>
3902 {
3903 Ok(StatusRequest::_UnknownMethod {
3904 ordinal: header.ordinal,
3905 control_handle: StatusControlHandle { inner: this.inner.clone() },
3906 method_type: fidl::MethodType::OneWay,
3907 })
3908 }
3909 _ if header
3910 .dynamic_flags()
3911 .contains(fidl::encoding::DynamicFlags::FLEXIBLE) =>
3912 {
3913 this.inner.send_framework_err(
3914 fidl::encoding::FrameworkErr::UnknownMethod,
3915 header.tx_id,
3916 header.ordinal,
3917 header.dynamic_flags(),
3918 (bytes, handles),
3919 )?;
3920 Ok(StatusRequest::_UnknownMethod {
3921 ordinal: header.ordinal,
3922 control_handle: StatusControlHandle { inner: this.inner.clone() },
3923 method_type: fidl::MethodType::TwoWay,
3924 })
3925 }
3926 _ => Err(fidl::Error::UnknownOrdinal {
3927 ordinal: header.ordinal,
3928 protocol_name:
3929 <StatusMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
3930 }),
3931 }))
3932 },
3933 )
3934 }
3935}
3936
3937#[derive(Debug)]
3943pub enum StatusRequest {
3944 WatchPowerLevel { responder: StatusWatchPowerLevelResponder },
3948 #[non_exhaustive]
3950 _UnknownMethod {
3951 ordinal: u64,
3953 control_handle: StatusControlHandle,
3954 method_type: fidl::MethodType,
3955 },
3956}
3957
3958impl StatusRequest {
3959 #[allow(irrefutable_let_patterns)]
3960 pub fn into_watch_power_level(self) -> Option<(StatusWatchPowerLevelResponder)> {
3961 if let StatusRequest::WatchPowerLevel { responder } = self {
3962 Some((responder))
3963 } else {
3964 None
3965 }
3966 }
3967
3968 pub fn method_name(&self) -> &'static str {
3970 match *self {
3971 StatusRequest::WatchPowerLevel { .. } => "watch_power_level",
3972 StatusRequest::_UnknownMethod { method_type: fidl::MethodType::OneWay, .. } => {
3973 "unknown one-way method"
3974 }
3975 StatusRequest::_UnknownMethod { method_type: fidl::MethodType::TwoWay, .. } => {
3976 "unknown two-way method"
3977 }
3978 }
3979 }
3980}
3981
3982#[derive(Debug, Clone)]
3983pub struct StatusControlHandle {
3984 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
3985}
3986
3987impl StatusControlHandle {
3988 pub fn shutdown_with_epitaph(&self, status: impl Into<fidl::Epitaph>) {
3989 self.inner.shutdown_with_epitaph(status.into())
3990 }
3991}
3992
3993impl fidl::endpoints::ControlHandle for StatusControlHandle {
3994 fn shutdown(&self) {
3995 self.inner.shutdown()
3996 }
3997
3998 fn shutdown_with_epitaph(&self, status: fidl::Epitaph) {
3999 self.inner.shutdown_with_epitaph(status)
4000 }
4001
4002 fn is_closed(&self) -> bool {
4003 self.inner.channel().is_closed()
4004 }
4005 fn on_closed(&self) -> fidl::OnSignalsRef<'_> {
4006 self.inner.channel().on_closed()
4007 }
4008
4009 #[cfg(target_os = "fuchsia")]
4010 fn signal_peer(
4011 &self,
4012 clear_mask: zx::Signals,
4013 set_mask: zx::Signals,
4014 ) -> Result<(), zx_status::Status> {
4015 use fidl::Peered;
4016 self.inner.channel().signal_peer(clear_mask, set_mask)
4017 }
4018}
4019
4020impl StatusControlHandle {}
4021
4022#[must_use = "FIDL methods require a response to be sent"]
4023#[derive(Debug)]
4024pub struct StatusWatchPowerLevelResponder {
4025 control_handle: std::mem::ManuallyDrop<StatusControlHandle>,
4026 tx_id: u32,
4027}
4028
4029impl std::ops::Drop for StatusWatchPowerLevelResponder {
4033 fn drop(&mut self) {
4034 self.control_handle.shutdown();
4035 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
4037 }
4038}
4039
4040impl fidl::endpoints::Responder for StatusWatchPowerLevelResponder {
4041 type ControlHandle = StatusControlHandle;
4042
4043 fn control_handle(&self) -> &StatusControlHandle {
4044 &self.control_handle
4045 }
4046
4047 fn drop_without_shutdown(mut self) {
4048 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
4050 std::mem::forget(self);
4052 }
4053}
4054
4055impl StatusWatchPowerLevelResponder {
4056 pub fn send(self, mut result: Result<u8, StatusError>) -> Result<(), fidl::Error> {
4060 let _result = self.send_raw(result);
4061 if _result.is_err() {
4062 self.control_handle.shutdown();
4063 }
4064 self.drop_without_shutdown();
4065 _result
4066 }
4067
4068 pub fn send_no_shutdown_on_err(
4070 self,
4071 mut result: Result<u8, StatusError>,
4072 ) -> Result<(), fidl::Error> {
4073 let _result = self.send_raw(result);
4074 self.drop_without_shutdown();
4075 _result
4076 }
4077
4078 fn send_raw(&self, mut result: Result<u8, StatusError>) -> Result<(), fidl::Error> {
4079 self.control_handle.inner.send::<fidl::encoding::FlexibleResultType<
4080 StatusWatchPowerLevelResponse,
4081 StatusError,
4082 >>(
4083 fidl::encoding::FlexibleResult::new(result.map(|current_level| (current_level,))),
4084 self.tx_id,
4085 0x2f11ba8df9b5614e,
4086 fidl::encoding::DynamicFlags::FLEXIBLE,
4087 )
4088 }
4089}
4090
4091#[derive(Debug, Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash)]
4092pub struct TopologyMarker;
4093
4094impl fidl::endpoints::ProtocolMarker for TopologyMarker {
4095 type Proxy = TopologyProxy;
4096 type RequestStream = TopologyRequestStream;
4097 #[cfg(target_os = "fuchsia")]
4098 type SynchronousProxy = TopologySynchronousProxy;
4099
4100 const DEBUG_NAME: &'static str = "fuchsia.power.broker.Topology";
4101}
4102impl fidl::endpoints::DiscoverableProtocolMarker for TopologyMarker {}
4103pub type TopologyAddElementResult = Result<(), AddElementError>;
4104pub type TopologyLeaseResult = Result<(), LeaseError>;
4105
4106pub trait TopologyProxyInterface: Send + Sync {
4107 type AddElementResponseFut: std::future::Future<Output = Result<TopologyAddElementResult, fidl::Error>>
4108 + Send;
4109 fn r#add_element(&self, payload: ElementSchema) -> Self::AddElementResponseFut;
4110 type LeaseResponseFut: std::future::Future<Output = Result<TopologyLeaseResult, fidl::Error>>
4111 + Send;
4112 fn r#lease(&self, payload: LeaseSchema) -> Self::LeaseResponseFut;
4113}
4114#[derive(Debug)]
4115#[cfg(target_os = "fuchsia")]
4116pub struct TopologySynchronousProxy {
4117 client: fidl::client::sync::Client,
4118}
4119
4120#[cfg(target_os = "fuchsia")]
4121impl fidl::endpoints::SynchronousProxy for TopologySynchronousProxy {
4122 type Proxy = TopologyProxy;
4123 type Protocol = TopologyMarker;
4124
4125 fn from_channel(inner: fidl::Channel) -> Self {
4126 Self::new(inner)
4127 }
4128
4129 fn into_channel(self) -> fidl::Channel {
4130 self.client.into_channel()
4131 }
4132
4133 fn as_channel(&self) -> &fidl::Channel {
4134 self.client.as_channel()
4135 }
4136}
4137
4138#[cfg(target_os = "fuchsia")]
4139impl TopologySynchronousProxy {
4140 pub fn new(channel: fidl::Channel) -> Self {
4141 Self { client: fidl::client::sync::Client::new(channel) }
4142 }
4143
4144 pub fn into_channel(self) -> fidl::Channel {
4145 self.client.into_channel()
4146 }
4147
4148 pub fn wait_for_event(
4151 &self,
4152 deadline: zx::MonotonicInstant,
4153 ) -> Result<TopologyEvent, fidl::Error> {
4154 TopologyEvent::decode(self.client.wait_for_event::<TopologyMarker>(deadline)?)
4155 }
4156
4157 pub fn r#add_element(
4160 &self,
4161 mut payload: ElementSchema,
4162 ___deadline: zx::MonotonicInstant,
4163 ) -> Result<TopologyAddElementResult, fidl::Error> {
4164 let _response = self.client.send_query::<
4165 ElementSchema,
4166 fidl::encoding::FlexibleResultType<fidl::encoding::EmptyStruct, AddElementError>,
4167 TopologyMarker,
4168 >(
4169 &mut payload,
4170 0x269ed93c9e87fa03,
4171 fidl::encoding::DynamicFlags::FLEXIBLE,
4172 ___deadline,
4173 )?
4174 .into_result::<TopologyMarker>("add_element")?;
4175 Ok(_response.map(|x| x))
4176 }
4177
4178 pub fn r#lease(
4181 &self,
4182 mut payload: LeaseSchema,
4183 ___deadline: zx::MonotonicInstant,
4184 ) -> Result<TopologyLeaseResult, fidl::Error> {
4185 let _response = self.client.send_query::<
4186 LeaseSchema,
4187 fidl::encoding::FlexibleResultType<fidl::encoding::EmptyStruct, LeaseError>,
4188 TopologyMarker,
4189 >(
4190 &mut payload,
4191 0x7f39c02fb9775330,
4192 fidl::encoding::DynamicFlags::FLEXIBLE,
4193 ___deadline,
4194 )?
4195 .into_result::<TopologyMarker>("lease")?;
4196 Ok(_response.map(|x| x))
4197 }
4198}
4199
4200#[cfg(target_os = "fuchsia")]
4201impl From<TopologySynchronousProxy> for zx::NullableHandle {
4202 fn from(value: TopologySynchronousProxy) -> Self {
4203 value.into_channel().into()
4204 }
4205}
4206
4207#[cfg(target_os = "fuchsia")]
4208impl From<fidl::Channel> for TopologySynchronousProxy {
4209 fn from(value: fidl::Channel) -> Self {
4210 Self::new(value)
4211 }
4212}
4213
4214#[cfg(target_os = "fuchsia")]
4215impl fidl::endpoints::FromClient for TopologySynchronousProxy {
4216 type Protocol = TopologyMarker;
4217
4218 fn from_client(value: fidl::endpoints::ClientEnd<TopologyMarker>) -> Self {
4219 Self::new(value.into_channel())
4220 }
4221}
4222
4223#[derive(Debug, Clone)]
4224pub struct TopologyProxy {
4225 client: fidl::client::Client<fidl::encoding::DefaultFuchsiaResourceDialect>,
4226}
4227
4228impl fidl::endpoints::Proxy for TopologyProxy {
4229 type Protocol = TopologyMarker;
4230
4231 fn from_channel(inner: ::fidl::AsyncChannel) -> Self {
4232 Self::new(inner)
4233 }
4234
4235 fn into_channel(self) -> Result<::fidl::AsyncChannel, Self> {
4236 self.client.into_channel().map_err(|client| Self { client })
4237 }
4238
4239 fn as_channel(&self) -> &::fidl::AsyncChannel {
4240 self.client.as_channel()
4241 }
4242}
4243
4244impl TopologyProxy {
4245 pub fn new(channel: ::fidl::AsyncChannel) -> Self {
4247 let protocol_name = <TopologyMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
4248 Self { client: fidl::client::Client::new(channel, protocol_name) }
4249 }
4250
4251 pub fn take_event_stream(&self) -> TopologyEventStream {
4257 TopologyEventStream { event_receiver: self.client.take_event_receiver() }
4258 }
4259
4260 pub fn r#add_element(
4263 &self,
4264 mut payload: ElementSchema,
4265 ) -> fidl::client::QueryResponseFut<
4266 TopologyAddElementResult,
4267 fidl::encoding::DefaultFuchsiaResourceDialect,
4268 > {
4269 TopologyProxyInterface::r#add_element(self, payload)
4270 }
4271
4272 pub fn r#lease(
4275 &self,
4276 mut payload: LeaseSchema,
4277 ) -> fidl::client::QueryResponseFut<
4278 TopologyLeaseResult,
4279 fidl::encoding::DefaultFuchsiaResourceDialect,
4280 > {
4281 TopologyProxyInterface::r#lease(self, payload)
4282 }
4283}
4284
4285impl TopologyProxyInterface for TopologyProxy {
4286 type AddElementResponseFut = fidl::client::QueryResponseFut<
4287 TopologyAddElementResult,
4288 fidl::encoding::DefaultFuchsiaResourceDialect,
4289 >;
4290 fn r#add_element(&self, mut payload: ElementSchema) -> Self::AddElementResponseFut {
4291 fn _decode(
4292 mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
4293 ) -> Result<TopologyAddElementResult, fidl::Error> {
4294 let _response = fidl::client::decode_transaction_body::<
4295 fidl::encoding::FlexibleResultType<fidl::encoding::EmptyStruct, AddElementError>,
4296 fidl::encoding::DefaultFuchsiaResourceDialect,
4297 0x269ed93c9e87fa03,
4298 >(_buf?)?
4299 .into_result::<TopologyMarker>("add_element")?;
4300 Ok(_response.map(|x| x))
4301 }
4302 self.client.send_query_and_decode::<ElementSchema, TopologyAddElementResult>(
4303 &mut payload,
4304 0x269ed93c9e87fa03,
4305 fidl::encoding::DynamicFlags::FLEXIBLE,
4306 _decode,
4307 )
4308 }
4309
4310 type LeaseResponseFut = fidl::client::QueryResponseFut<
4311 TopologyLeaseResult,
4312 fidl::encoding::DefaultFuchsiaResourceDialect,
4313 >;
4314 fn r#lease(&self, mut payload: LeaseSchema) -> Self::LeaseResponseFut {
4315 fn _decode(
4316 mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
4317 ) -> Result<TopologyLeaseResult, fidl::Error> {
4318 let _response = fidl::client::decode_transaction_body::<
4319 fidl::encoding::FlexibleResultType<fidl::encoding::EmptyStruct, LeaseError>,
4320 fidl::encoding::DefaultFuchsiaResourceDialect,
4321 0x7f39c02fb9775330,
4322 >(_buf?)?
4323 .into_result::<TopologyMarker>("lease")?;
4324 Ok(_response.map(|x| x))
4325 }
4326 self.client.send_query_and_decode::<LeaseSchema, TopologyLeaseResult>(
4327 &mut payload,
4328 0x7f39c02fb9775330,
4329 fidl::encoding::DynamicFlags::FLEXIBLE,
4330 _decode,
4331 )
4332 }
4333}
4334
4335pub struct TopologyEventStream {
4336 event_receiver: fidl::client::EventReceiver<fidl::encoding::DefaultFuchsiaResourceDialect>,
4337}
4338
4339impl std::marker::Unpin for TopologyEventStream {}
4340
4341impl futures::stream::FusedStream for TopologyEventStream {
4342 fn is_terminated(&self) -> bool {
4343 self.event_receiver.is_terminated()
4344 }
4345}
4346
4347impl futures::Stream for TopologyEventStream {
4348 type Item = Result<TopologyEvent, fidl::Error>;
4349
4350 fn poll_next(
4351 mut self: std::pin::Pin<&mut Self>,
4352 cx: &mut std::task::Context<'_>,
4353 ) -> std::task::Poll<Option<Self::Item>> {
4354 match futures::ready!(futures::stream::StreamExt::poll_next_unpin(
4355 &mut self.event_receiver,
4356 cx
4357 )?) {
4358 Some(buf) => std::task::Poll::Ready(Some(TopologyEvent::decode(buf))),
4359 None => std::task::Poll::Ready(None),
4360 }
4361 }
4362}
4363
4364#[derive(Debug)]
4365pub enum TopologyEvent {
4366 #[non_exhaustive]
4367 _UnknownEvent {
4368 ordinal: u64,
4370 },
4371}
4372
4373impl TopologyEvent {
4374 fn decode(
4376 mut buf: <fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc,
4377 ) -> Result<TopologyEvent, fidl::Error> {
4378 let (bytes, _handles) = buf.split_mut();
4379 let (tx_header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
4380 debug_assert_eq!(tx_header.tx_id, 0);
4381 match tx_header.ordinal {
4382 _ if tx_header.dynamic_flags().contains(fidl::encoding::DynamicFlags::FLEXIBLE) => {
4383 Ok(TopologyEvent::_UnknownEvent { ordinal: tx_header.ordinal })
4384 }
4385 _ => Err(fidl::Error::UnknownOrdinal {
4386 ordinal: tx_header.ordinal,
4387 protocol_name: <TopologyMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
4388 }),
4389 }
4390 }
4391}
4392
4393pub struct TopologyRequestStream {
4395 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
4396 is_terminated: bool,
4397}
4398
4399impl std::marker::Unpin for TopologyRequestStream {}
4400
4401impl futures::stream::FusedStream for TopologyRequestStream {
4402 fn is_terminated(&self) -> bool {
4403 self.is_terminated
4404 }
4405}
4406
4407impl fidl::endpoints::RequestStream for TopologyRequestStream {
4408 type Protocol = TopologyMarker;
4409 type ControlHandle = TopologyControlHandle;
4410
4411 fn from_channel(channel: ::fidl::AsyncChannel) -> Self {
4412 Self { inner: std::sync::Arc::new(fidl::ServeInner::new(channel)), is_terminated: false }
4413 }
4414
4415 fn control_handle(&self) -> Self::ControlHandle {
4416 TopologyControlHandle { inner: self.inner.clone() }
4417 }
4418
4419 fn into_inner(
4420 self,
4421 ) -> (::std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>, bool)
4422 {
4423 (self.inner, self.is_terminated)
4424 }
4425
4426 fn from_inner(
4427 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
4428 is_terminated: bool,
4429 ) -> Self {
4430 Self { inner, is_terminated }
4431 }
4432}
4433
4434impl futures::Stream for TopologyRequestStream {
4435 type Item = Result<TopologyRequest, fidl::Error>;
4436
4437 fn poll_next(
4438 mut self: std::pin::Pin<&mut Self>,
4439 cx: &mut std::task::Context<'_>,
4440 ) -> std::task::Poll<Option<Self::Item>> {
4441 let this = &mut *self;
4442 if this.inner.check_shutdown(cx) {
4443 this.is_terminated = true;
4444 return std::task::Poll::Ready(None);
4445 }
4446 if this.is_terminated {
4447 panic!("polled TopologyRequestStream after completion");
4448 }
4449 fidl::encoding::with_tls_decode_buf::<_, fidl::encoding::DefaultFuchsiaResourceDialect>(
4450 |bytes, handles| {
4451 match this.inner.channel().read_etc(cx, bytes, handles) {
4452 std::task::Poll::Ready(Ok(())) => {}
4453 std::task::Poll::Pending => return std::task::Poll::Pending,
4454 std::task::Poll::Ready(Err(zx_status::Status::PEER_CLOSED)) => {
4455 this.is_terminated = true;
4456 return std::task::Poll::Ready(None);
4457 }
4458 std::task::Poll::Ready(Err(e)) => {
4459 return std::task::Poll::Ready(Some(Err(fidl::Error::ServerRequestRead(
4460 e.into(),
4461 ))));
4462 }
4463 }
4464
4465 let (header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
4467
4468 std::task::Poll::Ready(Some(match header.ordinal {
4469 0x269ed93c9e87fa03 => {
4470 header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
4471 let mut req = fidl::new_empty!(
4472 ElementSchema,
4473 fidl::encoding::DefaultFuchsiaResourceDialect
4474 );
4475 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<ElementSchema>(&header, _body_bytes, handles, &mut req)?;
4476 let control_handle = TopologyControlHandle { inner: this.inner.clone() };
4477 Ok(TopologyRequest::AddElement {
4478 payload: req,
4479 responder: TopologyAddElementResponder {
4480 control_handle: std::mem::ManuallyDrop::new(control_handle),
4481 tx_id: header.tx_id,
4482 },
4483 })
4484 }
4485 0x7f39c02fb9775330 => {
4486 header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
4487 let mut req = fidl::new_empty!(
4488 LeaseSchema,
4489 fidl::encoding::DefaultFuchsiaResourceDialect
4490 );
4491 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<LeaseSchema>(&header, _body_bytes, handles, &mut req)?;
4492 let control_handle = TopologyControlHandle { inner: this.inner.clone() };
4493 Ok(TopologyRequest::Lease {
4494 payload: req,
4495 responder: TopologyLeaseResponder {
4496 control_handle: std::mem::ManuallyDrop::new(control_handle),
4497 tx_id: header.tx_id,
4498 },
4499 })
4500 }
4501 _ if header.tx_id == 0
4502 && header
4503 .dynamic_flags()
4504 .contains(fidl::encoding::DynamicFlags::FLEXIBLE) =>
4505 {
4506 Ok(TopologyRequest::_UnknownMethod {
4507 ordinal: header.ordinal,
4508 control_handle: TopologyControlHandle { inner: this.inner.clone() },
4509 method_type: fidl::MethodType::OneWay,
4510 })
4511 }
4512 _ if header
4513 .dynamic_flags()
4514 .contains(fidl::encoding::DynamicFlags::FLEXIBLE) =>
4515 {
4516 this.inner.send_framework_err(
4517 fidl::encoding::FrameworkErr::UnknownMethod,
4518 header.tx_id,
4519 header.ordinal,
4520 header.dynamic_flags(),
4521 (bytes, handles),
4522 )?;
4523 Ok(TopologyRequest::_UnknownMethod {
4524 ordinal: header.ordinal,
4525 control_handle: TopologyControlHandle { inner: this.inner.clone() },
4526 method_type: fidl::MethodType::TwoWay,
4527 })
4528 }
4529 _ => Err(fidl::Error::UnknownOrdinal {
4530 ordinal: header.ordinal,
4531 protocol_name:
4532 <TopologyMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
4533 }),
4534 }))
4535 },
4536 )
4537 }
4538}
4539
4540#[derive(Debug)]
4546pub enum TopologyRequest {
4547 AddElement { payload: ElementSchema, responder: TopologyAddElementResponder },
4550 Lease { payload: LeaseSchema, responder: TopologyLeaseResponder },
4553 #[non_exhaustive]
4555 _UnknownMethod {
4556 ordinal: u64,
4558 control_handle: TopologyControlHandle,
4559 method_type: fidl::MethodType,
4560 },
4561}
4562
4563impl TopologyRequest {
4564 #[allow(irrefutable_let_patterns)]
4565 pub fn into_add_element(self) -> Option<(ElementSchema, TopologyAddElementResponder)> {
4566 if let TopologyRequest::AddElement { payload, responder } = self {
4567 Some((payload, responder))
4568 } else {
4569 None
4570 }
4571 }
4572
4573 #[allow(irrefutable_let_patterns)]
4574 pub fn into_lease(self) -> Option<(LeaseSchema, TopologyLeaseResponder)> {
4575 if let TopologyRequest::Lease { payload, responder } = self {
4576 Some((payload, responder))
4577 } else {
4578 None
4579 }
4580 }
4581
4582 pub fn method_name(&self) -> &'static str {
4584 match *self {
4585 TopologyRequest::AddElement { .. } => "add_element",
4586 TopologyRequest::Lease { .. } => "lease",
4587 TopologyRequest::_UnknownMethod { method_type: fidl::MethodType::OneWay, .. } => {
4588 "unknown one-way method"
4589 }
4590 TopologyRequest::_UnknownMethod { method_type: fidl::MethodType::TwoWay, .. } => {
4591 "unknown two-way method"
4592 }
4593 }
4594 }
4595}
4596
4597#[derive(Debug, Clone)]
4598pub struct TopologyControlHandle {
4599 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
4600}
4601
4602impl TopologyControlHandle {
4603 pub fn shutdown_with_epitaph(&self, status: impl Into<fidl::Epitaph>) {
4604 self.inner.shutdown_with_epitaph(status.into())
4605 }
4606}
4607
4608impl fidl::endpoints::ControlHandle for TopologyControlHandle {
4609 fn shutdown(&self) {
4610 self.inner.shutdown()
4611 }
4612
4613 fn shutdown_with_epitaph(&self, status: fidl::Epitaph) {
4614 self.inner.shutdown_with_epitaph(status)
4615 }
4616
4617 fn is_closed(&self) -> bool {
4618 self.inner.channel().is_closed()
4619 }
4620 fn on_closed(&self) -> fidl::OnSignalsRef<'_> {
4621 self.inner.channel().on_closed()
4622 }
4623
4624 #[cfg(target_os = "fuchsia")]
4625 fn signal_peer(
4626 &self,
4627 clear_mask: zx::Signals,
4628 set_mask: zx::Signals,
4629 ) -> Result<(), zx_status::Status> {
4630 use fidl::Peered;
4631 self.inner.channel().signal_peer(clear_mask, set_mask)
4632 }
4633}
4634
4635impl TopologyControlHandle {}
4636
4637#[must_use = "FIDL methods require a response to be sent"]
4638#[derive(Debug)]
4639pub struct TopologyAddElementResponder {
4640 control_handle: std::mem::ManuallyDrop<TopologyControlHandle>,
4641 tx_id: u32,
4642}
4643
4644impl std::ops::Drop for TopologyAddElementResponder {
4648 fn drop(&mut self) {
4649 self.control_handle.shutdown();
4650 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
4652 }
4653}
4654
4655impl fidl::endpoints::Responder for TopologyAddElementResponder {
4656 type ControlHandle = TopologyControlHandle;
4657
4658 fn control_handle(&self) -> &TopologyControlHandle {
4659 &self.control_handle
4660 }
4661
4662 fn drop_without_shutdown(mut self) {
4663 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
4665 std::mem::forget(self);
4667 }
4668}
4669
4670impl TopologyAddElementResponder {
4671 pub fn send(self, mut result: Result<(), AddElementError>) -> Result<(), fidl::Error> {
4675 let _result = self.send_raw(result);
4676 if _result.is_err() {
4677 self.control_handle.shutdown();
4678 }
4679 self.drop_without_shutdown();
4680 _result
4681 }
4682
4683 pub fn send_no_shutdown_on_err(
4685 self,
4686 mut result: Result<(), AddElementError>,
4687 ) -> Result<(), fidl::Error> {
4688 let _result = self.send_raw(result);
4689 self.drop_without_shutdown();
4690 _result
4691 }
4692
4693 fn send_raw(&self, mut result: Result<(), AddElementError>) -> Result<(), fidl::Error> {
4694 self.control_handle.inner.send::<fidl::encoding::FlexibleResultType<
4695 fidl::encoding::EmptyStruct,
4696 AddElementError,
4697 >>(
4698 fidl::encoding::FlexibleResult::new(result),
4699 self.tx_id,
4700 0x269ed93c9e87fa03,
4701 fidl::encoding::DynamicFlags::FLEXIBLE,
4702 )
4703 }
4704}
4705
4706#[must_use = "FIDL methods require a response to be sent"]
4707#[derive(Debug)]
4708pub struct TopologyLeaseResponder {
4709 control_handle: std::mem::ManuallyDrop<TopologyControlHandle>,
4710 tx_id: u32,
4711}
4712
4713impl std::ops::Drop for TopologyLeaseResponder {
4717 fn drop(&mut self) {
4718 self.control_handle.shutdown();
4719 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
4721 }
4722}
4723
4724impl fidl::endpoints::Responder for TopologyLeaseResponder {
4725 type ControlHandle = TopologyControlHandle;
4726
4727 fn control_handle(&self) -> &TopologyControlHandle {
4728 &self.control_handle
4729 }
4730
4731 fn drop_without_shutdown(mut self) {
4732 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
4734 std::mem::forget(self);
4736 }
4737}
4738
4739impl TopologyLeaseResponder {
4740 pub fn send(self, mut result: Result<(), LeaseError>) -> Result<(), fidl::Error> {
4744 let _result = self.send_raw(result);
4745 if _result.is_err() {
4746 self.control_handle.shutdown();
4747 }
4748 self.drop_without_shutdown();
4749 _result
4750 }
4751
4752 pub fn send_no_shutdown_on_err(
4754 self,
4755 mut result: Result<(), LeaseError>,
4756 ) -> Result<(), fidl::Error> {
4757 let _result = self.send_raw(result);
4758 self.drop_without_shutdown();
4759 _result
4760 }
4761
4762 fn send_raw(&self, mut result: Result<(), LeaseError>) -> Result<(), fidl::Error> {
4763 self.control_handle.inner.send::<fidl::encoding::FlexibleResultType<
4764 fidl::encoding::EmptyStruct,
4765 LeaseError,
4766 >>(
4767 fidl::encoding::FlexibleResult::new(result),
4768 self.tx_id,
4769 0x7f39c02fb9775330,
4770 fidl::encoding::DynamicFlags::FLEXIBLE,
4771 )
4772 }
4773}
4774
4775#[derive(Debug, Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash)]
4776pub struct ElementInfoProviderServiceMarker;
4777
4778#[cfg(target_os = "fuchsia")]
4779impl fidl::endpoints::ServiceMarker for ElementInfoProviderServiceMarker {
4780 type Proxy = ElementInfoProviderServiceProxy;
4781 type Request = ElementInfoProviderServiceRequest;
4782 const SERVICE_NAME: &'static str = "fuchsia.power.broker.ElementInfoProviderService";
4783}
4784
4785#[cfg(target_os = "fuchsia")]
4788pub enum ElementInfoProviderServiceRequest {
4789 StatusProvider(ElementInfoProviderRequestStream),
4790}
4791
4792#[cfg(target_os = "fuchsia")]
4793impl fidl::endpoints::ServiceRequest for ElementInfoProviderServiceRequest {
4794 type Service = ElementInfoProviderServiceMarker;
4795
4796 fn dispatch(name: &str, _channel: fidl::AsyncChannel) -> Self {
4797 match name {
4798 "status_provider" => Self::StatusProvider(
4799 <ElementInfoProviderRequestStream as fidl::endpoints::RequestStream>::from_channel(
4800 _channel,
4801 ),
4802 ),
4803 _ => panic!("no such member protocol name for service ElementInfoProviderService"),
4804 }
4805 }
4806
4807 fn member_names() -> &'static [&'static str] {
4808 &["status_provider"]
4809 }
4810}
4811#[cfg(target_os = "fuchsia")]
4812pub struct ElementInfoProviderServiceProxy(
4813 #[allow(dead_code)] Box<dyn fidl::endpoints::MemberOpener>,
4814);
4815
4816#[cfg(target_os = "fuchsia")]
4817impl fidl::endpoints::ServiceProxy for ElementInfoProviderServiceProxy {
4818 type Service = ElementInfoProviderServiceMarker;
4819
4820 fn from_member_opener(opener: Box<dyn fidl::endpoints::MemberOpener>) -> Self {
4821 Self(opener)
4822 }
4823}
4824
4825#[cfg(target_os = "fuchsia")]
4826impl ElementInfoProviderServiceProxy {
4827 pub fn connect_to_status_provider(&self) -> Result<ElementInfoProviderProxy, fidl::Error> {
4828 let (proxy, server_end) = fidl::endpoints::create_proxy::<ElementInfoProviderMarker>();
4829 self.connect_channel_to_status_provider(server_end)?;
4830 Ok(proxy)
4831 }
4832
4833 pub fn connect_to_status_provider_sync(
4836 &self,
4837 ) -> Result<ElementInfoProviderSynchronousProxy, fidl::Error> {
4838 let (proxy, server_end) = fidl::endpoints::create_sync_proxy::<ElementInfoProviderMarker>();
4839 self.connect_channel_to_status_provider(server_end)?;
4840 Ok(proxy)
4841 }
4842
4843 pub fn connect_channel_to_status_provider(
4846 &self,
4847 server_end: fidl::endpoints::ServerEnd<ElementInfoProviderMarker>,
4848 ) -> Result<(), fidl::Error> {
4849 self.0.open_member("status_provider", server_end.into_channel())
4850 }
4851
4852 pub fn instance_name(&self) -> &str {
4853 self.0.instance_name()
4854 }
4855}
4856
4857mod internal {
4858 use super::*;
4859
4860 impl fidl::encoding::ResourceTypeMarker for ElementControlOpenStatusChannelRequest {
4861 type Borrowed<'a> = &'a mut Self;
4862 fn take_or_borrow<'a>(
4863 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
4864 ) -> Self::Borrowed<'a> {
4865 value
4866 }
4867 }
4868
4869 unsafe impl fidl::encoding::TypeMarker for ElementControlOpenStatusChannelRequest {
4870 type Owned = Self;
4871
4872 #[inline(always)]
4873 fn inline_align(_context: fidl::encoding::Context) -> usize {
4874 4
4875 }
4876
4877 #[inline(always)]
4878 fn inline_size(_context: fidl::encoding::Context) -> usize {
4879 4
4880 }
4881 }
4882
4883 unsafe impl
4884 fidl::encoding::Encode<
4885 ElementControlOpenStatusChannelRequest,
4886 fidl::encoding::DefaultFuchsiaResourceDialect,
4887 > for &mut ElementControlOpenStatusChannelRequest
4888 {
4889 #[inline]
4890 unsafe fn encode(
4891 self,
4892 encoder: &mut fidl::encoding::Encoder<
4893 '_,
4894 fidl::encoding::DefaultFuchsiaResourceDialect,
4895 >,
4896 offset: usize,
4897 _depth: fidl::encoding::Depth,
4898 ) -> fidl::Result<()> {
4899 encoder.debug_check_bounds::<ElementControlOpenStatusChannelRequest>(offset);
4900 fidl::encoding::Encode::<ElementControlOpenStatusChannelRequest, fidl::encoding::DefaultFuchsiaResourceDialect>::encode(
4902 (
4903 <fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<StatusMarker>> as fidl::encoding::ResourceTypeMarker>::take_or_borrow(&mut self.status_channel),
4904 ),
4905 encoder, offset, _depth
4906 )
4907 }
4908 }
4909 unsafe impl<
4910 T0: fidl::encoding::Encode<
4911 fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<StatusMarker>>,
4912 fidl::encoding::DefaultFuchsiaResourceDialect,
4913 >,
4914 >
4915 fidl::encoding::Encode<
4916 ElementControlOpenStatusChannelRequest,
4917 fidl::encoding::DefaultFuchsiaResourceDialect,
4918 > for (T0,)
4919 {
4920 #[inline]
4921 unsafe fn encode(
4922 self,
4923 encoder: &mut fidl::encoding::Encoder<
4924 '_,
4925 fidl::encoding::DefaultFuchsiaResourceDialect,
4926 >,
4927 offset: usize,
4928 depth: fidl::encoding::Depth,
4929 ) -> fidl::Result<()> {
4930 encoder.debug_check_bounds::<ElementControlOpenStatusChannelRequest>(offset);
4931 self.0.encode(encoder, offset + 0, depth)?;
4935 Ok(())
4936 }
4937 }
4938
4939 impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
4940 for ElementControlOpenStatusChannelRequest
4941 {
4942 #[inline(always)]
4943 fn new_empty() -> Self {
4944 Self {
4945 status_channel: fidl::new_empty!(
4946 fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<StatusMarker>>,
4947 fidl::encoding::DefaultFuchsiaResourceDialect
4948 ),
4949 }
4950 }
4951
4952 #[inline]
4953 unsafe fn decode(
4954 &mut self,
4955 decoder: &mut fidl::encoding::Decoder<
4956 '_,
4957 fidl::encoding::DefaultFuchsiaResourceDialect,
4958 >,
4959 offset: usize,
4960 _depth: fidl::encoding::Depth,
4961 ) -> fidl::Result<()> {
4962 decoder.debug_check_bounds::<Self>(offset);
4963 fidl::decode!(
4965 fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<StatusMarker>>,
4966 fidl::encoding::DefaultFuchsiaResourceDialect,
4967 &mut self.status_channel,
4968 decoder,
4969 offset + 0,
4970 _depth
4971 )?;
4972 Ok(())
4973 }
4974 }
4975
4976 impl fidl::encoding::ResourceTypeMarker for ElementControlRegisterDependencyTokenRequest {
4977 type Borrowed<'a> = &'a mut Self;
4978 fn take_or_borrow<'a>(
4979 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
4980 ) -> Self::Borrowed<'a> {
4981 value
4982 }
4983 }
4984
4985 unsafe impl fidl::encoding::TypeMarker for ElementControlRegisterDependencyTokenRequest {
4986 type Owned = Self;
4987
4988 #[inline(always)]
4989 fn inline_align(_context: fidl::encoding::Context) -> usize {
4990 4
4991 }
4992
4993 #[inline(always)]
4994 fn inline_size(_context: fidl::encoding::Context) -> usize {
4995 4
4996 }
4997 }
4998
4999 unsafe impl
5000 fidl::encoding::Encode<
5001 ElementControlRegisterDependencyTokenRequest,
5002 fidl::encoding::DefaultFuchsiaResourceDialect,
5003 > for &mut ElementControlRegisterDependencyTokenRequest
5004 {
5005 #[inline]
5006 unsafe fn encode(
5007 self,
5008 encoder: &mut fidl::encoding::Encoder<
5009 '_,
5010 fidl::encoding::DefaultFuchsiaResourceDialect,
5011 >,
5012 offset: usize,
5013 _depth: fidl::encoding::Depth,
5014 ) -> fidl::Result<()> {
5015 encoder.debug_check_bounds::<ElementControlRegisterDependencyTokenRequest>(offset);
5016 fidl::encoding::Encode::<
5018 ElementControlRegisterDependencyTokenRequest,
5019 fidl::encoding::DefaultFuchsiaResourceDialect,
5020 >::encode(
5021 (<fidl::encoding::HandleType<
5022 fidl::Event,
5023 { fidl::ObjectType::EVENT.into_raw() },
5024 2147483648,
5025 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow(
5026 &mut self.token
5027 ),),
5028 encoder,
5029 offset,
5030 _depth,
5031 )
5032 }
5033 }
5034 unsafe impl<
5035 T0: fidl::encoding::Encode<
5036 fidl::encoding::HandleType<
5037 fidl::Event,
5038 { fidl::ObjectType::EVENT.into_raw() },
5039 2147483648,
5040 >,
5041 fidl::encoding::DefaultFuchsiaResourceDialect,
5042 >,
5043 >
5044 fidl::encoding::Encode<
5045 ElementControlRegisterDependencyTokenRequest,
5046 fidl::encoding::DefaultFuchsiaResourceDialect,
5047 > for (T0,)
5048 {
5049 #[inline]
5050 unsafe fn encode(
5051 self,
5052 encoder: &mut fidl::encoding::Encoder<
5053 '_,
5054 fidl::encoding::DefaultFuchsiaResourceDialect,
5055 >,
5056 offset: usize,
5057 depth: fidl::encoding::Depth,
5058 ) -> fidl::Result<()> {
5059 encoder.debug_check_bounds::<ElementControlRegisterDependencyTokenRequest>(offset);
5060 self.0.encode(encoder, offset + 0, depth)?;
5064 Ok(())
5065 }
5066 }
5067
5068 impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
5069 for ElementControlRegisterDependencyTokenRequest
5070 {
5071 #[inline(always)]
5072 fn new_empty() -> Self {
5073 Self {
5074 token: fidl::new_empty!(fidl::encoding::HandleType<fidl::Event, { fidl::ObjectType::EVENT.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect),
5075 }
5076 }
5077
5078 #[inline]
5079 unsafe fn decode(
5080 &mut self,
5081 decoder: &mut fidl::encoding::Decoder<
5082 '_,
5083 fidl::encoding::DefaultFuchsiaResourceDialect,
5084 >,
5085 offset: usize,
5086 _depth: fidl::encoding::Depth,
5087 ) -> fidl::Result<()> {
5088 decoder.debug_check_bounds::<Self>(offset);
5089 fidl::decode!(fidl::encoding::HandleType<fidl::Event, { fidl::ObjectType::EVENT.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect, &mut self.token, decoder, offset + 0, _depth)?;
5091 Ok(())
5092 }
5093 }
5094
5095 impl fidl::encoding::ResourceTypeMarker for ElementControlUnregisterDependencyTokenRequest {
5096 type Borrowed<'a> = &'a mut Self;
5097 fn take_or_borrow<'a>(
5098 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
5099 ) -> Self::Borrowed<'a> {
5100 value
5101 }
5102 }
5103
5104 unsafe impl fidl::encoding::TypeMarker for ElementControlUnregisterDependencyTokenRequest {
5105 type Owned = Self;
5106
5107 #[inline(always)]
5108 fn inline_align(_context: fidl::encoding::Context) -> usize {
5109 4
5110 }
5111
5112 #[inline(always)]
5113 fn inline_size(_context: fidl::encoding::Context) -> usize {
5114 4
5115 }
5116 }
5117
5118 unsafe impl
5119 fidl::encoding::Encode<
5120 ElementControlUnregisterDependencyTokenRequest,
5121 fidl::encoding::DefaultFuchsiaResourceDialect,
5122 > for &mut ElementControlUnregisterDependencyTokenRequest
5123 {
5124 #[inline]
5125 unsafe fn encode(
5126 self,
5127 encoder: &mut fidl::encoding::Encoder<
5128 '_,
5129 fidl::encoding::DefaultFuchsiaResourceDialect,
5130 >,
5131 offset: usize,
5132 _depth: fidl::encoding::Depth,
5133 ) -> fidl::Result<()> {
5134 encoder.debug_check_bounds::<ElementControlUnregisterDependencyTokenRequest>(offset);
5135 fidl::encoding::Encode::<
5137 ElementControlUnregisterDependencyTokenRequest,
5138 fidl::encoding::DefaultFuchsiaResourceDialect,
5139 >::encode(
5140 (<fidl::encoding::HandleType<
5141 fidl::Event,
5142 { fidl::ObjectType::EVENT.into_raw() },
5143 2147483648,
5144 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow(
5145 &mut self.token
5146 ),),
5147 encoder,
5148 offset,
5149 _depth,
5150 )
5151 }
5152 }
5153 unsafe impl<
5154 T0: fidl::encoding::Encode<
5155 fidl::encoding::HandleType<
5156 fidl::Event,
5157 { fidl::ObjectType::EVENT.into_raw() },
5158 2147483648,
5159 >,
5160 fidl::encoding::DefaultFuchsiaResourceDialect,
5161 >,
5162 >
5163 fidl::encoding::Encode<
5164 ElementControlUnregisterDependencyTokenRequest,
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::<ElementControlUnregisterDependencyTokenRequest>(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 ElementControlUnregisterDependencyTokenRequest
5189 {
5190 #[inline(always)]
5191 fn new_empty() -> Self {
5192 Self {
5193 token: fidl::new_empty!(fidl::encoding::HandleType<fidl::Event, { fidl::ObjectType::EVENT.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect),
5194 }
5195 }
5196
5197 #[inline]
5198 unsafe fn decode(
5199 &mut self,
5200 decoder: &mut fidl::encoding::Decoder<
5201 '_,
5202 fidl::encoding::DefaultFuchsiaResourceDialect,
5203 >,
5204 offset: usize,
5205 _depth: fidl::encoding::Depth,
5206 ) -> fidl::Result<()> {
5207 decoder.debug_check_bounds::<Self>(offset);
5208 fidl::decode!(fidl::encoding::HandleType<fidl::Event, { fidl::ObjectType::EVENT.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect, &mut self.token, decoder, offset + 0, _depth)?;
5210 Ok(())
5211 }
5212 }
5213
5214 impl fidl::encoding::ResourceTypeMarker for ElementInfoProviderGetElementPowerLevelNamesResponse {
5215 type Borrowed<'a> = &'a mut Self;
5216 fn take_or_borrow<'a>(
5217 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
5218 ) -> Self::Borrowed<'a> {
5219 value
5220 }
5221 }
5222
5223 unsafe impl fidl::encoding::TypeMarker for ElementInfoProviderGetElementPowerLevelNamesResponse {
5224 type Owned = Self;
5225
5226 #[inline(always)]
5227 fn inline_align(_context: fidl::encoding::Context) -> usize {
5228 8
5229 }
5230
5231 #[inline(always)]
5232 fn inline_size(_context: fidl::encoding::Context) -> usize {
5233 16
5234 }
5235 }
5236
5237 unsafe impl
5238 fidl::encoding::Encode<
5239 ElementInfoProviderGetElementPowerLevelNamesResponse,
5240 fidl::encoding::DefaultFuchsiaResourceDialect,
5241 > for &mut ElementInfoProviderGetElementPowerLevelNamesResponse
5242 {
5243 #[inline]
5244 unsafe fn encode(
5245 self,
5246 encoder: &mut fidl::encoding::Encoder<
5247 '_,
5248 fidl::encoding::DefaultFuchsiaResourceDialect,
5249 >,
5250 offset: usize,
5251 _depth: fidl::encoding::Depth,
5252 ) -> fidl::Result<()> {
5253 encoder
5254 .debug_check_bounds::<ElementInfoProviderGetElementPowerLevelNamesResponse>(offset);
5255 fidl::encoding::Encode::<ElementInfoProviderGetElementPowerLevelNamesResponse, fidl::encoding::DefaultFuchsiaResourceDialect>::encode(
5257 (
5258 <fidl::encoding::UnboundedVector<ElementPowerLevelNames> as fidl::encoding::ValueTypeMarker>::borrow(&self.level_names),
5259 ),
5260 encoder, offset, _depth
5261 )
5262 }
5263 }
5264 unsafe impl<
5265 T0: fidl::encoding::Encode<
5266 fidl::encoding::UnboundedVector<ElementPowerLevelNames>,
5267 fidl::encoding::DefaultFuchsiaResourceDialect,
5268 >,
5269 >
5270 fidl::encoding::Encode<
5271 ElementInfoProviderGetElementPowerLevelNamesResponse,
5272 fidl::encoding::DefaultFuchsiaResourceDialect,
5273 > for (T0,)
5274 {
5275 #[inline]
5276 unsafe fn encode(
5277 self,
5278 encoder: &mut fidl::encoding::Encoder<
5279 '_,
5280 fidl::encoding::DefaultFuchsiaResourceDialect,
5281 >,
5282 offset: usize,
5283 depth: fidl::encoding::Depth,
5284 ) -> fidl::Result<()> {
5285 encoder
5286 .debug_check_bounds::<ElementInfoProviderGetElementPowerLevelNamesResponse>(offset);
5287 self.0.encode(encoder, offset + 0, depth)?;
5291 Ok(())
5292 }
5293 }
5294
5295 impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
5296 for ElementInfoProviderGetElementPowerLevelNamesResponse
5297 {
5298 #[inline(always)]
5299 fn new_empty() -> Self {
5300 Self {
5301 level_names: fidl::new_empty!(
5302 fidl::encoding::UnboundedVector<ElementPowerLevelNames>,
5303 fidl::encoding::DefaultFuchsiaResourceDialect
5304 ),
5305 }
5306 }
5307
5308 #[inline]
5309 unsafe fn decode(
5310 &mut self,
5311 decoder: &mut fidl::encoding::Decoder<
5312 '_,
5313 fidl::encoding::DefaultFuchsiaResourceDialect,
5314 >,
5315 offset: usize,
5316 _depth: fidl::encoding::Depth,
5317 ) -> fidl::Result<()> {
5318 decoder.debug_check_bounds::<Self>(offset);
5319 fidl::decode!(
5321 fidl::encoding::UnboundedVector<ElementPowerLevelNames>,
5322 fidl::encoding::DefaultFuchsiaResourceDialect,
5323 &mut self.level_names,
5324 decoder,
5325 offset + 0,
5326 _depth
5327 )?;
5328 Ok(())
5329 }
5330 }
5331
5332 impl fidl::encoding::ResourceTypeMarker for ElementInfoProviderGetStatusEndpointsResponse {
5333 type Borrowed<'a> = &'a mut Self;
5334 fn take_or_borrow<'a>(
5335 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
5336 ) -> Self::Borrowed<'a> {
5337 value
5338 }
5339 }
5340
5341 unsafe impl fidl::encoding::TypeMarker for ElementInfoProviderGetStatusEndpointsResponse {
5342 type Owned = Self;
5343
5344 #[inline(always)]
5345 fn inline_align(_context: fidl::encoding::Context) -> usize {
5346 8
5347 }
5348
5349 #[inline(always)]
5350 fn inline_size(_context: fidl::encoding::Context) -> usize {
5351 16
5352 }
5353 }
5354
5355 unsafe impl
5356 fidl::encoding::Encode<
5357 ElementInfoProviderGetStatusEndpointsResponse,
5358 fidl::encoding::DefaultFuchsiaResourceDialect,
5359 > for &mut ElementInfoProviderGetStatusEndpointsResponse
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::<ElementInfoProviderGetStatusEndpointsResponse>(offset);
5372 fidl::encoding::Encode::<ElementInfoProviderGetStatusEndpointsResponse, fidl::encoding::DefaultFuchsiaResourceDialect>::encode(
5374 (
5375 <fidl::encoding::UnboundedVector<ElementStatusEndpoint> as fidl::encoding::ResourceTypeMarker>::take_or_borrow(&mut self.endpoints),
5376 ),
5377 encoder, offset, _depth
5378 )
5379 }
5380 }
5381 unsafe impl<
5382 T0: fidl::encoding::Encode<
5383 fidl::encoding::UnboundedVector<ElementStatusEndpoint>,
5384 fidl::encoding::DefaultFuchsiaResourceDialect,
5385 >,
5386 >
5387 fidl::encoding::Encode<
5388 ElementInfoProviderGetStatusEndpointsResponse,
5389 fidl::encoding::DefaultFuchsiaResourceDialect,
5390 > for (T0,)
5391 {
5392 #[inline]
5393 unsafe fn encode(
5394 self,
5395 encoder: &mut fidl::encoding::Encoder<
5396 '_,
5397 fidl::encoding::DefaultFuchsiaResourceDialect,
5398 >,
5399 offset: usize,
5400 depth: fidl::encoding::Depth,
5401 ) -> fidl::Result<()> {
5402 encoder.debug_check_bounds::<ElementInfoProviderGetStatusEndpointsResponse>(offset);
5403 self.0.encode(encoder, offset + 0, depth)?;
5407 Ok(())
5408 }
5409 }
5410
5411 impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
5412 for ElementInfoProviderGetStatusEndpointsResponse
5413 {
5414 #[inline(always)]
5415 fn new_empty() -> Self {
5416 Self {
5417 endpoints: fidl::new_empty!(
5418 fidl::encoding::UnboundedVector<ElementStatusEndpoint>,
5419 fidl::encoding::DefaultFuchsiaResourceDialect
5420 ),
5421 }
5422 }
5423
5424 #[inline]
5425 unsafe fn decode(
5426 &mut self,
5427 decoder: &mut fidl::encoding::Decoder<
5428 '_,
5429 fidl::encoding::DefaultFuchsiaResourceDialect,
5430 >,
5431 offset: usize,
5432 _depth: fidl::encoding::Depth,
5433 ) -> fidl::Result<()> {
5434 decoder.debug_check_bounds::<Self>(offset);
5435 fidl::decode!(
5437 fidl::encoding::UnboundedVector<ElementStatusEndpoint>,
5438 fidl::encoding::DefaultFuchsiaResourceDialect,
5439 &mut self.endpoints,
5440 decoder,
5441 offset + 0,
5442 _depth
5443 )?;
5444 Ok(())
5445 }
5446 }
5447
5448 impl fidl::encoding::ResourceTypeMarker for LessorLeaseRequest {
5449 type Borrowed<'a> = &'a mut Self;
5450 fn take_or_borrow<'a>(
5451 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
5452 ) -> Self::Borrowed<'a> {
5453 value
5454 }
5455 }
5456
5457 unsafe impl fidl::encoding::TypeMarker for LessorLeaseRequest {
5458 type Owned = Self;
5459
5460 #[inline(always)]
5461 fn inline_align(_context: fidl::encoding::Context) -> usize {
5462 1
5463 }
5464
5465 #[inline(always)]
5466 fn inline_size(_context: fidl::encoding::Context) -> usize {
5467 1
5468 }
5469 #[inline(always)]
5470 fn encode_is_copy() -> bool {
5471 true
5472 }
5473
5474 #[inline(always)]
5475 fn decode_is_copy() -> bool {
5476 true
5477 }
5478 }
5479
5480 unsafe impl
5481 fidl::encoding::Encode<LessorLeaseRequest, fidl::encoding::DefaultFuchsiaResourceDialect>
5482 for &mut LessorLeaseRequest
5483 {
5484 #[inline]
5485 unsafe fn encode(
5486 self,
5487 encoder: &mut fidl::encoding::Encoder<
5488 '_,
5489 fidl::encoding::DefaultFuchsiaResourceDialect,
5490 >,
5491 offset: usize,
5492 _depth: fidl::encoding::Depth,
5493 ) -> fidl::Result<()> {
5494 encoder.debug_check_bounds::<LessorLeaseRequest>(offset);
5495 unsafe {
5496 let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
5498 (buf_ptr as *mut LessorLeaseRequest)
5499 .write_unaligned((self as *const LessorLeaseRequest).read());
5500 }
5503 Ok(())
5504 }
5505 }
5506 unsafe impl<T0: fidl::encoding::Encode<u8, fidl::encoding::DefaultFuchsiaResourceDialect>>
5507 fidl::encoding::Encode<LessorLeaseRequest, fidl::encoding::DefaultFuchsiaResourceDialect>
5508 for (T0,)
5509 {
5510 #[inline]
5511 unsafe fn encode(
5512 self,
5513 encoder: &mut fidl::encoding::Encoder<
5514 '_,
5515 fidl::encoding::DefaultFuchsiaResourceDialect,
5516 >,
5517 offset: usize,
5518 depth: fidl::encoding::Depth,
5519 ) -> fidl::Result<()> {
5520 encoder.debug_check_bounds::<LessorLeaseRequest>(offset);
5521 self.0.encode(encoder, offset + 0, depth)?;
5525 Ok(())
5526 }
5527 }
5528
5529 impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
5530 for LessorLeaseRequest
5531 {
5532 #[inline(always)]
5533 fn new_empty() -> Self {
5534 Self { level: fidl::new_empty!(u8, fidl::encoding::DefaultFuchsiaResourceDialect) }
5535 }
5536
5537 #[inline]
5538 unsafe fn decode(
5539 &mut self,
5540 decoder: &mut fidl::encoding::Decoder<
5541 '_,
5542 fidl::encoding::DefaultFuchsiaResourceDialect,
5543 >,
5544 offset: usize,
5545 _depth: fidl::encoding::Depth,
5546 ) -> fidl::Result<()> {
5547 decoder.debug_check_bounds::<Self>(offset);
5548 let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
5549 unsafe {
5552 std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 1);
5553 }
5554 Ok(())
5555 }
5556 }
5557
5558 impl fidl::encoding::ResourceTypeMarker for LessorLeaseResponse {
5559 type Borrowed<'a> = &'a mut Self;
5560 fn take_or_borrow<'a>(
5561 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
5562 ) -> Self::Borrowed<'a> {
5563 value
5564 }
5565 }
5566
5567 unsafe impl fidl::encoding::TypeMarker for LessorLeaseResponse {
5568 type Owned = Self;
5569
5570 #[inline(always)]
5571 fn inline_align(_context: fidl::encoding::Context) -> usize {
5572 4
5573 }
5574
5575 #[inline(always)]
5576 fn inline_size(_context: fidl::encoding::Context) -> usize {
5577 4
5578 }
5579 }
5580
5581 unsafe impl
5582 fidl::encoding::Encode<LessorLeaseResponse, fidl::encoding::DefaultFuchsiaResourceDialect>
5583 for &mut LessorLeaseResponse
5584 {
5585 #[inline]
5586 unsafe fn encode(
5587 self,
5588 encoder: &mut fidl::encoding::Encoder<
5589 '_,
5590 fidl::encoding::DefaultFuchsiaResourceDialect,
5591 >,
5592 offset: usize,
5593 _depth: fidl::encoding::Depth,
5594 ) -> fidl::Result<()> {
5595 encoder.debug_check_bounds::<LessorLeaseResponse>(offset);
5596 fidl::encoding::Encode::<LessorLeaseResponse, fidl::encoding::DefaultFuchsiaResourceDialect>::encode(
5598 (
5599 <fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<LeaseControlMarker>> as fidl::encoding::ResourceTypeMarker>::take_or_borrow(&mut self.lease_control),
5600 ),
5601 encoder, offset, _depth
5602 )
5603 }
5604 }
5605 unsafe impl<
5606 T0: fidl::encoding::Encode<
5607 fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<LeaseControlMarker>>,
5608 fidl::encoding::DefaultFuchsiaResourceDialect,
5609 >,
5610 > fidl::encoding::Encode<LessorLeaseResponse, fidl::encoding::DefaultFuchsiaResourceDialect>
5611 for (T0,)
5612 {
5613 #[inline]
5614 unsafe fn encode(
5615 self,
5616 encoder: &mut fidl::encoding::Encoder<
5617 '_,
5618 fidl::encoding::DefaultFuchsiaResourceDialect,
5619 >,
5620 offset: usize,
5621 depth: fidl::encoding::Depth,
5622 ) -> fidl::Result<()> {
5623 encoder.debug_check_bounds::<LessorLeaseResponse>(offset);
5624 self.0.encode(encoder, offset + 0, depth)?;
5628 Ok(())
5629 }
5630 }
5631
5632 impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
5633 for LessorLeaseResponse
5634 {
5635 #[inline(always)]
5636 fn new_empty() -> Self {
5637 Self {
5638 lease_control: fidl::new_empty!(
5639 fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<LeaseControlMarker>>,
5640 fidl::encoding::DefaultFuchsiaResourceDialect
5641 ),
5642 }
5643 }
5644
5645 #[inline]
5646 unsafe fn decode(
5647 &mut self,
5648 decoder: &mut fidl::encoding::Decoder<
5649 '_,
5650 fidl::encoding::DefaultFuchsiaResourceDialect,
5651 >,
5652 offset: usize,
5653 _depth: fidl::encoding::Depth,
5654 ) -> fidl::Result<()> {
5655 decoder.debug_check_bounds::<Self>(offset);
5656 fidl::decode!(
5658 fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<LeaseControlMarker>>,
5659 fidl::encoding::DefaultFuchsiaResourceDialect,
5660 &mut self.lease_control,
5661 decoder,
5662 offset + 0,
5663 _depth
5664 )?;
5665 Ok(())
5666 }
5667 }
5668
5669 impl fidl::encoding::ResourceTypeMarker for StatusWatchPowerLevelResponse {
5670 type Borrowed<'a> = &'a mut Self;
5671 fn take_or_borrow<'a>(
5672 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
5673 ) -> Self::Borrowed<'a> {
5674 value
5675 }
5676 }
5677
5678 unsafe impl fidl::encoding::TypeMarker for StatusWatchPowerLevelResponse {
5679 type Owned = Self;
5680
5681 #[inline(always)]
5682 fn inline_align(_context: fidl::encoding::Context) -> usize {
5683 1
5684 }
5685
5686 #[inline(always)]
5687 fn inline_size(_context: fidl::encoding::Context) -> usize {
5688 1
5689 }
5690 #[inline(always)]
5691 fn encode_is_copy() -> bool {
5692 true
5693 }
5694
5695 #[inline(always)]
5696 fn decode_is_copy() -> bool {
5697 true
5698 }
5699 }
5700
5701 unsafe impl
5702 fidl::encoding::Encode<
5703 StatusWatchPowerLevelResponse,
5704 fidl::encoding::DefaultFuchsiaResourceDialect,
5705 > for &mut StatusWatchPowerLevelResponse
5706 {
5707 #[inline]
5708 unsafe fn encode(
5709 self,
5710 encoder: &mut fidl::encoding::Encoder<
5711 '_,
5712 fidl::encoding::DefaultFuchsiaResourceDialect,
5713 >,
5714 offset: usize,
5715 _depth: fidl::encoding::Depth,
5716 ) -> fidl::Result<()> {
5717 encoder.debug_check_bounds::<StatusWatchPowerLevelResponse>(offset);
5718 unsafe {
5719 let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
5721 (buf_ptr as *mut StatusWatchPowerLevelResponse)
5722 .write_unaligned((self as *const StatusWatchPowerLevelResponse).read());
5723 }
5726 Ok(())
5727 }
5728 }
5729 unsafe impl<T0: fidl::encoding::Encode<u8, fidl::encoding::DefaultFuchsiaResourceDialect>>
5730 fidl::encoding::Encode<
5731 StatusWatchPowerLevelResponse,
5732 fidl::encoding::DefaultFuchsiaResourceDialect,
5733 > for (T0,)
5734 {
5735 #[inline]
5736 unsafe fn encode(
5737 self,
5738 encoder: &mut fidl::encoding::Encoder<
5739 '_,
5740 fidl::encoding::DefaultFuchsiaResourceDialect,
5741 >,
5742 offset: usize,
5743 depth: fidl::encoding::Depth,
5744 ) -> fidl::Result<()> {
5745 encoder.debug_check_bounds::<StatusWatchPowerLevelResponse>(offset);
5746 self.0.encode(encoder, offset + 0, depth)?;
5750 Ok(())
5751 }
5752 }
5753
5754 impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
5755 for StatusWatchPowerLevelResponse
5756 {
5757 #[inline(always)]
5758 fn new_empty() -> Self {
5759 Self {
5760 current_level: fidl::new_empty!(u8, fidl::encoding::DefaultFuchsiaResourceDialect),
5761 }
5762 }
5763
5764 #[inline]
5765 unsafe fn decode(
5766 &mut self,
5767 decoder: &mut fidl::encoding::Decoder<
5768 '_,
5769 fidl::encoding::DefaultFuchsiaResourceDialect,
5770 >,
5771 offset: usize,
5772 _depth: fidl::encoding::Depth,
5773 ) -> fidl::Result<()> {
5774 decoder.debug_check_bounds::<Self>(offset);
5775 let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
5776 unsafe {
5779 std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 1);
5780 }
5781 Ok(())
5782 }
5783 }
5784
5785 impl ElementSchema {
5786 #[inline(always)]
5787 fn max_ordinal_present(&self) -> u64 {
5788 if let Some(_) = self.initial_lease_token {
5789 return 11;
5790 }
5791 if let Some(_) = self.element_runner {
5792 return 10;
5793 }
5794 if let Some(_) = self.element_control {
5795 return 9;
5796 }
5797 if let Some(_) = self.lessor_channel {
5798 return 8;
5799 }
5800 if let Some(_) = self.dependencies {
5801 return 4;
5802 }
5803 if let Some(_) = self.valid_levels {
5804 return 3;
5805 }
5806 if let Some(_) = self.initial_current_level {
5807 return 2;
5808 }
5809 if let Some(_) = self.element_name {
5810 return 1;
5811 }
5812 0
5813 }
5814 }
5815
5816 impl fidl::encoding::ResourceTypeMarker for ElementSchema {
5817 type Borrowed<'a> = &'a mut Self;
5818 fn take_or_borrow<'a>(
5819 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
5820 ) -> Self::Borrowed<'a> {
5821 value
5822 }
5823 }
5824
5825 unsafe impl fidl::encoding::TypeMarker for ElementSchema {
5826 type Owned = Self;
5827
5828 #[inline(always)]
5829 fn inline_align(_context: fidl::encoding::Context) -> usize {
5830 8
5831 }
5832
5833 #[inline(always)]
5834 fn inline_size(_context: fidl::encoding::Context) -> usize {
5835 16
5836 }
5837 }
5838
5839 unsafe impl fidl::encoding::Encode<ElementSchema, fidl::encoding::DefaultFuchsiaResourceDialect>
5840 for &mut ElementSchema
5841 {
5842 unsafe fn encode(
5843 self,
5844 encoder: &mut fidl::encoding::Encoder<
5845 '_,
5846 fidl::encoding::DefaultFuchsiaResourceDialect,
5847 >,
5848 offset: usize,
5849 mut depth: fidl::encoding::Depth,
5850 ) -> fidl::Result<()> {
5851 encoder.debug_check_bounds::<ElementSchema>(offset);
5852 let max_ordinal: u64 = self.max_ordinal_present();
5854 encoder.write_num(max_ordinal, offset);
5855 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
5856 if max_ordinal == 0 {
5858 return Ok(());
5859 }
5860 depth.increment()?;
5861 let envelope_size = 8;
5862 let bytes_len = max_ordinal as usize * envelope_size;
5863 #[allow(unused_variables)]
5864 let offset = encoder.out_of_line_offset(bytes_len);
5865 let mut _prev_end_offset: usize = 0;
5866 if 1 > max_ordinal {
5867 return Ok(());
5868 }
5869
5870 let cur_offset: usize = (1 - 1) * envelope_size;
5873
5874 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5876
5877 fidl::encoding::encode_in_envelope_optional::<
5882 fidl::encoding::BoundedString<64>,
5883 fidl::encoding::DefaultFuchsiaResourceDialect,
5884 >(
5885 self.element_name.as_ref().map(
5886 <fidl::encoding::BoundedString<64> as fidl::encoding::ValueTypeMarker>::borrow,
5887 ),
5888 encoder,
5889 offset + cur_offset,
5890 depth,
5891 )?;
5892
5893 _prev_end_offset = cur_offset + envelope_size;
5894 if 2 > max_ordinal {
5895 return Ok(());
5896 }
5897
5898 let cur_offset: usize = (2 - 1) * envelope_size;
5901
5902 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5904
5905 fidl::encoding::encode_in_envelope_optional::<
5910 u8,
5911 fidl::encoding::DefaultFuchsiaResourceDialect,
5912 >(
5913 self.initial_current_level
5914 .as_ref()
5915 .map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
5916 encoder,
5917 offset + cur_offset,
5918 depth,
5919 )?;
5920
5921 _prev_end_offset = cur_offset + envelope_size;
5922 if 3 > max_ordinal {
5923 return Ok(());
5924 }
5925
5926 let cur_offset: usize = (3 - 1) * envelope_size;
5929
5930 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5932
5933 fidl::encoding::encode_in_envelope_optional::<
5938 fidl::encoding::Vector<u8, 256>,
5939 fidl::encoding::DefaultFuchsiaResourceDialect,
5940 >(
5941 self.valid_levels.as_ref().map(
5942 <fidl::encoding::Vector<u8, 256> as fidl::encoding::ValueTypeMarker>::borrow,
5943 ),
5944 encoder,
5945 offset + cur_offset,
5946 depth,
5947 )?;
5948
5949 _prev_end_offset = cur_offset + envelope_size;
5950 if 4 > max_ordinal {
5951 return Ok(());
5952 }
5953
5954 let cur_offset: usize = (4 - 1) * envelope_size;
5957
5958 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5960
5961 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<LevelDependency, 128>, fidl::encoding::DefaultFuchsiaResourceDialect>(
5966 self.dependencies.as_mut().map(<fidl::encoding::Vector<LevelDependency, 128> as fidl::encoding::ResourceTypeMarker>::take_or_borrow),
5967 encoder, offset + cur_offset, depth
5968 )?;
5969
5970 _prev_end_offset = cur_offset + envelope_size;
5971 if 8 > max_ordinal {
5972 return Ok(());
5973 }
5974
5975 let cur_offset: usize = (8 - 1) * envelope_size;
5978
5979 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5981
5982 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<LessorMarker>>, fidl::encoding::DefaultFuchsiaResourceDialect>(
5987 self.lessor_channel.as_mut().map(<fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<LessorMarker>> as fidl::encoding::ResourceTypeMarker>::take_or_borrow),
5988 encoder, offset + cur_offset, depth
5989 )?;
5990
5991 _prev_end_offset = cur_offset + envelope_size;
5992 if 9 > max_ordinal {
5993 return Ok(());
5994 }
5995
5996 let cur_offset: usize = (9 - 1) * envelope_size;
5999
6000 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6002
6003 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<ElementControlMarker>>, fidl::encoding::DefaultFuchsiaResourceDialect>(
6008 self.element_control.as_mut().map(<fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<ElementControlMarker>> as fidl::encoding::ResourceTypeMarker>::take_or_borrow),
6009 encoder, offset + cur_offset, depth
6010 )?;
6011
6012 _prev_end_offset = cur_offset + envelope_size;
6013 if 10 > max_ordinal {
6014 return Ok(());
6015 }
6016
6017 let cur_offset: usize = (10 - 1) * envelope_size;
6020
6021 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6023
6024 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<ElementRunnerMarker>>, fidl::encoding::DefaultFuchsiaResourceDialect>(
6029 self.element_runner.as_mut().map(<fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<ElementRunnerMarker>> as fidl::encoding::ResourceTypeMarker>::take_or_borrow),
6030 encoder, offset + cur_offset, depth
6031 )?;
6032
6033 _prev_end_offset = cur_offset + envelope_size;
6034 if 11 > max_ordinal {
6035 return Ok(());
6036 }
6037
6038 let cur_offset: usize = (11 - 1) * envelope_size;
6041
6042 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6044
6045 fidl::encoding::encode_in_envelope_optional::<
6050 fidl::encoding::HandleType<
6051 fidl::EventPair,
6052 { fidl::ObjectType::EVENTPAIR.into_raw() },
6053 24579,
6054 >,
6055 fidl::encoding::DefaultFuchsiaResourceDialect,
6056 >(
6057 self.initial_lease_token.as_mut().map(
6058 <fidl::encoding::HandleType<
6059 fidl::EventPair,
6060 { fidl::ObjectType::EVENTPAIR.into_raw() },
6061 24579,
6062 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow,
6063 ),
6064 encoder,
6065 offset + cur_offset,
6066 depth,
6067 )?;
6068
6069 _prev_end_offset = cur_offset + envelope_size;
6070
6071 Ok(())
6072 }
6073 }
6074
6075 impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect> for ElementSchema {
6076 #[inline(always)]
6077 fn new_empty() -> Self {
6078 Self::default()
6079 }
6080
6081 unsafe fn decode(
6082 &mut self,
6083 decoder: &mut fidl::encoding::Decoder<
6084 '_,
6085 fidl::encoding::DefaultFuchsiaResourceDialect,
6086 >,
6087 offset: usize,
6088 mut depth: fidl::encoding::Depth,
6089 ) -> fidl::Result<()> {
6090 decoder.debug_check_bounds::<Self>(offset);
6091 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
6092 None => return Err(fidl::Error::NotNullable),
6093 Some(len) => len,
6094 };
6095 if len == 0 {
6097 return Ok(());
6098 };
6099 depth.increment()?;
6100 let envelope_size = 8;
6101 let bytes_len = len * envelope_size;
6102 let offset = decoder.out_of_line_offset(bytes_len)?;
6103 let mut _next_ordinal_to_read = 0;
6105 let mut next_offset = offset;
6106 let end_offset = offset + bytes_len;
6107 _next_ordinal_to_read += 1;
6108 if next_offset >= end_offset {
6109 return Ok(());
6110 }
6111
6112 while _next_ordinal_to_read < 1 {
6114 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6115 _next_ordinal_to_read += 1;
6116 next_offset += envelope_size;
6117 }
6118
6119 let next_out_of_line = decoder.next_out_of_line();
6120 let handles_before = decoder.remaining_handles();
6121 if let Some((inlined, num_bytes, num_handles)) =
6122 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6123 {
6124 let member_inline_size =
6125 <fidl::encoding::BoundedString<64> as fidl::encoding::TypeMarker>::inline_size(
6126 decoder.context,
6127 );
6128 if inlined != (member_inline_size <= 4) {
6129 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6130 }
6131 let inner_offset;
6132 let mut inner_depth = depth.clone();
6133 if inlined {
6134 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6135 inner_offset = next_offset;
6136 } else {
6137 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6138 inner_depth.increment()?;
6139 }
6140 let val_ref = self.element_name.get_or_insert_with(|| {
6141 fidl::new_empty!(
6142 fidl::encoding::BoundedString<64>,
6143 fidl::encoding::DefaultFuchsiaResourceDialect
6144 )
6145 });
6146 fidl::decode!(
6147 fidl::encoding::BoundedString<64>,
6148 fidl::encoding::DefaultFuchsiaResourceDialect,
6149 val_ref,
6150 decoder,
6151 inner_offset,
6152 inner_depth
6153 )?;
6154 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6155 {
6156 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6157 }
6158 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6159 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6160 }
6161 }
6162
6163 next_offset += envelope_size;
6164 _next_ordinal_to_read += 1;
6165 if next_offset >= end_offset {
6166 return Ok(());
6167 }
6168
6169 while _next_ordinal_to_read < 2 {
6171 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6172 _next_ordinal_to_read += 1;
6173 next_offset += envelope_size;
6174 }
6175
6176 let next_out_of_line = decoder.next_out_of_line();
6177 let handles_before = decoder.remaining_handles();
6178 if let Some((inlined, num_bytes, num_handles)) =
6179 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6180 {
6181 let member_inline_size =
6182 <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6183 if inlined != (member_inline_size <= 4) {
6184 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6185 }
6186 let inner_offset;
6187 let mut inner_depth = depth.clone();
6188 if inlined {
6189 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6190 inner_offset = next_offset;
6191 } else {
6192 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6193 inner_depth.increment()?;
6194 }
6195 let val_ref = self.initial_current_level.get_or_insert_with(|| {
6196 fidl::new_empty!(u8, fidl::encoding::DefaultFuchsiaResourceDialect)
6197 });
6198 fidl::decode!(
6199 u8,
6200 fidl::encoding::DefaultFuchsiaResourceDialect,
6201 val_ref,
6202 decoder,
6203 inner_offset,
6204 inner_depth
6205 )?;
6206 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6207 {
6208 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6209 }
6210 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6211 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6212 }
6213 }
6214
6215 next_offset += envelope_size;
6216 _next_ordinal_to_read += 1;
6217 if next_offset >= end_offset {
6218 return Ok(());
6219 }
6220
6221 while _next_ordinal_to_read < 3 {
6223 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6224 _next_ordinal_to_read += 1;
6225 next_offset += envelope_size;
6226 }
6227
6228 let next_out_of_line = decoder.next_out_of_line();
6229 let handles_before = decoder.remaining_handles();
6230 if let Some((inlined, num_bytes, num_handles)) =
6231 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6232 {
6233 let member_inline_size =
6234 <fidl::encoding::Vector<u8, 256> as fidl::encoding::TypeMarker>::inline_size(
6235 decoder.context,
6236 );
6237 if inlined != (member_inline_size <= 4) {
6238 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6239 }
6240 let inner_offset;
6241 let mut inner_depth = depth.clone();
6242 if inlined {
6243 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6244 inner_offset = next_offset;
6245 } else {
6246 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6247 inner_depth.increment()?;
6248 }
6249 let val_ref =
6250 self.valid_levels.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u8, 256>, fidl::encoding::DefaultFuchsiaResourceDialect));
6251 fidl::decode!(fidl::encoding::Vector<u8, 256>, fidl::encoding::DefaultFuchsiaResourceDialect, val_ref, decoder, inner_offset, inner_depth)?;
6252 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6253 {
6254 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6255 }
6256 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6257 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6258 }
6259 }
6260
6261 next_offset += envelope_size;
6262 _next_ordinal_to_read += 1;
6263 if next_offset >= end_offset {
6264 return Ok(());
6265 }
6266
6267 while _next_ordinal_to_read < 4 {
6269 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6270 _next_ordinal_to_read += 1;
6271 next_offset += envelope_size;
6272 }
6273
6274 let next_out_of_line = decoder.next_out_of_line();
6275 let handles_before = decoder.remaining_handles();
6276 if let Some((inlined, num_bytes, num_handles)) =
6277 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6278 {
6279 let member_inline_size = <fidl::encoding::Vector<LevelDependency, 128> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6280 if inlined != (member_inline_size <= 4) {
6281 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6282 }
6283 let inner_offset;
6284 let mut inner_depth = depth.clone();
6285 if inlined {
6286 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6287 inner_offset = next_offset;
6288 } else {
6289 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6290 inner_depth.increment()?;
6291 }
6292 let val_ref =
6293 self.dependencies.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<LevelDependency, 128>, fidl::encoding::DefaultFuchsiaResourceDialect));
6294 fidl::decode!(fidl::encoding::Vector<LevelDependency, 128>, fidl::encoding::DefaultFuchsiaResourceDialect, val_ref, decoder, inner_offset, inner_depth)?;
6295 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6296 {
6297 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6298 }
6299 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6300 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6301 }
6302 }
6303
6304 next_offset += envelope_size;
6305 _next_ordinal_to_read += 1;
6306 if next_offset >= end_offset {
6307 return Ok(());
6308 }
6309
6310 while _next_ordinal_to_read < 8 {
6312 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6313 _next_ordinal_to_read += 1;
6314 next_offset += envelope_size;
6315 }
6316
6317 let next_out_of_line = decoder.next_out_of_line();
6318 let handles_before = decoder.remaining_handles();
6319 if let Some((inlined, num_bytes, num_handles)) =
6320 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6321 {
6322 let member_inline_size = <fidl::encoding::Endpoint<
6323 fidl::endpoints::ServerEnd<LessorMarker>,
6324 > as fidl::encoding::TypeMarker>::inline_size(
6325 decoder.context
6326 );
6327 if inlined != (member_inline_size <= 4) {
6328 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6329 }
6330 let inner_offset;
6331 let mut inner_depth = depth.clone();
6332 if inlined {
6333 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6334 inner_offset = next_offset;
6335 } else {
6336 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6337 inner_depth.increment()?;
6338 }
6339 let val_ref = self.lessor_channel.get_or_insert_with(|| {
6340 fidl::new_empty!(
6341 fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<LessorMarker>>,
6342 fidl::encoding::DefaultFuchsiaResourceDialect
6343 )
6344 });
6345 fidl::decode!(
6346 fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<LessorMarker>>,
6347 fidl::encoding::DefaultFuchsiaResourceDialect,
6348 val_ref,
6349 decoder,
6350 inner_offset,
6351 inner_depth
6352 )?;
6353 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6354 {
6355 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6356 }
6357 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6358 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6359 }
6360 }
6361
6362 next_offset += envelope_size;
6363 _next_ordinal_to_read += 1;
6364 if next_offset >= end_offset {
6365 return Ok(());
6366 }
6367
6368 while _next_ordinal_to_read < 9 {
6370 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6371 _next_ordinal_to_read += 1;
6372 next_offset += envelope_size;
6373 }
6374
6375 let next_out_of_line = decoder.next_out_of_line();
6376 let handles_before = decoder.remaining_handles();
6377 if let Some((inlined, num_bytes, num_handles)) =
6378 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6379 {
6380 let member_inline_size = <fidl::encoding::Endpoint<
6381 fidl::endpoints::ServerEnd<ElementControlMarker>,
6382 > as fidl::encoding::TypeMarker>::inline_size(
6383 decoder.context
6384 );
6385 if inlined != (member_inline_size <= 4) {
6386 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6387 }
6388 let inner_offset;
6389 let mut inner_depth = depth.clone();
6390 if inlined {
6391 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6392 inner_offset = next_offset;
6393 } else {
6394 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6395 inner_depth.increment()?;
6396 }
6397 let val_ref = self.element_control.get_or_insert_with(|| {
6398 fidl::new_empty!(
6399 fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<ElementControlMarker>>,
6400 fidl::encoding::DefaultFuchsiaResourceDialect
6401 )
6402 });
6403 fidl::decode!(
6404 fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<ElementControlMarker>>,
6405 fidl::encoding::DefaultFuchsiaResourceDialect,
6406 val_ref,
6407 decoder,
6408 inner_offset,
6409 inner_depth
6410 )?;
6411 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6412 {
6413 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6414 }
6415 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6416 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6417 }
6418 }
6419
6420 next_offset += envelope_size;
6421 _next_ordinal_to_read += 1;
6422 if next_offset >= end_offset {
6423 return Ok(());
6424 }
6425
6426 while _next_ordinal_to_read < 10 {
6428 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6429 _next_ordinal_to_read += 1;
6430 next_offset += envelope_size;
6431 }
6432
6433 let next_out_of_line = decoder.next_out_of_line();
6434 let handles_before = decoder.remaining_handles();
6435 if let Some((inlined, num_bytes, num_handles)) =
6436 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6437 {
6438 let member_inline_size = <fidl::encoding::Endpoint<
6439 fidl::endpoints::ClientEnd<ElementRunnerMarker>,
6440 > as fidl::encoding::TypeMarker>::inline_size(
6441 decoder.context
6442 );
6443 if inlined != (member_inline_size <= 4) {
6444 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6445 }
6446 let inner_offset;
6447 let mut inner_depth = depth.clone();
6448 if inlined {
6449 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6450 inner_offset = next_offset;
6451 } else {
6452 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6453 inner_depth.increment()?;
6454 }
6455 let val_ref = self.element_runner.get_or_insert_with(|| {
6456 fidl::new_empty!(
6457 fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<ElementRunnerMarker>>,
6458 fidl::encoding::DefaultFuchsiaResourceDialect
6459 )
6460 });
6461 fidl::decode!(
6462 fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<ElementRunnerMarker>>,
6463 fidl::encoding::DefaultFuchsiaResourceDialect,
6464 val_ref,
6465 decoder,
6466 inner_offset,
6467 inner_depth
6468 )?;
6469 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6470 {
6471 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6472 }
6473 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6474 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6475 }
6476 }
6477
6478 next_offset += envelope_size;
6479 _next_ordinal_to_read += 1;
6480 if next_offset >= end_offset {
6481 return Ok(());
6482 }
6483
6484 while _next_ordinal_to_read < 11 {
6486 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6487 _next_ordinal_to_read += 1;
6488 next_offset += envelope_size;
6489 }
6490
6491 let next_out_of_line = decoder.next_out_of_line();
6492 let handles_before = decoder.remaining_handles();
6493 if let Some((inlined, num_bytes, num_handles)) =
6494 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6495 {
6496 let member_inline_size = <fidl::encoding::HandleType<
6497 fidl::EventPair,
6498 { fidl::ObjectType::EVENTPAIR.into_raw() },
6499 24579,
6500 > as fidl::encoding::TypeMarker>::inline_size(
6501 decoder.context
6502 );
6503 if inlined != (member_inline_size <= 4) {
6504 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6505 }
6506 let inner_offset;
6507 let mut inner_depth = depth.clone();
6508 if inlined {
6509 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6510 inner_offset = next_offset;
6511 } else {
6512 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6513 inner_depth.increment()?;
6514 }
6515 let val_ref =
6516 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));
6517 fidl::decode!(fidl::encoding::HandleType<fidl::EventPair, { fidl::ObjectType::EVENTPAIR.into_raw() }, 24579>, fidl::encoding::DefaultFuchsiaResourceDialect, val_ref, decoder, inner_offset, inner_depth)?;
6518 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6519 {
6520 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6521 }
6522 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6523 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6524 }
6525 }
6526
6527 next_offset += envelope_size;
6528
6529 while next_offset < end_offset {
6531 _next_ordinal_to_read += 1;
6532 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6533 next_offset += envelope_size;
6534 }
6535
6536 Ok(())
6537 }
6538 }
6539
6540 impl ElementStatusEndpoint {
6541 #[inline(always)]
6542 fn max_ordinal_present(&self) -> u64 {
6543 if let Some(_) = self.status {
6544 return 2;
6545 }
6546 if let Some(_) = self.identifier {
6547 return 1;
6548 }
6549 0
6550 }
6551 }
6552
6553 impl fidl::encoding::ResourceTypeMarker for ElementStatusEndpoint {
6554 type Borrowed<'a> = &'a mut Self;
6555 fn take_or_borrow<'a>(
6556 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
6557 ) -> Self::Borrowed<'a> {
6558 value
6559 }
6560 }
6561
6562 unsafe impl fidl::encoding::TypeMarker for ElementStatusEndpoint {
6563 type Owned = Self;
6564
6565 #[inline(always)]
6566 fn inline_align(_context: fidl::encoding::Context) -> usize {
6567 8
6568 }
6569
6570 #[inline(always)]
6571 fn inline_size(_context: fidl::encoding::Context) -> usize {
6572 16
6573 }
6574 }
6575
6576 unsafe impl
6577 fidl::encoding::Encode<ElementStatusEndpoint, fidl::encoding::DefaultFuchsiaResourceDialect>
6578 for &mut ElementStatusEndpoint
6579 {
6580 unsafe fn encode(
6581 self,
6582 encoder: &mut fidl::encoding::Encoder<
6583 '_,
6584 fidl::encoding::DefaultFuchsiaResourceDialect,
6585 >,
6586 offset: usize,
6587 mut depth: fidl::encoding::Depth,
6588 ) -> fidl::Result<()> {
6589 encoder.debug_check_bounds::<ElementStatusEndpoint>(offset);
6590 let max_ordinal: u64 = self.max_ordinal_present();
6592 encoder.write_num(max_ordinal, offset);
6593 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
6594 if max_ordinal == 0 {
6596 return Ok(());
6597 }
6598 depth.increment()?;
6599 let envelope_size = 8;
6600 let bytes_len = max_ordinal as usize * envelope_size;
6601 #[allow(unused_variables)]
6602 let offset = encoder.out_of_line_offset(bytes_len);
6603 let mut _prev_end_offset: usize = 0;
6604 if 1 > max_ordinal {
6605 return Ok(());
6606 }
6607
6608 let cur_offset: usize = (1 - 1) * envelope_size;
6611
6612 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6614
6615 fidl::encoding::encode_in_envelope_optional::<
6620 fidl::encoding::BoundedString<64>,
6621 fidl::encoding::DefaultFuchsiaResourceDialect,
6622 >(
6623 self.identifier.as_ref().map(
6624 <fidl::encoding::BoundedString<64> as fidl::encoding::ValueTypeMarker>::borrow,
6625 ),
6626 encoder,
6627 offset + cur_offset,
6628 depth,
6629 )?;
6630
6631 _prev_end_offset = cur_offset + envelope_size;
6632 if 2 > max_ordinal {
6633 return Ok(());
6634 }
6635
6636 let cur_offset: usize = (2 - 1) * envelope_size;
6639
6640 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6642
6643 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<StatusMarker>>, fidl::encoding::DefaultFuchsiaResourceDialect>(
6648 self.status.as_mut().map(<fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<StatusMarker>> as fidl::encoding::ResourceTypeMarker>::take_or_borrow),
6649 encoder, offset + cur_offset, depth
6650 )?;
6651
6652 _prev_end_offset = cur_offset + envelope_size;
6653
6654 Ok(())
6655 }
6656 }
6657
6658 impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
6659 for ElementStatusEndpoint
6660 {
6661 #[inline(always)]
6662 fn new_empty() -> Self {
6663 Self::default()
6664 }
6665
6666 unsafe fn decode(
6667 &mut self,
6668 decoder: &mut fidl::encoding::Decoder<
6669 '_,
6670 fidl::encoding::DefaultFuchsiaResourceDialect,
6671 >,
6672 offset: usize,
6673 mut depth: fidl::encoding::Depth,
6674 ) -> fidl::Result<()> {
6675 decoder.debug_check_bounds::<Self>(offset);
6676 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
6677 None => return Err(fidl::Error::NotNullable),
6678 Some(len) => len,
6679 };
6680 if len == 0 {
6682 return Ok(());
6683 };
6684 depth.increment()?;
6685 let envelope_size = 8;
6686 let bytes_len = len * envelope_size;
6687 let offset = decoder.out_of_line_offset(bytes_len)?;
6688 let mut _next_ordinal_to_read = 0;
6690 let mut next_offset = offset;
6691 let end_offset = offset + bytes_len;
6692 _next_ordinal_to_read += 1;
6693 if next_offset >= end_offset {
6694 return Ok(());
6695 }
6696
6697 while _next_ordinal_to_read < 1 {
6699 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6700 _next_ordinal_to_read += 1;
6701 next_offset += envelope_size;
6702 }
6703
6704 let next_out_of_line = decoder.next_out_of_line();
6705 let handles_before = decoder.remaining_handles();
6706 if let Some((inlined, num_bytes, num_handles)) =
6707 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6708 {
6709 let member_inline_size =
6710 <fidl::encoding::BoundedString<64> as fidl::encoding::TypeMarker>::inline_size(
6711 decoder.context,
6712 );
6713 if inlined != (member_inline_size <= 4) {
6714 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6715 }
6716 let inner_offset;
6717 let mut inner_depth = depth.clone();
6718 if inlined {
6719 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6720 inner_offset = next_offset;
6721 } else {
6722 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6723 inner_depth.increment()?;
6724 }
6725 let val_ref = self.identifier.get_or_insert_with(|| {
6726 fidl::new_empty!(
6727 fidl::encoding::BoundedString<64>,
6728 fidl::encoding::DefaultFuchsiaResourceDialect
6729 )
6730 });
6731 fidl::decode!(
6732 fidl::encoding::BoundedString<64>,
6733 fidl::encoding::DefaultFuchsiaResourceDialect,
6734 val_ref,
6735 decoder,
6736 inner_offset,
6737 inner_depth
6738 )?;
6739 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6740 {
6741 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6742 }
6743 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6744 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6745 }
6746 }
6747
6748 next_offset += envelope_size;
6749 _next_ordinal_to_read += 1;
6750 if next_offset >= end_offset {
6751 return Ok(());
6752 }
6753
6754 while _next_ordinal_to_read < 2 {
6756 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6757 _next_ordinal_to_read += 1;
6758 next_offset += envelope_size;
6759 }
6760
6761 let next_out_of_line = decoder.next_out_of_line();
6762 let handles_before = decoder.remaining_handles();
6763 if let Some((inlined, num_bytes, num_handles)) =
6764 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6765 {
6766 let member_inline_size = <fidl::encoding::Endpoint<
6767 fidl::endpoints::ClientEnd<StatusMarker>,
6768 > as fidl::encoding::TypeMarker>::inline_size(
6769 decoder.context
6770 );
6771 if inlined != (member_inline_size <= 4) {
6772 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6773 }
6774 let inner_offset;
6775 let mut inner_depth = depth.clone();
6776 if inlined {
6777 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6778 inner_offset = next_offset;
6779 } else {
6780 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6781 inner_depth.increment()?;
6782 }
6783 let val_ref = self.status.get_or_insert_with(|| {
6784 fidl::new_empty!(
6785 fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<StatusMarker>>,
6786 fidl::encoding::DefaultFuchsiaResourceDialect
6787 )
6788 });
6789 fidl::decode!(
6790 fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<StatusMarker>>,
6791 fidl::encoding::DefaultFuchsiaResourceDialect,
6792 val_ref,
6793 decoder,
6794 inner_offset,
6795 inner_depth
6796 )?;
6797 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6798 {
6799 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6800 }
6801 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6802 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6803 }
6804 }
6805
6806 next_offset += envelope_size;
6807
6808 while next_offset < end_offset {
6810 _next_ordinal_to_read += 1;
6811 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6812 next_offset += envelope_size;
6813 }
6814
6815 Ok(())
6816 }
6817 }
6818
6819 impl LeaseDependency {
6820 #[inline(always)]
6821 fn max_ordinal_present(&self) -> u64 {
6822 if let Some(_) = self.requires_level_by_preference {
6823 return 3;
6824 }
6825 if let Some(_) = self.requires_level {
6826 return 2;
6827 }
6828 if let Some(_) = self.requires_token {
6829 return 1;
6830 }
6831 0
6832 }
6833 }
6834
6835 impl fidl::encoding::ResourceTypeMarker for LeaseDependency {
6836 type Borrowed<'a> = &'a mut Self;
6837 fn take_or_borrow<'a>(
6838 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
6839 ) -> Self::Borrowed<'a> {
6840 value
6841 }
6842 }
6843
6844 unsafe impl fidl::encoding::TypeMarker for LeaseDependency {
6845 type Owned = Self;
6846
6847 #[inline(always)]
6848 fn inline_align(_context: fidl::encoding::Context) -> usize {
6849 8
6850 }
6851
6852 #[inline(always)]
6853 fn inline_size(_context: fidl::encoding::Context) -> usize {
6854 16
6855 }
6856 }
6857
6858 unsafe impl
6859 fidl::encoding::Encode<LeaseDependency, fidl::encoding::DefaultFuchsiaResourceDialect>
6860 for &mut LeaseDependency
6861 {
6862 unsafe fn encode(
6863 self,
6864 encoder: &mut fidl::encoding::Encoder<
6865 '_,
6866 fidl::encoding::DefaultFuchsiaResourceDialect,
6867 >,
6868 offset: usize,
6869 mut depth: fidl::encoding::Depth,
6870 ) -> fidl::Result<()> {
6871 encoder.debug_check_bounds::<LeaseDependency>(offset);
6872 let max_ordinal: u64 = self.max_ordinal_present();
6874 encoder.write_num(max_ordinal, offset);
6875 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
6876 if max_ordinal == 0 {
6878 return Ok(());
6879 }
6880 depth.increment()?;
6881 let envelope_size = 8;
6882 let bytes_len = max_ordinal as usize * envelope_size;
6883 #[allow(unused_variables)]
6884 let offset = encoder.out_of_line_offset(bytes_len);
6885 let mut _prev_end_offset: usize = 0;
6886 if 1 > max_ordinal {
6887 return Ok(());
6888 }
6889
6890 let cur_offset: usize = (1 - 1) * envelope_size;
6893
6894 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6896
6897 fidl::encoding::encode_in_envelope_optional::<
6902 fidl::encoding::HandleType<
6903 fidl::Event,
6904 { fidl::ObjectType::EVENT.into_raw() },
6905 2147483648,
6906 >,
6907 fidl::encoding::DefaultFuchsiaResourceDialect,
6908 >(
6909 self.requires_token.as_mut().map(
6910 <fidl::encoding::HandleType<
6911 fidl::Event,
6912 { fidl::ObjectType::EVENT.into_raw() },
6913 2147483648,
6914 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow,
6915 ),
6916 encoder,
6917 offset + cur_offset,
6918 depth,
6919 )?;
6920
6921 _prev_end_offset = cur_offset + envelope_size;
6922 if 2 > max_ordinal {
6923 return Ok(());
6924 }
6925
6926 let cur_offset: usize = (2 - 1) * envelope_size;
6929
6930 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6932
6933 fidl::encoding::encode_in_envelope_optional::<
6938 u8,
6939 fidl::encoding::DefaultFuchsiaResourceDialect,
6940 >(
6941 self.requires_level.as_ref().map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
6942 encoder,
6943 offset + cur_offset,
6944 depth,
6945 )?;
6946
6947 _prev_end_offset = cur_offset + envelope_size;
6948 if 3 > max_ordinal {
6949 return Ok(());
6950 }
6951
6952 let cur_offset: usize = (3 - 1) * envelope_size;
6955
6956 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6958
6959 fidl::encoding::encode_in_envelope_optional::<
6964 fidl::encoding::Vector<u8, 256>,
6965 fidl::encoding::DefaultFuchsiaResourceDialect,
6966 >(
6967 self.requires_level_by_preference.as_ref().map(
6968 <fidl::encoding::Vector<u8, 256> as fidl::encoding::ValueTypeMarker>::borrow,
6969 ),
6970 encoder,
6971 offset + cur_offset,
6972 depth,
6973 )?;
6974
6975 _prev_end_offset = cur_offset + envelope_size;
6976
6977 Ok(())
6978 }
6979 }
6980
6981 impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
6982 for LeaseDependency
6983 {
6984 #[inline(always)]
6985 fn new_empty() -> Self {
6986 Self::default()
6987 }
6988
6989 unsafe fn decode(
6990 &mut self,
6991 decoder: &mut fidl::encoding::Decoder<
6992 '_,
6993 fidl::encoding::DefaultFuchsiaResourceDialect,
6994 >,
6995 offset: usize,
6996 mut depth: fidl::encoding::Depth,
6997 ) -> fidl::Result<()> {
6998 decoder.debug_check_bounds::<Self>(offset);
6999 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
7000 None => return Err(fidl::Error::NotNullable),
7001 Some(len) => len,
7002 };
7003 if len == 0 {
7005 return Ok(());
7006 };
7007 depth.increment()?;
7008 let envelope_size = 8;
7009 let bytes_len = len * envelope_size;
7010 let offset = decoder.out_of_line_offset(bytes_len)?;
7011 let mut _next_ordinal_to_read = 0;
7013 let mut next_offset = offset;
7014 let end_offset = offset + bytes_len;
7015 _next_ordinal_to_read += 1;
7016 if next_offset >= end_offset {
7017 return Ok(());
7018 }
7019
7020 while _next_ordinal_to_read < 1 {
7022 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7023 _next_ordinal_to_read += 1;
7024 next_offset += envelope_size;
7025 }
7026
7027 let next_out_of_line = decoder.next_out_of_line();
7028 let handles_before = decoder.remaining_handles();
7029 if let Some((inlined, num_bytes, num_handles)) =
7030 fidl::encoding::decode_envelope_header(decoder, next_offset)?
7031 {
7032 let member_inline_size = <fidl::encoding::HandleType<
7033 fidl::Event,
7034 { fidl::ObjectType::EVENT.into_raw() },
7035 2147483648,
7036 > as fidl::encoding::TypeMarker>::inline_size(
7037 decoder.context
7038 );
7039 if inlined != (member_inline_size <= 4) {
7040 return Err(fidl::Error::InvalidInlineBitInEnvelope);
7041 }
7042 let inner_offset;
7043 let mut inner_depth = depth.clone();
7044 if inlined {
7045 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7046 inner_offset = next_offset;
7047 } else {
7048 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7049 inner_depth.increment()?;
7050 }
7051 let val_ref =
7052 self.requires_token.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::HandleType<fidl::Event, { fidl::ObjectType::EVENT.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect));
7053 fidl::decode!(fidl::encoding::HandleType<fidl::Event, { fidl::ObjectType::EVENT.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect, val_ref, decoder, inner_offset, inner_depth)?;
7054 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7055 {
7056 return Err(fidl::Error::InvalidNumBytesInEnvelope);
7057 }
7058 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7059 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7060 }
7061 }
7062
7063 next_offset += envelope_size;
7064 _next_ordinal_to_read += 1;
7065 if next_offset >= end_offset {
7066 return Ok(());
7067 }
7068
7069 while _next_ordinal_to_read < 2 {
7071 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7072 _next_ordinal_to_read += 1;
7073 next_offset += envelope_size;
7074 }
7075
7076 let next_out_of_line = decoder.next_out_of_line();
7077 let handles_before = decoder.remaining_handles();
7078 if let Some((inlined, num_bytes, num_handles)) =
7079 fidl::encoding::decode_envelope_header(decoder, next_offset)?
7080 {
7081 let member_inline_size =
7082 <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7083 if inlined != (member_inline_size <= 4) {
7084 return Err(fidl::Error::InvalidInlineBitInEnvelope);
7085 }
7086 let inner_offset;
7087 let mut inner_depth = depth.clone();
7088 if inlined {
7089 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7090 inner_offset = next_offset;
7091 } else {
7092 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7093 inner_depth.increment()?;
7094 }
7095 let val_ref = self.requires_level.get_or_insert_with(|| {
7096 fidl::new_empty!(u8, fidl::encoding::DefaultFuchsiaResourceDialect)
7097 });
7098 fidl::decode!(
7099 u8,
7100 fidl::encoding::DefaultFuchsiaResourceDialect,
7101 val_ref,
7102 decoder,
7103 inner_offset,
7104 inner_depth
7105 )?;
7106 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7107 {
7108 return Err(fidl::Error::InvalidNumBytesInEnvelope);
7109 }
7110 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7111 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7112 }
7113 }
7114
7115 next_offset += envelope_size;
7116 _next_ordinal_to_read += 1;
7117 if next_offset >= end_offset {
7118 return Ok(());
7119 }
7120
7121 while _next_ordinal_to_read < 3 {
7123 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7124 _next_ordinal_to_read += 1;
7125 next_offset += envelope_size;
7126 }
7127
7128 let next_out_of_line = decoder.next_out_of_line();
7129 let handles_before = decoder.remaining_handles();
7130 if let Some((inlined, num_bytes, num_handles)) =
7131 fidl::encoding::decode_envelope_header(decoder, next_offset)?
7132 {
7133 let member_inline_size =
7134 <fidl::encoding::Vector<u8, 256> as fidl::encoding::TypeMarker>::inline_size(
7135 decoder.context,
7136 );
7137 if inlined != (member_inline_size <= 4) {
7138 return Err(fidl::Error::InvalidInlineBitInEnvelope);
7139 }
7140 let inner_offset;
7141 let mut inner_depth = depth.clone();
7142 if inlined {
7143 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7144 inner_offset = next_offset;
7145 } else {
7146 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7147 inner_depth.increment()?;
7148 }
7149 let val_ref =
7150 self.requires_level_by_preference.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u8, 256>, fidl::encoding::DefaultFuchsiaResourceDialect));
7151 fidl::decode!(fidl::encoding::Vector<u8, 256>, fidl::encoding::DefaultFuchsiaResourceDialect, val_ref, decoder, inner_offset, inner_depth)?;
7152 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7153 {
7154 return Err(fidl::Error::InvalidNumBytesInEnvelope);
7155 }
7156 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7157 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7158 }
7159 }
7160
7161 next_offset += envelope_size;
7162
7163 while next_offset < end_offset {
7165 _next_ordinal_to_read += 1;
7166 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7167 next_offset += envelope_size;
7168 }
7169
7170 Ok(())
7171 }
7172 }
7173
7174 impl LeaseSchema {
7175 #[inline(always)]
7176 fn max_ordinal_present(&self) -> u64 {
7177 if let Some(_) = self.should_return_pending_lease {
7178 return 4;
7179 }
7180 if let Some(_) = self.dependencies {
7181 return 3;
7182 }
7183 if let Some(_) = self.lease_name {
7184 return 2;
7185 }
7186 if let Some(_) = self.lease_token {
7187 return 1;
7188 }
7189 0
7190 }
7191 }
7192
7193 impl fidl::encoding::ResourceTypeMarker for LeaseSchema {
7194 type Borrowed<'a> = &'a mut Self;
7195 fn take_or_borrow<'a>(
7196 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
7197 ) -> Self::Borrowed<'a> {
7198 value
7199 }
7200 }
7201
7202 unsafe impl fidl::encoding::TypeMarker for LeaseSchema {
7203 type Owned = Self;
7204
7205 #[inline(always)]
7206 fn inline_align(_context: fidl::encoding::Context) -> usize {
7207 8
7208 }
7209
7210 #[inline(always)]
7211 fn inline_size(_context: fidl::encoding::Context) -> usize {
7212 16
7213 }
7214 }
7215
7216 unsafe impl fidl::encoding::Encode<LeaseSchema, fidl::encoding::DefaultFuchsiaResourceDialect>
7217 for &mut LeaseSchema
7218 {
7219 unsafe fn encode(
7220 self,
7221 encoder: &mut fidl::encoding::Encoder<
7222 '_,
7223 fidl::encoding::DefaultFuchsiaResourceDialect,
7224 >,
7225 offset: usize,
7226 mut depth: fidl::encoding::Depth,
7227 ) -> fidl::Result<()> {
7228 encoder.debug_check_bounds::<LeaseSchema>(offset);
7229 let max_ordinal: u64 = self.max_ordinal_present();
7231 encoder.write_num(max_ordinal, offset);
7232 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
7233 if max_ordinal == 0 {
7235 return Ok(());
7236 }
7237 depth.increment()?;
7238 let envelope_size = 8;
7239 let bytes_len = max_ordinal as usize * envelope_size;
7240 #[allow(unused_variables)]
7241 let offset = encoder.out_of_line_offset(bytes_len);
7242 let mut _prev_end_offset: usize = 0;
7243 if 1 > max_ordinal {
7244 return Ok(());
7245 }
7246
7247 let cur_offset: usize = (1 - 1) * envelope_size;
7250
7251 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7253
7254 fidl::encoding::encode_in_envelope_optional::<
7259 fidl::encoding::HandleType<
7260 fidl::EventPair,
7261 { fidl::ObjectType::EVENTPAIR.into_raw() },
7262 24579,
7263 >,
7264 fidl::encoding::DefaultFuchsiaResourceDialect,
7265 >(
7266 self.lease_token.as_mut().map(
7267 <fidl::encoding::HandleType<
7268 fidl::EventPair,
7269 { fidl::ObjectType::EVENTPAIR.into_raw() },
7270 24579,
7271 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow,
7272 ),
7273 encoder,
7274 offset + cur_offset,
7275 depth,
7276 )?;
7277
7278 _prev_end_offset = cur_offset + envelope_size;
7279 if 2 > max_ordinal {
7280 return Ok(());
7281 }
7282
7283 let cur_offset: usize = (2 - 1) * envelope_size;
7286
7287 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7289
7290 fidl::encoding::encode_in_envelope_optional::<
7295 fidl::encoding::BoundedString<64>,
7296 fidl::encoding::DefaultFuchsiaResourceDialect,
7297 >(
7298 self.lease_name.as_ref().map(
7299 <fidl::encoding::BoundedString<64> as fidl::encoding::ValueTypeMarker>::borrow,
7300 ),
7301 encoder,
7302 offset + cur_offset,
7303 depth,
7304 )?;
7305
7306 _prev_end_offset = cur_offset + envelope_size;
7307 if 3 > max_ordinal {
7308 return Ok(());
7309 }
7310
7311 let cur_offset: usize = (3 - 1) * envelope_size;
7314
7315 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7317
7318 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<LeaseDependency, 128>, fidl::encoding::DefaultFuchsiaResourceDialect>(
7323 self.dependencies.as_mut().map(<fidl::encoding::Vector<LeaseDependency, 128> as fidl::encoding::ResourceTypeMarker>::take_or_borrow),
7324 encoder, offset + cur_offset, depth
7325 )?;
7326
7327 _prev_end_offset = cur_offset + envelope_size;
7328 if 4 > max_ordinal {
7329 return Ok(());
7330 }
7331
7332 let cur_offset: usize = (4 - 1) * envelope_size;
7335
7336 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7338
7339 fidl::encoding::encode_in_envelope_optional::<
7344 bool,
7345 fidl::encoding::DefaultFuchsiaResourceDialect,
7346 >(
7347 self.should_return_pending_lease
7348 .as_ref()
7349 .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
7350 encoder,
7351 offset + cur_offset,
7352 depth,
7353 )?;
7354
7355 _prev_end_offset = cur_offset + envelope_size;
7356
7357 Ok(())
7358 }
7359 }
7360
7361 impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect> for LeaseSchema {
7362 #[inline(always)]
7363 fn new_empty() -> Self {
7364 Self::default()
7365 }
7366
7367 unsafe fn decode(
7368 &mut self,
7369 decoder: &mut fidl::encoding::Decoder<
7370 '_,
7371 fidl::encoding::DefaultFuchsiaResourceDialect,
7372 >,
7373 offset: usize,
7374 mut depth: fidl::encoding::Depth,
7375 ) -> fidl::Result<()> {
7376 decoder.debug_check_bounds::<Self>(offset);
7377 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
7378 None => return Err(fidl::Error::NotNullable),
7379 Some(len) => len,
7380 };
7381 if len == 0 {
7383 return Ok(());
7384 };
7385 depth.increment()?;
7386 let envelope_size = 8;
7387 let bytes_len = len * envelope_size;
7388 let offset = decoder.out_of_line_offset(bytes_len)?;
7389 let mut _next_ordinal_to_read = 0;
7391 let mut next_offset = offset;
7392 let end_offset = offset + bytes_len;
7393 _next_ordinal_to_read += 1;
7394 if next_offset >= end_offset {
7395 return Ok(());
7396 }
7397
7398 while _next_ordinal_to_read < 1 {
7400 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7401 _next_ordinal_to_read += 1;
7402 next_offset += envelope_size;
7403 }
7404
7405 let next_out_of_line = decoder.next_out_of_line();
7406 let handles_before = decoder.remaining_handles();
7407 if let Some((inlined, num_bytes, num_handles)) =
7408 fidl::encoding::decode_envelope_header(decoder, next_offset)?
7409 {
7410 let member_inline_size = <fidl::encoding::HandleType<
7411 fidl::EventPair,
7412 { fidl::ObjectType::EVENTPAIR.into_raw() },
7413 24579,
7414 > as fidl::encoding::TypeMarker>::inline_size(
7415 decoder.context
7416 );
7417 if inlined != (member_inline_size <= 4) {
7418 return Err(fidl::Error::InvalidInlineBitInEnvelope);
7419 }
7420 let inner_offset;
7421 let mut inner_depth = depth.clone();
7422 if inlined {
7423 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7424 inner_offset = next_offset;
7425 } else {
7426 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7427 inner_depth.increment()?;
7428 }
7429 let val_ref =
7430 self.lease_token.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::HandleType<fidl::EventPair, { fidl::ObjectType::EVENTPAIR.into_raw() }, 24579>, fidl::encoding::DefaultFuchsiaResourceDialect));
7431 fidl::decode!(fidl::encoding::HandleType<fidl::EventPair, { fidl::ObjectType::EVENTPAIR.into_raw() }, 24579>, fidl::encoding::DefaultFuchsiaResourceDialect, val_ref, decoder, inner_offset, inner_depth)?;
7432 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7433 {
7434 return Err(fidl::Error::InvalidNumBytesInEnvelope);
7435 }
7436 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7437 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7438 }
7439 }
7440
7441 next_offset += envelope_size;
7442 _next_ordinal_to_read += 1;
7443 if next_offset >= end_offset {
7444 return Ok(());
7445 }
7446
7447 while _next_ordinal_to_read < 2 {
7449 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7450 _next_ordinal_to_read += 1;
7451 next_offset += envelope_size;
7452 }
7453
7454 let next_out_of_line = decoder.next_out_of_line();
7455 let handles_before = decoder.remaining_handles();
7456 if let Some((inlined, num_bytes, num_handles)) =
7457 fidl::encoding::decode_envelope_header(decoder, next_offset)?
7458 {
7459 let member_inline_size =
7460 <fidl::encoding::BoundedString<64> as fidl::encoding::TypeMarker>::inline_size(
7461 decoder.context,
7462 );
7463 if inlined != (member_inline_size <= 4) {
7464 return Err(fidl::Error::InvalidInlineBitInEnvelope);
7465 }
7466 let inner_offset;
7467 let mut inner_depth = depth.clone();
7468 if inlined {
7469 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7470 inner_offset = next_offset;
7471 } else {
7472 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7473 inner_depth.increment()?;
7474 }
7475 let val_ref = self.lease_name.get_or_insert_with(|| {
7476 fidl::new_empty!(
7477 fidl::encoding::BoundedString<64>,
7478 fidl::encoding::DefaultFuchsiaResourceDialect
7479 )
7480 });
7481 fidl::decode!(
7482 fidl::encoding::BoundedString<64>,
7483 fidl::encoding::DefaultFuchsiaResourceDialect,
7484 val_ref,
7485 decoder,
7486 inner_offset,
7487 inner_depth
7488 )?;
7489 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7490 {
7491 return Err(fidl::Error::InvalidNumBytesInEnvelope);
7492 }
7493 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7494 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7495 }
7496 }
7497
7498 next_offset += envelope_size;
7499 _next_ordinal_to_read += 1;
7500 if next_offset >= end_offset {
7501 return Ok(());
7502 }
7503
7504 while _next_ordinal_to_read < 3 {
7506 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7507 _next_ordinal_to_read += 1;
7508 next_offset += envelope_size;
7509 }
7510
7511 let next_out_of_line = decoder.next_out_of_line();
7512 let handles_before = decoder.remaining_handles();
7513 if let Some((inlined, num_bytes, num_handles)) =
7514 fidl::encoding::decode_envelope_header(decoder, next_offset)?
7515 {
7516 let member_inline_size = <fidl::encoding::Vector<LeaseDependency, 128> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7517 if inlined != (member_inline_size <= 4) {
7518 return Err(fidl::Error::InvalidInlineBitInEnvelope);
7519 }
7520 let inner_offset;
7521 let mut inner_depth = depth.clone();
7522 if inlined {
7523 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7524 inner_offset = next_offset;
7525 } else {
7526 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7527 inner_depth.increment()?;
7528 }
7529 let val_ref =
7530 self.dependencies.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<LeaseDependency, 128>, fidl::encoding::DefaultFuchsiaResourceDialect));
7531 fidl::decode!(fidl::encoding::Vector<LeaseDependency, 128>, fidl::encoding::DefaultFuchsiaResourceDialect, val_ref, decoder, inner_offset, inner_depth)?;
7532 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7533 {
7534 return Err(fidl::Error::InvalidNumBytesInEnvelope);
7535 }
7536 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7537 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7538 }
7539 }
7540
7541 next_offset += envelope_size;
7542 _next_ordinal_to_read += 1;
7543 if next_offset >= end_offset {
7544 return Ok(());
7545 }
7546
7547 while _next_ordinal_to_read < 4 {
7549 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7550 _next_ordinal_to_read += 1;
7551 next_offset += envelope_size;
7552 }
7553
7554 let next_out_of_line = decoder.next_out_of_line();
7555 let handles_before = decoder.remaining_handles();
7556 if let Some((inlined, num_bytes, num_handles)) =
7557 fidl::encoding::decode_envelope_header(decoder, next_offset)?
7558 {
7559 let member_inline_size =
7560 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7561 if inlined != (member_inline_size <= 4) {
7562 return Err(fidl::Error::InvalidInlineBitInEnvelope);
7563 }
7564 let inner_offset;
7565 let mut inner_depth = depth.clone();
7566 if inlined {
7567 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7568 inner_offset = next_offset;
7569 } else {
7570 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7571 inner_depth.increment()?;
7572 }
7573 let val_ref = self.should_return_pending_lease.get_or_insert_with(|| {
7574 fidl::new_empty!(bool, fidl::encoding::DefaultFuchsiaResourceDialect)
7575 });
7576 fidl::decode!(
7577 bool,
7578 fidl::encoding::DefaultFuchsiaResourceDialect,
7579 val_ref,
7580 decoder,
7581 inner_offset,
7582 inner_depth
7583 )?;
7584 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7585 {
7586 return Err(fidl::Error::InvalidNumBytesInEnvelope);
7587 }
7588 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7589 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7590 }
7591 }
7592
7593 next_offset += envelope_size;
7594
7595 while next_offset < end_offset {
7597 _next_ordinal_to_read += 1;
7598 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7599 next_offset += envelope_size;
7600 }
7601
7602 Ok(())
7603 }
7604 }
7605
7606 impl LevelDependency {
7607 #[inline(always)]
7608 fn max_ordinal_present(&self) -> u64 {
7609 if let Some(_) = self.remove_with_required_element {
7610 return 4;
7611 }
7612 if let Some(_) = self.requires_level_by_preference {
7613 return 3;
7614 }
7615 if let Some(_) = self.requires_token {
7616 return 2;
7617 }
7618 if let Some(_) = self.dependent_level {
7619 return 1;
7620 }
7621 0
7622 }
7623 }
7624
7625 impl fidl::encoding::ResourceTypeMarker for LevelDependency {
7626 type Borrowed<'a> = &'a mut Self;
7627 fn take_or_borrow<'a>(
7628 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
7629 ) -> Self::Borrowed<'a> {
7630 value
7631 }
7632 }
7633
7634 unsafe impl fidl::encoding::TypeMarker for LevelDependency {
7635 type Owned = Self;
7636
7637 #[inline(always)]
7638 fn inline_align(_context: fidl::encoding::Context) -> usize {
7639 8
7640 }
7641
7642 #[inline(always)]
7643 fn inline_size(_context: fidl::encoding::Context) -> usize {
7644 16
7645 }
7646 }
7647
7648 unsafe impl
7649 fidl::encoding::Encode<LevelDependency, fidl::encoding::DefaultFuchsiaResourceDialect>
7650 for &mut LevelDependency
7651 {
7652 unsafe fn encode(
7653 self,
7654 encoder: &mut fidl::encoding::Encoder<
7655 '_,
7656 fidl::encoding::DefaultFuchsiaResourceDialect,
7657 >,
7658 offset: usize,
7659 mut depth: fidl::encoding::Depth,
7660 ) -> fidl::Result<()> {
7661 encoder.debug_check_bounds::<LevelDependency>(offset);
7662 let max_ordinal: u64 = self.max_ordinal_present();
7664 encoder.write_num(max_ordinal, offset);
7665 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
7666 if max_ordinal == 0 {
7668 return Ok(());
7669 }
7670 depth.increment()?;
7671 let envelope_size = 8;
7672 let bytes_len = max_ordinal as usize * envelope_size;
7673 #[allow(unused_variables)]
7674 let offset = encoder.out_of_line_offset(bytes_len);
7675 let mut _prev_end_offset: usize = 0;
7676 if 1 > max_ordinal {
7677 return Ok(());
7678 }
7679
7680 let cur_offset: usize = (1 - 1) * envelope_size;
7683
7684 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7686
7687 fidl::encoding::encode_in_envelope_optional::<
7692 u8,
7693 fidl::encoding::DefaultFuchsiaResourceDialect,
7694 >(
7695 self.dependent_level.as_ref().map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
7696 encoder,
7697 offset + cur_offset,
7698 depth,
7699 )?;
7700
7701 _prev_end_offset = cur_offset + envelope_size;
7702 if 2 > max_ordinal {
7703 return Ok(());
7704 }
7705
7706 let cur_offset: usize = (2 - 1) * envelope_size;
7709
7710 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7712
7713 fidl::encoding::encode_in_envelope_optional::<
7718 fidl::encoding::HandleType<
7719 fidl::Event,
7720 { fidl::ObjectType::EVENT.into_raw() },
7721 2147483648,
7722 >,
7723 fidl::encoding::DefaultFuchsiaResourceDialect,
7724 >(
7725 self.requires_token.as_mut().map(
7726 <fidl::encoding::HandleType<
7727 fidl::Event,
7728 { fidl::ObjectType::EVENT.into_raw() },
7729 2147483648,
7730 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow,
7731 ),
7732 encoder,
7733 offset + cur_offset,
7734 depth,
7735 )?;
7736
7737 _prev_end_offset = cur_offset + envelope_size;
7738 if 3 > max_ordinal {
7739 return Ok(());
7740 }
7741
7742 let cur_offset: usize = (3 - 1) * envelope_size;
7745
7746 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7748
7749 fidl::encoding::encode_in_envelope_optional::<
7754 fidl::encoding::Vector<u8, 256>,
7755 fidl::encoding::DefaultFuchsiaResourceDialect,
7756 >(
7757 self.requires_level_by_preference.as_ref().map(
7758 <fidl::encoding::Vector<u8, 256> as fidl::encoding::ValueTypeMarker>::borrow,
7759 ),
7760 encoder,
7761 offset + cur_offset,
7762 depth,
7763 )?;
7764
7765 _prev_end_offset = cur_offset + envelope_size;
7766 if 4 > max_ordinal {
7767 return Ok(());
7768 }
7769
7770 let cur_offset: usize = (4 - 1) * envelope_size;
7773
7774 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7776
7777 fidl::encoding::encode_in_envelope_optional::<
7782 bool,
7783 fidl::encoding::DefaultFuchsiaResourceDialect,
7784 >(
7785 self.remove_with_required_element
7786 .as_ref()
7787 .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
7788 encoder,
7789 offset + cur_offset,
7790 depth,
7791 )?;
7792
7793 _prev_end_offset = cur_offset + envelope_size;
7794
7795 Ok(())
7796 }
7797 }
7798
7799 impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
7800 for LevelDependency
7801 {
7802 #[inline(always)]
7803 fn new_empty() -> Self {
7804 Self::default()
7805 }
7806
7807 unsafe fn decode(
7808 &mut self,
7809 decoder: &mut fidl::encoding::Decoder<
7810 '_,
7811 fidl::encoding::DefaultFuchsiaResourceDialect,
7812 >,
7813 offset: usize,
7814 mut depth: fidl::encoding::Depth,
7815 ) -> fidl::Result<()> {
7816 decoder.debug_check_bounds::<Self>(offset);
7817 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
7818 None => return Err(fidl::Error::NotNullable),
7819 Some(len) => len,
7820 };
7821 if len == 0 {
7823 return Ok(());
7824 };
7825 depth.increment()?;
7826 let envelope_size = 8;
7827 let bytes_len = len * envelope_size;
7828 let offset = decoder.out_of_line_offset(bytes_len)?;
7829 let mut _next_ordinal_to_read = 0;
7831 let mut next_offset = offset;
7832 let end_offset = offset + bytes_len;
7833 _next_ordinal_to_read += 1;
7834 if next_offset >= end_offset {
7835 return Ok(());
7836 }
7837
7838 while _next_ordinal_to_read < 1 {
7840 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7841 _next_ordinal_to_read += 1;
7842 next_offset += envelope_size;
7843 }
7844
7845 let next_out_of_line = decoder.next_out_of_line();
7846 let handles_before = decoder.remaining_handles();
7847 if let Some((inlined, num_bytes, num_handles)) =
7848 fidl::encoding::decode_envelope_header(decoder, next_offset)?
7849 {
7850 let member_inline_size =
7851 <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7852 if inlined != (member_inline_size <= 4) {
7853 return Err(fidl::Error::InvalidInlineBitInEnvelope);
7854 }
7855 let inner_offset;
7856 let mut inner_depth = depth.clone();
7857 if inlined {
7858 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7859 inner_offset = next_offset;
7860 } else {
7861 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7862 inner_depth.increment()?;
7863 }
7864 let val_ref = self.dependent_level.get_or_insert_with(|| {
7865 fidl::new_empty!(u8, fidl::encoding::DefaultFuchsiaResourceDialect)
7866 });
7867 fidl::decode!(
7868 u8,
7869 fidl::encoding::DefaultFuchsiaResourceDialect,
7870 val_ref,
7871 decoder,
7872 inner_offset,
7873 inner_depth
7874 )?;
7875 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7876 {
7877 return Err(fidl::Error::InvalidNumBytesInEnvelope);
7878 }
7879 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7880 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7881 }
7882 }
7883
7884 next_offset += envelope_size;
7885 _next_ordinal_to_read += 1;
7886 if next_offset >= end_offset {
7887 return Ok(());
7888 }
7889
7890 while _next_ordinal_to_read < 2 {
7892 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7893 _next_ordinal_to_read += 1;
7894 next_offset += envelope_size;
7895 }
7896
7897 let next_out_of_line = decoder.next_out_of_line();
7898 let handles_before = decoder.remaining_handles();
7899 if let Some((inlined, num_bytes, num_handles)) =
7900 fidl::encoding::decode_envelope_header(decoder, next_offset)?
7901 {
7902 let member_inline_size = <fidl::encoding::HandleType<
7903 fidl::Event,
7904 { fidl::ObjectType::EVENT.into_raw() },
7905 2147483648,
7906 > as fidl::encoding::TypeMarker>::inline_size(
7907 decoder.context
7908 );
7909 if inlined != (member_inline_size <= 4) {
7910 return Err(fidl::Error::InvalidInlineBitInEnvelope);
7911 }
7912 let inner_offset;
7913 let mut inner_depth = depth.clone();
7914 if inlined {
7915 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7916 inner_offset = next_offset;
7917 } else {
7918 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7919 inner_depth.increment()?;
7920 }
7921 let val_ref =
7922 self.requires_token.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::HandleType<fidl::Event, { fidl::ObjectType::EVENT.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect));
7923 fidl::decode!(fidl::encoding::HandleType<fidl::Event, { fidl::ObjectType::EVENT.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect, val_ref, decoder, inner_offset, inner_depth)?;
7924 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7925 {
7926 return Err(fidl::Error::InvalidNumBytesInEnvelope);
7927 }
7928 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7929 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7930 }
7931 }
7932
7933 next_offset += envelope_size;
7934 _next_ordinal_to_read += 1;
7935 if next_offset >= end_offset {
7936 return Ok(());
7937 }
7938
7939 while _next_ordinal_to_read < 3 {
7941 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7942 _next_ordinal_to_read += 1;
7943 next_offset += envelope_size;
7944 }
7945
7946 let next_out_of_line = decoder.next_out_of_line();
7947 let handles_before = decoder.remaining_handles();
7948 if let Some((inlined, num_bytes, num_handles)) =
7949 fidl::encoding::decode_envelope_header(decoder, next_offset)?
7950 {
7951 let member_inline_size =
7952 <fidl::encoding::Vector<u8, 256> as fidl::encoding::TypeMarker>::inline_size(
7953 decoder.context,
7954 );
7955 if inlined != (member_inline_size <= 4) {
7956 return Err(fidl::Error::InvalidInlineBitInEnvelope);
7957 }
7958 let inner_offset;
7959 let mut inner_depth = depth.clone();
7960 if inlined {
7961 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7962 inner_offset = next_offset;
7963 } else {
7964 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7965 inner_depth.increment()?;
7966 }
7967 let val_ref =
7968 self.requires_level_by_preference.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u8, 256>, fidl::encoding::DefaultFuchsiaResourceDialect));
7969 fidl::decode!(fidl::encoding::Vector<u8, 256>, fidl::encoding::DefaultFuchsiaResourceDialect, val_ref, decoder, inner_offset, inner_depth)?;
7970 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7971 {
7972 return Err(fidl::Error::InvalidNumBytesInEnvelope);
7973 }
7974 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7975 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7976 }
7977 }
7978
7979 next_offset += envelope_size;
7980 _next_ordinal_to_read += 1;
7981 if next_offset >= end_offset {
7982 return Ok(());
7983 }
7984
7985 while _next_ordinal_to_read < 4 {
7987 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7988 _next_ordinal_to_read += 1;
7989 next_offset += envelope_size;
7990 }
7991
7992 let next_out_of_line = decoder.next_out_of_line();
7993 let handles_before = decoder.remaining_handles();
7994 if let Some((inlined, num_bytes, num_handles)) =
7995 fidl::encoding::decode_envelope_header(decoder, next_offset)?
7996 {
7997 let member_inline_size =
7998 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7999 if inlined != (member_inline_size <= 4) {
8000 return Err(fidl::Error::InvalidInlineBitInEnvelope);
8001 }
8002 let inner_offset;
8003 let mut inner_depth = depth.clone();
8004 if inlined {
8005 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8006 inner_offset = next_offset;
8007 } else {
8008 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8009 inner_depth.increment()?;
8010 }
8011 let val_ref = self.remove_with_required_element.get_or_insert_with(|| {
8012 fidl::new_empty!(bool, fidl::encoding::DefaultFuchsiaResourceDialect)
8013 });
8014 fidl::decode!(
8015 bool,
8016 fidl::encoding::DefaultFuchsiaResourceDialect,
8017 val_ref,
8018 decoder,
8019 inner_offset,
8020 inner_depth
8021 )?;
8022 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8023 {
8024 return Err(fidl::Error::InvalidNumBytesInEnvelope);
8025 }
8026 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8027 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8028 }
8029 }
8030
8031 next_offset += envelope_size;
8032
8033 while next_offset < end_offset {
8035 _next_ordinal_to_read += 1;
8036 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8037 next_offset += envelope_size;
8038 }
8039
8040 Ok(())
8041 }
8042 }
8043}