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_ui_test_conformance_common::*;
11use futures::future::{self, MaybeDone, TryFutureExt};
12use zx_status;
13
14#[derive(Debug, Default, PartialEq)]
16pub struct PuppetCreationArgs {
17 pub server_end: Option<fidl::endpoints::ServerEnd<PuppetMarker>>,
18 pub view_token: Option<fidl_fuchsia_ui_views::ViewCreationToken>,
19 pub touch_listener:
20 Option<fidl::endpoints::ClientEnd<fidl_fuchsia_ui_test_input::TouchInputListenerMarker>>,
21 pub mouse_listener:
22 Option<fidl::endpoints::ClientEnd<fidl_fuchsia_ui_test_input::MouseInputListenerMarker>>,
23 pub keyboard_listener:
24 Option<fidl::endpoints::ClientEnd<fidl_fuchsia_ui_test_input::KeyboardInputListenerMarker>>,
25 pub flatland_client:
26 Option<fidl::endpoints::ClientEnd<fidl_fuchsia_ui_composition::FlatlandMarker>>,
27 pub keyboard_client: Option<fidl::endpoints::ClientEnd<fidl_fuchsia_ui_input3::KeyboardMarker>>,
28 pub device_pixel_ratio: Option<f32>,
29 pub focuser: Option<fidl::endpoints::ServerEnd<fidl_fuchsia_ui_views::FocuserMarker>>,
30 #[doc(hidden)]
31 pub __source_breaking: fidl::marker::SourceBreaking,
32}
33
34impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect> for PuppetCreationArgs {}
35
36#[derive(Debug, Default, PartialEq)]
37pub struct PuppetEmbedRemoteViewResponse {
38 pub result: Option<Result_>,
39 pub view_creation_token: Option<fidl_fuchsia_ui_views::ViewCreationToken>,
40 #[doc(hidden)]
41 pub __source_breaking: fidl::marker::SourceBreaking,
42}
43
44impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect>
45 for PuppetEmbedRemoteViewResponse
46{
47}
48
49#[derive(Debug, Default, PartialEq)]
50pub struct PuppetFactoryCreateResponse {
51 pub result: Option<Result_>,
52 pub view_ref: Option<fidl_fuchsia_ui_views::ViewRef>,
54 #[doc(hidden)]
55 pub __source_breaking: fidl::marker::SourceBreaking,
56}
57
58impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect>
59 for PuppetFactoryCreateResponse
60{
61}
62
63#[derive(Debug, Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash)]
64pub struct PuppetMarker;
65
66impl fidl::endpoints::ProtocolMarker for PuppetMarker {
67 type Proxy = PuppetProxy;
68 type RequestStream = PuppetRequestStream;
69 #[cfg(target_os = "fuchsia")]
70 type SynchronousProxy = PuppetSynchronousProxy;
71
72 const DEBUG_NAME: &'static str = "(anonymous) Puppet";
73}
74
75pub trait PuppetProxyInterface: Send + Sync {
76 type EmbedRemoteViewResponseFut: std::future::Future<Output = Result<PuppetEmbedRemoteViewResponse, fidl::Error>>
77 + Send;
78 fn r#embed_remote_view(
79 &self,
80 payload: &PuppetEmbedRemoteViewRequest,
81 ) -> Self::EmbedRemoteViewResponseFut;
82 type SetEmbeddedViewPropertiesResponseFut: std::future::Future<Output = Result<PuppetSetEmbeddedViewPropertiesResponse, fidl::Error>>
83 + Send;
84 fn r#set_embedded_view_properties(
85 &self,
86 payload: &PuppetSetEmbeddedViewPropertiesRequest,
87 ) -> Self::SetEmbeddedViewPropertiesResponseFut;
88 type DrawImageResponseFut: std::future::Future<Output = Result<PuppetDrawImageResponse, fidl::Error>>
89 + Send;
90 fn r#draw_image(&self, payload: &PuppetDrawImageRequest) -> Self::DrawImageResponseFut;
91 type SetImagePropertiesResponseFut: std::future::Future<Output = Result<PuppetSetImagePropertiesResponse, fidl::Error>>
92 + Send;
93 fn r#set_image_properties(
94 &self,
95 payload: &PuppetSetImagePropertiesRequest,
96 ) -> Self::SetImagePropertiesResponseFut;
97}
98#[derive(Debug)]
99#[cfg(target_os = "fuchsia")]
100pub struct PuppetSynchronousProxy {
101 client: fidl::client::sync::Client,
102}
103
104#[cfg(target_os = "fuchsia")]
105impl fidl::endpoints::SynchronousProxy for PuppetSynchronousProxy {
106 type Proxy = PuppetProxy;
107 type Protocol = PuppetMarker;
108
109 fn from_channel(inner: fidl::Channel) -> Self {
110 Self::new(inner)
111 }
112
113 fn into_channel(self) -> fidl::Channel {
114 self.client.into_channel()
115 }
116
117 fn as_channel(&self) -> &fidl::Channel {
118 self.client.as_channel()
119 }
120}
121
122#[cfg(target_os = "fuchsia")]
123impl PuppetSynchronousProxy {
124 pub fn new(channel: fidl::Channel) -> Self {
125 Self { client: fidl::client::sync::Client::new(channel) }
126 }
127
128 pub fn into_channel(self) -> fidl::Channel {
129 self.client.into_channel()
130 }
131
132 pub fn wait_for_event(
135 &self,
136 deadline: zx::MonotonicInstant,
137 ) -> Result<PuppetEvent, fidl::Error> {
138 PuppetEvent::decode(self.client.wait_for_event::<PuppetMarker>(deadline)?)
139 }
140
141 pub fn r#embed_remote_view(
148 &self,
149 mut payload: &PuppetEmbedRemoteViewRequest,
150 ___deadline: zx::MonotonicInstant,
151 ) -> Result<PuppetEmbedRemoteViewResponse, fidl::Error> {
152 let _response = self.client.send_query::<
153 PuppetEmbedRemoteViewRequest,
154 PuppetEmbedRemoteViewResponse,
155 PuppetMarker,
156 >(
157 payload,
158 0x5bb2325a988aa137,
159 fidl::encoding::DynamicFlags::empty(),
160 ___deadline,
161 )?;
162 Ok(_response)
163 }
164
165 pub fn r#set_embedded_view_properties(
167 &self,
168 mut payload: &PuppetSetEmbeddedViewPropertiesRequest,
169 ___deadline: zx::MonotonicInstant,
170 ) -> Result<PuppetSetEmbeddedViewPropertiesResponse, fidl::Error> {
171 let _response = self.client.send_query::<
172 PuppetSetEmbeddedViewPropertiesRequest,
173 PuppetSetEmbeddedViewPropertiesResponse,
174 PuppetMarker,
175 >(
176 payload,
177 0x409a7f3de135c709,
178 fidl::encoding::DynamicFlags::empty(),
179 ___deadline,
180 )?;
181 Ok(_response)
182 }
183
184 pub fn r#draw_image(
186 &self,
187 mut payload: &PuppetDrawImageRequest,
188 ___deadline: zx::MonotonicInstant,
189 ) -> Result<PuppetDrawImageResponse, fidl::Error> {
190 let _response = self
191 .client
192 .send_query::<PuppetDrawImageRequest, PuppetDrawImageResponse, PuppetMarker>(
193 payload,
194 0x6d736daa48b835cc,
195 fidl::encoding::DynamicFlags::empty(),
196 ___deadline,
197 )?;
198 Ok(_response)
199 }
200
201 pub fn r#set_image_properties(
203 &self,
204 mut payload: &PuppetSetImagePropertiesRequest,
205 ___deadline: zx::MonotonicInstant,
206 ) -> Result<PuppetSetImagePropertiesResponse, fidl::Error> {
207 let _response = self.client.send_query::<
208 PuppetSetImagePropertiesRequest,
209 PuppetSetImagePropertiesResponse,
210 PuppetMarker,
211 >(
212 payload,
213 0x2683795408d033ff,
214 fidl::encoding::DynamicFlags::empty(),
215 ___deadline,
216 )?;
217 Ok(_response)
218 }
219}
220
221#[cfg(target_os = "fuchsia")]
222impl From<PuppetSynchronousProxy> for zx::NullableHandle {
223 fn from(value: PuppetSynchronousProxy) -> Self {
224 value.into_channel().into()
225 }
226}
227
228#[cfg(target_os = "fuchsia")]
229impl From<fidl::Channel> for PuppetSynchronousProxy {
230 fn from(value: fidl::Channel) -> Self {
231 Self::new(value)
232 }
233}
234
235#[cfg(target_os = "fuchsia")]
236impl fidl::endpoints::FromClient for PuppetSynchronousProxy {
237 type Protocol = PuppetMarker;
238
239 fn from_client(value: fidl::endpoints::ClientEnd<PuppetMarker>) -> Self {
240 Self::new(value.into_channel())
241 }
242}
243
244#[derive(Debug, Clone)]
245pub struct PuppetProxy {
246 client: fidl::client::Client<fidl::encoding::DefaultFuchsiaResourceDialect>,
247}
248
249impl fidl::endpoints::Proxy for PuppetProxy {
250 type Protocol = PuppetMarker;
251
252 fn from_channel(inner: ::fidl::AsyncChannel) -> Self {
253 Self::new(inner)
254 }
255
256 fn into_channel(self) -> Result<::fidl::AsyncChannel, Self> {
257 self.client.into_channel().map_err(|client| Self { client })
258 }
259
260 fn as_channel(&self) -> &::fidl::AsyncChannel {
261 self.client.as_channel()
262 }
263}
264
265impl PuppetProxy {
266 pub fn new(channel: ::fidl::AsyncChannel) -> Self {
268 let protocol_name = <PuppetMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
269 Self { client: fidl::client::Client::new(channel, protocol_name) }
270 }
271
272 pub fn take_event_stream(&self) -> PuppetEventStream {
278 PuppetEventStream { event_receiver: self.client.take_event_receiver() }
279 }
280
281 pub fn r#embed_remote_view(
288 &self,
289 mut payload: &PuppetEmbedRemoteViewRequest,
290 ) -> fidl::client::QueryResponseFut<
291 PuppetEmbedRemoteViewResponse,
292 fidl::encoding::DefaultFuchsiaResourceDialect,
293 > {
294 PuppetProxyInterface::r#embed_remote_view(self, payload)
295 }
296
297 pub fn r#set_embedded_view_properties(
299 &self,
300 mut payload: &PuppetSetEmbeddedViewPropertiesRequest,
301 ) -> fidl::client::QueryResponseFut<
302 PuppetSetEmbeddedViewPropertiesResponse,
303 fidl::encoding::DefaultFuchsiaResourceDialect,
304 > {
305 PuppetProxyInterface::r#set_embedded_view_properties(self, payload)
306 }
307
308 pub fn r#draw_image(
310 &self,
311 mut payload: &PuppetDrawImageRequest,
312 ) -> fidl::client::QueryResponseFut<
313 PuppetDrawImageResponse,
314 fidl::encoding::DefaultFuchsiaResourceDialect,
315 > {
316 PuppetProxyInterface::r#draw_image(self, payload)
317 }
318
319 pub fn r#set_image_properties(
321 &self,
322 mut payload: &PuppetSetImagePropertiesRequest,
323 ) -> fidl::client::QueryResponseFut<
324 PuppetSetImagePropertiesResponse,
325 fidl::encoding::DefaultFuchsiaResourceDialect,
326 > {
327 PuppetProxyInterface::r#set_image_properties(self, payload)
328 }
329}
330
331impl PuppetProxyInterface for PuppetProxy {
332 type EmbedRemoteViewResponseFut = fidl::client::QueryResponseFut<
333 PuppetEmbedRemoteViewResponse,
334 fidl::encoding::DefaultFuchsiaResourceDialect,
335 >;
336 fn r#embed_remote_view(
337 &self,
338 mut payload: &PuppetEmbedRemoteViewRequest,
339 ) -> Self::EmbedRemoteViewResponseFut {
340 fn _decode(
341 mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
342 ) -> Result<PuppetEmbedRemoteViewResponse, fidl::Error> {
343 let _response = fidl::client::decode_transaction_body::<
344 PuppetEmbedRemoteViewResponse,
345 fidl::encoding::DefaultFuchsiaResourceDialect,
346 0x5bb2325a988aa137,
347 >(_buf?)?;
348 Ok(_response)
349 }
350 self.client
351 .send_query_and_decode::<PuppetEmbedRemoteViewRequest, PuppetEmbedRemoteViewResponse>(
352 payload,
353 0x5bb2325a988aa137,
354 fidl::encoding::DynamicFlags::empty(),
355 _decode,
356 )
357 }
358
359 type SetEmbeddedViewPropertiesResponseFut = fidl::client::QueryResponseFut<
360 PuppetSetEmbeddedViewPropertiesResponse,
361 fidl::encoding::DefaultFuchsiaResourceDialect,
362 >;
363 fn r#set_embedded_view_properties(
364 &self,
365 mut payload: &PuppetSetEmbeddedViewPropertiesRequest,
366 ) -> Self::SetEmbeddedViewPropertiesResponseFut {
367 fn _decode(
368 mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
369 ) -> Result<PuppetSetEmbeddedViewPropertiesResponse, fidl::Error> {
370 let _response = fidl::client::decode_transaction_body::<
371 PuppetSetEmbeddedViewPropertiesResponse,
372 fidl::encoding::DefaultFuchsiaResourceDialect,
373 0x409a7f3de135c709,
374 >(_buf?)?;
375 Ok(_response)
376 }
377 self.client.send_query_and_decode::<
378 PuppetSetEmbeddedViewPropertiesRequest,
379 PuppetSetEmbeddedViewPropertiesResponse,
380 >(
381 payload,
382 0x409a7f3de135c709,
383 fidl::encoding::DynamicFlags::empty(),
384 _decode,
385 )
386 }
387
388 type DrawImageResponseFut = fidl::client::QueryResponseFut<
389 PuppetDrawImageResponse,
390 fidl::encoding::DefaultFuchsiaResourceDialect,
391 >;
392 fn r#draw_image(&self, mut payload: &PuppetDrawImageRequest) -> Self::DrawImageResponseFut {
393 fn _decode(
394 mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
395 ) -> Result<PuppetDrawImageResponse, fidl::Error> {
396 let _response = fidl::client::decode_transaction_body::<
397 PuppetDrawImageResponse,
398 fidl::encoding::DefaultFuchsiaResourceDialect,
399 0x6d736daa48b835cc,
400 >(_buf?)?;
401 Ok(_response)
402 }
403 self.client.send_query_and_decode::<PuppetDrawImageRequest, PuppetDrawImageResponse>(
404 payload,
405 0x6d736daa48b835cc,
406 fidl::encoding::DynamicFlags::empty(),
407 _decode,
408 )
409 }
410
411 type SetImagePropertiesResponseFut = fidl::client::QueryResponseFut<
412 PuppetSetImagePropertiesResponse,
413 fidl::encoding::DefaultFuchsiaResourceDialect,
414 >;
415 fn r#set_image_properties(
416 &self,
417 mut payload: &PuppetSetImagePropertiesRequest,
418 ) -> Self::SetImagePropertiesResponseFut {
419 fn _decode(
420 mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
421 ) -> Result<PuppetSetImagePropertiesResponse, fidl::Error> {
422 let _response = fidl::client::decode_transaction_body::<
423 PuppetSetImagePropertiesResponse,
424 fidl::encoding::DefaultFuchsiaResourceDialect,
425 0x2683795408d033ff,
426 >(_buf?)?;
427 Ok(_response)
428 }
429 self.client.send_query_and_decode::<
430 PuppetSetImagePropertiesRequest,
431 PuppetSetImagePropertiesResponse,
432 >(
433 payload,
434 0x2683795408d033ff,
435 fidl::encoding::DynamicFlags::empty(),
436 _decode,
437 )
438 }
439}
440
441pub struct PuppetEventStream {
442 event_receiver: fidl::client::EventReceiver<fidl::encoding::DefaultFuchsiaResourceDialect>,
443}
444
445impl std::marker::Unpin for PuppetEventStream {}
446
447impl futures::stream::FusedStream for PuppetEventStream {
448 fn is_terminated(&self) -> bool {
449 self.event_receiver.is_terminated()
450 }
451}
452
453impl futures::Stream for PuppetEventStream {
454 type Item = Result<PuppetEvent, fidl::Error>;
455
456 fn poll_next(
457 mut self: std::pin::Pin<&mut Self>,
458 cx: &mut std::task::Context<'_>,
459 ) -> std::task::Poll<Option<Self::Item>> {
460 match futures::ready!(futures::stream::StreamExt::poll_next_unpin(
461 &mut self.event_receiver,
462 cx
463 )?) {
464 Some(buf) => std::task::Poll::Ready(Some(PuppetEvent::decode(buf))),
465 None => std::task::Poll::Ready(None),
466 }
467 }
468}
469
470#[derive(Debug)]
471pub enum PuppetEvent {}
472
473impl PuppetEvent {
474 fn decode(
476 mut buf: <fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc,
477 ) -> Result<PuppetEvent, fidl::Error> {
478 let (bytes, _handles) = buf.split_mut();
479 let (tx_header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
480 debug_assert_eq!(tx_header.tx_id, 0);
481 match tx_header.ordinal {
482 _ => Err(fidl::Error::UnknownOrdinal {
483 ordinal: tx_header.ordinal,
484 protocol_name: <PuppetMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
485 }),
486 }
487 }
488}
489
490pub struct PuppetRequestStream {
492 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
493 is_terminated: bool,
494}
495
496impl std::marker::Unpin for PuppetRequestStream {}
497
498impl futures::stream::FusedStream for PuppetRequestStream {
499 fn is_terminated(&self) -> bool {
500 self.is_terminated
501 }
502}
503
504impl fidl::endpoints::RequestStream for PuppetRequestStream {
505 type Protocol = PuppetMarker;
506 type ControlHandle = PuppetControlHandle;
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 PuppetControlHandle { 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 PuppetRequestStream {
532 type Item = Result<PuppetRequest, 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 PuppetRequestStream 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 0x5bb2325a988aa137 => {
567 header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
568 let mut req = fidl::new_empty!(
569 PuppetEmbedRemoteViewRequest,
570 fidl::encoding::DefaultFuchsiaResourceDialect
571 );
572 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<PuppetEmbedRemoteViewRequest>(&header, _body_bytes, handles, &mut req)?;
573 let control_handle = PuppetControlHandle { inner: this.inner.clone() };
574 Ok(PuppetRequest::EmbedRemoteView {
575 payload: req,
576 responder: PuppetEmbedRemoteViewResponder {
577 control_handle: std::mem::ManuallyDrop::new(control_handle),
578 tx_id: header.tx_id,
579 },
580 })
581 }
582 0x409a7f3de135c709 => {
583 header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
584 let mut req = fidl::new_empty!(
585 PuppetSetEmbeddedViewPropertiesRequest,
586 fidl::encoding::DefaultFuchsiaResourceDialect
587 );
588 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<PuppetSetEmbeddedViewPropertiesRequest>(&header, _body_bytes, handles, &mut req)?;
589 let control_handle = PuppetControlHandle { inner: this.inner.clone() };
590 Ok(PuppetRequest::SetEmbeddedViewProperties {
591 payload: req,
592 responder: PuppetSetEmbeddedViewPropertiesResponder {
593 control_handle: std::mem::ManuallyDrop::new(control_handle),
594 tx_id: header.tx_id,
595 },
596 })
597 }
598 0x6d736daa48b835cc => {
599 header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
600 let mut req = fidl::new_empty!(
601 PuppetDrawImageRequest,
602 fidl::encoding::DefaultFuchsiaResourceDialect
603 );
604 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<PuppetDrawImageRequest>(&header, _body_bytes, handles, &mut req)?;
605 let control_handle = PuppetControlHandle { inner: this.inner.clone() };
606 Ok(PuppetRequest::DrawImage {
607 payload: req,
608 responder: PuppetDrawImageResponder {
609 control_handle: std::mem::ManuallyDrop::new(control_handle),
610 tx_id: header.tx_id,
611 },
612 })
613 }
614 0x2683795408d033ff => {
615 header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
616 let mut req = fidl::new_empty!(
617 PuppetSetImagePropertiesRequest,
618 fidl::encoding::DefaultFuchsiaResourceDialect
619 );
620 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<PuppetSetImagePropertiesRequest>(&header, _body_bytes, handles, &mut req)?;
621 let control_handle = PuppetControlHandle { inner: this.inner.clone() };
622 Ok(PuppetRequest::SetImageProperties {
623 payload: req,
624 responder: PuppetSetImagePropertiesResponder {
625 control_handle: std::mem::ManuallyDrop::new(control_handle),
626 tx_id: header.tx_id,
627 },
628 })
629 }
630 _ => Err(fidl::Error::UnknownOrdinal {
631 ordinal: header.ordinal,
632 protocol_name:
633 <PuppetMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
634 }),
635 }))
636 },
637 )
638 }
639}
640
641#[derive(Debug)]
683pub enum PuppetRequest {
684 EmbedRemoteView {
691 payload: PuppetEmbedRemoteViewRequest,
692 responder: PuppetEmbedRemoteViewResponder,
693 },
694 SetEmbeddedViewProperties {
696 payload: PuppetSetEmbeddedViewPropertiesRequest,
697 responder: PuppetSetEmbeddedViewPropertiesResponder,
698 },
699 DrawImage { payload: PuppetDrawImageRequest, responder: PuppetDrawImageResponder },
701 SetImageProperties {
703 payload: PuppetSetImagePropertiesRequest,
704 responder: PuppetSetImagePropertiesResponder,
705 },
706}
707
708impl PuppetRequest {
709 #[allow(irrefutable_let_patterns)]
710 pub fn into_embed_remote_view(
711 self,
712 ) -> Option<(PuppetEmbedRemoteViewRequest, PuppetEmbedRemoteViewResponder)> {
713 if let PuppetRequest::EmbedRemoteView { payload, responder } = self {
714 Some((payload, responder))
715 } else {
716 None
717 }
718 }
719
720 #[allow(irrefutable_let_patterns)]
721 pub fn into_set_embedded_view_properties(
722 self,
723 ) -> Option<(PuppetSetEmbeddedViewPropertiesRequest, PuppetSetEmbeddedViewPropertiesResponder)>
724 {
725 if let PuppetRequest::SetEmbeddedViewProperties { payload, responder } = self {
726 Some((payload, responder))
727 } else {
728 None
729 }
730 }
731
732 #[allow(irrefutable_let_patterns)]
733 pub fn into_draw_image(self) -> Option<(PuppetDrawImageRequest, PuppetDrawImageResponder)> {
734 if let PuppetRequest::DrawImage { payload, responder } = self {
735 Some((payload, responder))
736 } else {
737 None
738 }
739 }
740
741 #[allow(irrefutable_let_patterns)]
742 pub fn into_set_image_properties(
743 self,
744 ) -> Option<(PuppetSetImagePropertiesRequest, PuppetSetImagePropertiesResponder)> {
745 if let PuppetRequest::SetImageProperties { payload, responder } = self {
746 Some((payload, responder))
747 } else {
748 None
749 }
750 }
751
752 pub fn method_name(&self) -> &'static str {
754 match *self {
755 PuppetRequest::EmbedRemoteView { .. } => "embed_remote_view",
756 PuppetRequest::SetEmbeddedViewProperties { .. } => "set_embedded_view_properties",
757 PuppetRequest::DrawImage { .. } => "draw_image",
758 PuppetRequest::SetImageProperties { .. } => "set_image_properties",
759 }
760 }
761}
762
763#[derive(Debug, Clone)]
764pub struct PuppetControlHandle {
765 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
766}
767
768impl PuppetControlHandle {
769 pub fn shutdown_with_epitaph(&self, status: impl Into<fidl::Epitaph>) {
770 self.inner.shutdown_with_epitaph(status.into())
771 }
772}
773
774impl fidl::endpoints::ControlHandle for PuppetControlHandle {
775 fn shutdown(&self) {
776 self.inner.shutdown()
777 }
778
779 fn shutdown_with_epitaph(&self, status: fidl::Epitaph) {
780 self.inner.shutdown_with_epitaph(status)
781 }
782
783 fn is_closed(&self) -> bool {
784 self.inner.channel().is_closed()
785 }
786 fn on_closed(&self) -> fidl::OnSignalsRef<'_> {
787 self.inner.channel().on_closed()
788 }
789
790 #[cfg(target_os = "fuchsia")]
791 fn signal_peer(
792 &self,
793 clear_mask: zx::Signals,
794 set_mask: zx::Signals,
795 ) -> Result<(), zx_status::Status> {
796 use fidl::Peered;
797 self.inner.channel().signal_peer(clear_mask, set_mask)
798 }
799}
800
801impl PuppetControlHandle {}
802
803#[must_use = "FIDL methods require a response to be sent"]
804#[derive(Debug)]
805pub struct PuppetEmbedRemoteViewResponder {
806 control_handle: std::mem::ManuallyDrop<PuppetControlHandle>,
807 tx_id: u32,
808}
809
810impl std::ops::Drop for PuppetEmbedRemoteViewResponder {
814 fn drop(&mut self) {
815 self.control_handle.shutdown();
816 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
818 }
819}
820
821impl fidl::endpoints::Responder for PuppetEmbedRemoteViewResponder {
822 type ControlHandle = PuppetControlHandle;
823
824 fn control_handle(&self) -> &PuppetControlHandle {
825 &self.control_handle
826 }
827
828 fn drop_without_shutdown(mut self) {
829 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
831 std::mem::forget(self);
833 }
834}
835
836impl PuppetEmbedRemoteViewResponder {
837 pub fn send(self, mut payload: PuppetEmbedRemoteViewResponse) -> Result<(), fidl::Error> {
841 let _result = self.send_raw(payload);
842 if _result.is_err() {
843 self.control_handle.shutdown();
844 }
845 self.drop_without_shutdown();
846 _result
847 }
848
849 pub fn send_no_shutdown_on_err(
851 self,
852 mut payload: PuppetEmbedRemoteViewResponse,
853 ) -> Result<(), fidl::Error> {
854 let _result = self.send_raw(payload);
855 self.drop_without_shutdown();
856 _result
857 }
858
859 fn send_raw(&self, mut payload: PuppetEmbedRemoteViewResponse) -> Result<(), fidl::Error> {
860 self.control_handle.inner.send::<PuppetEmbedRemoteViewResponse>(
861 &mut payload,
862 self.tx_id,
863 0x5bb2325a988aa137,
864 fidl::encoding::DynamicFlags::empty(),
865 )
866 }
867}
868
869#[must_use = "FIDL methods require a response to be sent"]
870#[derive(Debug)]
871pub struct PuppetSetEmbeddedViewPropertiesResponder {
872 control_handle: std::mem::ManuallyDrop<PuppetControlHandle>,
873 tx_id: u32,
874}
875
876impl std::ops::Drop for PuppetSetEmbeddedViewPropertiesResponder {
880 fn drop(&mut self) {
881 self.control_handle.shutdown();
882 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
884 }
885}
886
887impl fidl::endpoints::Responder for PuppetSetEmbeddedViewPropertiesResponder {
888 type ControlHandle = PuppetControlHandle;
889
890 fn control_handle(&self) -> &PuppetControlHandle {
891 &self.control_handle
892 }
893
894 fn drop_without_shutdown(mut self) {
895 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
897 std::mem::forget(self);
899 }
900}
901
902impl PuppetSetEmbeddedViewPropertiesResponder {
903 pub fn send(
907 self,
908 mut payload: &PuppetSetEmbeddedViewPropertiesResponse,
909 ) -> Result<(), fidl::Error> {
910 let _result = self.send_raw(payload);
911 if _result.is_err() {
912 self.control_handle.shutdown();
913 }
914 self.drop_without_shutdown();
915 _result
916 }
917
918 pub fn send_no_shutdown_on_err(
920 self,
921 mut payload: &PuppetSetEmbeddedViewPropertiesResponse,
922 ) -> Result<(), fidl::Error> {
923 let _result = self.send_raw(payload);
924 self.drop_without_shutdown();
925 _result
926 }
927
928 fn send_raw(
929 &self,
930 mut payload: &PuppetSetEmbeddedViewPropertiesResponse,
931 ) -> Result<(), fidl::Error> {
932 self.control_handle.inner.send::<PuppetSetEmbeddedViewPropertiesResponse>(
933 payload,
934 self.tx_id,
935 0x409a7f3de135c709,
936 fidl::encoding::DynamicFlags::empty(),
937 )
938 }
939}
940
941#[must_use = "FIDL methods require a response to be sent"]
942#[derive(Debug)]
943pub struct PuppetDrawImageResponder {
944 control_handle: std::mem::ManuallyDrop<PuppetControlHandle>,
945 tx_id: u32,
946}
947
948impl std::ops::Drop for PuppetDrawImageResponder {
952 fn drop(&mut self) {
953 self.control_handle.shutdown();
954 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
956 }
957}
958
959impl fidl::endpoints::Responder for PuppetDrawImageResponder {
960 type ControlHandle = PuppetControlHandle;
961
962 fn control_handle(&self) -> &PuppetControlHandle {
963 &self.control_handle
964 }
965
966 fn drop_without_shutdown(mut self) {
967 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
969 std::mem::forget(self);
971 }
972}
973
974impl PuppetDrawImageResponder {
975 pub fn send(self, mut payload: &PuppetDrawImageResponse) -> Result<(), fidl::Error> {
979 let _result = self.send_raw(payload);
980 if _result.is_err() {
981 self.control_handle.shutdown();
982 }
983 self.drop_without_shutdown();
984 _result
985 }
986
987 pub fn send_no_shutdown_on_err(
989 self,
990 mut payload: &PuppetDrawImageResponse,
991 ) -> Result<(), fidl::Error> {
992 let _result = self.send_raw(payload);
993 self.drop_without_shutdown();
994 _result
995 }
996
997 fn send_raw(&self, mut payload: &PuppetDrawImageResponse) -> Result<(), fidl::Error> {
998 self.control_handle.inner.send::<PuppetDrawImageResponse>(
999 payload,
1000 self.tx_id,
1001 0x6d736daa48b835cc,
1002 fidl::encoding::DynamicFlags::empty(),
1003 )
1004 }
1005}
1006
1007#[must_use = "FIDL methods require a response to be sent"]
1008#[derive(Debug)]
1009pub struct PuppetSetImagePropertiesResponder {
1010 control_handle: std::mem::ManuallyDrop<PuppetControlHandle>,
1011 tx_id: u32,
1012}
1013
1014impl std::ops::Drop for PuppetSetImagePropertiesResponder {
1018 fn drop(&mut self) {
1019 self.control_handle.shutdown();
1020 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
1022 }
1023}
1024
1025impl fidl::endpoints::Responder for PuppetSetImagePropertiesResponder {
1026 type ControlHandle = PuppetControlHandle;
1027
1028 fn control_handle(&self) -> &PuppetControlHandle {
1029 &self.control_handle
1030 }
1031
1032 fn drop_without_shutdown(mut self) {
1033 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
1035 std::mem::forget(self);
1037 }
1038}
1039
1040impl PuppetSetImagePropertiesResponder {
1041 pub fn send(self, mut payload: &PuppetSetImagePropertiesResponse) -> Result<(), fidl::Error> {
1045 let _result = self.send_raw(payload);
1046 if _result.is_err() {
1047 self.control_handle.shutdown();
1048 }
1049 self.drop_without_shutdown();
1050 _result
1051 }
1052
1053 pub fn send_no_shutdown_on_err(
1055 self,
1056 mut payload: &PuppetSetImagePropertiesResponse,
1057 ) -> Result<(), fidl::Error> {
1058 let _result = self.send_raw(payload);
1059 self.drop_without_shutdown();
1060 _result
1061 }
1062
1063 fn send_raw(&self, mut payload: &PuppetSetImagePropertiesResponse) -> Result<(), fidl::Error> {
1064 self.control_handle.inner.send::<PuppetSetImagePropertiesResponse>(
1065 payload,
1066 self.tx_id,
1067 0x2683795408d033ff,
1068 fidl::encoding::DynamicFlags::empty(),
1069 )
1070 }
1071}
1072
1073#[derive(Debug, Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash)]
1074pub struct PuppetFactoryMarker;
1075
1076impl fidl::endpoints::ProtocolMarker for PuppetFactoryMarker {
1077 type Proxy = PuppetFactoryProxy;
1078 type RequestStream = PuppetFactoryRequestStream;
1079 #[cfg(target_os = "fuchsia")]
1080 type SynchronousProxy = PuppetFactorySynchronousProxy;
1081
1082 const DEBUG_NAME: &'static str = "fuchsia.ui.test.conformance.PuppetFactory";
1083}
1084impl fidl::endpoints::DiscoverableProtocolMarker for PuppetFactoryMarker {}
1085
1086pub trait PuppetFactoryProxyInterface: Send + Sync {
1087 type CreateResponseFut: std::future::Future<Output = Result<PuppetFactoryCreateResponse, fidl::Error>>
1088 + Send;
1089 fn r#create(&self, payload: PuppetCreationArgs) -> Self::CreateResponseFut;
1090}
1091#[derive(Debug)]
1092#[cfg(target_os = "fuchsia")]
1093pub struct PuppetFactorySynchronousProxy {
1094 client: fidl::client::sync::Client,
1095}
1096
1097#[cfg(target_os = "fuchsia")]
1098impl fidl::endpoints::SynchronousProxy for PuppetFactorySynchronousProxy {
1099 type Proxy = PuppetFactoryProxy;
1100 type Protocol = PuppetFactoryMarker;
1101
1102 fn from_channel(inner: fidl::Channel) -> Self {
1103 Self::new(inner)
1104 }
1105
1106 fn into_channel(self) -> fidl::Channel {
1107 self.client.into_channel()
1108 }
1109
1110 fn as_channel(&self) -> &fidl::Channel {
1111 self.client.as_channel()
1112 }
1113}
1114
1115#[cfg(target_os = "fuchsia")]
1116impl PuppetFactorySynchronousProxy {
1117 pub fn new(channel: fidl::Channel) -> Self {
1118 Self { client: fidl::client::sync::Client::new(channel) }
1119 }
1120
1121 pub fn into_channel(self) -> fidl::Channel {
1122 self.client.into_channel()
1123 }
1124
1125 pub fn wait_for_event(
1128 &self,
1129 deadline: zx::MonotonicInstant,
1130 ) -> Result<PuppetFactoryEvent, fidl::Error> {
1131 PuppetFactoryEvent::decode(self.client.wait_for_event::<PuppetFactoryMarker>(deadline)?)
1132 }
1133
1134 pub fn r#create(
1137 &self,
1138 mut payload: PuppetCreationArgs,
1139 ___deadline: zx::MonotonicInstant,
1140 ) -> Result<PuppetFactoryCreateResponse, fidl::Error> {
1141 let _response = self
1142 .client
1143 .send_query::<PuppetCreationArgs, PuppetFactoryCreateResponse, PuppetFactoryMarker>(
1144 &mut payload,
1145 0x4f90811dc284b595,
1146 fidl::encoding::DynamicFlags::empty(),
1147 ___deadline,
1148 )?;
1149 Ok(_response)
1150 }
1151}
1152
1153#[cfg(target_os = "fuchsia")]
1154impl From<PuppetFactorySynchronousProxy> for zx::NullableHandle {
1155 fn from(value: PuppetFactorySynchronousProxy) -> Self {
1156 value.into_channel().into()
1157 }
1158}
1159
1160#[cfg(target_os = "fuchsia")]
1161impl From<fidl::Channel> for PuppetFactorySynchronousProxy {
1162 fn from(value: fidl::Channel) -> Self {
1163 Self::new(value)
1164 }
1165}
1166
1167#[cfg(target_os = "fuchsia")]
1168impl fidl::endpoints::FromClient for PuppetFactorySynchronousProxy {
1169 type Protocol = PuppetFactoryMarker;
1170
1171 fn from_client(value: fidl::endpoints::ClientEnd<PuppetFactoryMarker>) -> Self {
1172 Self::new(value.into_channel())
1173 }
1174}
1175
1176#[derive(Debug, Clone)]
1177pub struct PuppetFactoryProxy {
1178 client: fidl::client::Client<fidl::encoding::DefaultFuchsiaResourceDialect>,
1179}
1180
1181impl fidl::endpoints::Proxy for PuppetFactoryProxy {
1182 type Protocol = PuppetFactoryMarker;
1183
1184 fn from_channel(inner: ::fidl::AsyncChannel) -> Self {
1185 Self::new(inner)
1186 }
1187
1188 fn into_channel(self) -> Result<::fidl::AsyncChannel, Self> {
1189 self.client.into_channel().map_err(|client| Self { client })
1190 }
1191
1192 fn as_channel(&self) -> &::fidl::AsyncChannel {
1193 self.client.as_channel()
1194 }
1195}
1196
1197impl PuppetFactoryProxy {
1198 pub fn new(channel: ::fidl::AsyncChannel) -> Self {
1200 let protocol_name = <PuppetFactoryMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
1201 Self { client: fidl::client::Client::new(channel, protocol_name) }
1202 }
1203
1204 pub fn take_event_stream(&self) -> PuppetFactoryEventStream {
1210 PuppetFactoryEventStream { event_receiver: self.client.take_event_receiver() }
1211 }
1212
1213 pub fn r#create(
1216 &self,
1217 mut payload: PuppetCreationArgs,
1218 ) -> fidl::client::QueryResponseFut<
1219 PuppetFactoryCreateResponse,
1220 fidl::encoding::DefaultFuchsiaResourceDialect,
1221 > {
1222 PuppetFactoryProxyInterface::r#create(self, payload)
1223 }
1224}
1225
1226impl PuppetFactoryProxyInterface for PuppetFactoryProxy {
1227 type CreateResponseFut = fidl::client::QueryResponseFut<
1228 PuppetFactoryCreateResponse,
1229 fidl::encoding::DefaultFuchsiaResourceDialect,
1230 >;
1231 fn r#create(&self, mut payload: PuppetCreationArgs) -> Self::CreateResponseFut {
1232 fn _decode(
1233 mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
1234 ) -> Result<PuppetFactoryCreateResponse, fidl::Error> {
1235 let _response = fidl::client::decode_transaction_body::<
1236 PuppetFactoryCreateResponse,
1237 fidl::encoding::DefaultFuchsiaResourceDialect,
1238 0x4f90811dc284b595,
1239 >(_buf?)?;
1240 Ok(_response)
1241 }
1242 self.client.send_query_and_decode::<PuppetCreationArgs, PuppetFactoryCreateResponse>(
1243 &mut payload,
1244 0x4f90811dc284b595,
1245 fidl::encoding::DynamicFlags::empty(),
1246 _decode,
1247 )
1248 }
1249}
1250
1251pub struct PuppetFactoryEventStream {
1252 event_receiver: fidl::client::EventReceiver<fidl::encoding::DefaultFuchsiaResourceDialect>,
1253}
1254
1255impl std::marker::Unpin for PuppetFactoryEventStream {}
1256
1257impl futures::stream::FusedStream for PuppetFactoryEventStream {
1258 fn is_terminated(&self) -> bool {
1259 self.event_receiver.is_terminated()
1260 }
1261}
1262
1263impl futures::Stream for PuppetFactoryEventStream {
1264 type Item = Result<PuppetFactoryEvent, fidl::Error>;
1265
1266 fn poll_next(
1267 mut self: std::pin::Pin<&mut Self>,
1268 cx: &mut std::task::Context<'_>,
1269 ) -> std::task::Poll<Option<Self::Item>> {
1270 match futures::ready!(futures::stream::StreamExt::poll_next_unpin(
1271 &mut self.event_receiver,
1272 cx
1273 )?) {
1274 Some(buf) => std::task::Poll::Ready(Some(PuppetFactoryEvent::decode(buf))),
1275 None => std::task::Poll::Ready(None),
1276 }
1277 }
1278}
1279
1280#[derive(Debug)]
1281pub enum PuppetFactoryEvent {}
1282
1283impl PuppetFactoryEvent {
1284 fn decode(
1286 mut buf: <fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc,
1287 ) -> Result<PuppetFactoryEvent, fidl::Error> {
1288 let (bytes, _handles) = buf.split_mut();
1289 let (tx_header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
1290 debug_assert_eq!(tx_header.tx_id, 0);
1291 match tx_header.ordinal {
1292 _ => Err(fidl::Error::UnknownOrdinal {
1293 ordinal: tx_header.ordinal,
1294 protocol_name: <PuppetFactoryMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
1295 }),
1296 }
1297 }
1298}
1299
1300pub struct PuppetFactoryRequestStream {
1302 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
1303 is_terminated: bool,
1304}
1305
1306impl std::marker::Unpin for PuppetFactoryRequestStream {}
1307
1308impl futures::stream::FusedStream for PuppetFactoryRequestStream {
1309 fn is_terminated(&self) -> bool {
1310 self.is_terminated
1311 }
1312}
1313
1314impl fidl::endpoints::RequestStream for PuppetFactoryRequestStream {
1315 type Protocol = PuppetFactoryMarker;
1316 type ControlHandle = PuppetFactoryControlHandle;
1317
1318 fn from_channel(channel: ::fidl::AsyncChannel) -> Self {
1319 Self { inner: std::sync::Arc::new(fidl::ServeInner::new(channel)), is_terminated: false }
1320 }
1321
1322 fn control_handle(&self) -> Self::ControlHandle {
1323 PuppetFactoryControlHandle { inner: self.inner.clone() }
1324 }
1325
1326 fn into_inner(
1327 self,
1328 ) -> (::std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>, bool)
1329 {
1330 (self.inner, self.is_terminated)
1331 }
1332
1333 fn from_inner(
1334 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
1335 is_terminated: bool,
1336 ) -> Self {
1337 Self { inner, is_terminated }
1338 }
1339}
1340
1341impl futures::Stream for PuppetFactoryRequestStream {
1342 type Item = Result<PuppetFactoryRequest, fidl::Error>;
1343
1344 fn poll_next(
1345 mut self: std::pin::Pin<&mut Self>,
1346 cx: &mut std::task::Context<'_>,
1347 ) -> std::task::Poll<Option<Self::Item>> {
1348 let this = &mut *self;
1349 if this.inner.check_shutdown(cx) {
1350 this.is_terminated = true;
1351 return std::task::Poll::Ready(None);
1352 }
1353 if this.is_terminated {
1354 panic!("polled PuppetFactoryRequestStream after completion");
1355 }
1356 fidl::encoding::with_tls_decode_buf::<_, fidl::encoding::DefaultFuchsiaResourceDialect>(
1357 |bytes, handles| {
1358 match this.inner.channel().read_etc(cx, bytes, handles) {
1359 std::task::Poll::Ready(Ok(())) => {}
1360 std::task::Poll::Pending => return std::task::Poll::Pending,
1361 std::task::Poll::Ready(Err(zx_status::Status::PEER_CLOSED)) => {
1362 this.is_terminated = true;
1363 return std::task::Poll::Ready(None);
1364 }
1365 std::task::Poll::Ready(Err(e)) => {
1366 return std::task::Poll::Ready(Some(Err(fidl::Error::ServerRequestRead(
1367 e.into(),
1368 ))));
1369 }
1370 }
1371
1372 let (header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
1374
1375 std::task::Poll::Ready(Some(match header.ordinal {
1376 0x4f90811dc284b595 => {
1377 header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
1378 let mut req = fidl::new_empty!(
1379 PuppetCreationArgs,
1380 fidl::encoding::DefaultFuchsiaResourceDialect
1381 );
1382 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<PuppetCreationArgs>(&header, _body_bytes, handles, &mut req)?;
1383 let control_handle =
1384 PuppetFactoryControlHandle { inner: this.inner.clone() };
1385 Ok(PuppetFactoryRequest::Create {
1386 payload: req,
1387 responder: PuppetFactoryCreateResponder {
1388 control_handle: std::mem::ManuallyDrop::new(control_handle),
1389 tx_id: header.tx_id,
1390 },
1391 })
1392 }
1393 _ => Err(fidl::Error::UnknownOrdinal {
1394 ordinal: header.ordinal,
1395 protocol_name:
1396 <PuppetFactoryMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
1397 }),
1398 }))
1399 },
1400 )
1401 }
1402}
1403
1404#[derive(Debug)]
1407pub enum PuppetFactoryRequest {
1408 Create { payload: PuppetCreationArgs, responder: PuppetFactoryCreateResponder },
1411}
1412
1413impl PuppetFactoryRequest {
1414 #[allow(irrefutable_let_patterns)]
1415 pub fn into_create(self) -> Option<(PuppetCreationArgs, PuppetFactoryCreateResponder)> {
1416 if let PuppetFactoryRequest::Create { payload, responder } = self {
1417 Some((payload, responder))
1418 } else {
1419 None
1420 }
1421 }
1422
1423 pub fn method_name(&self) -> &'static str {
1425 match *self {
1426 PuppetFactoryRequest::Create { .. } => "create",
1427 }
1428 }
1429}
1430
1431#[derive(Debug, Clone)]
1432pub struct PuppetFactoryControlHandle {
1433 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
1434}
1435
1436impl PuppetFactoryControlHandle {
1437 pub fn shutdown_with_epitaph(&self, status: impl Into<fidl::Epitaph>) {
1438 self.inner.shutdown_with_epitaph(status.into())
1439 }
1440}
1441
1442impl fidl::endpoints::ControlHandle for PuppetFactoryControlHandle {
1443 fn shutdown(&self) {
1444 self.inner.shutdown()
1445 }
1446
1447 fn shutdown_with_epitaph(&self, status: fidl::Epitaph) {
1448 self.inner.shutdown_with_epitaph(status)
1449 }
1450
1451 fn is_closed(&self) -> bool {
1452 self.inner.channel().is_closed()
1453 }
1454 fn on_closed(&self) -> fidl::OnSignalsRef<'_> {
1455 self.inner.channel().on_closed()
1456 }
1457
1458 #[cfg(target_os = "fuchsia")]
1459 fn signal_peer(
1460 &self,
1461 clear_mask: zx::Signals,
1462 set_mask: zx::Signals,
1463 ) -> Result<(), zx_status::Status> {
1464 use fidl::Peered;
1465 self.inner.channel().signal_peer(clear_mask, set_mask)
1466 }
1467}
1468
1469impl PuppetFactoryControlHandle {}
1470
1471#[must_use = "FIDL methods require a response to be sent"]
1472#[derive(Debug)]
1473pub struct PuppetFactoryCreateResponder {
1474 control_handle: std::mem::ManuallyDrop<PuppetFactoryControlHandle>,
1475 tx_id: u32,
1476}
1477
1478impl std::ops::Drop for PuppetFactoryCreateResponder {
1482 fn drop(&mut self) {
1483 self.control_handle.shutdown();
1484 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
1486 }
1487}
1488
1489impl fidl::endpoints::Responder for PuppetFactoryCreateResponder {
1490 type ControlHandle = PuppetFactoryControlHandle;
1491
1492 fn control_handle(&self) -> &PuppetFactoryControlHandle {
1493 &self.control_handle
1494 }
1495
1496 fn drop_without_shutdown(mut self) {
1497 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
1499 std::mem::forget(self);
1501 }
1502}
1503
1504impl PuppetFactoryCreateResponder {
1505 pub fn send(self, mut payload: PuppetFactoryCreateResponse) -> Result<(), fidl::Error> {
1509 let _result = self.send_raw(payload);
1510 if _result.is_err() {
1511 self.control_handle.shutdown();
1512 }
1513 self.drop_without_shutdown();
1514 _result
1515 }
1516
1517 pub fn send_no_shutdown_on_err(
1519 self,
1520 mut payload: PuppetFactoryCreateResponse,
1521 ) -> Result<(), fidl::Error> {
1522 let _result = self.send_raw(payload);
1523 self.drop_without_shutdown();
1524 _result
1525 }
1526
1527 fn send_raw(&self, mut payload: PuppetFactoryCreateResponse) -> Result<(), fidl::Error> {
1528 self.control_handle.inner.send::<PuppetFactoryCreateResponse>(
1529 &mut payload,
1530 self.tx_id,
1531 0x4f90811dc284b595,
1532 fidl::encoding::DynamicFlags::empty(),
1533 )
1534 }
1535}
1536
1537mod internal {
1538 use super::*;
1539
1540 impl PuppetCreationArgs {
1541 #[inline(always)]
1542 fn max_ordinal_present(&self) -> u64 {
1543 if let Some(_) = self.focuser {
1544 return 9;
1545 }
1546 if let Some(_) = self.device_pixel_ratio {
1547 return 8;
1548 }
1549 if let Some(_) = self.keyboard_client {
1550 return 7;
1551 }
1552 if let Some(_) = self.flatland_client {
1553 return 6;
1554 }
1555 if let Some(_) = self.keyboard_listener {
1556 return 5;
1557 }
1558 if let Some(_) = self.mouse_listener {
1559 return 4;
1560 }
1561 if let Some(_) = self.touch_listener {
1562 return 3;
1563 }
1564 if let Some(_) = self.view_token {
1565 return 2;
1566 }
1567 if let Some(_) = self.server_end {
1568 return 1;
1569 }
1570 0
1571 }
1572 }
1573
1574 impl fidl::encoding::ResourceTypeMarker for PuppetCreationArgs {
1575 type Borrowed<'a> = &'a mut Self;
1576 fn take_or_borrow<'a>(
1577 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
1578 ) -> Self::Borrowed<'a> {
1579 value
1580 }
1581 }
1582
1583 unsafe impl fidl::encoding::TypeMarker for PuppetCreationArgs {
1584 type Owned = Self;
1585
1586 #[inline(always)]
1587 fn inline_align(_context: fidl::encoding::Context) -> usize {
1588 8
1589 }
1590
1591 #[inline(always)]
1592 fn inline_size(_context: fidl::encoding::Context) -> usize {
1593 16
1594 }
1595 }
1596
1597 unsafe impl
1598 fidl::encoding::Encode<PuppetCreationArgs, fidl::encoding::DefaultFuchsiaResourceDialect>
1599 for &mut PuppetCreationArgs
1600 {
1601 unsafe fn encode(
1602 self,
1603 encoder: &mut fidl::encoding::Encoder<
1604 '_,
1605 fidl::encoding::DefaultFuchsiaResourceDialect,
1606 >,
1607 offset: usize,
1608 mut depth: fidl::encoding::Depth,
1609 ) -> fidl::Result<()> {
1610 encoder.debug_check_bounds::<PuppetCreationArgs>(offset);
1611 let max_ordinal: u64 = self.max_ordinal_present();
1613 encoder.write_num(max_ordinal, offset);
1614 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
1615 if max_ordinal == 0 {
1617 return Ok(());
1618 }
1619 depth.increment()?;
1620 let envelope_size = 8;
1621 let bytes_len = max_ordinal as usize * envelope_size;
1622 #[allow(unused_variables)]
1623 let offset = encoder.out_of_line_offset(bytes_len);
1624 let mut _prev_end_offset: usize = 0;
1625 if 1 > max_ordinal {
1626 return Ok(());
1627 }
1628
1629 let cur_offset: usize = (1 - 1) * envelope_size;
1632
1633 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1635
1636 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<PuppetMarker>>, fidl::encoding::DefaultFuchsiaResourceDialect>(
1641 self.server_end.as_mut().map(<fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<PuppetMarker>> as fidl::encoding::ResourceTypeMarker>::take_or_borrow),
1642 encoder, offset + cur_offset, depth
1643 )?;
1644
1645 _prev_end_offset = cur_offset + envelope_size;
1646 if 2 > max_ordinal {
1647 return Ok(());
1648 }
1649
1650 let cur_offset: usize = (2 - 1) * envelope_size;
1653
1654 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1656
1657 fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_ui_views::ViewCreationToken, fidl::encoding::DefaultFuchsiaResourceDialect>(
1662 self.view_token.as_mut().map(<fidl_fuchsia_ui_views::ViewCreationToken as fidl::encoding::ResourceTypeMarker>::take_or_borrow),
1663 encoder, offset + cur_offset, depth
1664 )?;
1665
1666 _prev_end_offset = cur_offset + envelope_size;
1667 if 3 > max_ordinal {
1668 return Ok(());
1669 }
1670
1671 let cur_offset: usize = (3 - 1) * envelope_size;
1674
1675 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1677
1678 fidl::encoding::encode_in_envelope_optional::<
1683 fidl::encoding::Endpoint<
1684 fidl::endpoints::ClientEnd<
1685 fidl_fuchsia_ui_test_input::TouchInputListenerMarker,
1686 >,
1687 >,
1688 fidl::encoding::DefaultFuchsiaResourceDialect,
1689 >(
1690 self.touch_listener.as_mut().map(
1691 <fidl::encoding::Endpoint<
1692 fidl::endpoints::ClientEnd<
1693 fidl_fuchsia_ui_test_input::TouchInputListenerMarker,
1694 >,
1695 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow,
1696 ),
1697 encoder,
1698 offset + cur_offset,
1699 depth,
1700 )?;
1701
1702 _prev_end_offset = cur_offset + envelope_size;
1703 if 4 > max_ordinal {
1704 return Ok(());
1705 }
1706
1707 let cur_offset: usize = (4 - 1) * envelope_size;
1710
1711 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1713
1714 fidl::encoding::encode_in_envelope_optional::<
1719 fidl::encoding::Endpoint<
1720 fidl::endpoints::ClientEnd<
1721 fidl_fuchsia_ui_test_input::MouseInputListenerMarker,
1722 >,
1723 >,
1724 fidl::encoding::DefaultFuchsiaResourceDialect,
1725 >(
1726 self.mouse_listener.as_mut().map(
1727 <fidl::encoding::Endpoint<
1728 fidl::endpoints::ClientEnd<
1729 fidl_fuchsia_ui_test_input::MouseInputListenerMarker,
1730 >,
1731 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow,
1732 ),
1733 encoder,
1734 offset + cur_offset,
1735 depth,
1736 )?;
1737
1738 _prev_end_offset = cur_offset + envelope_size;
1739 if 5 > max_ordinal {
1740 return Ok(());
1741 }
1742
1743 let cur_offset: usize = (5 - 1) * envelope_size;
1746
1747 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1749
1750 fidl::encoding::encode_in_envelope_optional::<
1755 fidl::encoding::Endpoint<
1756 fidl::endpoints::ClientEnd<
1757 fidl_fuchsia_ui_test_input::KeyboardInputListenerMarker,
1758 >,
1759 >,
1760 fidl::encoding::DefaultFuchsiaResourceDialect,
1761 >(
1762 self.keyboard_listener.as_mut().map(
1763 <fidl::encoding::Endpoint<
1764 fidl::endpoints::ClientEnd<
1765 fidl_fuchsia_ui_test_input::KeyboardInputListenerMarker,
1766 >,
1767 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow,
1768 ),
1769 encoder,
1770 offset + cur_offset,
1771 depth,
1772 )?;
1773
1774 _prev_end_offset = cur_offset + envelope_size;
1775 if 6 > max_ordinal {
1776 return Ok(());
1777 }
1778
1779 let cur_offset: usize = (6 - 1) * envelope_size;
1782
1783 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1785
1786 fidl::encoding::encode_in_envelope_optional::<
1791 fidl::encoding::Endpoint<
1792 fidl::endpoints::ClientEnd<fidl_fuchsia_ui_composition::FlatlandMarker>,
1793 >,
1794 fidl::encoding::DefaultFuchsiaResourceDialect,
1795 >(
1796 self.flatland_client.as_mut().map(
1797 <fidl::encoding::Endpoint<
1798 fidl::endpoints::ClientEnd<fidl_fuchsia_ui_composition::FlatlandMarker>,
1799 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow,
1800 ),
1801 encoder,
1802 offset + cur_offset,
1803 depth,
1804 )?;
1805
1806 _prev_end_offset = cur_offset + envelope_size;
1807 if 7 > max_ordinal {
1808 return Ok(());
1809 }
1810
1811 let cur_offset: usize = (7 - 1) * envelope_size;
1814
1815 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1817
1818 fidl::encoding::encode_in_envelope_optional::<
1823 fidl::encoding::Endpoint<
1824 fidl::endpoints::ClientEnd<fidl_fuchsia_ui_input3::KeyboardMarker>,
1825 >,
1826 fidl::encoding::DefaultFuchsiaResourceDialect,
1827 >(
1828 self.keyboard_client.as_mut().map(
1829 <fidl::encoding::Endpoint<
1830 fidl::endpoints::ClientEnd<fidl_fuchsia_ui_input3::KeyboardMarker>,
1831 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow,
1832 ),
1833 encoder,
1834 offset + cur_offset,
1835 depth,
1836 )?;
1837
1838 _prev_end_offset = cur_offset + envelope_size;
1839 if 8 > max_ordinal {
1840 return Ok(());
1841 }
1842
1843 let cur_offset: usize = (8 - 1) * envelope_size;
1846
1847 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1849
1850 fidl::encoding::encode_in_envelope_optional::<
1855 f32,
1856 fidl::encoding::DefaultFuchsiaResourceDialect,
1857 >(
1858 self.device_pixel_ratio
1859 .as_ref()
1860 .map(<f32 as fidl::encoding::ValueTypeMarker>::borrow),
1861 encoder,
1862 offset + cur_offset,
1863 depth,
1864 )?;
1865
1866 _prev_end_offset = cur_offset + envelope_size;
1867 if 9 > max_ordinal {
1868 return Ok(());
1869 }
1870
1871 let cur_offset: usize = (9 - 1) * envelope_size;
1874
1875 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1877
1878 fidl::encoding::encode_in_envelope_optional::<
1883 fidl::encoding::Endpoint<
1884 fidl::endpoints::ServerEnd<fidl_fuchsia_ui_views::FocuserMarker>,
1885 >,
1886 fidl::encoding::DefaultFuchsiaResourceDialect,
1887 >(
1888 self.focuser.as_mut().map(
1889 <fidl::encoding::Endpoint<
1890 fidl::endpoints::ServerEnd<fidl_fuchsia_ui_views::FocuserMarker>,
1891 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow,
1892 ),
1893 encoder,
1894 offset + cur_offset,
1895 depth,
1896 )?;
1897
1898 _prev_end_offset = cur_offset + envelope_size;
1899
1900 Ok(())
1901 }
1902 }
1903
1904 impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
1905 for PuppetCreationArgs
1906 {
1907 #[inline(always)]
1908 fn new_empty() -> Self {
1909 Self::default()
1910 }
1911
1912 unsafe fn decode(
1913 &mut self,
1914 decoder: &mut fidl::encoding::Decoder<
1915 '_,
1916 fidl::encoding::DefaultFuchsiaResourceDialect,
1917 >,
1918 offset: usize,
1919 mut depth: fidl::encoding::Depth,
1920 ) -> fidl::Result<()> {
1921 decoder.debug_check_bounds::<Self>(offset);
1922 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
1923 None => return Err(fidl::Error::NotNullable),
1924 Some(len) => len,
1925 };
1926 if len == 0 {
1928 return Ok(());
1929 };
1930 depth.increment()?;
1931 let envelope_size = 8;
1932 let bytes_len = len * envelope_size;
1933 let offset = decoder.out_of_line_offset(bytes_len)?;
1934 let mut _next_ordinal_to_read = 0;
1936 let mut next_offset = offset;
1937 let end_offset = offset + bytes_len;
1938 _next_ordinal_to_read += 1;
1939 if next_offset >= end_offset {
1940 return Ok(());
1941 }
1942
1943 while _next_ordinal_to_read < 1 {
1945 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1946 _next_ordinal_to_read += 1;
1947 next_offset += envelope_size;
1948 }
1949
1950 let next_out_of_line = decoder.next_out_of_line();
1951 let handles_before = decoder.remaining_handles();
1952 if let Some((inlined, num_bytes, num_handles)) =
1953 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1954 {
1955 let member_inline_size = <fidl::encoding::Endpoint<
1956 fidl::endpoints::ServerEnd<PuppetMarker>,
1957 > as fidl::encoding::TypeMarker>::inline_size(
1958 decoder.context
1959 );
1960 if inlined != (member_inline_size <= 4) {
1961 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1962 }
1963 let inner_offset;
1964 let mut inner_depth = depth.clone();
1965 if inlined {
1966 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1967 inner_offset = next_offset;
1968 } else {
1969 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1970 inner_depth.increment()?;
1971 }
1972 let val_ref = self.server_end.get_or_insert_with(|| {
1973 fidl::new_empty!(
1974 fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<PuppetMarker>>,
1975 fidl::encoding::DefaultFuchsiaResourceDialect
1976 )
1977 });
1978 fidl::decode!(
1979 fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<PuppetMarker>>,
1980 fidl::encoding::DefaultFuchsiaResourceDialect,
1981 val_ref,
1982 decoder,
1983 inner_offset,
1984 inner_depth
1985 )?;
1986 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1987 {
1988 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1989 }
1990 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1991 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1992 }
1993 }
1994
1995 next_offset += envelope_size;
1996 _next_ordinal_to_read += 1;
1997 if next_offset >= end_offset {
1998 return Ok(());
1999 }
2000
2001 while _next_ordinal_to_read < 2 {
2003 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2004 _next_ordinal_to_read += 1;
2005 next_offset += envelope_size;
2006 }
2007
2008 let next_out_of_line = decoder.next_out_of_line();
2009 let handles_before = decoder.remaining_handles();
2010 if let Some((inlined, num_bytes, num_handles)) =
2011 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2012 {
2013 let member_inline_size = <fidl_fuchsia_ui_views::ViewCreationToken as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2014 if inlined != (member_inline_size <= 4) {
2015 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2016 }
2017 let inner_offset;
2018 let mut inner_depth = depth.clone();
2019 if inlined {
2020 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2021 inner_offset = next_offset;
2022 } else {
2023 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2024 inner_depth.increment()?;
2025 }
2026 let val_ref = self.view_token.get_or_insert_with(|| {
2027 fidl::new_empty!(
2028 fidl_fuchsia_ui_views::ViewCreationToken,
2029 fidl::encoding::DefaultFuchsiaResourceDialect
2030 )
2031 });
2032 fidl::decode!(
2033 fidl_fuchsia_ui_views::ViewCreationToken,
2034 fidl::encoding::DefaultFuchsiaResourceDialect,
2035 val_ref,
2036 decoder,
2037 inner_offset,
2038 inner_depth
2039 )?;
2040 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2041 {
2042 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2043 }
2044 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2045 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2046 }
2047 }
2048
2049 next_offset += envelope_size;
2050 _next_ordinal_to_read += 1;
2051 if next_offset >= end_offset {
2052 return Ok(());
2053 }
2054
2055 while _next_ordinal_to_read < 3 {
2057 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2058 _next_ordinal_to_read += 1;
2059 next_offset += envelope_size;
2060 }
2061
2062 let next_out_of_line = decoder.next_out_of_line();
2063 let handles_before = decoder.remaining_handles();
2064 if let Some((inlined, num_bytes, num_handles)) =
2065 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2066 {
2067 let member_inline_size = <fidl::encoding::Endpoint<
2068 fidl::endpoints::ClientEnd<
2069 fidl_fuchsia_ui_test_input::TouchInputListenerMarker,
2070 >,
2071 > as fidl::encoding::TypeMarker>::inline_size(
2072 decoder.context
2073 );
2074 if inlined != (member_inline_size <= 4) {
2075 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2076 }
2077 let inner_offset;
2078 let mut inner_depth = depth.clone();
2079 if inlined {
2080 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2081 inner_offset = next_offset;
2082 } else {
2083 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2084 inner_depth.increment()?;
2085 }
2086 let val_ref = self.touch_listener.get_or_insert_with(|| {
2087 fidl::new_empty!(
2088 fidl::encoding::Endpoint<
2089 fidl::endpoints::ClientEnd<
2090 fidl_fuchsia_ui_test_input::TouchInputListenerMarker,
2091 >,
2092 >,
2093 fidl::encoding::DefaultFuchsiaResourceDialect
2094 )
2095 });
2096 fidl::decode!(
2097 fidl::encoding::Endpoint<
2098 fidl::endpoints::ClientEnd<
2099 fidl_fuchsia_ui_test_input::TouchInputListenerMarker,
2100 >,
2101 >,
2102 fidl::encoding::DefaultFuchsiaResourceDialect,
2103 val_ref,
2104 decoder,
2105 inner_offset,
2106 inner_depth
2107 )?;
2108 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2109 {
2110 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2111 }
2112 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2113 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2114 }
2115 }
2116
2117 next_offset += envelope_size;
2118 _next_ordinal_to_read += 1;
2119 if next_offset >= end_offset {
2120 return Ok(());
2121 }
2122
2123 while _next_ordinal_to_read < 4 {
2125 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2126 _next_ordinal_to_read += 1;
2127 next_offset += envelope_size;
2128 }
2129
2130 let next_out_of_line = decoder.next_out_of_line();
2131 let handles_before = decoder.remaining_handles();
2132 if let Some((inlined, num_bytes, num_handles)) =
2133 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2134 {
2135 let member_inline_size = <fidl::encoding::Endpoint<
2136 fidl::endpoints::ClientEnd<
2137 fidl_fuchsia_ui_test_input::MouseInputListenerMarker,
2138 >,
2139 > as fidl::encoding::TypeMarker>::inline_size(
2140 decoder.context
2141 );
2142 if inlined != (member_inline_size <= 4) {
2143 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2144 }
2145 let inner_offset;
2146 let mut inner_depth = depth.clone();
2147 if inlined {
2148 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2149 inner_offset = next_offset;
2150 } else {
2151 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2152 inner_depth.increment()?;
2153 }
2154 let val_ref = self.mouse_listener.get_or_insert_with(|| {
2155 fidl::new_empty!(
2156 fidl::encoding::Endpoint<
2157 fidl::endpoints::ClientEnd<
2158 fidl_fuchsia_ui_test_input::MouseInputListenerMarker,
2159 >,
2160 >,
2161 fidl::encoding::DefaultFuchsiaResourceDialect
2162 )
2163 });
2164 fidl::decode!(
2165 fidl::encoding::Endpoint<
2166 fidl::endpoints::ClientEnd<
2167 fidl_fuchsia_ui_test_input::MouseInputListenerMarker,
2168 >,
2169 >,
2170 fidl::encoding::DefaultFuchsiaResourceDialect,
2171 val_ref,
2172 decoder,
2173 inner_offset,
2174 inner_depth
2175 )?;
2176 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2177 {
2178 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2179 }
2180 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2181 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2182 }
2183 }
2184
2185 next_offset += envelope_size;
2186 _next_ordinal_to_read += 1;
2187 if next_offset >= end_offset {
2188 return Ok(());
2189 }
2190
2191 while _next_ordinal_to_read < 5 {
2193 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2194 _next_ordinal_to_read += 1;
2195 next_offset += envelope_size;
2196 }
2197
2198 let next_out_of_line = decoder.next_out_of_line();
2199 let handles_before = decoder.remaining_handles();
2200 if let Some((inlined, num_bytes, num_handles)) =
2201 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2202 {
2203 let member_inline_size = <fidl::encoding::Endpoint<
2204 fidl::endpoints::ClientEnd<
2205 fidl_fuchsia_ui_test_input::KeyboardInputListenerMarker,
2206 >,
2207 > as fidl::encoding::TypeMarker>::inline_size(
2208 decoder.context
2209 );
2210 if inlined != (member_inline_size <= 4) {
2211 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2212 }
2213 let inner_offset;
2214 let mut inner_depth = depth.clone();
2215 if inlined {
2216 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2217 inner_offset = next_offset;
2218 } else {
2219 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2220 inner_depth.increment()?;
2221 }
2222 let val_ref = self.keyboard_listener.get_or_insert_with(|| {
2223 fidl::new_empty!(
2224 fidl::encoding::Endpoint<
2225 fidl::endpoints::ClientEnd<
2226 fidl_fuchsia_ui_test_input::KeyboardInputListenerMarker,
2227 >,
2228 >,
2229 fidl::encoding::DefaultFuchsiaResourceDialect
2230 )
2231 });
2232 fidl::decode!(
2233 fidl::encoding::Endpoint<
2234 fidl::endpoints::ClientEnd<
2235 fidl_fuchsia_ui_test_input::KeyboardInputListenerMarker,
2236 >,
2237 >,
2238 fidl::encoding::DefaultFuchsiaResourceDialect,
2239 val_ref,
2240 decoder,
2241 inner_offset,
2242 inner_depth
2243 )?;
2244 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2245 {
2246 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2247 }
2248 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2249 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2250 }
2251 }
2252
2253 next_offset += envelope_size;
2254 _next_ordinal_to_read += 1;
2255 if next_offset >= end_offset {
2256 return Ok(());
2257 }
2258
2259 while _next_ordinal_to_read < 6 {
2261 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2262 _next_ordinal_to_read += 1;
2263 next_offset += envelope_size;
2264 }
2265
2266 let next_out_of_line = decoder.next_out_of_line();
2267 let handles_before = decoder.remaining_handles();
2268 if let Some((inlined, num_bytes, num_handles)) =
2269 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2270 {
2271 let member_inline_size = <fidl::encoding::Endpoint<
2272 fidl::endpoints::ClientEnd<fidl_fuchsia_ui_composition::FlatlandMarker>,
2273 > as fidl::encoding::TypeMarker>::inline_size(
2274 decoder.context
2275 );
2276 if inlined != (member_inline_size <= 4) {
2277 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2278 }
2279 let inner_offset;
2280 let mut inner_depth = depth.clone();
2281 if inlined {
2282 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2283 inner_offset = next_offset;
2284 } else {
2285 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2286 inner_depth.increment()?;
2287 }
2288 let val_ref = self.flatland_client.get_or_insert_with(|| {
2289 fidl::new_empty!(
2290 fidl::encoding::Endpoint<
2291 fidl::endpoints::ClientEnd<fidl_fuchsia_ui_composition::FlatlandMarker>,
2292 >,
2293 fidl::encoding::DefaultFuchsiaResourceDialect
2294 )
2295 });
2296 fidl::decode!(
2297 fidl::encoding::Endpoint<
2298 fidl::endpoints::ClientEnd<fidl_fuchsia_ui_composition::FlatlandMarker>,
2299 >,
2300 fidl::encoding::DefaultFuchsiaResourceDialect,
2301 val_ref,
2302 decoder,
2303 inner_offset,
2304 inner_depth
2305 )?;
2306 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2307 {
2308 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2309 }
2310 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2311 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2312 }
2313 }
2314
2315 next_offset += envelope_size;
2316 _next_ordinal_to_read += 1;
2317 if next_offset >= end_offset {
2318 return Ok(());
2319 }
2320
2321 while _next_ordinal_to_read < 7 {
2323 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2324 _next_ordinal_to_read += 1;
2325 next_offset += envelope_size;
2326 }
2327
2328 let next_out_of_line = decoder.next_out_of_line();
2329 let handles_before = decoder.remaining_handles();
2330 if let Some((inlined, num_bytes, num_handles)) =
2331 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2332 {
2333 let member_inline_size = <fidl::encoding::Endpoint<
2334 fidl::endpoints::ClientEnd<fidl_fuchsia_ui_input3::KeyboardMarker>,
2335 > as fidl::encoding::TypeMarker>::inline_size(
2336 decoder.context
2337 );
2338 if inlined != (member_inline_size <= 4) {
2339 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2340 }
2341 let inner_offset;
2342 let mut inner_depth = depth.clone();
2343 if inlined {
2344 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2345 inner_offset = next_offset;
2346 } else {
2347 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2348 inner_depth.increment()?;
2349 }
2350 let val_ref = self.keyboard_client.get_or_insert_with(|| {
2351 fidl::new_empty!(
2352 fidl::encoding::Endpoint<
2353 fidl::endpoints::ClientEnd<fidl_fuchsia_ui_input3::KeyboardMarker>,
2354 >,
2355 fidl::encoding::DefaultFuchsiaResourceDialect
2356 )
2357 });
2358 fidl::decode!(
2359 fidl::encoding::Endpoint<
2360 fidl::endpoints::ClientEnd<fidl_fuchsia_ui_input3::KeyboardMarker>,
2361 >,
2362 fidl::encoding::DefaultFuchsiaResourceDialect,
2363 val_ref,
2364 decoder,
2365 inner_offset,
2366 inner_depth
2367 )?;
2368 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2369 {
2370 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2371 }
2372 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2373 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2374 }
2375 }
2376
2377 next_offset += envelope_size;
2378 _next_ordinal_to_read += 1;
2379 if next_offset >= end_offset {
2380 return Ok(());
2381 }
2382
2383 while _next_ordinal_to_read < 8 {
2385 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2386 _next_ordinal_to_read += 1;
2387 next_offset += envelope_size;
2388 }
2389
2390 let next_out_of_line = decoder.next_out_of_line();
2391 let handles_before = decoder.remaining_handles();
2392 if let Some((inlined, num_bytes, num_handles)) =
2393 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2394 {
2395 let member_inline_size =
2396 <f32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2397 if inlined != (member_inline_size <= 4) {
2398 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2399 }
2400 let inner_offset;
2401 let mut inner_depth = depth.clone();
2402 if inlined {
2403 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2404 inner_offset = next_offset;
2405 } else {
2406 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2407 inner_depth.increment()?;
2408 }
2409 let val_ref = self.device_pixel_ratio.get_or_insert_with(|| {
2410 fidl::new_empty!(f32, fidl::encoding::DefaultFuchsiaResourceDialect)
2411 });
2412 fidl::decode!(
2413 f32,
2414 fidl::encoding::DefaultFuchsiaResourceDialect,
2415 val_ref,
2416 decoder,
2417 inner_offset,
2418 inner_depth
2419 )?;
2420 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2421 {
2422 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2423 }
2424 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2425 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2426 }
2427 }
2428
2429 next_offset += envelope_size;
2430 _next_ordinal_to_read += 1;
2431 if next_offset >= end_offset {
2432 return Ok(());
2433 }
2434
2435 while _next_ordinal_to_read < 9 {
2437 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2438 _next_ordinal_to_read += 1;
2439 next_offset += envelope_size;
2440 }
2441
2442 let next_out_of_line = decoder.next_out_of_line();
2443 let handles_before = decoder.remaining_handles();
2444 if let Some((inlined, num_bytes, num_handles)) =
2445 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2446 {
2447 let member_inline_size = <fidl::encoding::Endpoint<
2448 fidl::endpoints::ServerEnd<fidl_fuchsia_ui_views::FocuserMarker>,
2449 > as fidl::encoding::TypeMarker>::inline_size(
2450 decoder.context
2451 );
2452 if inlined != (member_inline_size <= 4) {
2453 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2454 }
2455 let inner_offset;
2456 let mut inner_depth = depth.clone();
2457 if inlined {
2458 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2459 inner_offset = next_offset;
2460 } else {
2461 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2462 inner_depth.increment()?;
2463 }
2464 let val_ref = self.focuser.get_or_insert_with(|| {
2465 fidl::new_empty!(
2466 fidl::encoding::Endpoint<
2467 fidl::endpoints::ServerEnd<fidl_fuchsia_ui_views::FocuserMarker>,
2468 >,
2469 fidl::encoding::DefaultFuchsiaResourceDialect
2470 )
2471 });
2472 fidl::decode!(
2473 fidl::encoding::Endpoint<
2474 fidl::endpoints::ServerEnd<fidl_fuchsia_ui_views::FocuserMarker>,
2475 >,
2476 fidl::encoding::DefaultFuchsiaResourceDialect,
2477 val_ref,
2478 decoder,
2479 inner_offset,
2480 inner_depth
2481 )?;
2482 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2483 {
2484 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2485 }
2486 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2487 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2488 }
2489 }
2490
2491 next_offset += envelope_size;
2492
2493 while next_offset < end_offset {
2495 _next_ordinal_to_read += 1;
2496 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2497 next_offset += envelope_size;
2498 }
2499
2500 Ok(())
2501 }
2502 }
2503
2504 impl PuppetEmbedRemoteViewResponse {
2505 #[inline(always)]
2506 fn max_ordinal_present(&self) -> u64 {
2507 if let Some(_) = self.view_creation_token {
2508 return 2;
2509 }
2510 if let Some(_) = self.result {
2511 return 1;
2512 }
2513 0
2514 }
2515 }
2516
2517 impl fidl::encoding::ResourceTypeMarker for PuppetEmbedRemoteViewResponse {
2518 type Borrowed<'a> = &'a mut Self;
2519 fn take_or_borrow<'a>(
2520 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
2521 ) -> Self::Borrowed<'a> {
2522 value
2523 }
2524 }
2525
2526 unsafe impl fidl::encoding::TypeMarker for PuppetEmbedRemoteViewResponse {
2527 type Owned = Self;
2528
2529 #[inline(always)]
2530 fn inline_align(_context: fidl::encoding::Context) -> usize {
2531 8
2532 }
2533
2534 #[inline(always)]
2535 fn inline_size(_context: fidl::encoding::Context) -> usize {
2536 16
2537 }
2538 }
2539
2540 unsafe impl
2541 fidl::encoding::Encode<
2542 PuppetEmbedRemoteViewResponse,
2543 fidl::encoding::DefaultFuchsiaResourceDialect,
2544 > for &mut PuppetEmbedRemoteViewResponse
2545 {
2546 unsafe fn encode(
2547 self,
2548 encoder: &mut fidl::encoding::Encoder<
2549 '_,
2550 fidl::encoding::DefaultFuchsiaResourceDialect,
2551 >,
2552 offset: usize,
2553 mut depth: fidl::encoding::Depth,
2554 ) -> fidl::Result<()> {
2555 encoder.debug_check_bounds::<PuppetEmbedRemoteViewResponse>(offset);
2556 let max_ordinal: u64 = self.max_ordinal_present();
2558 encoder.write_num(max_ordinal, offset);
2559 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
2560 if max_ordinal == 0 {
2562 return Ok(());
2563 }
2564 depth.increment()?;
2565 let envelope_size = 8;
2566 let bytes_len = max_ordinal as usize * envelope_size;
2567 #[allow(unused_variables)]
2568 let offset = encoder.out_of_line_offset(bytes_len);
2569 let mut _prev_end_offset: usize = 0;
2570 if 1 > max_ordinal {
2571 return Ok(());
2572 }
2573
2574 let cur_offset: usize = (1 - 1) * envelope_size;
2577
2578 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2580
2581 fidl::encoding::encode_in_envelope_optional::<
2586 Result_,
2587 fidl::encoding::DefaultFuchsiaResourceDialect,
2588 >(
2589 self.result.as_ref().map(<Result_ as fidl::encoding::ValueTypeMarker>::borrow),
2590 encoder,
2591 offset + cur_offset,
2592 depth,
2593 )?;
2594
2595 _prev_end_offset = cur_offset + envelope_size;
2596 if 2 > max_ordinal {
2597 return Ok(());
2598 }
2599
2600 let cur_offset: usize = (2 - 1) * envelope_size;
2603
2604 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2606
2607 fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_ui_views::ViewCreationToken, fidl::encoding::DefaultFuchsiaResourceDialect>(
2612 self.view_creation_token.as_mut().map(<fidl_fuchsia_ui_views::ViewCreationToken as fidl::encoding::ResourceTypeMarker>::take_or_borrow),
2613 encoder, offset + cur_offset, depth
2614 )?;
2615
2616 _prev_end_offset = cur_offset + envelope_size;
2617
2618 Ok(())
2619 }
2620 }
2621
2622 impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
2623 for PuppetEmbedRemoteViewResponse
2624 {
2625 #[inline(always)]
2626 fn new_empty() -> Self {
2627 Self::default()
2628 }
2629
2630 unsafe fn decode(
2631 &mut self,
2632 decoder: &mut fidl::encoding::Decoder<
2633 '_,
2634 fidl::encoding::DefaultFuchsiaResourceDialect,
2635 >,
2636 offset: usize,
2637 mut depth: fidl::encoding::Depth,
2638 ) -> fidl::Result<()> {
2639 decoder.debug_check_bounds::<Self>(offset);
2640 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
2641 None => return Err(fidl::Error::NotNullable),
2642 Some(len) => len,
2643 };
2644 if len == 0 {
2646 return Ok(());
2647 };
2648 depth.increment()?;
2649 let envelope_size = 8;
2650 let bytes_len = len * envelope_size;
2651 let offset = decoder.out_of_line_offset(bytes_len)?;
2652 let mut _next_ordinal_to_read = 0;
2654 let mut next_offset = offset;
2655 let end_offset = offset + bytes_len;
2656 _next_ordinal_to_read += 1;
2657 if next_offset >= end_offset {
2658 return Ok(());
2659 }
2660
2661 while _next_ordinal_to_read < 1 {
2663 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2664 _next_ordinal_to_read += 1;
2665 next_offset += envelope_size;
2666 }
2667
2668 let next_out_of_line = decoder.next_out_of_line();
2669 let handles_before = decoder.remaining_handles();
2670 if let Some((inlined, num_bytes, num_handles)) =
2671 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2672 {
2673 let member_inline_size =
2674 <Result_ as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2675 if inlined != (member_inline_size <= 4) {
2676 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2677 }
2678 let inner_offset;
2679 let mut inner_depth = depth.clone();
2680 if inlined {
2681 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2682 inner_offset = next_offset;
2683 } else {
2684 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2685 inner_depth.increment()?;
2686 }
2687 let val_ref = self.result.get_or_insert_with(|| {
2688 fidl::new_empty!(Result_, fidl::encoding::DefaultFuchsiaResourceDialect)
2689 });
2690 fidl::decode!(
2691 Result_,
2692 fidl::encoding::DefaultFuchsiaResourceDialect,
2693 val_ref,
2694 decoder,
2695 inner_offset,
2696 inner_depth
2697 )?;
2698 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2699 {
2700 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2701 }
2702 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2703 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2704 }
2705 }
2706
2707 next_offset += envelope_size;
2708 _next_ordinal_to_read += 1;
2709 if next_offset >= end_offset {
2710 return Ok(());
2711 }
2712
2713 while _next_ordinal_to_read < 2 {
2715 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2716 _next_ordinal_to_read += 1;
2717 next_offset += envelope_size;
2718 }
2719
2720 let next_out_of_line = decoder.next_out_of_line();
2721 let handles_before = decoder.remaining_handles();
2722 if let Some((inlined, num_bytes, num_handles)) =
2723 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2724 {
2725 let member_inline_size = <fidl_fuchsia_ui_views::ViewCreationToken as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2726 if inlined != (member_inline_size <= 4) {
2727 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2728 }
2729 let inner_offset;
2730 let mut inner_depth = depth.clone();
2731 if inlined {
2732 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2733 inner_offset = next_offset;
2734 } else {
2735 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2736 inner_depth.increment()?;
2737 }
2738 let val_ref = self.view_creation_token.get_or_insert_with(|| {
2739 fidl::new_empty!(
2740 fidl_fuchsia_ui_views::ViewCreationToken,
2741 fidl::encoding::DefaultFuchsiaResourceDialect
2742 )
2743 });
2744 fidl::decode!(
2745 fidl_fuchsia_ui_views::ViewCreationToken,
2746 fidl::encoding::DefaultFuchsiaResourceDialect,
2747 val_ref,
2748 decoder,
2749 inner_offset,
2750 inner_depth
2751 )?;
2752 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2753 {
2754 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2755 }
2756 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2757 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2758 }
2759 }
2760
2761 next_offset += envelope_size;
2762
2763 while next_offset < end_offset {
2765 _next_ordinal_to_read += 1;
2766 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2767 next_offset += envelope_size;
2768 }
2769
2770 Ok(())
2771 }
2772 }
2773
2774 impl PuppetFactoryCreateResponse {
2775 #[inline(always)]
2776 fn max_ordinal_present(&self) -> u64 {
2777 if let Some(_) = self.view_ref {
2778 return 2;
2779 }
2780 if let Some(_) = self.result {
2781 return 1;
2782 }
2783 0
2784 }
2785 }
2786
2787 impl fidl::encoding::ResourceTypeMarker for PuppetFactoryCreateResponse {
2788 type Borrowed<'a> = &'a mut Self;
2789 fn take_or_borrow<'a>(
2790 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
2791 ) -> Self::Borrowed<'a> {
2792 value
2793 }
2794 }
2795
2796 unsafe impl fidl::encoding::TypeMarker for PuppetFactoryCreateResponse {
2797 type Owned = Self;
2798
2799 #[inline(always)]
2800 fn inline_align(_context: fidl::encoding::Context) -> usize {
2801 8
2802 }
2803
2804 #[inline(always)]
2805 fn inline_size(_context: fidl::encoding::Context) -> usize {
2806 16
2807 }
2808 }
2809
2810 unsafe impl
2811 fidl::encoding::Encode<
2812 PuppetFactoryCreateResponse,
2813 fidl::encoding::DefaultFuchsiaResourceDialect,
2814 > for &mut PuppetFactoryCreateResponse
2815 {
2816 unsafe fn encode(
2817 self,
2818 encoder: &mut fidl::encoding::Encoder<
2819 '_,
2820 fidl::encoding::DefaultFuchsiaResourceDialect,
2821 >,
2822 offset: usize,
2823 mut depth: fidl::encoding::Depth,
2824 ) -> fidl::Result<()> {
2825 encoder.debug_check_bounds::<PuppetFactoryCreateResponse>(offset);
2826 let max_ordinal: u64 = self.max_ordinal_present();
2828 encoder.write_num(max_ordinal, offset);
2829 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
2830 if max_ordinal == 0 {
2832 return Ok(());
2833 }
2834 depth.increment()?;
2835 let envelope_size = 8;
2836 let bytes_len = max_ordinal as usize * envelope_size;
2837 #[allow(unused_variables)]
2838 let offset = encoder.out_of_line_offset(bytes_len);
2839 let mut _prev_end_offset: usize = 0;
2840 if 1 > max_ordinal {
2841 return Ok(());
2842 }
2843
2844 let cur_offset: usize = (1 - 1) * envelope_size;
2847
2848 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2850
2851 fidl::encoding::encode_in_envelope_optional::<
2856 Result_,
2857 fidl::encoding::DefaultFuchsiaResourceDialect,
2858 >(
2859 self.result.as_ref().map(<Result_ as fidl::encoding::ValueTypeMarker>::borrow),
2860 encoder,
2861 offset + cur_offset,
2862 depth,
2863 )?;
2864
2865 _prev_end_offset = cur_offset + envelope_size;
2866 if 2 > max_ordinal {
2867 return Ok(());
2868 }
2869
2870 let cur_offset: usize = (2 - 1) * envelope_size;
2873
2874 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2876
2877 fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_ui_views::ViewRef, fidl::encoding::DefaultFuchsiaResourceDialect>(
2882 self.view_ref.as_mut().map(<fidl_fuchsia_ui_views::ViewRef as fidl::encoding::ResourceTypeMarker>::take_or_borrow),
2883 encoder, offset + cur_offset, depth
2884 )?;
2885
2886 _prev_end_offset = cur_offset + envelope_size;
2887
2888 Ok(())
2889 }
2890 }
2891
2892 impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
2893 for PuppetFactoryCreateResponse
2894 {
2895 #[inline(always)]
2896 fn new_empty() -> Self {
2897 Self::default()
2898 }
2899
2900 unsafe fn decode(
2901 &mut self,
2902 decoder: &mut fidl::encoding::Decoder<
2903 '_,
2904 fidl::encoding::DefaultFuchsiaResourceDialect,
2905 >,
2906 offset: usize,
2907 mut depth: fidl::encoding::Depth,
2908 ) -> fidl::Result<()> {
2909 decoder.debug_check_bounds::<Self>(offset);
2910 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
2911 None => return Err(fidl::Error::NotNullable),
2912 Some(len) => len,
2913 };
2914 if len == 0 {
2916 return Ok(());
2917 };
2918 depth.increment()?;
2919 let envelope_size = 8;
2920 let bytes_len = len * envelope_size;
2921 let offset = decoder.out_of_line_offset(bytes_len)?;
2922 let mut _next_ordinal_to_read = 0;
2924 let mut next_offset = offset;
2925 let end_offset = offset + bytes_len;
2926 _next_ordinal_to_read += 1;
2927 if next_offset >= end_offset {
2928 return Ok(());
2929 }
2930
2931 while _next_ordinal_to_read < 1 {
2933 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2934 _next_ordinal_to_read += 1;
2935 next_offset += envelope_size;
2936 }
2937
2938 let next_out_of_line = decoder.next_out_of_line();
2939 let handles_before = decoder.remaining_handles();
2940 if let Some((inlined, num_bytes, num_handles)) =
2941 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2942 {
2943 let member_inline_size =
2944 <Result_ as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2945 if inlined != (member_inline_size <= 4) {
2946 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2947 }
2948 let inner_offset;
2949 let mut inner_depth = depth.clone();
2950 if inlined {
2951 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2952 inner_offset = next_offset;
2953 } else {
2954 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2955 inner_depth.increment()?;
2956 }
2957 let val_ref = self.result.get_or_insert_with(|| {
2958 fidl::new_empty!(Result_, fidl::encoding::DefaultFuchsiaResourceDialect)
2959 });
2960 fidl::decode!(
2961 Result_,
2962 fidl::encoding::DefaultFuchsiaResourceDialect,
2963 val_ref,
2964 decoder,
2965 inner_offset,
2966 inner_depth
2967 )?;
2968 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2969 {
2970 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2971 }
2972 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2973 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2974 }
2975 }
2976
2977 next_offset += envelope_size;
2978 _next_ordinal_to_read += 1;
2979 if next_offset >= end_offset {
2980 return Ok(());
2981 }
2982
2983 while _next_ordinal_to_read < 2 {
2985 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2986 _next_ordinal_to_read += 1;
2987 next_offset += envelope_size;
2988 }
2989
2990 let next_out_of_line = decoder.next_out_of_line();
2991 let handles_before = decoder.remaining_handles();
2992 if let Some((inlined, num_bytes, num_handles)) =
2993 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2994 {
2995 let member_inline_size =
2996 <fidl_fuchsia_ui_views::ViewRef as fidl::encoding::TypeMarker>::inline_size(
2997 decoder.context,
2998 );
2999 if inlined != (member_inline_size <= 4) {
3000 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3001 }
3002 let inner_offset;
3003 let mut inner_depth = depth.clone();
3004 if inlined {
3005 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3006 inner_offset = next_offset;
3007 } else {
3008 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3009 inner_depth.increment()?;
3010 }
3011 let val_ref = self.view_ref.get_or_insert_with(|| {
3012 fidl::new_empty!(
3013 fidl_fuchsia_ui_views::ViewRef,
3014 fidl::encoding::DefaultFuchsiaResourceDialect
3015 )
3016 });
3017 fidl::decode!(
3018 fidl_fuchsia_ui_views::ViewRef,
3019 fidl::encoding::DefaultFuchsiaResourceDialect,
3020 val_ref,
3021 decoder,
3022 inner_offset,
3023 inner_depth
3024 )?;
3025 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3026 {
3027 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3028 }
3029 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3030 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3031 }
3032 }
3033
3034 next_offset += envelope_size;
3035
3036 while next_offset < end_offset {
3038 _next_ordinal_to_read += 1;
3039 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3040 next_offset += envelope_size;
3041 }
3042
3043 Ok(())
3044 }
3045 }
3046}