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