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 fidl::endpoints::ControlHandle for PuppetControlHandle {
769 fn shutdown(&self) {
770 self.inner.shutdown()
771 }
772
773 fn shutdown_with_epitaph(&self, status: zx_status::Status) {
774 self.inner.shutdown_with_epitaph(status)
775 }
776
777 fn is_closed(&self) -> bool {
778 self.inner.channel().is_closed()
779 }
780 fn on_closed(&self) -> fidl::OnSignalsRef<'_> {
781 self.inner.channel().on_closed()
782 }
783
784 #[cfg(target_os = "fuchsia")]
785 fn signal_peer(
786 &self,
787 clear_mask: zx::Signals,
788 set_mask: zx::Signals,
789 ) -> Result<(), zx_status::Status> {
790 use fidl::Peered;
791 self.inner.channel().signal_peer(clear_mask, set_mask)
792 }
793}
794
795impl PuppetControlHandle {}
796
797#[must_use = "FIDL methods require a response to be sent"]
798#[derive(Debug)]
799pub struct PuppetEmbedRemoteViewResponder {
800 control_handle: std::mem::ManuallyDrop<PuppetControlHandle>,
801 tx_id: u32,
802}
803
804impl std::ops::Drop for PuppetEmbedRemoteViewResponder {
808 fn drop(&mut self) {
809 self.control_handle.shutdown();
810 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
812 }
813}
814
815impl fidl::endpoints::Responder for PuppetEmbedRemoteViewResponder {
816 type ControlHandle = PuppetControlHandle;
817
818 fn control_handle(&self) -> &PuppetControlHandle {
819 &self.control_handle
820 }
821
822 fn drop_without_shutdown(mut self) {
823 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
825 std::mem::forget(self);
827 }
828}
829
830impl PuppetEmbedRemoteViewResponder {
831 pub fn send(self, mut payload: PuppetEmbedRemoteViewResponse) -> Result<(), fidl::Error> {
835 let _result = self.send_raw(payload);
836 if _result.is_err() {
837 self.control_handle.shutdown();
838 }
839 self.drop_without_shutdown();
840 _result
841 }
842
843 pub fn send_no_shutdown_on_err(
845 self,
846 mut payload: PuppetEmbedRemoteViewResponse,
847 ) -> Result<(), fidl::Error> {
848 let _result = self.send_raw(payload);
849 self.drop_without_shutdown();
850 _result
851 }
852
853 fn send_raw(&self, mut payload: PuppetEmbedRemoteViewResponse) -> Result<(), fidl::Error> {
854 self.control_handle.inner.send::<PuppetEmbedRemoteViewResponse>(
855 &mut payload,
856 self.tx_id,
857 0x5bb2325a988aa137,
858 fidl::encoding::DynamicFlags::empty(),
859 )
860 }
861}
862
863#[must_use = "FIDL methods require a response to be sent"]
864#[derive(Debug)]
865pub struct PuppetSetEmbeddedViewPropertiesResponder {
866 control_handle: std::mem::ManuallyDrop<PuppetControlHandle>,
867 tx_id: u32,
868}
869
870impl std::ops::Drop for PuppetSetEmbeddedViewPropertiesResponder {
874 fn drop(&mut self) {
875 self.control_handle.shutdown();
876 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
878 }
879}
880
881impl fidl::endpoints::Responder for PuppetSetEmbeddedViewPropertiesResponder {
882 type ControlHandle = PuppetControlHandle;
883
884 fn control_handle(&self) -> &PuppetControlHandle {
885 &self.control_handle
886 }
887
888 fn drop_without_shutdown(mut self) {
889 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
891 std::mem::forget(self);
893 }
894}
895
896impl PuppetSetEmbeddedViewPropertiesResponder {
897 pub fn send(
901 self,
902 mut payload: &PuppetSetEmbeddedViewPropertiesResponse,
903 ) -> Result<(), fidl::Error> {
904 let _result = self.send_raw(payload);
905 if _result.is_err() {
906 self.control_handle.shutdown();
907 }
908 self.drop_without_shutdown();
909 _result
910 }
911
912 pub fn send_no_shutdown_on_err(
914 self,
915 mut payload: &PuppetSetEmbeddedViewPropertiesResponse,
916 ) -> Result<(), fidl::Error> {
917 let _result = self.send_raw(payload);
918 self.drop_without_shutdown();
919 _result
920 }
921
922 fn send_raw(
923 &self,
924 mut payload: &PuppetSetEmbeddedViewPropertiesResponse,
925 ) -> Result<(), fidl::Error> {
926 self.control_handle.inner.send::<PuppetSetEmbeddedViewPropertiesResponse>(
927 payload,
928 self.tx_id,
929 0x409a7f3de135c709,
930 fidl::encoding::DynamicFlags::empty(),
931 )
932 }
933}
934
935#[must_use = "FIDL methods require a response to be sent"]
936#[derive(Debug)]
937pub struct PuppetDrawImageResponder {
938 control_handle: std::mem::ManuallyDrop<PuppetControlHandle>,
939 tx_id: u32,
940}
941
942impl std::ops::Drop for PuppetDrawImageResponder {
946 fn drop(&mut self) {
947 self.control_handle.shutdown();
948 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
950 }
951}
952
953impl fidl::endpoints::Responder for PuppetDrawImageResponder {
954 type ControlHandle = PuppetControlHandle;
955
956 fn control_handle(&self) -> &PuppetControlHandle {
957 &self.control_handle
958 }
959
960 fn drop_without_shutdown(mut self) {
961 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
963 std::mem::forget(self);
965 }
966}
967
968impl PuppetDrawImageResponder {
969 pub fn send(self, mut payload: &PuppetDrawImageResponse) -> Result<(), fidl::Error> {
973 let _result = self.send_raw(payload);
974 if _result.is_err() {
975 self.control_handle.shutdown();
976 }
977 self.drop_without_shutdown();
978 _result
979 }
980
981 pub fn send_no_shutdown_on_err(
983 self,
984 mut payload: &PuppetDrawImageResponse,
985 ) -> Result<(), fidl::Error> {
986 let _result = self.send_raw(payload);
987 self.drop_without_shutdown();
988 _result
989 }
990
991 fn send_raw(&self, mut payload: &PuppetDrawImageResponse) -> Result<(), fidl::Error> {
992 self.control_handle.inner.send::<PuppetDrawImageResponse>(
993 payload,
994 self.tx_id,
995 0x6d736daa48b835cc,
996 fidl::encoding::DynamicFlags::empty(),
997 )
998 }
999}
1000
1001#[must_use = "FIDL methods require a response to be sent"]
1002#[derive(Debug)]
1003pub struct PuppetSetImagePropertiesResponder {
1004 control_handle: std::mem::ManuallyDrop<PuppetControlHandle>,
1005 tx_id: u32,
1006}
1007
1008impl std::ops::Drop for PuppetSetImagePropertiesResponder {
1012 fn drop(&mut self) {
1013 self.control_handle.shutdown();
1014 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
1016 }
1017}
1018
1019impl fidl::endpoints::Responder for PuppetSetImagePropertiesResponder {
1020 type ControlHandle = PuppetControlHandle;
1021
1022 fn control_handle(&self) -> &PuppetControlHandle {
1023 &self.control_handle
1024 }
1025
1026 fn drop_without_shutdown(mut self) {
1027 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
1029 std::mem::forget(self);
1031 }
1032}
1033
1034impl PuppetSetImagePropertiesResponder {
1035 pub fn send(self, mut payload: &PuppetSetImagePropertiesResponse) -> Result<(), fidl::Error> {
1039 let _result = self.send_raw(payload);
1040 if _result.is_err() {
1041 self.control_handle.shutdown();
1042 }
1043 self.drop_without_shutdown();
1044 _result
1045 }
1046
1047 pub fn send_no_shutdown_on_err(
1049 self,
1050 mut payload: &PuppetSetImagePropertiesResponse,
1051 ) -> Result<(), fidl::Error> {
1052 let _result = self.send_raw(payload);
1053 self.drop_without_shutdown();
1054 _result
1055 }
1056
1057 fn send_raw(&self, mut payload: &PuppetSetImagePropertiesResponse) -> Result<(), fidl::Error> {
1058 self.control_handle.inner.send::<PuppetSetImagePropertiesResponse>(
1059 payload,
1060 self.tx_id,
1061 0x2683795408d033ff,
1062 fidl::encoding::DynamicFlags::empty(),
1063 )
1064 }
1065}
1066
1067#[derive(Debug, Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash)]
1068pub struct PuppetFactoryMarker;
1069
1070impl fidl::endpoints::ProtocolMarker for PuppetFactoryMarker {
1071 type Proxy = PuppetFactoryProxy;
1072 type RequestStream = PuppetFactoryRequestStream;
1073 #[cfg(target_os = "fuchsia")]
1074 type SynchronousProxy = PuppetFactorySynchronousProxy;
1075
1076 const DEBUG_NAME: &'static str = "fuchsia.ui.test.conformance.PuppetFactory";
1077}
1078impl fidl::endpoints::DiscoverableProtocolMarker for PuppetFactoryMarker {}
1079
1080pub trait PuppetFactoryProxyInterface: Send + Sync {
1081 type CreateResponseFut: std::future::Future<Output = Result<PuppetFactoryCreateResponse, fidl::Error>>
1082 + Send;
1083 fn r#create(&self, payload: PuppetCreationArgs) -> Self::CreateResponseFut;
1084}
1085#[derive(Debug)]
1086#[cfg(target_os = "fuchsia")]
1087pub struct PuppetFactorySynchronousProxy {
1088 client: fidl::client::sync::Client,
1089}
1090
1091#[cfg(target_os = "fuchsia")]
1092impl fidl::endpoints::SynchronousProxy for PuppetFactorySynchronousProxy {
1093 type Proxy = PuppetFactoryProxy;
1094 type Protocol = PuppetFactoryMarker;
1095
1096 fn from_channel(inner: fidl::Channel) -> Self {
1097 Self::new(inner)
1098 }
1099
1100 fn into_channel(self) -> fidl::Channel {
1101 self.client.into_channel()
1102 }
1103
1104 fn as_channel(&self) -> &fidl::Channel {
1105 self.client.as_channel()
1106 }
1107}
1108
1109#[cfg(target_os = "fuchsia")]
1110impl PuppetFactorySynchronousProxy {
1111 pub fn new(channel: fidl::Channel) -> Self {
1112 Self { client: fidl::client::sync::Client::new(channel) }
1113 }
1114
1115 pub fn into_channel(self) -> fidl::Channel {
1116 self.client.into_channel()
1117 }
1118
1119 pub fn wait_for_event(
1122 &self,
1123 deadline: zx::MonotonicInstant,
1124 ) -> Result<PuppetFactoryEvent, fidl::Error> {
1125 PuppetFactoryEvent::decode(self.client.wait_for_event::<PuppetFactoryMarker>(deadline)?)
1126 }
1127
1128 pub fn r#create(
1131 &self,
1132 mut payload: PuppetCreationArgs,
1133 ___deadline: zx::MonotonicInstant,
1134 ) -> Result<PuppetFactoryCreateResponse, fidl::Error> {
1135 let _response = self
1136 .client
1137 .send_query::<PuppetCreationArgs, PuppetFactoryCreateResponse, PuppetFactoryMarker>(
1138 &mut payload,
1139 0x4f90811dc284b595,
1140 fidl::encoding::DynamicFlags::empty(),
1141 ___deadline,
1142 )?;
1143 Ok(_response)
1144 }
1145}
1146
1147#[cfg(target_os = "fuchsia")]
1148impl From<PuppetFactorySynchronousProxy> for zx::NullableHandle {
1149 fn from(value: PuppetFactorySynchronousProxy) -> Self {
1150 value.into_channel().into()
1151 }
1152}
1153
1154#[cfg(target_os = "fuchsia")]
1155impl From<fidl::Channel> for PuppetFactorySynchronousProxy {
1156 fn from(value: fidl::Channel) -> Self {
1157 Self::new(value)
1158 }
1159}
1160
1161#[cfg(target_os = "fuchsia")]
1162impl fidl::endpoints::FromClient for PuppetFactorySynchronousProxy {
1163 type Protocol = PuppetFactoryMarker;
1164
1165 fn from_client(value: fidl::endpoints::ClientEnd<PuppetFactoryMarker>) -> Self {
1166 Self::new(value.into_channel())
1167 }
1168}
1169
1170#[derive(Debug, Clone)]
1171pub struct PuppetFactoryProxy {
1172 client: fidl::client::Client<fidl::encoding::DefaultFuchsiaResourceDialect>,
1173}
1174
1175impl fidl::endpoints::Proxy for PuppetFactoryProxy {
1176 type Protocol = PuppetFactoryMarker;
1177
1178 fn from_channel(inner: ::fidl::AsyncChannel) -> Self {
1179 Self::new(inner)
1180 }
1181
1182 fn into_channel(self) -> Result<::fidl::AsyncChannel, Self> {
1183 self.client.into_channel().map_err(|client| Self { client })
1184 }
1185
1186 fn as_channel(&self) -> &::fidl::AsyncChannel {
1187 self.client.as_channel()
1188 }
1189}
1190
1191impl PuppetFactoryProxy {
1192 pub fn new(channel: ::fidl::AsyncChannel) -> Self {
1194 let protocol_name = <PuppetFactoryMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
1195 Self { client: fidl::client::Client::new(channel, protocol_name) }
1196 }
1197
1198 pub fn take_event_stream(&self) -> PuppetFactoryEventStream {
1204 PuppetFactoryEventStream { event_receiver: self.client.take_event_receiver() }
1205 }
1206
1207 pub fn r#create(
1210 &self,
1211 mut payload: PuppetCreationArgs,
1212 ) -> fidl::client::QueryResponseFut<
1213 PuppetFactoryCreateResponse,
1214 fidl::encoding::DefaultFuchsiaResourceDialect,
1215 > {
1216 PuppetFactoryProxyInterface::r#create(self, payload)
1217 }
1218}
1219
1220impl PuppetFactoryProxyInterface for PuppetFactoryProxy {
1221 type CreateResponseFut = fidl::client::QueryResponseFut<
1222 PuppetFactoryCreateResponse,
1223 fidl::encoding::DefaultFuchsiaResourceDialect,
1224 >;
1225 fn r#create(&self, mut payload: PuppetCreationArgs) -> Self::CreateResponseFut {
1226 fn _decode(
1227 mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
1228 ) -> Result<PuppetFactoryCreateResponse, fidl::Error> {
1229 let _response = fidl::client::decode_transaction_body::<
1230 PuppetFactoryCreateResponse,
1231 fidl::encoding::DefaultFuchsiaResourceDialect,
1232 0x4f90811dc284b595,
1233 >(_buf?)?;
1234 Ok(_response)
1235 }
1236 self.client.send_query_and_decode::<PuppetCreationArgs, PuppetFactoryCreateResponse>(
1237 &mut payload,
1238 0x4f90811dc284b595,
1239 fidl::encoding::DynamicFlags::empty(),
1240 _decode,
1241 )
1242 }
1243}
1244
1245pub struct PuppetFactoryEventStream {
1246 event_receiver: fidl::client::EventReceiver<fidl::encoding::DefaultFuchsiaResourceDialect>,
1247}
1248
1249impl std::marker::Unpin for PuppetFactoryEventStream {}
1250
1251impl futures::stream::FusedStream for PuppetFactoryEventStream {
1252 fn is_terminated(&self) -> bool {
1253 self.event_receiver.is_terminated()
1254 }
1255}
1256
1257impl futures::Stream for PuppetFactoryEventStream {
1258 type Item = Result<PuppetFactoryEvent, fidl::Error>;
1259
1260 fn poll_next(
1261 mut self: std::pin::Pin<&mut Self>,
1262 cx: &mut std::task::Context<'_>,
1263 ) -> std::task::Poll<Option<Self::Item>> {
1264 match futures::ready!(futures::stream::StreamExt::poll_next_unpin(
1265 &mut self.event_receiver,
1266 cx
1267 )?) {
1268 Some(buf) => std::task::Poll::Ready(Some(PuppetFactoryEvent::decode(buf))),
1269 None => std::task::Poll::Ready(None),
1270 }
1271 }
1272}
1273
1274#[derive(Debug)]
1275pub enum PuppetFactoryEvent {}
1276
1277impl PuppetFactoryEvent {
1278 fn decode(
1280 mut buf: <fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc,
1281 ) -> Result<PuppetFactoryEvent, fidl::Error> {
1282 let (bytes, _handles) = buf.split_mut();
1283 let (tx_header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
1284 debug_assert_eq!(tx_header.tx_id, 0);
1285 match tx_header.ordinal {
1286 _ => Err(fidl::Error::UnknownOrdinal {
1287 ordinal: tx_header.ordinal,
1288 protocol_name: <PuppetFactoryMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
1289 }),
1290 }
1291 }
1292}
1293
1294pub struct PuppetFactoryRequestStream {
1296 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
1297 is_terminated: bool,
1298}
1299
1300impl std::marker::Unpin for PuppetFactoryRequestStream {}
1301
1302impl futures::stream::FusedStream for PuppetFactoryRequestStream {
1303 fn is_terminated(&self) -> bool {
1304 self.is_terminated
1305 }
1306}
1307
1308impl fidl::endpoints::RequestStream for PuppetFactoryRequestStream {
1309 type Protocol = PuppetFactoryMarker;
1310 type ControlHandle = PuppetFactoryControlHandle;
1311
1312 fn from_channel(channel: ::fidl::AsyncChannel) -> Self {
1313 Self { inner: std::sync::Arc::new(fidl::ServeInner::new(channel)), is_terminated: false }
1314 }
1315
1316 fn control_handle(&self) -> Self::ControlHandle {
1317 PuppetFactoryControlHandle { inner: self.inner.clone() }
1318 }
1319
1320 fn into_inner(
1321 self,
1322 ) -> (::std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>, bool)
1323 {
1324 (self.inner, self.is_terminated)
1325 }
1326
1327 fn from_inner(
1328 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
1329 is_terminated: bool,
1330 ) -> Self {
1331 Self { inner, is_terminated }
1332 }
1333}
1334
1335impl futures::Stream for PuppetFactoryRequestStream {
1336 type Item = Result<PuppetFactoryRequest, fidl::Error>;
1337
1338 fn poll_next(
1339 mut self: std::pin::Pin<&mut Self>,
1340 cx: &mut std::task::Context<'_>,
1341 ) -> std::task::Poll<Option<Self::Item>> {
1342 let this = &mut *self;
1343 if this.inner.check_shutdown(cx) {
1344 this.is_terminated = true;
1345 return std::task::Poll::Ready(None);
1346 }
1347 if this.is_terminated {
1348 panic!("polled PuppetFactoryRequestStream after completion");
1349 }
1350 fidl::encoding::with_tls_decode_buf::<_, fidl::encoding::DefaultFuchsiaResourceDialect>(
1351 |bytes, handles| {
1352 match this.inner.channel().read_etc(cx, bytes, handles) {
1353 std::task::Poll::Ready(Ok(())) => {}
1354 std::task::Poll::Pending => return std::task::Poll::Pending,
1355 std::task::Poll::Ready(Err(zx_status::Status::PEER_CLOSED)) => {
1356 this.is_terminated = true;
1357 return std::task::Poll::Ready(None);
1358 }
1359 std::task::Poll::Ready(Err(e)) => {
1360 return std::task::Poll::Ready(Some(Err(fidl::Error::ServerRequestRead(
1361 e.into(),
1362 ))));
1363 }
1364 }
1365
1366 let (header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
1368
1369 std::task::Poll::Ready(Some(match header.ordinal {
1370 0x4f90811dc284b595 => {
1371 header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
1372 let mut req = fidl::new_empty!(
1373 PuppetCreationArgs,
1374 fidl::encoding::DefaultFuchsiaResourceDialect
1375 );
1376 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<PuppetCreationArgs>(&header, _body_bytes, handles, &mut req)?;
1377 let control_handle =
1378 PuppetFactoryControlHandle { inner: this.inner.clone() };
1379 Ok(PuppetFactoryRequest::Create {
1380 payload: req,
1381 responder: PuppetFactoryCreateResponder {
1382 control_handle: std::mem::ManuallyDrop::new(control_handle),
1383 tx_id: header.tx_id,
1384 },
1385 })
1386 }
1387 _ => Err(fidl::Error::UnknownOrdinal {
1388 ordinal: header.ordinal,
1389 protocol_name:
1390 <PuppetFactoryMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
1391 }),
1392 }))
1393 },
1394 )
1395 }
1396}
1397
1398#[derive(Debug)]
1401pub enum PuppetFactoryRequest {
1402 Create { payload: PuppetCreationArgs, responder: PuppetFactoryCreateResponder },
1405}
1406
1407impl PuppetFactoryRequest {
1408 #[allow(irrefutable_let_patterns)]
1409 pub fn into_create(self) -> Option<(PuppetCreationArgs, PuppetFactoryCreateResponder)> {
1410 if let PuppetFactoryRequest::Create { payload, responder } = self {
1411 Some((payload, responder))
1412 } else {
1413 None
1414 }
1415 }
1416
1417 pub fn method_name(&self) -> &'static str {
1419 match *self {
1420 PuppetFactoryRequest::Create { .. } => "create",
1421 }
1422 }
1423}
1424
1425#[derive(Debug, Clone)]
1426pub struct PuppetFactoryControlHandle {
1427 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
1428}
1429
1430impl fidl::endpoints::ControlHandle for PuppetFactoryControlHandle {
1431 fn shutdown(&self) {
1432 self.inner.shutdown()
1433 }
1434
1435 fn shutdown_with_epitaph(&self, status: zx_status::Status) {
1436 self.inner.shutdown_with_epitaph(status)
1437 }
1438
1439 fn is_closed(&self) -> bool {
1440 self.inner.channel().is_closed()
1441 }
1442 fn on_closed(&self) -> fidl::OnSignalsRef<'_> {
1443 self.inner.channel().on_closed()
1444 }
1445
1446 #[cfg(target_os = "fuchsia")]
1447 fn signal_peer(
1448 &self,
1449 clear_mask: zx::Signals,
1450 set_mask: zx::Signals,
1451 ) -> Result<(), zx_status::Status> {
1452 use fidl::Peered;
1453 self.inner.channel().signal_peer(clear_mask, set_mask)
1454 }
1455}
1456
1457impl PuppetFactoryControlHandle {}
1458
1459#[must_use = "FIDL methods require a response to be sent"]
1460#[derive(Debug)]
1461pub struct PuppetFactoryCreateResponder {
1462 control_handle: std::mem::ManuallyDrop<PuppetFactoryControlHandle>,
1463 tx_id: u32,
1464}
1465
1466impl std::ops::Drop for PuppetFactoryCreateResponder {
1470 fn drop(&mut self) {
1471 self.control_handle.shutdown();
1472 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
1474 }
1475}
1476
1477impl fidl::endpoints::Responder for PuppetFactoryCreateResponder {
1478 type ControlHandle = PuppetFactoryControlHandle;
1479
1480 fn control_handle(&self) -> &PuppetFactoryControlHandle {
1481 &self.control_handle
1482 }
1483
1484 fn drop_without_shutdown(mut self) {
1485 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
1487 std::mem::forget(self);
1489 }
1490}
1491
1492impl PuppetFactoryCreateResponder {
1493 pub fn send(self, mut payload: PuppetFactoryCreateResponse) -> Result<(), fidl::Error> {
1497 let _result = self.send_raw(payload);
1498 if _result.is_err() {
1499 self.control_handle.shutdown();
1500 }
1501 self.drop_without_shutdown();
1502 _result
1503 }
1504
1505 pub fn send_no_shutdown_on_err(
1507 self,
1508 mut payload: PuppetFactoryCreateResponse,
1509 ) -> Result<(), fidl::Error> {
1510 let _result = self.send_raw(payload);
1511 self.drop_without_shutdown();
1512 _result
1513 }
1514
1515 fn send_raw(&self, mut payload: PuppetFactoryCreateResponse) -> Result<(), fidl::Error> {
1516 self.control_handle.inner.send::<PuppetFactoryCreateResponse>(
1517 &mut payload,
1518 self.tx_id,
1519 0x4f90811dc284b595,
1520 fidl::encoding::DynamicFlags::empty(),
1521 )
1522 }
1523}
1524
1525mod internal {
1526 use super::*;
1527
1528 impl PuppetCreationArgs {
1529 #[inline(always)]
1530 fn max_ordinal_present(&self) -> u64 {
1531 if let Some(_) = self.focuser {
1532 return 9;
1533 }
1534 if let Some(_) = self.device_pixel_ratio {
1535 return 8;
1536 }
1537 if let Some(_) = self.keyboard_client {
1538 return 7;
1539 }
1540 if let Some(_) = self.flatland_client {
1541 return 6;
1542 }
1543 if let Some(_) = self.keyboard_listener {
1544 return 5;
1545 }
1546 if let Some(_) = self.mouse_listener {
1547 return 4;
1548 }
1549 if let Some(_) = self.touch_listener {
1550 return 3;
1551 }
1552 if let Some(_) = self.view_token {
1553 return 2;
1554 }
1555 if let Some(_) = self.server_end {
1556 return 1;
1557 }
1558 0
1559 }
1560 }
1561
1562 impl fidl::encoding::ResourceTypeMarker for PuppetCreationArgs {
1563 type Borrowed<'a> = &'a mut Self;
1564 fn take_or_borrow<'a>(
1565 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
1566 ) -> Self::Borrowed<'a> {
1567 value
1568 }
1569 }
1570
1571 unsafe impl fidl::encoding::TypeMarker for PuppetCreationArgs {
1572 type Owned = Self;
1573
1574 #[inline(always)]
1575 fn inline_align(_context: fidl::encoding::Context) -> usize {
1576 8
1577 }
1578
1579 #[inline(always)]
1580 fn inline_size(_context: fidl::encoding::Context) -> usize {
1581 16
1582 }
1583 }
1584
1585 unsafe impl
1586 fidl::encoding::Encode<PuppetCreationArgs, fidl::encoding::DefaultFuchsiaResourceDialect>
1587 for &mut PuppetCreationArgs
1588 {
1589 unsafe fn encode(
1590 self,
1591 encoder: &mut fidl::encoding::Encoder<
1592 '_,
1593 fidl::encoding::DefaultFuchsiaResourceDialect,
1594 >,
1595 offset: usize,
1596 mut depth: fidl::encoding::Depth,
1597 ) -> fidl::Result<()> {
1598 encoder.debug_check_bounds::<PuppetCreationArgs>(offset);
1599 let max_ordinal: u64 = self.max_ordinal_present();
1601 encoder.write_num(max_ordinal, offset);
1602 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
1603 if max_ordinal == 0 {
1605 return Ok(());
1606 }
1607 depth.increment()?;
1608 let envelope_size = 8;
1609 let bytes_len = max_ordinal as usize * envelope_size;
1610 #[allow(unused_variables)]
1611 let offset = encoder.out_of_line_offset(bytes_len);
1612 let mut _prev_end_offset: usize = 0;
1613 if 1 > max_ordinal {
1614 return Ok(());
1615 }
1616
1617 let cur_offset: usize = (1 - 1) * envelope_size;
1620
1621 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1623
1624 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<PuppetMarker>>, fidl::encoding::DefaultFuchsiaResourceDialect>(
1629 self.server_end.as_mut().map(<fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<PuppetMarker>> as fidl::encoding::ResourceTypeMarker>::take_or_borrow),
1630 encoder, offset + cur_offset, depth
1631 )?;
1632
1633 _prev_end_offset = cur_offset + envelope_size;
1634 if 2 > max_ordinal {
1635 return Ok(());
1636 }
1637
1638 let cur_offset: usize = (2 - 1) * envelope_size;
1641
1642 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1644
1645 fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_ui_views::ViewCreationToken, fidl::encoding::DefaultFuchsiaResourceDialect>(
1650 self.view_token.as_mut().map(<fidl_fuchsia_ui_views::ViewCreationToken as fidl::encoding::ResourceTypeMarker>::take_or_borrow),
1651 encoder, offset + cur_offset, depth
1652 )?;
1653
1654 _prev_end_offset = cur_offset + envelope_size;
1655 if 3 > max_ordinal {
1656 return Ok(());
1657 }
1658
1659 let cur_offset: usize = (3 - 1) * envelope_size;
1662
1663 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1665
1666 fidl::encoding::encode_in_envelope_optional::<
1671 fidl::encoding::Endpoint<
1672 fidl::endpoints::ClientEnd<
1673 fidl_fuchsia_ui_test_input::TouchInputListenerMarker,
1674 >,
1675 >,
1676 fidl::encoding::DefaultFuchsiaResourceDialect,
1677 >(
1678 self.touch_listener.as_mut().map(
1679 <fidl::encoding::Endpoint<
1680 fidl::endpoints::ClientEnd<
1681 fidl_fuchsia_ui_test_input::TouchInputListenerMarker,
1682 >,
1683 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow,
1684 ),
1685 encoder,
1686 offset + cur_offset,
1687 depth,
1688 )?;
1689
1690 _prev_end_offset = cur_offset + envelope_size;
1691 if 4 > max_ordinal {
1692 return Ok(());
1693 }
1694
1695 let cur_offset: usize = (4 - 1) * envelope_size;
1698
1699 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1701
1702 fidl::encoding::encode_in_envelope_optional::<
1707 fidl::encoding::Endpoint<
1708 fidl::endpoints::ClientEnd<
1709 fidl_fuchsia_ui_test_input::MouseInputListenerMarker,
1710 >,
1711 >,
1712 fidl::encoding::DefaultFuchsiaResourceDialect,
1713 >(
1714 self.mouse_listener.as_mut().map(
1715 <fidl::encoding::Endpoint<
1716 fidl::endpoints::ClientEnd<
1717 fidl_fuchsia_ui_test_input::MouseInputListenerMarker,
1718 >,
1719 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow,
1720 ),
1721 encoder,
1722 offset + cur_offset,
1723 depth,
1724 )?;
1725
1726 _prev_end_offset = cur_offset + envelope_size;
1727 if 5 > max_ordinal {
1728 return Ok(());
1729 }
1730
1731 let cur_offset: usize = (5 - 1) * envelope_size;
1734
1735 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1737
1738 fidl::encoding::encode_in_envelope_optional::<
1743 fidl::encoding::Endpoint<
1744 fidl::endpoints::ClientEnd<
1745 fidl_fuchsia_ui_test_input::KeyboardInputListenerMarker,
1746 >,
1747 >,
1748 fidl::encoding::DefaultFuchsiaResourceDialect,
1749 >(
1750 self.keyboard_listener.as_mut().map(
1751 <fidl::encoding::Endpoint<
1752 fidl::endpoints::ClientEnd<
1753 fidl_fuchsia_ui_test_input::KeyboardInputListenerMarker,
1754 >,
1755 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow,
1756 ),
1757 encoder,
1758 offset + cur_offset,
1759 depth,
1760 )?;
1761
1762 _prev_end_offset = cur_offset + envelope_size;
1763 if 6 > max_ordinal {
1764 return Ok(());
1765 }
1766
1767 let cur_offset: usize = (6 - 1) * envelope_size;
1770
1771 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1773
1774 fidl::encoding::encode_in_envelope_optional::<
1779 fidl::encoding::Endpoint<
1780 fidl::endpoints::ClientEnd<fidl_fuchsia_ui_composition::FlatlandMarker>,
1781 >,
1782 fidl::encoding::DefaultFuchsiaResourceDialect,
1783 >(
1784 self.flatland_client.as_mut().map(
1785 <fidl::encoding::Endpoint<
1786 fidl::endpoints::ClientEnd<fidl_fuchsia_ui_composition::FlatlandMarker>,
1787 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow,
1788 ),
1789 encoder,
1790 offset + cur_offset,
1791 depth,
1792 )?;
1793
1794 _prev_end_offset = cur_offset + envelope_size;
1795 if 7 > max_ordinal {
1796 return Ok(());
1797 }
1798
1799 let cur_offset: usize = (7 - 1) * envelope_size;
1802
1803 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1805
1806 fidl::encoding::encode_in_envelope_optional::<
1811 fidl::encoding::Endpoint<
1812 fidl::endpoints::ClientEnd<fidl_fuchsia_ui_input3::KeyboardMarker>,
1813 >,
1814 fidl::encoding::DefaultFuchsiaResourceDialect,
1815 >(
1816 self.keyboard_client.as_mut().map(
1817 <fidl::encoding::Endpoint<
1818 fidl::endpoints::ClientEnd<fidl_fuchsia_ui_input3::KeyboardMarker>,
1819 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow,
1820 ),
1821 encoder,
1822 offset + cur_offset,
1823 depth,
1824 )?;
1825
1826 _prev_end_offset = cur_offset + envelope_size;
1827 if 8 > max_ordinal {
1828 return Ok(());
1829 }
1830
1831 let cur_offset: usize = (8 - 1) * envelope_size;
1834
1835 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1837
1838 fidl::encoding::encode_in_envelope_optional::<
1843 f32,
1844 fidl::encoding::DefaultFuchsiaResourceDialect,
1845 >(
1846 self.device_pixel_ratio
1847 .as_ref()
1848 .map(<f32 as fidl::encoding::ValueTypeMarker>::borrow),
1849 encoder,
1850 offset + cur_offset,
1851 depth,
1852 )?;
1853
1854 _prev_end_offset = cur_offset + envelope_size;
1855 if 9 > max_ordinal {
1856 return Ok(());
1857 }
1858
1859 let cur_offset: usize = (9 - 1) * envelope_size;
1862
1863 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1865
1866 fidl::encoding::encode_in_envelope_optional::<
1871 fidl::encoding::Endpoint<
1872 fidl::endpoints::ServerEnd<fidl_fuchsia_ui_views::FocuserMarker>,
1873 >,
1874 fidl::encoding::DefaultFuchsiaResourceDialect,
1875 >(
1876 self.focuser.as_mut().map(
1877 <fidl::encoding::Endpoint<
1878 fidl::endpoints::ServerEnd<fidl_fuchsia_ui_views::FocuserMarker>,
1879 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow,
1880 ),
1881 encoder,
1882 offset + cur_offset,
1883 depth,
1884 )?;
1885
1886 _prev_end_offset = cur_offset + envelope_size;
1887
1888 Ok(())
1889 }
1890 }
1891
1892 impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
1893 for PuppetCreationArgs
1894 {
1895 #[inline(always)]
1896 fn new_empty() -> Self {
1897 Self::default()
1898 }
1899
1900 unsafe fn decode(
1901 &mut self,
1902 decoder: &mut fidl::encoding::Decoder<
1903 '_,
1904 fidl::encoding::DefaultFuchsiaResourceDialect,
1905 >,
1906 offset: usize,
1907 mut depth: fidl::encoding::Depth,
1908 ) -> fidl::Result<()> {
1909 decoder.debug_check_bounds::<Self>(offset);
1910 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
1911 None => return Err(fidl::Error::NotNullable),
1912 Some(len) => len,
1913 };
1914 if len == 0 {
1916 return Ok(());
1917 };
1918 depth.increment()?;
1919 let envelope_size = 8;
1920 let bytes_len = len * envelope_size;
1921 let offset = decoder.out_of_line_offset(bytes_len)?;
1922 let mut _next_ordinal_to_read = 0;
1924 let mut next_offset = offset;
1925 let end_offset = offset + bytes_len;
1926 _next_ordinal_to_read += 1;
1927 if next_offset >= end_offset {
1928 return Ok(());
1929 }
1930
1931 while _next_ordinal_to_read < 1 {
1933 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1934 _next_ordinal_to_read += 1;
1935 next_offset += envelope_size;
1936 }
1937
1938 let next_out_of_line = decoder.next_out_of_line();
1939 let handles_before = decoder.remaining_handles();
1940 if let Some((inlined, num_bytes, num_handles)) =
1941 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1942 {
1943 let member_inline_size = <fidl::encoding::Endpoint<
1944 fidl::endpoints::ServerEnd<PuppetMarker>,
1945 > as fidl::encoding::TypeMarker>::inline_size(
1946 decoder.context
1947 );
1948 if inlined != (member_inline_size <= 4) {
1949 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1950 }
1951 let inner_offset;
1952 let mut inner_depth = depth.clone();
1953 if inlined {
1954 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1955 inner_offset = next_offset;
1956 } else {
1957 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1958 inner_depth.increment()?;
1959 }
1960 let val_ref = self.server_end.get_or_insert_with(|| {
1961 fidl::new_empty!(
1962 fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<PuppetMarker>>,
1963 fidl::encoding::DefaultFuchsiaResourceDialect
1964 )
1965 });
1966 fidl::decode!(
1967 fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<PuppetMarker>>,
1968 fidl::encoding::DefaultFuchsiaResourceDialect,
1969 val_ref,
1970 decoder,
1971 inner_offset,
1972 inner_depth
1973 )?;
1974 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1975 {
1976 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1977 }
1978 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1979 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1980 }
1981 }
1982
1983 next_offset += envelope_size;
1984 _next_ordinal_to_read += 1;
1985 if next_offset >= end_offset {
1986 return Ok(());
1987 }
1988
1989 while _next_ordinal_to_read < 2 {
1991 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1992 _next_ordinal_to_read += 1;
1993 next_offset += envelope_size;
1994 }
1995
1996 let next_out_of_line = decoder.next_out_of_line();
1997 let handles_before = decoder.remaining_handles();
1998 if let Some((inlined, num_bytes, num_handles)) =
1999 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2000 {
2001 let member_inline_size = <fidl_fuchsia_ui_views::ViewCreationToken as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2002 if inlined != (member_inline_size <= 4) {
2003 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2004 }
2005 let inner_offset;
2006 let mut inner_depth = depth.clone();
2007 if inlined {
2008 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2009 inner_offset = next_offset;
2010 } else {
2011 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2012 inner_depth.increment()?;
2013 }
2014 let val_ref = self.view_token.get_or_insert_with(|| {
2015 fidl::new_empty!(
2016 fidl_fuchsia_ui_views::ViewCreationToken,
2017 fidl::encoding::DefaultFuchsiaResourceDialect
2018 )
2019 });
2020 fidl::decode!(
2021 fidl_fuchsia_ui_views::ViewCreationToken,
2022 fidl::encoding::DefaultFuchsiaResourceDialect,
2023 val_ref,
2024 decoder,
2025 inner_offset,
2026 inner_depth
2027 )?;
2028 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2029 {
2030 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2031 }
2032 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2033 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2034 }
2035 }
2036
2037 next_offset += envelope_size;
2038 _next_ordinal_to_read += 1;
2039 if next_offset >= end_offset {
2040 return Ok(());
2041 }
2042
2043 while _next_ordinal_to_read < 3 {
2045 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2046 _next_ordinal_to_read += 1;
2047 next_offset += envelope_size;
2048 }
2049
2050 let next_out_of_line = decoder.next_out_of_line();
2051 let handles_before = decoder.remaining_handles();
2052 if let Some((inlined, num_bytes, num_handles)) =
2053 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2054 {
2055 let member_inline_size = <fidl::encoding::Endpoint<
2056 fidl::endpoints::ClientEnd<
2057 fidl_fuchsia_ui_test_input::TouchInputListenerMarker,
2058 >,
2059 > as fidl::encoding::TypeMarker>::inline_size(
2060 decoder.context
2061 );
2062 if inlined != (member_inline_size <= 4) {
2063 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2064 }
2065 let inner_offset;
2066 let mut inner_depth = depth.clone();
2067 if inlined {
2068 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2069 inner_offset = next_offset;
2070 } else {
2071 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2072 inner_depth.increment()?;
2073 }
2074 let val_ref = self.touch_listener.get_or_insert_with(|| {
2075 fidl::new_empty!(
2076 fidl::encoding::Endpoint<
2077 fidl::endpoints::ClientEnd<
2078 fidl_fuchsia_ui_test_input::TouchInputListenerMarker,
2079 >,
2080 >,
2081 fidl::encoding::DefaultFuchsiaResourceDialect
2082 )
2083 });
2084 fidl::decode!(
2085 fidl::encoding::Endpoint<
2086 fidl::endpoints::ClientEnd<
2087 fidl_fuchsia_ui_test_input::TouchInputListenerMarker,
2088 >,
2089 >,
2090 fidl::encoding::DefaultFuchsiaResourceDialect,
2091 val_ref,
2092 decoder,
2093 inner_offset,
2094 inner_depth
2095 )?;
2096 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2097 {
2098 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2099 }
2100 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2101 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2102 }
2103 }
2104
2105 next_offset += envelope_size;
2106 _next_ordinal_to_read += 1;
2107 if next_offset >= end_offset {
2108 return Ok(());
2109 }
2110
2111 while _next_ordinal_to_read < 4 {
2113 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2114 _next_ordinal_to_read += 1;
2115 next_offset += envelope_size;
2116 }
2117
2118 let next_out_of_line = decoder.next_out_of_line();
2119 let handles_before = decoder.remaining_handles();
2120 if let Some((inlined, num_bytes, num_handles)) =
2121 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2122 {
2123 let member_inline_size = <fidl::encoding::Endpoint<
2124 fidl::endpoints::ClientEnd<
2125 fidl_fuchsia_ui_test_input::MouseInputListenerMarker,
2126 >,
2127 > as fidl::encoding::TypeMarker>::inline_size(
2128 decoder.context
2129 );
2130 if inlined != (member_inline_size <= 4) {
2131 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2132 }
2133 let inner_offset;
2134 let mut inner_depth = depth.clone();
2135 if inlined {
2136 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2137 inner_offset = next_offset;
2138 } else {
2139 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2140 inner_depth.increment()?;
2141 }
2142 let val_ref = self.mouse_listener.get_or_insert_with(|| {
2143 fidl::new_empty!(
2144 fidl::encoding::Endpoint<
2145 fidl::endpoints::ClientEnd<
2146 fidl_fuchsia_ui_test_input::MouseInputListenerMarker,
2147 >,
2148 >,
2149 fidl::encoding::DefaultFuchsiaResourceDialect
2150 )
2151 });
2152 fidl::decode!(
2153 fidl::encoding::Endpoint<
2154 fidl::endpoints::ClientEnd<
2155 fidl_fuchsia_ui_test_input::MouseInputListenerMarker,
2156 >,
2157 >,
2158 fidl::encoding::DefaultFuchsiaResourceDialect,
2159 val_ref,
2160 decoder,
2161 inner_offset,
2162 inner_depth
2163 )?;
2164 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2165 {
2166 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2167 }
2168 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2169 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2170 }
2171 }
2172
2173 next_offset += envelope_size;
2174 _next_ordinal_to_read += 1;
2175 if next_offset >= end_offset {
2176 return Ok(());
2177 }
2178
2179 while _next_ordinal_to_read < 5 {
2181 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2182 _next_ordinal_to_read += 1;
2183 next_offset += envelope_size;
2184 }
2185
2186 let next_out_of_line = decoder.next_out_of_line();
2187 let handles_before = decoder.remaining_handles();
2188 if let Some((inlined, num_bytes, num_handles)) =
2189 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2190 {
2191 let member_inline_size = <fidl::encoding::Endpoint<
2192 fidl::endpoints::ClientEnd<
2193 fidl_fuchsia_ui_test_input::KeyboardInputListenerMarker,
2194 >,
2195 > as fidl::encoding::TypeMarker>::inline_size(
2196 decoder.context
2197 );
2198 if inlined != (member_inline_size <= 4) {
2199 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2200 }
2201 let inner_offset;
2202 let mut inner_depth = depth.clone();
2203 if inlined {
2204 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2205 inner_offset = next_offset;
2206 } else {
2207 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2208 inner_depth.increment()?;
2209 }
2210 let val_ref = self.keyboard_listener.get_or_insert_with(|| {
2211 fidl::new_empty!(
2212 fidl::encoding::Endpoint<
2213 fidl::endpoints::ClientEnd<
2214 fidl_fuchsia_ui_test_input::KeyboardInputListenerMarker,
2215 >,
2216 >,
2217 fidl::encoding::DefaultFuchsiaResourceDialect
2218 )
2219 });
2220 fidl::decode!(
2221 fidl::encoding::Endpoint<
2222 fidl::endpoints::ClientEnd<
2223 fidl_fuchsia_ui_test_input::KeyboardInputListenerMarker,
2224 >,
2225 >,
2226 fidl::encoding::DefaultFuchsiaResourceDialect,
2227 val_ref,
2228 decoder,
2229 inner_offset,
2230 inner_depth
2231 )?;
2232 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2233 {
2234 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2235 }
2236 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2237 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2238 }
2239 }
2240
2241 next_offset += envelope_size;
2242 _next_ordinal_to_read += 1;
2243 if next_offset >= end_offset {
2244 return Ok(());
2245 }
2246
2247 while _next_ordinal_to_read < 6 {
2249 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2250 _next_ordinal_to_read += 1;
2251 next_offset += envelope_size;
2252 }
2253
2254 let next_out_of_line = decoder.next_out_of_line();
2255 let handles_before = decoder.remaining_handles();
2256 if let Some((inlined, num_bytes, num_handles)) =
2257 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2258 {
2259 let member_inline_size = <fidl::encoding::Endpoint<
2260 fidl::endpoints::ClientEnd<fidl_fuchsia_ui_composition::FlatlandMarker>,
2261 > as fidl::encoding::TypeMarker>::inline_size(
2262 decoder.context
2263 );
2264 if inlined != (member_inline_size <= 4) {
2265 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2266 }
2267 let inner_offset;
2268 let mut inner_depth = depth.clone();
2269 if inlined {
2270 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2271 inner_offset = next_offset;
2272 } else {
2273 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2274 inner_depth.increment()?;
2275 }
2276 let val_ref = self.flatland_client.get_or_insert_with(|| {
2277 fidl::new_empty!(
2278 fidl::encoding::Endpoint<
2279 fidl::endpoints::ClientEnd<fidl_fuchsia_ui_composition::FlatlandMarker>,
2280 >,
2281 fidl::encoding::DefaultFuchsiaResourceDialect
2282 )
2283 });
2284 fidl::decode!(
2285 fidl::encoding::Endpoint<
2286 fidl::endpoints::ClientEnd<fidl_fuchsia_ui_composition::FlatlandMarker>,
2287 >,
2288 fidl::encoding::DefaultFuchsiaResourceDialect,
2289 val_ref,
2290 decoder,
2291 inner_offset,
2292 inner_depth
2293 )?;
2294 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2295 {
2296 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2297 }
2298 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2299 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2300 }
2301 }
2302
2303 next_offset += envelope_size;
2304 _next_ordinal_to_read += 1;
2305 if next_offset >= end_offset {
2306 return Ok(());
2307 }
2308
2309 while _next_ordinal_to_read < 7 {
2311 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2312 _next_ordinal_to_read += 1;
2313 next_offset += envelope_size;
2314 }
2315
2316 let next_out_of_line = decoder.next_out_of_line();
2317 let handles_before = decoder.remaining_handles();
2318 if let Some((inlined, num_bytes, num_handles)) =
2319 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2320 {
2321 let member_inline_size = <fidl::encoding::Endpoint<
2322 fidl::endpoints::ClientEnd<fidl_fuchsia_ui_input3::KeyboardMarker>,
2323 > as fidl::encoding::TypeMarker>::inline_size(
2324 decoder.context
2325 );
2326 if inlined != (member_inline_size <= 4) {
2327 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2328 }
2329 let inner_offset;
2330 let mut inner_depth = depth.clone();
2331 if inlined {
2332 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2333 inner_offset = next_offset;
2334 } else {
2335 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2336 inner_depth.increment()?;
2337 }
2338 let val_ref = self.keyboard_client.get_or_insert_with(|| {
2339 fidl::new_empty!(
2340 fidl::encoding::Endpoint<
2341 fidl::endpoints::ClientEnd<fidl_fuchsia_ui_input3::KeyboardMarker>,
2342 >,
2343 fidl::encoding::DefaultFuchsiaResourceDialect
2344 )
2345 });
2346 fidl::decode!(
2347 fidl::encoding::Endpoint<
2348 fidl::endpoints::ClientEnd<fidl_fuchsia_ui_input3::KeyboardMarker>,
2349 >,
2350 fidl::encoding::DefaultFuchsiaResourceDialect,
2351 val_ref,
2352 decoder,
2353 inner_offset,
2354 inner_depth
2355 )?;
2356 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2357 {
2358 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2359 }
2360 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2361 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2362 }
2363 }
2364
2365 next_offset += envelope_size;
2366 _next_ordinal_to_read += 1;
2367 if next_offset >= end_offset {
2368 return Ok(());
2369 }
2370
2371 while _next_ordinal_to_read < 8 {
2373 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2374 _next_ordinal_to_read += 1;
2375 next_offset += envelope_size;
2376 }
2377
2378 let next_out_of_line = decoder.next_out_of_line();
2379 let handles_before = decoder.remaining_handles();
2380 if let Some((inlined, num_bytes, num_handles)) =
2381 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2382 {
2383 let member_inline_size =
2384 <f32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2385 if inlined != (member_inline_size <= 4) {
2386 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2387 }
2388 let inner_offset;
2389 let mut inner_depth = depth.clone();
2390 if inlined {
2391 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2392 inner_offset = next_offset;
2393 } else {
2394 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2395 inner_depth.increment()?;
2396 }
2397 let val_ref = self.device_pixel_ratio.get_or_insert_with(|| {
2398 fidl::new_empty!(f32, fidl::encoding::DefaultFuchsiaResourceDialect)
2399 });
2400 fidl::decode!(
2401 f32,
2402 fidl::encoding::DefaultFuchsiaResourceDialect,
2403 val_ref,
2404 decoder,
2405 inner_offset,
2406 inner_depth
2407 )?;
2408 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2409 {
2410 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2411 }
2412 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2413 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2414 }
2415 }
2416
2417 next_offset += envelope_size;
2418 _next_ordinal_to_read += 1;
2419 if next_offset >= end_offset {
2420 return Ok(());
2421 }
2422
2423 while _next_ordinal_to_read < 9 {
2425 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2426 _next_ordinal_to_read += 1;
2427 next_offset += envelope_size;
2428 }
2429
2430 let next_out_of_line = decoder.next_out_of_line();
2431 let handles_before = decoder.remaining_handles();
2432 if let Some((inlined, num_bytes, num_handles)) =
2433 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2434 {
2435 let member_inline_size = <fidl::encoding::Endpoint<
2436 fidl::endpoints::ServerEnd<fidl_fuchsia_ui_views::FocuserMarker>,
2437 > as fidl::encoding::TypeMarker>::inline_size(
2438 decoder.context
2439 );
2440 if inlined != (member_inline_size <= 4) {
2441 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2442 }
2443 let inner_offset;
2444 let mut inner_depth = depth.clone();
2445 if inlined {
2446 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2447 inner_offset = next_offset;
2448 } else {
2449 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2450 inner_depth.increment()?;
2451 }
2452 let val_ref = self.focuser.get_or_insert_with(|| {
2453 fidl::new_empty!(
2454 fidl::encoding::Endpoint<
2455 fidl::endpoints::ServerEnd<fidl_fuchsia_ui_views::FocuserMarker>,
2456 >,
2457 fidl::encoding::DefaultFuchsiaResourceDialect
2458 )
2459 });
2460 fidl::decode!(
2461 fidl::encoding::Endpoint<
2462 fidl::endpoints::ServerEnd<fidl_fuchsia_ui_views::FocuserMarker>,
2463 >,
2464 fidl::encoding::DefaultFuchsiaResourceDialect,
2465 val_ref,
2466 decoder,
2467 inner_offset,
2468 inner_depth
2469 )?;
2470 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2471 {
2472 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2473 }
2474 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2475 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2476 }
2477 }
2478
2479 next_offset += envelope_size;
2480
2481 while next_offset < end_offset {
2483 _next_ordinal_to_read += 1;
2484 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2485 next_offset += envelope_size;
2486 }
2487
2488 Ok(())
2489 }
2490 }
2491
2492 impl PuppetEmbedRemoteViewResponse {
2493 #[inline(always)]
2494 fn max_ordinal_present(&self) -> u64 {
2495 if let Some(_) = self.view_creation_token {
2496 return 2;
2497 }
2498 if let Some(_) = self.result {
2499 return 1;
2500 }
2501 0
2502 }
2503 }
2504
2505 impl fidl::encoding::ResourceTypeMarker for PuppetEmbedRemoteViewResponse {
2506 type Borrowed<'a> = &'a mut Self;
2507 fn take_or_borrow<'a>(
2508 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
2509 ) -> Self::Borrowed<'a> {
2510 value
2511 }
2512 }
2513
2514 unsafe impl fidl::encoding::TypeMarker for PuppetEmbedRemoteViewResponse {
2515 type Owned = Self;
2516
2517 #[inline(always)]
2518 fn inline_align(_context: fidl::encoding::Context) -> usize {
2519 8
2520 }
2521
2522 #[inline(always)]
2523 fn inline_size(_context: fidl::encoding::Context) -> usize {
2524 16
2525 }
2526 }
2527
2528 unsafe impl
2529 fidl::encoding::Encode<
2530 PuppetEmbedRemoteViewResponse,
2531 fidl::encoding::DefaultFuchsiaResourceDialect,
2532 > for &mut PuppetEmbedRemoteViewResponse
2533 {
2534 unsafe fn encode(
2535 self,
2536 encoder: &mut fidl::encoding::Encoder<
2537 '_,
2538 fidl::encoding::DefaultFuchsiaResourceDialect,
2539 >,
2540 offset: usize,
2541 mut depth: fidl::encoding::Depth,
2542 ) -> fidl::Result<()> {
2543 encoder.debug_check_bounds::<PuppetEmbedRemoteViewResponse>(offset);
2544 let max_ordinal: u64 = self.max_ordinal_present();
2546 encoder.write_num(max_ordinal, offset);
2547 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
2548 if max_ordinal == 0 {
2550 return Ok(());
2551 }
2552 depth.increment()?;
2553 let envelope_size = 8;
2554 let bytes_len = max_ordinal as usize * envelope_size;
2555 #[allow(unused_variables)]
2556 let offset = encoder.out_of_line_offset(bytes_len);
2557 let mut _prev_end_offset: usize = 0;
2558 if 1 > max_ordinal {
2559 return Ok(());
2560 }
2561
2562 let cur_offset: usize = (1 - 1) * envelope_size;
2565
2566 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2568
2569 fidl::encoding::encode_in_envelope_optional::<
2574 Result_,
2575 fidl::encoding::DefaultFuchsiaResourceDialect,
2576 >(
2577 self.result.as_ref().map(<Result_ as fidl::encoding::ValueTypeMarker>::borrow),
2578 encoder,
2579 offset + cur_offset,
2580 depth,
2581 )?;
2582
2583 _prev_end_offset = cur_offset + envelope_size;
2584 if 2 > max_ordinal {
2585 return Ok(());
2586 }
2587
2588 let cur_offset: usize = (2 - 1) * envelope_size;
2591
2592 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2594
2595 fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_ui_views::ViewCreationToken, fidl::encoding::DefaultFuchsiaResourceDialect>(
2600 self.view_creation_token.as_mut().map(<fidl_fuchsia_ui_views::ViewCreationToken as fidl::encoding::ResourceTypeMarker>::take_or_borrow),
2601 encoder, offset + cur_offset, depth
2602 )?;
2603
2604 _prev_end_offset = cur_offset + envelope_size;
2605
2606 Ok(())
2607 }
2608 }
2609
2610 impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
2611 for PuppetEmbedRemoteViewResponse
2612 {
2613 #[inline(always)]
2614 fn new_empty() -> Self {
2615 Self::default()
2616 }
2617
2618 unsafe fn decode(
2619 &mut self,
2620 decoder: &mut fidl::encoding::Decoder<
2621 '_,
2622 fidl::encoding::DefaultFuchsiaResourceDialect,
2623 >,
2624 offset: usize,
2625 mut depth: fidl::encoding::Depth,
2626 ) -> fidl::Result<()> {
2627 decoder.debug_check_bounds::<Self>(offset);
2628 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
2629 None => return Err(fidl::Error::NotNullable),
2630 Some(len) => len,
2631 };
2632 if len == 0 {
2634 return Ok(());
2635 };
2636 depth.increment()?;
2637 let envelope_size = 8;
2638 let bytes_len = len * envelope_size;
2639 let offset = decoder.out_of_line_offset(bytes_len)?;
2640 let mut _next_ordinal_to_read = 0;
2642 let mut next_offset = offset;
2643 let end_offset = offset + bytes_len;
2644 _next_ordinal_to_read += 1;
2645 if next_offset >= end_offset {
2646 return Ok(());
2647 }
2648
2649 while _next_ordinal_to_read < 1 {
2651 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2652 _next_ordinal_to_read += 1;
2653 next_offset += envelope_size;
2654 }
2655
2656 let next_out_of_line = decoder.next_out_of_line();
2657 let handles_before = decoder.remaining_handles();
2658 if let Some((inlined, num_bytes, num_handles)) =
2659 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2660 {
2661 let member_inline_size =
2662 <Result_ as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2663 if inlined != (member_inline_size <= 4) {
2664 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2665 }
2666 let inner_offset;
2667 let mut inner_depth = depth.clone();
2668 if inlined {
2669 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2670 inner_offset = next_offset;
2671 } else {
2672 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2673 inner_depth.increment()?;
2674 }
2675 let val_ref = self.result.get_or_insert_with(|| {
2676 fidl::new_empty!(Result_, fidl::encoding::DefaultFuchsiaResourceDialect)
2677 });
2678 fidl::decode!(
2679 Result_,
2680 fidl::encoding::DefaultFuchsiaResourceDialect,
2681 val_ref,
2682 decoder,
2683 inner_offset,
2684 inner_depth
2685 )?;
2686 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2687 {
2688 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2689 }
2690 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2691 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2692 }
2693 }
2694
2695 next_offset += envelope_size;
2696 _next_ordinal_to_read += 1;
2697 if next_offset >= end_offset {
2698 return Ok(());
2699 }
2700
2701 while _next_ordinal_to_read < 2 {
2703 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2704 _next_ordinal_to_read += 1;
2705 next_offset += envelope_size;
2706 }
2707
2708 let next_out_of_line = decoder.next_out_of_line();
2709 let handles_before = decoder.remaining_handles();
2710 if let Some((inlined, num_bytes, num_handles)) =
2711 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2712 {
2713 let member_inline_size = <fidl_fuchsia_ui_views::ViewCreationToken as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2714 if inlined != (member_inline_size <= 4) {
2715 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2716 }
2717 let inner_offset;
2718 let mut inner_depth = depth.clone();
2719 if inlined {
2720 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2721 inner_offset = next_offset;
2722 } else {
2723 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2724 inner_depth.increment()?;
2725 }
2726 let val_ref = self.view_creation_token.get_or_insert_with(|| {
2727 fidl::new_empty!(
2728 fidl_fuchsia_ui_views::ViewCreationToken,
2729 fidl::encoding::DefaultFuchsiaResourceDialect
2730 )
2731 });
2732 fidl::decode!(
2733 fidl_fuchsia_ui_views::ViewCreationToken,
2734 fidl::encoding::DefaultFuchsiaResourceDialect,
2735 val_ref,
2736 decoder,
2737 inner_offset,
2738 inner_depth
2739 )?;
2740 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2741 {
2742 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2743 }
2744 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2745 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2746 }
2747 }
2748
2749 next_offset += envelope_size;
2750
2751 while next_offset < end_offset {
2753 _next_ordinal_to_read += 1;
2754 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2755 next_offset += envelope_size;
2756 }
2757
2758 Ok(())
2759 }
2760 }
2761
2762 impl PuppetFactoryCreateResponse {
2763 #[inline(always)]
2764 fn max_ordinal_present(&self) -> u64 {
2765 if let Some(_) = self.view_ref {
2766 return 2;
2767 }
2768 if let Some(_) = self.result {
2769 return 1;
2770 }
2771 0
2772 }
2773 }
2774
2775 impl fidl::encoding::ResourceTypeMarker for PuppetFactoryCreateResponse {
2776 type Borrowed<'a> = &'a mut Self;
2777 fn take_or_borrow<'a>(
2778 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
2779 ) -> Self::Borrowed<'a> {
2780 value
2781 }
2782 }
2783
2784 unsafe impl fidl::encoding::TypeMarker for PuppetFactoryCreateResponse {
2785 type Owned = Self;
2786
2787 #[inline(always)]
2788 fn inline_align(_context: fidl::encoding::Context) -> usize {
2789 8
2790 }
2791
2792 #[inline(always)]
2793 fn inline_size(_context: fidl::encoding::Context) -> usize {
2794 16
2795 }
2796 }
2797
2798 unsafe impl
2799 fidl::encoding::Encode<
2800 PuppetFactoryCreateResponse,
2801 fidl::encoding::DefaultFuchsiaResourceDialect,
2802 > for &mut PuppetFactoryCreateResponse
2803 {
2804 unsafe fn encode(
2805 self,
2806 encoder: &mut fidl::encoding::Encoder<
2807 '_,
2808 fidl::encoding::DefaultFuchsiaResourceDialect,
2809 >,
2810 offset: usize,
2811 mut depth: fidl::encoding::Depth,
2812 ) -> fidl::Result<()> {
2813 encoder.debug_check_bounds::<PuppetFactoryCreateResponse>(offset);
2814 let max_ordinal: u64 = self.max_ordinal_present();
2816 encoder.write_num(max_ordinal, offset);
2817 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
2818 if max_ordinal == 0 {
2820 return Ok(());
2821 }
2822 depth.increment()?;
2823 let envelope_size = 8;
2824 let bytes_len = max_ordinal as usize * envelope_size;
2825 #[allow(unused_variables)]
2826 let offset = encoder.out_of_line_offset(bytes_len);
2827 let mut _prev_end_offset: usize = 0;
2828 if 1 > max_ordinal {
2829 return Ok(());
2830 }
2831
2832 let cur_offset: usize = (1 - 1) * envelope_size;
2835
2836 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2838
2839 fidl::encoding::encode_in_envelope_optional::<
2844 Result_,
2845 fidl::encoding::DefaultFuchsiaResourceDialect,
2846 >(
2847 self.result.as_ref().map(<Result_ as fidl::encoding::ValueTypeMarker>::borrow),
2848 encoder,
2849 offset + cur_offset,
2850 depth,
2851 )?;
2852
2853 _prev_end_offset = cur_offset + envelope_size;
2854 if 2 > max_ordinal {
2855 return Ok(());
2856 }
2857
2858 let cur_offset: usize = (2 - 1) * envelope_size;
2861
2862 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2864
2865 fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_ui_views::ViewRef, fidl::encoding::DefaultFuchsiaResourceDialect>(
2870 self.view_ref.as_mut().map(<fidl_fuchsia_ui_views::ViewRef as fidl::encoding::ResourceTypeMarker>::take_or_borrow),
2871 encoder, offset + cur_offset, depth
2872 )?;
2873
2874 _prev_end_offset = cur_offset + envelope_size;
2875
2876 Ok(())
2877 }
2878 }
2879
2880 impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
2881 for PuppetFactoryCreateResponse
2882 {
2883 #[inline(always)]
2884 fn new_empty() -> Self {
2885 Self::default()
2886 }
2887
2888 unsafe fn decode(
2889 &mut self,
2890 decoder: &mut fidl::encoding::Decoder<
2891 '_,
2892 fidl::encoding::DefaultFuchsiaResourceDialect,
2893 >,
2894 offset: usize,
2895 mut depth: fidl::encoding::Depth,
2896 ) -> fidl::Result<()> {
2897 decoder.debug_check_bounds::<Self>(offset);
2898 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
2899 None => return Err(fidl::Error::NotNullable),
2900 Some(len) => len,
2901 };
2902 if len == 0 {
2904 return Ok(());
2905 };
2906 depth.increment()?;
2907 let envelope_size = 8;
2908 let bytes_len = len * envelope_size;
2909 let offset = decoder.out_of_line_offset(bytes_len)?;
2910 let mut _next_ordinal_to_read = 0;
2912 let mut next_offset = offset;
2913 let end_offset = offset + bytes_len;
2914 _next_ordinal_to_read += 1;
2915 if next_offset >= end_offset {
2916 return Ok(());
2917 }
2918
2919 while _next_ordinal_to_read < 1 {
2921 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2922 _next_ordinal_to_read += 1;
2923 next_offset += envelope_size;
2924 }
2925
2926 let next_out_of_line = decoder.next_out_of_line();
2927 let handles_before = decoder.remaining_handles();
2928 if let Some((inlined, num_bytes, num_handles)) =
2929 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2930 {
2931 let member_inline_size =
2932 <Result_ as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2933 if inlined != (member_inline_size <= 4) {
2934 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2935 }
2936 let inner_offset;
2937 let mut inner_depth = depth.clone();
2938 if inlined {
2939 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2940 inner_offset = next_offset;
2941 } else {
2942 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2943 inner_depth.increment()?;
2944 }
2945 let val_ref = self.result.get_or_insert_with(|| {
2946 fidl::new_empty!(Result_, fidl::encoding::DefaultFuchsiaResourceDialect)
2947 });
2948 fidl::decode!(
2949 Result_,
2950 fidl::encoding::DefaultFuchsiaResourceDialect,
2951 val_ref,
2952 decoder,
2953 inner_offset,
2954 inner_depth
2955 )?;
2956 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2957 {
2958 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2959 }
2960 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2961 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2962 }
2963 }
2964
2965 next_offset += envelope_size;
2966 _next_ordinal_to_read += 1;
2967 if next_offset >= end_offset {
2968 return Ok(());
2969 }
2970
2971 while _next_ordinal_to_read < 2 {
2973 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2974 _next_ordinal_to_read += 1;
2975 next_offset += envelope_size;
2976 }
2977
2978 let next_out_of_line = decoder.next_out_of_line();
2979 let handles_before = decoder.remaining_handles();
2980 if let Some((inlined, num_bytes, num_handles)) =
2981 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2982 {
2983 let member_inline_size =
2984 <fidl_fuchsia_ui_views::ViewRef as fidl::encoding::TypeMarker>::inline_size(
2985 decoder.context,
2986 );
2987 if inlined != (member_inline_size <= 4) {
2988 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2989 }
2990 let inner_offset;
2991 let mut inner_depth = depth.clone();
2992 if inlined {
2993 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2994 inner_offset = next_offset;
2995 } else {
2996 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2997 inner_depth.increment()?;
2998 }
2999 let val_ref = self.view_ref.get_or_insert_with(|| {
3000 fidl::new_empty!(
3001 fidl_fuchsia_ui_views::ViewRef,
3002 fidl::encoding::DefaultFuchsiaResourceDialect
3003 )
3004 });
3005 fidl::decode!(
3006 fidl_fuchsia_ui_views::ViewRef,
3007 fidl::encoding::DefaultFuchsiaResourceDialect,
3008 val_ref,
3009 decoder,
3010 inner_offset,
3011 inner_depth
3012 )?;
3013 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3014 {
3015 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3016 }
3017 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3018 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3019 }
3020 }
3021
3022 next_offset += envelope_size;
3023
3024 while next_offset < end_offset {
3026 _next_ordinal_to_read += 1;
3027 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3028 next_offset += envelope_size;
3029 }
3030
3031 Ok(())
3032 }
3033 }
3034}