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_starnix_runner_common::*;
11use futures::future::{self, MaybeDone, TryFutureExt};
12use zx_status;
13
14#[derive(Debug, Default, PartialEq)]
15pub struct ManagerAddWakeSourceRequest {
16 pub container_job: Option<fidl::Job>,
18 pub name: Option<String>,
20 pub handle: Option<fidl::NullableHandle>,
24 pub signals: Option<u32>,
26 #[doc(hidden)]
27 pub __source_breaking: fidl::marker::SourceBreaking,
28}
29
30impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect>
31 for ManagerAddWakeSourceRequest
32{
33}
34
35#[derive(Debug, Default, PartialEq)]
36pub struct ManagerCreatePagerRequest {
37 pub backing_vmo: Option<fidl::Vmo>,
39 pub block_size: Option<u64>,
41 pub pager: Option<fidl::endpoints::ServerEnd<PagerMarker>>,
43 #[doc(hidden)]
44 pub __source_breaking: fidl::marker::SourceBreaking,
45}
46
47impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect> for ManagerCreatePagerRequest {}
48
49#[derive(Debug, Default, PartialEq)]
50pub struct ManagerProxyWakeChannelRequest {
51 pub container_job: Option<fidl::Job>,
53 pub container_channel: Option<fidl::Channel>,
55 pub remote_channel: Option<fidl::Channel>,
57 pub name: Option<String>,
59 pub counter: Option<fidl::Counter>,
67 #[doc(hidden)]
68 pub __source_breaking: fidl::marker::SourceBreaking,
69}
70
71impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect>
72 for ManagerProxyWakeChannelRequest
73{
74}
75
76#[derive(Debug, Default, PartialEq)]
77pub struct ManagerRegisterWakeWatcherRequest {
78 pub watcher: Option<fidl::EventPair>,
80 #[doc(hidden)]
81 pub __source_breaking: fidl::marker::SourceBreaking,
82}
83
84impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect>
85 for ManagerRegisterWakeWatcherRequest
86{
87}
88
89#[derive(Debug, Default, PartialEq)]
90pub struct ManagerRemoveWakeSourceRequest {
91 pub container_job: Option<fidl::Job>,
93 pub handle: Option<fidl::NullableHandle>,
95 #[doc(hidden)]
96 pub __source_breaking: fidl::marker::SourceBreaking,
97}
98
99impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect>
100 for ManagerRemoveWakeSourceRequest
101{
102}
103
104#[derive(Debug, Default, PartialEq)]
105pub struct ManagerSuspendContainerRequest {
106 pub container_job: Option<fidl::Job>,
108 pub wake_locks: Option<fidl::EventPair>,
111 #[doc(hidden)]
112 pub __source_breaking: fidl::marker::SourceBreaking,
113}
114
115impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect>
116 for ManagerSuspendContainerRequest
117{
118}
119
120#[derive(Debug, Default, PartialEq)]
121pub struct PagerRegisterFileResponse {
122 pub vmo: Option<fidl::Vmo>,
124 #[doc(hidden)]
125 pub __source_breaking: fidl::marker::SourceBreaking,
126}
127
128impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect> for PagerRegisterFileResponse {}
129
130#[derive(Debug, Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash)]
131pub struct ManagerMarker;
132
133impl fidl::endpoints::ProtocolMarker for ManagerMarker {
134 type Proxy = ManagerProxy;
135 type RequestStream = ManagerRequestStream;
136 #[cfg(target_os = "fuchsia")]
137 type SynchronousProxy = ManagerSynchronousProxy;
138
139 const DEBUG_NAME: &'static str = "fuchsia.starnix.runner.Manager";
140}
141impl fidl::endpoints::DiscoverableProtocolMarker for ManagerMarker {}
142pub type ManagerSuspendContainerResult = Result<ManagerSuspendContainerResponse, SuspendError>;
143
144pub trait ManagerProxyInterface: Send + Sync {
145 type SuspendContainerResponseFut: std::future::Future<Output = Result<ManagerSuspendContainerResult, fidl::Error>>
146 + Send;
147 fn r#suspend_container(
148 &self,
149 payload: ManagerSuspendContainerRequest,
150 ) -> Self::SuspendContainerResponseFut;
151 fn r#proxy_wake_channel(
152 &self,
153 payload: ManagerProxyWakeChannelRequest,
154 ) -> Result<(), fidl::Error>;
155 fn r#add_wake_source(&self, payload: ManagerAddWakeSourceRequest) -> Result<(), fidl::Error>;
156 fn r#remove_wake_source(
157 &self,
158 payload: ManagerRemoveWakeSourceRequest,
159 ) -> Result<(), fidl::Error>;
160 type RegisterWakeWatcherResponseFut: std::future::Future<Output = Result<(), fidl::Error>>
161 + Send;
162 fn r#register_wake_watcher(
163 &self,
164 payload: ManagerRegisterWakeWatcherRequest,
165 ) -> Self::RegisterWakeWatcherResponseFut;
166 fn r#create_pager(&self, payload: ManagerCreatePagerRequest) -> Result<(), fidl::Error>;
167}
168#[derive(Debug)]
169#[cfg(target_os = "fuchsia")]
170pub struct ManagerSynchronousProxy {
171 client: fidl::client::sync::Client,
172}
173
174#[cfg(target_os = "fuchsia")]
175impl fidl::endpoints::SynchronousProxy for ManagerSynchronousProxy {
176 type Proxy = ManagerProxy;
177 type Protocol = ManagerMarker;
178
179 fn from_channel(inner: fidl::Channel) -> Self {
180 Self::new(inner)
181 }
182
183 fn into_channel(self) -> fidl::Channel {
184 self.client.into_channel()
185 }
186
187 fn as_channel(&self) -> &fidl::Channel {
188 self.client.as_channel()
189 }
190}
191
192#[cfg(target_os = "fuchsia")]
193impl ManagerSynchronousProxy {
194 pub fn new(channel: fidl::Channel) -> Self {
195 Self { client: fidl::client::sync::Client::new(channel) }
196 }
197
198 pub fn into_channel(self) -> fidl::Channel {
199 self.client.into_channel()
200 }
201
202 pub fn wait_for_event(
205 &self,
206 deadline: zx::MonotonicInstant,
207 ) -> Result<ManagerEvent, fidl::Error> {
208 ManagerEvent::decode(self.client.wait_for_event::<ManagerMarker>(deadline)?)
209 }
210
211 pub fn r#suspend_container(
217 &self,
218 mut payload: ManagerSuspendContainerRequest,
219 ___deadline: zx::MonotonicInstant,
220 ) -> Result<ManagerSuspendContainerResult, fidl::Error> {
221 let _response = self.client.send_query::<
222 ManagerSuspendContainerRequest,
223 fidl::encoding::FlexibleResultType<ManagerSuspendContainerResponse, SuspendError>,
224 ManagerMarker,
225 >(
226 &mut payload,
227 0x928527927c9f2a7,
228 fidl::encoding::DynamicFlags::FLEXIBLE,
229 ___deadline,
230 )?
231 .into_result::<ManagerMarker>("suspend_container")?;
232 Ok(_response.map(|x| x))
233 }
234
235 pub fn r#proxy_wake_channel(
244 &self,
245 mut payload: ManagerProxyWakeChannelRequest,
246 ) -> Result<(), fidl::Error> {
247 self.client.send::<ManagerProxyWakeChannelRequest>(
248 &mut payload,
249 0x46a374ab73b23714,
250 fidl::encoding::DynamicFlags::FLEXIBLE,
251 )
252 }
253
254 pub fn r#add_wake_source(
257 &self,
258 mut payload: ManagerAddWakeSourceRequest,
259 ) -> Result<(), fidl::Error> {
260 self.client.send::<ManagerAddWakeSourceRequest>(
261 &mut payload,
262 0x45e94269f9722ac,
263 fidl::encoding::DynamicFlags::FLEXIBLE,
264 )
265 }
266
267 pub fn r#remove_wake_source(
274 &self,
275 mut payload: ManagerRemoveWakeSourceRequest,
276 ) -> Result<(), fidl::Error> {
277 self.client.send::<ManagerRemoveWakeSourceRequest>(
278 &mut payload,
279 0x25d311f5e801501a,
280 fidl::encoding::DynamicFlags::FLEXIBLE,
281 )
282 }
283
284 pub fn r#register_wake_watcher(
289 &self,
290 mut payload: ManagerRegisterWakeWatcherRequest,
291 ___deadline: zx::MonotonicInstant,
292 ) -> Result<(), fidl::Error> {
293 let _response = self.client.send_query::<
294 ManagerRegisterWakeWatcherRequest,
295 fidl::encoding::FlexibleType<fidl::encoding::EmptyStruct>,
296 ManagerMarker,
297 >(
298 &mut payload,
299 0x456d74519eb65b41,
300 fidl::encoding::DynamicFlags::FLEXIBLE,
301 ___deadline,
302 )?
303 .into_result::<ManagerMarker>("register_wake_watcher")?;
304 Ok(_response)
305 }
306
307 pub fn r#create_pager(
309 &self,
310 mut payload: ManagerCreatePagerRequest,
311 ) -> Result<(), fidl::Error> {
312 self.client.send::<ManagerCreatePagerRequest>(
313 &mut payload,
314 0x49d14958b736198b,
315 fidl::encoding::DynamicFlags::FLEXIBLE,
316 )
317 }
318}
319
320#[cfg(target_os = "fuchsia")]
321impl From<ManagerSynchronousProxy> for zx::NullableHandle {
322 fn from(value: ManagerSynchronousProxy) -> Self {
323 value.into_channel().into()
324 }
325}
326
327#[cfg(target_os = "fuchsia")]
328impl From<fidl::Channel> for ManagerSynchronousProxy {
329 fn from(value: fidl::Channel) -> Self {
330 Self::new(value)
331 }
332}
333
334#[cfg(target_os = "fuchsia")]
335impl fidl::endpoints::FromClient for ManagerSynchronousProxy {
336 type Protocol = ManagerMarker;
337
338 fn from_client(value: fidl::endpoints::ClientEnd<ManagerMarker>) -> Self {
339 Self::new(value.into_channel())
340 }
341}
342
343#[derive(Debug, Clone)]
344pub struct ManagerProxy {
345 client: fidl::client::Client<fidl::encoding::DefaultFuchsiaResourceDialect>,
346}
347
348impl fidl::endpoints::Proxy for ManagerProxy {
349 type Protocol = ManagerMarker;
350
351 fn from_channel(inner: ::fidl::AsyncChannel) -> Self {
352 Self::new(inner)
353 }
354
355 fn into_channel(self) -> Result<::fidl::AsyncChannel, Self> {
356 self.client.into_channel().map_err(|client| Self { client })
357 }
358
359 fn as_channel(&self) -> &::fidl::AsyncChannel {
360 self.client.as_channel()
361 }
362}
363
364impl ManagerProxy {
365 pub fn new(channel: ::fidl::AsyncChannel) -> Self {
367 let protocol_name = <ManagerMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
368 Self { client: fidl::client::Client::new(channel, protocol_name) }
369 }
370
371 pub fn take_event_stream(&self) -> ManagerEventStream {
377 ManagerEventStream { event_receiver: self.client.take_event_receiver() }
378 }
379
380 pub fn r#suspend_container(
386 &self,
387 mut payload: ManagerSuspendContainerRequest,
388 ) -> fidl::client::QueryResponseFut<
389 ManagerSuspendContainerResult,
390 fidl::encoding::DefaultFuchsiaResourceDialect,
391 > {
392 ManagerProxyInterface::r#suspend_container(self, payload)
393 }
394
395 pub fn r#proxy_wake_channel(
404 &self,
405 mut payload: ManagerProxyWakeChannelRequest,
406 ) -> Result<(), fidl::Error> {
407 ManagerProxyInterface::r#proxy_wake_channel(self, payload)
408 }
409
410 pub fn r#add_wake_source(
413 &self,
414 mut payload: ManagerAddWakeSourceRequest,
415 ) -> Result<(), fidl::Error> {
416 ManagerProxyInterface::r#add_wake_source(self, payload)
417 }
418
419 pub fn r#remove_wake_source(
426 &self,
427 mut payload: ManagerRemoveWakeSourceRequest,
428 ) -> Result<(), fidl::Error> {
429 ManagerProxyInterface::r#remove_wake_source(self, payload)
430 }
431
432 pub fn r#register_wake_watcher(
437 &self,
438 mut payload: ManagerRegisterWakeWatcherRequest,
439 ) -> fidl::client::QueryResponseFut<(), fidl::encoding::DefaultFuchsiaResourceDialect> {
440 ManagerProxyInterface::r#register_wake_watcher(self, payload)
441 }
442
443 pub fn r#create_pager(
445 &self,
446 mut payload: ManagerCreatePagerRequest,
447 ) -> Result<(), fidl::Error> {
448 ManagerProxyInterface::r#create_pager(self, payload)
449 }
450}
451
452impl ManagerProxyInterface for ManagerProxy {
453 type SuspendContainerResponseFut = fidl::client::QueryResponseFut<
454 ManagerSuspendContainerResult,
455 fidl::encoding::DefaultFuchsiaResourceDialect,
456 >;
457 fn r#suspend_container(
458 &self,
459 mut payload: ManagerSuspendContainerRequest,
460 ) -> Self::SuspendContainerResponseFut {
461 fn _decode(
462 mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
463 ) -> Result<ManagerSuspendContainerResult, fidl::Error> {
464 let _response = fidl::client::decode_transaction_body::<
465 fidl::encoding::FlexibleResultType<ManagerSuspendContainerResponse, SuspendError>,
466 fidl::encoding::DefaultFuchsiaResourceDialect,
467 0x928527927c9f2a7,
468 >(_buf?)?
469 .into_result::<ManagerMarker>("suspend_container")?;
470 Ok(_response.map(|x| x))
471 }
472 self.client
473 .send_query_and_decode::<ManagerSuspendContainerRequest, ManagerSuspendContainerResult>(
474 &mut payload,
475 0x928527927c9f2a7,
476 fidl::encoding::DynamicFlags::FLEXIBLE,
477 _decode,
478 )
479 }
480
481 fn r#proxy_wake_channel(
482 &self,
483 mut payload: ManagerProxyWakeChannelRequest,
484 ) -> Result<(), fidl::Error> {
485 self.client.send::<ManagerProxyWakeChannelRequest>(
486 &mut payload,
487 0x46a374ab73b23714,
488 fidl::encoding::DynamicFlags::FLEXIBLE,
489 )
490 }
491
492 fn r#add_wake_source(
493 &self,
494 mut payload: ManagerAddWakeSourceRequest,
495 ) -> Result<(), fidl::Error> {
496 self.client.send::<ManagerAddWakeSourceRequest>(
497 &mut payload,
498 0x45e94269f9722ac,
499 fidl::encoding::DynamicFlags::FLEXIBLE,
500 )
501 }
502
503 fn r#remove_wake_source(
504 &self,
505 mut payload: ManagerRemoveWakeSourceRequest,
506 ) -> Result<(), fidl::Error> {
507 self.client.send::<ManagerRemoveWakeSourceRequest>(
508 &mut payload,
509 0x25d311f5e801501a,
510 fidl::encoding::DynamicFlags::FLEXIBLE,
511 )
512 }
513
514 type RegisterWakeWatcherResponseFut =
515 fidl::client::QueryResponseFut<(), fidl::encoding::DefaultFuchsiaResourceDialect>;
516 fn r#register_wake_watcher(
517 &self,
518 mut payload: ManagerRegisterWakeWatcherRequest,
519 ) -> Self::RegisterWakeWatcherResponseFut {
520 fn _decode(
521 mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
522 ) -> Result<(), fidl::Error> {
523 let _response = fidl::client::decode_transaction_body::<
524 fidl::encoding::FlexibleType<fidl::encoding::EmptyStruct>,
525 fidl::encoding::DefaultFuchsiaResourceDialect,
526 0x456d74519eb65b41,
527 >(_buf?)?
528 .into_result::<ManagerMarker>("register_wake_watcher")?;
529 Ok(_response)
530 }
531 self.client.send_query_and_decode::<ManagerRegisterWakeWatcherRequest, ()>(
532 &mut payload,
533 0x456d74519eb65b41,
534 fidl::encoding::DynamicFlags::FLEXIBLE,
535 _decode,
536 )
537 }
538
539 fn r#create_pager(&self, mut payload: ManagerCreatePagerRequest) -> Result<(), fidl::Error> {
540 self.client.send::<ManagerCreatePagerRequest>(
541 &mut payload,
542 0x49d14958b736198b,
543 fidl::encoding::DynamicFlags::FLEXIBLE,
544 )
545 }
546}
547
548pub struct ManagerEventStream {
549 event_receiver: fidl::client::EventReceiver<fidl::encoding::DefaultFuchsiaResourceDialect>,
550}
551
552impl std::marker::Unpin for ManagerEventStream {}
553
554impl futures::stream::FusedStream for ManagerEventStream {
555 fn is_terminated(&self) -> bool {
556 self.event_receiver.is_terminated()
557 }
558}
559
560impl futures::Stream for ManagerEventStream {
561 type Item = Result<ManagerEvent, fidl::Error>;
562
563 fn poll_next(
564 mut self: std::pin::Pin<&mut Self>,
565 cx: &mut std::task::Context<'_>,
566 ) -> std::task::Poll<Option<Self::Item>> {
567 match futures::ready!(futures::stream::StreamExt::poll_next_unpin(
568 &mut self.event_receiver,
569 cx
570 )?) {
571 Some(buf) => std::task::Poll::Ready(Some(ManagerEvent::decode(buf))),
572 None => std::task::Poll::Ready(None),
573 }
574 }
575}
576
577#[derive(Debug)]
578pub enum ManagerEvent {
579 #[non_exhaustive]
580 _UnknownEvent {
581 ordinal: u64,
583 },
584}
585
586impl ManagerEvent {
587 fn decode(
589 mut buf: <fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc,
590 ) -> Result<ManagerEvent, fidl::Error> {
591 let (bytes, _handles) = buf.split_mut();
592 let (tx_header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
593 debug_assert_eq!(tx_header.tx_id, 0);
594 match tx_header.ordinal {
595 _ if tx_header.dynamic_flags().contains(fidl::encoding::DynamicFlags::FLEXIBLE) => {
596 Ok(ManagerEvent::_UnknownEvent { ordinal: tx_header.ordinal })
597 }
598 _ => Err(fidl::Error::UnknownOrdinal {
599 ordinal: tx_header.ordinal,
600 protocol_name: <ManagerMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
601 }),
602 }
603 }
604}
605
606pub struct ManagerRequestStream {
608 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
609 is_terminated: bool,
610}
611
612impl std::marker::Unpin for ManagerRequestStream {}
613
614impl futures::stream::FusedStream for ManagerRequestStream {
615 fn is_terminated(&self) -> bool {
616 self.is_terminated
617 }
618}
619
620impl fidl::endpoints::RequestStream for ManagerRequestStream {
621 type Protocol = ManagerMarker;
622 type ControlHandle = ManagerControlHandle;
623
624 fn from_channel(channel: ::fidl::AsyncChannel) -> Self {
625 Self { inner: std::sync::Arc::new(fidl::ServeInner::new(channel)), is_terminated: false }
626 }
627
628 fn control_handle(&self) -> Self::ControlHandle {
629 ManagerControlHandle { inner: self.inner.clone() }
630 }
631
632 fn into_inner(
633 self,
634 ) -> (::std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>, bool)
635 {
636 (self.inner, self.is_terminated)
637 }
638
639 fn from_inner(
640 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
641 is_terminated: bool,
642 ) -> Self {
643 Self { inner, is_terminated }
644 }
645}
646
647impl futures::Stream for ManagerRequestStream {
648 type Item = Result<ManagerRequest, fidl::Error>;
649
650 fn poll_next(
651 mut self: std::pin::Pin<&mut Self>,
652 cx: &mut std::task::Context<'_>,
653 ) -> std::task::Poll<Option<Self::Item>> {
654 let this = &mut *self;
655 if this.inner.check_shutdown(cx) {
656 this.is_terminated = true;
657 return std::task::Poll::Ready(None);
658 }
659 if this.is_terminated {
660 panic!("polled ManagerRequestStream after completion");
661 }
662 fidl::encoding::with_tls_decode_buf::<_, fidl::encoding::DefaultFuchsiaResourceDialect>(
663 |bytes, handles| {
664 match this.inner.channel().read_etc(cx, bytes, handles) {
665 std::task::Poll::Ready(Ok(())) => {}
666 std::task::Poll::Pending => return std::task::Poll::Pending,
667 std::task::Poll::Ready(Err(zx_status::Status::PEER_CLOSED)) => {
668 this.is_terminated = true;
669 return std::task::Poll::Ready(None);
670 }
671 std::task::Poll::Ready(Err(e)) => {
672 return std::task::Poll::Ready(Some(Err(fidl::Error::ServerRequestRead(
673 e.into(),
674 ))));
675 }
676 }
677
678 let (header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
680
681 std::task::Poll::Ready(Some(match header.ordinal {
682 0x928527927c9f2a7 => {
683 header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
684 let mut req = fidl::new_empty!(
685 ManagerSuspendContainerRequest,
686 fidl::encoding::DefaultFuchsiaResourceDialect
687 );
688 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<ManagerSuspendContainerRequest>(&header, _body_bytes, handles, &mut req)?;
689 let control_handle = ManagerControlHandle { inner: this.inner.clone() };
690 Ok(ManagerRequest::SuspendContainer {
691 payload: req,
692 responder: ManagerSuspendContainerResponder {
693 control_handle: std::mem::ManuallyDrop::new(control_handle),
694 tx_id: header.tx_id,
695 },
696 })
697 }
698 0x46a374ab73b23714 => {
699 header.validate_request_tx_id(fidl::MethodType::OneWay)?;
700 let mut req = fidl::new_empty!(
701 ManagerProxyWakeChannelRequest,
702 fidl::encoding::DefaultFuchsiaResourceDialect
703 );
704 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<ManagerProxyWakeChannelRequest>(&header, _body_bytes, handles, &mut req)?;
705 let control_handle = ManagerControlHandle { inner: this.inner.clone() };
706 Ok(ManagerRequest::ProxyWakeChannel { payload: req, control_handle })
707 }
708 0x45e94269f9722ac => {
709 header.validate_request_tx_id(fidl::MethodType::OneWay)?;
710 let mut req = fidl::new_empty!(
711 ManagerAddWakeSourceRequest,
712 fidl::encoding::DefaultFuchsiaResourceDialect
713 );
714 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<ManagerAddWakeSourceRequest>(&header, _body_bytes, handles, &mut req)?;
715 let control_handle = ManagerControlHandle { inner: this.inner.clone() };
716 Ok(ManagerRequest::AddWakeSource { payload: req, control_handle })
717 }
718 0x25d311f5e801501a => {
719 header.validate_request_tx_id(fidl::MethodType::OneWay)?;
720 let mut req = fidl::new_empty!(
721 ManagerRemoveWakeSourceRequest,
722 fidl::encoding::DefaultFuchsiaResourceDialect
723 );
724 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<ManagerRemoveWakeSourceRequest>(&header, _body_bytes, handles, &mut req)?;
725 let control_handle = ManagerControlHandle { inner: this.inner.clone() };
726 Ok(ManagerRequest::RemoveWakeSource { payload: req, control_handle })
727 }
728 0x456d74519eb65b41 => {
729 header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
730 let mut req = fidl::new_empty!(
731 ManagerRegisterWakeWatcherRequest,
732 fidl::encoding::DefaultFuchsiaResourceDialect
733 );
734 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<ManagerRegisterWakeWatcherRequest>(&header, _body_bytes, handles, &mut req)?;
735 let control_handle = ManagerControlHandle { inner: this.inner.clone() };
736 Ok(ManagerRequest::RegisterWakeWatcher {
737 payload: req,
738 responder: ManagerRegisterWakeWatcherResponder {
739 control_handle: std::mem::ManuallyDrop::new(control_handle),
740 tx_id: header.tx_id,
741 },
742 })
743 }
744 0x49d14958b736198b => {
745 header.validate_request_tx_id(fidl::MethodType::OneWay)?;
746 let mut req = fidl::new_empty!(
747 ManagerCreatePagerRequest,
748 fidl::encoding::DefaultFuchsiaResourceDialect
749 );
750 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<ManagerCreatePagerRequest>(&header, _body_bytes, handles, &mut req)?;
751 let control_handle = ManagerControlHandle { inner: this.inner.clone() };
752 Ok(ManagerRequest::CreatePager { payload: req, control_handle })
753 }
754 _ if header.tx_id == 0
755 && header
756 .dynamic_flags()
757 .contains(fidl::encoding::DynamicFlags::FLEXIBLE) =>
758 {
759 Ok(ManagerRequest::_UnknownMethod {
760 ordinal: header.ordinal,
761 control_handle: ManagerControlHandle { inner: this.inner.clone() },
762 method_type: fidl::MethodType::OneWay,
763 })
764 }
765 _ if header
766 .dynamic_flags()
767 .contains(fidl::encoding::DynamicFlags::FLEXIBLE) =>
768 {
769 this.inner.send_framework_err(
770 fidl::encoding::FrameworkErr::UnknownMethod,
771 header.tx_id,
772 header.ordinal,
773 header.dynamic_flags(),
774 (bytes, handles),
775 )?;
776 Ok(ManagerRequest::_UnknownMethod {
777 ordinal: header.ordinal,
778 control_handle: ManagerControlHandle { inner: this.inner.clone() },
779 method_type: fidl::MethodType::TwoWay,
780 })
781 }
782 _ => Err(fidl::Error::UnknownOrdinal {
783 ordinal: header.ordinal,
784 protocol_name:
785 <ManagerMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
786 }),
787 }))
788 },
789 )
790 }
791}
792
793#[derive(Debug)]
794pub enum ManagerRequest {
795 SuspendContainer {
801 payload: ManagerSuspendContainerRequest,
802 responder: ManagerSuspendContainerResponder,
803 },
804 ProxyWakeChannel {
813 payload: ManagerProxyWakeChannelRequest,
814 control_handle: ManagerControlHandle,
815 },
816 AddWakeSource { payload: ManagerAddWakeSourceRequest, control_handle: ManagerControlHandle },
819 RemoveWakeSource {
826 payload: ManagerRemoveWakeSourceRequest,
827 control_handle: ManagerControlHandle,
828 },
829 RegisterWakeWatcher {
834 payload: ManagerRegisterWakeWatcherRequest,
835 responder: ManagerRegisterWakeWatcherResponder,
836 },
837 CreatePager { payload: ManagerCreatePagerRequest, control_handle: ManagerControlHandle },
839 #[non_exhaustive]
841 _UnknownMethod {
842 ordinal: u64,
844 control_handle: ManagerControlHandle,
845 method_type: fidl::MethodType,
846 },
847}
848
849impl ManagerRequest {
850 #[allow(irrefutable_let_patterns)]
851 pub fn into_suspend_container(
852 self,
853 ) -> Option<(ManagerSuspendContainerRequest, ManagerSuspendContainerResponder)> {
854 if let ManagerRequest::SuspendContainer { payload, responder } = self {
855 Some((payload, responder))
856 } else {
857 None
858 }
859 }
860
861 #[allow(irrefutable_let_patterns)]
862 pub fn into_proxy_wake_channel(
863 self,
864 ) -> Option<(ManagerProxyWakeChannelRequest, ManagerControlHandle)> {
865 if let ManagerRequest::ProxyWakeChannel { payload, control_handle } = self {
866 Some((payload, control_handle))
867 } else {
868 None
869 }
870 }
871
872 #[allow(irrefutable_let_patterns)]
873 pub fn into_add_wake_source(
874 self,
875 ) -> Option<(ManagerAddWakeSourceRequest, ManagerControlHandle)> {
876 if let ManagerRequest::AddWakeSource { payload, control_handle } = self {
877 Some((payload, control_handle))
878 } else {
879 None
880 }
881 }
882
883 #[allow(irrefutable_let_patterns)]
884 pub fn into_remove_wake_source(
885 self,
886 ) -> Option<(ManagerRemoveWakeSourceRequest, ManagerControlHandle)> {
887 if let ManagerRequest::RemoveWakeSource { payload, control_handle } = self {
888 Some((payload, control_handle))
889 } else {
890 None
891 }
892 }
893
894 #[allow(irrefutable_let_patterns)]
895 pub fn into_register_wake_watcher(
896 self,
897 ) -> Option<(ManagerRegisterWakeWatcherRequest, ManagerRegisterWakeWatcherResponder)> {
898 if let ManagerRequest::RegisterWakeWatcher { payload, responder } = self {
899 Some((payload, responder))
900 } else {
901 None
902 }
903 }
904
905 #[allow(irrefutable_let_patterns)]
906 pub fn into_create_pager(self) -> Option<(ManagerCreatePagerRequest, ManagerControlHandle)> {
907 if let ManagerRequest::CreatePager { payload, control_handle } = self {
908 Some((payload, control_handle))
909 } else {
910 None
911 }
912 }
913
914 pub fn method_name(&self) -> &'static str {
916 match *self {
917 ManagerRequest::SuspendContainer { .. } => "suspend_container",
918 ManagerRequest::ProxyWakeChannel { .. } => "proxy_wake_channel",
919 ManagerRequest::AddWakeSource { .. } => "add_wake_source",
920 ManagerRequest::RemoveWakeSource { .. } => "remove_wake_source",
921 ManagerRequest::RegisterWakeWatcher { .. } => "register_wake_watcher",
922 ManagerRequest::CreatePager { .. } => "create_pager",
923 ManagerRequest::_UnknownMethod { method_type: fidl::MethodType::OneWay, .. } => {
924 "unknown one-way method"
925 }
926 ManagerRequest::_UnknownMethod { method_type: fidl::MethodType::TwoWay, .. } => {
927 "unknown two-way method"
928 }
929 }
930 }
931}
932
933#[derive(Debug, Clone)]
934pub struct ManagerControlHandle {
935 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
936}
937
938impl ManagerControlHandle {
939 pub fn shutdown_with_epitaph(&self, status: impl Into<fidl::Epitaph>) {
940 self.inner.shutdown_with_epitaph(status.into())
941 }
942}
943
944impl fidl::endpoints::ControlHandle for ManagerControlHandle {
945 fn shutdown(&self) {
946 self.inner.shutdown()
947 }
948
949 fn shutdown_with_epitaph(&self, status: fidl::Epitaph) {
950 self.inner.shutdown_with_epitaph(status)
951 }
952
953 fn is_closed(&self) -> bool {
954 self.inner.channel().is_closed()
955 }
956 fn on_closed(&self) -> fidl::OnSignalsRef<'_> {
957 self.inner.channel().on_closed()
958 }
959
960 #[cfg(target_os = "fuchsia")]
961 fn signal_peer(
962 &self,
963 clear_mask: zx::Signals,
964 set_mask: zx::Signals,
965 ) -> Result<(), zx_status::Status> {
966 use fidl::Peered;
967 self.inner.channel().signal_peer(clear_mask, set_mask)
968 }
969}
970
971impl ManagerControlHandle {}
972
973#[must_use = "FIDL methods require a response to be sent"]
974#[derive(Debug)]
975pub struct ManagerSuspendContainerResponder {
976 control_handle: std::mem::ManuallyDrop<ManagerControlHandle>,
977 tx_id: u32,
978}
979
980impl std::ops::Drop for ManagerSuspendContainerResponder {
984 fn drop(&mut self) {
985 self.control_handle.shutdown();
986 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
988 }
989}
990
991impl fidl::endpoints::Responder for ManagerSuspendContainerResponder {
992 type ControlHandle = ManagerControlHandle;
993
994 fn control_handle(&self) -> &ManagerControlHandle {
995 &self.control_handle
996 }
997
998 fn drop_without_shutdown(mut self) {
999 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
1001 std::mem::forget(self);
1003 }
1004}
1005
1006impl ManagerSuspendContainerResponder {
1007 pub fn send(
1011 self,
1012 mut result: Result<&ManagerSuspendContainerResponse, SuspendError>,
1013 ) -> Result<(), fidl::Error> {
1014 let _result = self.send_raw(result);
1015 if _result.is_err() {
1016 self.control_handle.shutdown();
1017 }
1018 self.drop_without_shutdown();
1019 _result
1020 }
1021
1022 pub fn send_no_shutdown_on_err(
1024 self,
1025 mut result: Result<&ManagerSuspendContainerResponse, SuspendError>,
1026 ) -> Result<(), fidl::Error> {
1027 let _result = self.send_raw(result);
1028 self.drop_without_shutdown();
1029 _result
1030 }
1031
1032 fn send_raw(
1033 &self,
1034 mut result: Result<&ManagerSuspendContainerResponse, SuspendError>,
1035 ) -> Result<(), fidl::Error> {
1036 self.control_handle.inner.send::<fidl::encoding::FlexibleResultType<
1037 ManagerSuspendContainerResponse,
1038 SuspendError,
1039 >>(
1040 fidl::encoding::FlexibleResult::new(result),
1041 self.tx_id,
1042 0x928527927c9f2a7,
1043 fidl::encoding::DynamicFlags::FLEXIBLE,
1044 )
1045 }
1046}
1047
1048#[must_use = "FIDL methods require a response to be sent"]
1049#[derive(Debug)]
1050pub struct ManagerRegisterWakeWatcherResponder {
1051 control_handle: std::mem::ManuallyDrop<ManagerControlHandle>,
1052 tx_id: u32,
1053}
1054
1055impl std::ops::Drop for ManagerRegisterWakeWatcherResponder {
1059 fn drop(&mut self) {
1060 self.control_handle.shutdown();
1061 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
1063 }
1064}
1065
1066impl fidl::endpoints::Responder for ManagerRegisterWakeWatcherResponder {
1067 type ControlHandle = ManagerControlHandle;
1068
1069 fn control_handle(&self) -> &ManagerControlHandle {
1070 &self.control_handle
1071 }
1072
1073 fn drop_without_shutdown(mut self) {
1074 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
1076 std::mem::forget(self);
1078 }
1079}
1080
1081impl ManagerRegisterWakeWatcherResponder {
1082 pub fn send(self) -> Result<(), fidl::Error> {
1086 let _result = self.send_raw();
1087 if _result.is_err() {
1088 self.control_handle.shutdown();
1089 }
1090 self.drop_without_shutdown();
1091 _result
1092 }
1093
1094 pub fn send_no_shutdown_on_err(self) -> Result<(), fidl::Error> {
1096 let _result = self.send_raw();
1097 self.drop_without_shutdown();
1098 _result
1099 }
1100
1101 fn send_raw(&self) -> Result<(), fidl::Error> {
1102 self.control_handle.inner.send::<fidl::encoding::FlexibleType<fidl::encoding::EmptyStruct>>(
1103 fidl::encoding::Flexible::new(()),
1104 self.tx_id,
1105 0x456d74519eb65b41,
1106 fidl::encoding::DynamicFlags::FLEXIBLE,
1107 )
1108 }
1109}
1110
1111#[derive(Debug, Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash)]
1112pub struct PagerMarker;
1113
1114impl fidl::endpoints::ProtocolMarker for PagerMarker {
1115 type Proxy = PagerProxy;
1116 type RequestStream = PagerRequestStream;
1117 #[cfg(target_os = "fuchsia")]
1118 type SynchronousProxy = PagerSynchronousProxy;
1119
1120 const DEBUG_NAME: &'static str = "(anonymous) Pager";
1121}
1122pub type PagerRegisterFileResult = Result<PagerRegisterFileResponse, i32>;
1123
1124pub trait PagerProxyInterface: Send + Sync {
1125 type RegisterFileResponseFut: std::future::Future<Output = Result<PagerRegisterFileResult, fidl::Error>>
1126 + Send;
1127 fn r#register_file(&self, payload: &PagerRegisterFileRequest) -> Self::RegisterFileResponseFut;
1128}
1129#[derive(Debug)]
1130#[cfg(target_os = "fuchsia")]
1131pub struct PagerSynchronousProxy {
1132 client: fidl::client::sync::Client,
1133}
1134
1135#[cfg(target_os = "fuchsia")]
1136impl fidl::endpoints::SynchronousProxy for PagerSynchronousProxy {
1137 type Proxy = PagerProxy;
1138 type Protocol = PagerMarker;
1139
1140 fn from_channel(inner: fidl::Channel) -> Self {
1141 Self::new(inner)
1142 }
1143
1144 fn into_channel(self) -> fidl::Channel {
1145 self.client.into_channel()
1146 }
1147
1148 fn as_channel(&self) -> &fidl::Channel {
1149 self.client.as_channel()
1150 }
1151}
1152
1153#[cfg(target_os = "fuchsia")]
1154impl PagerSynchronousProxy {
1155 pub fn new(channel: fidl::Channel) -> Self {
1156 Self { client: fidl::client::sync::Client::new(channel) }
1157 }
1158
1159 pub fn into_channel(self) -> fidl::Channel {
1160 self.client.into_channel()
1161 }
1162
1163 pub fn wait_for_event(
1166 &self,
1167 deadline: zx::MonotonicInstant,
1168 ) -> Result<PagerEvent, fidl::Error> {
1169 PagerEvent::decode(self.client.wait_for_event::<PagerMarker>(deadline)?)
1170 }
1171
1172 pub fn r#register_file(
1174 &self,
1175 mut payload: &PagerRegisterFileRequest,
1176 ___deadline: zx::MonotonicInstant,
1177 ) -> Result<PagerRegisterFileResult, fidl::Error> {
1178 let _response = self.client.send_query::<
1179 PagerRegisterFileRequest,
1180 fidl::encoding::FlexibleResultType<PagerRegisterFileResponse, i32>,
1181 PagerMarker,
1182 >(
1183 payload,
1184 0x4f85a2ce6cae4aed,
1185 fidl::encoding::DynamicFlags::FLEXIBLE,
1186 ___deadline,
1187 )?
1188 .into_result::<PagerMarker>("register_file")?;
1189 Ok(_response.map(|x| x))
1190 }
1191}
1192
1193#[cfg(target_os = "fuchsia")]
1194impl From<PagerSynchronousProxy> for zx::NullableHandle {
1195 fn from(value: PagerSynchronousProxy) -> Self {
1196 value.into_channel().into()
1197 }
1198}
1199
1200#[cfg(target_os = "fuchsia")]
1201impl From<fidl::Channel> for PagerSynchronousProxy {
1202 fn from(value: fidl::Channel) -> Self {
1203 Self::new(value)
1204 }
1205}
1206
1207#[cfg(target_os = "fuchsia")]
1208impl fidl::endpoints::FromClient for PagerSynchronousProxy {
1209 type Protocol = PagerMarker;
1210
1211 fn from_client(value: fidl::endpoints::ClientEnd<PagerMarker>) -> Self {
1212 Self::new(value.into_channel())
1213 }
1214}
1215
1216#[derive(Debug, Clone)]
1217pub struct PagerProxy {
1218 client: fidl::client::Client<fidl::encoding::DefaultFuchsiaResourceDialect>,
1219}
1220
1221impl fidl::endpoints::Proxy for PagerProxy {
1222 type Protocol = PagerMarker;
1223
1224 fn from_channel(inner: ::fidl::AsyncChannel) -> Self {
1225 Self::new(inner)
1226 }
1227
1228 fn into_channel(self) -> Result<::fidl::AsyncChannel, Self> {
1229 self.client.into_channel().map_err(|client| Self { client })
1230 }
1231
1232 fn as_channel(&self) -> &::fidl::AsyncChannel {
1233 self.client.as_channel()
1234 }
1235}
1236
1237impl PagerProxy {
1238 pub fn new(channel: ::fidl::AsyncChannel) -> Self {
1240 let protocol_name = <PagerMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
1241 Self { client: fidl::client::Client::new(channel, protocol_name) }
1242 }
1243
1244 pub fn take_event_stream(&self) -> PagerEventStream {
1250 PagerEventStream { event_receiver: self.client.take_event_receiver() }
1251 }
1252
1253 pub fn r#register_file(
1255 &self,
1256 mut payload: &PagerRegisterFileRequest,
1257 ) -> fidl::client::QueryResponseFut<
1258 PagerRegisterFileResult,
1259 fidl::encoding::DefaultFuchsiaResourceDialect,
1260 > {
1261 PagerProxyInterface::r#register_file(self, payload)
1262 }
1263}
1264
1265impl PagerProxyInterface for PagerProxy {
1266 type RegisterFileResponseFut = fidl::client::QueryResponseFut<
1267 PagerRegisterFileResult,
1268 fidl::encoding::DefaultFuchsiaResourceDialect,
1269 >;
1270 fn r#register_file(
1271 &self,
1272 mut payload: &PagerRegisterFileRequest,
1273 ) -> Self::RegisterFileResponseFut {
1274 fn _decode(
1275 mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
1276 ) -> Result<PagerRegisterFileResult, fidl::Error> {
1277 let _response = fidl::client::decode_transaction_body::<
1278 fidl::encoding::FlexibleResultType<PagerRegisterFileResponse, i32>,
1279 fidl::encoding::DefaultFuchsiaResourceDialect,
1280 0x4f85a2ce6cae4aed,
1281 >(_buf?)?
1282 .into_result::<PagerMarker>("register_file")?;
1283 Ok(_response.map(|x| x))
1284 }
1285 self.client.send_query_and_decode::<PagerRegisterFileRequest, PagerRegisterFileResult>(
1286 payload,
1287 0x4f85a2ce6cae4aed,
1288 fidl::encoding::DynamicFlags::FLEXIBLE,
1289 _decode,
1290 )
1291 }
1292}
1293
1294pub struct PagerEventStream {
1295 event_receiver: fidl::client::EventReceiver<fidl::encoding::DefaultFuchsiaResourceDialect>,
1296}
1297
1298impl std::marker::Unpin for PagerEventStream {}
1299
1300impl futures::stream::FusedStream for PagerEventStream {
1301 fn is_terminated(&self) -> bool {
1302 self.event_receiver.is_terminated()
1303 }
1304}
1305
1306impl futures::Stream for PagerEventStream {
1307 type Item = Result<PagerEvent, fidl::Error>;
1308
1309 fn poll_next(
1310 mut self: std::pin::Pin<&mut Self>,
1311 cx: &mut std::task::Context<'_>,
1312 ) -> std::task::Poll<Option<Self::Item>> {
1313 match futures::ready!(futures::stream::StreamExt::poll_next_unpin(
1314 &mut self.event_receiver,
1315 cx
1316 )?) {
1317 Some(buf) => std::task::Poll::Ready(Some(PagerEvent::decode(buf))),
1318 None => std::task::Poll::Ready(None),
1319 }
1320 }
1321}
1322
1323#[derive(Debug)]
1324pub enum PagerEvent {
1325 #[non_exhaustive]
1326 _UnknownEvent {
1327 ordinal: u64,
1329 },
1330}
1331
1332impl PagerEvent {
1333 fn decode(
1335 mut buf: <fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc,
1336 ) -> Result<PagerEvent, fidl::Error> {
1337 let (bytes, _handles) = buf.split_mut();
1338 let (tx_header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
1339 debug_assert_eq!(tx_header.tx_id, 0);
1340 match tx_header.ordinal {
1341 _ if tx_header.dynamic_flags().contains(fidl::encoding::DynamicFlags::FLEXIBLE) => {
1342 Ok(PagerEvent::_UnknownEvent { ordinal: tx_header.ordinal })
1343 }
1344 _ => Err(fidl::Error::UnknownOrdinal {
1345 ordinal: tx_header.ordinal,
1346 protocol_name: <PagerMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
1347 }),
1348 }
1349 }
1350}
1351
1352pub struct PagerRequestStream {
1354 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
1355 is_terminated: bool,
1356}
1357
1358impl std::marker::Unpin for PagerRequestStream {}
1359
1360impl futures::stream::FusedStream for PagerRequestStream {
1361 fn is_terminated(&self) -> bool {
1362 self.is_terminated
1363 }
1364}
1365
1366impl fidl::endpoints::RequestStream for PagerRequestStream {
1367 type Protocol = PagerMarker;
1368 type ControlHandle = PagerControlHandle;
1369
1370 fn from_channel(channel: ::fidl::AsyncChannel) -> Self {
1371 Self { inner: std::sync::Arc::new(fidl::ServeInner::new(channel)), is_terminated: false }
1372 }
1373
1374 fn control_handle(&self) -> Self::ControlHandle {
1375 PagerControlHandle { inner: self.inner.clone() }
1376 }
1377
1378 fn into_inner(
1379 self,
1380 ) -> (::std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>, bool)
1381 {
1382 (self.inner, self.is_terminated)
1383 }
1384
1385 fn from_inner(
1386 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
1387 is_terminated: bool,
1388 ) -> Self {
1389 Self { inner, is_terminated }
1390 }
1391}
1392
1393impl futures::Stream for PagerRequestStream {
1394 type Item = Result<PagerRequest, fidl::Error>;
1395
1396 fn poll_next(
1397 mut self: std::pin::Pin<&mut Self>,
1398 cx: &mut std::task::Context<'_>,
1399 ) -> std::task::Poll<Option<Self::Item>> {
1400 let this = &mut *self;
1401 if this.inner.check_shutdown(cx) {
1402 this.is_terminated = true;
1403 return std::task::Poll::Ready(None);
1404 }
1405 if this.is_terminated {
1406 panic!("polled PagerRequestStream after completion");
1407 }
1408 fidl::encoding::with_tls_decode_buf::<_, fidl::encoding::DefaultFuchsiaResourceDialect>(
1409 |bytes, handles| {
1410 match this.inner.channel().read_etc(cx, bytes, handles) {
1411 std::task::Poll::Ready(Ok(())) => {}
1412 std::task::Poll::Pending => return std::task::Poll::Pending,
1413 std::task::Poll::Ready(Err(zx_status::Status::PEER_CLOSED)) => {
1414 this.is_terminated = true;
1415 return std::task::Poll::Ready(None);
1416 }
1417 std::task::Poll::Ready(Err(e)) => {
1418 return std::task::Poll::Ready(Some(Err(fidl::Error::ServerRequestRead(
1419 e.into(),
1420 ))));
1421 }
1422 }
1423
1424 let (header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
1426
1427 std::task::Poll::Ready(Some(match header.ordinal {
1428 0x4f85a2ce6cae4aed => {
1429 header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
1430 let mut req = fidl::new_empty!(
1431 PagerRegisterFileRequest,
1432 fidl::encoding::DefaultFuchsiaResourceDialect
1433 );
1434 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<PagerRegisterFileRequest>(&header, _body_bytes, handles, &mut req)?;
1435 let control_handle = PagerControlHandle { inner: this.inner.clone() };
1436 Ok(PagerRequest::RegisterFile {
1437 payload: req,
1438 responder: PagerRegisterFileResponder {
1439 control_handle: std::mem::ManuallyDrop::new(control_handle),
1440 tx_id: header.tx_id,
1441 },
1442 })
1443 }
1444 _ if header.tx_id == 0
1445 && header
1446 .dynamic_flags()
1447 .contains(fidl::encoding::DynamicFlags::FLEXIBLE) =>
1448 {
1449 Ok(PagerRequest::_UnknownMethod {
1450 ordinal: header.ordinal,
1451 control_handle: PagerControlHandle { inner: this.inner.clone() },
1452 method_type: fidl::MethodType::OneWay,
1453 })
1454 }
1455 _ if header
1456 .dynamic_flags()
1457 .contains(fidl::encoding::DynamicFlags::FLEXIBLE) =>
1458 {
1459 this.inner.send_framework_err(
1460 fidl::encoding::FrameworkErr::UnknownMethod,
1461 header.tx_id,
1462 header.ordinal,
1463 header.dynamic_flags(),
1464 (bytes, handles),
1465 )?;
1466 Ok(PagerRequest::_UnknownMethod {
1467 ordinal: header.ordinal,
1468 control_handle: PagerControlHandle { inner: this.inner.clone() },
1469 method_type: fidl::MethodType::TwoWay,
1470 })
1471 }
1472 _ => Err(fidl::Error::UnknownOrdinal {
1473 ordinal: header.ordinal,
1474 protocol_name: <PagerMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
1475 }),
1476 }))
1477 },
1478 )
1479 }
1480}
1481
1482#[derive(Debug)]
1483pub enum PagerRequest {
1484 RegisterFile { payload: PagerRegisterFileRequest, responder: PagerRegisterFileResponder },
1486 #[non_exhaustive]
1488 _UnknownMethod {
1489 ordinal: u64,
1491 control_handle: PagerControlHandle,
1492 method_type: fidl::MethodType,
1493 },
1494}
1495
1496impl PagerRequest {
1497 #[allow(irrefutable_let_patterns)]
1498 pub fn into_register_file(
1499 self,
1500 ) -> Option<(PagerRegisterFileRequest, PagerRegisterFileResponder)> {
1501 if let PagerRequest::RegisterFile { payload, responder } = self {
1502 Some((payload, responder))
1503 } else {
1504 None
1505 }
1506 }
1507
1508 pub fn method_name(&self) -> &'static str {
1510 match *self {
1511 PagerRequest::RegisterFile { .. } => "register_file",
1512 PagerRequest::_UnknownMethod { method_type: fidl::MethodType::OneWay, .. } => {
1513 "unknown one-way method"
1514 }
1515 PagerRequest::_UnknownMethod { method_type: fidl::MethodType::TwoWay, .. } => {
1516 "unknown two-way method"
1517 }
1518 }
1519 }
1520}
1521
1522#[derive(Debug, Clone)]
1523pub struct PagerControlHandle {
1524 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
1525}
1526
1527impl PagerControlHandle {
1528 pub fn shutdown_with_epitaph(&self, status: impl Into<fidl::Epitaph>) {
1529 self.inner.shutdown_with_epitaph(status.into())
1530 }
1531}
1532
1533impl fidl::endpoints::ControlHandle for PagerControlHandle {
1534 fn shutdown(&self) {
1535 self.inner.shutdown()
1536 }
1537
1538 fn shutdown_with_epitaph(&self, status: fidl::Epitaph) {
1539 self.inner.shutdown_with_epitaph(status)
1540 }
1541
1542 fn is_closed(&self) -> bool {
1543 self.inner.channel().is_closed()
1544 }
1545 fn on_closed(&self) -> fidl::OnSignalsRef<'_> {
1546 self.inner.channel().on_closed()
1547 }
1548
1549 #[cfg(target_os = "fuchsia")]
1550 fn signal_peer(
1551 &self,
1552 clear_mask: zx::Signals,
1553 set_mask: zx::Signals,
1554 ) -> Result<(), zx_status::Status> {
1555 use fidl::Peered;
1556 self.inner.channel().signal_peer(clear_mask, set_mask)
1557 }
1558}
1559
1560impl PagerControlHandle {}
1561
1562#[must_use = "FIDL methods require a response to be sent"]
1563#[derive(Debug)]
1564pub struct PagerRegisterFileResponder {
1565 control_handle: std::mem::ManuallyDrop<PagerControlHandle>,
1566 tx_id: u32,
1567}
1568
1569impl std::ops::Drop for PagerRegisterFileResponder {
1573 fn drop(&mut self) {
1574 self.control_handle.shutdown();
1575 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
1577 }
1578}
1579
1580impl fidl::endpoints::Responder for PagerRegisterFileResponder {
1581 type ControlHandle = PagerControlHandle;
1582
1583 fn control_handle(&self) -> &PagerControlHandle {
1584 &self.control_handle
1585 }
1586
1587 fn drop_without_shutdown(mut self) {
1588 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
1590 std::mem::forget(self);
1592 }
1593}
1594
1595impl PagerRegisterFileResponder {
1596 pub fn send(
1600 self,
1601 mut result: Result<PagerRegisterFileResponse, i32>,
1602 ) -> Result<(), fidl::Error> {
1603 let _result = self.send_raw(result);
1604 if _result.is_err() {
1605 self.control_handle.shutdown();
1606 }
1607 self.drop_without_shutdown();
1608 _result
1609 }
1610
1611 pub fn send_no_shutdown_on_err(
1613 self,
1614 mut result: Result<PagerRegisterFileResponse, i32>,
1615 ) -> Result<(), fidl::Error> {
1616 let _result = self.send_raw(result);
1617 self.drop_without_shutdown();
1618 _result
1619 }
1620
1621 fn send_raw(
1622 &self,
1623 mut result: Result<PagerRegisterFileResponse, i32>,
1624 ) -> Result<(), fidl::Error> {
1625 self.control_handle
1626 .inner
1627 .send::<fidl::encoding::FlexibleResultType<PagerRegisterFileResponse, i32>>(
1628 fidl::encoding::FlexibleResult::new(result.as_mut().map_err(|e| *e)),
1629 self.tx_id,
1630 0x4f85a2ce6cae4aed,
1631 fidl::encoding::DynamicFlags::FLEXIBLE,
1632 )
1633 }
1634}
1635
1636mod internal {
1637 use super::*;
1638
1639 impl ManagerAddWakeSourceRequest {
1640 #[inline(always)]
1641 fn max_ordinal_present(&self) -> u64 {
1642 if let Some(_) = self.signals {
1643 return 4;
1644 }
1645 if let Some(_) = self.handle {
1646 return 3;
1647 }
1648 if let Some(_) = self.name {
1649 return 2;
1650 }
1651 if let Some(_) = self.container_job {
1652 return 1;
1653 }
1654 0
1655 }
1656 }
1657
1658 impl fidl::encoding::ResourceTypeMarker for ManagerAddWakeSourceRequest {
1659 type Borrowed<'a> = &'a mut Self;
1660 fn take_or_borrow<'a>(
1661 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
1662 ) -> Self::Borrowed<'a> {
1663 value
1664 }
1665 }
1666
1667 unsafe impl fidl::encoding::TypeMarker for ManagerAddWakeSourceRequest {
1668 type Owned = Self;
1669
1670 #[inline(always)]
1671 fn inline_align(_context: fidl::encoding::Context) -> usize {
1672 8
1673 }
1674
1675 #[inline(always)]
1676 fn inline_size(_context: fidl::encoding::Context) -> usize {
1677 16
1678 }
1679 }
1680
1681 unsafe impl
1682 fidl::encoding::Encode<
1683 ManagerAddWakeSourceRequest,
1684 fidl::encoding::DefaultFuchsiaResourceDialect,
1685 > for &mut ManagerAddWakeSourceRequest
1686 {
1687 unsafe fn encode(
1688 self,
1689 encoder: &mut fidl::encoding::Encoder<
1690 '_,
1691 fidl::encoding::DefaultFuchsiaResourceDialect,
1692 >,
1693 offset: usize,
1694 mut depth: fidl::encoding::Depth,
1695 ) -> fidl::Result<()> {
1696 encoder.debug_check_bounds::<ManagerAddWakeSourceRequest>(offset);
1697 let max_ordinal: u64 = self.max_ordinal_present();
1699 encoder.write_num(max_ordinal, offset);
1700 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
1701 if max_ordinal == 0 {
1703 return Ok(());
1704 }
1705 depth.increment()?;
1706 let envelope_size = 8;
1707 let bytes_len = max_ordinal as usize * envelope_size;
1708 #[allow(unused_variables)]
1709 let offset = encoder.out_of_line_offset(bytes_len);
1710 let mut _prev_end_offset: usize = 0;
1711 if 1 > max_ordinal {
1712 return Ok(());
1713 }
1714
1715 let cur_offset: usize = (1 - 1) * envelope_size;
1718
1719 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1721
1722 fidl::encoding::encode_in_envelope_optional::<
1727 fidl::encoding::HandleType<
1728 fidl::Job,
1729 { fidl::ObjectType::JOB.into_raw() },
1730 2147483648,
1731 >,
1732 fidl::encoding::DefaultFuchsiaResourceDialect,
1733 >(
1734 self.container_job.as_mut().map(
1735 <fidl::encoding::HandleType<
1736 fidl::Job,
1737 { fidl::ObjectType::JOB.into_raw() },
1738 2147483648,
1739 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow,
1740 ),
1741 encoder,
1742 offset + cur_offset,
1743 depth,
1744 )?;
1745
1746 _prev_end_offset = cur_offset + envelope_size;
1747 if 2 > max_ordinal {
1748 return Ok(());
1749 }
1750
1751 let cur_offset: usize = (2 - 1) * envelope_size;
1754
1755 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1757
1758 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<1024>, fidl::encoding::DefaultFuchsiaResourceDialect>(
1763 self.name.as_ref().map(<fidl::encoding::BoundedString<1024> as fidl::encoding::ValueTypeMarker>::borrow),
1764 encoder, offset + cur_offset, depth
1765 )?;
1766
1767 _prev_end_offset = cur_offset + envelope_size;
1768 if 3 > max_ordinal {
1769 return Ok(());
1770 }
1771
1772 let cur_offset: usize = (3 - 1) * envelope_size;
1775
1776 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1778
1779 fidl::encoding::encode_in_envelope_optional::<
1784 fidl::encoding::HandleType<
1785 fidl::NullableHandle,
1786 { fidl::ObjectType::NONE.into_raw() },
1787 2147483648,
1788 >,
1789 fidl::encoding::DefaultFuchsiaResourceDialect,
1790 >(
1791 self.handle.as_mut().map(
1792 <fidl::encoding::HandleType<
1793 fidl::NullableHandle,
1794 { fidl::ObjectType::NONE.into_raw() },
1795 2147483648,
1796 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow,
1797 ),
1798 encoder,
1799 offset + cur_offset,
1800 depth,
1801 )?;
1802
1803 _prev_end_offset = cur_offset + envelope_size;
1804 if 4 > max_ordinal {
1805 return Ok(());
1806 }
1807
1808 let cur_offset: usize = (4 - 1) * envelope_size;
1811
1812 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1814
1815 fidl::encoding::encode_in_envelope_optional::<
1820 u32,
1821 fidl::encoding::DefaultFuchsiaResourceDialect,
1822 >(
1823 self.signals.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
1824 encoder,
1825 offset + cur_offset,
1826 depth,
1827 )?;
1828
1829 _prev_end_offset = cur_offset + envelope_size;
1830
1831 Ok(())
1832 }
1833 }
1834
1835 impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
1836 for ManagerAddWakeSourceRequest
1837 {
1838 #[inline(always)]
1839 fn new_empty() -> Self {
1840 Self::default()
1841 }
1842
1843 unsafe fn decode(
1844 &mut self,
1845 decoder: &mut fidl::encoding::Decoder<
1846 '_,
1847 fidl::encoding::DefaultFuchsiaResourceDialect,
1848 >,
1849 offset: usize,
1850 mut depth: fidl::encoding::Depth,
1851 ) -> fidl::Result<()> {
1852 decoder.debug_check_bounds::<Self>(offset);
1853 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
1854 None => return Err(fidl::Error::NotNullable),
1855 Some(len) => len,
1856 };
1857 if len == 0 {
1859 return Ok(());
1860 };
1861 depth.increment()?;
1862 let envelope_size = 8;
1863 let bytes_len = len * envelope_size;
1864 let offset = decoder.out_of_line_offset(bytes_len)?;
1865 let mut _next_ordinal_to_read = 0;
1867 let mut next_offset = offset;
1868 let end_offset = offset + bytes_len;
1869 _next_ordinal_to_read += 1;
1870 if next_offset >= end_offset {
1871 return Ok(());
1872 }
1873
1874 while _next_ordinal_to_read < 1 {
1876 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1877 _next_ordinal_to_read += 1;
1878 next_offset += envelope_size;
1879 }
1880
1881 let next_out_of_line = decoder.next_out_of_line();
1882 let handles_before = decoder.remaining_handles();
1883 if let Some((inlined, num_bytes, num_handles)) =
1884 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1885 {
1886 let member_inline_size = <fidl::encoding::HandleType<
1887 fidl::Job,
1888 { fidl::ObjectType::JOB.into_raw() },
1889 2147483648,
1890 > as fidl::encoding::TypeMarker>::inline_size(
1891 decoder.context
1892 );
1893 if inlined != (member_inline_size <= 4) {
1894 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1895 }
1896 let inner_offset;
1897 let mut inner_depth = depth.clone();
1898 if inlined {
1899 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1900 inner_offset = next_offset;
1901 } else {
1902 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1903 inner_depth.increment()?;
1904 }
1905 let val_ref =
1906 self.container_job.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::HandleType<fidl::Job, { fidl::ObjectType::JOB.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect));
1907 fidl::decode!(fidl::encoding::HandleType<fidl::Job, { fidl::ObjectType::JOB.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect, val_ref, decoder, inner_offset, inner_depth)?;
1908 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1909 {
1910 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1911 }
1912 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1913 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1914 }
1915 }
1916
1917 next_offset += envelope_size;
1918 _next_ordinal_to_read += 1;
1919 if next_offset >= end_offset {
1920 return Ok(());
1921 }
1922
1923 while _next_ordinal_to_read < 2 {
1925 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1926 _next_ordinal_to_read += 1;
1927 next_offset += envelope_size;
1928 }
1929
1930 let next_out_of_line = decoder.next_out_of_line();
1931 let handles_before = decoder.remaining_handles();
1932 if let Some((inlined, num_bytes, num_handles)) =
1933 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1934 {
1935 let member_inline_size = <fidl::encoding::BoundedString<1024> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1936 if inlined != (member_inline_size <= 4) {
1937 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1938 }
1939 let inner_offset;
1940 let mut inner_depth = depth.clone();
1941 if inlined {
1942 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1943 inner_offset = next_offset;
1944 } else {
1945 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1946 inner_depth.increment()?;
1947 }
1948 let val_ref = self.name.get_or_insert_with(|| {
1949 fidl::new_empty!(
1950 fidl::encoding::BoundedString<1024>,
1951 fidl::encoding::DefaultFuchsiaResourceDialect
1952 )
1953 });
1954 fidl::decode!(
1955 fidl::encoding::BoundedString<1024>,
1956 fidl::encoding::DefaultFuchsiaResourceDialect,
1957 val_ref,
1958 decoder,
1959 inner_offset,
1960 inner_depth
1961 )?;
1962 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1963 {
1964 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1965 }
1966 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1967 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1968 }
1969 }
1970
1971 next_offset += envelope_size;
1972 _next_ordinal_to_read += 1;
1973 if next_offset >= end_offset {
1974 return Ok(());
1975 }
1976
1977 while _next_ordinal_to_read < 3 {
1979 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1980 _next_ordinal_to_read += 1;
1981 next_offset += envelope_size;
1982 }
1983
1984 let next_out_of_line = decoder.next_out_of_line();
1985 let handles_before = decoder.remaining_handles();
1986 if let Some((inlined, num_bytes, num_handles)) =
1987 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1988 {
1989 let member_inline_size = <fidl::encoding::HandleType<
1990 fidl::NullableHandle,
1991 { fidl::ObjectType::NONE.into_raw() },
1992 2147483648,
1993 > as fidl::encoding::TypeMarker>::inline_size(
1994 decoder.context
1995 );
1996 if inlined != (member_inline_size <= 4) {
1997 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1998 }
1999 let inner_offset;
2000 let mut inner_depth = depth.clone();
2001 if inlined {
2002 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2003 inner_offset = next_offset;
2004 } else {
2005 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2006 inner_depth.increment()?;
2007 }
2008 let val_ref =
2009 self.handle.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::HandleType<fidl::NullableHandle, { fidl::ObjectType::NONE.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect));
2010 fidl::decode!(fidl::encoding::HandleType<fidl::NullableHandle, { fidl::ObjectType::NONE.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect, val_ref, decoder, inner_offset, inner_depth)?;
2011 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2012 {
2013 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2014 }
2015 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2016 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2017 }
2018 }
2019
2020 next_offset += envelope_size;
2021 _next_ordinal_to_read += 1;
2022 if next_offset >= end_offset {
2023 return Ok(());
2024 }
2025
2026 while _next_ordinal_to_read < 4 {
2028 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2029 _next_ordinal_to_read += 1;
2030 next_offset += envelope_size;
2031 }
2032
2033 let next_out_of_line = decoder.next_out_of_line();
2034 let handles_before = decoder.remaining_handles();
2035 if let Some((inlined, num_bytes, num_handles)) =
2036 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2037 {
2038 let member_inline_size =
2039 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2040 if inlined != (member_inline_size <= 4) {
2041 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2042 }
2043 let inner_offset;
2044 let mut inner_depth = depth.clone();
2045 if inlined {
2046 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2047 inner_offset = next_offset;
2048 } else {
2049 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2050 inner_depth.increment()?;
2051 }
2052 let val_ref = self.signals.get_or_insert_with(|| {
2053 fidl::new_empty!(u32, fidl::encoding::DefaultFuchsiaResourceDialect)
2054 });
2055 fidl::decode!(
2056 u32,
2057 fidl::encoding::DefaultFuchsiaResourceDialect,
2058 val_ref,
2059 decoder,
2060 inner_offset,
2061 inner_depth
2062 )?;
2063 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2064 {
2065 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2066 }
2067 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2068 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2069 }
2070 }
2071
2072 next_offset += envelope_size;
2073
2074 while next_offset < end_offset {
2076 _next_ordinal_to_read += 1;
2077 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2078 next_offset += envelope_size;
2079 }
2080
2081 Ok(())
2082 }
2083 }
2084
2085 impl ManagerCreatePagerRequest {
2086 #[inline(always)]
2087 fn max_ordinal_present(&self) -> u64 {
2088 if let Some(_) = self.pager {
2089 return 3;
2090 }
2091 if let Some(_) = self.block_size {
2092 return 2;
2093 }
2094 if let Some(_) = self.backing_vmo {
2095 return 1;
2096 }
2097 0
2098 }
2099 }
2100
2101 impl fidl::encoding::ResourceTypeMarker for ManagerCreatePagerRequest {
2102 type Borrowed<'a> = &'a mut Self;
2103 fn take_or_borrow<'a>(
2104 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
2105 ) -> Self::Borrowed<'a> {
2106 value
2107 }
2108 }
2109
2110 unsafe impl fidl::encoding::TypeMarker for ManagerCreatePagerRequest {
2111 type Owned = Self;
2112
2113 #[inline(always)]
2114 fn inline_align(_context: fidl::encoding::Context) -> usize {
2115 8
2116 }
2117
2118 #[inline(always)]
2119 fn inline_size(_context: fidl::encoding::Context) -> usize {
2120 16
2121 }
2122 }
2123
2124 unsafe impl
2125 fidl::encoding::Encode<
2126 ManagerCreatePagerRequest,
2127 fidl::encoding::DefaultFuchsiaResourceDialect,
2128 > for &mut ManagerCreatePagerRequest
2129 {
2130 unsafe fn encode(
2131 self,
2132 encoder: &mut fidl::encoding::Encoder<
2133 '_,
2134 fidl::encoding::DefaultFuchsiaResourceDialect,
2135 >,
2136 offset: usize,
2137 mut depth: fidl::encoding::Depth,
2138 ) -> fidl::Result<()> {
2139 encoder.debug_check_bounds::<ManagerCreatePagerRequest>(offset);
2140 let max_ordinal: u64 = self.max_ordinal_present();
2142 encoder.write_num(max_ordinal, offset);
2143 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
2144 if max_ordinal == 0 {
2146 return Ok(());
2147 }
2148 depth.increment()?;
2149 let envelope_size = 8;
2150 let bytes_len = max_ordinal as usize * envelope_size;
2151 #[allow(unused_variables)]
2152 let offset = encoder.out_of_line_offset(bytes_len);
2153 let mut _prev_end_offset: usize = 0;
2154 if 1 > max_ordinal {
2155 return Ok(());
2156 }
2157
2158 let cur_offset: usize = (1 - 1) * envelope_size;
2161
2162 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2164
2165 fidl::encoding::encode_in_envelope_optional::<
2170 fidl::encoding::HandleType<
2171 fidl::Vmo,
2172 { fidl::ObjectType::VMO.into_raw() },
2173 2147483648,
2174 >,
2175 fidl::encoding::DefaultFuchsiaResourceDialect,
2176 >(
2177 self.backing_vmo.as_mut().map(
2178 <fidl::encoding::HandleType<
2179 fidl::Vmo,
2180 { fidl::ObjectType::VMO.into_raw() },
2181 2147483648,
2182 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow,
2183 ),
2184 encoder,
2185 offset + cur_offset,
2186 depth,
2187 )?;
2188
2189 _prev_end_offset = cur_offset + envelope_size;
2190 if 2 > max_ordinal {
2191 return Ok(());
2192 }
2193
2194 let cur_offset: usize = (2 - 1) * envelope_size;
2197
2198 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2200
2201 fidl::encoding::encode_in_envelope_optional::<
2206 u64,
2207 fidl::encoding::DefaultFuchsiaResourceDialect,
2208 >(
2209 self.block_size.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
2210 encoder,
2211 offset + cur_offset,
2212 depth,
2213 )?;
2214
2215 _prev_end_offset = cur_offset + envelope_size;
2216 if 3 > max_ordinal {
2217 return Ok(());
2218 }
2219
2220 let cur_offset: usize = (3 - 1) * envelope_size;
2223
2224 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2226
2227 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<PagerMarker>>, fidl::encoding::DefaultFuchsiaResourceDialect>(
2232 self.pager.as_mut().map(<fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<PagerMarker>> as fidl::encoding::ResourceTypeMarker>::take_or_borrow),
2233 encoder, offset + cur_offset, depth
2234 )?;
2235
2236 _prev_end_offset = cur_offset + envelope_size;
2237
2238 Ok(())
2239 }
2240 }
2241
2242 impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
2243 for ManagerCreatePagerRequest
2244 {
2245 #[inline(always)]
2246 fn new_empty() -> Self {
2247 Self::default()
2248 }
2249
2250 unsafe fn decode(
2251 &mut self,
2252 decoder: &mut fidl::encoding::Decoder<
2253 '_,
2254 fidl::encoding::DefaultFuchsiaResourceDialect,
2255 >,
2256 offset: usize,
2257 mut depth: fidl::encoding::Depth,
2258 ) -> fidl::Result<()> {
2259 decoder.debug_check_bounds::<Self>(offset);
2260 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
2261 None => return Err(fidl::Error::NotNullable),
2262 Some(len) => len,
2263 };
2264 if len == 0 {
2266 return Ok(());
2267 };
2268 depth.increment()?;
2269 let envelope_size = 8;
2270 let bytes_len = len * envelope_size;
2271 let offset = decoder.out_of_line_offset(bytes_len)?;
2272 let mut _next_ordinal_to_read = 0;
2274 let mut next_offset = offset;
2275 let end_offset = offset + bytes_len;
2276 _next_ordinal_to_read += 1;
2277 if next_offset >= end_offset {
2278 return Ok(());
2279 }
2280
2281 while _next_ordinal_to_read < 1 {
2283 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2284 _next_ordinal_to_read += 1;
2285 next_offset += envelope_size;
2286 }
2287
2288 let next_out_of_line = decoder.next_out_of_line();
2289 let handles_before = decoder.remaining_handles();
2290 if let Some((inlined, num_bytes, num_handles)) =
2291 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2292 {
2293 let member_inline_size = <fidl::encoding::HandleType<
2294 fidl::Vmo,
2295 { fidl::ObjectType::VMO.into_raw() },
2296 2147483648,
2297 > as fidl::encoding::TypeMarker>::inline_size(
2298 decoder.context
2299 );
2300 if inlined != (member_inline_size <= 4) {
2301 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2302 }
2303 let inner_offset;
2304 let mut inner_depth = depth.clone();
2305 if inlined {
2306 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2307 inner_offset = next_offset;
2308 } else {
2309 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2310 inner_depth.increment()?;
2311 }
2312 let val_ref =
2313 self.backing_vmo.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::HandleType<fidl::Vmo, { fidl::ObjectType::VMO.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect));
2314 fidl::decode!(fidl::encoding::HandleType<fidl::Vmo, { fidl::ObjectType::VMO.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect, val_ref, decoder, inner_offset, inner_depth)?;
2315 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2316 {
2317 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2318 }
2319 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2320 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2321 }
2322 }
2323
2324 next_offset += envelope_size;
2325 _next_ordinal_to_read += 1;
2326 if next_offset >= end_offset {
2327 return Ok(());
2328 }
2329
2330 while _next_ordinal_to_read < 2 {
2332 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2333 _next_ordinal_to_read += 1;
2334 next_offset += envelope_size;
2335 }
2336
2337 let next_out_of_line = decoder.next_out_of_line();
2338 let handles_before = decoder.remaining_handles();
2339 if let Some((inlined, num_bytes, num_handles)) =
2340 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2341 {
2342 let member_inline_size =
2343 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2344 if inlined != (member_inline_size <= 4) {
2345 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2346 }
2347 let inner_offset;
2348 let mut inner_depth = depth.clone();
2349 if inlined {
2350 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2351 inner_offset = next_offset;
2352 } else {
2353 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2354 inner_depth.increment()?;
2355 }
2356 let val_ref = self.block_size.get_or_insert_with(|| {
2357 fidl::new_empty!(u64, fidl::encoding::DefaultFuchsiaResourceDialect)
2358 });
2359 fidl::decode!(
2360 u64,
2361 fidl::encoding::DefaultFuchsiaResourceDialect,
2362 val_ref,
2363 decoder,
2364 inner_offset,
2365 inner_depth
2366 )?;
2367 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2368 {
2369 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2370 }
2371 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2372 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2373 }
2374 }
2375
2376 next_offset += envelope_size;
2377 _next_ordinal_to_read += 1;
2378 if next_offset >= end_offset {
2379 return Ok(());
2380 }
2381
2382 while _next_ordinal_to_read < 3 {
2384 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2385 _next_ordinal_to_read += 1;
2386 next_offset += envelope_size;
2387 }
2388
2389 let next_out_of_line = decoder.next_out_of_line();
2390 let handles_before = decoder.remaining_handles();
2391 if let Some((inlined, num_bytes, num_handles)) =
2392 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2393 {
2394 let member_inline_size = <fidl::encoding::Endpoint<
2395 fidl::endpoints::ServerEnd<PagerMarker>,
2396 > as fidl::encoding::TypeMarker>::inline_size(
2397 decoder.context
2398 );
2399 if inlined != (member_inline_size <= 4) {
2400 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2401 }
2402 let inner_offset;
2403 let mut inner_depth = depth.clone();
2404 if inlined {
2405 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2406 inner_offset = next_offset;
2407 } else {
2408 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2409 inner_depth.increment()?;
2410 }
2411 let val_ref = self.pager.get_or_insert_with(|| {
2412 fidl::new_empty!(
2413 fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<PagerMarker>>,
2414 fidl::encoding::DefaultFuchsiaResourceDialect
2415 )
2416 });
2417 fidl::decode!(
2418 fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<PagerMarker>>,
2419 fidl::encoding::DefaultFuchsiaResourceDialect,
2420 val_ref,
2421 decoder,
2422 inner_offset,
2423 inner_depth
2424 )?;
2425 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2426 {
2427 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2428 }
2429 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2430 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2431 }
2432 }
2433
2434 next_offset += envelope_size;
2435
2436 while next_offset < end_offset {
2438 _next_ordinal_to_read += 1;
2439 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2440 next_offset += envelope_size;
2441 }
2442
2443 Ok(())
2444 }
2445 }
2446
2447 impl ManagerProxyWakeChannelRequest {
2448 #[inline(always)]
2449 fn max_ordinal_present(&self) -> u64 {
2450 if let Some(_) = self.counter {
2451 return 5;
2452 }
2453 if let Some(_) = self.name {
2454 return 4;
2455 }
2456 if let Some(_) = self.remote_channel {
2457 return 3;
2458 }
2459 if let Some(_) = self.container_channel {
2460 return 2;
2461 }
2462 if let Some(_) = self.container_job {
2463 return 1;
2464 }
2465 0
2466 }
2467 }
2468
2469 impl fidl::encoding::ResourceTypeMarker for ManagerProxyWakeChannelRequest {
2470 type Borrowed<'a> = &'a mut Self;
2471 fn take_or_borrow<'a>(
2472 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
2473 ) -> Self::Borrowed<'a> {
2474 value
2475 }
2476 }
2477
2478 unsafe impl fidl::encoding::TypeMarker for ManagerProxyWakeChannelRequest {
2479 type Owned = Self;
2480
2481 #[inline(always)]
2482 fn inline_align(_context: fidl::encoding::Context) -> usize {
2483 8
2484 }
2485
2486 #[inline(always)]
2487 fn inline_size(_context: fidl::encoding::Context) -> usize {
2488 16
2489 }
2490 }
2491
2492 unsafe impl
2493 fidl::encoding::Encode<
2494 ManagerProxyWakeChannelRequest,
2495 fidl::encoding::DefaultFuchsiaResourceDialect,
2496 > for &mut ManagerProxyWakeChannelRequest
2497 {
2498 unsafe fn encode(
2499 self,
2500 encoder: &mut fidl::encoding::Encoder<
2501 '_,
2502 fidl::encoding::DefaultFuchsiaResourceDialect,
2503 >,
2504 offset: usize,
2505 mut depth: fidl::encoding::Depth,
2506 ) -> fidl::Result<()> {
2507 encoder.debug_check_bounds::<ManagerProxyWakeChannelRequest>(offset);
2508 let max_ordinal: u64 = self.max_ordinal_present();
2510 encoder.write_num(max_ordinal, offset);
2511 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
2512 if max_ordinal == 0 {
2514 return Ok(());
2515 }
2516 depth.increment()?;
2517 let envelope_size = 8;
2518 let bytes_len = max_ordinal as usize * envelope_size;
2519 #[allow(unused_variables)]
2520 let offset = encoder.out_of_line_offset(bytes_len);
2521 let mut _prev_end_offset: usize = 0;
2522 if 1 > max_ordinal {
2523 return Ok(());
2524 }
2525
2526 let cur_offset: usize = (1 - 1) * envelope_size;
2529
2530 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2532
2533 fidl::encoding::encode_in_envelope_optional::<
2538 fidl::encoding::HandleType<
2539 fidl::Job,
2540 { fidl::ObjectType::JOB.into_raw() },
2541 2147483648,
2542 >,
2543 fidl::encoding::DefaultFuchsiaResourceDialect,
2544 >(
2545 self.container_job.as_mut().map(
2546 <fidl::encoding::HandleType<
2547 fidl::Job,
2548 { fidl::ObjectType::JOB.into_raw() },
2549 2147483648,
2550 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow,
2551 ),
2552 encoder,
2553 offset + cur_offset,
2554 depth,
2555 )?;
2556
2557 _prev_end_offset = cur_offset + envelope_size;
2558 if 2 > max_ordinal {
2559 return Ok(());
2560 }
2561
2562 let cur_offset: usize = (2 - 1) * envelope_size;
2565
2566 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2568
2569 fidl::encoding::encode_in_envelope_optional::<
2574 fidl::encoding::HandleType<
2575 fidl::Channel,
2576 { fidl::ObjectType::CHANNEL.into_raw() },
2577 2147483648,
2578 >,
2579 fidl::encoding::DefaultFuchsiaResourceDialect,
2580 >(
2581 self.container_channel.as_mut().map(
2582 <fidl::encoding::HandleType<
2583 fidl::Channel,
2584 { fidl::ObjectType::CHANNEL.into_raw() },
2585 2147483648,
2586 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow,
2587 ),
2588 encoder,
2589 offset + cur_offset,
2590 depth,
2591 )?;
2592
2593 _prev_end_offset = cur_offset + envelope_size;
2594 if 3 > max_ordinal {
2595 return Ok(());
2596 }
2597
2598 let cur_offset: usize = (3 - 1) * envelope_size;
2601
2602 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2604
2605 fidl::encoding::encode_in_envelope_optional::<
2610 fidl::encoding::HandleType<
2611 fidl::Channel,
2612 { fidl::ObjectType::CHANNEL.into_raw() },
2613 2147483648,
2614 >,
2615 fidl::encoding::DefaultFuchsiaResourceDialect,
2616 >(
2617 self.remote_channel.as_mut().map(
2618 <fidl::encoding::HandleType<
2619 fidl::Channel,
2620 { fidl::ObjectType::CHANNEL.into_raw() },
2621 2147483648,
2622 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow,
2623 ),
2624 encoder,
2625 offset + cur_offset,
2626 depth,
2627 )?;
2628
2629 _prev_end_offset = cur_offset + envelope_size;
2630 if 4 > max_ordinal {
2631 return Ok(());
2632 }
2633
2634 let cur_offset: usize = (4 - 1) * envelope_size;
2637
2638 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2640
2641 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<1024>, fidl::encoding::DefaultFuchsiaResourceDialect>(
2646 self.name.as_ref().map(<fidl::encoding::BoundedString<1024> as fidl::encoding::ValueTypeMarker>::borrow),
2647 encoder, offset + cur_offset, depth
2648 )?;
2649
2650 _prev_end_offset = cur_offset + envelope_size;
2651 if 5 > max_ordinal {
2652 return Ok(());
2653 }
2654
2655 let cur_offset: usize = (5 - 1) * envelope_size;
2658
2659 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2661
2662 fidl::encoding::encode_in_envelope_optional::<
2667 fidl::encoding::HandleType<
2668 fidl::Counter,
2669 { fidl::ObjectType::COUNTER.into_raw() },
2670 2147483648,
2671 >,
2672 fidl::encoding::DefaultFuchsiaResourceDialect,
2673 >(
2674 self.counter.as_mut().map(
2675 <fidl::encoding::HandleType<
2676 fidl::Counter,
2677 { fidl::ObjectType::COUNTER.into_raw() },
2678 2147483648,
2679 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow,
2680 ),
2681 encoder,
2682 offset + cur_offset,
2683 depth,
2684 )?;
2685
2686 _prev_end_offset = cur_offset + envelope_size;
2687
2688 Ok(())
2689 }
2690 }
2691
2692 impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
2693 for ManagerProxyWakeChannelRequest
2694 {
2695 #[inline(always)]
2696 fn new_empty() -> Self {
2697 Self::default()
2698 }
2699
2700 unsafe fn decode(
2701 &mut self,
2702 decoder: &mut fidl::encoding::Decoder<
2703 '_,
2704 fidl::encoding::DefaultFuchsiaResourceDialect,
2705 >,
2706 offset: usize,
2707 mut depth: fidl::encoding::Depth,
2708 ) -> fidl::Result<()> {
2709 decoder.debug_check_bounds::<Self>(offset);
2710 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
2711 None => return Err(fidl::Error::NotNullable),
2712 Some(len) => len,
2713 };
2714 if len == 0 {
2716 return Ok(());
2717 };
2718 depth.increment()?;
2719 let envelope_size = 8;
2720 let bytes_len = len * envelope_size;
2721 let offset = decoder.out_of_line_offset(bytes_len)?;
2722 let mut _next_ordinal_to_read = 0;
2724 let mut next_offset = offset;
2725 let end_offset = offset + bytes_len;
2726 _next_ordinal_to_read += 1;
2727 if next_offset >= end_offset {
2728 return Ok(());
2729 }
2730
2731 while _next_ordinal_to_read < 1 {
2733 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2734 _next_ordinal_to_read += 1;
2735 next_offset += envelope_size;
2736 }
2737
2738 let next_out_of_line = decoder.next_out_of_line();
2739 let handles_before = decoder.remaining_handles();
2740 if let Some((inlined, num_bytes, num_handles)) =
2741 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2742 {
2743 let member_inline_size = <fidl::encoding::HandleType<
2744 fidl::Job,
2745 { fidl::ObjectType::JOB.into_raw() },
2746 2147483648,
2747 > as fidl::encoding::TypeMarker>::inline_size(
2748 decoder.context
2749 );
2750 if inlined != (member_inline_size <= 4) {
2751 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2752 }
2753 let inner_offset;
2754 let mut inner_depth = depth.clone();
2755 if inlined {
2756 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2757 inner_offset = next_offset;
2758 } else {
2759 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2760 inner_depth.increment()?;
2761 }
2762 let val_ref =
2763 self.container_job.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::HandleType<fidl::Job, { fidl::ObjectType::JOB.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect));
2764 fidl::decode!(fidl::encoding::HandleType<fidl::Job, { fidl::ObjectType::JOB.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect, val_ref, decoder, inner_offset, inner_depth)?;
2765 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2766 {
2767 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2768 }
2769 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2770 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2771 }
2772 }
2773
2774 next_offset += envelope_size;
2775 _next_ordinal_to_read += 1;
2776 if next_offset >= end_offset {
2777 return Ok(());
2778 }
2779
2780 while _next_ordinal_to_read < 2 {
2782 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2783 _next_ordinal_to_read += 1;
2784 next_offset += envelope_size;
2785 }
2786
2787 let next_out_of_line = decoder.next_out_of_line();
2788 let handles_before = decoder.remaining_handles();
2789 if let Some((inlined, num_bytes, num_handles)) =
2790 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2791 {
2792 let member_inline_size = <fidl::encoding::HandleType<
2793 fidl::Channel,
2794 { fidl::ObjectType::CHANNEL.into_raw() },
2795 2147483648,
2796 > as fidl::encoding::TypeMarker>::inline_size(
2797 decoder.context
2798 );
2799 if inlined != (member_inline_size <= 4) {
2800 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2801 }
2802 let inner_offset;
2803 let mut inner_depth = depth.clone();
2804 if inlined {
2805 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2806 inner_offset = next_offset;
2807 } else {
2808 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2809 inner_depth.increment()?;
2810 }
2811 let val_ref =
2812 self.container_channel.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::HandleType<fidl::Channel, { fidl::ObjectType::CHANNEL.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect));
2813 fidl::decode!(fidl::encoding::HandleType<fidl::Channel, { fidl::ObjectType::CHANNEL.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect, val_ref, decoder, inner_offset, inner_depth)?;
2814 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2815 {
2816 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2817 }
2818 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2819 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2820 }
2821 }
2822
2823 next_offset += envelope_size;
2824 _next_ordinal_to_read += 1;
2825 if next_offset >= end_offset {
2826 return Ok(());
2827 }
2828
2829 while _next_ordinal_to_read < 3 {
2831 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2832 _next_ordinal_to_read += 1;
2833 next_offset += envelope_size;
2834 }
2835
2836 let next_out_of_line = decoder.next_out_of_line();
2837 let handles_before = decoder.remaining_handles();
2838 if let Some((inlined, num_bytes, num_handles)) =
2839 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2840 {
2841 let member_inline_size = <fidl::encoding::HandleType<
2842 fidl::Channel,
2843 { fidl::ObjectType::CHANNEL.into_raw() },
2844 2147483648,
2845 > as fidl::encoding::TypeMarker>::inline_size(
2846 decoder.context
2847 );
2848 if inlined != (member_inline_size <= 4) {
2849 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2850 }
2851 let inner_offset;
2852 let mut inner_depth = depth.clone();
2853 if inlined {
2854 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2855 inner_offset = next_offset;
2856 } else {
2857 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2858 inner_depth.increment()?;
2859 }
2860 let val_ref =
2861 self.remote_channel.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::HandleType<fidl::Channel, { fidl::ObjectType::CHANNEL.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect));
2862 fidl::decode!(fidl::encoding::HandleType<fidl::Channel, { fidl::ObjectType::CHANNEL.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect, val_ref, decoder, inner_offset, inner_depth)?;
2863 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2864 {
2865 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2866 }
2867 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2868 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2869 }
2870 }
2871
2872 next_offset += envelope_size;
2873 _next_ordinal_to_read += 1;
2874 if next_offset >= end_offset {
2875 return Ok(());
2876 }
2877
2878 while _next_ordinal_to_read < 4 {
2880 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2881 _next_ordinal_to_read += 1;
2882 next_offset += envelope_size;
2883 }
2884
2885 let next_out_of_line = decoder.next_out_of_line();
2886 let handles_before = decoder.remaining_handles();
2887 if let Some((inlined, num_bytes, num_handles)) =
2888 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2889 {
2890 let member_inline_size = <fidl::encoding::BoundedString<1024> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2891 if inlined != (member_inline_size <= 4) {
2892 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2893 }
2894 let inner_offset;
2895 let mut inner_depth = depth.clone();
2896 if inlined {
2897 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2898 inner_offset = next_offset;
2899 } else {
2900 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2901 inner_depth.increment()?;
2902 }
2903 let val_ref = self.name.get_or_insert_with(|| {
2904 fidl::new_empty!(
2905 fidl::encoding::BoundedString<1024>,
2906 fidl::encoding::DefaultFuchsiaResourceDialect
2907 )
2908 });
2909 fidl::decode!(
2910 fidl::encoding::BoundedString<1024>,
2911 fidl::encoding::DefaultFuchsiaResourceDialect,
2912 val_ref,
2913 decoder,
2914 inner_offset,
2915 inner_depth
2916 )?;
2917 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2918 {
2919 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2920 }
2921 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2922 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2923 }
2924 }
2925
2926 next_offset += envelope_size;
2927 _next_ordinal_to_read += 1;
2928 if next_offset >= end_offset {
2929 return Ok(());
2930 }
2931
2932 while _next_ordinal_to_read < 5 {
2934 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2935 _next_ordinal_to_read += 1;
2936 next_offset += envelope_size;
2937 }
2938
2939 let next_out_of_line = decoder.next_out_of_line();
2940 let handles_before = decoder.remaining_handles();
2941 if let Some((inlined, num_bytes, num_handles)) =
2942 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2943 {
2944 let member_inline_size = <fidl::encoding::HandleType<
2945 fidl::Counter,
2946 { fidl::ObjectType::COUNTER.into_raw() },
2947 2147483648,
2948 > as fidl::encoding::TypeMarker>::inline_size(
2949 decoder.context
2950 );
2951 if inlined != (member_inline_size <= 4) {
2952 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2953 }
2954 let inner_offset;
2955 let mut inner_depth = depth.clone();
2956 if inlined {
2957 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2958 inner_offset = next_offset;
2959 } else {
2960 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2961 inner_depth.increment()?;
2962 }
2963 let val_ref =
2964 self.counter.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::HandleType<fidl::Counter, { fidl::ObjectType::COUNTER.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect));
2965 fidl::decode!(fidl::encoding::HandleType<fidl::Counter, { fidl::ObjectType::COUNTER.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect, val_ref, decoder, inner_offset, inner_depth)?;
2966 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2967 {
2968 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2969 }
2970 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2971 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2972 }
2973 }
2974
2975 next_offset += envelope_size;
2976
2977 while next_offset < end_offset {
2979 _next_ordinal_to_read += 1;
2980 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2981 next_offset += envelope_size;
2982 }
2983
2984 Ok(())
2985 }
2986 }
2987
2988 impl ManagerRegisterWakeWatcherRequest {
2989 #[inline(always)]
2990 fn max_ordinal_present(&self) -> u64 {
2991 if let Some(_) = self.watcher {
2992 return 1;
2993 }
2994 0
2995 }
2996 }
2997
2998 impl fidl::encoding::ResourceTypeMarker for ManagerRegisterWakeWatcherRequest {
2999 type Borrowed<'a> = &'a mut Self;
3000 fn take_or_borrow<'a>(
3001 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
3002 ) -> Self::Borrowed<'a> {
3003 value
3004 }
3005 }
3006
3007 unsafe impl fidl::encoding::TypeMarker for ManagerRegisterWakeWatcherRequest {
3008 type Owned = Self;
3009
3010 #[inline(always)]
3011 fn inline_align(_context: fidl::encoding::Context) -> usize {
3012 8
3013 }
3014
3015 #[inline(always)]
3016 fn inline_size(_context: fidl::encoding::Context) -> usize {
3017 16
3018 }
3019 }
3020
3021 unsafe impl
3022 fidl::encoding::Encode<
3023 ManagerRegisterWakeWatcherRequest,
3024 fidl::encoding::DefaultFuchsiaResourceDialect,
3025 > for &mut ManagerRegisterWakeWatcherRequest
3026 {
3027 unsafe fn encode(
3028 self,
3029 encoder: &mut fidl::encoding::Encoder<
3030 '_,
3031 fidl::encoding::DefaultFuchsiaResourceDialect,
3032 >,
3033 offset: usize,
3034 mut depth: fidl::encoding::Depth,
3035 ) -> fidl::Result<()> {
3036 encoder.debug_check_bounds::<ManagerRegisterWakeWatcherRequest>(offset);
3037 let max_ordinal: u64 = self.max_ordinal_present();
3039 encoder.write_num(max_ordinal, offset);
3040 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
3041 if max_ordinal == 0 {
3043 return Ok(());
3044 }
3045 depth.increment()?;
3046 let envelope_size = 8;
3047 let bytes_len = max_ordinal as usize * envelope_size;
3048 #[allow(unused_variables)]
3049 let offset = encoder.out_of_line_offset(bytes_len);
3050 let mut _prev_end_offset: usize = 0;
3051 if 1 > max_ordinal {
3052 return Ok(());
3053 }
3054
3055 let cur_offset: usize = (1 - 1) * envelope_size;
3058
3059 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3061
3062 fidl::encoding::encode_in_envelope_optional::<
3067 fidl::encoding::HandleType<
3068 fidl::EventPair,
3069 { fidl::ObjectType::EVENTPAIR.into_raw() },
3070 2147483648,
3071 >,
3072 fidl::encoding::DefaultFuchsiaResourceDialect,
3073 >(
3074 self.watcher.as_mut().map(
3075 <fidl::encoding::HandleType<
3076 fidl::EventPair,
3077 { fidl::ObjectType::EVENTPAIR.into_raw() },
3078 2147483648,
3079 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow,
3080 ),
3081 encoder,
3082 offset + cur_offset,
3083 depth,
3084 )?;
3085
3086 _prev_end_offset = cur_offset + envelope_size;
3087
3088 Ok(())
3089 }
3090 }
3091
3092 impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
3093 for ManagerRegisterWakeWatcherRequest
3094 {
3095 #[inline(always)]
3096 fn new_empty() -> Self {
3097 Self::default()
3098 }
3099
3100 unsafe fn decode(
3101 &mut self,
3102 decoder: &mut fidl::encoding::Decoder<
3103 '_,
3104 fidl::encoding::DefaultFuchsiaResourceDialect,
3105 >,
3106 offset: usize,
3107 mut depth: fidl::encoding::Depth,
3108 ) -> fidl::Result<()> {
3109 decoder.debug_check_bounds::<Self>(offset);
3110 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
3111 None => return Err(fidl::Error::NotNullable),
3112 Some(len) => len,
3113 };
3114 if len == 0 {
3116 return Ok(());
3117 };
3118 depth.increment()?;
3119 let envelope_size = 8;
3120 let bytes_len = len * envelope_size;
3121 let offset = decoder.out_of_line_offset(bytes_len)?;
3122 let mut _next_ordinal_to_read = 0;
3124 let mut next_offset = offset;
3125 let end_offset = offset + bytes_len;
3126 _next_ordinal_to_read += 1;
3127 if next_offset >= end_offset {
3128 return Ok(());
3129 }
3130
3131 while _next_ordinal_to_read < 1 {
3133 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3134 _next_ordinal_to_read += 1;
3135 next_offset += envelope_size;
3136 }
3137
3138 let next_out_of_line = decoder.next_out_of_line();
3139 let handles_before = decoder.remaining_handles();
3140 if let Some((inlined, num_bytes, num_handles)) =
3141 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3142 {
3143 let member_inline_size = <fidl::encoding::HandleType<
3144 fidl::EventPair,
3145 { fidl::ObjectType::EVENTPAIR.into_raw() },
3146 2147483648,
3147 > as fidl::encoding::TypeMarker>::inline_size(
3148 decoder.context
3149 );
3150 if inlined != (member_inline_size <= 4) {
3151 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3152 }
3153 let inner_offset;
3154 let mut inner_depth = depth.clone();
3155 if inlined {
3156 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3157 inner_offset = next_offset;
3158 } else {
3159 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3160 inner_depth.increment()?;
3161 }
3162 let val_ref =
3163 self.watcher.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::HandleType<fidl::EventPair, { fidl::ObjectType::EVENTPAIR.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect));
3164 fidl::decode!(fidl::encoding::HandleType<fidl::EventPair, { fidl::ObjectType::EVENTPAIR.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect, val_ref, decoder, inner_offset, inner_depth)?;
3165 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3166 {
3167 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3168 }
3169 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3170 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3171 }
3172 }
3173
3174 next_offset += envelope_size;
3175
3176 while next_offset < end_offset {
3178 _next_ordinal_to_read += 1;
3179 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3180 next_offset += envelope_size;
3181 }
3182
3183 Ok(())
3184 }
3185 }
3186
3187 impl ManagerRemoveWakeSourceRequest {
3188 #[inline(always)]
3189 fn max_ordinal_present(&self) -> u64 {
3190 if let Some(_) = self.handle {
3191 return 2;
3192 }
3193 if let Some(_) = self.container_job {
3194 return 1;
3195 }
3196 0
3197 }
3198 }
3199
3200 impl fidl::encoding::ResourceTypeMarker for ManagerRemoveWakeSourceRequest {
3201 type Borrowed<'a> = &'a mut Self;
3202 fn take_or_borrow<'a>(
3203 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
3204 ) -> Self::Borrowed<'a> {
3205 value
3206 }
3207 }
3208
3209 unsafe impl fidl::encoding::TypeMarker for ManagerRemoveWakeSourceRequest {
3210 type Owned = Self;
3211
3212 #[inline(always)]
3213 fn inline_align(_context: fidl::encoding::Context) -> usize {
3214 8
3215 }
3216
3217 #[inline(always)]
3218 fn inline_size(_context: fidl::encoding::Context) -> usize {
3219 16
3220 }
3221 }
3222
3223 unsafe impl
3224 fidl::encoding::Encode<
3225 ManagerRemoveWakeSourceRequest,
3226 fidl::encoding::DefaultFuchsiaResourceDialect,
3227 > for &mut ManagerRemoveWakeSourceRequest
3228 {
3229 unsafe fn encode(
3230 self,
3231 encoder: &mut fidl::encoding::Encoder<
3232 '_,
3233 fidl::encoding::DefaultFuchsiaResourceDialect,
3234 >,
3235 offset: usize,
3236 mut depth: fidl::encoding::Depth,
3237 ) -> fidl::Result<()> {
3238 encoder.debug_check_bounds::<ManagerRemoveWakeSourceRequest>(offset);
3239 let max_ordinal: u64 = self.max_ordinal_present();
3241 encoder.write_num(max_ordinal, offset);
3242 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
3243 if max_ordinal == 0 {
3245 return Ok(());
3246 }
3247 depth.increment()?;
3248 let envelope_size = 8;
3249 let bytes_len = max_ordinal as usize * envelope_size;
3250 #[allow(unused_variables)]
3251 let offset = encoder.out_of_line_offset(bytes_len);
3252 let mut _prev_end_offset: usize = 0;
3253 if 1 > max_ordinal {
3254 return Ok(());
3255 }
3256
3257 let cur_offset: usize = (1 - 1) * envelope_size;
3260
3261 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3263
3264 fidl::encoding::encode_in_envelope_optional::<
3269 fidl::encoding::HandleType<
3270 fidl::Job,
3271 { fidl::ObjectType::JOB.into_raw() },
3272 2147483648,
3273 >,
3274 fidl::encoding::DefaultFuchsiaResourceDialect,
3275 >(
3276 self.container_job.as_mut().map(
3277 <fidl::encoding::HandleType<
3278 fidl::Job,
3279 { fidl::ObjectType::JOB.into_raw() },
3280 2147483648,
3281 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow,
3282 ),
3283 encoder,
3284 offset + cur_offset,
3285 depth,
3286 )?;
3287
3288 _prev_end_offset = cur_offset + envelope_size;
3289 if 2 > max_ordinal {
3290 return Ok(());
3291 }
3292
3293 let cur_offset: usize = (2 - 1) * envelope_size;
3296
3297 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3299
3300 fidl::encoding::encode_in_envelope_optional::<
3305 fidl::encoding::HandleType<
3306 fidl::NullableHandle,
3307 { fidl::ObjectType::NONE.into_raw() },
3308 2147483648,
3309 >,
3310 fidl::encoding::DefaultFuchsiaResourceDialect,
3311 >(
3312 self.handle.as_mut().map(
3313 <fidl::encoding::HandleType<
3314 fidl::NullableHandle,
3315 { fidl::ObjectType::NONE.into_raw() },
3316 2147483648,
3317 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow,
3318 ),
3319 encoder,
3320 offset + cur_offset,
3321 depth,
3322 )?;
3323
3324 _prev_end_offset = cur_offset + envelope_size;
3325
3326 Ok(())
3327 }
3328 }
3329
3330 impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
3331 for ManagerRemoveWakeSourceRequest
3332 {
3333 #[inline(always)]
3334 fn new_empty() -> Self {
3335 Self::default()
3336 }
3337
3338 unsafe fn decode(
3339 &mut self,
3340 decoder: &mut fidl::encoding::Decoder<
3341 '_,
3342 fidl::encoding::DefaultFuchsiaResourceDialect,
3343 >,
3344 offset: usize,
3345 mut depth: fidl::encoding::Depth,
3346 ) -> fidl::Result<()> {
3347 decoder.debug_check_bounds::<Self>(offset);
3348 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
3349 None => return Err(fidl::Error::NotNullable),
3350 Some(len) => len,
3351 };
3352 if len == 0 {
3354 return Ok(());
3355 };
3356 depth.increment()?;
3357 let envelope_size = 8;
3358 let bytes_len = len * envelope_size;
3359 let offset = decoder.out_of_line_offset(bytes_len)?;
3360 let mut _next_ordinal_to_read = 0;
3362 let mut next_offset = offset;
3363 let end_offset = offset + bytes_len;
3364 _next_ordinal_to_read += 1;
3365 if next_offset >= end_offset {
3366 return Ok(());
3367 }
3368
3369 while _next_ordinal_to_read < 1 {
3371 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3372 _next_ordinal_to_read += 1;
3373 next_offset += envelope_size;
3374 }
3375
3376 let next_out_of_line = decoder.next_out_of_line();
3377 let handles_before = decoder.remaining_handles();
3378 if let Some((inlined, num_bytes, num_handles)) =
3379 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3380 {
3381 let member_inline_size = <fidl::encoding::HandleType<
3382 fidl::Job,
3383 { fidl::ObjectType::JOB.into_raw() },
3384 2147483648,
3385 > as fidl::encoding::TypeMarker>::inline_size(
3386 decoder.context
3387 );
3388 if inlined != (member_inline_size <= 4) {
3389 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3390 }
3391 let inner_offset;
3392 let mut inner_depth = depth.clone();
3393 if inlined {
3394 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3395 inner_offset = next_offset;
3396 } else {
3397 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3398 inner_depth.increment()?;
3399 }
3400 let val_ref =
3401 self.container_job.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::HandleType<fidl::Job, { fidl::ObjectType::JOB.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect));
3402 fidl::decode!(fidl::encoding::HandleType<fidl::Job, { fidl::ObjectType::JOB.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect, val_ref, decoder, inner_offset, inner_depth)?;
3403 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3404 {
3405 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3406 }
3407 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3408 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3409 }
3410 }
3411
3412 next_offset += envelope_size;
3413 _next_ordinal_to_read += 1;
3414 if next_offset >= end_offset {
3415 return Ok(());
3416 }
3417
3418 while _next_ordinal_to_read < 2 {
3420 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3421 _next_ordinal_to_read += 1;
3422 next_offset += envelope_size;
3423 }
3424
3425 let next_out_of_line = decoder.next_out_of_line();
3426 let handles_before = decoder.remaining_handles();
3427 if let Some((inlined, num_bytes, num_handles)) =
3428 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3429 {
3430 let member_inline_size = <fidl::encoding::HandleType<
3431 fidl::NullableHandle,
3432 { fidl::ObjectType::NONE.into_raw() },
3433 2147483648,
3434 > as fidl::encoding::TypeMarker>::inline_size(
3435 decoder.context
3436 );
3437 if inlined != (member_inline_size <= 4) {
3438 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3439 }
3440 let inner_offset;
3441 let mut inner_depth = depth.clone();
3442 if inlined {
3443 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3444 inner_offset = next_offset;
3445 } else {
3446 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3447 inner_depth.increment()?;
3448 }
3449 let val_ref =
3450 self.handle.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::HandleType<fidl::NullableHandle, { fidl::ObjectType::NONE.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect));
3451 fidl::decode!(fidl::encoding::HandleType<fidl::NullableHandle, { fidl::ObjectType::NONE.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect, val_ref, decoder, inner_offset, inner_depth)?;
3452 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3453 {
3454 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3455 }
3456 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3457 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3458 }
3459 }
3460
3461 next_offset += envelope_size;
3462
3463 while next_offset < end_offset {
3465 _next_ordinal_to_read += 1;
3466 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3467 next_offset += envelope_size;
3468 }
3469
3470 Ok(())
3471 }
3472 }
3473
3474 impl ManagerSuspendContainerRequest {
3475 #[inline(always)]
3476 fn max_ordinal_present(&self) -> u64 {
3477 if let Some(_) = self.wake_locks {
3478 return 2;
3479 }
3480 if let Some(_) = self.container_job {
3481 return 1;
3482 }
3483 0
3484 }
3485 }
3486
3487 impl fidl::encoding::ResourceTypeMarker for ManagerSuspendContainerRequest {
3488 type Borrowed<'a> = &'a mut Self;
3489 fn take_or_borrow<'a>(
3490 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
3491 ) -> Self::Borrowed<'a> {
3492 value
3493 }
3494 }
3495
3496 unsafe impl fidl::encoding::TypeMarker for ManagerSuspendContainerRequest {
3497 type Owned = Self;
3498
3499 #[inline(always)]
3500 fn inline_align(_context: fidl::encoding::Context) -> usize {
3501 8
3502 }
3503
3504 #[inline(always)]
3505 fn inline_size(_context: fidl::encoding::Context) -> usize {
3506 16
3507 }
3508 }
3509
3510 unsafe impl
3511 fidl::encoding::Encode<
3512 ManagerSuspendContainerRequest,
3513 fidl::encoding::DefaultFuchsiaResourceDialect,
3514 > for &mut ManagerSuspendContainerRequest
3515 {
3516 unsafe fn encode(
3517 self,
3518 encoder: &mut fidl::encoding::Encoder<
3519 '_,
3520 fidl::encoding::DefaultFuchsiaResourceDialect,
3521 >,
3522 offset: usize,
3523 mut depth: fidl::encoding::Depth,
3524 ) -> fidl::Result<()> {
3525 encoder.debug_check_bounds::<ManagerSuspendContainerRequest>(offset);
3526 let max_ordinal: u64 = self.max_ordinal_present();
3528 encoder.write_num(max_ordinal, offset);
3529 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
3530 if max_ordinal == 0 {
3532 return Ok(());
3533 }
3534 depth.increment()?;
3535 let envelope_size = 8;
3536 let bytes_len = max_ordinal as usize * envelope_size;
3537 #[allow(unused_variables)]
3538 let offset = encoder.out_of_line_offset(bytes_len);
3539 let mut _prev_end_offset: usize = 0;
3540 if 1 > max_ordinal {
3541 return Ok(());
3542 }
3543
3544 let cur_offset: usize = (1 - 1) * envelope_size;
3547
3548 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3550
3551 fidl::encoding::encode_in_envelope_optional::<
3556 fidl::encoding::HandleType<
3557 fidl::Job,
3558 { fidl::ObjectType::JOB.into_raw() },
3559 2147483648,
3560 >,
3561 fidl::encoding::DefaultFuchsiaResourceDialect,
3562 >(
3563 self.container_job.as_mut().map(
3564 <fidl::encoding::HandleType<
3565 fidl::Job,
3566 { fidl::ObjectType::JOB.into_raw() },
3567 2147483648,
3568 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow,
3569 ),
3570 encoder,
3571 offset + cur_offset,
3572 depth,
3573 )?;
3574
3575 _prev_end_offset = cur_offset + envelope_size;
3576 if 2 > max_ordinal {
3577 return Ok(());
3578 }
3579
3580 let cur_offset: usize = (2 - 1) * envelope_size;
3583
3584 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3586
3587 fidl::encoding::encode_in_envelope_optional::<
3592 fidl::encoding::HandleType<
3593 fidl::EventPair,
3594 { fidl::ObjectType::EVENTPAIR.into_raw() },
3595 2147483648,
3596 >,
3597 fidl::encoding::DefaultFuchsiaResourceDialect,
3598 >(
3599 self.wake_locks.as_mut().map(
3600 <fidl::encoding::HandleType<
3601 fidl::EventPair,
3602 { fidl::ObjectType::EVENTPAIR.into_raw() },
3603 2147483648,
3604 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow,
3605 ),
3606 encoder,
3607 offset + cur_offset,
3608 depth,
3609 )?;
3610
3611 _prev_end_offset = cur_offset + envelope_size;
3612
3613 Ok(())
3614 }
3615 }
3616
3617 impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
3618 for ManagerSuspendContainerRequest
3619 {
3620 #[inline(always)]
3621 fn new_empty() -> Self {
3622 Self::default()
3623 }
3624
3625 unsafe fn decode(
3626 &mut self,
3627 decoder: &mut fidl::encoding::Decoder<
3628 '_,
3629 fidl::encoding::DefaultFuchsiaResourceDialect,
3630 >,
3631 offset: usize,
3632 mut depth: fidl::encoding::Depth,
3633 ) -> fidl::Result<()> {
3634 decoder.debug_check_bounds::<Self>(offset);
3635 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
3636 None => return Err(fidl::Error::NotNullable),
3637 Some(len) => len,
3638 };
3639 if len == 0 {
3641 return Ok(());
3642 };
3643 depth.increment()?;
3644 let envelope_size = 8;
3645 let bytes_len = len * envelope_size;
3646 let offset = decoder.out_of_line_offset(bytes_len)?;
3647 let mut _next_ordinal_to_read = 0;
3649 let mut next_offset = offset;
3650 let end_offset = offset + bytes_len;
3651 _next_ordinal_to_read += 1;
3652 if next_offset >= end_offset {
3653 return Ok(());
3654 }
3655
3656 while _next_ordinal_to_read < 1 {
3658 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3659 _next_ordinal_to_read += 1;
3660 next_offset += envelope_size;
3661 }
3662
3663 let next_out_of_line = decoder.next_out_of_line();
3664 let handles_before = decoder.remaining_handles();
3665 if let Some((inlined, num_bytes, num_handles)) =
3666 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3667 {
3668 let member_inline_size = <fidl::encoding::HandleType<
3669 fidl::Job,
3670 { fidl::ObjectType::JOB.into_raw() },
3671 2147483648,
3672 > as fidl::encoding::TypeMarker>::inline_size(
3673 decoder.context
3674 );
3675 if inlined != (member_inline_size <= 4) {
3676 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3677 }
3678 let inner_offset;
3679 let mut inner_depth = depth.clone();
3680 if inlined {
3681 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3682 inner_offset = next_offset;
3683 } else {
3684 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3685 inner_depth.increment()?;
3686 }
3687 let val_ref =
3688 self.container_job.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::HandleType<fidl::Job, { fidl::ObjectType::JOB.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect));
3689 fidl::decode!(fidl::encoding::HandleType<fidl::Job, { fidl::ObjectType::JOB.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect, val_ref, decoder, inner_offset, inner_depth)?;
3690 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3691 {
3692 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3693 }
3694 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3695 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3696 }
3697 }
3698
3699 next_offset += envelope_size;
3700 _next_ordinal_to_read += 1;
3701 if next_offset >= end_offset {
3702 return Ok(());
3703 }
3704
3705 while _next_ordinal_to_read < 2 {
3707 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3708 _next_ordinal_to_read += 1;
3709 next_offset += envelope_size;
3710 }
3711
3712 let next_out_of_line = decoder.next_out_of_line();
3713 let handles_before = decoder.remaining_handles();
3714 if let Some((inlined, num_bytes, num_handles)) =
3715 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3716 {
3717 let member_inline_size = <fidl::encoding::HandleType<
3718 fidl::EventPair,
3719 { fidl::ObjectType::EVENTPAIR.into_raw() },
3720 2147483648,
3721 > as fidl::encoding::TypeMarker>::inline_size(
3722 decoder.context
3723 );
3724 if inlined != (member_inline_size <= 4) {
3725 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3726 }
3727 let inner_offset;
3728 let mut inner_depth = depth.clone();
3729 if inlined {
3730 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3731 inner_offset = next_offset;
3732 } else {
3733 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3734 inner_depth.increment()?;
3735 }
3736 let val_ref =
3737 self.wake_locks.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::HandleType<fidl::EventPair, { fidl::ObjectType::EVENTPAIR.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect));
3738 fidl::decode!(fidl::encoding::HandleType<fidl::EventPair, { fidl::ObjectType::EVENTPAIR.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect, val_ref, decoder, inner_offset, inner_depth)?;
3739 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3740 {
3741 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3742 }
3743 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3744 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3745 }
3746 }
3747
3748 next_offset += envelope_size;
3749
3750 while next_offset < end_offset {
3752 _next_ordinal_to_read += 1;
3753 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3754 next_offset += envelope_size;
3755 }
3756
3757 Ok(())
3758 }
3759 }
3760
3761 impl PagerRegisterFileResponse {
3762 #[inline(always)]
3763 fn max_ordinal_present(&self) -> u64 {
3764 if let Some(_) = self.vmo {
3765 return 1;
3766 }
3767 0
3768 }
3769 }
3770
3771 impl fidl::encoding::ResourceTypeMarker for PagerRegisterFileResponse {
3772 type Borrowed<'a> = &'a mut Self;
3773 fn take_or_borrow<'a>(
3774 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
3775 ) -> Self::Borrowed<'a> {
3776 value
3777 }
3778 }
3779
3780 unsafe impl fidl::encoding::TypeMarker for PagerRegisterFileResponse {
3781 type Owned = Self;
3782
3783 #[inline(always)]
3784 fn inline_align(_context: fidl::encoding::Context) -> usize {
3785 8
3786 }
3787
3788 #[inline(always)]
3789 fn inline_size(_context: fidl::encoding::Context) -> usize {
3790 16
3791 }
3792 }
3793
3794 unsafe impl
3795 fidl::encoding::Encode<
3796 PagerRegisterFileResponse,
3797 fidl::encoding::DefaultFuchsiaResourceDialect,
3798 > for &mut PagerRegisterFileResponse
3799 {
3800 unsafe fn encode(
3801 self,
3802 encoder: &mut fidl::encoding::Encoder<
3803 '_,
3804 fidl::encoding::DefaultFuchsiaResourceDialect,
3805 >,
3806 offset: usize,
3807 mut depth: fidl::encoding::Depth,
3808 ) -> fidl::Result<()> {
3809 encoder.debug_check_bounds::<PagerRegisterFileResponse>(offset);
3810 let max_ordinal: u64 = self.max_ordinal_present();
3812 encoder.write_num(max_ordinal, offset);
3813 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
3814 if max_ordinal == 0 {
3816 return Ok(());
3817 }
3818 depth.increment()?;
3819 let envelope_size = 8;
3820 let bytes_len = max_ordinal as usize * envelope_size;
3821 #[allow(unused_variables)]
3822 let offset = encoder.out_of_line_offset(bytes_len);
3823 let mut _prev_end_offset: usize = 0;
3824 if 1 > max_ordinal {
3825 return Ok(());
3826 }
3827
3828 let cur_offset: usize = (1 - 1) * envelope_size;
3831
3832 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3834
3835 fidl::encoding::encode_in_envelope_optional::<
3840 fidl::encoding::HandleType<
3841 fidl::Vmo,
3842 { fidl::ObjectType::VMO.into_raw() },
3843 2147483648,
3844 >,
3845 fidl::encoding::DefaultFuchsiaResourceDialect,
3846 >(
3847 self.vmo.as_mut().map(
3848 <fidl::encoding::HandleType<
3849 fidl::Vmo,
3850 { fidl::ObjectType::VMO.into_raw() },
3851 2147483648,
3852 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow,
3853 ),
3854 encoder,
3855 offset + cur_offset,
3856 depth,
3857 )?;
3858
3859 _prev_end_offset = cur_offset + envelope_size;
3860
3861 Ok(())
3862 }
3863 }
3864
3865 impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
3866 for PagerRegisterFileResponse
3867 {
3868 #[inline(always)]
3869 fn new_empty() -> Self {
3870 Self::default()
3871 }
3872
3873 unsafe fn decode(
3874 &mut self,
3875 decoder: &mut fidl::encoding::Decoder<
3876 '_,
3877 fidl::encoding::DefaultFuchsiaResourceDialect,
3878 >,
3879 offset: usize,
3880 mut depth: fidl::encoding::Depth,
3881 ) -> fidl::Result<()> {
3882 decoder.debug_check_bounds::<Self>(offset);
3883 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
3884 None => return Err(fidl::Error::NotNullable),
3885 Some(len) => len,
3886 };
3887 if len == 0 {
3889 return Ok(());
3890 };
3891 depth.increment()?;
3892 let envelope_size = 8;
3893 let bytes_len = len * envelope_size;
3894 let offset = decoder.out_of_line_offset(bytes_len)?;
3895 let mut _next_ordinal_to_read = 0;
3897 let mut next_offset = offset;
3898 let end_offset = offset + bytes_len;
3899 _next_ordinal_to_read += 1;
3900 if next_offset >= end_offset {
3901 return Ok(());
3902 }
3903
3904 while _next_ordinal_to_read < 1 {
3906 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3907 _next_ordinal_to_read += 1;
3908 next_offset += envelope_size;
3909 }
3910
3911 let next_out_of_line = decoder.next_out_of_line();
3912 let handles_before = decoder.remaining_handles();
3913 if let Some((inlined, num_bytes, num_handles)) =
3914 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3915 {
3916 let member_inline_size = <fidl::encoding::HandleType<
3917 fidl::Vmo,
3918 { fidl::ObjectType::VMO.into_raw() },
3919 2147483648,
3920 > as fidl::encoding::TypeMarker>::inline_size(
3921 decoder.context
3922 );
3923 if inlined != (member_inline_size <= 4) {
3924 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3925 }
3926 let inner_offset;
3927 let mut inner_depth = depth.clone();
3928 if inlined {
3929 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3930 inner_offset = next_offset;
3931 } else {
3932 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3933 inner_depth.increment()?;
3934 }
3935 let val_ref =
3936 self.vmo.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::HandleType<fidl::Vmo, { fidl::ObjectType::VMO.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect));
3937 fidl::decode!(fidl::encoding::HandleType<fidl::Vmo, { fidl::ObjectType::VMO.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect, val_ref, decoder, inner_offset, inner_depth)?;
3938 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3939 {
3940 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3941 }
3942 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3943 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3944 }
3945 }
3946
3947 next_offset += envelope_size;
3948
3949 while next_offset < end_offset {
3951 _next_ordinal_to_read += 1;
3952 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3953 next_offset += envelope_size;
3954 }
3955
3956 Ok(())
3957 }
3958 }
3959}