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 fidl::endpoints::ControlHandle for ManagerControlHandle {
939 fn shutdown(&self) {
940 self.inner.shutdown()
941 }
942
943 fn shutdown_with_epitaph(&self, status: zx_status::Status) {
944 self.inner.shutdown_with_epitaph(status)
945 }
946
947 fn is_closed(&self) -> bool {
948 self.inner.channel().is_closed()
949 }
950 fn on_closed(&self) -> fidl::OnSignalsRef<'_> {
951 self.inner.channel().on_closed()
952 }
953
954 #[cfg(target_os = "fuchsia")]
955 fn signal_peer(
956 &self,
957 clear_mask: zx::Signals,
958 set_mask: zx::Signals,
959 ) -> Result<(), zx_status::Status> {
960 use fidl::Peered;
961 self.inner.channel().signal_peer(clear_mask, set_mask)
962 }
963}
964
965impl ManagerControlHandle {}
966
967#[must_use = "FIDL methods require a response to be sent"]
968#[derive(Debug)]
969pub struct ManagerSuspendContainerResponder {
970 control_handle: std::mem::ManuallyDrop<ManagerControlHandle>,
971 tx_id: u32,
972}
973
974impl std::ops::Drop for ManagerSuspendContainerResponder {
978 fn drop(&mut self) {
979 self.control_handle.shutdown();
980 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
982 }
983}
984
985impl fidl::endpoints::Responder for ManagerSuspendContainerResponder {
986 type ControlHandle = ManagerControlHandle;
987
988 fn control_handle(&self) -> &ManagerControlHandle {
989 &self.control_handle
990 }
991
992 fn drop_without_shutdown(mut self) {
993 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
995 std::mem::forget(self);
997 }
998}
999
1000impl ManagerSuspendContainerResponder {
1001 pub fn send(
1005 self,
1006 mut result: Result<&ManagerSuspendContainerResponse, SuspendError>,
1007 ) -> Result<(), fidl::Error> {
1008 let _result = self.send_raw(result);
1009 if _result.is_err() {
1010 self.control_handle.shutdown();
1011 }
1012 self.drop_without_shutdown();
1013 _result
1014 }
1015
1016 pub fn send_no_shutdown_on_err(
1018 self,
1019 mut result: Result<&ManagerSuspendContainerResponse, SuspendError>,
1020 ) -> Result<(), fidl::Error> {
1021 let _result = self.send_raw(result);
1022 self.drop_without_shutdown();
1023 _result
1024 }
1025
1026 fn send_raw(
1027 &self,
1028 mut result: Result<&ManagerSuspendContainerResponse, SuspendError>,
1029 ) -> Result<(), fidl::Error> {
1030 self.control_handle.inner.send::<fidl::encoding::FlexibleResultType<
1031 ManagerSuspendContainerResponse,
1032 SuspendError,
1033 >>(
1034 fidl::encoding::FlexibleResult::new(result),
1035 self.tx_id,
1036 0x928527927c9f2a7,
1037 fidl::encoding::DynamicFlags::FLEXIBLE,
1038 )
1039 }
1040}
1041
1042#[must_use = "FIDL methods require a response to be sent"]
1043#[derive(Debug)]
1044pub struct ManagerRegisterWakeWatcherResponder {
1045 control_handle: std::mem::ManuallyDrop<ManagerControlHandle>,
1046 tx_id: u32,
1047}
1048
1049impl std::ops::Drop for ManagerRegisterWakeWatcherResponder {
1053 fn drop(&mut self) {
1054 self.control_handle.shutdown();
1055 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
1057 }
1058}
1059
1060impl fidl::endpoints::Responder for ManagerRegisterWakeWatcherResponder {
1061 type ControlHandle = ManagerControlHandle;
1062
1063 fn control_handle(&self) -> &ManagerControlHandle {
1064 &self.control_handle
1065 }
1066
1067 fn drop_without_shutdown(mut self) {
1068 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
1070 std::mem::forget(self);
1072 }
1073}
1074
1075impl ManagerRegisterWakeWatcherResponder {
1076 pub fn send(self) -> Result<(), fidl::Error> {
1080 let _result = self.send_raw();
1081 if _result.is_err() {
1082 self.control_handle.shutdown();
1083 }
1084 self.drop_without_shutdown();
1085 _result
1086 }
1087
1088 pub fn send_no_shutdown_on_err(self) -> Result<(), fidl::Error> {
1090 let _result = self.send_raw();
1091 self.drop_without_shutdown();
1092 _result
1093 }
1094
1095 fn send_raw(&self) -> Result<(), fidl::Error> {
1096 self.control_handle.inner.send::<fidl::encoding::FlexibleType<fidl::encoding::EmptyStruct>>(
1097 fidl::encoding::Flexible::new(()),
1098 self.tx_id,
1099 0x456d74519eb65b41,
1100 fidl::encoding::DynamicFlags::FLEXIBLE,
1101 )
1102 }
1103}
1104
1105#[derive(Debug, Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash)]
1106pub struct PagerMarker;
1107
1108impl fidl::endpoints::ProtocolMarker for PagerMarker {
1109 type Proxy = PagerProxy;
1110 type RequestStream = PagerRequestStream;
1111 #[cfg(target_os = "fuchsia")]
1112 type SynchronousProxy = PagerSynchronousProxy;
1113
1114 const DEBUG_NAME: &'static str = "(anonymous) Pager";
1115}
1116pub type PagerRegisterFileResult = Result<PagerRegisterFileResponse, i32>;
1117
1118pub trait PagerProxyInterface: Send + Sync {
1119 type RegisterFileResponseFut: std::future::Future<Output = Result<PagerRegisterFileResult, fidl::Error>>
1120 + Send;
1121 fn r#register_file(&self, payload: &PagerRegisterFileRequest) -> Self::RegisterFileResponseFut;
1122}
1123#[derive(Debug)]
1124#[cfg(target_os = "fuchsia")]
1125pub struct PagerSynchronousProxy {
1126 client: fidl::client::sync::Client,
1127}
1128
1129#[cfg(target_os = "fuchsia")]
1130impl fidl::endpoints::SynchronousProxy for PagerSynchronousProxy {
1131 type Proxy = PagerProxy;
1132 type Protocol = PagerMarker;
1133
1134 fn from_channel(inner: fidl::Channel) -> Self {
1135 Self::new(inner)
1136 }
1137
1138 fn into_channel(self) -> fidl::Channel {
1139 self.client.into_channel()
1140 }
1141
1142 fn as_channel(&self) -> &fidl::Channel {
1143 self.client.as_channel()
1144 }
1145}
1146
1147#[cfg(target_os = "fuchsia")]
1148impl PagerSynchronousProxy {
1149 pub fn new(channel: fidl::Channel) -> Self {
1150 Self { client: fidl::client::sync::Client::new(channel) }
1151 }
1152
1153 pub fn into_channel(self) -> fidl::Channel {
1154 self.client.into_channel()
1155 }
1156
1157 pub fn wait_for_event(
1160 &self,
1161 deadline: zx::MonotonicInstant,
1162 ) -> Result<PagerEvent, fidl::Error> {
1163 PagerEvent::decode(self.client.wait_for_event::<PagerMarker>(deadline)?)
1164 }
1165
1166 pub fn r#register_file(
1168 &self,
1169 mut payload: &PagerRegisterFileRequest,
1170 ___deadline: zx::MonotonicInstant,
1171 ) -> Result<PagerRegisterFileResult, fidl::Error> {
1172 let _response = self.client.send_query::<
1173 PagerRegisterFileRequest,
1174 fidl::encoding::FlexibleResultType<PagerRegisterFileResponse, i32>,
1175 PagerMarker,
1176 >(
1177 payload,
1178 0x4f85a2ce6cae4aed,
1179 fidl::encoding::DynamicFlags::FLEXIBLE,
1180 ___deadline,
1181 )?
1182 .into_result::<PagerMarker>("register_file")?;
1183 Ok(_response.map(|x| x))
1184 }
1185}
1186
1187#[cfg(target_os = "fuchsia")]
1188impl From<PagerSynchronousProxy> for zx::NullableHandle {
1189 fn from(value: PagerSynchronousProxy) -> Self {
1190 value.into_channel().into()
1191 }
1192}
1193
1194#[cfg(target_os = "fuchsia")]
1195impl From<fidl::Channel> for PagerSynchronousProxy {
1196 fn from(value: fidl::Channel) -> Self {
1197 Self::new(value)
1198 }
1199}
1200
1201#[cfg(target_os = "fuchsia")]
1202impl fidl::endpoints::FromClient for PagerSynchronousProxy {
1203 type Protocol = PagerMarker;
1204
1205 fn from_client(value: fidl::endpoints::ClientEnd<PagerMarker>) -> Self {
1206 Self::new(value.into_channel())
1207 }
1208}
1209
1210#[derive(Debug, Clone)]
1211pub struct PagerProxy {
1212 client: fidl::client::Client<fidl::encoding::DefaultFuchsiaResourceDialect>,
1213}
1214
1215impl fidl::endpoints::Proxy for PagerProxy {
1216 type Protocol = PagerMarker;
1217
1218 fn from_channel(inner: ::fidl::AsyncChannel) -> Self {
1219 Self::new(inner)
1220 }
1221
1222 fn into_channel(self) -> Result<::fidl::AsyncChannel, Self> {
1223 self.client.into_channel().map_err(|client| Self { client })
1224 }
1225
1226 fn as_channel(&self) -> &::fidl::AsyncChannel {
1227 self.client.as_channel()
1228 }
1229}
1230
1231impl PagerProxy {
1232 pub fn new(channel: ::fidl::AsyncChannel) -> Self {
1234 let protocol_name = <PagerMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
1235 Self { client: fidl::client::Client::new(channel, protocol_name) }
1236 }
1237
1238 pub fn take_event_stream(&self) -> PagerEventStream {
1244 PagerEventStream { event_receiver: self.client.take_event_receiver() }
1245 }
1246
1247 pub fn r#register_file(
1249 &self,
1250 mut payload: &PagerRegisterFileRequest,
1251 ) -> fidl::client::QueryResponseFut<
1252 PagerRegisterFileResult,
1253 fidl::encoding::DefaultFuchsiaResourceDialect,
1254 > {
1255 PagerProxyInterface::r#register_file(self, payload)
1256 }
1257}
1258
1259impl PagerProxyInterface for PagerProxy {
1260 type RegisterFileResponseFut = fidl::client::QueryResponseFut<
1261 PagerRegisterFileResult,
1262 fidl::encoding::DefaultFuchsiaResourceDialect,
1263 >;
1264 fn r#register_file(
1265 &self,
1266 mut payload: &PagerRegisterFileRequest,
1267 ) -> Self::RegisterFileResponseFut {
1268 fn _decode(
1269 mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
1270 ) -> Result<PagerRegisterFileResult, fidl::Error> {
1271 let _response = fidl::client::decode_transaction_body::<
1272 fidl::encoding::FlexibleResultType<PagerRegisterFileResponse, i32>,
1273 fidl::encoding::DefaultFuchsiaResourceDialect,
1274 0x4f85a2ce6cae4aed,
1275 >(_buf?)?
1276 .into_result::<PagerMarker>("register_file")?;
1277 Ok(_response.map(|x| x))
1278 }
1279 self.client.send_query_and_decode::<PagerRegisterFileRequest, PagerRegisterFileResult>(
1280 payload,
1281 0x4f85a2ce6cae4aed,
1282 fidl::encoding::DynamicFlags::FLEXIBLE,
1283 _decode,
1284 )
1285 }
1286}
1287
1288pub struct PagerEventStream {
1289 event_receiver: fidl::client::EventReceiver<fidl::encoding::DefaultFuchsiaResourceDialect>,
1290}
1291
1292impl std::marker::Unpin for PagerEventStream {}
1293
1294impl futures::stream::FusedStream for PagerEventStream {
1295 fn is_terminated(&self) -> bool {
1296 self.event_receiver.is_terminated()
1297 }
1298}
1299
1300impl futures::Stream for PagerEventStream {
1301 type Item = Result<PagerEvent, fidl::Error>;
1302
1303 fn poll_next(
1304 mut self: std::pin::Pin<&mut Self>,
1305 cx: &mut std::task::Context<'_>,
1306 ) -> std::task::Poll<Option<Self::Item>> {
1307 match futures::ready!(futures::stream::StreamExt::poll_next_unpin(
1308 &mut self.event_receiver,
1309 cx
1310 )?) {
1311 Some(buf) => std::task::Poll::Ready(Some(PagerEvent::decode(buf))),
1312 None => std::task::Poll::Ready(None),
1313 }
1314 }
1315}
1316
1317#[derive(Debug)]
1318pub enum PagerEvent {
1319 #[non_exhaustive]
1320 _UnknownEvent {
1321 ordinal: u64,
1323 },
1324}
1325
1326impl PagerEvent {
1327 fn decode(
1329 mut buf: <fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc,
1330 ) -> Result<PagerEvent, fidl::Error> {
1331 let (bytes, _handles) = buf.split_mut();
1332 let (tx_header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
1333 debug_assert_eq!(tx_header.tx_id, 0);
1334 match tx_header.ordinal {
1335 _ if tx_header.dynamic_flags().contains(fidl::encoding::DynamicFlags::FLEXIBLE) => {
1336 Ok(PagerEvent::_UnknownEvent { ordinal: tx_header.ordinal })
1337 }
1338 _ => Err(fidl::Error::UnknownOrdinal {
1339 ordinal: tx_header.ordinal,
1340 protocol_name: <PagerMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
1341 }),
1342 }
1343 }
1344}
1345
1346pub struct PagerRequestStream {
1348 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
1349 is_terminated: bool,
1350}
1351
1352impl std::marker::Unpin for PagerRequestStream {}
1353
1354impl futures::stream::FusedStream for PagerRequestStream {
1355 fn is_terminated(&self) -> bool {
1356 self.is_terminated
1357 }
1358}
1359
1360impl fidl::endpoints::RequestStream for PagerRequestStream {
1361 type Protocol = PagerMarker;
1362 type ControlHandle = PagerControlHandle;
1363
1364 fn from_channel(channel: ::fidl::AsyncChannel) -> Self {
1365 Self { inner: std::sync::Arc::new(fidl::ServeInner::new(channel)), is_terminated: false }
1366 }
1367
1368 fn control_handle(&self) -> Self::ControlHandle {
1369 PagerControlHandle { inner: self.inner.clone() }
1370 }
1371
1372 fn into_inner(
1373 self,
1374 ) -> (::std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>, bool)
1375 {
1376 (self.inner, self.is_terminated)
1377 }
1378
1379 fn from_inner(
1380 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
1381 is_terminated: bool,
1382 ) -> Self {
1383 Self { inner, is_terminated }
1384 }
1385}
1386
1387impl futures::Stream for PagerRequestStream {
1388 type Item = Result<PagerRequest, fidl::Error>;
1389
1390 fn poll_next(
1391 mut self: std::pin::Pin<&mut Self>,
1392 cx: &mut std::task::Context<'_>,
1393 ) -> std::task::Poll<Option<Self::Item>> {
1394 let this = &mut *self;
1395 if this.inner.check_shutdown(cx) {
1396 this.is_terminated = true;
1397 return std::task::Poll::Ready(None);
1398 }
1399 if this.is_terminated {
1400 panic!("polled PagerRequestStream after completion");
1401 }
1402 fidl::encoding::with_tls_decode_buf::<_, fidl::encoding::DefaultFuchsiaResourceDialect>(
1403 |bytes, handles| {
1404 match this.inner.channel().read_etc(cx, bytes, handles) {
1405 std::task::Poll::Ready(Ok(())) => {}
1406 std::task::Poll::Pending => return std::task::Poll::Pending,
1407 std::task::Poll::Ready(Err(zx_status::Status::PEER_CLOSED)) => {
1408 this.is_terminated = true;
1409 return std::task::Poll::Ready(None);
1410 }
1411 std::task::Poll::Ready(Err(e)) => {
1412 return std::task::Poll::Ready(Some(Err(fidl::Error::ServerRequestRead(
1413 e.into(),
1414 ))));
1415 }
1416 }
1417
1418 let (header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
1420
1421 std::task::Poll::Ready(Some(match header.ordinal {
1422 0x4f85a2ce6cae4aed => {
1423 header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
1424 let mut req = fidl::new_empty!(
1425 PagerRegisterFileRequest,
1426 fidl::encoding::DefaultFuchsiaResourceDialect
1427 );
1428 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<PagerRegisterFileRequest>(&header, _body_bytes, handles, &mut req)?;
1429 let control_handle = PagerControlHandle { inner: this.inner.clone() };
1430 Ok(PagerRequest::RegisterFile {
1431 payload: req,
1432 responder: PagerRegisterFileResponder {
1433 control_handle: std::mem::ManuallyDrop::new(control_handle),
1434 tx_id: header.tx_id,
1435 },
1436 })
1437 }
1438 _ if header.tx_id == 0
1439 && header
1440 .dynamic_flags()
1441 .contains(fidl::encoding::DynamicFlags::FLEXIBLE) =>
1442 {
1443 Ok(PagerRequest::_UnknownMethod {
1444 ordinal: header.ordinal,
1445 control_handle: PagerControlHandle { inner: this.inner.clone() },
1446 method_type: fidl::MethodType::OneWay,
1447 })
1448 }
1449 _ if header
1450 .dynamic_flags()
1451 .contains(fidl::encoding::DynamicFlags::FLEXIBLE) =>
1452 {
1453 this.inner.send_framework_err(
1454 fidl::encoding::FrameworkErr::UnknownMethod,
1455 header.tx_id,
1456 header.ordinal,
1457 header.dynamic_flags(),
1458 (bytes, handles),
1459 )?;
1460 Ok(PagerRequest::_UnknownMethod {
1461 ordinal: header.ordinal,
1462 control_handle: PagerControlHandle { inner: this.inner.clone() },
1463 method_type: fidl::MethodType::TwoWay,
1464 })
1465 }
1466 _ => Err(fidl::Error::UnknownOrdinal {
1467 ordinal: header.ordinal,
1468 protocol_name: <PagerMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
1469 }),
1470 }))
1471 },
1472 )
1473 }
1474}
1475
1476#[derive(Debug)]
1477pub enum PagerRequest {
1478 RegisterFile { payload: PagerRegisterFileRequest, responder: PagerRegisterFileResponder },
1480 #[non_exhaustive]
1482 _UnknownMethod {
1483 ordinal: u64,
1485 control_handle: PagerControlHandle,
1486 method_type: fidl::MethodType,
1487 },
1488}
1489
1490impl PagerRequest {
1491 #[allow(irrefutable_let_patterns)]
1492 pub fn into_register_file(
1493 self,
1494 ) -> Option<(PagerRegisterFileRequest, PagerRegisterFileResponder)> {
1495 if let PagerRequest::RegisterFile { payload, responder } = self {
1496 Some((payload, responder))
1497 } else {
1498 None
1499 }
1500 }
1501
1502 pub fn method_name(&self) -> &'static str {
1504 match *self {
1505 PagerRequest::RegisterFile { .. } => "register_file",
1506 PagerRequest::_UnknownMethod { method_type: fidl::MethodType::OneWay, .. } => {
1507 "unknown one-way method"
1508 }
1509 PagerRequest::_UnknownMethod { method_type: fidl::MethodType::TwoWay, .. } => {
1510 "unknown two-way method"
1511 }
1512 }
1513 }
1514}
1515
1516#[derive(Debug, Clone)]
1517pub struct PagerControlHandle {
1518 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
1519}
1520
1521impl fidl::endpoints::ControlHandle for PagerControlHandle {
1522 fn shutdown(&self) {
1523 self.inner.shutdown()
1524 }
1525
1526 fn shutdown_with_epitaph(&self, status: zx_status::Status) {
1527 self.inner.shutdown_with_epitaph(status)
1528 }
1529
1530 fn is_closed(&self) -> bool {
1531 self.inner.channel().is_closed()
1532 }
1533 fn on_closed(&self) -> fidl::OnSignalsRef<'_> {
1534 self.inner.channel().on_closed()
1535 }
1536
1537 #[cfg(target_os = "fuchsia")]
1538 fn signal_peer(
1539 &self,
1540 clear_mask: zx::Signals,
1541 set_mask: zx::Signals,
1542 ) -> Result<(), zx_status::Status> {
1543 use fidl::Peered;
1544 self.inner.channel().signal_peer(clear_mask, set_mask)
1545 }
1546}
1547
1548impl PagerControlHandle {}
1549
1550#[must_use = "FIDL methods require a response to be sent"]
1551#[derive(Debug)]
1552pub struct PagerRegisterFileResponder {
1553 control_handle: std::mem::ManuallyDrop<PagerControlHandle>,
1554 tx_id: u32,
1555}
1556
1557impl std::ops::Drop for PagerRegisterFileResponder {
1561 fn drop(&mut self) {
1562 self.control_handle.shutdown();
1563 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
1565 }
1566}
1567
1568impl fidl::endpoints::Responder for PagerRegisterFileResponder {
1569 type ControlHandle = PagerControlHandle;
1570
1571 fn control_handle(&self) -> &PagerControlHandle {
1572 &self.control_handle
1573 }
1574
1575 fn drop_without_shutdown(mut self) {
1576 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
1578 std::mem::forget(self);
1580 }
1581}
1582
1583impl PagerRegisterFileResponder {
1584 pub fn send(
1588 self,
1589 mut result: Result<PagerRegisterFileResponse, i32>,
1590 ) -> Result<(), fidl::Error> {
1591 let _result = self.send_raw(result);
1592 if _result.is_err() {
1593 self.control_handle.shutdown();
1594 }
1595 self.drop_without_shutdown();
1596 _result
1597 }
1598
1599 pub fn send_no_shutdown_on_err(
1601 self,
1602 mut result: Result<PagerRegisterFileResponse, i32>,
1603 ) -> Result<(), fidl::Error> {
1604 let _result = self.send_raw(result);
1605 self.drop_without_shutdown();
1606 _result
1607 }
1608
1609 fn send_raw(
1610 &self,
1611 mut result: Result<PagerRegisterFileResponse, i32>,
1612 ) -> Result<(), fidl::Error> {
1613 self.control_handle
1614 .inner
1615 .send::<fidl::encoding::FlexibleResultType<PagerRegisterFileResponse, i32>>(
1616 fidl::encoding::FlexibleResult::new(result.as_mut().map_err(|e| *e)),
1617 self.tx_id,
1618 0x4f85a2ce6cae4aed,
1619 fidl::encoding::DynamicFlags::FLEXIBLE,
1620 )
1621 }
1622}
1623
1624mod internal {
1625 use super::*;
1626
1627 impl ManagerAddWakeSourceRequest {
1628 #[inline(always)]
1629 fn max_ordinal_present(&self) -> u64 {
1630 if let Some(_) = self.signals {
1631 return 4;
1632 }
1633 if let Some(_) = self.handle {
1634 return 3;
1635 }
1636 if let Some(_) = self.name {
1637 return 2;
1638 }
1639 if let Some(_) = self.container_job {
1640 return 1;
1641 }
1642 0
1643 }
1644 }
1645
1646 impl fidl::encoding::ResourceTypeMarker for ManagerAddWakeSourceRequest {
1647 type Borrowed<'a> = &'a mut Self;
1648 fn take_or_borrow<'a>(
1649 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
1650 ) -> Self::Borrowed<'a> {
1651 value
1652 }
1653 }
1654
1655 unsafe impl fidl::encoding::TypeMarker for ManagerAddWakeSourceRequest {
1656 type Owned = Self;
1657
1658 #[inline(always)]
1659 fn inline_align(_context: fidl::encoding::Context) -> usize {
1660 8
1661 }
1662
1663 #[inline(always)]
1664 fn inline_size(_context: fidl::encoding::Context) -> usize {
1665 16
1666 }
1667 }
1668
1669 unsafe impl
1670 fidl::encoding::Encode<
1671 ManagerAddWakeSourceRequest,
1672 fidl::encoding::DefaultFuchsiaResourceDialect,
1673 > for &mut ManagerAddWakeSourceRequest
1674 {
1675 unsafe fn encode(
1676 self,
1677 encoder: &mut fidl::encoding::Encoder<
1678 '_,
1679 fidl::encoding::DefaultFuchsiaResourceDialect,
1680 >,
1681 offset: usize,
1682 mut depth: fidl::encoding::Depth,
1683 ) -> fidl::Result<()> {
1684 encoder.debug_check_bounds::<ManagerAddWakeSourceRequest>(offset);
1685 let max_ordinal: u64 = self.max_ordinal_present();
1687 encoder.write_num(max_ordinal, offset);
1688 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
1689 if max_ordinal == 0 {
1691 return Ok(());
1692 }
1693 depth.increment()?;
1694 let envelope_size = 8;
1695 let bytes_len = max_ordinal as usize * envelope_size;
1696 #[allow(unused_variables)]
1697 let offset = encoder.out_of_line_offset(bytes_len);
1698 let mut _prev_end_offset: usize = 0;
1699 if 1 > max_ordinal {
1700 return Ok(());
1701 }
1702
1703 let cur_offset: usize = (1 - 1) * envelope_size;
1706
1707 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1709
1710 fidl::encoding::encode_in_envelope_optional::<
1715 fidl::encoding::HandleType<
1716 fidl::Job,
1717 { fidl::ObjectType::JOB.into_raw() },
1718 2147483648,
1719 >,
1720 fidl::encoding::DefaultFuchsiaResourceDialect,
1721 >(
1722 self.container_job.as_mut().map(
1723 <fidl::encoding::HandleType<
1724 fidl::Job,
1725 { fidl::ObjectType::JOB.into_raw() },
1726 2147483648,
1727 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow,
1728 ),
1729 encoder,
1730 offset + cur_offset,
1731 depth,
1732 )?;
1733
1734 _prev_end_offset = cur_offset + envelope_size;
1735 if 2 > max_ordinal {
1736 return Ok(());
1737 }
1738
1739 let cur_offset: usize = (2 - 1) * envelope_size;
1742
1743 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1745
1746 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<1024>, fidl::encoding::DefaultFuchsiaResourceDialect>(
1751 self.name.as_ref().map(<fidl::encoding::BoundedString<1024> as fidl::encoding::ValueTypeMarker>::borrow),
1752 encoder, offset + cur_offset, depth
1753 )?;
1754
1755 _prev_end_offset = cur_offset + envelope_size;
1756 if 3 > max_ordinal {
1757 return Ok(());
1758 }
1759
1760 let cur_offset: usize = (3 - 1) * envelope_size;
1763
1764 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1766
1767 fidl::encoding::encode_in_envelope_optional::<
1772 fidl::encoding::HandleType<
1773 fidl::NullableHandle,
1774 { fidl::ObjectType::NONE.into_raw() },
1775 2147483648,
1776 >,
1777 fidl::encoding::DefaultFuchsiaResourceDialect,
1778 >(
1779 self.handle.as_mut().map(
1780 <fidl::encoding::HandleType<
1781 fidl::NullableHandle,
1782 { fidl::ObjectType::NONE.into_raw() },
1783 2147483648,
1784 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow,
1785 ),
1786 encoder,
1787 offset + cur_offset,
1788 depth,
1789 )?;
1790
1791 _prev_end_offset = cur_offset + envelope_size;
1792 if 4 > max_ordinal {
1793 return Ok(());
1794 }
1795
1796 let cur_offset: usize = (4 - 1) * envelope_size;
1799
1800 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1802
1803 fidl::encoding::encode_in_envelope_optional::<
1808 u32,
1809 fidl::encoding::DefaultFuchsiaResourceDialect,
1810 >(
1811 self.signals.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
1812 encoder,
1813 offset + cur_offset,
1814 depth,
1815 )?;
1816
1817 _prev_end_offset = cur_offset + envelope_size;
1818
1819 Ok(())
1820 }
1821 }
1822
1823 impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
1824 for ManagerAddWakeSourceRequest
1825 {
1826 #[inline(always)]
1827 fn new_empty() -> Self {
1828 Self::default()
1829 }
1830
1831 unsafe fn decode(
1832 &mut self,
1833 decoder: &mut fidl::encoding::Decoder<
1834 '_,
1835 fidl::encoding::DefaultFuchsiaResourceDialect,
1836 >,
1837 offset: usize,
1838 mut depth: fidl::encoding::Depth,
1839 ) -> fidl::Result<()> {
1840 decoder.debug_check_bounds::<Self>(offset);
1841 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
1842 None => return Err(fidl::Error::NotNullable),
1843 Some(len) => len,
1844 };
1845 if len == 0 {
1847 return Ok(());
1848 };
1849 depth.increment()?;
1850 let envelope_size = 8;
1851 let bytes_len = len * envelope_size;
1852 let offset = decoder.out_of_line_offset(bytes_len)?;
1853 let mut _next_ordinal_to_read = 0;
1855 let mut next_offset = offset;
1856 let end_offset = offset + bytes_len;
1857 _next_ordinal_to_read += 1;
1858 if next_offset >= end_offset {
1859 return Ok(());
1860 }
1861
1862 while _next_ordinal_to_read < 1 {
1864 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1865 _next_ordinal_to_read += 1;
1866 next_offset += envelope_size;
1867 }
1868
1869 let next_out_of_line = decoder.next_out_of_line();
1870 let handles_before = decoder.remaining_handles();
1871 if let Some((inlined, num_bytes, num_handles)) =
1872 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1873 {
1874 let member_inline_size = <fidl::encoding::HandleType<
1875 fidl::Job,
1876 { fidl::ObjectType::JOB.into_raw() },
1877 2147483648,
1878 > as fidl::encoding::TypeMarker>::inline_size(
1879 decoder.context
1880 );
1881 if inlined != (member_inline_size <= 4) {
1882 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1883 }
1884 let inner_offset;
1885 let mut inner_depth = depth.clone();
1886 if inlined {
1887 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1888 inner_offset = next_offset;
1889 } else {
1890 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1891 inner_depth.increment()?;
1892 }
1893 let val_ref =
1894 self.container_job.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::HandleType<fidl::Job, { fidl::ObjectType::JOB.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect));
1895 fidl::decode!(fidl::encoding::HandleType<fidl::Job, { fidl::ObjectType::JOB.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect, val_ref, decoder, inner_offset, inner_depth)?;
1896 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1897 {
1898 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1899 }
1900 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1901 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1902 }
1903 }
1904
1905 next_offset += envelope_size;
1906 _next_ordinal_to_read += 1;
1907 if next_offset >= end_offset {
1908 return Ok(());
1909 }
1910
1911 while _next_ordinal_to_read < 2 {
1913 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1914 _next_ordinal_to_read += 1;
1915 next_offset += envelope_size;
1916 }
1917
1918 let next_out_of_line = decoder.next_out_of_line();
1919 let handles_before = decoder.remaining_handles();
1920 if let Some((inlined, num_bytes, num_handles)) =
1921 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1922 {
1923 let member_inline_size = <fidl::encoding::BoundedString<1024> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1924 if inlined != (member_inline_size <= 4) {
1925 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1926 }
1927 let inner_offset;
1928 let mut inner_depth = depth.clone();
1929 if inlined {
1930 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1931 inner_offset = next_offset;
1932 } else {
1933 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1934 inner_depth.increment()?;
1935 }
1936 let val_ref = self.name.get_or_insert_with(|| {
1937 fidl::new_empty!(
1938 fidl::encoding::BoundedString<1024>,
1939 fidl::encoding::DefaultFuchsiaResourceDialect
1940 )
1941 });
1942 fidl::decode!(
1943 fidl::encoding::BoundedString<1024>,
1944 fidl::encoding::DefaultFuchsiaResourceDialect,
1945 val_ref,
1946 decoder,
1947 inner_offset,
1948 inner_depth
1949 )?;
1950 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1951 {
1952 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1953 }
1954 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1955 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1956 }
1957 }
1958
1959 next_offset += envelope_size;
1960 _next_ordinal_to_read += 1;
1961 if next_offset >= end_offset {
1962 return Ok(());
1963 }
1964
1965 while _next_ordinal_to_read < 3 {
1967 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1968 _next_ordinal_to_read += 1;
1969 next_offset += envelope_size;
1970 }
1971
1972 let next_out_of_line = decoder.next_out_of_line();
1973 let handles_before = decoder.remaining_handles();
1974 if let Some((inlined, num_bytes, num_handles)) =
1975 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1976 {
1977 let member_inline_size = <fidl::encoding::HandleType<
1978 fidl::NullableHandle,
1979 { fidl::ObjectType::NONE.into_raw() },
1980 2147483648,
1981 > as fidl::encoding::TypeMarker>::inline_size(
1982 decoder.context
1983 );
1984 if inlined != (member_inline_size <= 4) {
1985 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1986 }
1987 let inner_offset;
1988 let mut inner_depth = depth.clone();
1989 if inlined {
1990 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1991 inner_offset = next_offset;
1992 } else {
1993 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1994 inner_depth.increment()?;
1995 }
1996 let val_ref =
1997 self.handle.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::HandleType<fidl::NullableHandle, { fidl::ObjectType::NONE.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect));
1998 fidl::decode!(fidl::encoding::HandleType<fidl::NullableHandle, { fidl::ObjectType::NONE.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect, val_ref, decoder, inner_offset, inner_depth)?;
1999 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2000 {
2001 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2002 }
2003 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2004 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2005 }
2006 }
2007
2008 next_offset += envelope_size;
2009 _next_ordinal_to_read += 1;
2010 if next_offset >= end_offset {
2011 return Ok(());
2012 }
2013
2014 while _next_ordinal_to_read < 4 {
2016 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2017 _next_ordinal_to_read += 1;
2018 next_offset += envelope_size;
2019 }
2020
2021 let next_out_of_line = decoder.next_out_of_line();
2022 let handles_before = decoder.remaining_handles();
2023 if let Some((inlined, num_bytes, num_handles)) =
2024 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2025 {
2026 let member_inline_size =
2027 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2028 if inlined != (member_inline_size <= 4) {
2029 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2030 }
2031 let inner_offset;
2032 let mut inner_depth = depth.clone();
2033 if inlined {
2034 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2035 inner_offset = next_offset;
2036 } else {
2037 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2038 inner_depth.increment()?;
2039 }
2040 let val_ref = self.signals.get_or_insert_with(|| {
2041 fidl::new_empty!(u32, fidl::encoding::DefaultFuchsiaResourceDialect)
2042 });
2043 fidl::decode!(
2044 u32,
2045 fidl::encoding::DefaultFuchsiaResourceDialect,
2046 val_ref,
2047 decoder,
2048 inner_offset,
2049 inner_depth
2050 )?;
2051 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2052 {
2053 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2054 }
2055 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2056 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2057 }
2058 }
2059
2060 next_offset += envelope_size;
2061
2062 while next_offset < end_offset {
2064 _next_ordinal_to_read += 1;
2065 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2066 next_offset += envelope_size;
2067 }
2068
2069 Ok(())
2070 }
2071 }
2072
2073 impl ManagerCreatePagerRequest {
2074 #[inline(always)]
2075 fn max_ordinal_present(&self) -> u64 {
2076 if let Some(_) = self.pager {
2077 return 3;
2078 }
2079 if let Some(_) = self.block_size {
2080 return 2;
2081 }
2082 if let Some(_) = self.backing_vmo {
2083 return 1;
2084 }
2085 0
2086 }
2087 }
2088
2089 impl fidl::encoding::ResourceTypeMarker for ManagerCreatePagerRequest {
2090 type Borrowed<'a> = &'a mut Self;
2091 fn take_or_borrow<'a>(
2092 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
2093 ) -> Self::Borrowed<'a> {
2094 value
2095 }
2096 }
2097
2098 unsafe impl fidl::encoding::TypeMarker for ManagerCreatePagerRequest {
2099 type Owned = Self;
2100
2101 #[inline(always)]
2102 fn inline_align(_context: fidl::encoding::Context) -> usize {
2103 8
2104 }
2105
2106 #[inline(always)]
2107 fn inline_size(_context: fidl::encoding::Context) -> usize {
2108 16
2109 }
2110 }
2111
2112 unsafe impl
2113 fidl::encoding::Encode<
2114 ManagerCreatePagerRequest,
2115 fidl::encoding::DefaultFuchsiaResourceDialect,
2116 > for &mut ManagerCreatePagerRequest
2117 {
2118 unsafe fn encode(
2119 self,
2120 encoder: &mut fidl::encoding::Encoder<
2121 '_,
2122 fidl::encoding::DefaultFuchsiaResourceDialect,
2123 >,
2124 offset: usize,
2125 mut depth: fidl::encoding::Depth,
2126 ) -> fidl::Result<()> {
2127 encoder.debug_check_bounds::<ManagerCreatePagerRequest>(offset);
2128 let max_ordinal: u64 = self.max_ordinal_present();
2130 encoder.write_num(max_ordinal, offset);
2131 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
2132 if max_ordinal == 0 {
2134 return Ok(());
2135 }
2136 depth.increment()?;
2137 let envelope_size = 8;
2138 let bytes_len = max_ordinal as usize * envelope_size;
2139 #[allow(unused_variables)]
2140 let offset = encoder.out_of_line_offset(bytes_len);
2141 let mut _prev_end_offset: usize = 0;
2142 if 1 > max_ordinal {
2143 return Ok(());
2144 }
2145
2146 let cur_offset: usize = (1 - 1) * envelope_size;
2149
2150 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2152
2153 fidl::encoding::encode_in_envelope_optional::<
2158 fidl::encoding::HandleType<
2159 fidl::Vmo,
2160 { fidl::ObjectType::VMO.into_raw() },
2161 2147483648,
2162 >,
2163 fidl::encoding::DefaultFuchsiaResourceDialect,
2164 >(
2165 self.backing_vmo.as_mut().map(
2166 <fidl::encoding::HandleType<
2167 fidl::Vmo,
2168 { fidl::ObjectType::VMO.into_raw() },
2169 2147483648,
2170 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow,
2171 ),
2172 encoder,
2173 offset + cur_offset,
2174 depth,
2175 )?;
2176
2177 _prev_end_offset = cur_offset + envelope_size;
2178 if 2 > max_ordinal {
2179 return Ok(());
2180 }
2181
2182 let cur_offset: usize = (2 - 1) * envelope_size;
2185
2186 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2188
2189 fidl::encoding::encode_in_envelope_optional::<
2194 u64,
2195 fidl::encoding::DefaultFuchsiaResourceDialect,
2196 >(
2197 self.block_size.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
2198 encoder,
2199 offset + cur_offset,
2200 depth,
2201 )?;
2202
2203 _prev_end_offset = cur_offset + envelope_size;
2204 if 3 > max_ordinal {
2205 return Ok(());
2206 }
2207
2208 let cur_offset: usize = (3 - 1) * envelope_size;
2211
2212 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2214
2215 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<PagerMarker>>, fidl::encoding::DefaultFuchsiaResourceDialect>(
2220 self.pager.as_mut().map(<fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<PagerMarker>> as fidl::encoding::ResourceTypeMarker>::take_or_borrow),
2221 encoder, offset + cur_offset, depth
2222 )?;
2223
2224 _prev_end_offset = cur_offset + envelope_size;
2225
2226 Ok(())
2227 }
2228 }
2229
2230 impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
2231 for ManagerCreatePagerRequest
2232 {
2233 #[inline(always)]
2234 fn new_empty() -> Self {
2235 Self::default()
2236 }
2237
2238 unsafe fn decode(
2239 &mut self,
2240 decoder: &mut fidl::encoding::Decoder<
2241 '_,
2242 fidl::encoding::DefaultFuchsiaResourceDialect,
2243 >,
2244 offset: usize,
2245 mut depth: fidl::encoding::Depth,
2246 ) -> fidl::Result<()> {
2247 decoder.debug_check_bounds::<Self>(offset);
2248 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
2249 None => return Err(fidl::Error::NotNullable),
2250 Some(len) => len,
2251 };
2252 if len == 0 {
2254 return Ok(());
2255 };
2256 depth.increment()?;
2257 let envelope_size = 8;
2258 let bytes_len = len * envelope_size;
2259 let offset = decoder.out_of_line_offset(bytes_len)?;
2260 let mut _next_ordinal_to_read = 0;
2262 let mut next_offset = offset;
2263 let end_offset = offset + bytes_len;
2264 _next_ordinal_to_read += 1;
2265 if next_offset >= end_offset {
2266 return Ok(());
2267 }
2268
2269 while _next_ordinal_to_read < 1 {
2271 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2272 _next_ordinal_to_read += 1;
2273 next_offset += envelope_size;
2274 }
2275
2276 let next_out_of_line = decoder.next_out_of_line();
2277 let handles_before = decoder.remaining_handles();
2278 if let Some((inlined, num_bytes, num_handles)) =
2279 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2280 {
2281 let member_inline_size = <fidl::encoding::HandleType<
2282 fidl::Vmo,
2283 { fidl::ObjectType::VMO.into_raw() },
2284 2147483648,
2285 > as fidl::encoding::TypeMarker>::inline_size(
2286 decoder.context
2287 );
2288 if inlined != (member_inline_size <= 4) {
2289 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2290 }
2291 let inner_offset;
2292 let mut inner_depth = depth.clone();
2293 if inlined {
2294 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2295 inner_offset = next_offset;
2296 } else {
2297 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2298 inner_depth.increment()?;
2299 }
2300 let val_ref =
2301 self.backing_vmo.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::HandleType<fidl::Vmo, { fidl::ObjectType::VMO.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect));
2302 fidl::decode!(fidl::encoding::HandleType<fidl::Vmo, { fidl::ObjectType::VMO.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect, val_ref, decoder, inner_offset, inner_depth)?;
2303 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2304 {
2305 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2306 }
2307 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2308 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2309 }
2310 }
2311
2312 next_offset += envelope_size;
2313 _next_ordinal_to_read += 1;
2314 if next_offset >= end_offset {
2315 return Ok(());
2316 }
2317
2318 while _next_ordinal_to_read < 2 {
2320 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2321 _next_ordinal_to_read += 1;
2322 next_offset += envelope_size;
2323 }
2324
2325 let next_out_of_line = decoder.next_out_of_line();
2326 let handles_before = decoder.remaining_handles();
2327 if let Some((inlined, num_bytes, num_handles)) =
2328 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2329 {
2330 let member_inline_size =
2331 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2332 if inlined != (member_inline_size <= 4) {
2333 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2334 }
2335 let inner_offset;
2336 let mut inner_depth = depth.clone();
2337 if inlined {
2338 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2339 inner_offset = next_offset;
2340 } else {
2341 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2342 inner_depth.increment()?;
2343 }
2344 let val_ref = self.block_size.get_or_insert_with(|| {
2345 fidl::new_empty!(u64, fidl::encoding::DefaultFuchsiaResourceDialect)
2346 });
2347 fidl::decode!(
2348 u64,
2349 fidl::encoding::DefaultFuchsiaResourceDialect,
2350 val_ref,
2351 decoder,
2352 inner_offset,
2353 inner_depth
2354 )?;
2355 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2356 {
2357 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2358 }
2359 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2360 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2361 }
2362 }
2363
2364 next_offset += envelope_size;
2365 _next_ordinal_to_read += 1;
2366 if next_offset >= end_offset {
2367 return Ok(());
2368 }
2369
2370 while _next_ordinal_to_read < 3 {
2372 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2373 _next_ordinal_to_read += 1;
2374 next_offset += envelope_size;
2375 }
2376
2377 let next_out_of_line = decoder.next_out_of_line();
2378 let handles_before = decoder.remaining_handles();
2379 if let Some((inlined, num_bytes, num_handles)) =
2380 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2381 {
2382 let member_inline_size = <fidl::encoding::Endpoint<
2383 fidl::endpoints::ServerEnd<PagerMarker>,
2384 > as fidl::encoding::TypeMarker>::inline_size(
2385 decoder.context
2386 );
2387 if inlined != (member_inline_size <= 4) {
2388 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2389 }
2390 let inner_offset;
2391 let mut inner_depth = depth.clone();
2392 if inlined {
2393 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2394 inner_offset = next_offset;
2395 } else {
2396 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2397 inner_depth.increment()?;
2398 }
2399 let val_ref = self.pager.get_or_insert_with(|| {
2400 fidl::new_empty!(
2401 fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<PagerMarker>>,
2402 fidl::encoding::DefaultFuchsiaResourceDialect
2403 )
2404 });
2405 fidl::decode!(
2406 fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<PagerMarker>>,
2407 fidl::encoding::DefaultFuchsiaResourceDialect,
2408 val_ref,
2409 decoder,
2410 inner_offset,
2411 inner_depth
2412 )?;
2413 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2414 {
2415 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2416 }
2417 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2418 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2419 }
2420 }
2421
2422 next_offset += envelope_size;
2423
2424 while next_offset < end_offset {
2426 _next_ordinal_to_read += 1;
2427 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2428 next_offset += envelope_size;
2429 }
2430
2431 Ok(())
2432 }
2433 }
2434
2435 impl ManagerProxyWakeChannelRequest {
2436 #[inline(always)]
2437 fn max_ordinal_present(&self) -> u64 {
2438 if let Some(_) = self.counter {
2439 return 5;
2440 }
2441 if let Some(_) = self.name {
2442 return 4;
2443 }
2444 if let Some(_) = self.remote_channel {
2445 return 3;
2446 }
2447 if let Some(_) = self.container_channel {
2448 return 2;
2449 }
2450 if let Some(_) = self.container_job {
2451 return 1;
2452 }
2453 0
2454 }
2455 }
2456
2457 impl fidl::encoding::ResourceTypeMarker for ManagerProxyWakeChannelRequest {
2458 type Borrowed<'a> = &'a mut Self;
2459 fn take_or_borrow<'a>(
2460 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
2461 ) -> Self::Borrowed<'a> {
2462 value
2463 }
2464 }
2465
2466 unsafe impl fidl::encoding::TypeMarker for ManagerProxyWakeChannelRequest {
2467 type Owned = Self;
2468
2469 #[inline(always)]
2470 fn inline_align(_context: fidl::encoding::Context) -> usize {
2471 8
2472 }
2473
2474 #[inline(always)]
2475 fn inline_size(_context: fidl::encoding::Context) -> usize {
2476 16
2477 }
2478 }
2479
2480 unsafe impl
2481 fidl::encoding::Encode<
2482 ManagerProxyWakeChannelRequest,
2483 fidl::encoding::DefaultFuchsiaResourceDialect,
2484 > for &mut ManagerProxyWakeChannelRequest
2485 {
2486 unsafe fn encode(
2487 self,
2488 encoder: &mut fidl::encoding::Encoder<
2489 '_,
2490 fidl::encoding::DefaultFuchsiaResourceDialect,
2491 >,
2492 offset: usize,
2493 mut depth: fidl::encoding::Depth,
2494 ) -> fidl::Result<()> {
2495 encoder.debug_check_bounds::<ManagerProxyWakeChannelRequest>(offset);
2496 let max_ordinal: u64 = self.max_ordinal_present();
2498 encoder.write_num(max_ordinal, offset);
2499 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
2500 if max_ordinal == 0 {
2502 return Ok(());
2503 }
2504 depth.increment()?;
2505 let envelope_size = 8;
2506 let bytes_len = max_ordinal as usize * envelope_size;
2507 #[allow(unused_variables)]
2508 let offset = encoder.out_of_line_offset(bytes_len);
2509 let mut _prev_end_offset: usize = 0;
2510 if 1 > max_ordinal {
2511 return Ok(());
2512 }
2513
2514 let cur_offset: usize = (1 - 1) * envelope_size;
2517
2518 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2520
2521 fidl::encoding::encode_in_envelope_optional::<
2526 fidl::encoding::HandleType<
2527 fidl::Job,
2528 { fidl::ObjectType::JOB.into_raw() },
2529 2147483648,
2530 >,
2531 fidl::encoding::DefaultFuchsiaResourceDialect,
2532 >(
2533 self.container_job.as_mut().map(
2534 <fidl::encoding::HandleType<
2535 fidl::Job,
2536 { fidl::ObjectType::JOB.into_raw() },
2537 2147483648,
2538 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow,
2539 ),
2540 encoder,
2541 offset + cur_offset,
2542 depth,
2543 )?;
2544
2545 _prev_end_offset = cur_offset + envelope_size;
2546 if 2 > max_ordinal {
2547 return Ok(());
2548 }
2549
2550 let cur_offset: usize = (2 - 1) * envelope_size;
2553
2554 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2556
2557 fidl::encoding::encode_in_envelope_optional::<
2562 fidl::encoding::HandleType<
2563 fidl::Channel,
2564 { fidl::ObjectType::CHANNEL.into_raw() },
2565 2147483648,
2566 >,
2567 fidl::encoding::DefaultFuchsiaResourceDialect,
2568 >(
2569 self.container_channel.as_mut().map(
2570 <fidl::encoding::HandleType<
2571 fidl::Channel,
2572 { fidl::ObjectType::CHANNEL.into_raw() },
2573 2147483648,
2574 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow,
2575 ),
2576 encoder,
2577 offset + cur_offset,
2578 depth,
2579 )?;
2580
2581 _prev_end_offset = cur_offset + envelope_size;
2582 if 3 > max_ordinal {
2583 return Ok(());
2584 }
2585
2586 let cur_offset: usize = (3 - 1) * envelope_size;
2589
2590 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2592
2593 fidl::encoding::encode_in_envelope_optional::<
2598 fidl::encoding::HandleType<
2599 fidl::Channel,
2600 { fidl::ObjectType::CHANNEL.into_raw() },
2601 2147483648,
2602 >,
2603 fidl::encoding::DefaultFuchsiaResourceDialect,
2604 >(
2605 self.remote_channel.as_mut().map(
2606 <fidl::encoding::HandleType<
2607 fidl::Channel,
2608 { fidl::ObjectType::CHANNEL.into_raw() },
2609 2147483648,
2610 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow,
2611 ),
2612 encoder,
2613 offset + cur_offset,
2614 depth,
2615 )?;
2616
2617 _prev_end_offset = cur_offset + envelope_size;
2618 if 4 > max_ordinal {
2619 return Ok(());
2620 }
2621
2622 let cur_offset: usize = (4 - 1) * envelope_size;
2625
2626 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2628
2629 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<1024>, fidl::encoding::DefaultFuchsiaResourceDialect>(
2634 self.name.as_ref().map(<fidl::encoding::BoundedString<1024> as fidl::encoding::ValueTypeMarker>::borrow),
2635 encoder, offset + cur_offset, depth
2636 )?;
2637
2638 _prev_end_offset = cur_offset + envelope_size;
2639 if 5 > max_ordinal {
2640 return Ok(());
2641 }
2642
2643 let cur_offset: usize = (5 - 1) * envelope_size;
2646
2647 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2649
2650 fidl::encoding::encode_in_envelope_optional::<
2655 fidl::encoding::HandleType<
2656 fidl::Counter,
2657 { fidl::ObjectType::COUNTER.into_raw() },
2658 2147483648,
2659 >,
2660 fidl::encoding::DefaultFuchsiaResourceDialect,
2661 >(
2662 self.counter.as_mut().map(
2663 <fidl::encoding::HandleType<
2664 fidl::Counter,
2665 { fidl::ObjectType::COUNTER.into_raw() },
2666 2147483648,
2667 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow,
2668 ),
2669 encoder,
2670 offset + cur_offset,
2671 depth,
2672 )?;
2673
2674 _prev_end_offset = cur_offset + envelope_size;
2675
2676 Ok(())
2677 }
2678 }
2679
2680 impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
2681 for ManagerProxyWakeChannelRequest
2682 {
2683 #[inline(always)]
2684 fn new_empty() -> Self {
2685 Self::default()
2686 }
2687
2688 unsafe fn decode(
2689 &mut self,
2690 decoder: &mut fidl::encoding::Decoder<
2691 '_,
2692 fidl::encoding::DefaultFuchsiaResourceDialect,
2693 >,
2694 offset: usize,
2695 mut depth: fidl::encoding::Depth,
2696 ) -> fidl::Result<()> {
2697 decoder.debug_check_bounds::<Self>(offset);
2698 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
2699 None => return Err(fidl::Error::NotNullable),
2700 Some(len) => len,
2701 };
2702 if len == 0 {
2704 return Ok(());
2705 };
2706 depth.increment()?;
2707 let envelope_size = 8;
2708 let bytes_len = len * envelope_size;
2709 let offset = decoder.out_of_line_offset(bytes_len)?;
2710 let mut _next_ordinal_to_read = 0;
2712 let mut next_offset = offset;
2713 let end_offset = offset + bytes_len;
2714 _next_ordinal_to_read += 1;
2715 if next_offset >= end_offset {
2716 return Ok(());
2717 }
2718
2719 while _next_ordinal_to_read < 1 {
2721 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2722 _next_ordinal_to_read += 1;
2723 next_offset += envelope_size;
2724 }
2725
2726 let next_out_of_line = decoder.next_out_of_line();
2727 let handles_before = decoder.remaining_handles();
2728 if let Some((inlined, num_bytes, num_handles)) =
2729 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2730 {
2731 let member_inline_size = <fidl::encoding::HandleType<
2732 fidl::Job,
2733 { fidl::ObjectType::JOB.into_raw() },
2734 2147483648,
2735 > as fidl::encoding::TypeMarker>::inline_size(
2736 decoder.context
2737 );
2738 if inlined != (member_inline_size <= 4) {
2739 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2740 }
2741 let inner_offset;
2742 let mut inner_depth = depth.clone();
2743 if inlined {
2744 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2745 inner_offset = next_offset;
2746 } else {
2747 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2748 inner_depth.increment()?;
2749 }
2750 let val_ref =
2751 self.container_job.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::HandleType<fidl::Job, { fidl::ObjectType::JOB.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect));
2752 fidl::decode!(fidl::encoding::HandleType<fidl::Job, { fidl::ObjectType::JOB.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect, val_ref, decoder, inner_offset, inner_depth)?;
2753 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2754 {
2755 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2756 }
2757 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2758 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2759 }
2760 }
2761
2762 next_offset += envelope_size;
2763 _next_ordinal_to_read += 1;
2764 if next_offset >= end_offset {
2765 return Ok(());
2766 }
2767
2768 while _next_ordinal_to_read < 2 {
2770 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2771 _next_ordinal_to_read += 1;
2772 next_offset += envelope_size;
2773 }
2774
2775 let next_out_of_line = decoder.next_out_of_line();
2776 let handles_before = decoder.remaining_handles();
2777 if let Some((inlined, num_bytes, num_handles)) =
2778 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2779 {
2780 let member_inline_size = <fidl::encoding::HandleType<
2781 fidl::Channel,
2782 { fidl::ObjectType::CHANNEL.into_raw() },
2783 2147483648,
2784 > as fidl::encoding::TypeMarker>::inline_size(
2785 decoder.context
2786 );
2787 if inlined != (member_inline_size <= 4) {
2788 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2789 }
2790 let inner_offset;
2791 let mut inner_depth = depth.clone();
2792 if inlined {
2793 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2794 inner_offset = next_offset;
2795 } else {
2796 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2797 inner_depth.increment()?;
2798 }
2799 let val_ref =
2800 self.container_channel.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::HandleType<fidl::Channel, { fidl::ObjectType::CHANNEL.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect));
2801 fidl::decode!(fidl::encoding::HandleType<fidl::Channel, { fidl::ObjectType::CHANNEL.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect, val_ref, decoder, inner_offset, inner_depth)?;
2802 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2803 {
2804 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2805 }
2806 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2807 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2808 }
2809 }
2810
2811 next_offset += envelope_size;
2812 _next_ordinal_to_read += 1;
2813 if next_offset >= end_offset {
2814 return Ok(());
2815 }
2816
2817 while _next_ordinal_to_read < 3 {
2819 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2820 _next_ordinal_to_read += 1;
2821 next_offset += envelope_size;
2822 }
2823
2824 let next_out_of_line = decoder.next_out_of_line();
2825 let handles_before = decoder.remaining_handles();
2826 if let Some((inlined, num_bytes, num_handles)) =
2827 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2828 {
2829 let member_inline_size = <fidl::encoding::HandleType<
2830 fidl::Channel,
2831 { fidl::ObjectType::CHANNEL.into_raw() },
2832 2147483648,
2833 > as fidl::encoding::TypeMarker>::inline_size(
2834 decoder.context
2835 );
2836 if inlined != (member_inline_size <= 4) {
2837 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2838 }
2839 let inner_offset;
2840 let mut inner_depth = depth.clone();
2841 if inlined {
2842 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2843 inner_offset = next_offset;
2844 } else {
2845 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2846 inner_depth.increment()?;
2847 }
2848 let val_ref =
2849 self.remote_channel.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::HandleType<fidl::Channel, { fidl::ObjectType::CHANNEL.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect));
2850 fidl::decode!(fidl::encoding::HandleType<fidl::Channel, { fidl::ObjectType::CHANNEL.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect, val_ref, decoder, inner_offset, inner_depth)?;
2851 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2852 {
2853 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2854 }
2855 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2856 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2857 }
2858 }
2859
2860 next_offset += envelope_size;
2861 _next_ordinal_to_read += 1;
2862 if next_offset >= end_offset {
2863 return Ok(());
2864 }
2865
2866 while _next_ordinal_to_read < 4 {
2868 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2869 _next_ordinal_to_read += 1;
2870 next_offset += envelope_size;
2871 }
2872
2873 let next_out_of_line = decoder.next_out_of_line();
2874 let handles_before = decoder.remaining_handles();
2875 if let Some((inlined, num_bytes, num_handles)) =
2876 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2877 {
2878 let member_inline_size = <fidl::encoding::BoundedString<1024> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2879 if inlined != (member_inline_size <= 4) {
2880 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2881 }
2882 let inner_offset;
2883 let mut inner_depth = depth.clone();
2884 if inlined {
2885 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2886 inner_offset = next_offset;
2887 } else {
2888 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2889 inner_depth.increment()?;
2890 }
2891 let val_ref = self.name.get_or_insert_with(|| {
2892 fidl::new_empty!(
2893 fidl::encoding::BoundedString<1024>,
2894 fidl::encoding::DefaultFuchsiaResourceDialect
2895 )
2896 });
2897 fidl::decode!(
2898 fidl::encoding::BoundedString<1024>,
2899 fidl::encoding::DefaultFuchsiaResourceDialect,
2900 val_ref,
2901 decoder,
2902 inner_offset,
2903 inner_depth
2904 )?;
2905 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2906 {
2907 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2908 }
2909 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2910 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2911 }
2912 }
2913
2914 next_offset += envelope_size;
2915 _next_ordinal_to_read += 1;
2916 if next_offset >= end_offset {
2917 return Ok(());
2918 }
2919
2920 while _next_ordinal_to_read < 5 {
2922 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2923 _next_ordinal_to_read += 1;
2924 next_offset += envelope_size;
2925 }
2926
2927 let next_out_of_line = decoder.next_out_of_line();
2928 let handles_before = decoder.remaining_handles();
2929 if let Some((inlined, num_bytes, num_handles)) =
2930 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2931 {
2932 let member_inline_size = <fidl::encoding::HandleType<
2933 fidl::Counter,
2934 { fidl::ObjectType::COUNTER.into_raw() },
2935 2147483648,
2936 > as fidl::encoding::TypeMarker>::inline_size(
2937 decoder.context
2938 );
2939 if inlined != (member_inline_size <= 4) {
2940 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2941 }
2942 let inner_offset;
2943 let mut inner_depth = depth.clone();
2944 if inlined {
2945 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2946 inner_offset = next_offset;
2947 } else {
2948 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2949 inner_depth.increment()?;
2950 }
2951 let val_ref =
2952 self.counter.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::HandleType<fidl::Counter, { fidl::ObjectType::COUNTER.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect));
2953 fidl::decode!(fidl::encoding::HandleType<fidl::Counter, { fidl::ObjectType::COUNTER.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect, val_ref, decoder, inner_offset, inner_depth)?;
2954 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2955 {
2956 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2957 }
2958 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2959 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2960 }
2961 }
2962
2963 next_offset += envelope_size;
2964
2965 while next_offset < end_offset {
2967 _next_ordinal_to_read += 1;
2968 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2969 next_offset += envelope_size;
2970 }
2971
2972 Ok(())
2973 }
2974 }
2975
2976 impl ManagerRegisterWakeWatcherRequest {
2977 #[inline(always)]
2978 fn max_ordinal_present(&self) -> u64 {
2979 if let Some(_) = self.watcher {
2980 return 1;
2981 }
2982 0
2983 }
2984 }
2985
2986 impl fidl::encoding::ResourceTypeMarker for ManagerRegisterWakeWatcherRequest {
2987 type Borrowed<'a> = &'a mut Self;
2988 fn take_or_borrow<'a>(
2989 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
2990 ) -> Self::Borrowed<'a> {
2991 value
2992 }
2993 }
2994
2995 unsafe impl fidl::encoding::TypeMarker for ManagerRegisterWakeWatcherRequest {
2996 type Owned = Self;
2997
2998 #[inline(always)]
2999 fn inline_align(_context: fidl::encoding::Context) -> usize {
3000 8
3001 }
3002
3003 #[inline(always)]
3004 fn inline_size(_context: fidl::encoding::Context) -> usize {
3005 16
3006 }
3007 }
3008
3009 unsafe impl
3010 fidl::encoding::Encode<
3011 ManagerRegisterWakeWatcherRequest,
3012 fidl::encoding::DefaultFuchsiaResourceDialect,
3013 > for &mut ManagerRegisterWakeWatcherRequest
3014 {
3015 unsafe fn encode(
3016 self,
3017 encoder: &mut fidl::encoding::Encoder<
3018 '_,
3019 fidl::encoding::DefaultFuchsiaResourceDialect,
3020 >,
3021 offset: usize,
3022 mut depth: fidl::encoding::Depth,
3023 ) -> fidl::Result<()> {
3024 encoder.debug_check_bounds::<ManagerRegisterWakeWatcherRequest>(offset);
3025 let max_ordinal: u64 = self.max_ordinal_present();
3027 encoder.write_num(max_ordinal, offset);
3028 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
3029 if max_ordinal == 0 {
3031 return Ok(());
3032 }
3033 depth.increment()?;
3034 let envelope_size = 8;
3035 let bytes_len = max_ordinal as usize * envelope_size;
3036 #[allow(unused_variables)]
3037 let offset = encoder.out_of_line_offset(bytes_len);
3038 let mut _prev_end_offset: usize = 0;
3039 if 1 > max_ordinal {
3040 return Ok(());
3041 }
3042
3043 let cur_offset: usize = (1 - 1) * envelope_size;
3046
3047 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3049
3050 fidl::encoding::encode_in_envelope_optional::<
3055 fidl::encoding::HandleType<
3056 fidl::EventPair,
3057 { fidl::ObjectType::EVENTPAIR.into_raw() },
3058 2147483648,
3059 >,
3060 fidl::encoding::DefaultFuchsiaResourceDialect,
3061 >(
3062 self.watcher.as_mut().map(
3063 <fidl::encoding::HandleType<
3064 fidl::EventPair,
3065 { fidl::ObjectType::EVENTPAIR.into_raw() },
3066 2147483648,
3067 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow,
3068 ),
3069 encoder,
3070 offset + cur_offset,
3071 depth,
3072 )?;
3073
3074 _prev_end_offset = cur_offset + envelope_size;
3075
3076 Ok(())
3077 }
3078 }
3079
3080 impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
3081 for ManagerRegisterWakeWatcherRequest
3082 {
3083 #[inline(always)]
3084 fn new_empty() -> Self {
3085 Self::default()
3086 }
3087
3088 unsafe fn decode(
3089 &mut self,
3090 decoder: &mut fidl::encoding::Decoder<
3091 '_,
3092 fidl::encoding::DefaultFuchsiaResourceDialect,
3093 >,
3094 offset: usize,
3095 mut depth: fidl::encoding::Depth,
3096 ) -> fidl::Result<()> {
3097 decoder.debug_check_bounds::<Self>(offset);
3098 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
3099 None => return Err(fidl::Error::NotNullable),
3100 Some(len) => len,
3101 };
3102 if len == 0 {
3104 return Ok(());
3105 };
3106 depth.increment()?;
3107 let envelope_size = 8;
3108 let bytes_len = len * envelope_size;
3109 let offset = decoder.out_of_line_offset(bytes_len)?;
3110 let mut _next_ordinal_to_read = 0;
3112 let mut next_offset = offset;
3113 let end_offset = offset + bytes_len;
3114 _next_ordinal_to_read += 1;
3115 if next_offset >= end_offset {
3116 return Ok(());
3117 }
3118
3119 while _next_ordinal_to_read < 1 {
3121 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3122 _next_ordinal_to_read += 1;
3123 next_offset += envelope_size;
3124 }
3125
3126 let next_out_of_line = decoder.next_out_of_line();
3127 let handles_before = decoder.remaining_handles();
3128 if let Some((inlined, num_bytes, num_handles)) =
3129 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3130 {
3131 let member_inline_size = <fidl::encoding::HandleType<
3132 fidl::EventPair,
3133 { fidl::ObjectType::EVENTPAIR.into_raw() },
3134 2147483648,
3135 > as fidl::encoding::TypeMarker>::inline_size(
3136 decoder.context
3137 );
3138 if inlined != (member_inline_size <= 4) {
3139 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3140 }
3141 let inner_offset;
3142 let mut inner_depth = depth.clone();
3143 if inlined {
3144 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3145 inner_offset = next_offset;
3146 } else {
3147 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3148 inner_depth.increment()?;
3149 }
3150 let val_ref =
3151 self.watcher.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::HandleType<fidl::EventPair, { fidl::ObjectType::EVENTPAIR.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect));
3152 fidl::decode!(fidl::encoding::HandleType<fidl::EventPair, { fidl::ObjectType::EVENTPAIR.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect, val_ref, decoder, inner_offset, inner_depth)?;
3153 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3154 {
3155 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3156 }
3157 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3158 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3159 }
3160 }
3161
3162 next_offset += envelope_size;
3163
3164 while next_offset < end_offset {
3166 _next_ordinal_to_read += 1;
3167 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3168 next_offset += envelope_size;
3169 }
3170
3171 Ok(())
3172 }
3173 }
3174
3175 impl ManagerRemoveWakeSourceRequest {
3176 #[inline(always)]
3177 fn max_ordinal_present(&self) -> u64 {
3178 if let Some(_) = self.handle {
3179 return 2;
3180 }
3181 if let Some(_) = self.container_job {
3182 return 1;
3183 }
3184 0
3185 }
3186 }
3187
3188 impl fidl::encoding::ResourceTypeMarker for ManagerRemoveWakeSourceRequest {
3189 type Borrowed<'a> = &'a mut Self;
3190 fn take_or_borrow<'a>(
3191 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
3192 ) -> Self::Borrowed<'a> {
3193 value
3194 }
3195 }
3196
3197 unsafe impl fidl::encoding::TypeMarker for ManagerRemoveWakeSourceRequest {
3198 type Owned = Self;
3199
3200 #[inline(always)]
3201 fn inline_align(_context: fidl::encoding::Context) -> usize {
3202 8
3203 }
3204
3205 #[inline(always)]
3206 fn inline_size(_context: fidl::encoding::Context) -> usize {
3207 16
3208 }
3209 }
3210
3211 unsafe impl
3212 fidl::encoding::Encode<
3213 ManagerRemoveWakeSourceRequest,
3214 fidl::encoding::DefaultFuchsiaResourceDialect,
3215 > for &mut ManagerRemoveWakeSourceRequest
3216 {
3217 unsafe fn encode(
3218 self,
3219 encoder: &mut fidl::encoding::Encoder<
3220 '_,
3221 fidl::encoding::DefaultFuchsiaResourceDialect,
3222 >,
3223 offset: usize,
3224 mut depth: fidl::encoding::Depth,
3225 ) -> fidl::Result<()> {
3226 encoder.debug_check_bounds::<ManagerRemoveWakeSourceRequest>(offset);
3227 let max_ordinal: u64 = self.max_ordinal_present();
3229 encoder.write_num(max_ordinal, offset);
3230 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
3231 if max_ordinal == 0 {
3233 return Ok(());
3234 }
3235 depth.increment()?;
3236 let envelope_size = 8;
3237 let bytes_len = max_ordinal as usize * envelope_size;
3238 #[allow(unused_variables)]
3239 let offset = encoder.out_of_line_offset(bytes_len);
3240 let mut _prev_end_offset: usize = 0;
3241 if 1 > max_ordinal {
3242 return Ok(());
3243 }
3244
3245 let cur_offset: usize = (1 - 1) * envelope_size;
3248
3249 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3251
3252 fidl::encoding::encode_in_envelope_optional::<
3257 fidl::encoding::HandleType<
3258 fidl::Job,
3259 { fidl::ObjectType::JOB.into_raw() },
3260 2147483648,
3261 >,
3262 fidl::encoding::DefaultFuchsiaResourceDialect,
3263 >(
3264 self.container_job.as_mut().map(
3265 <fidl::encoding::HandleType<
3266 fidl::Job,
3267 { fidl::ObjectType::JOB.into_raw() },
3268 2147483648,
3269 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow,
3270 ),
3271 encoder,
3272 offset + cur_offset,
3273 depth,
3274 )?;
3275
3276 _prev_end_offset = cur_offset + envelope_size;
3277 if 2 > max_ordinal {
3278 return Ok(());
3279 }
3280
3281 let cur_offset: usize = (2 - 1) * envelope_size;
3284
3285 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3287
3288 fidl::encoding::encode_in_envelope_optional::<
3293 fidl::encoding::HandleType<
3294 fidl::NullableHandle,
3295 { fidl::ObjectType::NONE.into_raw() },
3296 2147483648,
3297 >,
3298 fidl::encoding::DefaultFuchsiaResourceDialect,
3299 >(
3300 self.handle.as_mut().map(
3301 <fidl::encoding::HandleType<
3302 fidl::NullableHandle,
3303 { fidl::ObjectType::NONE.into_raw() },
3304 2147483648,
3305 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow,
3306 ),
3307 encoder,
3308 offset + cur_offset,
3309 depth,
3310 )?;
3311
3312 _prev_end_offset = cur_offset + envelope_size;
3313
3314 Ok(())
3315 }
3316 }
3317
3318 impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
3319 for ManagerRemoveWakeSourceRequest
3320 {
3321 #[inline(always)]
3322 fn new_empty() -> Self {
3323 Self::default()
3324 }
3325
3326 unsafe fn decode(
3327 &mut self,
3328 decoder: &mut fidl::encoding::Decoder<
3329 '_,
3330 fidl::encoding::DefaultFuchsiaResourceDialect,
3331 >,
3332 offset: usize,
3333 mut depth: fidl::encoding::Depth,
3334 ) -> fidl::Result<()> {
3335 decoder.debug_check_bounds::<Self>(offset);
3336 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
3337 None => return Err(fidl::Error::NotNullable),
3338 Some(len) => len,
3339 };
3340 if len == 0 {
3342 return Ok(());
3343 };
3344 depth.increment()?;
3345 let envelope_size = 8;
3346 let bytes_len = len * envelope_size;
3347 let offset = decoder.out_of_line_offset(bytes_len)?;
3348 let mut _next_ordinal_to_read = 0;
3350 let mut next_offset = offset;
3351 let end_offset = offset + bytes_len;
3352 _next_ordinal_to_read += 1;
3353 if next_offset >= end_offset {
3354 return Ok(());
3355 }
3356
3357 while _next_ordinal_to_read < 1 {
3359 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3360 _next_ordinal_to_read += 1;
3361 next_offset += envelope_size;
3362 }
3363
3364 let next_out_of_line = decoder.next_out_of_line();
3365 let handles_before = decoder.remaining_handles();
3366 if let Some((inlined, num_bytes, num_handles)) =
3367 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3368 {
3369 let member_inline_size = <fidl::encoding::HandleType<
3370 fidl::Job,
3371 { fidl::ObjectType::JOB.into_raw() },
3372 2147483648,
3373 > as fidl::encoding::TypeMarker>::inline_size(
3374 decoder.context
3375 );
3376 if inlined != (member_inline_size <= 4) {
3377 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3378 }
3379 let inner_offset;
3380 let mut inner_depth = depth.clone();
3381 if inlined {
3382 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3383 inner_offset = next_offset;
3384 } else {
3385 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3386 inner_depth.increment()?;
3387 }
3388 let val_ref =
3389 self.container_job.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::HandleType<fidl::Job, { fidl::ObjectType::JOB.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect));
3390 fidl::decode!(fidl::encoding::HandleType<fidl::Job, { fidl::ObjectType::JOB.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect, val_ref, decoder, inner_offset, inner_depth)?;
3391 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3392 {
3393 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3394 }
3395 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3396 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3397 }
3398 }
3399
3400 next_offset += envelope_size;
3401 _next_ordinal_to_read += 1;
3402 if next_offset >= end_offset {
3403 return Ok(());
3404 }
3405
3406 while _next_ordinal_to_read < 2 {
3408 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3409 _next_ordinal_to_read += 1;
3410 next_offset += envelope_size;
3411 }
3412
3413 let next_out_of_line = decoder.next_out_of_line();
3414 let handles_before = decoder.remaining_handles();
3415 if let Some((inlined, num_bytes, num_handles)) =
3416 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3417 {
3418 let member_inline_size = <fidl::encoding::HandleType<
3419 fidl::NullableHandle,
3420 { fidl::ObjectType::NONE.into_raw() },
3421 2147483648,
3422 > as fidl::encoding::TypeMarker>::inline_size(
3423 decoder.context
3424 );
3425 if inlined != (member_inline_size <= 4) {
3426 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3427 }
3428 let inner_offset;
3429 let mut inner_depth = depth.clone();
3430 if inlined {
3431 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3432 inner_offset = next_offset;
3433 } else {
3434 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3435 inner_depth.increment()?;
3436 }
3437 let val_ref =
3438 self.handle.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::HandleType<fidl::NullableHandle, { fidl::ObjectType::NONE.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect));
3439 fidl::decode!(fidl::encoding::HandleType<fidl::NullableHandle, { fidl::ObjectType::NONE.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect, val_ref, decoder, inner_offset, inner_depth)?;
3440 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3441 {
3442 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3443 }
3444 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3445 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3446 }
3447 }
3448
3449 next_offset += envelope_size;
3450
3451 while next_offset < end_offset {
3453 _next_ordinal_to_read += 1;
3454 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3455 next_offset += envelope_size;
3456 }
3457
3458 Ok(())
3459 }
3460 }
3461
3462 impl ManagerSuspendContainerRequest {
3463 #[inline(always)]
3464 fn max_ordinal_present(&self) -> u64 {
3465 if let Some(_) = self.wake_locks {
3466 return 2;
3467 }
3468 if let Some(_) = self.container_job {
3469 return 1;
3470 }
3471 0
3472 }
3473 }
3474
3475 impl fidl::encoding::ResourceTypeMarker for ManagerSuspendContainerRequest {
3476 type Borrowed<'a> = &'a mut Self;
3477 fn take_or_borrow<'a>(
3478 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
3479 ) -> Self::Borrowed<'a> {
3480 value
3481 }
3482 }
3483
3484 unsafe impl fidl::encoding::TypeMarker for ManagerSuspendContainerRequest {
3485 type Owned = Self;
3486
3487 #[inline(always)]
3488 fn inline_align(_context: fidl::encoding::Context) -> usize {
3489 8
3490 }
3491
3492 #[inline(always)]
3493 fn inline_size(_context: fidl::encoding::Context) -> usize {
3494 16
3495 }
3496 }
3497
3498 unsafe impl
3499 fidl::encoding::Encode<
3500 ManagerSuspendContainerRequest,
3501 fidl::encoding::DefaultFuchsiaResourceDialect,
3502 > for &mut ManagerSuspendContainerRequest
3503 {
3504 unsafe fn encode(
3505 self,
3506 encoder: &mut fidl::encoding::Encoder<
3507 '_,
3508 fidl::encoding::DefaultFuchsiaResourceDialect,
3509 >,
3510 offset: usize,
3511 mut depth: fidl::encoding::Depth,
3512 ) -> fidl::Result<()> {
3513 encoder.debug_check_bounds::<ManagerSuspendContainerRequest>(offset);
3514 let max_ordinal: u64 = self.max_ordinal_present();
3516 encoder.write_num(max_ordinal, offset);
3517 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
3518 if max_ordinal == 0 {
3520 return Ok(());
3521 }
3522 depth.increment()?;
3523 let envelope_size = 8;
3524 let bytes_len = max_ordinal as usize * envelope_size;
3525 #[allow(unused_variables)]
3526 let offset = encoder.out_of_line_offset(bytes_len);
3527 let mut _prev_end_offset: usize = 0;
3528 if 1 > max_ordinal {
3529 return Ok(());
3530 }
3531
3532 let cur_offset: usize = (1 - 1) * envelope_size;
3535
3536 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3538
3539 fidl::encoding::encode_in_envelope_optional::<
3544 fidl::encoding::HandleType<
3545 fidl::Job,
3546 { fidl::ObjectType::JOB.into_raw() },
3547 2147483648,
3548 >,
3549 fidl::encoding::DefaultFuchsiaResourceDialect,
3550 >(
3551 self.container_job.as_mut().map(
3552 <fidl::encoding::HandleType<
3553 fidl::Job,
3554 { fidl::ObjectType::JOB.into_raw() },
3555 2147483648,
3556 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow,
3557 ),
3558 encoder,
3559 offset + cur_offset,
3560 depth,
3561 )?;
3562
3563 _prev_end_offset = cur_offset + envelope_size;
3564 if 2 > max_ordinal {
3565 return Ok(());
3566 }
3567
3568 let cur_offset: usize = (2 - 1) * envelope_size;
3571
3572 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3574
3575 fidl::encoding::encode_in_envelope_optional::<
3580 fidl::encoding::HandleType<
3581 fidl::EventPair,
3582 { fidl::ObjectType::EVENTPAIR.into_raw() },
3583 2147483648,
3584 >,
3585 fidl::encoding::DefaultFuchsiaResourceDialect,
3586 >(
3587 self.wake_locks.as_mut().map(
3588 <fidl::encoding::HandleType<
3589 fidl::EventPair,
3590 { fidl::ObjectType::EVENTPAIR.into_raw() },
3591 2147483648,
3592 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow,
3593 ),
3594 encoder,
3595 offset + cur_offset,
3596 depth,
3597 )?;
3598
3599 _prev_end_offset = cur_offset + envelope_size;
3600
3601 Ok(())
3602 }
3603 }
3604
3605 impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
3606 for ManagerSuspendContainerRequest
3607 {
3608 #[inline(always)]
3609 fn new_empty() -> Self {
3610 Self::default()
3611 }
3612
3613 unsafe fn decode(
3614 &mut self,
3615 decoder: &mut fidl::encoding::Decoder<
3616 '_,
3617 fidl::encoding::DefaultFuchsiaResourceDialect,
3618 >,
3619 offset: usize,
3620 mut depth: fidl::encoding::Depth,
3621 ) -> fidl::Result<()> {
3622 decoder.debug_check_bounds::<Self>(offset);
3623 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
3624 None => return Err(fidl::Error::NotNullable),
3625 Some(len) => len,
3626 };
3627 if len == 0 {
3629 return Ok(());
3630 };
3631 depth.increment()?;
3632 let envelope_size = 8;
3633 let bytes_len = len * envelope_size;
3634 let offset = decoder.out_of_line_offset(bytes_len)?;
3635 let mut _next_ordinal_to_read = 0;
3637 let mut next_offset = offset;
3638 let end_offset = offset + bytes_len;
3639 _next_ordinal_to_read += 1;
3640 if next_offset >= end_offset {
3641 return Ok(());
3642 }
3643
3644 while _next_ordinal_to_read < 1 {
3646 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3647 _next_ordinal_to_read += 1;
3648 next_offset += envelope_size;
3649 }
3650
3651 let next_out_of_line = decoder.next_out_of_line();
3652 let handles_before = decoder.remaining_handles();
3653 if let Some((inlined, num_bytes, num_handles)) =
3654 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3655 {
3656 let member_inline_size = <fidl::encoding::HandleType<
3657 fidl::Job,
3658 { fidl::ObjectType::JOB.into_raw() },
3659 2147483648,
3660 > as fidl::encoding::TypeMarker>::inline_size(
3661 decoder.context
3662 );
3663 if inlined != (member_inline_size <= 4) {
3664 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3665 }
3666 let inner_offset;
3667 let mut inner_depth = depth.clone();
3668 if inlined {
3669 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3670 inner_offset = next_offset;
3671 } else {
3672 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3673 inner_depth.increment()?;
3674 }
3675 let val_ref =
3676 self.container_job.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::HandleType<fidl::Job, { fidl::ObjectType::JOB.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect));
3677 fidl::decode!(fidl::encoding::HandleType<fidl::Job, { fidl::ObjectType::JOB.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect, val_ref, decoder, inner_offset, inner_depth)?;
3678 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3679 {
3680 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3681 }
3682 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3683 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3684 }
3685 }
3686
3687 next_offset += envelope_size;
3688 _next_ordinal_to_read += 1;
3689 if next_offset >= end_offset {
3690 return Ok(());
3691 }
3692
3693 while _next_ordinal_to_read < 2 {
3695 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3696 _next_ordinal_to_read += 1;
3697 next_offset += envelope_size;
3698 }
3699
3700 let next_out_of_line = decoder.next_out_of_line();
3701 let handles_before = decoder.remaining_handles();
3702 if let Some((inlined, num_bytes, num_handles)) =
3703 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3704 {
3705 let member_inline_size = <fidl::encoding::HandleType<
3706 fidl::EventPair,
3707 { fidl::ObjectType::EVENTPAIR.into_raw() },
3708 2147483648,
3709 > as fidl::encoding::TypeMarker>::inline_size(
3710 decoder.context
3711 );
3712 if inlined != (member_inline_size <= 4) {
3713 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3714 }
3715 let inner_offset;
3716 let mut inner_depth = depth.clone();
3717 if inlined {
3718 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3719 inner_offset = next_offset;
3720 } else {
3721 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3722 inner_depth.increment()?;
3723 }
3724 let val_ref =
3725 self.wake_locks.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::HandleType<fidl::EventPair, { fidl::ObjectType::EVENTPAIR.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect));
3726 fidl::decode!(fidl::encoding::HandleType<fidl::EventPair, { fidl::ObjectType::EVENTPAIR.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect, val_ref, decoder, inner_offset, inner_depth)?;
3727 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3728 {
3729 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3730 }
3731 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3732 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3733 }
3734 }
3735
3736 next_offset += envelope_size;
3737
3738 while next_offset < end_offset {
3740 _next_ordinal_to_read += 1;
3741 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3742 next_offset += envelope_size;
3743 }
3744
3745 Ok(())
3746 }
3747 }
3748
3749 impl PagerRegisterFileResponse {
3750 #[inline(always)]
3751 fn max_ordinal_present(&self) -> u64 {
3752 if let Some(_) = self.vmo {
3753 return 1;
3754 }
3755 0
3756 }
3757 }
3758
3759 impl fidl::encoding::ResourceTypeMarker for PagerRegisterFileResponse {
3760 type Borrowed<'a> = &'a mut Self;
3761 fn take_or_borrow<'a>(
3762 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
3763 ) -> Self::Borrowed<'a> {
3764 value
3765 }
3766 }
3767
3768 unsafe impl fidl::encoding::TypeMarker for PagerRegisterFileResponse {
3769 type Owned = Self;
3770
3771 #[inline(always)]
3772 fn inline_align(_context: fidl::encoding::Context) -> usize {
3773 8
3774 }
3775
3776 #[inline(always)]
3777 fn inline_size(_context: fidl::encoding::Context) -> usize {
3778 16
3779 }
3780 }
3781
3782 unsafe impl
3783 fidl::encoding::Encode<
3784 PagerRegisterFileResponse,
3785 fidl::encoding::DefaultFuchsiaResourceDialect,
3786 > for &mut PagerRegisterFileResponse
3787 {
3788 unsafe fn encode(
3789 self,
3790 encoder: &mut fidl::encoding::Encoder<
3791 '_,
3792 fidl::encoding::DefaultFuchsiaResourceDialect,
3793 >,
3794 offset: usize,
3795 mut depth: fidl::encoding::Depth,
3796 ) -> fidl::Result<()> {
3797 encoder.debug_check_bounds::<PagerRegisterFileResponse>(offset);
3798 let max_ordinal: u64 = self.max_ordinal_present();
3800 encoder.write_num(max_ordinal, offset);
3801 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
3802 if max_ordinal == 0 {
3804 return Ok(());
3805 }
3806 depth.increment()?;
3807 let envelope_size = 8;
3808 let bytes_len = max_ordinal as usize * envelope_size;
3809 #[allow(unused_variables)]
3810 let offset = encoder.out_of_line_offset(bytes_len);
3811 let mut _prev_end_offset: usize = 0;
3812 if 1 > max_ordinal {
3813 return Ok(());
3814 }
3815
3816 let cur_offset: usize = (1 - 1) * envelope_size;
3819
3820 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3822
3823 fidl::encoding::encode_in_envelope_optional::<
3828 fidl::encoding::HandleType<
3829 fidl::Vmo,
3830 { fidl::ObjectType::VMO.into_raw() },
3831 2147483648,
3832 >,
3833 fidl::encoding::DefaultFuchsiaResourceDialect,
3834 >(
3835 self.vmo.as_mut().map(
3836 <fidl::encoding::HandleType<
3837 fidl::Vmo,
3838 { fidl::ObjectType::VMO.into_raw() },
3839 2147483648,
3840 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow,
3841 ),
3842 encoder,
3843 offset + cur_offset,
3844 depth,
3845 )?;
3846
3847 _prev_end_offset = cur_offset + envelope_size;
3848
3849 Ok(())
3850 }
3851 }
3852
3853 impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
3854 for PagerRegisterFileResponse
3855 {
3856 #[inline(always)]
3857 fn new_empty() -> Self {
3858 Self::default()
3859 }
3860
3861 unsafe fn decode(
3862 &mut self,
3863 decoder: &mut fidl::encoding::Decoder<
3864 '_,
3865 fidl::encoding::DefaultFuchsiaResourceDialect,
3866 >,
3867 offset: usize,
3868 mut depth: fidl::encoding::Depth,
3869 ) -> fidl::Result<()> {
3870 decoder.debug_check_bounds::<Self>(offset);
3871 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
3872 None => return Err(fidl::Error::NotNullable),
3873 Some(len) => len,
3874 };
3875 if len == 0 {
3877 return Ok(());
3878 };
3879 depth.increment()?;
3880 let envelope_size = 8;
3881 let bytes_len = len * envelope_size;
3882 let offset = decoder.out_of_line_offset(bytes_len)?;
3883 let mut _next_ordinal_to_read = 0;
3885 let mut next_offset = offset;
3886 let end_offset = offset + bytes_len;
3887 _next_ordinal_to_read += 1;
3888 if next_offset >= end_offset {
3889 return Ok(());
3890 }
3891
3892 while _next_ordinal_to_read < 1 {
3894 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3895 _next_ordinal_to_read += 1;
3896 next_offset += envelope_size;
3897 }
3898
3899 let next_out_of_line = decoder.next_out_of_line();
3900 let handles_before = decoder.remaining_handles();
3901 if let Some((inlined, num_bytes, num_handles)) =
3902 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3903 {
3904 let member_inline_size = <fidl::encoding::HandleType<
3905 fidl::Vmo,
3906 { fidl::ObjectType::VMO.into_raw() },
3907 2147483648,
3908 > as fidl::encoding::TypeMarker>::inline_size(
3909 decoder.context
3910 );
3911 if inlined != (member_inline_size <= 4) {
3912 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3913 }
3914 let inner_offset;
3915 let mut inner_depth = depth.clone();
3916 if inlined {
3917 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3918 inner_offset = next_offset;
3919 } else {
3920 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3921 inner_depth.increment()?;
3922 }
3923 let val_ref =
3924 self.vmo.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::HandleType<fidl::Vmo, { fidl::ObjectType::VMO.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect));
3925 fidl::decode!(fidl::encoding::HandleType<fidl::Vmo, { fidl::ObjectType::VMO.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect, val_ref, decoder, inner_offset, inner_depth)?;
3926 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3927 {
3928 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3929 }
3930 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3931 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3932 }
3933 }
3934
3935 next_offset += envelope_size;
3936
3937 while next_offset < end_offset {
3939 _next_ordinal_to_read += 1;
3940 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3941 next_offset += envelope_size;
3942 }
3943
3944 Ok(())
3945 }
3946 }
3947}