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