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