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 _};
10use futures::future::{self, MaybeDone, TryFutureExt};
11use zx_status;
12
13#[derive(Clone, Debug, Default, PartialEq)]
14pub struct DeviceSetSuspendStatesRequest {
15 pub suspend_states: Option<Vec<fidl_fuchsia_hardware_suspend::SuspendState>>,
16 #[doc(hidden)]
17 pub __source_breaking: fidl::marker::SourceBreaking,
18}
19
20impl fidl::Persistable for DeviceSetSuspendStatesRequest {}
21
22#[derive(Clone, Debug, Default, PartialEq)]
23pub struct DeviceAwaitSuspendResponse {
24 pub state_index: Option<u64>,
25 #[doc(hidden)]
26 pub __source_breaking: fidl::marker::SourceBreaking,
27}
28
29impl fidl::Persistable for DeviceAwaitSuspendResponse {}
30
31#[derive(Clone, Debug, Default, PartialEq)]
32pub struct SuspendResult {
33 pub reason: Option<fidl_fuchsia_hardware_suspend::WakeReason>,
34 pub suspend_duration: Option<i64>,
35 pub suspend_overhead: Option<i64>,
36 #[doc(hidden)]
37 pub __source_breaking: fidl::marker::SourceBreaking,
38}
39
40impl fidl::Persistable for SuspendResult {}
41
42#[derive(Clone, Debug)]
43pub enum DeviceResumeRequest {
44 Result(SuspendResult),
45 Error(i32),
46 #[doc(hidden)]
47 __SourceBreaking {
48 unknown_ordinal: u64,
49 },
50}
51
52#[macro_export]
54macro_rules! DeviceResumeRequestUnknown {
55 () => {
56 _
57 };
58}
59
60impl PartialEq for DeviceResumeRequest {
62 fn eq(&self, other: &Self) -> bool {
63 match (self, other) {
64 (Self::Result(x), Self::Result(y)) => *x == *y,
65 (Self::Error(x), Self::Error(y)) => *x == *y,
66 _ => false,
67 }
68 }
69}
70
71impl DeviceResumeRequest {
72 #[inline]
73 pub fn ordinal(&self) -> u64 {
74 match *self {
75 Self::Result(_) => 1,
76 Self::Error(_) => 2,
77 Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
78 }
79 }
80
81 #[inline]
82 pub fn unknown_variant_for_testing() -> Self {
83 Self::__SourceBreaking { unknown_ordinal: 0 }
84 }
85
86 #[inline]
87 pub fn is_unknown(&self) -> bool {
88 match self {
89 Self::__SourceBreaking { .. } => true,
90 _ => false,
91 }
92 }
93}
94
95impl fidl::Persistable for DeviceResumeRequest {}
96
97#[derive(Debug, Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash)]
98pub struct DeviceMarker;
99
100impl fidl::endpoints::ProtocolMarker for DeviceMarker {
101 type Proxy = DeviceProxy;
102 type RequestStream = DeviceRequestStream;
103 #[cfg(target_os = "fuchsia")]
104 type SynchronousProxy = DeviceSynchronousProxy;
105
106 const DEBUG_NAME: &'static str = "test.suspendcontrol.Device";
107}
108impl fidl::endpoints::DiscoverableProtocolMarker for DeviceMarker {}
109pub type DeviceSetSuspendStatesResult = Result<(), i32>;
110pub type DeviceAwaitSuspendResult = Result<DeviceAwaitSuspendResponse, i32>;
111pub type DeviceResumeResult = Result<(), i32>;
112
113pub trait DeviceProxyInterface: Send + Sync {
114 type SetSuspendStatesResponseFut: std::future::Future<Output = Result<DeviceSetSuspendStatesResult, fidl::Error>>
115 + Send;
116 fn r#set_suspend_states(
117 &self,
118 payload: &DeviceSetSuspendStatesRequest,
119 ) -> Self::SetSuspendStatesResponseFut;
120 type AwaitSuspendResponseFut: std::future::Future<Output = Result<DeviceAwaitSuspendResult, fidl::Error>>
121 + Send;
122 fn r#await_suspend(&self) -> Self::AwaitSuspendResponseFut;
123 type ResumeResponseFut: std::future::Future<Output = Result<DeviceResumeResult, fidl::Error>>
124 + Send;
125 fn r#resume(&self, payload: &DeviceResumeRequest) -> Self::ResumeResponseFut;
126}
127#[derive(Debug)]
128#[cfg(target_os = "fuchsia")]
129pub struct DeviceSynchronousProxy {
130 client: fidl::client::sync::Client,
131}
132
133#[cfg(target_os = "fuchsia")]
134impl fidl::endpoints::SynchronousProxy for DeviceSynchronousProxy {
135 type Proxy = DeviceProxy;
136 type Protocol = DeviceMarker;
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 DeviceSynchronousProxy {
153 pub fn new(channel: fidl::Channel) -> Self {
154 let protocol_name = <DeviceMarker 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<DeviceEvent, fidl::Error> {
168 DeviceEvent::decode(self.client.wait_for_event(deadline)?)
169 }
170
171 pub fn r#set_suspend_states(
172 &self,
173 mut payload: &DeviceSetSuspendStatesRequest,
174 ___deadline: zx::MonotonicInstant,
175 ) -> Result<DeviceSetSuspendStatesResult, fidl::Error> {
176 let _response = self.client.send_query::<
177 DeviceSetSuspendStatesRequest,
178 fidl::encoding::ResultType<fidl::encoding::EmptyStruct, i32>,
179 >(
180 payload,
181 0x3d37a51c2955e852,
182 fidl::encoding::DynamicFlags::empty(),
183 ___deadline,
184 )?;
185 Ok(_response.map(|x| x))
186 }
187
188 pub fn r#await_suspend(
189 &self,
190 ___deadline: zx::MonotonicInstant,
191 ) -> Result<DeviceAwaitSuspendResult, fidl::Error> {
192 let _response = self.client.send_query::<
193 fidl::encoding::EmptyPayload,
194 fidl::encoding::ResultType<DeviceAwaitSuspendResponse, i32>,
195 >(
196 (),
197 0x7eb0d662063b347e,
198 fidl::encoding::DynamicFlags::empty(),
199 ___deadline,
200 )?;
201 Ok(_response.map(|x| x))
202 }
203
204 pub fn r#resume(
205 &self,
206 mut payload: &DeviceResumeRequest,
207 ___deadline: zx::MonotonicInstant,
208 ) -> Result<DeviceResumeResult, fidl::Error> {
209 let _response = self.client.send_query::<
210 DeviceResumeRequest,
211 fidl::encoding::ResultType<fidl::encoding::EmptyStruct, i32>,
212 >(
213 payload,
214 0x2deb813cfe9b881e,
215 fidl::encoding::DynamicFlags::empty(),
216 ___deadline,
217 )?;
218 Ok(_response.map(|x| x))
219 }
220}
221
222#[derive(Debug, Clone)]
223pub struct DeviceProxy {
224 client: fidl::client::Client<fidl::encoding::DefaultFuchsiaResourceDialect>,
225}
226
227impl fidl::endpoints::Proxy for DeviceProxy {
228 type Protocol = DeviceMarker;
229
230 fn from_channel(inner: ::fidl::AsyncChannel) -> Self {
231 Self::new(inner)
232 }
233
234 fn into_channel(self) -> Result<::fidl::AsyncChannel, Self> {
235 self.client.into_channel().map_err(|client| Self { client })
236 }
237
238 fn as_channel(&self) -> &::fidl::AsyncChannel {
239 self.client.as_channel()
240 }
241}
242
243impl DeviceProxy {
244 pub fn new(channel: ::fidl::AsyncChannel) -> Self {
246 let protocol_name = <DeviceMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
247 Self { client: fidl::client::Client::new(channel, protocol_name) }
248 }
249
250 pub fn take_event_stream(&self) -> DeviceEventStream {
256 DeviceEventStream { event_receiver: self.client.take_event_receiver() }
257 }
258
259 pub fn r#set_suspend_states(
260 &self,
261 mut payload: &DeviceSetSuspendStatesRequest,
262 ) -> fidl::client::QueryResponseFut<
263 DeviceSetSuspendStatesResult,
264 fidl::encoding::DefaultFuchsiaResourceDialect,
265 > {
266 DeviceProxyInterface::r#set_suspend_states(self, payload)
267 }
268
269 pub fn r#await_suspend(
270 &self,
271 ) -> fidl::client::QueryResponseFut<
272 DeviceAwaitSuspendResult,
273 fidl::encoding::DefaultFuchsiaResourceDialect,
274 > {
275 DeviceProxyInterface::r#await_suspend(self)
276 }
277
278 pub fn r#resume(
279 &self,
280 mut payload: &DeviceResumeRequest,
281 ) -> fidl::client::QueryResponseFut<
282 DeviceResumeResult,
283 fidl::encoding::DefaultFuchsiaResourceDialect,
284 > {
285 DeviceProxyInterface::r#resume(self, payload)
286 }
287}
288
289impl DeviceProxyInterface for DeviceProxy {
290 type SetSuspendStatesResponseFut = fidl::client::QueryResponseFut<
291 DeviceSetSuspendStatesResult,
292 fidl::encoding::DefaultFuchsiaResourceDialect,
293 >;
294 fn r#set_suspend_states(
295 &self,
296 mut payload: &DeviceSetSuspendStatesRequest,
297 ) -> Self::SetSuspendStatesResponseFut {
298 fn _decode(
299 mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
300 ) -> Result<DeviceSetSuspendStatesResult, fidl::Error> {
301 let _response = fidl::client::decode_transaction_body::<
302 fidl::encoding::ResultType<fidl::encoding::EmptyStruct, i32>,
303 fidl::encoding::DefaultFuchsiaResourceDialect,
304 0x3d37a51c2955e852,
305 >(_buf?)?;
306 Ok(_response.map(|x| x))
307 }
308 self.client
309 .send_query_and_decode::<DeviceSetSuspendStatesRequest, DeviceSetSuspendStatesResult>(
310 payload,
311 0x3d37a51c2955e852,
312 fidl::encoding::DynamicFlags::empty(),
313 _decode,
314 )
315 }
316
317 type AwaitSuspendResponseFut = fidl::client::QueryResponseFut<
318 DeviceAwaitSuspendResult,
319 fidl::encoding::DefaultFuchsiaResourceDialect,
320 >;
321 fn r#await_suspend(&self) -> Self::AwaitSuspendResponseFut {
322 fn _decode(
323 mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
324 ) -> Result<DeviceAwaitSuspendResult, fidl::Error> {
325 let _response = fidl::client::decode_transaction_body::<
326 fidl::encoding::ResultType<DeviceAwaitSuspendResponse, i32>,
327 fidl::encoding::DefaultFuchsiaResourceDialect,
328 0x7eb0d662063b347e,
329 >(_buf?)?;
330 Ok(_response.map(|x| x))
331 }
332 self.client.send_query_and_decode::<fidl::encoding::EmptyPayload, DeviceAwaitSuspendResult>(
333 (),
334 0x7eb0d662063b347e,
335 fidl::encoding::DynamicFlags::empty(),
336 _decode,
337 )
338 }
339
340 type ResumeResponseFut = fidl::client::QueryResponseFut<
341 DeviceResumeResult,
342 fidl::encoding::DefaultFuchsiaResourceDialect,
343 >;
344 fn r#resume(&self, mut payload: &DeviceResumeRequest) -> Self::ResumeResponseFut {
345 fn _decode(
346 mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
347 ) -> Result<DeviceResumeResult, fidl::Error> {
348 let _response = fidl::client::decode_transaction_body::<
349 fidl::encoding::ResultType<fidl::encoding::EmptyStruct, i32>,
350 fidl::encoding::DefaultFuchsiaResourceDialect,
351 0x2deb813cfe9b881e,
352 >(_buf?)?;
353 Ok(_response.map(|x| x))
354 }
355 self.client.send_query_and_decode::<DeviceResumeRequest, DeviceResumeResult>(
356 payload,
357 0x2deb813cfe9b881e,
358 fidl::encoding::DynamicFlags::empty(),
359 _decode,
360 )
361 }
362}
363
364pub struct DeviceEventStream {
365 event_receiver: fidl::client::EventReceiver<fidl::encoding::DefaultFuchsiaResourceDialect>,
366}
367
368impl std::marker::Unpin for DeviceEventStream {}
369
370impl futures::stream::FusedStream for DeviceEventStream {
371 fn is_terminated(&self) -> bool {
372 self.event_receiver.is_terminated()
373 }
374}
375
376impl futures::Stream for DeviceEventStream {
377 type Item = Result<DeviceEvent, fidl::Error>;
378
379 fn poll_next(
380 mut self: std::pin::Pin<&mut Self>,
381 cx: &mut std::task::Context<'_>,
382 ) -> std::task::Poll<Option<Self::Item>> {
383 match futures::ready!(futures::stream::StreamExt::poll_next_unpin(
384 &mut self.event_receiver,
385 cx
386 )?) {
387 Some(buf) => std::task::Poll::Ready(Some(DeviceEvent::decode(buf))),
388 None => std::task::Poll::Ready(None),
389 }
390 }
391}
392
393#[derive(Debug)]
394pub enum DeviceEvent {}
395
396impl DeviceEvent {
397 fn decode(
399 mut buf: <fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc,
400 ) -> Result<DeviceEvent, fidl::Error> {
401 let (bytes, _handles) = buf.split_mut();
402 let (tx_header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
403 debug_assert_eq!(tx_header.tx_id, 0);
404 match tx_header.ordinal {
405 _ => Err(fidl::Error::UnknownOrdinal {
406 ordinal: tx_header.ordinal,
407 protocol_name: <DeviceMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
408 }),
409 }
410 }
411}
412
413pub struct DeviceRequestStream {
415 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
416 is_terminated: bool,
417}
418
419impl std::marker::Unpin for DeviceRequestStream {}
420
421impl futures::stream::FusedStream for DeviceRequestStream {
422 fn is_terminated(&self) -> bool {
423 self.is_terminated
424 }
425}
426
427impl fidl::endpoints::RequestStream for DeviceRequestStream {
428 type Protocol = DeviceMarker;
429 type ControlHandle = DeviceControlHandle;
430
431 fn from_channel(channel: ::fidl::AsyncChannel) -> Self {
432 Self { inner: std::sync::Arc::new(fidl::ServeInner::new(channel)), is_terminated: false }
433 }
434
435 fn control_handle(&self) -> Self::ControlHandle {
436 DeviceControlHandle { inner: self.inner.clone() }
437 }
438
439 fn into_inner(
440 self,
441 ) -> (::std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>, bool)
442 {
443 (self.inner, self.is_terminated)
444 }
445
446 fn from_inner(
447 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
448 is_terminated: bool,
449 ) -> Self {
450 Self { inner, is_terminated }
451 }
452}
453
454impl futures::Stream for DeviceRequestStream {
455 type Item = Result<DeviceRequest, fidl::Error>;
456
457 fn poll_next(
458 mut self: std::pin::Pin<&mut Self>,
459 cx: &mut std::task::Context<'_>,
460 ) -> std::task::Poll<Option<Self::Item>> {
461 let this = &mut *self;
462 if this.inner.check_shutdown(cx) {
463 this.is_terminated = true;
464 return std::task::Poll::Ready(None);
465 }
466 if this.is_terminated {
467 panic!("polled DeviceRequestStream after completion");
468 }
469 fidl::encoding::with_tls_decode_buf::<_, fidl::encoding::DefaultFuchsiaResourceDialect>(
470 |bytes, handles| {
471 match this.inner.channel().read_etc(cx, bytes, handles) {
472 std::task::Poll::Ready(Ok(())) => {}
473 std::task::Poll::Pending => return std::task::Poll::Pending,
474 std::task::Poll::Ready(Err(zx_status::Status::PEER_CLOSED)) => {
475 this.is_terminated = true;
476 return std::task::Poll::Ready(None);
477 }
478 std::task::Poll::Ready(Err(e)) => {
479 return std::task::Poll::Ready(Some(Err(fidl::Error::ServerRequestRead(
480 e.into(),
481 ))))
482 }
483 }
484
485 let (header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
487
488 std::task::Poll::Ready(Some(match header.ordinal {
489 0x3d37a51c2955e852 => {
490 header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
491 let mut req = fidl::new_empty!(
492 DeviceSetSuspendStatesRequest,
493 fidl::encoding::DefaultFuchsiaResourceDialect
494 );
495 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<DeviceSetSuspendStatesRequest>(&header, _body_bytes, handles, &mut req)?;
496 let control_handle = DeviceControlHandle { inner: this.inner.clone() };
497 Ok(DeviceRequest::SetSuspendStates {
498 payload: req,
499 responder: DeviceSetSuspendStatesResponder {
500 control_handle: std::mem::ManuallyDrop::new(control_handle),
501 tx_id: header.tx_id,
502 },
503 })
504 }
505 0x7eb0d662063b347e => {
506 header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
507 let mut req = fidl::new_empty!(
508 fidl::encoding::EmptyPayload,
509 fidl::encoding::DefaultFuchsiaResourceDialect
510 );
511 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
512 let control_handle = DeviceControlHandle { inner: this.inner.clone() };
513 Ok(DeviceRequest::AwaitSuspend {
514 responder: DeviceAwaitSuspendResponder {
515 control_handle: std::mem::ManuallyDrop::new(control_handle),
516 tx_id: header.tx_id,
517 },
518 })
519 }
520 0x2deb813cfe9b881e => {
521 header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
522 let mut req = fidl::new_empty!(
523 DeviceResumeRequest,
524 fidl::encoding::DefaultFuchsiaResourceDialect
525 );
526 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<DeviceResumeRequest>(&header, _body_bytes, handles, &mut req)?;
527 let control_handle = DeviceControlHandle { inner: this.inner.clone() };
528 Ok(DeviceRequest::Resume {
529 payload: req,
530 responder: DeviceResumeResponder {
531 control_handle: std::mem::ManuallyDrop::new(control_handle),
532 tx_id: header.tx_id,
533 },
534 })
535 }
536 _ => Err(fidl::Error::UnknownOrdinal {
537 ordinal: header.ordinal,
538 protocol_name:
539 <DeviceMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
540 }),
541 }))
542 },
543 )
544 }
545}
546
547#[derive(Debug)]
548pub enum DeviceRequest {
549 SetSuspendStates {
550 payload: DeviceSetSuspendStatesRequest,
551 responder: DeviceSetSuspendStatesResponder,
552 },
553 AwaitSuspend {
554 responder: DeviceAwaitSuspendResponder,
555 },
556 Resume {
557 payload: DeviceResumeRequest,
558 responder: DeviceResumeResponder,
559 },
560}
561
562impl DeviceRequest {
563 #[allow(irrefutable_let_patterns)]
564 pub fn into_set_suspend_states(
565 self,
566 ) -> Option<(DeviceSetSuspendStatesRequest, DeviceSetSuspendStatesResponder)> {
567 if let DeviceRequest::SetSuspendStates { payload, responder } = self {
568 Some((payload, responder))
569 } else {
570 None
571 }
572 }
573
574 #[allow(irrefutable_let_patterns)]
575 pub fn into_await_suspend(self) -> Option<(DeviceAwaitSuspendResponder)> {
576 if let DeviceRequest::AwaitSuspend { responder } = self {
577 Some((responder))
578 } else {
579 None
580 }
581 }
582
583 #[allow(irrefutable_let_patterns)]
584 pub fn into_resume(self) -> Option<(DeviceResumeRequest, DeviceResumeResponder)> {
585 if let DeviceRequest::Resume { payload, responder } = self {
586 Some((payload, responder))
587 } else {
588 None
589 }
590 }
591
592 pub fn method_name(&self) -> &'static str {
594 match *self {
595 DeviceRequest::SetSuspendStates { .. } => "set_suspend_states",
596 DeviceRequest::AwaitSuspend { .. } => "await_suspend",
597 DeviceRequest::Resume { .. } => "resume",
598 }
599 }
600}
601
602#[derive(Debug, Clone)]
603pub struct DeviceControlHandle {
604 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
605}
606
607impl fidl::endpoints::ControlHandle for DeviceControlHandle {
608 fn shutdown(&self) {
609 self.inner.shutdown()
610 }
611 fn shutdown_with_epitaph(&self, status: zx_status::Status) {
612 self.inner.shutdown_with_epitaph(status)
613 }
614
615 fn is_closed(&self) -> bool {
616 self.inner.channel().is_closed()
617 }
618 fn on_closed(&self) -> fidl::OnSignalsRef<'_> {
619 self.inner.channel().on_closed()
620 }
621
622 #[cfg(target_os = "fuchsia")]
623 fn signal_peer(
624 &self,
625 clear_mask: zx::Signals,
626 set_mask: zx::Signals,
627 ) -> Result<(), zx_status::Status> {
628 use fidl::Peered;
629 self.inner.channel().signal_peer(clear_mask, set_mask)
630 }
631}
632
633impl DeviceControlHandle {}
634
635#[must_use = "FIDL methods require a response to be sent"]
636#[derive(Debug)]
637pub struct DeviceSetSuspendStatesResponder {
638 control_handle: std::mem::ManuallyDrop<DeviceControlHandle>,
639 tx_id: u32,
640}
641
642impl std::ops::Drop for DeviceSetSuspendStatesResponder {
646 fn drop(&mut self) {
647 self.control_handle.shutdown();
648 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
650 }
651}
652
653impl fidl::endpoints::Responder for DeviceSetSuspendStatesResponder {
654 type ControlHandle = DeviceControlHandle;
655
656 fn control_handle(&self) -> &DeviceControlHandle {
657 &self.control_handle
658 }
659
660 fn drop_without_shutdown(mut self) {
661 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
663 std::mem::forget(self);
665 }
666}
667
668impl DeviceSetSuspendStatesResponder {
669 pub fn send(self, mut result: Result<(), i32>) -> Result<(), fidl::Error> {
673 let _result = self.send_raw(result);
674 if _result.is_err() {
675 self.control_handle.shutdown();
676 }
677 self.drop_without_shutdown();
678 _result
679 }
680
681 pub fn send_no_shutdown_on_err(self, mut result: Result<(), i32>) -> Result<(), fidl::Error> {
683 let _result = self.send_raw(result);
684 self.drop_without_shutdown();
685 _result
686 }
687
688 fn send_raw(&self, mut result: Result<(), i32>) -> Result<(), fidl::Error> {
689 self.control_handle
690 .inner
691 .send::<fidl::encoding::ResultType<fidl::encoding::EmptyStruct, i32>>(
692 result,
693 self.tx_id,
694 0x3d37a51c2955e852,
695 fidl::encoding::DynamicFlags::empty(),
696 )
697 }
698}
699
700#[must_use = "FIDL methods require a response to be sent"]
701#[derive(Debug)]
702pub struct DeviceAwaitSuspendResponder {
703 control_handle: std::mem::ManuallyDrop<DeviceControlHandle>,
704 tx_id: u32,
705}
706
707impl std::ops::Drop for DeviceAwaitSuspendResponder {
711 fn drop(&mut self) {
712 self.control_handle.shutdown();
713 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
715 }
716}
717
718impl fidl::endpoints::Responder for DeviceAwaitSuspendResponder {
719 type ControlHandle = DeviceControlHandle;
720
721 fn control_handle(&self) -> &DeviceControlHandle {
722 &self.control_handle
723 }
724
725 fn drop_without_shutdown(mut self) {
726 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
728 std::mem::forget(self);
730 }
731}
732
733impl DeviceAwaitSuspendResponder {
734 pub fn send(
738 self,
739 mut result: Result<&DeviceAwaitSuspendResponse, i32>,
740 ) -> Result<(), fidl::Error> {
741 let _result = self.send_raw(result);
742 if _result.is_err() {
743 self.control_handle.shutdown();
744 }
745 self.drop_without_shutdown();
746 _result
747 }
748
749 pub fn send_no_shutdown_on_err(
751 self,
752 mut result: Result<&DeviceAwaitSuspendResponse, i32>,
753 ) -> Result<(), fidl::Error> {
754 let _result = self.send_raw(result);
755 self.drop_without_shutdown();
756 _result
757 }
758
759 fn send_raw(
760 &self,
761 mut result: Result<&DeviceAwaitSuspendResponse, i32>,
762 ) -> Result<(), fidl::Error> {
763 self.control_handle
764 .inner
765 .send::<fidl::encoding::ResultType<DeviceAwaitSuspendResponse, i32>>(
766 result,
767 self.tx_id,
768 0x7eb0d662063b347e,
769 fidl::encoding::DynamicFlags::empty(),
770 )
771 }
772}
773
774#[must_use = "FIDL methods require a response to be sent"]
775#[derive(Debug)]
776pub struct DeviceResumeResponder {
777 control_handle: std::mem::ManuallyDrop<DeviceControlHandle>,
778 tx_id: u32,
779}
780
781impl std::ops::Drop for DeviceResumeResponder {
785 fn drop(&mut self) {
786 self.control_handle.shutdown();
787 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
789 }
790}
791
792impl fidl::endpoints::Responder for DeviceResumeResponder {
793 type ControlHandle = DeviceControlHandle;
794
795 fn control_handle(&self) -> &DeviceControlHandle {
796 &self.control_handle
797 }
798
799 fn drop_without_shutdown(mut self) {
800 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
802 std::mem::forget(self);
804 }
805}
806
807impl DeviceResumeResponder {
808 pub fn send(self, mut result: Result<(), i32>) -> Result<(), fidl::Error> {
812 let _result = self.send_raw(result);
813 if _result.is_err() {
814 self.control_handle.shutdown();
815 }
816 self.drop_without_shutdown();
817 _result
818 }
819
820 pub fn send_no_shutdown_on_err(self, mut result: Result<(), i32>) -> Result<(), fidl::Error> {
822 let _result = self.send_raw(result);
823 self.drop_without_shutdown();
824 _result
825 }
826
827 fn send_raw(&self, mut result: Result<(), i32>) -> Result<(), fidl::Error> {
828 self.control_handle
829 .inner
830 .send::<fidl::encoding::ResultType<fidl::encoding::EmptyStruct, i32>>(
831 result,
832 self.tx_id,
833 0x2deb813cfe9b881e,
834 fidl::encoding::DynamicFlags::empty(),
835 )
836 }
837}
838
839mod internal {
840 use super::*;
841
842 impl DeviceSetSuspendStatesRequest {
843 #[inline(always)]
844 fn max_ordinal_present(&self) -> u64 {
845 if let Some(_) = self.suspend_states {
846 return 1;
847 }
848 0
849 }
850 }
851
852 impl fidl::encoding::ValueTypeMarker for DeviceSetSuspendStatesRequest {
853 type Borrowed<'a> = &'a Self;
854 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
855 value
856 }
857 }
858
859 unsafe impl fidl::encoding::TypeMarker for DeviceSetSuspendStatesRequest {
860 type Owned = Self;
861
862 #[inline(always)]
863 fn inline_align(_context: fidl::encoding::Context) -> usize {
864 8
865 }
866
867 #[inline(always)]
868 fn inline_size(_context: fidl::encoding::Context) -> usize {
869 16
870 }
871 }
872
873 unsafe impl<D: fidl::encoding::ResourceDialect>
874 fidl::encoding::Encode<DeviceSetSuspendStatesRequest, D>
875 for &DeviceSetSuspendStatesRequest
876 {
877 unsafe fn encode(
878 self,
879 encoder: &mut fidl::encoding::Encoder<'_, D>,
880 offset: usize,
881 mut depth: fidl::encoding::Depth,
882 ) -> fidl::Result<()> {
883 encoder.debug_check_bounds::<DeviceSetSuspendStatesRequest>(offset);
884 let max_ordinal: u64 = self.max_ordinal_present();
886 encoder.write_num(max_ordinal, offset);
887 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
888 if max_ordinal == 0 {
890 return Ok(());
891 }
892 depth.increment()?;
893 let envelope_size = 8;
894 let bytes_len = max_ordinal as usize * envelope_size;
895 #[allow(unused_variables)]
896 let offset = encoder.out_of_line_offset(bytes_len);
897 let mut _prev_end_offset: usize = 0;
898 if 1 > max_ordinal {
899 return Ok(());
900 }
901
902 let cur_offset: usize = (1 - 1) * envelope_size;
905
906 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
908
909 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<fidl_fuchsia_hardware_suspend::SuspendState, 256>, D>(
914 self.suspend_states.as_ref().map(<fidl::encoding::Vector<fidl_fuchsia_hardware_suspend::SuspendState, 256> as fidl::encoding::ValueTypeMarker>::borrow),
915 encoder, offset + cur_offset, depth
916 )?;
917
918 _prev_end_offset = cur_offset + envelope_size;
919
920 Ok(())
921 }
922 }
923
924 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
925 for DeviceSetSuspendStatesRequest
926 {
927 #[inline(always)]
928 fn new_empty() -> Self {
929 Self::default()
930 }
931
932 unsafe fn decode(
933 &mut self,
934 decoder: &mut fidl::encoding::Decoder<'_, D>,
935 offset: usize,
936 mut depth: fidl::encoding::Depth,
937 ) -> fidl::Result<()> {
938 decoder.debug_check_bounds::<Self>(offset);
939 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
940 None => return Err(fidl::Error::NotNullable),
941 Some(len) => len,
942 };
943 if len == 0 {
945 return Ok(());
946 };
947 depth.increment()?;
948 let envelope_size = 8;
949 let bytes_len = len * envelope_size;
950 let offset = decoder.out_of_line_offset(bytes_len)?;
951 let mut _next_ordinal_to_read = 0;
953 let mut next_offset = offset;
954 let end_offset = offset + bytes_len;
955 _next_ordinal_to_read += 1;
956 if next_offset >= end_offset {
957 return Ok(());
958 }
959
960 while _next_ordinal_to_read < 1 {
962 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
963 _next_ordinal_to_read += 1;
964 next_offset += envelope_size;
965 }
966
967 let next_out_of_line = decoder.next_out_of_line();
968 let handles_before = decoder.remaining_handles();
969 if let Some((inlined, num_bytes, num_handles)) =
970 fidl::encoding::decode_envelope_header(decoder, next_offset)?
971 {
972 let member_inline_size = <fidl::encoding::Vector<
973 fidl_fuchsia_hardware_suspend::SuspendState,
974 256,
975 > as fidl::encoding::TypeMarker>::inline_size(
976 decoder.context
977 );
978 if inlined != (member_inline_size <= 4) {
979 return Err(fidl::Error::InvalidInlineBitInEnvelope);
980 }
981 let inner_offset;
982 let mut inner_depth = depth.clone();
983 if inlined {
984 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
985 inner_offset = next_offset;
986 } else {
987 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
988 inner_depth.increment()?;
989 }
990 let val_ref =
991 self.suspend_states.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<fidl_fuchsia_hardware_suspend::SuspendState, 256>, D));
992 fidl::decode!(fidl::encoding::Vector<fidl_fuchsia_hardware_suspend::SuspendState, 256>, D, val_ref, decoder, inner_offset, inner_depth)?;
993 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
994 {
995 return Err(fidl::Error::InvalidNumBytesInEnvelope);
996 }
997 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
998 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
999 }
1000 }
1001
1002 next_offset += envelope_size;
1003
1004 while next_offset < end_offset {
1006 _next_ordinal_to_read += 1;
1007 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1008 next_offset += envelope_size;
1009 }
1010
1011 Ok(())
1012 }
1013 }
1014
1015 impl DeviceAwaitSuspendResponse {
1016 #[inline(always)]
1017 fn max_ordinal_present(&self) -> u64 {
1018 if let Some(_) = self.state_index {
1019 return 1;
1020 }
1021 0
1022 }
1023 }
1024
1025 impl fidl::encoding::ValueTypeMarker for DeviceAwaitSuspendResponse {
1026 type Borrowed<'a> = &'a Self;
1027 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1028 value
1029 }
1030 }
1031
1032 unsafe impl fidl::encoding::TypeMarker for DeviceAwaitSuspendResponse {
1033 type Owned = Self;
1034
1035 #[inline(always)]
1036 fn inline_align(_context: fidl::encoding::Context) -> usize {
1037 8
1038 }
1039
1040 #[inline(always)]
1041 fn inline_size(_context: fidl::encoding::Context) -> usize {
1042 16
1043 }
1044 }
1045
1046 unsafe impl<D: fidl::encoding::ResourceDialect>
1047 fidl::encoding::Encode<DeviceAwaitSuspendResponse, D> for &DeviceAwaitSuspendResponse
1048 {
1049 unsafe fn encode(
1050 self,
1051 encoder: &mut fidl::encoding::Encoder<'_, D>,
1052 offset: usize,
1053 mut depth: fidl::encoding::Depth,
1054 ) -> fidl::Result<()> {
1055 encoder.debug_check_bounds::<DeviceAwaitSuspendResponse>(offset);
1056 let max_ordinal: u64 = self.max_ordinal_present();
1058 encoder.write_num(max_ordinal, offset);
1059 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
1060 if max_ordinal == 0 {
1062 return Ok(());
1063 }
1064 depth.increment()?;
1065 let envelope_size = 8;
1066 let bytes_len = max_ordinal as usize * envelope_size;
1067 #[allow(unused_variables)]
1068 let offset = encoder.out_of_line_offset(bytes_len);
1069 let mut _prev_end_offset: usize = 0;
1070 if 1 > max_ordinal {
1071 return Ok(());
1072 }
1073
1074 let cur_offset: usize = (1 - 1) * envelope_size;
1077
1078 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1080
1081 fidl::encoding::encode_in_envelope_optional::<u64, D>(
1086 self.state_index.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
1087 encoder,
1088 offset + cur_offset,
1089 depth,
1090 )?;
1091
1092 _prev_end_offset = cur_offset + envelope_size;
1093
1094 Ok(())
1095 }
1096 }
1097
1098 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1099 for DeviceAwaitSuspendResponse
1100 {
1101 #[inline(always)]
1102 fn new_empty() -> Self {
1103 Self::default()
1104 }
1105
1106 unsafe fn decode(
1107 &mut self,
1108 decoder: &mut fidl::encoding::Decoder<'_, D>,
1109 offset: usize,
1110 mut depth: fidl::encoding::Depth,
1111 ) -> fidl::Result<()> {
1112 decoder.debug_check_bounds::<Self>(offset);
1113 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
1114 None => return Err(fidl::Error::NotNullable),
1115 Some(len) => len,
1116 };
1117 if len == 0 {
1119 return Ok(());
1120 };
1121 depth.increment()?;
1122 let envelope_size = 8;
1123 let bytes_len = len * envelope_size;
1124 let offset = decoder.out_of_line_offset(bytes_len)?;
1125 let mut _next_ordinal_to_read = 0;
1127 let mut next_offset = offset;
1128 let end_offset = offset + bytes_len;
1129 _next_ordinal_to_read += 1;
1130 if next_offset >= end_offset {
1131 return Ok(());
1132 }
1133
1134 while _next_ordinal_to_read < 1 {
1136 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1137 _next_ordinal_to_read += 1;
1138 next_offset += envelope_size;
1139 }
1140
1141 let next_out_of_line = decoder.next_out_of_line();
1142 let handles_before = decoder.remaining_handles();
1143 if let Some((inlined, num_bytes, num_handles)) =
1144 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1145 {
1146 let member_inline_size =
1147 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1148 if inlined != (member_inline_size <= 4) {
1149 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1150 }
1151 let inner_offset;
1152 let mut inner_depth = depth.clone();
1153 if inlined {
1154 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1155 inner_offset = next_offset;
1156 } else {
1157 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1158 inner_depth.increment()?;
1159 }
1160 let val_ref = self.state_index.get_or_insert_with(|| fidl::new_empty!(u64, D));
1161 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
1162 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1163 {
1164 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1165 }
1166 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1167 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1168 }
1169 }
1170
1171 next_offset += envelope_size;
1172
1173 while next_offset < end_offset {
1175 _next_ordinal_to_read += 1;
1176 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1177 next_offset += envelope_size;
1178 }
1179
1180 Ok(())
1181 }
1182 }
1183
1184 impl SuspendResult {
1185 #[inline(always)]
1186 fn max_ordinal_present(&self) -> u64 {
1187 if let Some(_) = self.suspend_overhead {
1188 return 3;
1189 }
1190 if let Some(_) = self.suspend_duration {
1191 return 2;
1192 }
1193 if let Some(_) = self.reason {
1194 return 1;
1195 }
1196 0
1197 }
1198 }
1199
1200 impl fidl::encoding::ValueTypeMarker for SuspendResult {
1201 type Borrowed<'a> = &'a Self;
1202 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1203 value
1204 }
1205 }
1206
1207 unsafe impl fidl::encoding::TypeMarker for SuspendResult {
1208 type Owned = Self;
1209
1210 #[inline(always)]
1211 fn inline_align(_context: fidl::encoding::Context) -> usize {
1212 8
1213 }
1214
1215 #[inline(always)]
1216 fn inline_size(_context: fidl::encoding::Context) -> usize {
1217 16
1218 }
1219 }
1220
1221 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<SuspendResult, D>
1222 for &SuspendResult
1223 {
1224 unsafe fn encode(
1225 self,
1226 encoder: &mut fidl::encoding::Encoder<'_, D>,
1227 offset: usize,
1228 mut depth: fidl::encoding::Depth,
1229 ) -> fidl::Result<()> {
1230 encoder.debug_check_bounds::<SuspendResult>(offset);
1231 let max_ordinal: u64 = self.max_ordinal_present();
1233 encoder.write_num(max_ordinal, offset);
1234 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
1235 if max_ordinal == 0 {
1237 return Ok(());
1238 }
1239 depth.increment()?;
1240 let envelope_size = 8;
1241 let bytes_len = max_ordinal as usize * envelope_size;
1242 #[allow(unused_variables)]
1243 let offset = encoder.out_of_line_offset(bytes_len);
1244 let mut _prev_end_offset: usize = 0;
1245 if 1 > max_ordinal {
1246 return Ok(());
1247 }
1248
1249 let cur_offset: usize = (1 - 1) * envelope_size;
1252
1253 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1255
1256 fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_hardware_suspend::WakeReason, D>(
1261 self.reason.as_ref().map(<fidl_fuchsia_hardware_suspend::WakeReason as fidl::encoding::ValueTypeMarker>::borrow),
1262 encoder, offset + cur_offset, depth
1263 )?;
1264
1265 _prev_end_offset = cur_offset + envelope_size;
1266 if 2 > max_ordinal {
1267 return Ok(());
1268 }
1269
1270 let cur_offset: usize = (2 - 1) * envelope_size;
1273
1274 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1276
1277 fidl::encoding::encode_in_envelope_optional::<i64, D>(
1282 self.suspend_duration
1283 .as_ref()
1284 .map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
1285 encoder,
1286 offset + cur_offset,
1287 depth,
1288 )?;
1289
1290 _prev_end_offset = cur_offset + envelope_size;
1291 if 3 > max_ordinal {
1292 return Ok(());
1293 }
1294
1295 let cur_offset: usize = (3 - 1) * envelope_size;
1298
1299 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1301
1302 fidl::encoding::encode_in_envelope_optional::<i64, D>(
1307 self.suspend_overhead
1308 .as_ref()
1309 .map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
1310 encoder,
1311 offset + cur_offset,
1312 depth,
1313 )?;
1314
1315 _prev_end_offset = cur_offset + envelope_size;
1316
1317 Ok(())
1318 }
1319 }
1320
1321 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for SuspendResult {
1322 #[inline(always)]
1323 fn new_empty() -> Self {
1324 Self::default()
1325 }
1326
1327 unsafe fn decode(
1328 &mut self,
1329 decoder: &mut fidl::encoding::Decoder<'_, D>,
1330 offset: usize,
1331 mut depth: fidl::encoding::Depth,
1332 ) -> fidl::Result<()> {
1333 decoder.debug_check_bounds::<Self>(offset);
1334 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
1335 None => return Err(fidl::Error::NotNullable),
1336 Some(len) => len,
1337 };
1338 if len == 0 {
1340 return Ok(());
1341 };
1342 depth.increment()?;
1343 let envelope_size = 8;
1344 let bytes_len = len * envelope_size;
1345 let offset = decoder.out_of_line_offset(bytes_len)?;
1346 let mut _next_ordinal_to_read = 0;
1348 let mut next_offset = offset;
1349 let end_offset = offset + bytes_len;
1350 _next_ordinal_to_read += 1;
1351 if next_offset >= end_offset {
1352 return Ok(());
1353 }
1354
1355 while _next_ordinal_to_read < 1 {
1357 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1358 _next_ordinal_to_read += 1;
1359 next_offset += envelope_size;
1360 }
1361
1362 let next_out_of_line = decoder.next_out_of_line();
1363 let handles_before = decoder.remaining_handles();
1364 if let Some((inlined, num_bytes, num_handles)) =
1365 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1366 {
1367 let member_inline_size = <fidl_fuchsia_hardware_suspend::WakeReason as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1368 if inlined != (member_inline_size <= 4) {
1369 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1370 }
1371 let inner_offset;
1372 let mut inner_depth = depth.clone();
1373 if inlined {
1374 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1375 inner_offset = next_offset;
1376 } else {
1377 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1378 inner_depth.increment()?;
1379 }
1380 let val_ref = self.reason.get_or_insert_with(|| {
1381 fidl::new_empty!(fidl_fuchsia_hardware_suspend::WakeReason, D)
1382 });
1383 fidl::decode!(
1384 fidl_fuchsia_hardware_suspend::WakeReason,
1385 D,
1386 val_ref,
1387 decoder,
1388 inner_offset,
1389 inner_depth
1390 )?;
1391 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1392 {
1393 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1394 }
1395 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1396 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1397 }
1398 }
1399
1400 next_offset += envelope_size;
1401 _next_ordinal_to_read += 1;
1402 if next_offset >= end_offset {
1403 return Ok(());
1404 }
1405
1406 while _next_ordinal_to_read < 2 {
1408 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1409 _next_ordinal_to_read += 1;
1410 next_offset += envelope_size;
1411 }
1412
1413 let next_out_of_line = decoder.next_out_of_line();
1414 let handles_before = decoder.remaining_handles();
1415 if let Some((inlined, num_bytes, num_handles)) =
1416 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1417 {
1418 let member_inline_size =
1419 <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1420 if inlined != (member_inline_size <= 4) {
1421 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1422 }
1423 let inner_offset;
1424 let mut inner_depth = depth.clone();
1425 if inlined {
1426 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1427 inner_offset = next_offset;
1428 } else {
1429 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1430 inner_depth.increment()?;
1431 }
1432 let val_ref = self.suspend_duration.get_or_insert_with(|| fidl::new_empty!(i64, D));
1433 fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
1434 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1435 {
1436 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1437 }
1438 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1439 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1440 }
1441 }
1442
1443 next_offset += envelope_size;
1444 _next_ordinal_to_read += 1;
1445 if next_offset >= end_offset {
1446 return Ok(());
1447 }
1448
1449 while _next_ordinal_to_read < 3 {
1451 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1452 _next_ordinal_to_read += 1;
1453 next_offset += envelope_size;
1454 }
1455
1456 let next_out_of_line = decoder.next_out_of_line();
1457 let handles_before = decoder.remaining_handles();
1458 if let Some((inlined, num_bytes, num_handles)) =
1459 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1460 {
1461 let member_inline_size =
1462 <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1463 if inlined != (member_inline_size <= 4) {
1464 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1465 }
1466 let inner_offset;
1467 let mut inner_depth = depth.clone();
1468 if inlined {
1469 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1470 inner_offset = next_offset;
1471 } else {
1472 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1473 inner_depth.increment()?;
1474 }
1475 let val_ref = self.suspend_overhead.get_or_insert_with(|| fidl::new_empty!(i64, D));
1476 fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
1477 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1478 {
1479 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1480 }
1481 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1482 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1483 }
1484 }
1485
1486 next_offset += envelope_size;
1487
1488 while next_offset < end_offset {
1490 _next_ordinal_to_read += 1;
1491 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1492 next_offset += envelope_size;
1493 }
1494
1495 Ok(())
1496 }
1497 }
1498
1499 impl fidl::encoding::ValueTypeMarker for DeviceResumeRequest {
1500 type Borrowed<'a> = &'a Self;
1501 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1502 value
1503 }
1504 }
1505
1506 unsafe impl fidl::encoding::TypeMarker for DeviceResumeRequest {
1507 type Owned = Self;
1508
1509 #[inline(always)]
1510 fn inline_align(_context: fidl::encoding::Context) -> usize {
1511 8
1512 }
1513
1514 #[inline(always)]
1515 fn inline_size(_context: fidl::encoding::Context) -> usize {
1516 16
1517 }
1518 }
1519
1520 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<DeviceResumeRequest, D>
1521 for &DeviceResumeRequest
1522 {
1523 #[inline]
1524 unsafe fn encode(
1525 self,
1526 encoder: &mut fidl::encoding::Encoder<'_, D>,
1527 offset: usize,
1528 _depth: fidl::encoding::Depth,
1529 ) -> fidl::Result<()> {
1530 encoder.debug_check_bounds::<DeviceResumeRequest>(offset);
1531 encoder.write_num::<u64>(self.ordinal(), offset);
1532 match self {
1533 DeviceResumeRequest::Result(ref val) => {
1534 fidl::encoding::encode_in_envelope::<SuspendResult, D>(
1535 <SuspendResult as fidl::encoding::ValueTypeMarker>::borrow(val),
1536 encoder,
1537 offset + 8,
1538 _depth,
1539 )
1540 }
1541 DeviceResumeRequest::Error(ref val) => {
1542 fidl::encoding::encode_in_envelope::<i32, D>(
1543 <i32 as fidl::encoding::ValueTypeMarker>::borrow(val),
1544 encoder,
1545 offset + 8,
1546 _depth,
1547 )
1548 }
1549 DeviceResumeRequest::__SourceBreaking { .. } => Err(fidl::Error::UnknownUnionTag),
1550 }
1551 }
1552 }
1553
1554 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for DeviceResumeRequest {
1555 #[inline(always)]
1556 fn new_empty() -> Self {
1557 Self::__SourceBreaking { unknown_ordinal: 0 }
1558 }
1559
1560 #[inline]
1561 unsafe fn decode(
1562 &mut self,
1563 decoder: &mut fidl::encoding::Decoder<'_, D>,
1564 offset: usize,
1565 mut depth: fidl::encoding::Depth,
1566 ) -> fidl::Result<()> {
1567 decoder.debug_check_bounds::<Self>(offset);
1568 #[allow(unused_variables)]
1569 let next_out_of_line = decoder.next_out_of_line();
1570 let handles_before = decoder.remaining_handles();
1571 let (ordinal, inlined, num_bytes, num_handles) =
1572 fidl::encoding::decode_union_inline_portion(decoder, offset)?;
1573
1574 let member_inline_size = match ordinal {
1575 1 => <SuspendResult as fidl::encoding::TypeMarker>::inline_size(decoder.context),
1576 2 => <i32 as fidl::encoding::TypeMarker>::inline_size(decoder.context),
1577 0 => return Err(fidl::Error::UnknownUnionTag),
1578 _ => num_bytes as usize,
1579 };
1580
1581 if inlined != (member_inline_size <= 4) {
1582 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1583 }
1584 let _inner_offset;
1585 if inlined {
1586 decoder.check_inline_envelope_padding(offset + 8, member_inline_size)?;
1587 _inner_offset = offset + 8;
1588 } else {
1589 depth.increment()?;
1590 _inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1591 }
1592 match ordinal {
1593 1 => {
1594 #[allow(irrefutable_let_patterns)]
1595 if let DeviceResumeRequest::Result(_) = self {
1596 } else {
1598 *self = DeviceResumeRequest::Result(fidl::new_empty!(SuspendResult, D));
1600 }
1601 #[allow(irrefutable_let_patterns)]
1602 if let DeviceResumeRequest::Result(ref mut val) = self {
1603 fidl::decode!(SuspendResult, D, val, decoder, _inner_offset, depth)?;
1604 } else {
1605 unreachable!()
1606 }
1607 }
1608 2 => {
1609 #[allow(irrefutable_let_patterns)]
1610 if let DeviceResumeRequest::Error(_) = self {
1611 } else {
1613 *self = DeviceResumeRequest::Error(fidl::new_empty!(i32, D));
1615 }
1616 #[allow(irrefutable_let_patterns)]
1617 if let DeviceResumeRequest::Error(ref mut val) = self {
1618 fidl::decode!(i32, D, val, decoder, _inner_offset, depth)?;
1619 } else {
1620 unreachable!()
1621 }
1622 }
1623 #[allow(deprecated)]
1624 ordinal => {
1625 for _ in 0..num_handles {
1626 decoder.drop_next_handle()?;
1627 }
1628 *self = DeviceResumeRequest::__SourceBreaking { unknown_ordinal: ordinal };
1629 }
1630 }
1631 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize) {
1632 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1633 }
1634 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1635 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1636 }
1637 Ok(())
1638 }
1639 }
1640}