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