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 ManagerCreatePagerRequest {
16 pub backing_vmo: Option<fidl::Vmo>,
18 pub block_size: Option<u64>,
20 pub pager: Option<fidl::endpoints::ServerEnd<PagerMarker>>,
22 #[doc(hidden)]
23 pub __source_breaking: fidl::marker::SourceBreaking,
24}
25
26impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect> for ManagerCreatePagerRequest {}
27
28#[derive(Debug, Default, PartialEq)]
29pub struct ManagerProxyWakeChannelRequest {
30 pub container_job: Option<fidl::Job>,
32 pub container_channel: Option<fidl::Channel>,
34 pub remote_channel: Option<fidl::Channel>,
36 pub name: Option<String>,
38 pub counter: Option<fidl::Counter>,
46 #[doc(hidden)]
47 pub __source_breaking: fidl::marker::SourceBreaking,
48}
49
50impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect>
51 for ManagerProxyWakeChannelRequest
52{
53}
54
55#[derive(Debug, Default, PartialEq)]
56pub struct ManagerRegisterWakeWatcherRequest {
57 pub watcher: Option<fidl::EventPair>,
59 #[doc(hidden)]
60 pub __source_breaking: fidl::marker::SourceBreaking,
61}
62
63impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect>
64 for ManagerRegisterWakeWatcherRequest
65{
66}
67
68#[derive(Debug, Default, PartialEq)]
69pub struct ManagerSuspendContainerRequest {
70 pub container_job: Option<fidl::Job>,
72 pub wake_locks: Option<fidl::EventPair>,
75 #[doc(hidden)]
76 pub __source_breaking: fidl::marker::SourceBreaking,
77}
78
79impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect>
80 for ManagerSuspendContainerRequest
81{
82}
83
84#[derive(Debug, Default, PartialEq)]
85pub struct PagerRegisterFileResponse {
86 pub vmo: Option<fidl::Vmo>,
88 #[doc(hidden)]
89 pub __source_breaking: fidl::marker::SourceBreaking,
90}
91
92impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect> for PagerRegisterFileResponse {}
93
94#[derive(Debug, Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash)]
95pub struct ManagerMarker;
96
97impl fidl::endpoints::ProtocolMarker for ManagerMarker {
98 type Proxy = ManagerProxy;
99 type RequestStream = ManagerRequestStream;
100 #[cfg(target_os = "fuchsia")]
101 type SynchronousProxy = ManagerSynchronousProxy;
102
103 const DEBUG_NAME: &'static str = "fuchsia.starnix.runner.Manager";
104}
105impl fidl::endpoints::DiscoverableProtocolMarker for ManagerMarker {}
106pub type ManagerSuspendContainerResult = Result<ManagerSuspendContainerResponse, SuspendError>;
107
108pub trait ManagerProxyInterface: Send + Sync {
109 type SuspendContainerResponseFut: std::future::Future<Output = Result<ManagerSuspendContainerResult, fidl::Error>>
110 + Send;
111 fn r#suspend_container(
112 &self,
113 payload: ManagerSuspendContainerRequest,
114 ) -> Self::SuspendContainerResponseFut;
115 fn r#proxy_wake_channel(
116 &self,
117 payload: ManagerProxyWakeChannelRequest,
118 ) -> Result<(), fidl::Error>;
119 type RegisterWakeWatcherResponseFut: std::future::Future<Output = Result<(), fidl::Error>>
120 + Send;
121 fn r#register_wake_watcher(
122 &self,
123 payload: ManagerRegisterWakeWatcherRequest,
124 ) -> Self::RegisterWakeWatcherResponseFut;
125 fn r#create_pager(&self, payload: ManagerCreatePagerRequest) -> Result<(), fidl::Error>;
126}
127#[derive(Debug)]
128#[cfg(target_os = "fuchsia")]
129pub struct ManagerSynchronousProxy {
130 client: fidl::client::sync::Client,
131}
132
133#[cfg(target_os = "fuchsia")]
134impl fidl::endpoints::SynchronousProxy for ManagerSynchronousProxy {
135 type Proxy = ManagerProxy;
136 type Protocol = ManagerMarker;
137
138 fn from_channel(inner: fidl::Channel) -> Self {
139 Self::new(inner)
140 }
141
142 fn into_channel(self) -> fidl::Channel {
143 self.client.into_channel()
144 }
145
146 fn as_channel(&self) -> &fidl::Channel {
147 self.client.as_channel()
148 }
149}
150
151#[cfg(target_os = "fuchsia")]
152impl ManagerSynchronousProxy {
153 pub fn new(channel: fidl::Channel) -> Self {
154 let protocol_name = <ManagerMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
155 Self { client: fidl::client::sync::Client::new(channel, protocol_name) }
156 }
157
158 pub fn into_channel(self) -> fidl::Channel {
159 self.client.into_channel()
160 }
161
162 pub fn wait_for_event(
165 &self,
166 deadline: zx::MonotonicInstant,
167 ) -> Result<ManagerEvent, fidl::Error> {
168 ManagerEvent::decode(self.client.wait_for_event(deadline)?)
169 }
170
171 pub fn r#suspend_container(
177 &self,
178 mut payload: ManagerSuspendContainerRequest,
179 ___deadline: zx::MonotonicInstant,
180 ) -> Result<ManagerSuspendContainerResult, fidl::Error> {
181 let _response = self.client.send_query::<
182 ManagerSuspendContainerRequest,
183 fidl::encoding::FlexibleResultType<ManagerSuspendContainerResponse, SuspendError>,
184 >(
185 &mut payload,
186 0x928527927c9f2a7,
187 fidl::encoding::DynamicFlags::FLEXIBLE,
188 ___deadline,
189 )?
190 .into_result::<ManagerMarker>("suspend_container")?;
191 Ok(_response.map(|x| x))
192 }
193
194 pub fn r#proxy_wake_channel(
203 &self,
204 mut payload: ManagerProxyWakeChannelRequest,
205 ) -> Result<(), fidl::Error> {
206 self.client.send::<ManagerProxyWakeChannelRequest>(
207 &mut payload,
208 0x46a374ab73b23714,
209 fidl::encoding::DynamicFlags::FLEXIBLE,
210 )
211 }
212
213 pub fn r#register_wake_watcher(
218 &self,
219 mut payload: ManagerRegisterWakeWatcherRequest,
220 ___deadline: zx::MonotonicInstant,
221 ) -> Result<(), fidl::Error> {
222 let _response = self.client.send_query::<
223 ManagerRegisterWakeWatcherRequest,
224 fidl::encoding::FlexibleType<fidl::encoding::EmptyStruct>,
225 >(
226 &mut payload,
227 0x456d74519eb65b41,
228 fidl::encoding::DynamicFlags::FLEXIBLE,
229 ___deadline,
230 )?
231 .into_result::<ManagerMarker>("register_wake_watcher")?;
232 Ok(_response)
233 }
234
235 pub fn r#create_pager(
237 &self,
238 mut payload: ManagerCreatePagerRequest,
239 ) -> Result<(), fidl::Error> {
240 self.client.send::<ManagerCreatePagerRequest>(
241 &mut payload,
242 0x49d14958b736198b,
243 fidl::encoding::DynamicFlags::FLEXIBLE,
244 )
245 }
246}
247
248#[cfg(target_os = "fuchsia")]
249impl From<ManagerSynchronousProxy> for zx::Handle {
250 fn from(value: ManagerSynchronousProxy) -> Self {
251 value.into_channel().into()
252 }
253}
254
255#[cfg(target_os = "fuchsia")]
256impl From<fidl::Channel> for ManagerSynchronousProxy {
257 fn from(value: fidl::Channel) -> Self {
258 Self::new(value)
259 }
260}
261
262#[cfg(target_os = "fuchsia")]
263impl fidl::endpoints::FromClient for ManagerSynchronousProxy {
264 type Protocol = ManagerMarker;
265
266 fn from_client(value: fidl::endpoints::ClientEnd<ManagerMarker>) -> Self {
267 Self::new(value.into_channel())
268 }
269}
270
271#[derive(Debug, Clone)]
272pub struct ManagerProxy {
273 client: fidl::client::Client<fidl::encoding::DefaultFuchsiaResourceDialect>,
274}
275
276impl fidl::endpoints::Proxy for ManagerProxy {
277 type Protocol = ManagerMarker;
278
279 fn from_channel(inner: ::fidl::AsyncChannel) -> Self {
280 Self::new(inner)
281 }
282
283 fn into_channel(self) -> Result<::fidl::AsyncChannel, Self> {
284 self.client.into_channel().map_err(|client| Self { client })
285 }
286
287 fn as_channel(&self) -> &::fidl::AsyncChannel {
288 self.client.as_channel()
289 }
290}
291
292impl ManagerProxy {
293 pub fn new(channel: ::fidl::AsyncChannel) -> Self {
295 let protocol_name = <ManagerMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
296 Self { client: fidl::client::Client::new(channel, protocol_name) }
297 }
298
299 pub fn take_event_stream(&self) -> ManagerEventStream {
305 ManagerEventStream { event_receiver: self.client.take_event_receiver() }
306 }
307
308 pub fn r#suspend_container(
314 &self,
315 mut payload: ManagerSuspendContainerRequest,
316 ) -> fidl::client::QueryResponseFut<
317 ManagerSuspendContainerResult,
318 fidl::encoding::DefaultFuchsiaResourceDialect,
319 > {
320 ManagerProxyInterface::r#suspend_container(self, payload)
321 }
322
323 pub fn r#proxy_wake_channel(
332 &self,
333 mut payload: ManagerProxyWakeChannelRequest,
334 ) -> Result<(), fidl::Error> {
335 ManagerProxyInterface::r#proxy_wake_channel(self, payload)
336 }
337
338 pub fn r#register_wake_watcher(
343 &self,
344 mut payload: ManagerRegisterWakeWatcherRequest,
345 ) -> fidl::client::QueryResponseFut<(), fidl::encoding::DefaultFuchsiaResourceDialect> {
346 ManagerProxyInterface::r#register_wake_watcher(self, payload)
347 }
348
349 pub fn r#create_pager(
351 &self,
352 mut payload: ManagerCreatePagerRequest,
353 ) -> Result<(), fidl::Error> {
354 ManagerProxyInterface::r#create_pager(self, payload)
355 }
356}
357
358impl ManagerProxyInterface for ManagerProxy {
359 type SuspendContainerResponseFut = fidl::client::QueryResponseFut<
360 ManagerSuspendContainerResult,
361 fidl::encoding::DefaultFuchsiaResourceDialect,
362 >;
363 fn r#suspend_container(
364 &self,
365 mut payload: ManagerSuspendContainerRequest,
366 ) -> Self::SuspendContainerResponseFut {
367 fn _decode(
368 mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
369 ) -> Result<ManagerSuspendContainerResult, fidl::Error> {
370 let _response = fidl::client::decode_transaction_body::<
371 fidl::encoding::FlexibleResultType<ManagerSuspendContainerResponse, SuspendError>,
372 fidl::encoding::DefaultFuchsiaResourceDialect,
373 0x928527927c9f2a7,
374 >(_buf?)?
375 .into_result::<ManagerMarker>("suspend_container")?;
376 Ok(_response.map(|x| x))
377 }
378 self.client
379 .send_query_and_decode::<ManagerSuspendContainerRequest, ManagerSuspendContainerResult>(
380 &mut payload,
381 0x928527927c9f2a7,
382 fidl::encoding::DynamicFlags::FLEXIBLE,
383 _decode,
384 )
385 }
386
387 fn r#proxy_wake_channel(
388 &self,
389 mut payload: ManagerProxyWakeChannelRequest,
390 ) -> Result<(), fidl::Error> {
391 self.client.send::<ManagerProxyWakeChannelRequest>(
392 &mut payload,
393 0x46a374ab73b23714,
394 fidl::encoding::DynamicFlags::FLEXIBLE,
395 )
396 }
397
398 type RegisterWakeWatcherResponseFut =
399 fidl::client::QueryResponseFut<(), fidl::encoding::DefaultFuchsiaResourceDialect>;
400 fn r#register_wake_watcher(
401 &self,
402 mut payload: ManagerRegisterWakeWatcherRequest,
403 ) -> Self::RegisterWakeWatcherResponseFut {
404 fn _decode(
405 mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
406 ) -> Result<(), fidl::Error> {
407 let _response = fidl::client::decode_transaction_body::<
408 fidl::encoding::FlexibleType<fidl::encoding::EmptyStruct>,
409 fidl::encoding::DefaultFuchsiaResourceDialect,
410 0x456d74519eb65b41,
411 >(_buf?)?
412 .into_result::<ManagerMarker>("register_wake_watcher")?;
413 Ok(_response)
414 }
415 self.client.send_query_and_decode::<ManagerRegisterWakeWatcherRequest, ()>(
416 &mut payload,
417 0x456d74519eb65b41,
418 fidl::encoding::DynamicFlags::FLEXIBLE,
419 _decode,
420 )
421 }
422
423 fn r#create_pager(&self, mut payload: ManagerCreatePagerRequest) -> Result<(), fidl::Error> {
424 self.client.send::<ManagerCreatePagerRequest>(
425 &mut payload,
426 0x49d14958b736198b,
427 fidl::encoding::DynamicFlags::FLEXIBLE,
428 )
429 }
430}
431
432pub struct ManagerEventStream {
433 event_receiver: fidl::client::EventReceiver<fidl::encoding::DefaultFuchsiaResourceDialect>,
434}
435
436impl std::marker::Unpin for ManagerEventStream {}
437
438impl futures::stream::FusedStream for ManagerEventStream {
439 fn is_terminated(&self) -> bool {
440 self.event_receiver.is_terminated()
441 }
442}
443
444impl futures::Stream for ManagerEventStream {
445 type Item = Result<ManagerEvent, fidl::Error>;
446
447 fn poll_next(
448 mut self: std::pin::Pin<&mut Self>,
449 cx: &mut std::task::Context<'_>,
450 ) -> std::task::Poll<Option<Self::Item>> {
451 match futures::ready!(futures::stream::StreamExt::poll_next_unpin(
452 &mut self.event_receiver,
453 cx
454 )?) {
455 Some(buf) => std::task::Poll::Ready(Some(ManagerEvent::decode(buf))),
456 None => std::task::Poll::Ready(None),
457 }
458 }
459}
460
461#[derive(Debug)]
462pub enum ManagerEvent {
463 #[non_exhaustive]
464 _UnknownEvent {
465 ordinal: u64,
467 },
468}
469
470impl ManagerEvent {
471 fn decode(
473 mut buf: <fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc,
474 ) -> Result<ManagerEvent, fidl::Error> {
475 let (bytes, _handles) = buf.split_mut();
476 let (tx_header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
477 debug_assert_eq!(tx_header.tx_id, 0);
478 match tx_header.ordinal {
479 _ if tx_header.dynamic_flags().contains(fidl::encoding::DynamicFlags::FLEXIBLE) => {
480 Ok(ManagerEvent::_UnknownEvent { ordinal: tx_header.ordinal })
481 }
482 _ => Err(fidl::Error::UnknownOrdinal {
483 ordinal: tx_header.ordinal,
484 protocol_name: <ManagerMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
485 }),
486 }
487 }
488}
489
490pub struct ManagerRequestStream {
492 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
493 is_terminated: bool,
494}
495
496impl std::marker::Unpin for ManagerRequestStream {}
497
498impl futures::stream::FusedStream for ManagerRequestStream {
499 fn is_terminated(&self) -> bool {
500 self.is_terminated
501 }
502}
503
504impl fidl::endpoints::RequestStream for ManagerRequestStream {
505 type Protocol = ManagerMarker;
506 type ControlHandle = ManagerControlHandle;
507
508 fn from_channel(channel: ::fidl::AsyncChannel) -> Self {
509 Self { inner: std::sync::Arc::new(fidl::ServeInner::new(channel)), is_terminated: false }
510 }
511
512 fn control_handle(&self) -> Self::ControlHandle {
513 ManagerControlHandle { inner: self.inner.clone() }
514 }
515
516 fn into_inner(
517 self,
518 ) -> (::std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>, bool)
519 {
520 (self.inner, self.is_terminated)
521 }
522
523 fn from_inner(
524 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
525 is_terminated: bool,
526 ) -> Self {
527 Self { inner, is_terminated }
528 }
529}
530
531impl futures::Stream for ManagerRequestStream {
532 type Item = Result<ManagerRequest, fidl::Error>;
533
534 fn poll_next(
535 mut self: std::pin::Pin<&mut Self>,
536 cx: &mut std::task::Context<'_>,
537 ) -> std::task::Poll<Option<Self::Item>> {
538 let this = &mut *self;
539 if this.inner.check_shutdown(cx) {
540 this.is_terminated = true;
541 return std::task::Poll::Ready(None);
542 }
543 if this.is_terminated {
544 panic!("polled ManagerRequestStream after completion");
545 }
546 fidl::encoding::with_tls_decode_buf::<_, fidl::encoding::DefaultFuchsiaResourceDialect>(
547 |bytes, handles| {
548 match this.inner.channel().read_etc(cx, bytes, handles) {
549 std::task::Poll::Ready(Ok(())) => {}
550 std::task::Poll::Pending => return std::task::Poll::Pending,
551 std::task::Poll::Ready(Err(zx_status::Status::PEER_CLOSED)) => {
552 this.is_terminated = true;
553 return std::task::Poll::Ready(None);
554 }
555 std::task::Poll::Ready(Err(e)) => {
556 return std::task::Poll::Ready(Some(Err(fidl::Error::ServerRequestRead(
557 e.into(),
558 ))))
559 }
560 }
561
562 let (header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
564
565 std::task::Poll::Ready(Some(match header.ordinal {
566 0x928527927c9f2a7 => {
567 header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
568 let mut req = fidl::new_empty!(
569 ManagerSuspendContainerRequest,
570 fidl::encoding::DefaultFuchsiaResourceDialect
571 );
572 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<ManagerSuspendContainerRequest>(&header, _body_bytes, handles, &mut req)?;
573 let control_handle = ManagerControlHandle { inner: this.inner.clone() };
574 Ok(ManagerRequest::SuspendContainer {
575 payload: req,
576 responder: ManagerSuspendContainerResponder {
577 control_handle: std::mem::ManuallyDrop::new(control_handle),
578 tx_id: header.tx_id,
579 },
580 })
581 }
582 0x46a374ab73b23714 => {
583 header.validate_request_tx_id(fidl::MethodType::OneWay)?;
584 let mut req = fidl::new_empty!(
585 ManagerProxyWakeChannelRequest,
586 fidl::encoding::DefaultFuchsiaResourceDialect
587 );
588 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<ManagerProxyWakeChannelRequest>(&header, _body_bytes, handles, &mut req)?;
589 let control_handle = ManagerControlHandle { inner: this.inner.clone() };
590 Ok(ManagerRequest::ProxyWakeChannel { payload: req, control_handle })
591 }
592 0x456d74519eb65b41 => {
593 header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
594 let mut req = fidl::new_empty!(
595 ManagerRegisterWakeWatcherRequest,
596 fidl::encoding::DefaultFuchsiaResourceDialect
597 );
598 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<ManagerRegisterWakeWatcherRequest>(&header, _body_bytes, handles, &mut req)?;
599 let control_handle = ManagerControlHandle { inner: this.inner.clone() };
600 Ok(ManagerRequest::RegisterWakeWatcher {
601 payload: req,
602 responder: ManagerRegisterWakeWatcherResponder {
603 control_handle: std::mem::ManuallyDrop::new(control_handle),
604 tx_id: header.tx_id,
605 },
606 })
607 }
608 0x49d14958b736198b => {
609 header.validate_request_tx_id(fidl::MethodType::OneWay)?;
610 let mut req = fidl::new_empty!(
611 ManagerCreatePagerRequest,
612 fidl::encoding::DefaultFuchsiaResourceDialect
613 );
614 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<ManagerCreatePagerRequest>(&header, _body_bytes, handles, &mut req)?;
615 let control_handle = ManagerControlHandle { inner: this.inner.clone() };
616 Ok(ManagerRequest::CreatePager { payload: req, control_handle })
617 }
618 _ if header.tx_id == 0
619 && header
620 .dynamic_flags()
621 .contains(fidl::encoding::DynamicFlags::FLEXIBLE) =>
622 {
623 Ok(ManagerRequest::_UnknownMethod {
624 ordinal: header.ordinal,
625 control_handle: ManagerControlHandle { inner: this.inner.clone() },
626 method_type: fidl::MethodType::OneWay,
627 })
628 }
629 _ if header
630 .dynamic_flags()
631 .contains(fidl::encoding::DynamicFlags::FLEXIBLE) =>
632 {
633 this.inner.send_framework_err(
634 fidl::encoding::FrameworkErr::UnknownMethod,
635 header.tx_id,
636 header.ordinal,
637 header.dynamic_flags(),
638 (bytes, handles),
639 )?;
640 Ok(ManagerRequest::_UnknownMethod {
641 ordinal: header.ordinal,
642 control_handle: ManagerControlHandle { inner: this.inner.clone() },
643 method_type: fidl::MethodType::TwoWay,
644 })
645 }
646 _ => Err(fidl::Error::UnknownOrdinal {
647 ordinal: header.ordinal,
648 protocol_name:
649 <ManagerMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
650 }),
651 }))
652 },
653 )
654 }
655}
656
657#[derive(Debug)]
658pub enum ManagerRequest {
659 SuspendContainer {
665 payload: ManagerSuspendContainerRequest,
666 responder: ManagerSuspendContainerResponder,
667 },
668 ProxyWakeChannel {
677 payload: ManagerProxyWakeChannelRequest,
678 control_handle: ManagerControlHandle,
679 },
680 RegisterWakeWatcher {
685 payload: ManagerRegisterWakeWatcherRequest,
686 responder: ManagerRegisterWakeWatcherResponder,
687 },
688 CreatePager { payload: ManagerCreatePagerRequest, control_handle: ManagerControlHandle },
690 #[non_exhaustive]
692 _UnknownMethod {
693 ordinal: u64,
695 control_handle: ManagerControlHandle,
696 method_type: fidl::MethodType,
697 },
698}
699
700impl ManagerRequest {
701 #[allow(irrefutable_let_patterns)]
702 pub fn into_suspend_container(
703 self,
704 ) -> Option<(ManagerSuspendContainerRequest, ManagerSuspendContainerResponder)> {
705 if let ManagerRequest::SuspendContainer { payload, responder } = self {
706 Some((payload, responder))
707 } else {
708 None
709 }
710 }
711
712 #[allow(irrefutable_let_patterns)]
713 pub fn into_proxy_wake_channel(
714 self,
715 ) -> Option<(ManagerProxyWakeChannelRequest, ManagerControlHandle)> {
716 if let ManagerRequest::ProxyWakeChannel { payload, control_handle } = self {
717 Some((payload, control_handle))
718 } else {
719 None
720 }
721 }
722
723 #[allow(irrefutable_let_patterns)]
724 pub fn into_register_wake_watcher(
725 self,
726 ) -> Option<(ManagerRegisterWakeWatcherRequest, ManagerRegisterWakeWatcherResponder)> {
727 if let ManagerRequest::RegisterWakeWatcher { payload, responder } = self {
728 Some((payload, responder))
729 } else {
730 None
731 }
732 }
733
734 #[allow(irrefutable_let_patterns)]
735 pub fn into_create_pager(self) -> Option<(ManagerCreatePagerRequest, ManagerControlHandle)> {
736 if let ManagerRequest::CreatePager { payload, control_handle } = self {
737 Some((payload, control_handle))
738 } else {
739 None
740 }
741 }
742
743 pub fn method_name(&self) -> &'static str {
745 match *self {
746 ManagerRequest::SuspendContainer { .. } => "suspend_container",
747 ManagerRequest::ProxyWakeChannel { .. } => "proxy_wake_channel",
748 ManagerRequest::RegisterWakeWatcher { .. } => "register_wake_watcher",
749 ManagerRequest::CreatePager { .. } => "create_pager",
750 ManagerRequest::_UnknownMethod { method_type: fidl::MethodType::OneWay, .. } => {
751 "unknown one-way method"
752 }
753 ManagerRequest::_UnknownMethod { method_type: fidl::MethodType::TwoWay, .. } => {
754 "unknown two-way method"
755 }
756 }
757 }
758}
759
760#[derive(Debug, Clone)]
761pub struct ManagerControlHandle {
762 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
763}
764
765impl fidl::endpoints::ControlHandle for ManagerControlHandle {
766 fn shutdown(&self) {
767 self.inner.shutdown()
768 }
769 fn shutdown_with_epitaph(&self, status: zx_status::Status) {
770 self.inner.shutdown_with_epitaph(status)
771 }
772
773 fn is_closed(&self) -> bool {
774 self.inner.channel().is_closed()
775 }
776 fn on_closed(&self) -> fidl::OnSignalsRef<'_> {
777 self.inner.channel().on_closed()
778 }
779
780 #[cfg(target_os = "fuchsia")]
781 fn signal_peer(
782 &self,
783 clear_mask: zx::Signals,
784 set_mask: zx::Signals,
785 ) -> Result<(), zx_status::Status> {
786 use fidl::Peered;
787 self.inner.channel().signal_peer(clear_mask, set_mask)
788 }
789}
790
791impl ManagerControlHandle {}
792
793#[must_use = "FIDL methods require a response to be sent"]
794#[derive(Debug)]
795pub struct ManagerSuspendContainerResponder {
796 control_handle: std::mem::ManuallyDrop<ManagerControlHandle>,
797 tx_id: u32,
798}
799
800impl std::ops::Drop for ManagerSuspendContainerResponder {
804 fn drop(&mut self) {
805 self.control_handle.shutdown();
806 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
808 }
809}
810
811impl fidl::endpoints::Responder for ManagerSuspendContainerResponder {
812 type ControlHandle = ManagerControlHandle;
813
814 fn control_handle(&self) -> &ManagerControlHandle {
815 &self.control_handle
816 }
817
818 fn drop_without_shutdown(mut self) {
819 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
821 std::mem::forget(self);
823 }
824}
825
826impl ManagerSuspendContainerResponder {
827 pub fn send(
831 self,
832 mut result: Result<&ManagerSuspendContainerResponse, SuspendError>,
833 ) -> Result<(), fidl::Error> {
834 let _result = self.send_raw(result);
835 if _result.is_err() {
836 self.control_handle.shutdown();
837 }
838 self.drop_without_shutdown();
839 _result
840 }
841
842 pub fn send_no_shutdown_on_err(
844 self,
845 mut result: Result<&ManagerSuspendContainerResponse, SuspendError>,
846 ) -> Result<(), fidl::Error> {
847 let _result = self.send_raw(result);
848 self.drop_without_shutdown();
849 _result
850 }
851
852 fn send_raw(
853 &self,
854 mut result: Result<&ManagerSuspendContainerResponse, SuspendError>,
855 ) -> Result<(), fidl::Error> {
856 self.control_handle.inner.send::<fidl::encoding::FlexibleResultType<
857 ManagerSuspendContainerResponse,
858 SuspendError,
859 >>(
860 fidl::encoding::FlexibleResult::new(result),
861 self.tx_id,
862 0x928527927c9f2a7,
863 fidl::encoding::DynamicFlags::FLEXIBLE,
864 )
865 }
866}
867
868#[must_use = "FIDL methods require a response to be sent"]
869#[derive(Debug)]
870pub struct ManagerRegisterWakeWatcherResponder {
871 control_handle: std::mem::ManuallyDrop<ManagerControlHandle>,
872 tx_id: u32,
873}
874
875impl std::ops::Drop for ManagerRegisterWakeWatcherResponder {
879 fn drop(&mut self) {
880 self.control_handle.shutdown();
881 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
883 }
884}
885
886impl fidl::endpoints::Responder for ManagerRegisterWakeWatcherResponder {
887 type ControlHandle = ManagerControlHandle;
888
889 fn control_handle(&self) -> &ManagerControlHandle {
890 &self.control_handle
891 }
892
893 fn drop_without_shutdown(mut self) {
894 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
896 std::mem::forget(self);
898 }
899}
900
901impl ManagerRegisterWakeWatcherResponder {
902 pub fn send(self) -> Result<(), fidl::Error> {
906 let _result = self.send_raw();
907 if _result.is_err() {
908 self.control_handle.shutdown();
909 }
910 self.drop_without_shutdown();
911 _result
912 }
913
914 pub fn send_no_shutdown_on_err(self) -> Result<(), fidl::Error> {
916 let _result = self.send_raw();
917 self.drop_without_shutdown();
918 _result
919 }
920
921 fn send_raw(&self) -> Result<(), fidl::Error> {
922 self.control_handle.inner.send::<fidl::encoding::FlexibleType<fidl::encoding::EmptyStruct>>(
923 fidl::encoding::Flexible::new(()),
924 self.tx_id,
925 0x456d74519eb65b41,
926 fidl::encoding::DynamicFlags::FLEXIBLE,
927 )
928 }
929}
930
931#[derive(Debug, Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash)]
932pub struct PagerMarker;
933
934impl fidl::endpoints::ProtocolMarker for PagerMarker {
935 type Proxy = PagerProxy;
936 type RequestStream = PagerRequestStream;
937 #[cfg(target_os = "fuchsia")]
938 type SynchronousProxy = PagerSynchronousProxy;
939
940 const DEBUG_NAME: &'static str = "(anonymous) Pager";
941}
942pub type PagerRegisterFileResult = Result<PagerRegisterFileResponse, i32>;
943
944pub trait PagerProxyInterface: Send + Sync {
945 type RegisterFileResponseFut: std::future::Future<Output = Result<PagerRegisterFileResult, fidl::Error>>
946 + Send;
947 fn r#register_file(&self, payload: &PagerRegisterFileRequest) -> Self::RegisterFileResponseFut;
948}
949#[derive(Debug)]
950#[cfg(target_os = "fuchsia")]
951pub struct PagerSynchronousProxy {
952 client: fidl::client::sync::Client,
953}
954
955#[cfg(target_os = "fuchsia")]
956impl fidl::endpoints::SynchronousProxy for PagerSynchronousProxy {
957 type Proxy = PagerProxy;
958 type Protocol = PagerMarker;
959
960 fn from_channel(inner: fidl::Channel) -> Self {
961 Self::new(inner)
962 }
963
964 fn into_channel(self) -> fidl::Channel {
965 self.client.into_channel()
966 }
967
968 fn as_channel(&self) -> &fidl::Channel {
969 self.client.as_channel()
970 }
971}
972
973#[cfg(target_os = "fuchsia")]
974impl PagerSynchronousProxy {
975 pub fn new(channel: fidl::Channel) -> Self {
976 let protocol_name = <PagerMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
977 Self { client: fidl::client::sync::Client::new(channel, protocol_name) }
978 }
979
980 pub fn into_channel(self) -> fidl::Channel {
981 self.client.into_channel()
982 }
983
984 pub fn wait_for_event(
987 &self,
988 deadline: zx::MonotonicInstant,
989 ) -> Result<PagerEvent, fidl::Error> {
990 PagerEvent::decode(self.client.wait_for_event(deadline)?)
991 }
992
993 pub fn r#register_file(
995 &self,
996 mut payload: &PagerRegisterFileRequest,
997 ___deadline: zx::MonotonicInstant,
998 ) -> Result<PagerRegisterFileResult, fidl::Error> {
999 let _response = self.client.send_query::<
1000 PagerRegisterFileRequest,
1001 fidl::encoding::FlexibleResultType<PagerRegisterFileResponse, i32>,
1002 >(
1003 payload,
1004 0x4f85a2ce6cae4aed,
1005 fidl::encoding::DynamicFlags::FLEXIBLE,
1006 ___deadline,
1007 )?
1008 .into_result::<PagerMarker>("register_file")?;
1009 Ok(_response.map(|x| x))
1010 }
1011}
1012
1013#[cfg(target_os = "fuchsia")]
1014impl From<PagerSynchronousProxy> for zx::Handle {
1015 fn from(value: PagerSynchronousProxy) -> Self {
1016 value.into_channel().into()
1017 }
1018}
1019
1020#[cfg(target_os = "fuchsia")]
1021impl From<fidl::Channel> for PagerSynchronousProxy {
1022 fn from(value: fidl::Channel) -> Self {
1023 Self::new(value)
1024 }
1025}
1026
1027#[cfg(target_os = "fuchsia")]
1028impl fidl::endpoints::FromClient for PagerSynchronousProxy {
1029 type Protocol = PagerMarker;
1030
1031 fn from_client(value: fidl::endpoints::ClientEnd<PagerMarker>) -> Self {
1032 Self::new(value.into_channel())
1033 }
1034}
1035
1036#[derive(Debug, Clone)]
1037pub struct PagerProxy {
1038 client: fidl::client::Client<fidl::encoding::DefaultFuchsiaResourceDialect>,
1039}
1040
1041impl fidl::endpoints::Proxy for PagerProxy {
1042 type Protocol = PagerMarker;
1043
1044 fn from_channel(inner: ::fidl::AsyncChannel) -> Self {
1045 Self::new(inner)
1046 }
1047
1048 fn into_channel(self) -> Result<::fidl::AsyncChannel, Self> {
1049 self.client.into_channel().map_err(|client| Self { client })
1050 }
1051
1052 fn as_channel(&self) -> &::fidl::AsyncChannel {
1053 self.client.as_channel()
1054 }
1055}
1056
1057impl PagerProxy {
1058 pub fn new(channel: ::fidl::AsyncChannel) -> Self {
1060 let protocol_name = <PagerMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
1061 Self { client: fidl::client::Client::new(channel, protocol_name) }
1062 }
1063
1064 pub fn take_event_stream(&self) -> PagerEventStream {
1070 PagerEventStream { event_receiver: self.client.take_event_receiver() }
1071 }
1072
1073 pub fn r#register_file(
1075 &self,
1076 mut payload: &PagerRegisterFileRequest,
1077 ) -> fidl::client::QueryResponseFut<
1078 PagerRegisterFileResult,
1079 fidl::encoding::DefaultFuchsiaResourceDialect,
1080 > {
1081 PagerProxyInterface::r#register_file(self, payload)
1082 }
1083}
1084
1085impl PagerProxyInterface for PagerProxy {
1086 type RegisterFileResponseFut = fidl::client::QueryResponseFut<
1087 PagerRegisterFileResult,
1088 fidl::encoding::DefaultFuchsiaResourceDialect,
1089 >;
1090 fn r#register_file(
1091 &self,
1092 mut payload: &PagerRegisterFileRequest,
1093 ) -> Self::RegisterFileResponseFut {
1094 fn _decode(
1095 mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
1096 ) -> Result<PagerRegisterFileResult, fidl::Error> {
1097 let _response = fidl::client::decode_transaction_body::<
1098 fidl::encoding::FlexibleResultType<PagerRegisterFileResponse, i32>,
1099 fidl::encoding::DefaultFuchsiaResourceDialect,
1100 0x4f85a2ce6cae4aed,
1101 >(_buf?)?
1102 .into_result::<PagerMarker>("register_file")?;
1103 Ok(_response.map(|x| x))
1104 }
1105 self.client.send_query_and_decode::<PagerRegisterFileRequest, PagerRegisterFileResult>(
1106 payload,
1107 0x4f85a2ce6cae4aed,
1108 fidl::encoding::DynamicFlags::FLEXIBLE,
1109 _decode,
1110 )
1111 }
1112}
1113
1114pub struct PagerEventStream {
1115 event_receiver: fidl::client::EventReceiver<fidl::encoding::DefaultFuchsiaResourceDialect>,
1116}
1117
1118impl std::marker::Unpin for PagerEventStream {}
1119
1120impl futures::stream::FusedStream for PagerEventStream {
1121 fn is_terminated(&self) -> bool {
1122 self.event_receiver.is_terminated()
1123 }
1124}
1125
1126impl futures::Stream for PagerEventStream {
1127 type Item = Result<PagerEvent, fidl::Error>;
1128
1129 fn poll_next(
1130 mut self: std::pin::Pin<&mut Self>,
1131 cx: &mut std::task::Context<'_>,
1132 ) -> std::task::Poll<Option<Self::Item>> {
1133 match futures::ready!(futures::stream::StreamExt::poll_next_unpin(
1134 &mut self.event_receiver,
1135 cx
1136 )?) {
1137 Some(buf) => std::task::Poll::Ready(Some(PagerEvent::decode(buf))),
1138 None => std::task::Poll::Ready(None),
1139 }
1140 }
1141}
1142
1143#[derive(Debug)]
1144pub enum PagerEvent {
1145 #[non_exhaustive]
1146 _UnknownEvent {
1147 ordinal: u64,
1149 },
1150}
1151
1152impl PagerEvent {
1153 fn decode(
1155 mut buf: <fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc,
1156 ) -> Result<PagerEvent, fidl::Error> {
1157 let (bytes, _handles) = buf.split_mut();
1158 let (tx_header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
1159 debug_assert_eq!(tx_header.tx_id, 0);
1160 match tx_header.ordinal {
1161 _ if tx_header.dynamic_flags().contains(fidl::encoding::DynamicFlags::FLEXIBLE) => {
1162 Ok(PagerEvent::_UnknownEvent { ordinal: tx_header.ordinal })
1163 }
1164 _ => Err(fidl::Error::UnknownOrdinal {
1165 ordinal: tx_header.ordinal,
1166 protocol_name: <PagerMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
1167 }),
1168 }
1169 }
1170}
1171
1172pub struct PagerRequestStream {
1174 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
1175 is_terminated: bool,
1176}
1177
1178impl std::marker::Unpin for PagerRequestStream {}
1179
1180impl futures::stream::FusedStream for PagerRequestStream {
1181 fn is_terminated(&self) -> bool {
1182 self.is_terminated
1183 }
1184}
1185
1186impl fidl::endpoints::RequestStream for PagerRequestStream {
1187 type Protocol = PagerMarker;
1188 type ControlHandle = PagerControlHandle;
1189
1190 fn from_channel(channel: ::fidl::AsyncChannel) -> Self {
1191 Self { inner: std::sync::Arc::new(fidl::ServeInner::new(channel)), is_terminated: false }
1192 }
1193
1194 fn control_handle(&self) -> Self::ControlHandle {
1195 PagerControlHandle { inner: self.inner.clone() }
1196 }
1197
1198 fn into_inner(
1199 self,
1200 ) -> (::std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>, bool)
1201 {
1202 (self.inner, self.is_terminated)
1203 }
1204
1205 fn from_inner(
1206 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
1207 is_terminated: bool,
1208 ) -> Self {
1209 Self { inner, is_terminated }
1210 }
1211}
1212
1213impl futures::Stream for PagerRequestStream {
1214 type Item = Result<PagerRequest, fidl::Error>;
1215
1216 fn poll_next(
1217 mut self: std::pin::Pin<&mut Self>,
1218 cx: &mut std::task::Context<'_>,
1219 ) -> std::task::Poll<Option<Self::Item>> {
1220 let this = &mut *self;
1221 if this.inner.check_shutdown(cx) {
1222 this.is_terminated = true;
1223 return std::task::Poll::Ready(None);
1224 }
1225 if this.is_terminated {
1226 panic!("polled PagerRequestStream after completion");
1227 }
1228 fidl::encoding::with_tls_decode_buf::<_, fidl::encoding::DefaultFuchsiaResourceDialect>(
1229 |bytes, handles| {
1230 match this.inner.channel().read_etc(cx, bytes, handles) {
1231 std::task::Poll::Ready(Ok(())) => {}
1232 std::task::Poll::Pending => return std::task::Poll::Pending,
1233 std::task::Poll::Ready(Err(zx_status::Status::PEER_CLOSED)) => {
1234 this.is_terminated = true;
1235 return std::task::Poll::Ready(None);
1236 }
1237 std::task::Poll::Ready(Err(e)) => {
1238 return std::task::Poll::Ready(Some(Err(fidl::Error::ServerRequestRead(
1239 e.into(),
1240 ))))
1241 }
1242 }
1243
1244 let (header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
1246
1247 std::task::Poll::Ready(Some(match header.ordinal {
1248 0x4f85a2ce6cae4aed => {
1249 header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
1250 let mut req = fidl::new_empty!(
1251 PagerRegisterFileRequest,
1252 fidl::encoding::DefaultFuchsiaResourceDialect
1253 );
1254 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<PagerRegisterFileRequest>(&header, _body_bytes, handles, &mut req)?;
1255 let control_handle = PagerControlHandle { inner: this.inner.clone() };
1256 Ok(PagerRequest::RegisterFile {
1257 payload: req,
1258 responder: PagerRegisterFileResponder {
1259 control_handle: std::mem::ManuallyDrop::new(control_handle),
1260 tx_id: header.tx_id,
1261 },
1262 })
1263 }
1264 _ if header.tx_id == 0
1265 && header
1266 .dynamic_flags()
1267 .contains(fidl::encoding::DynamicFlags::FLEXIBLE) =>
1268 {
1269 Ok(PagerRequest::_UnknownMethod {
1270 ordinal: header.ordinal,
1271 control_handle: PagerControlHandle { inner: this.inner.clone() },
1272 method_type: fidl::MethodType::OneWay,
1273 })
1274 }
1275 _ if header
1276 .dynamic_flags()
1277 .contains(fidl::encoding::DynamicFlags::FLEXIBLE) =>
1278 {
1279 this.inner.send_framework_err(
1280 fidl::encoding::FrameworkErr::UnknownMethod,
1281 header.tx_id,
1282 header.ordinal,
1283 header.dynamic_flags(),
1284 (bytes, handles),
1285 )?;
1286 Ok(PagerRequest::_UnknownMethod {
1287 ordinal: header.ordinal,
1288 control_handle: PagerControlHandle { inner: this.inner.clone() },
1289 method_type: fidl::MethodType::TwoWay,
1290 })
1291 }
1292 _ => Err(fidl::Error::UnknownOrdinal {
1293 ordinal: header.ordinal,
1294 protocol_name: <PagerMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
1295 }),
1296 }))
1297 },
1298 )
1299 }
1300}
1301
1302#[derive(Debug)]
1303pub enum PagerRequest {
1304 RegisterFile { payload: PagerRegisterFileRequest, responder: PagerRegisterFileResponder },
1306 #[non_exhaustive]
1308 _UnknownMethod {
1309 ordinal: u64,
1311 control_handle: PagerControlHandle,
1312 method_type: fidl::MethodType,
1313 },
1314}
1315
1316impl PagerRequest {
1317 #[allow(irrefutable_let_patterns)]
1318 pub fn into_register_file(
1319 self,
1320 ) -> Option<(PagerRegisterFileRequest, PagerRegisterFileResponder)> {
1321 if let PagerRequest::RegisterFile { payload, responder } = self {
1322 Some((payload, responder))
1323 } else {
1324 None
1325 }
1326 }
1327
1328 pub fn method_name(&self) -> &'static str {
1330 match *self {
1331 PagerRequest::RegisterFile { .. } => "register_file",
1332 PagerRequest::_UnknownMethod { method_type: fidl::MethodType::OneWay, .. } => {
1333 "unknown one-way method"
1334 }
1335 PagerRequest::_UnknownMethod { method_type: fidl::MethodType::TwoWay, .. } => {
1336 "unknown two-way method"
1337 }
1338 }
1339 }
1340}
1341
1342#[derive(Debug, Clone)]
1343pub struct PagerControlHandle {
1344 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
1345}
1346
1347impl fidl::endpoints::ControlHandle for PagerControlHandle {
1348 fn shutdown(&self) {
1349 self.inner.shutdown()
1350 }
1351 fn shutdown_with_epitaph(&self, status: zx_status::Status) {
1352 self.inner.shutdown_with_epitaph(status)
1353 }
1354
1355 fn is_closed(&self) -> bool {
1356 self.inner.channel().is_closed()
1357 }
1358 fn on_closed(&self) -> fidl::OnSignalsRef<'_> {
1359 self.inner.channel().on_closed()
1360 }
1361
1362 #[cfg(target_os = "fuchsia")]
1363 fn signal_peer(
1364 &self,
1365 clear_mask: zx::Signals,
1366 set_mask: zx::Signals,
1367 ) -> Result<(), zx_status::Status> {
1368 use fidl::Peered;
1369 self.inner.channel().signal_peer(clear_mask, set_mask)
1370 }
1371}
1372
1373impl PagerControlHandle {}
1374
1375#[must_use = "FIDL methods require a response to be sent"]
1376#[derive(Debug)]
1377pub struct PagerRegisterFileResponder {
1378 control_handle: std::mem::ManuallyDrop<PagerControlHandle>,
1379 tx_id: u32,
1380}
1381
1382impl std::ops::Drop for PagerRegisterFileResponder {
1386 fn drop(&mut self) {
1387 self.control_handle.shutdown();
1388 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
1390 }
1391}
1392
1393impl fidl::endpoints::Responder for PagerRegisterFileResponder {
1394 type ControlHandle = PagerControlHandle;
1395
1396 fn control_handle(&self) -> &PagerControlHandle {
1397 &self.control_handle
1398 }
1399
1400 fn drop_without_shutdown(mut self) {
1401 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
1403 std::mem::forget(self);
1405 }
1406}
1407
1408impl PagerRegisterFileResponder {
1409 pub fn send(
1413 self,
1414 mut result: Result<PagerRegisterFileResponse, i32>,
1415 ) -> Result<(), fidl::Error> {
1416 let _result = self.send_raw(result);
1417 if _result.is_err() {
1418 self.control_handle.shutdown();
1419 }
1420 self.drop_without_shutdown();
1421 _result
1422 }
1423
1424 pub fn send_no_shutdown_on_err(
1426 self,
1427 mut result: Result<PagerRegisterFileResponse, i32>,
1428 ) -> Result<(), fidl::Error> {
1429 let _result = self.send_raw(result);
1430 self.drop_without_shutdown();
1431 _result
1432 }
1433
1434 fn send_raw(
1435 &self,
1436 mut result: Result<PagerRegisterFileResponse, i32>,
1437 ) -> Result<(), fidl::Error> {
1438 self.control_handle
1439 .inner
1440 .send::<fidl::encoding::FlexibleResultType<PagerRegisterFileResponse, i32>>(
1441 fidl::encoding::FlexibleResult::new(result.as_mut().map_err(|e| *e)),
1442 self.tx_id,
1443 0x4f85a2ce6cae4aed,
1444 fidl::encoding::DynamicFlags::FLEXIBLE,
1445 )
1446 }
1447}
1448
1449mod internal {
1450 use super::*;
1451
1452 impl ManagerCreatePagerRequest {
1453 #[inline(always)]
1454 fn max_ordinal_present(&self) -> u64 {
1455 if let Some(_) = self.pager {
1456 return 3;
1457 }
1458 if let Some(_) = self.block_size {
1459 return 2;
1460 }
1461 if let Some(_) = self.backing_vmo {
1462 return 1;
1463 }
1464 0
1465 }
1466 }
1467
1468 impl fidl::encoding::ResourceTypeMarker for ManagerCreatePagerRequest {
1469 type Borrowed<'a> = &'a mut Self;
1470 fn take_or_borrow<'a>(
1471 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
1472 ) -> Self::Borrowed<'a> {
1473 value
1474 }
1475 }
1476
1477 unsafe impl fidl::encoding::TypeMarker for ManagerCreatePagerRequest {
1478 type Owned = Self;
1479
1480 #[inline(always)]
1481 fn inline_align(_context: fidl::encoding::Context) -> usize {
1482 8
1483 }
1484
1485 #[inline(always)]
1486 fn inline_size(_context: fidl::encoding::Context) -> usize {
1487 16
1488 }
1489 }
1490
1491 unsafe impl
1492 fidl::encoding::Encode<
1493 ManagerCreatePagerRequest,
1494 fidl::encoding::DefaultFuchsiaResourceDialect,
1495 > for &mut ManagerCreatePagerRequest
1496 {
1497 unsafe fn encode(
1498 self,
1499 encoder: &mut fidl::encoding::Encoder<
1500 '_,
1501 fidl::encoding::DefaultFuchsiaResourceDialect,
1502 >,
1503 offset: usize,
1504 mut depth: fidl::encoding::Depth,
1505 ) -> fidl::Result<()> {
1506 encoder.debug_check_bounds::<ManagerCreatePagerRequest>(offset);
1507 let max_ordinal: u64 = self.max_ordinal_present();
1509 encoder.write_num(max_ordinal, offset);
1510 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
1511 if max_ordinal == 0 {
1513 return Ok(());
1514 }
1515 depth.increment()?;
1516 let envelope_size = 8;
1517 let bytes_len = max_ordinal as usize * envelope_size;
1518 #[allow(unused_variables)]
1519 let offset = encoder.out_of_line_offset(bytes_len);
1520 let mut _prev_end_offset: usize = 0;
1521 if 1 > max_ordinal {
1522 return Ok(());
1523 }
1524
1525 let cur_offset: usize = (1 - 1) * envelope_size;
1528
1529 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1531
1532 fidl::encoding::encode_in_envelope_optional::<
1537 fidl::encoding::HandleType<
1538 fidl::Vmo,
1539 { fidl::ObjectType::VMO.into_raw() },
1540 2147483648,
1541 >,
1542 fidl::encoding::DefaultFuchsiaResourceDialect,
1543 >(
1544 self.backing_vmo.as_mut().map(
1545 <fidl::encoding::HandleType<
1546 fidl::Vmo,
1547 { fidl::ObjectType::VMO.into_raw() },
1548 2147483648,
1549 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow,
1550 ),
1551 encoder,
1552 offset + cur_offset,
1553 depth,
1554 )?;
1555
1556 _prev_end_offset = cur_offset + envelope_size;
1557 if 2 > max_ordinal {
1558 return Ok(());
1559 }
1560
1561 let cur_offset: usize = (2 - 1) * envelope_size;
1564
1565 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1567
1568 fidl::encoding::encode_in_envelope_optional::<
1573 u64,
1574 fidl::encoding::DefaultFuchsiaResourceDialect,
1575 >(
1576 self.block_size.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
1577 encoder,
1578 offset + cur_offset,
1579 depth,
1580 )?;
1581
1582 _prev_end_offset = cur_offset + envelope_size;
1583 if 3 > max_ordinal {
1584 return Ok(());
1585 }
1586
1587 let cur_offset: usize = (3 - 1) * envelope_size;
1590
1591 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1593
1594 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<PagerMarker>>, fidl::encoding::DefaultFuchsiaResourceDialect>(
1599 self.pager.as_mut().map(<fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<PagerMarker>> as fidl::encoding::ResourceTypeMarker>::take_or_borrow),
1600 encoder, offset + cur_offset, depth
1601 )?;
1602
1603 _prev_end_offset = cur_offset + envelope_size;
1604
1605 Ok(())
1606 }
1607 }
1608
1609 impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
1610 for ManagerCreatePagerRequest
1611 {
1612 #[inline(always)]
1613 fn new_empty() -> Self {
1614 Self::default()
1615 }
1616
1617 unsafe fn decode(
1618 &mut self,
1619 decoder: &mut fidl::encoding::Decoder<
1620 '_,
1621 fidl::encoding::DefaultFuchsiaResourceDialect,
1622 >,
1623 offset: usize,
1624 mut depth: fidl::encoding::Depth,
1625 ) -> fidl::Result<()> {
1626 decoder.debug_check_bounds::<Self>(offset);
1627 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
1628 None => return Err(fidl::Error::NotNullable),
1629 Some(len) => len,
1630 };
1631 if len == 0 {
1633 return Ok(());
1634 };
1635 depth.increment()?;
1636 let envelope_size = 8;
1637 let bytes_len = len * envelope_size;
1638 let offset = decoder.out_of_line_offset(bytes_len)?;
1639 let mut _next_ordinal_to_read = 0;
1641 let mut next_offset = offset;
1642 let end_offset = offset + bytes_len;
1643 _next_ordinal_to_read += 1;
1644 if next_offset >= end_offset {
1645 return Ok(());
1646 }
1647
1648 while _next_ordinal_to_read < 1 {
1650 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1651 _next_ordinal_to_read += 1;
1652 next_offset += envelope_size;
1653 }
1654
1655 let next_out_of_line = decoder.next_out_of_line();
1656 let handles_before = decoder.remaining_handles();
1657 if let Some((inlined, num_bytes, num_handles)) =
1658 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1659 {
1660 let member_inline_size = <fidl::encoding::HandleType<
1661 fidl::Vmo,
1662 { fidl::ObjectType::VMO.into_raw() },
1663 2147483648,
1664 > as fidl::encoding::TypeMarker>::inline_size(
1665 decoder.context
1666 );
1667 if inlined != (member_inline_size <= 4) {
1668 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1669 }
1670 let inner_offset;
1671 let mut inner_depth = depth.clone();
1672 if inlined {
1673 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1674 inner_offset = next_offset;
1675 } else {
1676 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1677 inner_depth.increment()?;
1678 }
1679 let val_ref =
1680 self.backing_vmo.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::HandleType<fidl::Vmo, { fidl::ObjectType::VMO.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect));
1681 fidl::decode!(fidl::encoding::HandleType<fidl::Vmo, { fidl::ObjectType::VMO.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect, val_ref, decoder, inner_offset, inner_depth)?;
1682 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1683 {
1684 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1685 }
1686 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1687 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1688 }
1689 }
1690
1691 next_offset += envelope_size;
1692 _next_ordinal_to_read += 1;
1693 if next_offset >= end_offset {
1694 return Ok(());
1695 }
1696
1697 while _next_ordinal_to_read < 2 {
1699 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1700 _next_ordinal_to_read += 1;
1701 next_offset += envelope_size;
1702 }
1703
1704 let next_out_of_line = decoder.next_out_of_line();
1705 let handles_before = decoder.remaining_handles();
1706 if let Some((inlined, num_bytes, num_handles)) =
1707 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1708 {
1709 let member_inline_size =
1710 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1711 if inlined != (member_inline_size <= 4) {
1712 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1713 }
1714 let inner_offset;
1715 let mut inner_depth = depth.clone();
1716 if inlined {
1717 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1718 inner_offset = next_offset;
1719 } else {
1720 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1721 inner_depth.increment()?;
1722 }
1723 let val_ref = self.block_size.get_or_insert_with(|| {
1724 fidl::new_empty!(u64, fidl::encoding::DefaultFuchsiaResourceDialect)
1725 });
1726 fidl::decode!(
1727 u64,
1728 fidl::encoding::DefaultFuchsiaResourceDialect,
1729 val_ref,
1730 decoder,
1731 inner_offset,
1732 inner_depth
1733 )?;
1734 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1735 {
1736 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1737 }
1738 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1739 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1740 }
1741 }
1742
1743 next_offset += envelope_size;
1744 _next_ordinal_to_read += 1;
1745 if next_offset >= end_offset {
1746 return Ok(());
1747 }
1748
1749 while _next_ordinal_to_read < 3 {
1751 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1752 _next_ordinal_to_read += 1;
1753 next_offset += envelope_size;
1754 }
1755
1756 let next_out_of_line = decoder.next_out_of_line();
1757 let handles_before = decoder.remaining_handles();
1758 if let Some((inlined, num_bytes, num_handles)) =
1759 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1760 {
1761 let member_inline_size = <fidl::encoding::Endpoint<
1762 fidl::endpoints::ServerEnd<PagerMarker>,
1763 > as fidl::encoding::TypeMarker>::inline_size(
1764 decoder.context
1765 );
1766 if inlined != (member_inline_size <= 4) {
1767 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1768 }
1769 let inner_offset;
1770 let mut inner_depth = depth.clone();
1771 if inlined {
1772 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1773 inner_offset = next_offset;
1774 } else {
1775 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1776 inner_depth.increment()?;
1777 }
1778 let val_ref = self.pager.get_or_insert_with(|| {
1779 fidl::new_empty!(
1780 fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<PagerMarker>>,
1781 fidl::encoding::DefaultFuchsiaResourceDialect
1782 )
1783 });
1784 fidl::decode!(
1785 fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<PagerMarker>>,
1786 fidl::encoding::DefaultFuchsiaResourceDialect,
1787 val_ref,
1788 decoder,
1789 inner_offset,
1790 inner_depth
1791 )?;
1792 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1793 {
1794 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1795 }
1796 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1797 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1798 }
1799 }
1800
1801 next_offset += envelope_size;
1802
1803 while next_offset < end_offset {
1805 _next_ordinal_to_read += 1;
1806 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1807 next_offset += envelope_size;
1808 }
1809
1810 Ok(())
1811 }
1812 }
1813
1814 impl ManagerProxyWakeChannelRequest {
1815 #[inline(always)]
1816 fn max_ordinal_present(&self) -> u64 {
1817 if let Some(_) = self.counter {
1818 return 5;
1819 }
1820 if let Some(_) = self.name {
1821 return 4;
1822 }
1823 if let Some(_) = self.remote_channel {
1824 return 3;
1825 }
1826 if let Some(_) = self.container_channel {
1827 return 2;
1828 }
1829 if let Some(_) = self.container_job {
1830 return 1;
1831 }
1832 0
1833 }
1834 }
1835
1836 impl fidl::encoding::ResourceTypeMarker for ManagerProxyWakeChannelRequest {
1837 type Borrowed<'a> = &'a mut Self;
1838 fn take_or_borrow<'a>(
1839 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
1840 ) -> Self::Borrowed<'a> {
1841 value
1842 }
1843 }
1844
1845 unsafe impl fidl::encoding::TypeMarker for ManagerProxyWakeChannelRequest {
1846 type Owned = Self;
1847
1848 #[inline(always)]
1849 fn inline_align(_context: fidl::encoding::Context) -> usize {
1850 8
1851 }
1852
1853 #[inline(always)]
1854 fn inline_size(_context: fidl::encoding::Context) -> usize {
1855 16
1856 }
1857 }
1858
1859 unsafe impl
1860 fidl::encoding::Encode<
1861 ManagerProxyWakeChannelRequest,
1862 fidl::encoding::DefaultFuchsiaResourceDialect,
1863 > for &mut ManagerProxyWakeChannelRequest
1864 {
1865 unsafe fn encode(
1866 self,
1867 encoder: &mut fidl::encoding::Encoder<
1868 '_,
1869 fidl::encoding::DefaultFuchsiaResourceDialect,
1870 >,
1871 offset: usize,
1872 mut depth: fidl::encoding::Depth,
1873 ) -> fidl::Result<()> {
1874 encoder.debug_check_bounds::<ManagerProxyWakeChannelRequest>(offset);
1875 let max_ordinal: u64 = self.max_ordinal_present();
1877 encoder.write_num(max_ordinal, offset);
1878 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
1879 if max_ordinal == 0 {
1881 return Ok(());
1882 }
1883 depth.increment()?;
1884 let envelope_size = 8;
1885 let bytes_len = max_ordinal as usize * envelope_size;
1886 #[allow(unused_variables)]
1887 let offset = encoder.out_of_line_offset(bytes_len);
1888 let mut _prev_end_offset: usize = 0;
1889 if 1 > max_ordinal {
1890 return Ok(());
1891 }
1892
1893 let cur_offset: usize = (1 - 1) * envelope_size;
1896
1897 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1899
1900 fidl::encoding::encode_in_envelope_optional::<
1905 fidl::encoding::HandleType<
1906 fidl::Job,
1907 { fidl::ObjectType::JOB.into_raw() },
1908 2147483648,
1909 >,
1910 fidl::encoding::DefaultFuchsiaResourceDialect,
1911 >(
1912 self.container_job.as_mut().map(
1913 <fidl::encoding::HandleType<
1914 fidl::Job,
1915 { fidl::ObjectType::JOB.into_raw() },
1916 2147483648,
1917 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow,
1918 ),
1919 encoder,
1920 offset + cur_offset,
1921 depth,
1922 )?;
1923
1924 _prev_end_offset = cur_offset + envelope_size;
1925 if 2 > max_ordinal {
1926 return Ok(());
1927 }
1928
1929 let cur_offset: usize = (2 - 1) * envelope_size;
1932
1933 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1935
1936 fidl::encoding::encode_in_envelope_optional::<
1941 fidl::encoding::HandleType<
1942 fidl::Channel,
1943 { fidl::ObjectType::CHANNEL.into_raw() },
1944 2147483648,
1945 >,
1946 fidl::encoding::DefaultFuchsiaResourceDialect,
1947 >(
1948 self.container_channel.as_mut().map(
1949 <fidl::encoding::HandleType<
1950 fidl::Channel,
1951 { fidl::ObjectType::CHANNEL.into_raw() },
1952 2147483648,
1953 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow,
1954 ),
1955 encoder,
1956 offset + cur_offset,
1957 depth,
1958 )?;
1959
1960 _prev_end_offset = cur_offset + envelope_size;
1961 if 3 > max_ordinal {
1962 return Ok(());
1963 }
1964
1965 let cur_offset: usize = (3 - 1) * envelope_size;
1968
1969 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1971
1972 fidl::encoding::encode_in_envelope_optional::<
1977 fidl::encoding::HandleType<
1978 fidl::Channel,
1979 { fidl::ObjectType::CHANNEL.into_raw() },
1980 2147483648,
1981 >,
1982 fidl::encoding::DefaultFuchsiaResourceDialect,
1983 >(
1984 self.remote_channel.as_mut().map(
1985 <fidl::encoding::HandleType<
1986 fidl::Channel,
1987 { fidl::ObjectType::CHANNEL.into_raw() },
1988 2147483648,
1989 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow,
1990 ),
1991 encoder,
1992 offset + cur_offset,
1993 depth,
1994 )?;
1995
1996 _prev_end_offset = cur_offset + envelope_size;
1997 if 4 > max_ordinal {
1998 return Ok(());
1999 }
2000
2001 let cur_offset: usize = (4 - 1) * envelope_size;
2004
2005 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2007
2008 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<1024>, fidl::encoding::DefaultFuchsiaResourceDialect>(
2013 self.name.as_ref().map(<fidl::encoding::BoundedString<1024> as fidl::encoding::ValueTypeMarker>::borrow),
2014 encoder, offset + cur_offset, depth
2015 )?;
2016
2017 _prev_end_offset = cur_offset + envelope_size;
2018 if 5 > max_ordinal {
2019 return Ok(());
2020 }
2021
2022 let cur_offset: usize = (5 - 1) * envelope_size;
2025
2026 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2028
2029 fidl::encoding::encode_in_envelope_optional::<
2034 fidl::encoding::HandleType<
2035 fidl::Counter,
2036 { fidl::ObjectType::COUNTER.into_raw() },
2037 2147483648,
2038 >,
2039 fidl::encoding::DefaultFuchsiaResourceDialect,
2040 >(
2041 self.counter.as_mut().map(
2042 <fidl::encoding::HandleType<
2043 fidl::Counter,
2044 { fidl::ObjectType::COUNTER.into_raw() },
2045 2147483648,
2046 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow,
2047 ),
2048 encoder,
2049 offset + cur_offset,
2050 depth,
2051 )?;
2052
2053 _prev_end_offset = cur_offset + envelope_size;
2054
2055 Ok(())
2056 }
2057 }
2058
2059 impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
2060 for ManagerProxyWakeChannelRequest
2061 {
2062 #[inline(always)]
2063 fn new_empty() -> Self {
2064 Self::default()
2065 }
2066
2067 unsafe fn decode(
2068 &mut self,
2069 decoder: &mut fidl::encoding::Decoder<
2070 '_,
2071 fidl::encoding::DefaultFuchsiaResourceDialect,
2072 >,
2073 offset: usize,
2074 mut depth: fidl::encoding::Depth,
2075 ) -> fidl::Result<()> {
2076 decoder.debug_check_bounds::<Self>(offset);
2077 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
2078 None => return Err(fidl::Error::NotNullable),
2079 Some(len) => len,
2080 };
2081 if len == 0 {
2083 return Ok(());
2084 };
2085 depth.increment()?;
2086 let envelope_size = 8;
2087 let bytes_len = len * envelope_size;
2088 let offset = decoder.out_of_line_offset(bytes_len)?;
2089 let mut _next_ordinal_to_read = 0;
2091 let mut next_offset = offset;
2092 let end_offset = offset + bytes_len;
2093 _next_ordinal_to_read += 1;
2094 if next_offset >= end_offset {
2095 return Ok(());
2096 }
2097
2098 while _next_ordinal_to_read < 1 {
2100 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2101 _next_ordinal_to_read += 1;
2102 next_offset += envelope_size;
2103 }
2104
2105 let next_out_of_line = decoder.next_out_of_line();
2106 let handles_before = decoder.remaining_handles();
2107 if let Some((inlined, num_bytes, num_handles)) =
2108 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2109 {
2110 let member_inline_size = <fidl::encoding::HandleType<
2111 fidl::Job,
2112 { fidl::ObjectType::JOB.into_raw() },
2113 2147483648,
2114 > as fidl::encoding::TypeMarker>::inline_size(
2115 decoder.context
2116 );
2117 if inlined != (member_inline_size <= 4) {
2118 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2119 }
2120 let inner_offset;
2121 let mut inner_depth = depth.clone();
2122 if inlined {
2123 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2124 inner_offset = next_offset;
2125 } else {
2126 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2127 inner_depth.increment()?;
2128 }
2129 let val_ref =
2130 self.container_job.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::HandleType<fidl::Job, { fidl::ObjectType::JOB.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect));
2131 fidl::decode!(fidl::encoding::HandleType<fidl::Job, { fidl::ObjectType::JOB.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect, val_ref, decoder, inner_offset, inner_depth)?;
2132 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2133 {
2134 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2135 }
2136 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2137 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2138 }
2139 }
2140
2141 next_offset += envelope_size;
2142 _next_ordinal_to_read += 1;
2143 if next_offset >= end_offset {
2144 return Ok(());
2145 }
2146
2147 while _next_ordinal_to_read < 2 {
2149 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2150 _next_ordinal_to_read += 1;
2151 next_offset += envelope_size;
2152 }
2153
2154 let next_out_of_line = decoder.next_out_of_line();
2155 let handles_before = decoder.remaining_handles();
2156 if let Some((inlined, num_bytes, num_handles)) =
2157 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2158 {
2159 let member_inline_size = <fidl::encoding::HandleType<
2160 fidl::Channel,
2161 { fidl::ObjectType::CHANNEL.into_raw() },
2162 2147483648,
2163 > as fidl::encoding::TypeMarker>::inline_size(
2164 decoder.context
2165 );
2166 if inlined != (member_inline_size <= 4) {
2167 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2168 }
2169 let inner_offset;
2170 let mut inner_depth = depth.clone();
2171 if inlined {
2172 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2173 inner_offset = next_offset;
2174 } else {
2175 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2176 inner_depth.increment()?;
2177 }
2178 let val_ref =
2179 self.container_channel.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::HandleType<fidl::Channel, { fidl::ObjectType::CHANNEL.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect));
2180 fidl::decode!(fidl::encoding::HandleType<fidl::Channel, { fidl::ObjectType::CHANNEL.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect, val_ref, decoder, inner_offset, inner_depth)?;
2181 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2182 {
2183 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2184 }
2185 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2186 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2187 }
2188 }
2189
2190 next_offset += envelope_size;
2191 _next_ordinal_to_read += 1;
2192 if next_offset >= end_offset {
2193 return Ok(());
2194 }
2195
2196 while _next_ordinal_to_read < 3 {
2198 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2199 _next_ordinal_to_read += 1;
2200 next_offset += envelope_size;
2201 }
2202
2203 let next_out_of_line = decoder.next_out_of_line();
2204 let handles_before = decoder.remaining_handles();
2205 if let Some((inlined, num_bytes, num_handles)) =
2206 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2207 {
2208 let member_inline_size = <fidl::encoding::HandleType<
2209 fidl::Channel,
2210 { fidl::ObjectType::CHANNEL.into_raw() },
2211 2147483648,
2212 > as fidl::encoding::TypeMarker>::inline_size(
2213 decoder.context
2214 );
2215 if inlined != (member_inline_size <= 4) {
2216 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2217 }
2218 let inner_offset;
2219 let mut inner_depth = depth.clone();
2220 if inlined {
2221 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2222 inner_offset = next_offset;
2223 } else {
2224 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2225 inner_depth.increment()?;
2226 }
2227 let val_ref =
2228 self.remote_channel.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::HandleType<fidl::Channel, { fidl::ObjectType::CHANNEL.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect));
2229 fidl::decode!(fidl::encoding::HandleType<fidl::Channel, { fidl::ObjectType::CHANNEL.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect, val_ref, decoder, inner_offset, inner_depth)?;
2230 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2231 {
2232 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2233 }
2234 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2235 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2236 }
2237 }
2238
2239 next_offset += envelope_size;
2240 _next_ordinal_to_read += 1;
2241 if next_offset >= end_offset {
2242 return Ok(());
2243 }
2244
2245 while _next_ordinal_to_read < 4 {
2247 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2248 _next_ordinal_to_read += 1;
2249 next_offset += envelope_size;
2250 }
2251
2252 let next_out_of_line = decoder.next_out_of_line();
2253 let handles_before = decoder.remaining_handles();
2254 if let Some((inlined, num_bytes, num_handles)) =
2255 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2256 {
2257 let member_inline_size = <fidl::encoding::BoundedString<1024> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2258 if inlined != (member_inline_size <= 4) {
2259 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2260 }
2261 let inner_offset;
2262 let mut inner_depth = depth.clone();
2263 if inlined {
2264 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2265 inner_offset = next_offset;
2266 } else {
2267 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2268 inner_depth.increment()?;
2269 }
2270 let val_ref = self.name.get_or_insert_with(|| {
2271 fidl::new_empty!(
2272 fidl::encoding::BoundedString<1024>,
2273 fidl::encoding::DefaultFuchsiaResourceDialect
2274 )
2275 });
2276 fidl::decode!(
2277 fidl::encoding::BoundedString<1024>,
2278 fidl::encoding::DefaultFuchsiaResourceDialect,
2279 val_ref,
2280 decoder,
2281 inner_offset,
2282 inner_depth
2283 )?;
2284 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2285 {
2286 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2287 }
2288 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2289 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2290 }
2291 }
2292
2293 next_offset += envelope_size;
2294 _next_ordinal_to_read += 1;
2295 if next_offset >= end_offset {
2296 return Ok(());
2297 }
2298
2299 while _next_ordinal_to_read < 5 {
2301 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2302 _next_ordinal_to_read += 1;
2303 next_offset += envelope_size;
2304 }
2305
2306 let next_out_of_line = decoder.next_out_of_line();
2307 let handles_before = decoder.remaining_handles();
2308 if let Some((inlined, num_bytes, num_handles)) =
2309 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2310 {
2311 let member_inline_size = <fidl::encoding::HandleType<
2312 fidl::Counter,
2313 { fidl::ObjectType::COUNTER.into_raw() },
2314 2147483648,
2315 > as fidl::encoding::TypeMarker>::inline_size(
2316 decoder.context
2317 );
2318 if inlined != (member_inline_size <= 4) {
2319 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2320 }
2321 let inner_offset;
2322 let mut inner_depth = depth.clone();
2323 if inlined {
2324 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2325 inner_offset = next_offset;
2326 } else {
2327 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2328 inner_depth.increment()?;
2329 }
2330 let val_ref =
2331 self.counter.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::HandleType<fidl::Counter, { fidl::ObjectType::COUNTER.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect));
2332 fidl::decode!(fidl::encoding::HandleType<fidl::Counter, { fidl::ObjectType::COUNTER.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect, val_ref, decoder, inner_offset, inner_depth)?;
2333 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2334 {
2335 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2336 }
2337 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2338 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2339 }
2340 }
2341
2342 next_offset += envelope_size;
2343
2344 while next_offset < end_offset {
2346 _next_ordinal_to_read += 1;
2347 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2348 next_offset += envelope_size;
2349 }
2350
2351 Ok(())
2352 }
2353 }
2354
2355 impl ManagerRegisterWakeWatcherRequest {
2356 #[inline(always)]
2357 fn max_ordinal_present(&self) -> u64 {
2358 if let Some(_) = self.watcher {
2359 return 1;
2360 }
2361 0
2362 }
2363 }
2364
2365 impl fidl::encoding::ResourceTypeMarker for ManagerRegisterWakeWatcherRequest {
2366 type Borrowed<'a> = &'a mut Self;
2367 fn take_or_borrow<'a>(
2368 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
2369 ) -> Self::Borrowed<'a> {
2370 value
2371 }
2372 }
2373
2374 unsafe impl fidl::encoding::TypeMarker for ManagerRegisterWakeWatcherRequest {
2375 type Owned = Self;
2376
2377 #[inline(always)]
2378 fn inline_align(_context: fidl::encoding::Context) -> usize {
2379 8
2380 }
2381
2382 #[inline(always)]
2383 fn inline_size(_context: fidl::encoding::Context) -> usize {
2384 16
2385 }
2386 }
2387
2388 unsafe impl
2389 fidl::encoding::Encode<
2390 ManagerRegisterWakeWatcherRequest,
2391 fidl::encoding::DefaultFuchsiaResourceDialect,
2392 > for &mut ManagerRegisterWakeWatcherRequest
2393 {
2394 unsafe fn encode(
2395 self,
2396 encoder: &mut fidl::encoding::Encoder<
2397 '_,
2398 fidl::encoding::DefaultFuchsiaResourceDialect,
2399 >,
2400 offset: usize,
2401 mut depth: fidl::encoding::Depth,
2402 ) -> fidl::Result<()> {
2403 encoder.debug_check_bounds::<ManagerRegisterWakeWatcherRequest>(offset);
2404 let max_ordinal: u64 = self.max_ordinal_present();
2406 encoder.write_num(max_ordinal, offset);
2407 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
2408 if max_ordinal == 0 {
2410 return Ok(());
2411 }
2412 depth.increment()?;
2413 let envelope_size = 8;
2414 let bytes_len = max_ordinal as usize * envelope_size;
2415 #[allow(unused_variables)]
2416 let offset = encoder.out_of_line_offset(bytes_len);
2417 let mut _prev_end_offset: usize = 0;
2418 if 1 > max_ordinal {
2419 return Ok(());
2420 }
2421
2422 let cur_offset: usize = (1 - 1) * envelope_size;
2425
2426 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2428
2429 fidl::encoding::encode_in_envelope_optional::<
2434 fidl::encoding::HandleType<
2435 fidl::EventPair,
2436 { fidl::ObjectType::EVENTPAIR.into_raw() },
2437 2147483648,
2438 >,
2439 fidl::encoding::DefaultFuchsiaResourceDialect,
2440 >(
2441 self.watcher.as_mut().map(
2442 <fidl::encoding::HandleType<
2443 fidl::EventPair,
2444 { fidl::ObjectType::EVENTPAIR.into_raw() },
2445 2147483648,
2446 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow,
2447 ),
2448 encoder,
2449 offset + cur_offset,
2450 depth,
2451 )?;
2452
2453 _prev_end_offset = cur_offset + envelope_size;
2454
2455 Ok(())
2456 }
2457 }
2458
2459 impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
2460 for ManagerRegisterWakeWatcherRequest
2461 {
2462 #[inline(always)]
2463 fn new_empty() -> Self {
2464 Self::default()
2465 }
2466
2467 unsafe fn decode(
2468 &mut self,
2469 decoder: &mut fidl::encoding::Decoder<
2470 '_,
2471 fidl::encoding::DefaultFuchsiaResourceDialect,
2472 >,
2473 offset: usize,
2474 mut depth: fidl::encoding::Depth,
2475 ) -> fidl::Result<()> {
2476 decoder.debug_check_bounds::<Self>(offset);
2477 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
2478 None => return Err(fidl::Error::NotNullable),
2479 Some(len) => len,
2480 };
2481 if len == 0 {
2483 return Ok(());
2484 };
2485 depth.increment()?;
2486 let envelope_size = 8;
2487 let bytes_len = len * envelope_size;
2488 let offset = decoder.out_of_line_offset(bytes_len)?;
2489 let mut _next_ordinal_to_read = 0;
2491 let mut next_offset = offset;
2492 let end_offset = offset + bytes_len;
2493 _next_ordinal_to_read += 1;
2494 if next_offset >= end_offset {
2495 return Ok(());
2496 }
2497
2498 while _next_ordinal_to_read < 1 {
2500 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2501 _next_ordinal_to_read += 1;
2502 next_offset += envelope_size;
2503 }
2504
2505 let next_out_of_line = decoder.next_out_of_line();
2506 let handles_before = decoder.remaining_handles();
2507 if let Some((inlined, num_bytes, num_handles)) =
2508 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2509 {
2510 let member_inline_size = <fidl::encoding::HandleType<
2511 fidl::EventPair,
2512 { fidl::ObjectType::EVENTPAIR.into_raw() },
2513 2147483648,
2514 > as fidl::encoding::TypeMarker>::inline_size(
2515 decoder.context
2516 );
2517 if inlined != (member_inline_size <= 4) {
2518 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2519 }
2520 let inner_offset;
2521 let mut inner_depth = depth.clone();
2522 if inlined {
2523 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2524 inner_offset = next_offset;
2525 } else {
2526 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2527 inner_depth.increment()?;
2528 }
2529 let val_ref =
2530 self.watcher.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::HandleType<fidl::EventPair, { fidl::ObjectType::EVENTPAIR.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect));
2531 fidl::decode!(fidl::encoding::HandleType<fidl::EventPair, { fidl::ObjectType::EVENTPAIR.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect, val_ref, decoder, inner_offset, inner_depth)?;
2532 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2533 {
2534 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2535 }
2536 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2537 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2538 }
2539 }
2540
2541 next_offset += envelope_size;
2542
2543 while next_offset < end_offset {
2545 _next_ordinal_to_read += 1;
2546 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2547 next_offset += envelope_size;
2548 }
2549
2550 Ok(())
2551 }
2552 }
2553
2554 impl ManagerSuspendContainerRequest {
2555 #[inline(always)]
2556 fn max_ordinal_present(&self) -> u64 {
2557 if let Some(_) = self.wake_locks {
2558 return 2;
2559 }
2560 if let Some(_) = self.container_job {
2561 return 1;
2562 }
2563 0
2564 }
2565 }
2566
2567 impl fidl::encoding::ResourceTypeMarker for ManagerSuspendContainerRequest {
2568 type Borrowed<'a> = &'a mut Self;
2569 fn take_or_borrow<'a>(
2570 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
2571 ) -> Self::Borrowed<'a> {
2572 value
2573 }
2574 }
2575
2576 unsafe impl fidl::encoding::TypeMarker for ManagerSuspendContainerRequest {
2577 type Owned = Self;
2578
2579 #[inline(always)]
2580 fn inline_align(_context: fidl::encoding::Context) -> usize {
2581 8
2582 }
2583
2584 #[inline(always)]
2585 fn inline_size(_context: fidl::encoding::Context) -> usize {
2586 16
2587 }
2588 }
2589
2590 unsafe impl
2591 fidl::encoding::Encode<
2592 ManagerSuspendContainerRequest,
2593 fidl::encoding::DefaultFuchsiaResourceDialect,
2594 > for &mut ManagerSuspendContainerRequest
2595 {
2596 unsafe fn encode(
2597 self,
2598 encoder: &mut fidl::encoding::Encoder<
2599 '_,
2600 fidl::encoding::DefaultFuchsiaResourceDialect,
2601 >,
2602 offset: usize,
2603 mut depth: fidl::encoding::Depth,
2604 ) -> fidl::Result<()> {
2605 encoder.debug_check_bounds::<ManagerSuspendContainerRequest>(offset);
2606 let max_ordinal: u64 = self.max_ordinal_present();
2608 encoder.write_num(max_ordinal, offset);
2609 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
2610 if max_ordinal == 0 {
2612 return Ok(());
2613 }
2614 depth.increment()?;
2615 let envelope_size = 8;
2616 let bytes_len = max_ordinal as usize * envelope_size;
2617 #[allow(unused_variables)]
2618 let offset = encoder.out_of_line_offset(bytes_len);
2619 let mut _prev_end_offset: usize = 0;
2620 if 1 > max_ordinal {
2621 return Ok(());
2622 }
2623
2624 let cur_offset: usize = (1 - 1) * envelope_size;
2627
2628 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2630
2631 fidl::encoding::encode_in_envelope_optional::<
2636 fidl::encoding::HandleType<
2637 fidl::Job,
2638 { fidl::ObjectType::JOB.into_raw() },
2639 2147483648,
2640 >,
2641 fidl::encoding::DefaultFuchsiaResourceDialect,
2642 >(
2643 self.container_job.as_mut().map(
2644 <fidl::encoding::HandleType<
2645 fidl::Job,
2646 { fidl::ObjectType::JOB.into_raw() },
2647 2147483648,
2648 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow,
2649 ),
2650 encoder,
2651 offset + cur_offset,
2652 depth,
2653 )?;
2654
2655 _prev_end_offset = cur_offset + envelope_size;
2656 if 2 > max_ordinal {
2657 return Ok(());
2658 }
2659
2660 let cur_offset: usize = (2 - 1) * envelope_size;
2663
2664 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2666
2667 fidl::encoding::encode_in_envelope_optional::<
2672 fidl::encoding::HandleType<
2673 fidl::EventPair,
2674 { fidl::ObjectType::EVENTPAIR.into_raw() },
2675 2147483648,
2676 >,
2677 fidl::encoding::DefaultFuchsiaResourceDialect,
2678 >(
2679 self.wake_locks.as_mut().map(
2680 <fidl::encoding::HandleType<
2681 fidl::EventPair,
2682 { fidl::ObjectType::EVENTPAIR.into_raw() },
2683 2147483648,
2684 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow,
2685 ),
2686 encoder,
2687 offset + cur_offset,
2688 depth,
2689 )?;
2690
2691 _prev_end_offset = cur_offset + envelope_size;
2692
2693 Ok(())
2694 }
2695 }
2696
2697 impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
2698 for ManagerSuspendContainerRequest
2699 {
2700 #[inline(always)]
2701 fn new_empty() -> Self {
2702 Self::default()
2703 }
2704
2705 unsafe fn decode(
2706 &mut self,
2707 decoder: &mut fidl::encoding::Decoder<
2708 '_,
2709 fidl::encoding::DefaultFuchsiaResourceDialect,
2710 >,
2711 offset: usize,
2712 mut depth: fidl::encoding::Depth,
2713 ) -> fidl::Result<()> {
2714 decoder.debug_check_bounds::<Self>(offset);
2715 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
2716 None => return Err(fidl::Error::NotNullable),
2717 Some(len) => len,
2718 };
2719 if len == 0 {
2721 return Ok(());
2722 };
2723 depth.increment()?;
2724 let envelope_size = 8;
2725 let bytes_len = len * envelope_size;
2726 let offset = decoder.out_of_line_offset(bytes_len)?;
2727 let mut _next_ordinal_to_read = 0;
2729 let mut next_offset = offset;
2730 let end_offset = offset + bytes_len;
2731 _next_ordinal_to_read += 1;
2732 if next_offset >= end_offset {
2733 return Ok(());
2734 }
2735
2736 while _next_ordinal_to_read < 1 {
2738 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2739 _next_ordinal_to_read += 1;
2740 next_offset += envelope_size;
2741 }
2742
2743 let next_out_of_line = decoder.next_out_of_line();
2744 let handles_before = decoder.remaining_handles();
2745 if let Some((inlined, num_bytes, num_handles)) =
2746 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2747 {
2748 let member_inline_size = <fidl::encoding::HandleType<
2749 fidl::Job,
2750 { fidl::ObjectType::JOB.into_raw() },
2751 2147483648,
2752 > as fidl::encoding::TypeMarker>::inline_size(
2753 decoder.context
2754 );
2755 if inlined != (member_inline_size <= 4) {
2756 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2757 }
2758 let inner_offset;
2759 let mut inner_depth = depth.clone();
2760 if inlined {
2761 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2762 inner_offset = next_offset;
2763 } else {
2764 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2765 inner_depth.increment()?;
2766 }
2767 let val_ref =
2768 self.container_job.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::HandleType<fidl::Job, { fidl::ObjectType::JOB.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect));
2769 fidl::decode!(fidl::encoding::HandleType<fidl::Job, { fidl::ObjectType::JOB.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect, val_ref, decoder, inner_offset, inner_depth)?;
2770 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2771 {
2772 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2773 }
2774 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2775 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2776 }
2777 }
2778
2779 next_offset += envelope_size;
2780 _next_ordinal_to_read += 1;
2781 if next_offset >= end_offset {
2782 return Ok(());
2783 }
2784
2785 while _next_ordinal_to_read < 2 {
2787 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2788 _next_ordinal_to_read += 1;
2789 next_offset += envelope_size;
2790 }
2791
2792 let next_out_of_line = decoder.next_out_of_line();
2793 let handles_before = decoder.remaining_handles();
2794 if let Some((inlined, num_bytes, num_handles)) =
2795 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2796 {
2797 let member_inline_size = <fidl::encoding::HandleType<
2798 fidl::EventPair,
2799 { fidl::ObjectType::EVENTPAIR.into_raw() },
2800 2147483648,
2801 > as fidl::encoding::TypeMarker>::inline_size(
2802 decoder.context
2803 );
2804 if inlined != (member_inline_size <= 4) {
2805 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2806 }
2807 let inner_offset;
2808 let mut inner_depth = depth.clone();
2809 if inlined {
2810 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2811 inner_offset = next_offset;
2812 } else {
2813 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2814 inner_depth.increment()?;
2815 }
2816 let val_ref =
2817 self.wake_locks.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::HandleType<fidl::EventPair, { fidl::ObjectType::EVENTPAIR.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect));
2818 fidl::decode!(fidl::encoding::HandleType<fidl::EventPair, { fidl::ObjectType::EVENTPAIR.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect, val_ref, decoder, inner_offset, inner_depth)?;
2819 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2820 {
2821 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2822 }
2823 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2824 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2825 }
2826 }
2827
2828 next_offset += envelope_size;
2829
2830 while next_offset < end_offset {
2832 _next_ordinal_to_read += 1;
2833 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2834 next_offset += envelope_size;
2835 }
2836
2837 Ok(())
2838 }
2839 }
2840
2841 impl PagerRegisterFileResponse {
2842 #[inline(always)]
2843 fn max_ordinal_present(&self) -> u64 {
2844 if let Some(_) = self.vmo {
2845 return 1;
2846 }
2847 0
2848 }
2849 }
2850
2851 impl fidl::encoding::ResourceTypeMarker for PagerRegisterFileResponse {
2852 type Borrowed<'a> = &'a mut Self;
2853 fn take_or_borrow<'a>(
2854 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
2855 ) -> Self::Borrowed<'a> {
2856 value
2857 }
2858 }
2859
2860 unsafe impl fidl::encoding::TypeMarker for PagerRegisterFileResponse {
2861 type Owned = Self;
2862
2863 #[inline(always)]
2864 fn inline_align(_context: fidl::encoding::Context) -> usize {
2865 8
2866 }
2867
2868 #[inline(always)]
2869 fn inline_size(_context: fidl::encoding::Context) -> usize {
2870 16
2871 }
2872 }
2873
2874 unsafe impl
2875 fidl::encoding::Encode<
2876 PagerRegisterFileResponse,
2877 fidl::encoding::DefaultFuchsiaResourceDialect,
2878 > for &mut PagerRegisterFileResponse
2879 {
2880 unsafe fn encode(
2881 self,
2882 encoder: &mut fidl::encoding::Encoder<
2883 '_,
2884 fidl::encoding::DefaultFuchsiaResourceDialect,
2885 >,
2886 offset: usize,
2887 mut depth: fidl::encoding::Depth,
2888 ) -> fidl::Result<()> {
2889 encoder.debug_check_bounds::<PagerRegisterFileResponse>(offset);
2890 let max_ordinal: u64 = self.max_ordinal_present();
2892 encoder.write_num(max_ordinal, offset);
2893 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
2894 if max_ordinal == 0 {
2896 return Ok(());
2897 }
2898 depth.increment()?;
2899 let envelope_size = 8;
2900 let bytes_len = max_ordinal as usize * envelope_size;
2901 #[allow(unused_variables)]
2902 let offset = encoder.out_of_line_offset(bytes_len);
2903 let mut _prev_end_offset: usize = 0;
2904 if 1 > max_ordinal {
2905 return Ok(());
2906 }
2907
2908 let cur_offset: usize = (1 - 1) * envelope_size;
2911
2912 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2914
2915 fidl::encoding::encode_in_envelope_optional::<
2920 fidl::encoding::HandleType<
2921 fidl::Vmo,
2922 { fidl::ObjectType::VMO.into_raw() },
2923 2147483648,
2924 >,
2925 fidl::encoding::DefaultFuchsiaResourceDialect,
2926 >(
2927 self.vmo.as_mut().map(
2928 <fidl::encoding::HandleType<
2929 fidl::Vmo,
2930 { fidl::ObjectType::VMO.into_raw() },
2931 2147483648,
2932 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow,
2933 ),
2934 encoder,
2935 offset + cur_offset,
2936 depth,
2937 )?;
2938
2939 _prev_end_offset = cur_offset + envelope_size;
2940
2941 Ok(())
2942 }
2943 }
2944
2945 impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
2946 for PagerRegisterFileResponse
2947 {
2948 #[inline(always)]
2949 fn new_empty() -> Self {
2950 Self::default()
2951 }
2952
2953 unsafe fn decode(
2954 &mut self,
2955 decoder: &mut fidl::encoding::Decoder<
2956 '_,
2957 fidl::encoding::DefaultFuchsiaResourceDialect,
2958 >,
2959 offset: usize,
2960 mut depth: fidl::encoding::Depth,
2961 ) -> fidl::Result<()> {
2962 decoder.debug_check_bounds::<Self>(offset);
2963 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
2964 None => return Err(fidl::Error::NotNullable),
2965 Some(len) => len,
2966 };
2967 if len == 0 {
2969 return Ok(());
2970 };
2971 depth.increment()?;
2972 let envelope_size = 8;
2973 let bytes_len = len * envelope_size;
2974 let offset = decoder.out_of_line_offset(bytes_len)?;
2975 let mut _next_ordinal_to_read = 0;
2977 let mut next_offset = offset;
2978 let end_offset = offset + bytes_len;
2979 _next_ordinal_to_read += 1;
2980 if next_offset >= end_offset {
2981 return Ok(());
2982 }
2983
2984 while _next_ordinal_to_read < 1 {
2986 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2987 _next_ordinal_to_read += 1;
2988 next_offset += envelope_size;
2989 }
2990
2991 let next_out_of_line = decoder.next_out_of_line();
2992 let handles_before = decoder.remaining_handles();
2993 if let Some((inlined, num_bytes, num_handles)) =
2994 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2995 {
2996 let member_inline_size = <fidl::encoding::HandleType<
2997 fidl::Vmo,
2998 { fidl::ObjectType::VMO.into_raw() },
2999 2147483648,
3000 > as fidl::encoding::TypeMarker>::inline_size(
3001 decoder.context
3002 );
3003 if inlined != (member_inline_size <= 4) {
3004 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3005 }
3006 let inner_offset;
3007 let mut inner_depth = depth.clone();
3008 if inlined {
3009 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3010 inner_offset = next_offset;
3011 } else {
3012 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3013 inner_depth.increment()?;
3014 }
3015 let val_ref =
3016 self.vmo.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::HandleType<fidl::Vmo, { fidl::ObjectType::VMO.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect));
3017 fidl::decode!(fidl::encoding::HandleType<fidl::Vmo, { fidl::ObjectType::VMO.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect, val_ref, decoder, inner_offset, inner_depth)?;
3018 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3019 {
3020 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3021 }
3022 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3023 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3024 }
3025 }
3026
3027 next_offset += envelope_size;
3028
3029 while next_offset < end_offset {
3031 _next_ordinal_to_read += 1;
3032 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3033 next_offset += envelope_size;
3034 }
3035
3036 Ok(())
3037 }
3038 }
3039}