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_context__common::*;
11use futures::future::{self, MaybeDone, TryFutureExt};
12use zx_status;
13
14#[derive(Debug, Default, PartialEq)]
15pub struct RealmFactoryCreateRealmRequest {
16 pub realm_server:
17 Option<fidl::endpoints::ServerEnd<fidl_fuchsia_testing_harness::RealmProxy_Marker>>,
18 pub display_rotation: Option<u32>,
19 pub device_pixel_ratio: Option<f32>,
20 #[doc(hidden)]
21 pub __source_breaking: fidl::marker::SourceBreaking,
22}
23
24impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect>
25 for RealmFactoryCreateRealmRequest
26{
27}
28
29#[derive(Debug, Default, PartialEq)]
30pub struct ScenicRealmFactoryCreateRealmRequest {
31 pub realm_server:
32 Option<fidl::endpoints::ServerEnd<fidl_fuchsia_testing_harness::RealmProxy_Marker>>,
33 pub renderer: Option<RendererType>,
34 pub display_rotation: Option<u64>,
35 pub display_composition: Option<bool>,
36 #[doc(hidden)]
37 pub __source_breaking: fidl::marker::SourceBreaking,
38}
39
40impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect>
41 for ScenicRealmFactoryCreateRealmRequest
42{
43}
44
45#[derive(Debug, Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash)]
46pub struct RealmFactoryMarker;
47
48impl fidl::endpoints::ProtocolMarker for RealmFactoryMarker {
49 type Proxy = RealmFactoryProxy;
50 type RequestStream = RealmFactoryRequestStream;
51 #[cfg(target_os = "fuchsia")]
52 type SynchronousProxy = RealmFactorySynchronousProxy;
53
54 const DEBUG_NAME: &'static str = "fuchsia.ui.test.context.RealmFactory";
55}
56impl fidl::endpoints::DiscoverableProtocolMarker for RealmFactoryMarker {}
57pub type RealmFactoryCreateRealmResult = Result<(), fidl_fuchsia_testing_harness::OperationError>;
58
59pub trait RealmFactoryProxyInterface: Send + Sync {
60 type CreateRealmResponseFut: std::future::Future<Output = Result<RealmFactoryCreateRealmResult, fidl::Error>>
61 + Send;
62 fn r#create_realm(
63 &self,
64 payload: RealmFactoryCreateRealmRequest,
65 ) -> Self::CreateRealmResponseFut;
66}
67#[derive(Debug)]
68#[cfg(target_os = "fuchsia")]
69pub struct RealmFactorySynchronousProxy {
70 client: fidl::client::sync::Client,
71}
72
73#[cfg(target_os = "fuchsia")]
74impl fidl::endpoints::SynchronousProxy for RealmFactorySynchronousProxy {
75 type Proxy = RealmFactoryProxy;
76 type Protocol = RealmFactoryMarker;
77
78 fn from_channel(inner: fidl::Channel) -> Self {
79 Self::new(inner)
80 }
81
82 fn into_channel(self) -> fidl::Channel {
83 self.client.into_channel()
84 }
85
86 fn as_channel(&self) -> &fidl::Channel {
87 self.client.as_channel()
88 }
89}
90
91#[cfg(target_os = "fuchsia")]
92impl RealmFactorySynchronousProxy {
93 pub fn new(channel: fidl::Channel) -> Self {
94 let protocol_name = <RealmFactoryMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
95 Self { client: fidl::client::sync::Client::new(channel, protocol_name) }
96 }
97
98 pub fn into_channel(self) -> fidl::Channel {
99 self.client.into_channel()
100 }
101
102 pub fn wait_for_event(
105 &self,
106 deadline: zx::MonotonicInstant,
107 ) -> Result<RealmFactoryEvent, fidl::Error> {
108 RealmFactoryEvent::decode(self.client.wait_for_event(deadline)?)
109 }
110
111 pub fn r#create_realm(
112 &self,
113 mut payload: RealmFactoryCreateRealmRequest,
114 ___deadline: zx::MonotonicInstant,
115 ) -> Result<RealmFactoryCreateRealmResult, fidl::Error> {
116 let _response = self
117 .client
118 .send_query::<RealmFactoryCreateRealmRequest, fidl::encoding::FlexibleResultType<
119 fidl::encoding::EmptyStruct,
120 fidl_fuchsia_testing_harness::OperationError,
121 >>(
122 &mut payload,
123 0x6e1c904f44c7d0fc,
124 fidl::encoding::DynamicFlags::FLEXIBLE,
125 ___deadline,
126 )?
127 .into_result::<RealmFactoryMarker>("create_realm")?;
128 Ok(_response.map(|x| x))
129 }
130}
131
132#[cfg(target_os = "fuchsia")]
133impl From<RealmFactorySynchronousProxy> for zx::Handle {
134 fn from(value: RealmFactorySynchronousProxy) -> Self {
135 value.into_channel().into()
136 }
137}
138
139#[cfg(target_os = "fuchsia")]
140impl From<fidl::Channel> for RealmFactorySynchronousProxy {
141 fn from(value: fidl::Channel) -> Self {
142 Self::new(value)
143 }
144}
145
146#[cfg(target_os = "fuchsia")]
147impl fidl::endpoints::FromClient for RealmFactorySynchronousProxy {
148 type Protocol = RealmFactoryMarker;
149
150 fn from_client(value: fidl::endpoints::ClientEnd<RealmFactoryMarker>) -> Self {
151 Self::new(value.into_channel())
152 }
153}
154
155#[derive(Debug, Clone)]
156pub struct RealmFactoryProxy {
157 client: fidl::client::Client<fidl::encoding::DefaultFuchsiaResourceDialect>,
158}
159
160impl fidl::endpoints::Proxy for RealmFactoryProxy {
161 type Protocol = RealmFactoryMarker;
162
163 fn from_channel(inner: ::fidl::AsyncChannel) -> Self {
164 Self::new(inner)
165 }
166
167 fn into_channel(self) -> Result<::fidl::AsyncChannel, Self> {
168 self.client.into_channel().map_err(|client| Self { client })
169 }
170
171 fn as_channel(&self) -> &::fidl::AsyncChannel {
172 self.client.as_channel()
173 }
174}
175
176impl RealmFactoryProxy {
177 pub fn new(channel: ::fidl::AsyncChannel) -> Self {
179 let protocol_name = <RealmFactoryMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
180 Self { client: fidl::client::Client::new(channel, protocol_name) }
181 }
182
183 pub fn take_event_stream(&self) -> RealmFactoryEventStream {
189 RealmFactoryEventStream { event_receiver: self.client.take_event_receiver() }
190 }
191
192 pub fn r#create_realm(
193 &self,
194 mut payload: RealmFactoryCreateRealmRequest,
195 ) -> fidl::client::QueryResponseFut<
196 RealmFactoryCreateRealmResult,
197 fidl::encoding::DefaultFuchsiaResourceDialect,
198 > {
199 RealmFactoryProxyInterface::r#create_realm(self, payload)
200 }
201}
202
203impl RealmFactoryProxyInterface for RealmFactoryProxy {
204 type CreateRealmResponseFut = fidl::client::QueryResponseFut<
205 RealmFactoryCreateRealmResult,
206 fidl::encoding::DefaultFuchsiaResourceDialect,
207 >;
208 fn r#create_realm(
209 &self,
210 mut payload: RealmFactoryCreateRealmRequest,
211 ) -> Self::CreateRealmResponseFut {
212 fn _decode(
213 mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
214 ) -> Result<RealmFactoryCreateRealmResult, fidl::Error> {
215 let _response = fidl::client::decode_transaction_body::<
216 fidl::encoding::FlexibleResultType<
217 fidl::encoding::EmptyStruct,
218 fidl_fuchsia_testing_harness::OperationError,
219 >,
220 fidl::encoding::DefaultFuchsiaResourceDialect,
221 0x6e1c904f44c7d0fc,
222 >(_buf?)?
223 .into_result::<RealmFactoryMarker>("create_realm")?;
224 Ok(_response.map(|x| x))
225 }
226 self.client
227 .send_query_and_decode::<RealmFactoryCreateRealmRequest, RealmFactoryCreateRealmResult>(
228 &mut payload,
229 0x6e1c904f44c7d0fc,
230 fidl::encoding::DynamicFlags::FLEXIBLE,
231 _decode,
232 )
233 }
234}
235
236pub struct RealmFactoryEventStream {
237 event_receiver: fidl::client::EventReceiver<fidl::encoding::DefaultFuchsiaResourceDialect>,
238}
239
240impl std::marker::Unpin for RealmFactoryEventStream {}
241
242impl futures::stream::FusedStream for RealmFactoryEventStream {
243 fn is_terminated(&self) -> bool {
244 self.event_receiver.is_terminated()
245 }
246}
247
248impl futures::Stream for RealmFactoryEventStream {
249 type Item = Result<RealmFactoryEvent, fidl::Error>;
250
251 fn poll_next(
252 mut self: std::pin::Pin<&mut Self>,
253 cx: &mut std::task::Context<'_>,
254 ) -> std::task::Poll<Option<Self::Item>> {
255 match futures::ready!(futures::stream::StreamExt::poll_next_unpin(
256 &mut self.event_receiver,
257 cx
258 )?) {
259 Some(buf) => std::task::Poll::Ready(Some(RealmFactoryEvent::decode(buf))),
260 None => std::task::Poll::Ready(None),
261 }
262 }
263}
264
265#[derive(Debug)]
266pub enum RealmFactoryEvent {
267 #[non_exhaustive]
268 _UnknownEvent {
269 ordinal: u64,
271 },
272}
273
274impl RealmFactoryEvent {
275 fn decode(
277 mut buf: <fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc,
278 ) -> Result<RealmFactoryEvent, fidl::Error> {
279 let (bytes, _handles) = buf.split_mut();
280 let (tx_header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
281 debug_assert_eq!(tx_header.tx_id, 0);
282 match tx_header.ordinal {
283 _ if tx_header.dynamic_flags().contains(fidl::encoding::DynamicFlags::FLEXIBLE) => {
284 Ok(RealmFactoryEvent::_UnknownEvent { ordinal: tx_header.ordinal })
285 }
286 _ => Err(fidl::Error::UnknownOrdinal {
287 ordinal: tx_header.ordinal,
288 protocol_name: <RealmFactoryMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
289 }),
290 }
291 }
292}
293
294pub struct RealmFactoryRequestStream {
296 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
297 is_terminated: bool,
298}
299
300impl std::marker::Unpin for RealmFactoryRequestStream {}
301
302impl futures::stream::FusedStream for RealmFactoryRequestStream {
303 fn is_terminated(&self) -> bool {
304 self.is_terminated
305 }
306}
307
308impl fidl::endpoints::RequestStream for RealmFactoryRequestStream {
309 type Protocol = RealmFactoryMarker;
310 type ControlHandle = RealmFactoryControlHandle;
311
312 fn from_channel(channel: ::fidl::AsyncChannel) -> Self {
313 Self { inner: std::sync::Arc::new(fidl::ServeInner::new(channel)), is_terminated: false }
314 }
315
316 fn control_handle(&self) -> Self::ControlHandle {
317 RealmFactoryControlHandle { inner: self.inner.clone() }
318 }
319
320 fn into_inner(
321 self,
322 ) -> (::std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>, bool)
323 {
324 (self.inner, self.is_terminated)
325 }
326
327 fn from_inner(
328 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
329 is_terminated: bool,
330 ) -> Self {
331 Self { inner, is_terminated }
332 }
333}
334
335impl futures::Stream for RealmFactoryRequestStream {
336 type Item = Result<RealmFactoryRequest, fidl::Error>;
337
338 fn poll_next(
339 mut self: std::pin::Pin<&mut Self>,
340 cx: &mut std::task::Context<'_>,
341 ) -> std::task::Poll<Option<Self::Item>> {
342 let this = &mut *self;
343 if this.inner.check_shutdown(cx) {
344 this.is_terminated = true;
345 return std::task::Poll::Ready(None);
346 }
347 if this.is_terminated {
348 panic!("polled RealmFactoryRequestStream after completion");
349 }
350 fidl::encoding::with_tls_decode_buf::<_, fidl::encoding::DefaultFuchsiaResourceDialect>(
351 |bytes, handles| {
352 match this.inner.channel().read_etc(cx, bytes, handles) {
353 std::task::Poll::Ready(Ok(())) => {}
354 std::task::Poll::Pending => return std::task::Poll::Pending,
355 std::task::Poll::Ready(Err(zx_status::Status::PEER_CLOSED)) => {
356 this.is_terminated = true;
357 return std::task::Poll::Ready(None);
358 }
359 std::task::Poll::Ready(Err(e)) => {
360 return std::task::Poll::Ready(Some(Err(fidl::Error::ServerRequestRead(
361 e.into(),
362 ))))
363 }
364 }
365
366 let (header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
368
369 std::task::Poll::Ready(Some(match header.ordinal {
370 0x6e1c904f44c7d0fc => {
371 header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
372 let mut req = fidl::new_empty!(
373 RealmFactoryCreateRealmRequest,
374 fidl::encoding::DefaultFuchsiaResourceDialect
375 );
376 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<RealmFactoryCreateRealmRequest>(&header, _body_bytes, handles, &mut req)?;
377 let control_handle =
378 RealmFactoryControlHandle { inner: this.inner.clone() };
379 Ok(RealmFactoryRequest::CreateRealm {
380 payload: req,
381 responder: RealmFactoryCreateRealmResponder {
382 control_handle: std::mem::ManuallyDrop::new(control_handle),
383 tx_id: header.tx_id,
384 },
385 })
386 }
387 _ if header.tx_id == 0
388 && header
389 .dynamic_flags()
390 .contains(fidl::encoding::DynamicFlags::FLEXIBLE) =>
391 {
392 Ok(RealmFactoryRequest::_UnknownMethod {
393 ordinal: header.ordinal,
394 control_handle: RealmFactoryControlHandle { inner: this.inner.clone() },
395 method_type: fidl::MethodType::OneWay,
396 })
397 }
398 _ if header
399 .dynamic_flags()
400 .contains(fidl::encoding::DynamicFlags::FLEXIBLE) =>
401 {
402 this.inner.send_framework_err(
403 fidl::encoding::FrameworkErr::UnknownMethod,
404 header.tx_id,
405 header.ordinal,
406 header.dynamic_flags(),
407 (bytes, handles),
408 )?;
409 Ok(RealmFactoryRequest::_UnknownMethod {
410 ordinal: header.ordinal,
411 control_handle: RealmFactoryControlHandle { inner: this.inner.clone() },
412 method_type: fidl::MethodType::TwoWay,
413 })
414 }
415 _ => Err(fidl::Error::UnknownOrdinal {
416 ordinal: header.ordinal,
417 protocol_name:
418 <RealmFactoryMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
419 }),
420 }))
421 },
422 )
423 }
424}
425
426#[derive(Debug)]
430pub enum RealmFactoryRequest {
431 CreateRealm {
432 payload: RealmFactoryCreateRealmRequest,
433 responder: RealmFactoryCreateRealmResponder,
434 },
435 #[non_exhaustive]
437 _UnknownMethod {
438 ordinal: u64,
440 control_handle: RealmFactoryControlHandle,
441 method_type: fidl::MethodType,
442 },
443}
444
445impl RealmFactoryRequest {
446 #[allow(irrefutable_let_patterns)]
447 pub fn into_create_realm(
448 self,
449 ) -> Option<(RealmFactoryCreateRealmRequest, RealmFactoryCreateRealmResponder)> {
450 if let RealmFactoryRequest::CreateRealm { payload, responder } = self {
451 Some((payload, responder))
452 } else {
453 None
454 }
455 }
456
457 pub fn method_name(&self) -> &'static str {
459 match *self {
460 RealmFactoryRequest::CreateRealm { .. } => "create_realm",
461 RealmFactoryRequest::_UnknownMethod {
462 method_type: fidl::MethodType::OneWay, ..
463 } => "unknown one-way method",
464 RealmFactoryRequest::_UnknownMethod {
465 method_type: fidl::MethodType::TwoWay, ..
466 } => "unknown two-way method",
467 }
468 }
469}
470
471#[derive(Debug, Clone)]
472pub struct RealmFactoryControlHandle {
473 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
474}
475
476impl fidl::endpoints::ControlHandle for RealmFactoryControlHandle {
477 fn shutdown(&self) {
478 self.inner.shutdown()
479 }
480 fn shutdown_with_epitaph(&self, status: zx_status::Status) {
481 self.inner.shutdown_with_epitaph(status)
482 }
483
484 fn is_closed(&self) -> bool {
485 self.inner.channel().is_closed()
486 }
487 fn on_closed(&self) -> fidl::OnSignalsRef<'_> {
488 self.inner.channel().on_closed()
489 }
490
491 #[cfg(target_os = "fuchsia")]
492 fn signal_peer(
493 &self,
494 clear_mask: zx::Signals,
495 set_mask: zx::Signals,
496 ) -> Result<(), zx_status::Status> {
497 use fidl::Peered;
498 self.inner.channel().signal_peer(clear_mask, set_mask)
499 }
500}
501
502impl RealmFactoryControlHandle {}
503
504#[must_use = "FIDL methods require a response to be sent"]
505#[derive(Debug)]
506pub struct RealmFactoryCreateRealmResponder {
507 control_handle: std::mem::ManuallyDrop<RealmFactoryControlHandle>,
508 tx_id: u32,
509}
510
511impl std::ops::Drop for RealmFactoryCreateRealmResponder {
515 fn drop(&mut self) {
516 self.control_handle.shutdown();
517 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
519 }
520}
521
522impl fidl::endpoints::Responder for RealmFactoryCreateRealmResponder {
523 type ControlHandle = RealmFactoryControlHandle;
524
525 fn control_handle(&self) -> &RealmFactoryControlHandle {
526 &self.control_handle
527 }
528
529 fn drop_without_shutdown(mut self) {
530 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
532 std::mem::forget(self);
534 }
535}
536
537impl RealmFactoryCreateRealmResponder {
538 pub fn send(
542 self,
543 mut result: Result<(), fidl_fuchsia_testing_harness::OperationError>,
544 ) -> Result<(), fidl::Error> {
545 let _result = self.send_raw(result);
546 if _result.is_err() {
547 self.control_handle.shutdown();
548 }
549 self.drop_without_shutdown();
550 _result
551 }
552
553 pub fn send_no_shutdown_on_err(
555 self,
556 mut result: Result<(), fidl_fuchsia_testing_harness::OperationError>,
557 ) -> Result<(), fidl::Error> {
558 let _result = self.send_raw(result);
559 self.drop_without_shutdown();
560 _result
561 }
562
563 fn send_raw(
564 &self,
565 mut result: Result<(), fidl_fuchsia_testing_harness::OperationError>,
566 ) -> Result<(), fidl::Error> {
567 self.control_handle.inner.send::<fidl::encoding::FlexibleResultType<
568 fidl::encoding::EmptyStruct,
569 fidl_fuchsia_testing_harness::OperationError,
570 >>(
571 fidl::encoding::FlexibleResult::new(result),
572 self.tx_id,
573 0x6e1c904f44c7d0fc,
574 fidl::encoding::DynamicFlags::FLEXIBLE,
575 )
576 }
577}
578
579#[derive(Debug, Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash)]
580pub struct ScenicRealmFactoryMarker;
581
582impl fidl::endpoints::ProtocolMarker for ScenicRealmFactoryMarker {
583 type Proxy = ScenicRealmFactoryProxy;
584 type RequestStream = ScenicRealmFactoryRequestStream;
585 #[cfg(target_os = "fuchsia")]
586 type SynchronousProxy = ScenicRealmFactorySynchronousProxy;
587
588 const DEBUG_NAME: &'static str = "fuchsia.ui.test.context.ScenicRealmFactory";
589}
590impl fidl::endpoints::DiscoverableProtocolMarker for ScenicRealmFactoryMarker {}
591pub type ScenicRealmFactoryCreateRealmResult =
592 Result<(), fidl_fuchsia_testing_harness::OperationError>;
593
594pub trait ScenicRealmFactoryProxyInterface: Send + Sync {
595 type CreateRealmResponseFut: std::future::Future<Output = Result<ScenicRealmFactoryCreateRealmResult, fidl::Error>>
596 + Send;
597 fn r#create_realm(
598 &self,
599 payload: ScenicRealmFactoryCreateRealmRequest,
600 ) -> Self::CreateRealmResponseFut;
601}
602#[derive(Debug)]
603#[cfg(target_os = "fuchsia")]
604pub struct ScenicRealmFactorySynchronousProxy {
605 client: fidl::client::sync::Client,
606}
607
608#[cfg(target_os = "fuchsia")]
609impl fidl::endpoints::SynchronousProxy for ScenicRealmFactorySynchronousProxy {
610 type Proxy = ScenicRealmFactoryProxy;
611 type Protocol = ScenicRealmFactoryMarker;
612
613 fn from_channel(inner: fidl::Channel) -> Self {
614 Self::new(inner)
615 }
616
617 fn into_channel(self) -> fidl::Channel {
618 self.client.into_channel()
619 }
620
621 fn as_channel(&self) -> &fidl::Channel {
622 self.client.as_channel()
623 }
624}
625
626#[cfg(target_os = "fuchsia")]
627impl ScenicRealmFactorySynchronousProxy {
628 pub fn new(channel: fidl::Channel) -> Self {
629 let protocol_name =
630 <ScenicRealmFactoryMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
631 Self { client: fidl::client::sync::Client::new(channel, protocol_name) }
632 }
633
634 pub fn into_channel(self) -> fidl::Channel {
635 self.client.into_channel()
636 }
637
638 pub fn wait_for_event(
641 &self,
642 deadline: zx::MonotonicInstant,
643 ) -> Result<ScenicRealmFactoryEvent, fidl::Error> {
644 ScenicRealmFactoryEvent::decode(self.client.wait_for_event(deadline)?)
645 }
646
647 pub fn r#create_realm(
648 &self,
649 mut payload: ScenicRealmFactoryCreateRealmRequest,
650 ___deadline: zx::MonotonicInstant,
651 ) -> Result<ScenicRealmFactoryCreateRealmResult, fidl::Error> {
652 let _response = self
653 .client
654 .send_query::<ScenicRealmFactoryCreateRealmRequest, fidl::encoding::FlexibleResultType<
655 fidl::encoding::EmptyStruct,
656 fidl_fuchsia_testing_harness::OperationError,
657 >>(
658 &mut payload,
659 0x11f2157d1648e6ba,
660 fidl::encoding::DynamicFlags::FLEXIBLE,
661 ___deadline,
662 )?
663 .into_result::<ScenicRealmFactoryMarker>("create_realm")?;
664 Ok(_response.map(|x| x))
665 }
666}
667
668#[cfg(target_os = "fuchsia")]
669impl From<ScenicRealmFactorySynchronousProxy> for zx::Handle {
670 fn from(value: ScenicRealmFactorySynchronousProxy) -> Self {
671 value.into_channel().into()
672 }
673}
674
675#[cfg(target_os = "fuchsia")]
676impl From<fidl::Channel> for ScenicRealmFactorySynchronousProxy {
677 fn from(value: fidl::Channel) -> Self {
678 Self::new(value)
679 }
680}
681
682#[cfg(target_os = "fuchsia")]
683impl fidl::endpoints::FromClient for ScenicRealmFactorySynchronousProxy {
684 type Protocol = ScenicRealmFactoryMarker;
685
686 fn from_client(value: fidl::endpoints::ClientEnd<ScenicRealmFactoryMarker>) -> Self {
687 Self::new(value.into_channel())
688 }
689}
690
691#[derive(Debug, Clone)]
692pub struct ScenicRealmFactoryProxy {
693 client: fidl::client::Client<fidl::encoding::DefaultFuchsiaResourceDialect>,
694}
695
696impl fidl::endpoints::Proxy for ScenicRealmFactoryProxy {
697 type Protocol = ScenicRealmFactoryMarker;
698
699 fn from_channel(inner: ::fidl::AsyncChannel) -> Self {
700 Self::new(inner)
701 }
702
703 fn into_channel(self) -> Result<::fidl::AsyncChannel, Self> {
704 self.client.into_channel().map_err(|client| Self { client })
705 }
706
707 fn as_channel(&self) -> &::fidl::AsyncChannel {
708 self.client.as_channel()
709 }
710}
711
712impl ScenicRealmFactoryProxy {
713 pub fn new(channel: ::fidl::AsyncChannel) -> Self {
715 let protocol_name =
716 <ScenicRealmFactoryMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
717 Self { client: fidl::client::Client::new(channel, protocol_name) }
718 }
719
720 pub fn take_event_stream(&self) -> ScenicRealmFactoryEventStream {
726 ScenicRealmFactoryEventStream { event_receiver: self.client.take_event_receiver() }
727 }
728
729 pub fn r#create_realm(
730 &self,
731 mut payload: ScenicRealmFactoryCreateRealmRequest,
732 ) -> fidl::client::QueryResponseFut<
733 ScenicRealmFactoryCreateRealmResult,
734 fidl::encoding::DefaultFuchsiaResourceDialect,
735 > {
736 ScenicRealmFactoryProxyInterface::r#create_realm(self, payload)
737 }
738}
739
740impl ScenicRealmFactoryProxyInterface for ScenicRealmFactoryProxy {
741 type CreateRealmResponseFut = fidl::client::QueryResponseFut<
742 ScenicRealmFactoryCreateRealmResult,
743 fidl::encoding::DefaultFuchsiaResourceDialect,
744 >;
745 fn r#create_realm(
746 &self,
747 mut payload: ScenicRealmFactoryCreateRealmRequest,
748 ) -> Self::CreateRealmResponseFut {
749 fn _decode(
750 mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
751 ) -> Result<ScenicRealmFactoryCreateRealmResult, fidl::Error> {
752 let _response = fidl::client::decode_transaction_body::<
753 fidl::encoding::FlexibleResultType<
754 fidl::encoding::EmptyStruct,
755 fidl_fuchsia_testing_harness::OperationError,
756 >,
757 fidl::encoding::DefaultFuchsiaResourceDialect,
758 0x11f2157d1648e6ba,
759 >(_buf?)?
760 .into_result::<ScenicRealmFactoryMarker>("create_realm")?;
761 Ok(_response.map(|x| x))
762 }
763 self.client.send_query_and_decode::<
764 ScenicRealmFactoryCreateRealmRequest,
765 ScenicRealmFactoryCreateRealmResult,
766 >(
767 &mut payload,
768 0x11f2157d1648e6ba,
769 fidl::encoding::DynamicFlags::FLEXIBLE,
770 _decode,
771 )
772 }
773}
774
775pub struct ScenicRealmFactoryEventStream {
776 event_receiver: fidl::client::EventReceiver<fidl::encoding::DefaultFuchsiaResourceDialect>,
777}
778
779impl std::marker::Unpin for ScenicRealmFactoryEventStream {}
780
781impl futures::stream::FusedStream for ScenicRealmFactoryEventStream {
782 fn is_terminated(&self) -> bool {
783 self.event_receiver.is_terminated()
784 }
785}
786
787impl futures::Stream for ScenicRealmFactoryEventStream {
788 type Item = Result<ScenicRealmFactoryEvent, fidl::Error>;
789
790 fn poll_next(
791 mut self: std::pin::Pin<&mut Self>,
792 cx: &mut std::task::Context<'_>,
793 ) -> std::task::Poll<Option<Self::Item>> {
794 match futures::ready!(futures::stream::StreamExt::poll_next_unpin(
795 &mut self.event_receiver,
796 cx
797 )?) {
798 Some(buf) => std::task::Poll::Ready(Some(ScenicRealmFactoryEvent::decode(buf))),
799 None => std::task::Poll::Ready(None),
800 }
801 }
802}
803
804#[derive(Debug)]
805pub enum ScenicRealmFactoryEvent {
806 #[non_exhaustive]
807 _UnknownEvent {
808 ordinal: u64,
810 },
811}
812
813impl ScenicRealmFactoryEvent {
814 fn decode(
816 mut buf: <fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc,
817 ) -> Result<ScenicRealmFactoryEvent, fidl::Error> {
818 let (bytes, _handles) = buf.split_mut();
819 let (tx_header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
820 debug_assert_eq!(tx_header.tx_id, 0);
821 match tx_header.ordinal {
822 _ if tx_header.dynamic_flags().contains(fidl::encoding::DynamicFlags::FLEXIBLE) => {
823 Ok(ScenicRealmFactoryEvent::_UnknownEvent { ordinal: tx_header.ordinal })
824 }
825 _ => Err(fidl::Error::UnknownOrdinal {
826 ordinal: tx_header.ordinal,
827 protocol_name:
828 <ScenicRealmFactoryMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
829 }),
830 }
831 }
832}
833
834pub struct ScenicRealmFactoryRequestStream {
836 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
837 is_terminated: bool,
838}
839
840impl std::marker::Unpin for ScenicRealmFactoryRequestStream {}
841
842impl futures::stream::FusedStream for ScenicRealmFactoryRequestStream {
843 fn is_terminated(&self) -> bool {
844 self.is_terminated
845 }
846}
847
848impl fidl::endpoints::RequestStream for ScenicRealmFactoryRequestStream {
849 type Protocol = ScenicRealmFactoryMarker;
850 type ControlHandle = ScenicRealmFactoryControlHandle;
851
852 fn from_channel(channel: ::fidl::AsyncChannel) -> Self {
853 Self { inner: std::sync::Arc::new(fidl::ServeInner::new(channel)), is_terminated: false }
854 }
855
856 fn control_handle(&self) -> Self::ControlHandle {
857 ScenicRealmFactoryControlHandle { inner: self.inner.clone() }
858 }
859
860 fn into_inner(
861 self,
862 ) -> (::std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>, bool)
863 {
864 (self.inner, self.is_terminated)
865 }
866
867 fn from_inner(
868 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
869 is_terminated: bool,
870 ) -> Self {
871 Self { inner, is_terminated }
872 }
873}
874
875impl futures::Stream for ScenicRealmFactoryRequestStream {
876 type Item = Result<ScenicRealmFactoryRequest, fidl::Error>;
877
878 fn poll_next(
879 mut self: std::pin::Pin<&mut Self>,
880 cx: &mut std::task::Context<'_>,
881 ) -> std::task::Poll<Option<Self::Item>> {
882 let this = &mut *self;
883 if this.inner.check_shutdown(cx) {
884 this.is_terminated = true;
885 return std::task::Poll::Ready(None);
886 }
887 if this.is_terminated {
888 panic!("polled ScenicRealmFactoryRequestStream after completion");
889 }
890 fidl::encoding::with_tls_decode_buf::<_, fidl::encoding::DefaultFuchsiaResourceDialect>(
891 |bytes, handles| {
892 match this.inner.channel().read_etc(cx, bytes, handles) {
893 std::task::Poll::Ready(Ok(())) => {}
894 std::task::Poll::Pending => return std::task::Poll::Pending,
895 std::task::Poll::Ready(Err(zx_status::Status::PEER_CLOSED)) => {
896 this.is_terminated = true;
897 return std::task::Poll::Ready(None);
898 }
899 std::task::Poll::Ready(Err(e)) => {
900 return std::task::Poll::Ready(Some(Err(fidl::Error::ServerRequestRead(
901 e.into(),
902 ))))
903 }
904 }
905
906 let (header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
908
909 std::task::Poll::Ready(Some(match header.ordinal {
910 0x11f2157d1648e6ba => {
911 header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
912 let mut req = fidl::new_empty!(ScenicRealmFactoryCreateRealmRequest, fidl::encoding::DefaultFuchsiaResourceDialect);
913 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<ScenicRealmFactoryCreateRealmRequest>(&header, _body_bytes, handles, &mut req)?;
914 let control_handle = ScenicRealmFactoryControlHandle {
915 inner: this.inner.clone(),
916 };
917 Ok(ScenicRealmFactoryRequest::CreateRealm {payload: req,
918 responder: ScenicRealmFactoryCreateRealmResponder {
919 control_handle: std::mem::ManuallyDrop::new(control_handle),
920 tx_id: header.tx_id,
921 },
922 })
923 }
924 _ if header.tx_id == 0 && header.dynamic_flags().contains(fidl::encoding::DynamicFlags::FLEXIBLE) => {
925 Ok(ScenicRealmFactoryRequest::_UnknownMethod {
926 ordinal: header.ordinal,
927 control_handle: ScenicRealmFactoryControlHandle { inner: this.inner.clone() },
928 method_type: fidl::MethodType::OneWay,
929 })
930 }
931 _ if header.dynamic_flags().contains(fidl::encoding::DynamicFlags::FLEXIBLE) => {
932 this.inner.send_framework_err(
933 fidl::encoding::FrameworkErr::UnknownMethod,
934 header.tx_id,
935 header.ordinal,
936 header.dynamic_flags(),
937 (bytes, handles),
938 )?;
939 Ok(ScenicRealmFactoryRequest::_UnknownMethod {
940 ordinal: header.ordinal,
941 control_handle: ScenicRealmFactoryControlHandle { inner: this.inner.clone() },
942 method_type: fidl::MethodType::TwoWay,
943 })
944 }
945 _ => Err(fidl::Error::UnknownOrdinal {
946 ordinal: header.ordinal,
947 protocol_name: <ScenicRealmFactoryMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
948 }),
949 }))
950 },
951 )
952 }
953}
954
955#[derive(Debug)]
959pub enum ScenicRealmFactoryRequest {
960 CreateRealm {
961 payload: ScenicRealmFactoryCreateRealmRequest,
962 responder: ScenicRealmFactoryCreateRealmResponder,
963 },
964 #[non_exhaustive]
966 _UnknownMethod {
967 ordinal: u64,
969 control_handle: ScenicRealmFactoryControlHandle,
970 method_type: fidl::MethodType,
971 },
972}
973
974impl ScenicRealmFactoryRequest {
975 #[allow(irrefutable_let_patterns)]
976 pub fn into_create_realm(
977 self,
978 ) -> Option<(ScenicRealmFactoryCreateRealmRequest, ScenicRealmFactoryCreateRealmResponder)>
979 {
980 if let ScenicRealmFactoryRequest::CreateRealm { payload, responder } = self {
981 Some((payload, responder))
982 } else {
983 None
984 }
985 }
986
987 pub fn method_name(&self) -> &'static str {
989 match *self {
990 ScenicRealmFactoryRequest::CreateRealm { .. } => "create_realm",
991 ScenicRealmFactoryRequest::_UnknownMethod {
992 method_type: fidl::MethodType::OneWay,
993 ..
994 } => "unknown one-way method",
995 ScenicRealmFactoryRequest::_UnknownMethod {
996 method_type: fidl::MethodType::TwoWay,
997 ..
998 } => "unknown two-way method",
999 }
1000 }
1001}
1002
1003#[derive(Debug, Clone)]
1004pub struct ScenicRealmFactoryControlHandle {
1005 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
1006}
1007
1008impl fidl::endpoints::ControlHandle for ScenicRealmFactoryControlHandle {
1009 fn shutdown(&self) {
1010 self.inner.shutdown()
1011 }
1012 fn shutdown_with_epitaph(&self, status: zx_status::Status) {
1013 self.inner.shutdown_with_epitaph(status)
1014 }
1015
1016 fn is_closed(&self) -> bool {
1017 self.inner.channel().is_closed()
1018 }
1019 fn on_closed(&self) -> fidl::OnSignalsRef<'_> {
1020 self.inner.channel().on_closed()
1021 }
1022
1023 #[cfg(target_os = "fuchsia")]
1024 fn signal_peer(
1025 &self,
1026 clear_mask: zx::Signals,
1027 set_mask: zx::Signals,
1028 ) -> Result<(), zx_status::Status> {
1029 use fidl::Peered;
1030 self.inner.channel().signal_peer(clear_mask, set_mask)
1031 }
1032}
1033
1034impl ScenicRealmFactoryControlHandle {}
1035
1036#[must_use = "FIDL methods require a response to be sent"]
1037#[derive(Debug)]
1038pub struct ScenicRealmFactoryCreateRealmResponder {
1039 control_handle: std::mem::ManuallyDrop<ScenicRealmFactoryControlHandle>,
1040 tx_id: u32,
1041}
1042
1043impl std::ops::Drop for ScenicRealmFactoryCreateRealmResponder {
1047 fn drop(&mut self) {
1048 self.control_handle.shutdown();
1049 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
1051 }
1052}
1053
1054impl fidl::endpoints::Responder for ScenicRealmFactoryCreateRealmResponder {
1055 type ControlHandle = ScenicRealmFactoryControlHandle;
1056
1057 fn control_handle(&self) -> &ScenicRealmFactoryControlHandle {
1058 &self.control_handle
1059 }
1060
1061 fn drop_without_shutdown(mut self) {
1062 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
1064 std::mem::forget(self);
1066 }
1067}
1068
1069impl ScenicRealmFactoryCreateRealmResponder {
1070 pub fn send(
1074 self,
1075 mut result: Result<(), fidl_fuchsia_testing_harness::OperationError>,
1076 ) -> Result<(), fidl::Error> {
1077 let _result = self.send_raw(result);
1078 if _result.is_err() {
1079 self.control_handle.shutdown();
1080 }
1081 self.drop_without_shutdown();
1082 _result
1083 }
1084
1085 pub fn send_no_shutdown_on_err(
1087 self,
1088 mut result: Result<(), fidl_fuchsia_testing_harness::OperationError>,
1089 ) -> Result<(), fidl::Error> {
1090 let _result = self.send_raw(result);
1091 self.drop_without_shutdown();
1092 _result
1093 }
1094
1095 fn send_raw(
1096 &self,
1097 mut result: Result<(), fidl_fuchsia_testing_harness::OperationError>,
1098 ) -> Result<(), fidl::Error> {
1099 self.control_handle.inner.send::<fidl::encoding::FlexibleResultType<
1100 fidl::encoding::EmptyStruct,
1101 fidl_fuchsia_testing_harness::OperationError,
1102 >>(
1103 fidl::encoding::FlexibleResult::new(result),
1104 self.tx_id,
1105 0x11f2157d1648e6ba,
1106 fidl::encoding::DynamicFlags::FLEXIBLE,
1107 )
1108 }
1109}
1110
1111mod internal {
1112 use super::*;
1113
1114 impl RealmFactoryCreateRealmRequest {
1115 #[inline(always)]
1116 fn max_ordinal_present(&self) -> u64 {
1117 if let Some(_) = self.device_pixel_ratio {
1118 return 3;
1119 }
1120 if let Some(_) = self.display_rotation {
1121 return 2;
1122 }
1123 if let Some(_) = self.realm_server {
1124 return 1;
1125 }
1126 0
1127 }
1128 }
1129
1130 impl fidl::encoding::ResourceTypeMarker for RealmFactoryCreateRealmRequest {
1131 type Borrowed<'a> = &'a mut Self;
1132 fn take_or_borrow<'a>(
1133 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
1134 ) -> Self::Borrowed<'a> {
1135 value
1136 }
1137 }
1138
1139 unsafe impl fidl::encoding::TypeMarker for RealmFactoryCreateRealmRequest {
1140 type Owned = Self;
1141
1142 #[inline(always)]
1143 fn inline_align(_context: fidl::encoding::Context) -> usize {
1144 8
1145 }
1146
1147 #[inline(always)]
1148 fn inline_size(_context: fidl::encoding::Context) -> usize {
1149 16
1150 }
1151 }
1152
1153 unsafe impl
1154 fidl::encoding::Encode<
1155 RealmFactoryCreateRealmRequest,
1156 fidl::encoding::DefaultFuchsiaResourceDialect,
1157 > for &mut RealmFactoryCreateRealmRequest
1158 {
1159 unsafe fn encode(
1160 self,
1161 encoder: &mut fidl::encoding::Encoder<
1162 '_,
1163 fidl::encoding::DefaultFuchsiaResourceDialect,
1164 >,
1165 offset: usize,
1166 mut depth: fidl::encoding::Depth,
1167 ) -> fidl::Result<()> {
1168 encoder.debug_check_bounds::<RealmFactoryCreateRealmRequest>(offset);
1169 let max_ordinal: u64 = self.max_ordinal_present();
1171 encoder.write_num(max_ordinal, offset);
1172 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
1173 if max_ordinal == 0 {
1175 return Ok(());
1176 }
1177 depth.increment()?;
1178 let envelope_size = 8;
1179 let bytes_len = max_ordinal as usize * envelope_size;
1180 #[allow(unused_variables)]
1181 let offset = encoder.out_of_line_offset(bytes_len);
1182 let mut _prev_end_offset: usize = 0;
1183 if 1 > max_ordinal {
1184 return Ok(());
1185 }
1186
1187 let cur_offset: usize = (1 - 1) * envelope_size;
1190
1191 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1193
1194 fidl::encoding::encode_in_envelope_optional::<
1199 fidl::encoding::Endpoint<
1200 fidl::endpoints::ServerEnd<fidl_fuchsia_testing_harness::RealmProxy_Marker>,
1201 >,
1202 fidl::encoding::DefaultFuchsiaResourceDialect,
1203 >(
1204 self.realm_server.as_mut().map(
1205 <fidl::encoding::Endpoint<
1206 fidl::endpoints::ServerEnd<fidl_fuchsia_testing_harness::RealmProxy_Marker>,
1207 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow,
1208 ),
1209 encoder,
1210 offset + cur_offset,
1211 depth,
1212 )?;
1213
1214 _prev_end_offset = cur_offset + envelope_size;
1215 if 2 > max_ordinal {
1216 return Ok(());
1217 }
1218
1219 let cur_offset: usize = (2 - 1) * envelope_size;
1222
1223 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1225
1226 fidl::encoding::encode_in_envelope_optional::<
1231 u32,
1232 fidl::encoding::DefaultFuchsiaResourceDialect,
1233 >(
1234 self.display_rotation
1235 .as_ref()
1236 .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
1237 encoder,
1238 offset + cur_offset,
1239 depth,
1240 )?;
1241
1242 _prev_end_offset = cur_offset + envelope_size;
1243 if 3 > max_ordinal {
1244 return Ok(());
1245 }
1246
1247 let cur_offset: usize = (3 - 1) * envelope_size;
1250
1251 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1253
1254 fidl::encoding::encode_in_envelope_optional::<
1259 f32,
1260 fidl::encoding::DefaultFuchsiaResourceDialect,
1261 >(
1262 self.device_pixel_ratio
1263 .as_ref()
1264 .map(<f32 as fidl::encoding::ValueTypeMarker>::borrow),
1265 encoder,
1266 offset + cur_offset,
1267 depth,
1268 )?;
1269
1270 _prev_end_offset = cur_offset + envelope_size;
1271
1272 Ok(())
1273 }
1274 }
1275
1276 impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
1277 for RealmFactoryCreateRealmRequest
1278 {
1279 #[inline(always)]
1280 fn new_empty() -> Self {
1281 Self::default()
1282 }
1283
1284 unsafe fn decode(
1285 &mut self,
1286 decoder: &mut fidl::encoding::Decoder<
1287 '_,
1288 fidl::encoding::DefaultFuchsiaResourceDialect,
1289 >,
1290 offset: usize,
1291 mut depth: fidl::encoding::Depth,
1292 ) -> fidl::Result<()> {
1293 decoder.debug_check_bounds::<Self>(offset);
1294 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
1295 None => return Err(fidl::Error::NotNullable),
1296 Some(len) => len,
1297 };
1298 if len == 0 {
1300 return Ok(());
1301 };
1302 depth.increment()?;
1303 let envelope_size = 8;
1304 let bytes_len = len * envelope_size;
1305 let offset = decoder.out_of_line_offset(bytes_len)?;
1306 let mut _next_ordinal_to_read = 0;
1308 let mut next_offset = offset;
1309 let end_offset = offset + bytes_len;
1310 _next_ordinal_to_read += 1;
1311 if next_offset >= end_offset {
1312 return Ok(());
1313 }
1314
1315 while _next_ordinal_to_read < 1 {
1317 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1318 _next_ordinal_to_read += 1;
1319 next_offset += envelope_size;
1320 }
1321
1322 let next_out_of_line = decoder.next_out_of_line();
1323 let handles_before = decoder.remaining_handles();
1324 if let Some((inlined, num_bytes, num_handles)) =
1325 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1326 {
1327 let member_inline_size = <fidl::encoding::Endpoint<
1328 fidl::endpoints::ServerEnd<fidl_fuchsia_testing_harness::RealmProxy_Marker>,
1329 > as fidl::encoding::TypeMarker>::inline_size(
1330 decoder.context
1331 );
1332 if inlined != (member_inline_size <= 4) {
1333 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1334 }
1335 let inner_offset;
1336 let mut inner_depth = depth.clone();
1337 if inlined {
1338 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1339 inner_offset = next_offset;
1340 } else {
1341 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1342 inner_depth.increment()?;
1343 }
1344 let val_ref = self.realm_server.get_or_insert_with(|| {
1345 fidl::new_empty!(
1346 fidl::encoding::Endpoint<
1347 fidl::endpoints::ServerEnd<
1348 fidl_fuchsia_testing_harness::RealmProxy_Marker,
1349 >,
1350 >,
1351 fidl::encoding::DefaultFuchsiaResourceDialect
1352 )
1353 });
1354 fidl::decode!(
1355 fidl::encoding::Endpoint<
1356 fidl::endpoints::ServerEnd<fidl_fuchsia_testing_harness::RealmProxy_Marker>,
1357 >,
1358 fidl::encoding::DefaultFuchsiaResourceDialect,
1359 val_ref,
1360 decoder,
1361 inner_offset,
1362 inner_depth
1363 )?;
1364 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1365 {
1366 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1367 }
1368 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1369 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1370 }
1371 }
1372
1373 next_offset += envelope_size;
1374 _next_ordinal_to_read += 1;
1375 if next_offset >= end_offset {
1376 return Ok(());
1377 }
1378
1379 while _next_ordinal_to_read < 2 {
1381 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1382 _next_ordinal_to_read += 1;
1383 next_offset += envelope_size;
1384 }
1385
1386 let next_out_of_line = decoder.next_out_of_line();
1387 let handles_before = decoder.remaining_handles();
1388 if let Some((inlined, num_bytes, num_handles)) =
1389 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1390 {
1391 let member_inline_size =
1392 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1393 if inlined != (member_inline_size <= 4) {
1394 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1395 }
1396 let inner_offset;
1397 let mut inner_depth = depth.clone();
1398 if inlined {
1399 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1400 inner_offset = next_offset;
1401 } else {
1402 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1403 inner_depth.increment()?;
1404 }
1405 let val_ref = self.display_rotation.get_or_insert_with(|| {
1406 fidl::new_empty!(u32, fidl::encoding::DefaultFuchsiaResourceDialect)
1407 });
1408 fidl::decode!(
1409 u32,
1410 fidl::encoding::DefaultFuchsiaResourceDialect,
1411 val_ref,
1412 decoder,
1413 inner_offset,
1414 inner_depth
1415 )?;
1416 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1417 {
1418 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1419 }
1420 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1421 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1422 }
1423 }
1424
1425 next_offset += envelope_size;
1426 _next_ordinal_to_read += 1;
1427 if next_offset >= end_offset {
1428 return Ok(());
1429 }
1430
1431 while _next_ordinal_to_read < 3 {
1433 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1434 _next_ordinal_to_read += 1;
1435 next_offset += envelope_size;
1436 }
1437
1438 let next_out_of_line = decoder.next_out_of_line();
1439 let handles_before = decoder.remaining_handles();
1440 if let Some((inlined, num_bytes, num_handles)) =
1441 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1442 {
1443 let member_inline_size =
1444 <f32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1445 if inlined != (member_inline_size <= 4) {
1446 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1447 }
1448 let inner_offset;
1449 let mut inner_depth = depth.clone();
1450 if inlined {
1451 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1452 inner_offset = next_offset;
1453 } else {
1454 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1455 inner_depth.increment()?;
1456 }
1457 let val_ref = self.device_pixel_ratio.get_or_insert_with(|| {
1458 fidl::new_empty!(f32, fidl::encoding::DefaultFuchsiaResourceDialect)
1459 });
1460 fidl::decode!(
1461 f32,
1462 fidl::encoding::DefaultFuchsiaResourceDialect,
1463 val_ref,
1464 decoder,
1465 inner_offset,
1466 inner_depth
1467 )?;
1468 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1469 {
1470 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1471 }
1472 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1473 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1474 }
1475 }
1476
1477 next_offset += envelope_size;
1478
1479 while next_offset < end_offset {
1481 _next_ordinal_to_read += 1;
1482 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1483 next_offset += envelope_size;
1484 }
1485
1486 Ok(())
1487 }
1488 }
1489
1490 impl ScenicRealmFactoryCreateRealmRequest {
1491 #[inline(always)]
1492 fn max_ordinal_present(&self) -> u64 {
1493 if let Some(_) = self.display_composition {
1494 return 4;
1495 }
1496 if let Some(_) = self.display_rotation {
1497 return 3;
1498 }
1499 if let Some(_) = self.renderer {
1500 return 2;
1501 }
1502 if let Some(_) = self.realm_server {
1503 return 1;
1504 }
1505 0
1506 }
1507 }
1508
1509 impl fidl::encoding::ResourceTypeMarker for ScenicRealmFactoryCreateRealmRequest {
1510 type Borrowed<'a> = &'a mut Self;
1511 fn take_or_borrow<'a>(
1512 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
1513 ) -> Self::Borrowed<'a> {
1514 value
1515 }
1516 }
1517
1518 unsafe impl fidl::encoding::TypeMarker for ScenicRealmFactoryCreateRealmRequest {
1519 type Owned = Self;
1520
1521 #[inline(always)]
1522 fn inline_align(_context: fidl::encoding::Context) -> usize {
1523 8
1524 }
1525
1526 #[inline(always)]
1527 fn inline_size(_context: fidl::encoding::Context) -> usize {
1528 16
1529 }
1530 }
1531
1532 unsafe impl
1533 fidl::encoding::Encode<
1534 ScenicRealmFactoryCreateRealmRequest,
1535 fidl::encoding::DefaultFuchsiaResourceDialect,
1536 > for &mut ScenicRealmFactoryCreateRealmRequest
1537 {
1538 unsafe fn encode(
1539 self,
1540 encoder: &mut fidl::encoding::Encoder<
1541 '_,
1542 fidl::encoding::DefaultFuchsiaResourceDialect,
1543 >,
1544 offset: usize,
1545 mut depth: fidl::encoding::Depth,
1546 ) -> fidl::Result<()> {
1547 encoder.debug_check_bounds::<ScenicRealmFactoryCreateRealmRequest>(offset);
1548 let max_ordinal: u64 = self.max_ordinal_present();
1550 encoder.write_num(max_ordinal, offset);
1551 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
1552 if max_ordinal == 0 {
1554 return Ok(());
1555 }
1556 depth.increment()?;
1557 let envelope_size = 8;
1558 let bytes_len = max_ordinal as usize * envelope_size;
1559 #[allow(unused_variables)]
1560 let offset = encoder.out_of_line_offset(bytes_len);
1561 let mut _prev_end_offset: usize = 0;
1562 if 1 > max_ordinal {
1563 return Ok(());
1564 }
1565
1566 let cur_offset: usize = (1 - 1) * envelope_size;
1569
1570 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1572
1573 fidl::encoding::encode_in_envelope_optional::<
1578 fidl::encoding::Endpoint<
1579 fidl::endpoints::ServerEnd<fidl_fuchsia_testing_harness::RealmProxy_Marker>,
1580 >,
1581 fidl::encoding::DefaultFuchsiaResourceDialect,
1582 >(
1583 self.realm_server.as_mut().map(
1584 <fidl::encoding::Endpoint<
1585 fidl::endpoints::ServerEnd<fidl_fuchsia_testing_harness::RealmProxy_Marker>,
1586 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow,
1587 ),
1588 encoder,
1589 offset + cur_offset,
1590 depth,
1591 )?;
1592
1593 _prev_end_offset = cur_offset + envelope_size;
1594 if 2 > max_ordinal {
1595 return Ok(());
1596 }
1597
1598 let cur_offset: usize = (2 - 1) * envelope_size;
1601
1602 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1604
1605 fidl::encoding::encode_in_envelope_optional::<
1610 RendererType,
1611 fidl::encoding::DefaultFuchsiaResourceDialect,
1612 >(
1613 self.renderer
1614 .as_ref()
1615 .map(<RendererType as fidl::encoding::ValueTypeMarker>::borrow),
1616 encoder,
1617 offset + cur_offset,
1618 depth,
1619 )?;
1620
1621 _prev_end_offset = cur_offset + envelope_size;
1622 if 3 > max_ordinal {
1623 return Ok(());
1624 }
1625
1626 let cur_offset: usize = (3 - 1) * envelope_size;
1629
1630 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1632
1633 fidl::encoding::encode_in_envelope_optional::<
1638 u64,
1639 fidl::encoding::DefaultFuchsiaResourceDialect,
1640 >(
1641 self.display_rotation
1642 .as_ref()
1643 .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
1644 encoder,
1645 offset + cur_offset,
1646 depth,
1647 )?;
1648
1649 _prev_end_offset = cur_offset + envelope_size;
1650 if 4 > max_ordinal {
1651 return Ok(());
1652 }
1653
1654 let cur_offset: usize = (4 - 1) * envelope_size;
1657
1658 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1660
1661 fidl::encoding::encode_in_envelope_optional::<
1666 bool,
1667 fidl::encoding::DefaultFuchsiaResourceDialect,
1668 >(
1669 self.display_composition
1670 .as_ref()
1671 .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
1672 encoder,
1673 offset + cur_offset,
1674 depth,
1675 )?;
1676
1677 _prev_end_offset = cur_offset + envelope_size;
1678
1679 Ok(())
1680 }
1681 }
1682
1683 impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
1684 for ScenicRealmFactoryCreateRealmRequest
1685 {
1686 #[inline(always)]
1687 fn new_empty() -> Self {
1688 Self::default()
1689 }
1690
1691 unsafe fn decode(
1692 &mut self,
1693 decoder: &mut fidl::encoding::Decoder<
1694 '_,
1695 fidl::encoding::DefaultFuchsiaResourceDialect,
1696 >,
1697 offset: usize,
1698 mut depth: fidl::encoding::Depth,
1699 ) -> fidl::Result<()> {
1700 decoder.debug_check_bounds::<Self>(offset);
1701 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
1702 None => return Err(fidl::Error::NotNullable),
1703 Some(len) => len,
1704 };
1705 if len == 0 {
1707 return Ok(());
1708 };
1709 depth.increment()?;
1710 let envelope_size = 8;
1711 let bytes_len = len * envelope_size;
1712 let offset = decoder.out_of_line_offset(bytes_len)?;
1713 let mut _next_ordinal_to_read = 0;
1715 let mut next_offset = offset;
1716 let end_offset = offset + bytes_len;
1717 _next_ordinal_to_read += 1;
1718 if next_offset >= end_offset {
1719 return Ok(());
1720 }
1721
1722 while _next_ordinal_to_read < 1 {
1724 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1725 _next_ordinal_to_read += 1;
1726 next_offset += envelope_size;
1727 }
1728
1729 let next_out_of_line = decoder.next_out_of_line();
1730 let handles_before = decoder.remaining_handles();
1731 if let Some((inlined, num_bytes, num_handles)) =
1732 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1733 {
1734 let member_inline_size = <fidl::encoding::Endpoint<
1735 fidl::endpoints::ServerEnd<fidl_fuchsia_testing_harness::RealmProxy_Marker>,
1736 > as fidl::encoding::TypeMarker>::inline_size(
1737 decoder.context
1738 );
1739 if inlined != (member_inline_size <= 4) {
1740 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1741 }
1742 let inner_offset;
1743 let mut inner_depth = depth.clone();
1744 if inlined {
1745 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1746 inner_offset = next_offset;
1747 } else {
1748 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1749 inner_depth.increment()?;
1750 }
1751 let val_ref = self.realm_server.get_or_insert_with(|| {
1752 fidl::new_empty!(
1753 fidl::encoding::Endpoint<
1754 fidl::endpoints::ServerEnd<
1755 fidl_fuchsia_testing_harness::RealmProxy_Marker,
1756 >,
1757 >,
1758 fidl::encoding::DefaultFuchsiaResourceDialect
1759 )
1760 });
1761 fidl::decode!(
1762 fidl::encoding::Endpoint<
1763 fidl::endpoints::ServerEnd<fidl_fuchsia_testing_harness::RealmProxy_Marker>,
1764 >,
1765 fidl::encoding::DefaultFuchsiaResourceDialect,
1766 val_ref,
1767 decoder,
1768 inner_offset,
1769 inner_depth
1770 )?;
1771 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1772 {
1773 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1774 }
1775 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1776 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1777 }
1778 }
1779
1780 next_offset += envelope_size;
1781 _next_ordinal_to_read += 1;
1782 if next_offset >= end_offset {
1783 return Ok(());
1784 }
1785
1786 while _next_ordinal_to_read < 2 {
1788 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1789 _next_ordinal_to_read += 1;
1790 next_offset += envelope_size;
1791 }
1792
1793 let next_out_of_line = decoder.next_out_of_line();
1794 let handles_before = decoder.remaining_handles();
1795 if let Some((inlined, num_bytes, num_handles)) =
1796 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1797 {
1798 let member_inline_size =
1799 <RendererType as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1800 if inlined != (member_inline_size <= 4) {
1801 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1802 }
1803 let inner_offset;
1804 let mut inner_depth = depth.clone();
1805 if inlined {
1806 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1807 inner_offset = next_offset;
1808 } else {
1809 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1810 inner_depth.increment()?;
1811 }
1812 let val_ref = self.renderer.get_or_insert_with(|| {
1813 fidl::new_empty!(RendererType, fidl::encoding::DefaultFuchsiaResourceDialect)
1814 });
1815 fidl::decode!(
1816 RendererType,
1817 fidl::encoding::DefaultFuchsiaResourceDialect,
1818 val_ref,
1819 decoder,
1820 inner_offset,
1821 inner_depth
1822 )?;
1823 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1824 {
1825 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1826 }
1827 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1828 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1829 }
1830 }
1831
1832 next_offset += envelope_size;
1833 _next_ordinal_to_read += 1;
1834 if next_offset >= end_offset {
1835 return Ok(());
1836 }
1837
1838 while _next_ordinal_to_read < 3 {
1840 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1841 _next_ordinal_to_read += 1;
1842 next_offset += envelope_size;
1843 }
1844
1845 let next_out_of_line = decoder.next_out_of_line();
1846 let handles_before = decoder.remaining_handles();
1847 if let Some((inlined, num_bytes, num_handles)) =
1848 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1849 {
1850 let member_inline_size =
1851 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1852 if inlined != (member_inline_size <= 4) {
1853 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1854 }
1855 let inner_offset;
1856 let mut inner_depth = depth.clone();
1857 if inlined {
1858 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1859 inner_offset = next_offset;
1860 } else {
1861 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1862 inner_depth.increment()?;
1863 }
1864 let val_ref = self.display_rotation.get_or_insert_with(|| {
1865 fidl::new_empty!(u64, fidl::encoding::DefaultFuchsiaResourceDialect)
1866 });
1867 fidl::decode!(
1868 u64,
1869 fidl::encoding::DefaultFuchsiaResourceDialect,
1870 val_ref,
1871 decoder,
1872 inner_offset,
1873 inner_depth
1874 )?;
1875 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1876 {
1877 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1878 }
1879 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1880 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1881 }
1882 }
1883
1884 next_offset += envelope_size;
1885 _next_ordinal_to_read += 1;
1886 if next_offset >= end_offset {
1887 return Ok(());
1888 }
1889
1890 while _next_ordinal_to_read < 4 {
1892 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1893 _next_ordinal_to_read += 1;
1894 next_offset += envelope_size;
1895 }
1896
1897 let next_out_of_line = decoder.next_out_of_line();
1898 let handles_before = decoder.remaining_handles();
1899 if let Some((inlined, num_bytes, num_handles)) =
1900 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1901 {
1902 let member_inline_size =
1903 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1904 if inlined != (member_inline_size <= 4) {
1905 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1906 }
1907 let inner_offset;
1908 let mut inner_depth = depth.clone();
1909 if inlined {
1910 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1911 inner_offset = next_offset;
1912 } else {
1913 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1914 inner_depth.increment()?;
1915 }
1916 let val_ref = self.display_composition.get_or_insert_with(|| {
1917 fidl::new_empty!(bool, fidl::encoding::DefaultFuchsiaResourceDialect)
1918 });
1919 fidl::decode!(
1920 bool,
1921 fidl::encoding::DefaultFuchsiaResourceDialect,
1922 val_ref,
1923 decoder,
1924 inner_offset,
1925 inner_depth
1926 )?;
1927 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1928 {
1929 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1930 }
1931 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1932 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1933 }
1934 }
1935
1936 next_offset += envelope_size;
1937
1938 while next_offset < end_offset {
1940 _next_ordinal_to_read += 1;
1941 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1942 next_offset += envelope_size;
1943 }
1944
1945 Ok(())
1946 }
1947 }
1948}