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