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_netemul__common::*;
11use futures::future::{self, MaybeDone, TryFutureExt};
12use zx_status;
13
14#[derive(Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
15pub struct ManagedRealmAddDeviceRequest {
16 pub path: String,
17 pub device: fidl::endpoints::ClientEnd<fidl_fuchsia_netemul_network::DeviceProxy_Marker>,
18}
19
20impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect>
21 for ManagedRealmAddDeviceRequest
22{
23}
24
25#[derive(Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
26pub struct ManagedRealmConnectToProtocolRequest {
27 pub protocol_name: String,
28 pub child_name: Option<String>,
29 pub req: fidl::Channel,
30}
31
32impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect>
33 for ManagedRealmConnectToProtocolRequest
34{
35}
36
37#[derive(Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
38pub struct ManagedRealmConnectToServiceRequest {
39 pub service_name: String,
40 pub child_name: Option<String>,
41 pub req: fidl::Channel,
42}
43
44impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect>
45 for ManagedRealmConnectToServiceRequest
46{
47}
48
49#[derive(Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
50pub struct ManagedRealmGetCrashListenerRequest {
51 pub listener: fidl::endpoints::ServerEnd<CrashListenerMarker>,
52}
53
54impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect>
55 for ManagedRealmGetCrashListenerRequest
56{
57}
58
59#[derive(Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
60pub struct ManagedRealmGetDevfsRequest {
61 pub devfs: fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>,
62}
63
64impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect>
65 for ManagedRealmGetDevfsRequest
66{
67}
68
69#[derive(Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
70pub struct ManagedRealmOpenDiagnosticsDirectoryRequest {
71 pub child_name: String,
72 pub directory: fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>,
73}
74
75impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect>
76 for ManagedRealmOpenDiagnosticsDirectoryRequest
77{
78}
79
80#[derive(Debug, PartialEq)]
81pub struct SandboxCreateRealmRequest {
82 pub realm: fidl::endpoints::ServerEnd<ManagedRealmMarker>,
83 pub options: RealmOptions,
84}
85
86impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect> for SandboxCreateRealmRequest {}
87
88#[derive(Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
89pub struct SandboxGetNetworkContextRequest {
90 pub network_context:
91 fidl::endpoints::ServerEnd<fidl_fuchsia_netemul_network::NetworkContextMarker>,
92}
93
94impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect>
95 for SandboxGetNetworkContextRequest
96{
97}
98
99#[derive(Debug, Default, PartialEq)]
100pub struct ChildDef {
101 pub source: Option<ChildSource>,
105 pub name: Option<String>,
109 pub exposes: Option<Vec<String>>,
113 pub uses: Option<ChildUses>,
117 pub program_args: Option<Vec<String>>,
124 pub eager: Option<bool>,
129 pub config_values: Option<Vec<ChildConfigValue>>,
134 #[doc(hidden)]
135 pub __source_breaking: fidl::marker::SourceBreaking,
136}
137
138impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect> for ChildDef {}
139
140#[derive(Debug, Default, PartialEq)]
141pub struct InterfaceOptions {
142 pub name: Option<String>,
146 pub device: Option<fidl::endpoints::ClientEnd<fidl_fuchsia_hardware_network::PortMarker>>,
150 pub without_autogenerated_addresses: Option<bool>,
155 pub static_ips: Option<Vec<fidl_fuchsia_net::Subnet>>,
161 pub gateway: Option<fidl_fuchsia_net::IpAddress>,
165 pub enable_ipv4_forwarding: Option<bool>,
169 pub enable_ipv6_forwarding: Option<bool>,
173 pub ipv4_multicast_neighbor_solicitations: Option<u16>,
177 pub ipv6_multicast_neighbor_solicitations: Option<u16>,
181 #[doc(hidden)]
182 pub __source_breaking: fidl::marker::SourceBreaking,
183}
184
185impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect> for InterfaceOptions {}
186
187#[derive(Debug, Default, PartialEq)]
188pub struct RealmOptions {
189 pub name: Option<String>,
197 pub children: Option<Vec<ChildDef>>,
201 #[doc(hidden)]
202 pub __source_breaking: fidl::marker::SourceBreaking,
203}
204
205impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect> for RealmOptions {}
206
207#[derive(Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
208pub enum ChildSource {
209 Component(String),
211 Mock(fidl::endpoints::ClientEnd<fidl_fuchsia_io::DirectoryMarker>),
214}
215
216impl ChildSource {
217 #[inline]
218 pub fn ordinal(&self) -> u64 {
219 match *self {
220 Self::Component(_) => 1,
221 Self::Mock(_) => 2,
222 }
223 }
224}
225
226impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect> for ChildSource {}
227
228#[derive(Debug, Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash)]
229pub struct ConfigurableNetstackMarker;
230
231impl fidl::endpoints::ProtocolMarker for ConfigurableNetstackMarker {
232 type Proxy = ConfigurableNetstackProxy;
233 type RequestStream = ConfigurableNetstackRequestStream;
234 #[cfg(target_os = "fuchsia")]
235 type SynchronousProxy = ConfigurableNetstackSynchronousProxy;
236
237 const DEBUG_NAME: &'static str = "fuchsia.netemul.ConfigurableNetstack";
238}
239impl fidl::endpoints::DiscoverableProtocolMarker for ConfigurableNetstackMarker {}
240pub type ConfigurableNetstackConfigureInterfaceResult = Result<(), ConfigurationError>;
241
242pub trait ConfigurableNetstackProxyInterface: Send + Sync {
243 type ConfigureInterfaceResponseFut: std::future::Future<
244 Output = Result<ConfigurableNetstackConfigureInterfaceResult, fidl::Error>,
245 > + Send;
246 fn r#configure_interface(
247 &self,
248 payload: InterfaceOptions,
249 ) -> Self::ConfigureInterfaceResponseFut;
250}
251#[derive(Debug)]
252#[cfg(target_os = "fuchsia")]
253pub struct ConfigurableNetstackSynchronousProxy {
254 client: fidl::client::sync::Client,
255}
256
257#[cfg(target_os = "fuchsia")]
258impl fidl::endpoints::SynchronousProxy for ConfigurableNetstackSynchronousProxy {
259 type Proxy = ConfigurableNetstackProxy;
260 type Protocol = ConfigurableNetstackMarker;
261
262 fn from_channel(inner: fidl::Channel) -> Self {
263 Self::new(inner)
264 }
265
266 fn into_channel(self) -> fidl::Channel {
267 self.client.into_channel()
268 }
269
270 fn as_channel(&self) -> &fidl::Channel {
271 self.client.as_channel()
272 }
273}
274
275#[cfg(target_os = "fuchsia")]
276impl ConfigurableNetstackSynchronousProxy {
277 pub fn new(channel: fidl::Channel) -> Self {
278 Self { client: fidl::client::sync::Client::new(channel) }
279 }
280
281 pub fn into_channel(self) -> fidl::Channel {
282 self.client.into_channel()
283 }
284
285 pub fn wait_for_event(
288 &self,
289 deadline: zx::MonotonicInstant,
290 ) -> Result<ConfigurableNetstackEvent, fidl::Error> {
291 ConfigurableNetstackEvent::decode(
292 self.client.wait_for_event::<ConfigurableNetstackMarker>(deadline)?,
293 )
294 }
295
296 pub fn r#configure_interface(
307 &self,
308 mut payload: InterfaceOptions,
309 ___deadline: zx::MonotonicInstant,
310 ) -> Result<ConfigurableNetstackConfigureInterfaceResult, fidl::Error> {
311 let _response = self.client.send_query::<InterfaceOptions, fidl::encoding::ResultType<
312 fidl::encoding::EmptyStruct,
313 ConfigurationError,
314 >, ConfigurableNetstackMarker>(
315 &mut payload,
316 0x64db8deb981ee49,
317 fidl::encoding::DynamicFlags::empty(),
318 ___deadline,
319 )?;
320 Ok(_response.map(|x| x))
321 }
322}
323
324#[cfg(target_os = "fuchsia")]
325impl From<ConfigurableNetstackSynchronousProxy> for zx::NullableHandle {
326 fn from(value: ConfigurableNetstackSynchronousProxy) -> Self {
327 value.into_channel().into()
328 }
329}
330
331#[cfg(target_os = "fuchsia")]
332impl From<fidl::Channel> for ConfigurableNetstackSynchronousProxy {
333 fn from(value: fidl::Channel) -> Self {
334 Self::new(value)
335 }
336}
337
338#[cfg(target_os = "fuchsia")]
339impl fidl::endpoints::FromClient for ConfigurableNetstackSynchronousProxy {
340 type Protocol = ConfigurableNetstackMarker;
341
342 fn from_client(value: fidl::endpoints::ClientEnd<ConfigurableNetstackMarker>) -> Self {
343 Self::new(value.into_channel())
344 }
345}
346
347#[derive(Debug, Clone)]
348pub struct ConfigurableNetstackProxy {
349 client: fidl::client::Client<fidl::encoding::DefaultFuchsiaResourceDialect>,
350}
351
352impl fidl::endpoints::Proxy for ConfigurableNetstackProxy {
353 type Protocol = ConfigurableNetstackMarker;
354
355 fn from_channel(inner: ::fidl::AsyncChannel) -> Self {
356 Self::new(inner)
357 }
358
359 fn into_channel(self) -> Result<::fidl::AsyncChannel, Self> {
360 self.client.into_channel().map_err(|client| Self { client })
361 }
362
363 fn as_channel(&self) -> &::fidl::AsyncChannel {
364 self.client.as_channel()
365 }
366}
367
368impl ConfigurableNetstackProxy {
369 pub fn new(channel: ::fidl::AsyncChannel) -> Self {
371 let protocol_name =
372 <ConfigurableNetstackMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
373 Self { client: fidl::client::Client::new(channel, protocol_name) }
374 }
375
376 pub fn take_event_stream(&self) -> ConfigurableNetstackEventStream {
382 ConfigurableNetstackEventStream { event_receiver: self.client.take_event_receiver() }
383 }
384
385 pub fn r#configure_interface(
396 &self,
397 mut payload: InterfaceOptions,
398 ) -> fidl::client::QueryResponseFut<
399 ConfigurableNetstackConfigureInterfaceResult,
400 fidl::encoding::DefaultFuchsiaResourceDialect,
401 > {
402 ConfigurableNetstackProxyInterface::r#configure_interface(self, payload)
403 }
404}
405
406impl ConfigurableNetstackProxyInterface for ConfigurableNetstackProxy {
407 type ConfigureInterfaceResponseFut = fidl::client::QueryResponseFut<
408 ConfigurableNetstackConfigureInterfaceResult,
409 fidl::encoding::DefaultFuchsiaResourceDialect,
410 >;
411 fn r#configure_interface(
412 &self,
413 mut payload: InterfaceOptions,
414 ) -> Self::ConfigureInterfaceResponseFut {
415 fn _decode(
416 mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
417 ) -> Result<ConfigurableNetstackConfigureInterfaceResult, fidl::Error> {
418 let _response = fidl::client::decode_transaction_body::<
419 fidl::encoding::ResultType<fidl::encoding::EmptyStruct, ConfigurationError>,
420 fidl::encoding::DefaultFuchsiaResourceDialect,
421 0x64db8deb981ee49,
422 >(_buf?)?;
423 Ok(_response.map(|x| x))
424 }
425 self.client.send_query_and_decode::<
426 InterfaceOptions,
427 ConfigurableNetstackConfigureInterfaceResult,
428 >(
429 &mut payload,
430 0x64db8deb981ee49,
431 fidl::encoding::DynamicFlags::empty(),
432 _decode,
433 )
434 }
435}
436
437pub struct ConfigurableNetstackEventStream {
438 event_receiver: fidl::client::EventReceiver<fidl::encoding::DefaultFuchsiaResourceDialect>,
439}
440
441impl std::marker::Unpin for ConfigurableNetstackEventStream {}
442
443impl futures::stream::FusedStream for ConfigurableNetstackEventStream {
444 fn is_terminated(&self) -> bool {
445 self.event_receiver.is_terminated()
446 }
447}
448
449impl futures::Stream for ConfigurableNetstackEventStream {
450 type Item = Result<ConfigurableNetstackEvent, fidl::Error>;
451
452 fn poll_next(
453 mut self: std::pin::Pin<&mut Self>,
454 cx: &mut std::task::Context<'_>,
455 ) -> std::task::Poll<Option<Self::Item>> {
456 match futures::ready!(futures::stream::StreamExt::poll_next_unpin(
457 &mut self.event_receiver,
458 cx
459 )?) {
460 Some(buf) => std::task::Poll::Ready(Some(ConfigurableNetstackEvent::decode(buf))),
461 None => std::task::Poll::Ready(None),
462 }
463 }
464}
465
466#[derive(Debug)]
467pub enum ConfigurableNetstackEvent {}
468
469impl ConfigurableNetstackEvent {
470 fn decode(
472 mut buf: <fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc,
473 ) -> Result<ConfigurableNetstackEvent, fidl::Error> {
474 let (bytes, _handles) = buf.split_mut();
475 let (tx_header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
476 debug_assert_eq!(tx_header.tx_id, 0);
477 match tx_header.ordinal {
478 _ => Err(fidl::Error::UnknownOrdinal {
479 ordinal: tx_header.ordinal,
480 protocol_name:
481 <ConfigurableNetstackMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
482 }),
483 }
484 }
485}
486
487pub struct ConfigurableNetstackRequestStream {
489 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
490 is_terminated: bool,
491}
492
493impl std::marker::Unpin for ConfigurableNetstackRequestStream {}
494
495impl futures::stream::FusedStream for ConfigurableNetstackRequestStream {
496 fn is_terminated(&self) -> bool {
497 self.is_terminated
498 }
499}
500
501impl fidl::endpoints::RequestStream for ConfigurableNetstackRequestStream {
502 type Protocol = ConfigurableNetstackMarker;
503 type ControlHandle = ConfigurableNetstackControlHandle;
504
505 fn from_channel(channel: ::fidl::AsyncChannel) -> Self {
506 Self { inner: std::sync::Arc::new(fidl::ServeInner::new(channel)), is_terminated: false }
507 }
508
509 fn control_handle(&self) -> Self::ControlHandle {
510 ConfigurableNetstackControlHandle { inner: self.inner.clone() }
511 }
512
513 fn into_inner(
514 self,
515 ) -> (::std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>, bool)
516 {
517 (self.inner, self.is_terminated)
518 }
519
520 fn from_inner(
521 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
522 is_terminated: bool,
523 ) -> Self {
524 Self { inner, is_terminated }
525 }
526}
527
528impl futures::Stream for ConfigurableNetstackRequestStream {
529 type Item = Result<ConfigurableNetstackRequest, fidl::Error>;
530
531 fn poll_next(
532 mut self: std::pin::Pin<&mut Self>,
533 cx: &mut std::task::Context<'_>,
534 ) -> std::task::Poll<Option<Self::Item>> {
535 let this = &mut *self;
536 if this.inner.check_shutdown(cx) {
537 this.is_terminated = true;
538 return std::task::Poll::Ready(None);
539 }
540 if this.is_terminated {
541 panic!("polled ConfigurableNetstackRequestStream after completion");
542 }
543 fidl::encoding::with_tls_decode_buf::<_, fidl::encoding::DefaultFuchsiaResourceDialect>(
544 |bytes, handles| {
545 match this.inner.channel().read_etc(cx, bytes, handles) {
546 std::task::Poll::Ready(Ok(())) => {}
547 std::task::Poll::Pending => return std::task::Poll::Pending,
548 std::task::Poll::Ready(Err(zx_status::Status::PEER_CLOSED)) => {
549 this.is_terminated = true;
550 return std::task::Poll::Ready(None);
551 }
552 std::task::Poll::Ready(Err(e)) => {
553 return std::task::Poll::Ready(Some(Err(fidl::Error::ServerRequestRead(
554 e.into(),
555 ))));
556 }
557 }
558
559 let (header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
561
562 std::task::Poll::Ready(Some(match header.ordinal {
563 0x64db8deb981ee49 => {
564 header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
565 let mut req = fidl::new_empty!(InterfaceOptions, fidl::encoding::DefaultFuchsiaResourceDialect);
566 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<InterfaceOptions>(&header, _body_bytes, handles, &mut req)?;
567 let control_handle = ConfigurableNetstackControlHandle {
568 inner: this.inner.clone(),
569 };
570 Ok(ConfigurableNetstackRequest::ConfigureInterface {payload: req,
571 responder: ConfigurableNetstackConfigureInterfaceResponder {
572 control_handle: std::mem::ManuallyDrop::new(control_handle),
573 tx_id: header.tx_id,
574 },
575 })
576 }
577 _ => Err(fidl::Error::UnknownOrdinal {
578 ordinal: header.ordinal,
579 protocol_name: <ConfigurableNetstackMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
580 }),
581 }))
582 },
583 )
584 }
585}
586
587#[derive(Debug)]
592pub enum ConfigurableNetstackRequest {
593 ConfigureInterface {
604 payload: InterfaceOptions,
605 responder: ConfigurableNetstackConfigureInterfaceResponder,
606 },
607}
608
609impl ConfigurableNetstackRequest {
610 #[allow(irrefutable_let_patterns)]
611 pub fn into_configure_interface(
612 self,
613 ) -> Option<(InterfaceOptions, ConfigurableNetstackConfigureInterfaceResponder)> {
614 if let ConfigurableNetstackRequest::ConfigureInterface { payload, responder } = self {
615 Some((payload, responder))
616 } else {
617 None
618 }
619 }
620
621 pub fn method_name(&self) -> &'static str {
623 match *self {
624 ConfigurableNetstackRequest::ConfigureInterface { .. } => "configure_interface",
625 }
626 }
627}
628
629#[derive(Debug, Clone)]
630pub struct ConfigurableNetstackControlHandle {
631 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
632}
633
634impl fidl::endpoints::ControlHandle for ConfigurableNetstackControlHandle {
635 fn shutdown(&self) {
636 self.inner.shutdown()
637 }
638
639 fn shutdown_with_epitaph(&self, status: zx_status::Status) {
640 self.inner.shutdown_with_epitaph(status)
641 }
642
643 fn is_closed(&self) -> bool {
644 self.inner.channel().is_closed()
645 }
646 fn on_closed(&self) -> fidl::OnSignalsRef<'_> {
647 self.inner.channel().on_closed()
648 }
649
650 #[cfg(target_os = "fuchsia")]
651 fn signal_peer(
652 &self,
653 clear_mask: zx::Signals,
654 set_mask: zx::Signals,
655 ) -> Result<(), zx_status::Status> {
656 use fidl::Peered;
657 self.inner.channel().signal_peer(clear_mask, set_mask)
658 }
659}
660
661impl ConfigurableNetstackControlHandle {}
662
663#[must_use = "FIDL methods require a response to be sent"]
664#[derive(Debug)]
665pub struct ConfigurableNetstackConfigureInterfaceResponder {
666 control_handle: std::mem::ManuallyDrop<ConfigurableNetstackControlHandle>,
667 tx_id: u32,
668}
669
670impl std::ops::Drop for ConfigurableNetstackConfigureInterfaceResponder {
674 fn drop(&mut self) {
675 self.control_handle.shutdown();
676 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
678 }
679}
680
681impl fidl::endpoints::Responder for ConfigurableNetstackConfigureInterfaceResponder {
682 type ControlHandle = ConfigurableNetstackControlHandle;
683
684 fn control_handle(&self) -> &ConfigurableNetstackControlHandle {
685 &self.control_handle
686 }
687
688 fn drop_without_shutdown(mut self) {
689 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
691 std::mem::forget(self);
693 }
694}
695
696impl ConfigurableNetstackConfigureInterfaceResponder {
697 pub fn send(self, mut result: Result<(), ConfigurationError>) -> Result<(), fidl::Error> {
701 let _result = self.send_raw(result);
702 if _result.is_err() {
703 self.control_handle.shutdown();
704 }
705 self.drop_without_shutdown();
706 _result
707 }
708
709 pub fn send_no_shutdown_on_err(
711 self,
712 mut result: Result<(), ConfigurationError>,
713 ) -> Result<(), fidl::Error> {
714 let _result = self.send_raw(result);
715 self.drop_without_shutdown();
716 _result
717 }
718
719 fn send_raw(&self, mut result: Result<(), ConfigurationError>) -> Result<(), fidl::Error> {
720 self.control_handle.inner.send::<fidl::encoding::ResultType<
721 fidl::encoding::EmptyStruct,
722 ConfigurationError,
723 >>(
724 result,
725 self.tx_id,
726 0x64db8deb981ee49,
727 fidl::encoding::DynamicFlags::empty(),
728 )
729 }
730}
731
732#[derive(Debug, Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash)]
733pub struct CrashListenerMarker;
734
735impl fidl::endpoints::ProtocolMarker for CrashListenerMarker {
736 type Proxy = CrashListenerProxy;
737 type RequestStream = CrashListenerRequestStream;
738 #[cfg(target_os = "fuchsia")]
739 type SynchronousProxy = CrashListenerSynchronousProxy;
740
741 const DEBUG_NAME: &'static str = "(anonymous) CrashListener";
742}
743
744pub trait CrashListenerProxyInterface: Send + Sync {
745 type NextResponseFut: std::future::Future<Output = Result<Vec<String>, fidl::Error>> + Send;
746 fn r#next(&self) -> Self::NextResponseFut;
747}
748#[derive(Debug)]
749#[cfg(target_os = "fuchsia")]
750pub struct CrashListenerSynchronousProxy {
751 client: fidl::client::sync::Client,
752}
753
754#[cfg(target_os = "fuchsia")]
755impl fidl::endpoints::SynchronousProxy for CrashListenerSynchronousProxy {
756 type Proxy = CrashListenerProxy;
757 type Protocol = CrashListenerMarker;
758
759 fn from_channel(inner: fidl::Channel) -> Self {
760 Self::new(inner)
761 }
762
763 fn into_channel(self) -> fidl::Channel {
764 self.client.into_channel()
765 }
766
767 fn as_channel(&self) -> &fidl::Channel {
768 self.client.as_channel()
769 }
770}
771
772#[cfg(target_os = "fuchsia")]
773impl CrashListenerSynchronousProxy {
774 pub fn new(channel: fidl::Channel) -> Self {
775 Self { client: fidl::client::sync::Client::new(channel) }
776 }
777
778 pub fn into_channel(self) -> fidl::Channel {
779 self.client.into_channel()
780 }
781
782 pub fn wait_for_event(
785 &self,
786 deadline: zx::MonotonicInstant,
787 ) -> Result<CrashListenerEvent, fidl::Error> {
788 CrashListenerEvent::decode(self.client.wait_for_event::<CrashListenerMarker>(deadline)?)
789 }
790
791 pub fn r#next(&self, ___deadline: zx::MonotonicInstant) -> Result<Vec<String>, fidl::Error> {
797 let _response = self.client.send_query::<
798 fidl::encoding::EmptyPayload,
799 CrashListenerNextResponse,
800 CrashListenerMarker,
801 >(
802 (),
803 0x4ad26b66c3a90dfb,
804 fidl::encoding::DynamicFlags::empty(),
805 ___deadline,
806 )?;
807 Ok(_response.crashed_monikers)
808 }
809}
810
811#[cfg(target_os = "fuchsia")]
812impl From<CrashListenerSynchronousProxy> for zx::NullableHandle {
813 fn from(value: CrashListenerSynchronousProxy) -> Self {
814 value.into_channel().into()
815 }
816}
817
818#[cfg(target_os = "fuchsia")]
819impl From<fidl::Channel> for CrashListenerSynchronousProxy {
820 fn from(value: fidl::Channel) -> Self {
821 Self::new(value)
822 }
823}
824
825#[cfg(target_os = "fuchsia")]
826impl fidl::endpoints::FromClient for CrashListenerSynchronousProxy {
827 type Protocol = CrashListenerMarker;
828
829 fn from_client(value: fidl::endpoints::ClientEnd<CrashListenerMarker>) -> Self {
830 Self::new(value.into_channel())
831 }
832}
833
834#[derive(Debug, Clone)]
835pub struct CrashListenerProxy {
836 client: fidl::client::Client<fidl::encoding::DefaultFuchsiaResourceDialect>,
837}
838
839impl fidl::endpoints::Proxy for CrashListenerProxy {
840 type Protocol = CrashListenerMarker;
841
842 fn from_channel(inner: ::fidl::AsyncChannel) -> Self {
843 Self::new(inner)
844 }
845
846 fn into_channel(self) -> Result<::fidl::AsyncChannel, Self> {
847 self.client.into_channel().map_err(|client| Self { client })
848 }
849
850 fn as_channel(&self) -> &::fidl::AsyncChannel {
851 self.client.as_channel()
852 }
853}
854
855impl CrashListenerProxy {
856 pub fn new(channel: ::fidl::AsyncChannel) -> Self {
858 let protocol_name = <CrashListenerMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
859 Self { client: fidl::client::Client::new(channel, protocol_name) }
860 }
861
862 pub fn take_event_stream(&self) -> CrashListenerEventStream {
868 CrashListenerEventStream { event_receiver: self.client.take_event_receiver() }
869 }
870
871 pub fn r#next(
877 &self,
878 ) -> fidl::client::QueryResponseFut<Vec<String>, fidl::encoding::DefaultFuchsiaResourceDialect>
879 {
880 CrashListenerProxyInterface::r#next(self)
881 }
882}
883
884impl CrashListenerProxyInterface for CrashListenerProxy {
885 type NextResponseFut =
886 fidl::client::QueryResponseFut<Vec<String>, fidl::encoding::DefaultFuchsiaResourceDialect>;
887 fn r#next(&self) -> Self::NextResponseFut {
888 fn _decode(
889 mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
890 ) -> Result<Vec<String>, fidl::Error> {
891 let _response = fidl::client::decode_transaction_body::<
892 CrashListenerNextResponse,
893 fidl::encoding::DefaultFuchsiaResourceDialect,
894 0x4ad26b66c3a90dfb,
895 >(_buf?)?;
896 Ok(_response.crashed_monikers)
897 }
898 self.client.send_query_and_decode::<fidl::encoding::EmptyPayload, Vec<String>>(
899 (),
900 0x4ad26b66c3a90dfb,
901 fidl::encoding::DynamicFlags::empty(),
902 _decode,
903 )
904 }
905}
906
907pub struct CrashListenerEventStream {
908 event_receiver: fidl::client::EventReceiver<fidl::encoding::DefaultFuchsiaResourceDialect>,
909}
910
911impl std::marker::Unpin for CrashListenerEventStream {}
912
913impl futures::stream::FusedStream for CrashListenerEventStream {
914 fn is_terminated(&self) -> bool {
915 self.event_receiver.is_terminated()
916 }
917}
918
919impl futures::Stream for CrashListenerEventStream {
920 type Item = Result<CrashListenerEvent, fidl::Error>;
921
922 fn poll_next(
923 mut self: std::pin::Pin<&mut Self>,
924 cx: &mut std::task::Context<'_>,
925 ) -> std::task::Poll<Option<Self::Item>> {
926 match futures::ready!(futures::stream::StreamExt::poll_next_unpin(
927 &mut self.event_receiver,
928 cx
929 )?) {
930 Some(buf) => std::task::Poll::Ready(Some(CrashListenerEvent::decode(buf))),
931 None => std::task::Poll::Ready(None),
932 }
933 }
934}
935
936#[derive(Debug)]
937pub enum CrashListenerEvent {}
938
939impl CrashListenerEvent {
940 fn decode(
942 mut buf: <fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc,
943 ) -> Result<CrashListenerEvent, fidl::Error> {
944 let (bytes, _handles) = buf.split_mut();
945 let (tx_header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
946 debug_assert_eq!(tx_header.tx_id, 0);
947 match tx_header.ordinal {
948 _ => Err(fidl::Error::UnknownOrdinal {
949 ordinal: tx_header.ordinal,
950 protocol_name: <CrashListenerMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
951 }),
952 }
953 }
954}
955
956pub struct CrashListenerRequestStream {
958 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
959 is_terminated: bool,
960}
961
962impl std::marker::Unpin for CrashListenerRequestStream {}
963
964impl futures::stream::FusedStream for CrashListenerRequestStream {
965 fn is_terminated(&self) -> bool {
966 self.is_terminated
967 }
968}
969
970impl fidl::endpoints::RequestStream for CrashListenerRequestStream {
971 type Protocol = CrashListenerMarker;
972 type ControlHandle = CrashListenerControlHandle;
973
974 fn from_channel(channel: ::fidl::AsyncChannel) -> Self {
975 Self { inner: std::sync::Arc::new(fidl::ServeInner::new(channel)), is_terminated: false }
976 }
977
978 fn control_handle(&self) -> Self::ControlHandle {
979 CrashListenerControlHandle { inner: self.inner.clone() }
980 }
981
982 fn into_inner(
983 self,
984 ) -> (::std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>, bool)
985 {
986 (self.inner, self.is_terminated)
987 }
988
989 fn from_inner(
990 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
991 is_terminated: bool,
992 ) -> Self {
993 Self { inner, is_terminated }
994 }
995}
996
997impl futures::Stream for CrashListenerRequestStream {
998 type Item = Result<CrashListenerRequest, fidl::Error>;
999
1000 fn poll_next(
1001 mut self: std::pin::Pin<&mut Self>,
1002 cx: &mut std::task::Context<'_>,
1003 ) -> std::task::Poll<Option<Self::Item>> {
1004 let this = &mut *self;
1005 if this.inner.check_shutdown(cx) {
1006 this.is_terminated = true;
1007 return std::task::Poll::Ready(None);
1008 }
1009 if this.is_terminated {
1010 panic!("polled CrashListenerRequestStream after completion");
1011 }
1012 fidl::encoding::with_tls_decode_buf::<_, fidl::encoding::DefaultFuchsiaResourceDialect>(
1013 |bytes, handles| {
1014 match this.inner.channel().read_etc(cx, bytes, handles) {
1015 std::task::Poll::Ready(Ok(())) => {}
1016 std::task::Poll::Pending => return std::task::Poll::Pending,
1017 std::task::Poll::Ready(Err(zx_status::Status::PEER_CLOSED)) => {
1018 this.is_terminated = true;
1019 return std::task::Poll::Ready(None);
1020 }
1021 std::task::Poll::Ready(Err(e)) => {
1022 return std::task::Poll::Ready(Some(Err(fidl::Error::ServerRequestRead(
1023 e.into(),
1024 ))));
1025 }
1026 }
1027
1028 let (header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
1030
1031 std::task::Poll::Ready(Some(match header.ordinal {
1032 0x4ad26b66c3a90dfb => {
1033 header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
1034 let mut req = fidl::new_empty!(
1035 fidl::encoding::EmptyPayload,
1036 fidl::encoding::DefaultFuchsiaResourceDialect
1037 );
1038 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
1039 let control_handle =
1040 CrashListenerControlHandle { inner: this.inner.clone() };
1041 Ok(CrashListenerRequest::Next {
1042 responder: CrashListenerNextResponder {
1043 control_handle: std::mem::ManuallyDrop::new(control_handle),
1044 tx_id: header.tx_id,
1045 },
1046 })
1047 }
1048 _ => Err(fidl::Error::UnknownOrdinal {
1049 ordinal: header.ordinal,
1050 protocol_name:
1051 <CrashListenerMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
1052 }),
1053 }))
1054 },
1055 )
1056 }
1057}
1058
1059#[derive(Debug)]
1063pub enum CrashListenerRequest {
1064 Next { responder: CrashListenerNextResponder },
1070}
1071
1072impl CrashListenerRequest {
1073 #[allow(irrefutable_let_patterns)]
1074 pub fn into_next(self) -> Option<(CrashListenerNextResponder)> {
1075 if let CrashListenerRequest::Next { responder } = self { Some((responder)) } else { None }
1076 }
1077
1078 pub fn method_name(&self) -> &'static str {
1080 match *self {
1081 CrashListenerRequest::Next { .. } => "next",
1082 }
1083 }
1084}
1085
1086#[derive(Debug, Clone)]
1087pub struct CrashListenerControlHandle {
1088 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
1089}
1090
1091impl fidl::endpoints::ControlHandle for CrashListenerControlHandle {
1092 fn shutdown(&self) {
1093 self.inner.shutdown()
1094 }
1095
1096 fn shutdown_with_epitaph(&self, status: zx_status::Status) {
1097 self.inner.shutdown_with_epitaph(status)
1098 }
1099
1100 fn is_closed(&self) -> bool {
1101 self.inner.channel().is_closed()
1102 }
1103 fn on_closed(&self) -> fidl::OnSignalsRef<'_> {
1104 self.inner.channel().on_closed()
1105 }
1106
1107 #[cfg(target_os = "fuchsia")]
1108 fn signal_peer(
1109 &self,
1110 clear_mask: zx::Signals,
1111 set_mask: zx::Signals,
1112 ) -> Result<(), zx_status::Status> {
1113 use fidl::Peered;
1114 self.inner.channel().signal_peer(clear_mask, set_mask)
1115 }
1116}
1117
1118impl CrashListenerControlHandle {}
1119
1120#[must_use = "FIDL methods require a response to be sent"]
1121#[derive(Debug)]
1122pub struct CrashListenerNextResponder {
1123 control_handle: std::mem::ManuallyDrop<CrashListenerControlHandle>,
1124 tx_id: u32,
1125}
1126
1127impl std::ops::Drop for CrashListenerNextResponder {
1131 fn drop(&mut self) {
1132 self.control_handle.shutdown();
1133 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
1135 }
1136}
1137
1138impl fidl::endpoints::Responder for CrashListenerNextResponder {
1139 type ControlHandle = CrashListenerControlHandle;
1140
1141 fn control_handle(&self) -> &CrashListenerControlHandle {
1142 &self.control_handle
1143 }
1144
1145 fn drop_without_shutdown(mut self) {
1146 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
1148 std::mem::forget(self);
1150 }
1151}
1152
1153impl CrashListenerNextResponder {
1154 pub fn send(self, mut crashed_monikers: &[String]) -> Result<(), fidl::Error> {
1158 let _result = self.send_raw(crashed_monikers);
1159 if _result.is_err() {
1160 self.control_handle.shutdown();
1161 }
1162 self.drop_without_shutdown();
1163 _result
1164 }
1165
1166 pub fn send_no_shutdown_on_err(
1168 self,
1169 mut crashed_monikers: &[String],
1170 ) -> Result<(), fidl::Error> {
1171 let _result = self.send_raw(crashed_monikers);
1172 self.drop_without_shutdown();
1173 _result
1174 }
1175
1176 fn send_raw(&self, mut crashed_monikers: &[String]) -> Result<(), fidl::Error> {
1177 self.control_handle.inner.send::<CrashListenerNextResponse>(
1178 (crashed_monikers,),
1179 self.tx_id,
1180 0x4ad26b66c3a90dfb,
1181 fidl::encoding::DynamicFlags::empty(),
1182 )
1183 }
1184}
1185
1186#[derive(Debug, Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash)]
1187pub struct ManagedRealmMarker;
1188
1189impl fidl::endpoints::ProtocolMarker for ManagedRealmMarker {
1190 type Proxy = ManagedRealmProxy;
1191 type RequestStream = ManagedRealmRequestStream;
1192 #[cfg(target_os = "fuchsia")]
1193 type SynchronousProxy = ManagedRealmSynchronousProxy;
1194
1195 const DEBUG_NAME: &'static str = "(anonymous) ManagedRealm";
1196}
1197pub type ManagedRealmAddDeviceResult = Result<(), i32>;
1198pub type ManagedRealmRemoveDeviceResult = Result<(), i32>;
1199pub type ManagedRealmStartChildComponentResult = Result<(), i32>;
1200pub type ManagedRealmStopChildComponentResult = Result<(), i32>;
1201
1202pub trait ManagedRealmProxyInterface: Send + Sync {
1203 type GetMonikerResponseFut: std::future::Future<Output = Result<String, fidl::Error>> + Send;
1204 fn r#get_moniker(&self) -> Self::GetMonikerResponseFut;
1205 fn r#connect_to_protocol(
1206 &self,
1207 protocol_name: &str,
1208 child_name: Option<&str>,
1209 req: fidl::Channel,
1210 ) -> Result<(), fidl::Error>;
1211 fn r#connect_to_service(
1212 &self,
1213 service_name: &str,
1214 child_name: Option<&str>,
1215 req: fidl::Channel,
1216 ) -> Result<(), fidl::Error>;
1217 type AddDeviceResponseFut: std::future::Future<Output = Result<ManagedRealmAddDeviceResult, fidl::Error>>
1218 + Send;
1219 fn r#add_device(
1220 &self,
1221 path: &str,
1222 device: fidl::endpoints::ClientEnd<fidl_fuchsia_netemul_network::DeviceProxy_Marker>,
1223 ) -> Self::AddDeviceResponseFut;
1224 type RemoveDeviceResponseFut: std::future::Future<Output = Result<ManagedRealmRemoveDeviceResult, fidl::Error>>
1225 + Send;
1226 fn r#remove_device(&self, path: &str) -> Self::RemoveDeviceResponseFut;
1227 fn r#get_devfs(
1228 &self,
1229 devfs: fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>,
1230 ) -> Result<(), fidl::Error>;
1231 type StartChildComponentResponseFut: std::future::Future<Output = Result<ManagedRealmStartChildComponentResult, fidl::Error>>
1232 + Send;
1233 fn r#start_child_component(&self, child_name: &str) -> Self::StartChildComponentResponseFut;
1234 type StopChildComponentResponseFut: std::future::Future<Output = Result<ManagedRealmStopChildComponentResult, fidl::Error>>
1235 + Send;
1236 fn r#stop_child_component(&self, child_name: &str) -> Self::StopChildComponentResponseFut;
1237 fn r#shutdown(&self) -> Result<(), fidl::Error>;
1238 fn r#open_diagnostics_directory(
1239 &self,
1240 child_name: &str,
1241 directory: fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>,
1242 ) -> Result<(), fidl::Error>;
1243 fn r#get_crash_listener(
1244 &self,
1245 listener: fidl::endpoints::ServerEnd<CrashListenerMarker>,
1246 ) -> Result<(), fidl::Error>;
1247}
1248#[derive(Debug)]
1249#[cfg(target_os = "fuchsia")]
1250pub struct ManagedRealmSynchronousProxy {
1251 client: fidl::client::sync::Client,
1252}
1253
1254#[cfg(target_os = "fuchsia")]
1255impl fidl::endpoints::SynchronousProxy for ManagedRealmSynchronousProxy {
1256 type Proxy = ManagedRealmProxy;
1257 type Protocol = ManagedRealmMarker;
1258
1259 fn from_channel(inner: fidl::Channel) -> Self {
1260 Self::new(inner)
1261 }
1262
1263 fn into_channel(self) -> fidl::Channel {
1264 self.client.into_channel()
1265 }
1266
1267 fn as_channel(&self) -> &fidl::Channel {
1268 self.client.as_channel()
1269 }
1270}
1271
1272#[cfg(target_os = "fuchsia")]
1273impl ManagedRealmSynchronousProxy {
1274 pub fn new(channel: fidl::Channel) -> Self {
1275 Self { client: fidl::client::sync::Client::new(channel) }
1276 }
1277
1278 pub fn into_channel(self) -> fidl::Channel {
1279 self.client.into_channel()
1280 }
1281
1282 pub fn wait_for_event(
1285 &self,
1286 deadline: zx::MonotonicInstant,
1287 ) -> Result<ManagedRealmEvent, fidl::Error> {
1288 ManagedRealmEvent::decode(self.client.wait_for_event::<ManagedRealmMarker>(deadline)?)
1289 }
1290
1291 pub fn r#get_moniker(&self, ___deadline: zx::MonotonicInstant) -> Result<String, fidl::Error> {
1296 let _response = self.client.send_query::<
1297 fidl::encoding::EmptyPayload,
1298 ManagedRealmGetMonikerResponse,
1299 ManagedRealmMarker,
1300 >(
1301 (),
1302 0xec8f2bf894ddc5f,
1303 fidl::encoding::DynamicFlags::empty(),
1304 ___deadline,
1305 )?;
1306 Ok(_response.moniker)
1307 }
1308
1309 pub fn r#connect_to_protocol(
1321 &self,
1322 mut protocol_name: &str,
1323 mut child_name: Option<&str>,
1324 mut req: fidl::Channel,
1325 ) -> Result<(), fidl::Error> {
1326 self.client.send::<ManagedRealmConnectToProtocolRequest>(
1327 (protocol_name, child_name, req),
1328 0x20865b728239813d,
1329 fidl::encoding::DynamicFlags::empty(),
1330 )
1331 }
1332
1333 pub fn r#connect_to_service(
1344 &self,
1345 mut service_name: &str,
1346 mut child_name: Option<&str>,
1347 mut req: fidl::Channel,
1348 ) -> Result<(), fidl::Error> {
1349 self.client.send::<ManagedRealmConnectToServiceRequest>(
1350 (service_name, child_name, req),
1351 0x1cfd66bc614daf6a,
1352 fidl::encoding::DynamicFlags::empty(),
1353 )
1354 }
1355
1356 pub fn r#add_device(
1369 &self,
1370 mut path: &str,
1371 mut device: fidl::endpoints::ClientEnd<fidl_fuchsia_netemul_network::DeviceProxy_Marker>,
1372 ___deadline: zx::MonotonicInstant,
1373 ) -> Result<ManagedRealmAddDeviceResult, fidl::Error> {
1374 let _response = self.client.send_query::<
1375 ManagedRealmAddDeviceRequest,
1376 fidl::encoding::ResultType<fidl::encoding::EmptyStruct, i32>,
1377 ManagedRealmMarker,
1378 >(
1379 (path, device,),
1380 0x789925e6f5d47c07,
1381 fidl::encoding::DynamicFlags::empty(),
1382 ___deadline,
1383 )?;
1384 Ok(_response.map(|x| x))
1385 }
1386
1387 pub fn r#remove_device(
1395 &self,
1396 mut path: &str,
1397 ___deadline: zx::MonotonicInstant,
1398 ) -> Result<ManagedRealmRemoveDeviceResult, fidl::Error> {
1399 let _response = self.client.send_query::<
1400 ManagedRealmRemoveDeviceRequest,
1401 fidl::encoding::ResultType<fidl::encoding::EmptyStruct, i32>,
1402 ManagedRealmMarker,
1403 >(
1404 (path,),
1405 0x6cffbba70ac757cc,
1406 fidl::encoding::DynamicFlags::empty(),
1407 ___deadline,
1408 )?;
1409 Ok(_response.map(|x| x))
1410 }
1411
1412 pub fn r#get_devfs(
1416 &self,
1417 mut devfs: fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>,
1418 ) -> Result<(), fidl::Error> {
1419 self.client.send::<ManagedRealmGetDevfsRequest>(
1420 (devfs,),
1421 0x707e2b17f65fcadc,
1422 fidl::encoding::DynamicFlags::empty(),
1423 )
1424 }
1425
1426 pub fn r#start_child_component(
1436 &self,
1437 mut child_name: &str,
1438 ___deadline: zx::MonotonicInstant,
1439 ) -> Result<ManagedRealmStartChildComponentResult, fidl::Error> {
1440 let _response = self.client.send_query::<
1441 ManagedRealmStartChildComponentRequest,
1442 fidl::encoding::ResultType<fidl::encoding::EmptyStruct, i32>,
1443 ManagedRealmMarker,
1444 >(
1445 (child_name,),
1446 0x20dfa243752906a1,
1447 fidl::encoding::DynamicFlags::empty(),
1448 ___deadline,
1449 )?;
1450 Ok(_response.map(|x| x))
1451 }
1452
1453 pub fn r#stop_child_component(
1463 &self,
1464 mut child_name: &str,
1465 ___deadline: zx::MonotonicInstant,
1466 ) -> Result<ManagedRealmStopChildComponentResult, fidl::Error> {
1467 let _response = self.client.send_query::<
1468 ManagedRealmStopChildComponentRequest,
1469 fidl::encoding::ResultType<fidl::encoding::EmptyStruct, i32>,
1470 ManagedRealmMarker,
1471 >(
1472 (child_name,),
1473 0x5ecfe48430aeeca7,
1474 fidl::encoding::DynamicFlags::empty(),
1475 ___deadline,
1476 )?;
1477 Ok(_response.map(|x| x))
1478 }
1479
1480 pub fn r#shutdown(&self) -> Result<(), fidl::Error> {
1485 self.client.send::<fidl::encoding::EmptyPayload>(
1486 (),
1487 0x4750920f723fba9d,
1488 fidl::encoding::DynamicFlags::empty(),
1489 )
1490 }
1491
1492 pub fn r#open_diagnostics_directory(
1494 &self,
1495 mut child_name: &str,
1496 mut directory: fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>,
1497 ) -> Result<(), fidl::Error> {
1498 self.client.send::<ManagedRealmOpenDiagnosticsDirectoryRequest>(
1499 (child_name, directory),
1500 0x7c5312484aa41c99,
1501 fidl::encoding::DynamicFlags::empty(),
1502 )
1503 }
1504
1505 pub fn r#get_crash_listener(
1507 &self,
1508 mut listener: fidl::endpoints::ServerEnd<CrashListenerMarker>,
1509 ) -> Result<(), fidl::Error> {
1510 self.client.send::<ManagedRealmGetCrashListenerRequest>(
1511 (listener,),
1512 0x407bab14357e8913,
1513 fidl::encoding::DynamicFlags::empty(),
1514 )
1515 }
1516}
1517
1518#[cfg(target_os = "fuchsia")]
1519impl From<ManagedRealmSynchronousProxy> for zx::NullableHandle {
1520 fn from(value: ManagedRealmSynchronousProxy) -> Self {
1521 value.into_channel().into()
1522 }
1523}
1524
1525#[cfg(target_os = "fuchsia")]
1526impl From<fidl::Channel> for ManagedRealmSynchronousProxy {
1527 fn from(value: fidl::Channel) -> Self {
1528 Self::new(value)
1529 }
1530}
1531
1532#[cfg(target_os = "fuchsia")]
1533impl fidl::endpoints::FromClient for ManagedRealmSynchronousProxy {
1534 type Protocol = ManagedRealmMarker;
1535
1536 fn from_client(value: fidl::endpoints::ClientEnd<ManagedRealmMarker>) -> Self {
1537 Self::new(value.into_channel())
1538 }
1539}
1540
1541#[derive(Debug, Clone)]
1542pub struct ManagedRealmProxy {
1543 client: fidl::client::Client<fidl::encoding::DefaultFuchsiaResourceDialect>,
1544}
1545
1546impl fidl::endpoints::Proxy for ManagedRealmProxy {
1547 type Protocol = ManagedRealmMarker;
1548
1549 fn from_channel(inner: ::fidl::AsyncChannel) -> Self {
1550 Self::new(inner)
1551 }
1552
1553 fn into_channel(self) -> Result<::fidl::AsyncChannel, Self> {
1554 self.client.into_channel().map_err(|client| Self { client })
1555 }
1556
1557 fn as_channel(&self) -> &::fidl::AsyncChannel {
1558 self.client.as_channel()
1559 }
1560}
1561
1562impl ManagedRealmProxy {
1563 pub fn new(channel: ::fidl::AsyncChannel) -> Self {
1565 let protocol_name = <ManagedRealmMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
1566 Self { client: fidl::client::Client::new(channel, protocol_name) }
1567 }
1568
1569 pub fn take_event_stream(&self) -> ManagedRealmEventStream {
1575 ManagedRealmEventStream { event_receiver: self.client.take_event_receiver() }
1576 }
1577
1578 pub fn r#get_moniker(
1583 &self,
1584 ) -> fidl::client::QueryResponseFut<String, fidl::encoding::DefaultFuchsiaResourceDialect> {
1585 ManagedRealmProxyInterface::r#get_moniker(self)
1586 }
1587
1588 pub fn r#connect_to_protocol(
1600 &self,
1601 mut protocol_name: &str,
1602 mut child_name: Option<&str>,
1603 mut req: fidl::Channel,
1604 ) -> Result<(), fidl::Error> {
1605 ManagedRealmProxyInterface::r#connect_to_protocol(self, protocol_name, child_name, req)
1606 }
1607
1608 pub fn r#connect_to_service(
1619 &self,
1620 mut service_name: &str,
1621 mut child_name: Option<&str>,
1622 mut req: fidl::Channel,
1623 ) -> Result<(), fidl::Error> {
1624 ManagedRealmProxyInterface::r#connect_to_service(self, service_name, child_name, req)
1625 }
1626
1627 pub fn r#add_device(
1640 &self,
1641 mut path: &str,
1642 mut device: fidl::endpoints::ClientEnd<fidl_fuchsia_netemul_network::DeviceProxy_Marker>,
1643 ) -> fidl::client::QueryResponseFut<
1644 ManagedRealmAddDeviceResult,
1645 fidl::encoding::DefaultFuchsiaResourceDialect,
1646 > {
1647 ManagedRealmProxyInterface::r#add_device(self, path, device)
1648 }
1649
1650 pub fn r#remove_device(
1658 &self,
1659 mut path: &str,
1660 ) -> fidl::client::QueryResponseFut<
1661 ManagedRealmRemoveDeviceResult,
1662 fidl::encoding::DefaultFuchsiaResourceDialect,
1663 > {
1664 ManagedRealmProxyInterface::r#remove_device(self, path)
1665 }
1666
1667 pub fn r#get_devfs(
1671 &self,
1672 mut devfs: fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>,
1673 ) -> Result<(), fidl::Error> {
1674 ManagedRealmProxyInterface::r#get_devfs(self, devfs)
1675 }
1676
1677 pub fn r#start_child_component(
1687 &self,
1688 mut child_name: &str,
1689 ) -> fidl::client::QueryResponseFut<
1690 ManagedRealmStartChildComponentResult,
1691 fidl::encoding::DefaultFuchsiaResourceDialect,
1692 > {
1693 ManagedRealmProxyInterface::r#start_child_component(self, child_name)
1694 }
1695
1696 pub fn r#stop_child_component(
1706 &self,
1707 mut child_name: &str,
1708 ) -> fidl::client::QueryResponseFut<
1709 ManagedRealmStopChildComponentResult,
1710 fidl::encoding::DefaultFuchsiaResourceDialect,
1711 > {
1712 ManagedRealmProxyInterface::r#stop_child_component(self, child_name)
1713 }
1714
1715 pub fn r#shutdown(&self) -> Result<(), fidl::Error> {
1720 ManagedRealmProxyInterface::r#shutdown(self)
1721 }
1722
1723 pub fn r#open_diagnostics_directory(
1725 &self,
1726 mut child_name: &str,
1727 mut directory: fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>,
1728 ) -> Result<(), fidl::Error> {
1729 ManagedRealmProxyInterface::r#open_diagnostics_directory(self, child_name, directory)
1730 }
1731
1732 pub fn r#get_crash_listener(
1734 &self,
1735 mut listener: fidl::endpoints::ServerEnd<CrashListenerMarker>,
1736 ) -> Result<(), fidl::Error> {
1737 ManagedRealmProxyInterface::r#get_crash_listener(self, listener)
1738 }
1739}
1740
1741impl ManagedRealmProxyInterface for ManagedRealmProxy {
1742 type GetMonikerResponseFut =
1743 fidl::client::QueryResponseFut<String, fidl::encoding::DefaultFuchsiaResourceDialect>;
1744 fn r#get_moniker(&self) -> Self::GetMonikerResponseFut {
1745 fn _decode(
1746 mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
1747 ) -> Result<String, fidl::Error> {
1748 let _response = fidl::client::decode_transaction_body::<
1749 ManagedRealmGetMonikerResponse,
1750 fidl::encoding::DefaultFuchsiaResourceDialect,
1751 0xec8f2bf894ddc5f,
1752 >(_buf?)?;
1753 Ok(_response.moniker)
1754 }
1755 self.client.send_query_and_decode::<fidl::encoding::EmptyPayload, String>(
1756 (),
1757 0xec8f2bf894ddc5f,
1758 fidl::encoding::DynamicFlags::empty(),
1759 _decode,
1760 )
1761 }
1762
1763 fn r#connect_to_protocol(
1764 &self,
1765 mut protocol_name: &str,
1766 mut child_name: Option<&str>,
1767 mut req: fidl::Channel,
1768 ) -> Result<(), fidl::Error> {
1769 self.client.send::<ManagedRealmConnectToProtocolRequest>(
1770 (protocol_name, child_name, req),
1771 0x20865b728239813d,
1772 fidl::encoding::DynamicFlags::empty(),
1773 )
1774 }
1775
1776 fn r#connect_to_service(
1777 &self,
1778 mut service_name: &str,
1779 mut child_name: Option<&str>,
1780 mut req: fidl::Channel,
1781 ) -> Result<(), fidl::Error> {
1782 self.client.send::<ManagedRealmConnectToServiceRequest>(
1783 (service_name, child_name, req),
1784 0x1cfd66bc614daf6a,
1785 fidl::encoding::DynamicFlags::empty(),
1786 )
1787 }
1788
1789 type AddDeviceResponseFut = fidl::client::QueryResponseFut<
1790 ManagedRealmAddDeviceResult,
1791 fidl::encoding::DefaultFuchsiaResourceDialect,
1792 >;
1793 fn r#add_device(
1794 &self,
1795 mut path: &str,
1796 mut device: fidl::endpoints::ClientEnd<fidl_fuchsia_netemul_network::DeviceProxy_Marker>,
1797 ) -> Self::AddDeviceResponseFut {
1798 fn _decode(
1799 mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
1800 ) -> Result<ManagedRealmAddDeviceResult, fidl::Error> {
1801 let _response = fidl::client::decode_transaction_body::<
1802 fidl::encoding::ResultType<fidl::encoding::EmptyStruct, i32>,
1803 fidl::encoding::DefaultFuchsiaResourceDialect,
1804 0x789925e6f5d47c07,
1805 >(_buf?)?;
1806 Ok(_response.map(|x| x))
1807 }
1808 self.client
1809 .send_query_and_decode::<ManagedRealmAddDeviceRequest, ManagedRealmAddDeviceResult>(
1810 (path, device),
1811 0x789925e6f5d47c07,
1812 fidl::encoding::DynamicFlags::empty(),
1813 _decode,
1814 )
1815 }
1816
1817 type RemoveDeviceResponseFut = fidl::client::QueryResponseFut<
1818 ManagedRealmRemoveDeviceResult,
1819 fidl::encoding::DefaultFuchsiaResourceDialect,
1820 >;
1821 fn r#remove_device(&self, mut path: &str) -> Self::RemoveDeviceResponseFut {
1822 fn _decode(
1823 mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
1824 ) -> Result<ManagedRealmRemoveDeviceResult, fidl::Error> {
1825 let _response = fidl::client::decode_transaction_body::<
1826 fidl::encoding::ResultType<fidl::encoding::EmptyStruct, i32>,
1827 fidl::encoding::DefaultFuchsiaResourceDialect,
1828 0x6cffbba70ac757cc,
1829 >(_buf?)?;
1830 Ok(_response.map(|x| x))
1831 }
1832 self.client.send_query_and_decode::<
1833 ManagedRealmRemoveDeviceRequest,
1834 ManagedRealmRemoveDeviceResult,
1835 >(
1836 (path,),
1837 0x6cffbba70ac757cc,
1838 fidl::encoding::DynamicFlags::empty(),
1839 _decode,
1840 )
1841 }
1842
1843 fn r#get_devfs(
1844 &self,
1845 mut devfs: fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>,
1846 ) -> Result<(), fidl::Error> {
1847 self.client.send::<ManagedRealmGetDevfsRequest>(
1848 (devfs,),
1849 0x707e2b17f65fcadc,
1850 fidl::encoding::DynamicFlags::empty(),
1851 )
1852 }
1853
1854 type StartChildComponentResponseFut = fidl::client::QueryResponseFut<
1855 ManagedRealmStartChildComponentResult,
1856 fidl::encoding::DefaultFuchsiaResourceDialect,
1857 >;
1858 fn r#start_child_component(
1859 &self,
1860 mut child_name: &str,
1861 ) -> Self::StartChildComponentResponseFut {
1862 fn _decode(
1863 mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
1864 ) -> Result<ManagedRealmStartChildComponentResult, fidl::Error> {
1865 let _response = fidl::client::decode_transaction_body::<
1866 fidl::encoding::ResultType<fidl::encoding::EmptyStruct, i32>,
1867 fidl::encoding::DefaultFuchsiaResourceDialect,
1868 0x20dfa243752906a1,
1869 >(_buf?)?;
1870 Ok(_response.map(|x| x))
1871 }
1872 self.client.send_query_and_decode::<
1873 ManagedRealmStartChildComponentRequest,
1874 ManagedRealmStartChildComponentResult,
1875 >(
1876 (child_name,),
1877 0x20dfa243752906a1,
1878 fidl::encoding::DynamicFlags::empty(),
1879 _decode,
1880 )
1881 }
1882
1883 type StopChildComponentResponseFut = fidl::client::QueryResponseFut<
1884 ManagedRealmStopChildComponentResult,
1885 fidl::encoding::DefaultFuchsiaResourceDialect,
1886 >;
1887 fn r#stop_child_component(&self, mut child_name: &str) -> Self::StopChildComponentResponseFut {
1888 fn _decode(
1889 mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
1890 ) -> Result<ManagedRealmStopChildComponentResult, fidl::Error> {
1891 let _response = fidl::client::decode_transaction_body::<
1892 fidl::encoding::ResultType<fidl::encoding::EmptyStruct, i32>,
1893 fidl::encoding::DefaultFuchsiaResourceDialect,
1894 0x5ecfe48430aeeca7,
1895 >(_buf?)?;
1896 Ok(_response.map(|x| x))
1897 }
1898 self.client.send_query_and_decode::<
1899 ManagedRealmStopChildComponentRequest,
1900 ManagedRealmStopChildComponentResult,
1901 >(
1902 (child_name,),
1903 0x5ecfe48430aeeca7,
1904 fidl::encoding::DynamicFlags::empty(),
1905 _decode,
1906 )
1907 }
1908
1909 fn r#shutdown(&self) -> Result<(), fidl::Error> {
1910 self.client.send::<fidl::encoding::EmptyPayload>(
1911 (),
1912 0x4750920f723fba9d,
1913 fidl::encoding::DynamicFlags::empty(),
1914 )
1915 }
1916
1917 fn r#open_diagnostics_directory(
1918 &self,
1919 mut child_name: &str,
1920 mut directory: fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>,
1921 ) -> Result<(), fidl::Error> {
1922 self.client.send::<ManagedRealmOpenDiagnosticsDirectoryRequest>(
1923 (child_name, directory),
1924 0x7c5312484aa41c99,
1925 fidl::encoding::DynamicFlags::empty(),
1926 )
1927 }
1928
1929 fn r#get_crash_listener(
1930 &self,
1931 mut listener: fidl::endpoints::ServerEnd<CrashListenerMarker>,
1932 ) -> Result<(), fidl::Error> {
1933 self.client.send::<ManagedRealmGetCrashListenerRequest>(
1934 (listener,),
1935 0x407bab14357e8913,
1936 fidl::encoding::DynamicFlags::empty(),
1937 )
1938 }
1939}
1940
1941pub struct ManagedRealmEventStream {
1942 event_receiver: fidl::client::EventReceiver<fidl::encoding::DefaultFuchsiaResourceDialect>,
1943}
1944
1945impl std::marker::Unpin for ManagedRealmEventStream {}
1946
1947impl futures::stream::FusedStream for ManagedRealmEventStream {
1948 fn is_terminated(&self) -> bool {
1949 self.event_receiver.is_terminated()
1950 }
1951}
1952
1953impl futures::Stream for ManagedRealmEventStream {
1954 type Item = Result<ManagedRealmEvent, fidl::Error>;
1955
1956 fn poll_next(
1957 mut self: std::pin::Pin<&mut Self>,
1958 cx: &mut std::task::Context<'_>,
1959 ) -> std::task::Poll<Option<Self::Item>> {
1960 match futures::ready!(futures::stream::StreamExt::poll_next_unpin(
1961 &mut self.event_receiver,
1962 cx
1963 )?) {
1964 Some(buf) => std::task::Poll::Ready(Some(ManagedRealmEvent::decode(buf))),
1965 None => std::task::Poll::Ready(None),
1966 }
1967 }
1968}
1969
1970#[derive(Debug)]
1971pub enum ManagedRealmEvent {
1972 OnShutdown {},
1973}
1974
1975impl ManagedRealmEvent {
1976 #[allow(irrefutable_let_patterns)]
1977 pub fn into_on_shutdown(self) -> Option<()> {
1978 if let ManagedRealmEvent::OnShutdown {} = self { Some(()) } else { None }
1979 }
1980
1981 fn decode(
1983 mut buf: <fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc,
1984 ) -> Result<ManagedRealmEvent, fidl::Error> {
1985 let (bytes, _handles) = buf.split_mut();
1986 let (tx_header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
1987 debug_assert_eq!(tx_header.tx_id, 0);
1988 match tx_header.ordinal {
1989 0x1dff0b58a5b546be => {
1990 let mut out = fidl::new_empty!(
1991 fidl::encoding::EmptyPayload,
1992 fidl::encoding::DefaultFuchsiaResourceDialect
1993 );
1994 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&tx_header, _body_bytes, _handles, &mut out)?;
1995 Ok((ManagedRealmEvent::OnShutdown {}))
1996 }
1997 _ => Err(fidl::Error::UnknownOrdinal {
1998 ordinal: tx_header.ordinal,
1999 protocol_name: <ManagedRealmMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
2000 }),
2001 }
2002 }
2003}
2004
2005pub struct ManagedRealmRequestStream {
2007 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
2008 is_terminated: bool,
2009}
2010
2011impl std::marker::Unpin for ManagedRealmRequestStream {}
2012
2013impl futures::stream::FusedStream for ManagedRealmRequestStream {
2014 fn is_terminated(&self) -> bool {
2015 self.is_terminated
2016 }
2017}
2018
2019impl fidl::endpoints::RequestStream for ManagedRealmRequestStream {
2020 type Protocol = ManagedRealmMarker;
2021 type ControlHandle = ManagedRealmControlHandle;
2022
2023 fn from_channel(channel: ::fidl::AsyncChannel) -> Self {
2024 Self { inner: std::sync::Arc::new(fidl::ServeInner::new(channel)), is_terminated: false }
2025 }
2026
2027 fn control_handle(&self) -> Self::ControlHandle {
2028 ManagedRealmControlHandle { inner: self.inner.clone() }
2029 }
2030
2031 fn into_inner(
2032 self,
2033 ) -> (::std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>, bool)
2034 {
2035 (self.inner, self.is_terminated)
2036 }
2037
2038 fn from_inner(
2039 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
2040 is_terminated: bool,
2041 ) -> Self {
2042 Self { inner, is_terminated }
2043 }
2044}
2045
2046impl futures::Stream for ManagedRealmRequestStream {
2047 type Item = Result<ManagedRealmRequest, fidl::Error>;
2048
2049 fn poll_next(
2050 mut self: std::pin::Pin<&mut Self>,
2051 cx: &mut std::task::Context<'_>,
2052 ) -> std::task::Poll<Option<Self::Item>> {
2053 let this = &mut *self;
2054 if this.inner.check_shutdown(cx) {
2055 this.is_terminated = true;
2056 return std::task::Poll::Ready(None);
2057 }
2058 if this.is_terminated {
2059 panic!("polled ManagedRealmRequestStream after completion");
2060 }
2061 fidl::encoding::with_tls_decode_buf::<_, fidl::encoding::DefaultFuchsiaResourceDialect>(
2062 |bytes, handles| {
2063 match this.inner.channel().read_etc(cx, bytes, handles) {
2064 std::task::Poll::Ready(Ok(())) => {}
2065 std::task::Poll::Pending => return std::task::Poll::Pending,
2066 std::task::Poll::Ready(Err(zx_status::Status::PEER_CLOSED)) => {
2067 this.is_terminated = true;
2068 return std::task::Poll::Ready(None);
2069 }
2070 std::task::Poll::Ready(Err(e)) => {
2071 return std::task::Poll::Ready(Some(Err(fidl::Error::ServerRequestRead(
2072 e.into(),
2073 ))));
2074 }
2075 }
2076
2077 let (header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
2079
2080 std::task::Poll::Ready(Some(match header.ordinal {
2081 0xec8f2bf894ddc5f => {
2082 header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
2083 let mut req = fidl::new_empty!(
2084 fidl::encoding::EmptyPayload,
2085 fidl::encoding::DefaultFuchsiaResourceDialect
2086 );
2087 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
2088 let control_handle =
2089 ManagedRealmControlHandle { inner: this.inner.clone() };
2090 Ok(ManagedRealmRequest::GetMoniker {
2091 responder: ManagedRealmGetMonikerResponder {
2092 control_handle: std::mem::ManuallyDrop::new(control_handle),
2093 tx_id: header.tx_id,
2094 },
2095 })
2096 }
2097 0x20865b728239813d => {
2098 header.validate_request_tx_id(fidl::MethodType::OneWay)?;
2099 let mut req = fidl::new_empty!(
2100 ManagedRealmConnectToProtocolRequest,
2101 fidl::encoding::DefaultFuchsiaResourceDialect
2102 );
2103 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<ManagedRealmConnectToProtocolRequest>(&header, _body_bytes, handles, &mut req)?;
2104 let control_handle =
2105 ManagedRealmControlHandle { inner: this.inner.clone() };
2106 Ok(ManagedRealmRequest::ConnectToProtocol {
2107 protocol_name: req.protocol_name,
2108 child_name: req.child_name,
2109 req: req.req,
2110
2111 control_handle,
2112 })
2113 }
2114 0x1cfd66bc614daf6a => {
2115 header.validate_request_tx_id(fidl::MethodType::OneWay)?;
2116 let mut req = fidl::new_empty!(
2117 ManagedRealmConnectToServiceRequest,
2118 fidl::encoding::DefaultFuchsiaResourceDialect
2119 );
2120 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<ManagedRealmConnectToServiceRequest>(&header, _body_bytes, handles, &mut req)?;
2121 let control_handle =
2122 ManagedRealmControlHandle { inner: this.inner.clone() };
2123 Ok(ManagedRealmRequest::ConnectToService {
2124 service_name: req.service_name,
2125 child_name: req.child_name,
2126 req: req.req,
2127
2128 control_handle,
2129 })
2130 }
2131 0x789925e6f5d47c07 => {
2132 header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
2133 let mut req = fidl::new_empty!(
2134 ManagedRealmAddDeviceRequest,
2135 fidl::encoding::DefaultFuchsiaResourceDialect
2136 );
2137 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<ManagedRealmAddDeviceRequest>(&header, _body_bytes, handles, &mut req)?;
2138 let control_handle =
2139 ManagedRealmControlHandle { inner: this.inner.clone() };
2140 Ok(ManagedRealmRequest::AddDevice {
2141 path: req.path,
2142 device: req.device,
2143
2144 responder: ManagedRealmAddDeviceResponder {
2145 control_handle: std::mem::ManuallyDrop::new(control_handle),
2146 tx_id: header.tx_id,
2147 },
2148 })
2149 }
2150 0x6cffbba70ac757cc => {
2151 header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
2152 let mut req = fidl::new_empty!(
2153 ManagedRealmRemoveDeviceRequest,
2154 fidl::encoding::DefaultFuchsiaResourceDialect
2155 );
2156 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<ManagedRealmRemoveDeviceRequest>(&header, _body_bytes, handles, &mut req)?;
2157 let control_handle =
2158 ManagedRealmControlHandle { inner: this.inner.clone() };
2159 Ok(ManagedRealmRequest::RemoveDevice {
2160 path: req.path,
2161
2162 responder: ManagedRealmRemoveDeviceResponder {
2163 control_handle: std::mem::ManuallyDrop::new(control_handle),
2164 tx_id: header.tx_id,
2165 },
2166 })
2167 }
2168 0x707e2b17f65fcadc => {
2169 header.validate_request_tx_id(fidl::MethodType::OneWay)?;
2170 let mut req = fidl::new_empty!(
2171 ManagedRealmGetDevfsRequest,
2172 fidl::encoding::DefaultFuchsiaResourceDialect
2173 );
2174 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<ManagedRealmGetDevfsRequest>(&header, _body_bytes, handles, &mut req)?;
2175 let control_handle =
2176 ManagedRealmControlHandle { inner: this.inner.clone() };
2177 Ok(ManagedRealmRequest::GetDevfs { devfs: req.devfs, control_handle })
2178 }
2179 0x20dfa243752906a1 => {
2180 header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
2181 let mut req = fidl::new_empty!(
2182 ManagedRealmStartChildComponentRequest,
2183 fidl::encoding::DefaultFuchsiaResourceDialect
2184 );
2185 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<ManagedRealmStartChildComponentRequest>(&header, _body_bytes, handles, &mut req)?;
2186 let control_handle =
2187 ManagedRealmControlHandle { inner: this.inner.clone() };
2188 Ok(ManagedRealmRequest::StartChildComponent {
2189 child_name: req.child_name,
2190
2191 responder: ManagedRealmStartChildComponentResponder {
2192 control_handle: std::mem::ManuallyDrop::new(control_handle),
2193 tx_id: header.tx_id,
2194 },
2195 })
2196 }
2197 0x5ecfe48430aeeca7 => {
2198 header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
2199 let mut req = fidl::new_empty!(
2200 ManagedRealmStopChildComponentRequest,
2201 fidl::encoding::DefaultFuchsiaResourceDialect
2202 );
2203 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<ManagedRealmStopChildComponentRequest>(&header, _body_bytes, handles, &mut req)?;
2204 let control_handle =
2205 ManagedRealmControlHandle { inner: this.inner.clone() };
2206 Ok(ManagedRealmRequest::StopChildComponent {
2207 child_name: req.child_name,
2208
2209 responder: ManagedRealmStopChildComponentResponder {
2210 control_handle: std::mem::ManuallyDrop::new(control_handle),
2211 tx_id: header.tx_id,
2212 },
2213 })
2214 }
2215 0x4750920f723fba9d => {
2216 header.validate_request_tx_id(fidl::MethodType::OneWay)?;
2217 let mut req = fidl::new_empty!(
2218 fidl::encoding::EmptyPayload,
2219 fidl::encoding::DefaultFuchsiaResourceDialect
2220 );
2221 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
2222 let control_handle =
2223 ManagedRealmControlHandle { inner: this.inner.clone() };
2224 Ok(ManagedRealmRequest::Shutdown { control_handle })
2225 }
2226 0x7c5312484aa41c99 => {
2227 header.validate_request_tx_id(fidl::MethodType::OneWay)?;
2228 let mut req = fidl::new_empty!(
2229 ManagedRealmOpenDiagnosticsDirectoryRequest,
2230 fidl::encoding::DefaultFuchsiaResourceDialect
2231 );
2232 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<ManagedRealmOpenDiagnosticsDirectoryRequest>(&header, _body_bytes, handles, &mut req)?;
2233 let control_handle =
2234 ManagedRealmControlHandle { inner: this.inner.clone() };
2235 Ok(ManagedRealmRequest::OpenDiagnosticsDirectory {
2236 child_name: req.child_name,
2237 directory: req.directory,
2238
2239 control_handle,
2240 })
2241 }
2242 0x407bab14357e8913 => {
2243 header.validate_request_tx_id(fidl::MethodType::OneWay)?;
2244 let mut req = fidl::new_empty!(
2245 ManagedRealmGetCrashListenerRequest,
2246 fidl::encoding::DefaultFuchsiaResourceDialect
2247 );
2248 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<ManagedRealmGetCrashListenerRequest>(&header, _body_bytes, handles, &mut req)?;
2249 let control_handle =
2250 ManagedRealmControlHandle { inner: this.inner.clone() };
2251 Ok(ManagedRealmRequest::GetCrashListener {
2252 listener: req.listener,
2253
2254 control_handle,
2255 })
2256 }
2257 _ => Err(fidl::Error::UnknownOrdinal {
2258 ordinal: header.ordinal,
2259 protocol_name:
2260 <ManagedRealmMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
2261 }),
2262 }))
2263 },
2264 )
2265 }
2266}
2267
2268#[derive(Debug)]
2281pub enum ManagedRealmRequest {
2282 GetMoniker { responder: ManagedRealmGetMonikerResponder },
2287 ConnectToProtocol {
2299 protocol_name: String,
2300 child_name: Option<String>,
2301 req: fidl::Channel,
2302 control_handle: ManagedRealmControlHandle,
2303 },
2304 ConnectToService {
2315 service_name: String,
2316 child_name: Option<String>,
2317 req: fidl::Channel,
2318 control_handle: ManagedRealmControlHandle,
2319 },
2320 AddDevice {
2333 path: String,
2334 device: fidl::endpoints::ClientEnd<fidl_fuchsia_netemul_network::DeviceProxy_Marker>,
2335 responder: ManagedRealmAddDeviceResponder,
2336 },
2337 RemoveDevice { path: String, responder: ManagedRealmRemoveDeviceResponder },
2345 GetDevfs {
2349 devfs: fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>,
2350 control_handle: ManagedRealmControlHandle,
2351 },
2352 StartChildComponent { child_name: String, responder: ManagedRealmStartChildComponentResponder },
2362 StopChildComponent { child_name: String, responder: ManagedRealmStopChildComponentResponder },
2372 Shutdown { control_handle: ManagedRealmControlHandle },
2377 OpenDiagnosticsDirectory {
2379 child_name: String,
2380 directory: fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>,
2381 control_handle: ManagedRealmControlHandle,
2382 },
2383 GetCrashListener {
2385 listener: fidl::endpoints::ServerEnd<CrashListenerMarker>,
2386 control_handle: ManagedRealmControlHandle,
2387 },
2388}
2389
2390impl ManagedRealmRequest {
2391 #[allow(irrefutable_let_patterns)]
2392 pub fn into_get_moniker(self) -> Option<(ManagedRealmGetMonikerResponder)> {
2393 if let ManagedRealmRequest::GetMoniker { responder } = self {
2394 Some((responder))
2395 } else {
2396 None
2397 }
2398 }
2399
2400 #[allow(irrefutable_let_patterns)]
2401 pub fn into_connect_to_protocol(
2402 self,
2403 ) -> Option<(String, Option<String>, fidl::Channel, ManagedRealmControlHandle)> {
2404 if let ManagedRealmRequest::ConnectToProtocol {
2405 protocol_name,
2406 child_name,
2407 req,
2408 control_handle,
2409 } = self
2410 {
2411 Some((protocol_name, child_name, req, control_handle))
2412 } else {
2413 None
2414 }
2415 }
2416
2417 #[allow(irrefutable_let_patterns)]
2418 pub fn into_connect_to_service(
2419 self,
2420 ) -> Option<(String, Option<String>, fidl::Channel, ManagedRealmControlHandle)> {
2421 if let ManagedRealmRequest::ConnectToService {
2422 service_name,
2423 child_name,
2424 req,
2425 control_handle,
2426 } = self
2427 {
2428 Some((service_name, child_name, req, control_handle))
2429 } else {
2430 None
2431 }
2432 }
2433
2434 #[allow(irrefutable_let_patterns)]
2435 pub fn into_add_device(
2436 self,
2437 ) -> Option<(
2438 String,
2439 fidl::endpoints::ClientEnd<fidl_fuchsia_netemul_network::DeviceProxy_Marker>,
2440 ManagedRealmAddDeviceResponder,
2441 )> {
2442 if let ManagedRealmRequest::AddDevice { path, device, responder } = self {
2443 Some((path, device, responder))
2444 } else {
2445 None
2446 }
2447 }
2448
2449 #[allow(irrefutable_let_patterns)]
2450 pub fn into_remove_device(self) -> Option<(String, ManagedRealmRemoveDeviceResponder)> {
2451 if let ManagedRealmRequest::RemoveDevice { path, responder } = self {
2452 Some((path, responder))
2453 } else {
2454 None
2455 }
2456 }
2457
2458 #[allow(irrefutable_let_patterns)]
2459 pub fn into_get_devfs(
2460 self,
2461 ) -> Option<(
2462 fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>,
2463 ManagedRealmControlHandle,
2464 )> {
2465 if let ManagedRealmRequest::GetDevfs { devfs, control_handle } = self {
2466 Some((devfs, control_handle))
2467 } else {
2468 None
2469 }
2470 }
2471
2472 #[allow(irrefutable_let_patterns)]
2473 pub fn into_start_child_component(
2474 self,
2475 ) -> Option<(String, ManagedRealmStartChildComponentResponder)> {
2476 if let ManagedRealmRequest::StartChildComponent { child_name, responder } = self {
2477 Some((child_name, responder))
2478 } else {
2479 None
2480 }
2481 }
2482
2483 #[allow(irrefutable_let_patterns)]
2484 pub fn into_stop_child_component(
2485 self,
2486 ) -> Option<(String, ManagedRealmStopChildComponentResponder)> {
2487 if let ManagedRealmRequest::StopChildComponent { child_name, responder } = self {
2488 Some((child_name, responder))
2489 } else {
2490 None
2491 }
2492 }
2493
2494 #[allow(irrefutable_let_patterns)]
2495 pub fn into_shutdown(self) -> Option<(ManagedRealmControlHandle)> {
2496 if let ManagedRealmRequest::Shutdown { control_handle } = self {
2497 Some((control_handle))
2498 } else {
2499 None
2500 }
2501 }
2502
2503 #[allow(irrefutable_let_patterns)]
2504 pub fn into_open_diagnostics_directory(
2505 self,
2506 ) -> Option<(
2507 String,
2508 fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>,
2509 ManagedRealmControlHandle,
2510 )> {
2511 if let ManagedRealmRequest::OpenDiagnosticsDirectory {
2512 child_name,
2513 directory,
2514 control_handle,
2515 } = self
2516 {
2517 Some((child_name, directory, control_handle))
2518 } else {
2519 None
2520 }
2521 }
2522
2523 #[allow(irrefutable_let_patterns)]
2524 pub fn into_get_crash_listener(
2525 self,
2526 ) -> Option<(fidl::endpoints::ServerEnd<CrashListenerMarker>, ManagedRealmControlHandle)> {
2527 if let ManagedRealmRequest::GetCrashListener { listener, control_handle } = self {
2528 Some((listener, control_handle))
2529 } else {
2530 None
2531 }
2532 }
2533
2534 pub fn method_name(&self) -> &'static str {
2536 match *self {
2537 ManagedRealmRequest::GetMoniker { .. } => "get_moniker",
2538 ManagedRealmRequest::ConnectToProtocol { .. } => "connect_to_protocol",
2539 ManagedRealmRequest::ConnectToService { .. } => "connect_to_service",
2540 ManagedRealmRequest::AddDevice { .. } => "add_device",
2541 ManagedRealmRequest::RemoveDevice { .. } => "remove_device",
2542 ManagedRealmRequest::GetDevfs { .. } => "get_devfs",
2543 ManagedRealmRequest::StartChildComponent { .. } => "start_child_component",
2544 ManagedRealmRequest::StopChildComponent { .. } => "stop_child_component",
2545 ManagedRealmRequest::Shutdown { .. } => "shutdown",
2546 ManagedRealmRequest::OpenDiagnosticsDirectory { .. } => "open_diagnostics_directory",
2547 ManagedRealmRequest::GetCrashListener { .. } => "get_crash_listener",
2548 }
2549 }
2550}
2551
2552#[derive(Debug, Clone)]
2553pub struct ManagedRealmControlHandle {
2554 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
2555}
2556
2557impl fidl::endpoints::ControlHandle for ManagedRealmControlHandle {
2558 fn shutdown(&self) {
2559 self.inner.shutdown()
2560 }
2561
2562 fn shutdown_with_epitaph(&self, status: zx_status::Status) {
2563 self.inner.shutdown_with_epitaph(status)
2564 }
2565
2566 fn is_closed(&self) -> bool {
2567 self.inner.channel().is_closed()
2568 }
2569 fn on_closed(&self) -> fidl::OnSignalsRef<'_> {
2570 self.inner.channel().on_closed()
2571 }
2572
2573 #[cfg(target_os = "fuchsia")]
2574 fn signal_peer(
2575 &self,
2576 clear_mask: zx::Signals,
2577 set_mask: zx::Signals,
2578 ) -> Result<(), zx_status::Status> {
2579 use fidl::Peered;
2580 self.inner.channel().signal_peer(clear_mask, set_mask)
2581 }
2582}
2583
2584impl ManagedRealmControlHandle {
2585 pub fn send_on_shutdown(&self) -> Result<(), fidl::Error> {
2586 self.inner.send::<fidl::encoding::EmptyPayload>(
2587 (),
2588 0,
2589 0x1dff0b58a5b546be,
2590 fidl::encoding::DynamicFlags::empty(),
2591 )
2592 }
2593}
2594
2595#[must_use = "FIDL methods require a response to be sent"]
2596#[derive(Debug)]
2597pub struct ManagedRealmGetMonikerResponder {
2598 control_handle: std::mem::ManuallyDrop<ManagedRealmControlHandle>,
2599 tx_id: u32,
2600}
2601
2602impl std::ops::Drop for ManagedRealmGetMonikerResponder {
2606 fn drop(&mut self) {
2607 self.control_handle.shutdown();
2608 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
2610 }
2611}
2612
2613impl fidl::endpoints::Responder for ManagedRealmGetMonikerResponder {
2614 type ControlHandle = ManagedRealmControlHandle;
2615
2616 fn control_handle(&self) -> &ManagedRealmControlHandle {
2617 &self.control_handle
2618 }
2619
2620 fn drop_without_shutdown(mut self) {
2621 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
2623 std::mem::forget(self);
2625 }
2626}
2627
2628impl ManagedRealmGetMonikerResponder {
2629 pub fn send(self, mut moniker: &str) -> Result<(), fidl::Error> {
2633 let _result = self.send_raw(moniker);
2634 if _result.is_err() {
2635 self.control_handle.shutdown();
2636 }
2637 self.drop_without_shutdown();
2638 _result
2639 }
2640
2641 pub fn send_no_shutdown_on_err(self, mut moniker: &str) -> Result<(), fidl::Error> {
2643 let _result = self.send_raw(moniker);
2644 self.drop_without_shutdown();
2645 _result
2646 }
2647
2648 fn send_raw(&self, mut moniker: &str) -> Result<(), fidl::Error> {
2649 self.control_handle.inner.send::<ManagedRealmGetMonikerResponse>(
2650 (moniker,),
2651 self.tx_id,
2652 0xec8f2bf894ddc5f,
2653 fidl::encoding::DynamicFlags::empty(),
2654 )
2655 }
2656}
2657
2658#[must_use = "FIDL methods require a response to be sent"]
2659#[derive(Debug)]
2660pub struct ManagedRealmAddDeviceResponder {
2661 control_handle: std::mem::ManuallyDrop<ManagedRealmControlHandle>,
2662 tx_id: u32,
2663}
2664
2665impl std::ops::Drop for ManagedRealmAddDeviceResponder {
2669 fn drop(&mut self) {
2670 self.control_handle.shutdown();
2671 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
2673 }
2674}
2675
2676impl fidl::endpoints::Responder for ManagedRealmAddDeviceResponder {
2677 type ControlHandle = ManagedRealmControlHandle;
2678
2679 fn control_handle(&self) -> &ManagedRealmControlHandle {
2680 &self.control_handle
2681 }
2682
2683 fn drop_without_shutdown(mut self) {
2684 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
2686 std::mem::forget(self);
2688 }
2689}
2690
2691impl ManagedRealmAddDeviceResponder {
2692 pub fn send(self, mut result: Result<(), i32>) -> Result<(), fidl::Error> {
2696 let _result = self.send_raw(result);
2697 if _result.is_err() {
2698 self.control_handle.shutdown();
2699 }
2700 self.drop_without_shutdown();
2701 _result
2702 }
2703
2704 pub fn send_no_shutdown_on_err(self, mut result: Result<(), i32>) -> Result<(), fidl::Error> {
2706 let _result = self.send_raw(result);
2707 self.drop_without_shutdown();
2708 _result
2709 }
2710
2711 fn send_raw(&self, mut result: Result<(), i32>) -> Result<(), fidl::Error> {
2712 self.control_handle
2713 .inner
2714 .send::<fidl::encoding::ResultType<fidl::encoding::EmptyStruct, i32>>(
2715 result,
2716 self.tx_id,
2717 0x789925e6f5d47c07,
2718 fidl::encoding::DynamicFlags::empty(),
2719 )
2720 }
2721}
2722
2723#[must_use = "FIDL methods require a response to be sent"]
2724#[derive(Debug)]
2725pub struct ManagedRealmRemoveDeviceResponder {
2726 control_handle: std::mem::ManuallyDrop<ManagedRealmControlHandle>,
2727 tx_id: u32,
2728}
2729
2730impl std::ops::Drop for ManagedRealmRemoveDeviceResponder {
2734 fn drop(&mut self) {
2735 self.control_handle.shutdown();
2736 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
2738 }
2739}
2740
2741impl fidl::endpoints::Responder for ManagedRealmRemoveDeviceResponder {
2742 type ControlHandle = ManagedRealmControlHandle;
2743
2744 fn control_handle(&self) -> &ManagedRealmControlHandle {
2745 &self.control_handle
2746 }
2747
2748 fn drop_without_shutdown(mut self) {
2749 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
2751 std::mem::forget(self);
2753 }
2754}
2755
2756impl ManagedRealmRemoveDeviceResponder {
2757 pub fn send(self, mut result: Result<(), i32>) -> Result<(), fidl::Error> {
2761 let _result = self.send_raw(result);
2762 if _result.is_err() {
2763 self.control_handle.shutdown();
2764 }
2765 self.drop_without_shutdown();
2766 _result
2767 }
2768
2769 pub fn send_no_shutdown_on_err(self, mut result: Result<(), i32>) -> Result<(), fidl::Error> {
2771 let _result = self.send_raw(result);
2772 self.drop_without_shutdown();
2773 _result
2774 }
2775
2776 fn send_raw(&self, mut result: Result<(), i32>) -> Result<(), fidl::Error> {
2777 self.control_handle
2778 .inner
2779 .send::<fidl::encoding::ResultType<fidl::encoding::EmptyStruct, i32>>(
2780 result,
2781 self.tx_id,
2782 0x6cffbba70ac757cc,
2783 fidl::encoding::DynamicFlags::empty(),
2784 )
2785 }
2786}
2787
2788#[must_use = "FIDL methods require a response to be sent"]
2789#[derive(Debug)]
2790pub struct ManagedRealmStartChildComponentResponder {
2791 control_handle: std::mem::ManuallyDrop<ManagedRealmControlHandle>,
2792 tx_id: u32,
2793}
2794
2795impl std::ops::Drop for ManagedRealmStartChildComponentResponder {
2799 fn drop(&mut self) {
2800 self.control_handle.shutdown();
2801 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
2803 }
2804}
2805
2806impl fidl::endpoints::Responder for ManagedRealmStartChildComponentResponder {
2807 type ControlHandle = ManagedRealmControlHandle;
2808
2809 fn control_handle(&self) -> &ManagedRealmControlHandle {
2810 &self.control_handle
2811 }
2812
2813 fn drop_without_shutdown(mut self) {
2814 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
2816 std::mem::forget(self);
2818 }
2819}
2820
2821impl ManagedRealmStartChildComponentResponder {
2822 pub fn send(self, mut result: Result<(), i32>) -> Result<(), fidl::Error> {
2826 let _result = self.send_raw(result);
2827 if _result.is_err() {
2828 self.control_handle.shutdown();
2829 }
2830 self.drop_without_shutdown();
2831 _result
2832 }
2833
2834 pub fn send_no_shutdown_on_err(self, mut result: Result<(), i32>) -> Result<(), fidl::Error> {
2836 let _result = self.send_raw(result);
2837 self.drop_without_shutdown();
2838 _result
2839 }
2840
2841 fn send_raw(&self, mut result: Result<(), i32>) -> Result<(), fidl::Error> {
2842 self.control_handle
2843 .inner
2844 .send::<fidl::encoding::ResultType<fidl::encoding::EmptyStruct, i32>>(
2845 result,
2846 self.tx_id,
2847 0x20dfa243752906a1,
2848 fidl::encoding::DynamicFlags::empty(),
2849 )
2850 }
2851}
2852
2853#[must_use = "FIDL methods require a response to be sent"]
2854#[derive(Debug)]
2855pub struct ManagedRealmStopChildComponentResponder {
2856 control_handle: std::mem::ManuallyDrop<ManagedRealmControlHandle>,
2857 tx_id: u32,
2858}
2859
2860impl std::ops::Drop for ManagedRealmStopChildComponentResponder {
2864 fn drop(&mut self) {
2865 self.control_handle.shutdown();
2866 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
2868 }
2869}
2870
2871impl fidl::endpoints::Responder for ManagedRealmStopChildComponentResponder {
2872 type ControlHandle = ManagedRealmControlHandle;
2873
2874 fn control_handle(&self) -> &ManagedRealmControlHandle {
2875 &self.control_handle
2876 }
2877
2878 fn drop_without_shutdown(mut self) {
2879 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
2881 std::mem::forget(self);
2883 }
2884}
2885
2886impl ManagedRealmStopChildComponentResponder {
2887 pub fn send(self, mut result: Result<(), i32>) -> Result<(), fidl::Error> {
2891 let _result = self.send_raw(result);
2892 if _result.is_err() {
2893 self.control_handle.shutdown();
2894 }
2895 self.drop_without_shutdown();
2896 _result
2897 }
2898
2899 pub fn send_no_shutdown_on_err(self, mut result: Result<(), i32>) -> Result<(), fidl::Error> {
2901 let _result = self.send_raw(result);
2902 self.drop_without_shutdown();
2903 _result
2904 }
2905
2906 fn send_raw(&self, mut result: Result<(), i32>) -> Result<(), fidl::Error> {
2907 self.control_handle
2908 .inner
2909 .send::<fidl::encoding::ResultType<fidl::encoding::EmptyStruct, i32>>(
2910 result,
2911 self.tx_id,
2912 0x5ecfe48430aeeca7,
2913 fidl::encoding::DynamicFlags::empty(),
2914 )
2915 }
2916}
2917
2918#[derive(Debug, Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash)]
2919pub struct SandboxMarker;
2920
2921impl fidl::endpoints::ProtocolMarker for SandboxMarker {
2922 type Proxy = SandboxProxy;
2923 type RequestStream = SandboxRequestStream;
2924 #[cfg(target_os = "fuchsia")]
2925 type SynchronousProxy = SandboxSynchronousProxy;
2926
2927 const DEBUG_NAME: &'static str = "fuchsia.netemul.Sandbox";
2928}
2929impl fidl::endpoints::DiscoverableProtocolMarker for SandboxMarker {}
2930
2931pub trait SandboxProxyInterface: Send + Sync {
2932 fn r#create_realm(
2933 &self,
2934 realm: fidl::endpoints::ServerEnd<ManagedRealmMarker>,
2935 options: RealmOptions,
2936 ) -> Result<(), fidl::Error>;
2937 fn r#get_network_context(
2938 &self,
2939 network_context: fidl::endpoints::ServerEnd<
2940 fidl_fuchsia_netemul_network::NetworkContextMarker,
2941 >,
2942 ) -> Result<(), fidl::Error>;
2943}
2944#[derive(Debug)]
2945#[cfg(target_os = "fuchsia")]
2946pub struct SandboxSynchronousProxy {
2947 client: fidl::client::sync::Client,
2948}
2949
2950#[cfg(target_os = "fuchsia")]
2951impl fidl::endpoints::SynchronousProxy for SandboxSynchronousProxy {
2952 type Proxy = SandboxProxy;
2953 type Protocol = SandboxMarker;
2954
2955 fn from_channel(inner: fidl::Channel) -> Self {
2956 Self::new(inner)
2957 }
2958
2959 fn into_channel(self) -> fidl::Channel {
2960 self.client.into_channel()
2961 }
2962
2963 fn as_channel(&self) -> &fidl::Channel {
2964 self.client.as_channel()
2965 }
2966}
2967
2968#[cfg(target_os = "fuchsia")]
2969impl SandboxSynchronousProxy {
2970 pub fn new(channel: fidl::Channel) -> Self {
2971 Self { client: fidl::client::sync::Client::new(channel) }
2972 }
2973
2974 pub fn into_channel(self) -> fidl::Channel {
2975 self.client.into_channel()
2976 }
2977
2978 pub fn wait_for_event(
2981 &self,
2982 deadline: zx::MonotonicInstant,
2983 ) -> Result<SandboxEvent, fidl::Error> {
2984 SandboxEvent::decode(self.client.wait_for_event::<SandboxMarker>(deadline)?)
2985 }
2986
2987 pub fn r#create_realm(
2998 &self,
2999 mut realm: fidl::endpoints::ServerEnd<ManagedRealmMarker>,
3000 mut options: RealmOptions,
3001 ) -> Result<(), fidl::Error> {
3002 self.client.send::<SandboxCreateRealmRequest>(
3003 (realm, &mut options),
3004 0x25d0bc5f1006a0c9,
3005 fidl::encoding::DynamicFlags::empty(),
3006 )
3007 }
3008
3009 pub fn r#get_network_context(
3013 &self,
3014 mut network_context: fidl::endpoints::ServerEnd<
3015 fidl_fuchsia_netemul_network::NetworkContextMarker,
3016 >,
3017 ) -> Result<(), fidl::Error> {
3018 self.client.send::<SandboxGetNetworkContextRequest>(
3019 (network_context,),
3020 0x140cb104c2605970,
3021 fidl::encoding::DynamicFlags::empty(),
3022 )
3023 }
3024}
3025
3026#[cfg(target_os = "fuchsia")]
3027impl From<SandboxSynchronousProxy> for zx::NullableHandle {
3028 fn from(value: SandboxSynchronousProxy) -> Self {
3029 value.into_channel().into()
3030 }
3031}
3032
3033#[cfg(target_os = "fuchsia")]
3034impl From<fidl::Channel> for SandboxSynchronousProxy {
3035 fn from(value: fidl::Channel) -> Self {
3036 Self::new(value)
3037 }
3038}
3039
3040#[cfg(target_os = "fuchsia")]
3041impl fidl::endpoints::FromClient for SandboxSynchronousProxy {
3042 type Protocol = SandboxMarker;
3043
3044 fn from_client(value: fidl::endpoints::ClientEnd<SandboxMarker>) -> Self {
3045 Self::new(value.into_channel())
3046 }
3047}
3048
3049#[derive(Debug, Clone)]
3050pub struct SandboxProxy {
3051 client: fidl::client::Client<fidl::encoding::DefaultFuchsiaResourceDialect>,
3052}
3053
3054impl fidl::endpoints::Proxy for SandboxProxy {
3055 type Protocol = SandboxMarker;
3056
3057 fn from_channel(inner: ::fidl::AsyncChannel) -> Self {
3058 Self::new(inner)
3059 }
3060
3061 fn into_channel(self) -> Result<::fidl::AsyncChannel, Self> {
3062 self.client.into_channel().map_err(|client| Self { client })
3063 }
3064
3065 fn as_channel(&self) -> &::fidl::AsyncChannel {
3066 self.client.as_channel()
3067 }
3068}
3069
3070impl SandboxProxy {
3071 pub fn new(channel: ::fidl::AsyncChannel) -> Self {
3073 let protocol_name = <SandboxMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
3074 Self { client: fidl::client::Client::new(channel, protocol_name) }
3075 }
3076
3077 pub fn take_event_stream(&self) -> SandboxEventStream {
3083 SandboxEventStream { event_receiver: self.client.take_event_receiver() }
3084 }
3085
3086 pub fn r#create_realm(
3097 &self,
3098 mut realm: fidl::endpoints::ServerEnd<ManagedRealmMarker>,
3099 mut options: RealmOptions,
3100 ) -> Result<(), fidl::Error> {
3101 SandboxProxyInterface::r#create_realm(self, realm, options)
3102 }
3103
3104 pub fn r#get_network_context(
3108 &self,
3109 mut network_context: fidl::endpoints::ServerEnd<
3110 fidl_fuchsia_netemul_network::NetworkContextMarker,
3111 >,
3112 ) -> Result<(), fidl::Error> {
3113 SandboxProxyInterface::r#get_network_context(self, network_context)
3114 }
3115}
3116
3117impl SandboxProxyInterface for SandboxProxy {
3118 fn r#create_realm(
3119 &self,
3120 mut realm: fidl::endpoints::ServerEnd<ManagedRealmMarker>,
3121 mut options: RealmOptions,
3122 ) -> Result<(), fidl::Error> {
3123 self.client.send::<SandboxCreateRealmRequest>(
3124 (realm, &mut options),
3125 0x25d0bc5f1006a0c9,
3126 fidl::encoding::DynamicFlags::empty(),
3127 )
3128 }
3129
3130 fn r#get_network_context(
3131 &self,
3132 mut network_context: fidl::endpoints::ServerEnd<
3133 fidl_fuchsia_netemul_network::NetworkContextMarker,
3134 >,
3135 ) -> Result<(), fidl::Error> {
3136 self.client.send::<SandboxGetNetworkContextRequest>(
3137 (network_context,),
3138 0x140cb104c2605970,
3139 fidl::encoding::DynamicFlags::empty(),
3140 )
3141 }
3142}
3143
3144pub struct SandboxEventStream {
3145 event_receiver: fidl::client::EventReceiver<fidl::encoding::DefaultFuchsiaResourceDialect>,
3146}
3147
3148impl std::marker::Unpin for SandboxEventStream {}
3149
3150impl futures::stream::FusedStream for SandboxEventStream {
3151 fn is_terminated(&self) -> bool {
3152 self.event_receiver.is_terminated()
3153 }
3154}
3155
3156impl futures::Stream for SandboxEventStream {
3157 type Item = Result<SandboxEvent, fidl::Error>;
3158
3159 fn poll_next(
3160 mut self: std::pin::Pin<&mut Self>,
3161 cx: &mut std::task::Context<'_>,
3162 ) -> std::task::Poll<Option<Self::Item>> {
3163 match futures::ready!(futures::stream::StreamExt::poll_next_unpin(
3164 &mut self.event_receiver,
3165 cx
3166 )?) {
3167 Some(buf) => std::task::Poll::Ready(Some(SandboxEvent::decode(buf))),
3168 None => std::task::Poll::Ready(None),
3169 }
3170 }
3171}
3172
3173#[derive(Debug)]
3174pub enum SandboxEvent {}
3175
3176impl SandboxEvent {
3177 fn decode(
3179 mut buf: <fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc,
3180 ) -> Result<SandboxEvent, fidl::Error> {
3181 let (bytes, _handles) = buf.split_mut();
3182 let (tx_header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
3183 debug_assert_eq!(tx_header.tx_id, 0);
3184 match tx_header.ordinal {
3185 _ => Err(fidl::Error::UnknownOrdinal {
3186 ordinal: tx_header.ordinal,
3187 protocol_name: <SandboxMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
3188 }),
3189 }
3190 }
3191}
3192
3193pub struct SandboxRequestStream {
3195 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
3196 is_terminated: bool,
3197}
3198
3199impl std::marker::Unpin for SandboxRequestStream {}
3200
3201impl futures::stream::FusedStream for SandboxRequestStream {
3202 fn is_terminated(&self) -> bool {
3203 self.is_terminated
3204 }
3205}
3206
3207impl fidl::endpoints::RequestStream for SandboxRequestStream {
3208 type Protocol = SandboxMarker;
3209 type ControlHandle = SandboxControlHandle;
3210
3211 fn from_channel(channel: ::fidl::AsyncChannel) -> Self {
3212 Self { inner: std::sync::Arc::new(fidl::ServeInner::new(channel)), is_terminated: false }
3213 }
3214
3215 fn control_handle(&self) -> Self::ControlHandle {
3216 SandboxControlHandle { inner: self.inner.clone() }
3217 }
3218
3219 fn into_inner(
3220 self,
3221 ) -> (::std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>, bool)
3222 {
3223 (self.inner, self.is_terminated)
3224 }
3225
3226 fn from_inner(
3227 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
3228 is_terminated: bool,
3229 ) -> Self {
3230 Self { inner, is_terminated }
3231 }
3232}
3233
3234impl futures::Stream for SandboxRequestStream {
3235 type Item = Result<SandboxRequest, fidl::Error>;
3236
3237 fn poll_next(
3238 mut self: std::pin::Pin<&mut Self>,
3239 cx: &mut std::task::Context<'_>,
3240 ) -> std::task::Poll<Option<Self::Item>> {
3241 let this = &mut *self;
3242 if this.inner.check_shutdown(cx) {
3243 this.is_terminated = true;
3244 return std::task::Poll::Ready(None);
3245 }
3246 if this.is_terminated {
3247 panic!("polled SandboxRequestStream after completion");
3248 }
3249 fidl::encoding::with_tls_decode_buf::<_, fidl::encoding::DefaultFuchsiaResourceDialect>(
3250 |bytes, handles| {
3251 match this.inner.channel().read_etc(cx, bytes, handles) {
3252 std::task::Poll::Ready(Ok(())) => {}
3253 std::task::Poll::Pending => return std::task::Poll::Pending,
3254 std::task::Poll::Ready(Err(zx_status::Status::PEER_CLOSED)) => {
3255 this.is_terminated = true;
3256 return std::task::Poll::Ready(None);
3257 }
3258 std::task::Poll::Ready(Err(e)) => {
3259 return std::task::Poll::Ready(Some(Err(fidl::Error::ServerRequestRead(
3260 e.into(),
3261 ))));
3262 }
3263 }
3264
3265 let (header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
3267
3268 std::task::Poll::Ready(Some(match header.ordinal {
3269 0x25d0bc5f1006a0c9 => {
3270 header.validate_request_tx_id(fidl::MethodType::OneWay)?;
3271 let mut req = fidl::new_empty!(
3272 SandboxCreateRealmRequest,
3273 fidl::encoding::DefaultFuchsiaResourceDialect
3274 );
3275 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<SandboxCreateRealmRequest>(&header, _body_bytes, handles, &mut req)?;
3276 let control_handle = SandboxControlHandle { inner: this.inner.clone() };
3277 Ok(SandboxRequest::CreateRealm {
3278 realm: req.realm,
3279 options: req.options,
3280
3281 control_handle,
3282 })
3283 }
3284 0x140cb104c2605970 => {
3285 header.validate_request_tx_id(fidl::MethodType::OneWay)?;
3286 let mut req = fidl::new_empty!(
3287 SandboxGetNetworkContextRequest,
3288 fidl::encoding::DefaultFuchsiaResourceDialect
3289 );
3290 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<SandboxGetNetworkContextRequest>(&header, _body_bytes, handles, &mut req)?;
3291 let control_handle = SandboxControlHandle { inner: this.inner.clone() };
3292 Ok(SandboxRequest::GetNetworkContext {
3293 network_context: req.network_context,
3294
3295 control_handle,
3296 })
3297 }
3298 _ => Err(fidl::Error::UnknownOrdinal {
3299 ordinal: header.ordinal,
3300 protocol_name:
3301 <SandboxMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
3302 }),
3303 }))
3304 },
3305 )
3306 }
3307}
3308
3309#[derive(Debug)]
3320pub enum SandboxRequest {
3321 CreateRealm {
3332 realm: fidl::endpoints::ServerEnd<ManagedRealmMarker>,
3333 options: RealmOptions,
3334 control_handle: SandboxControlHandle,
3335 },
3336 GetNetworkContext {
3340 network_context:
3341 fidl::endpoints::ServerEnd<fidl_fuchsia_netemul_network::NetworkContextMarker>,
3342 control_handle: SandboxControlHandle,
3343 },
3344}
3345
3346impl SandboxRequest {
3347 #[allow(irrefutable_let_patterns)]
3348 pub fn into_create_realm(
3349 self,
3350 ) -> Option<(fidl::endpoints::ServerEnd<ManagedRealmMarker>, RealmOptions, SandboxControlHandle)>
3351 {
3352 if let SandboxRequest::CreateRealm { realm, options, control_handle } = self {
3353 Some((realm, options, control_handle))
3354 } else {
3355 None
3356 }
3357 }
3358
3359 #[allow(irrefutable_let_patterns)]
3360 pub fn into_get_network_context(
3361 self,
3362 ) -> Option<(
3363 fidl::endpoints::ServerEnd<fidl_fuchsia_netemul_network::NetworkContextMarker>,
3364 SandboxControlHandle,
3365 )> {
3366 if let SandboxRequest::GetNetworkContext { network_context, control_handle } = self {
3367 Some((network_context, control_handle))
3368 } else {
3369 None
3370 }
3371 }
3372
3373 pub fn method_name(&self) -> &'static str {
3375 match *self {
3376 SandboxRequest::CreateRealm { .. } => "create_realm",
3377 SandboxRequest::GetNetworkContext { .. } => "get_network_context",
3378 }
3379 }
3380}
3381
3382#[derive(Debug, Clone)]
3383pub struct SandboxControlHandle {
3384 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
3385}
3386
3387impl fidl::endpoints::ControlHandle for SandboxControlHandle {
3388 fn shutdown(&self) {
3389 self.inner.shutdown()
3390 }
3391
3392 fn shutdown_with_epitaph(&self, status: zx_status::Status) {
3393 self.inner.shutdown_with_epitaph(status)
3394 }
3395
3396 fn is_closed(&self) -> bool {
3397 self.inner.channel().is_closed()
3398 }
3399 fn on_closed(&self) -> fidl::OnSignalsRef<'_> {
3400 self.inner.channel().on_closed()
3401 }
3402
3403 #[cfg(target_os = "fuchsia")]
3404 fn signal_peer(
3405 &self,
3406 clear_mask: zx::Signals,
3407 set_mask: zx::Signals,
3408 ) -> Result<(), zx_status::Status> {
3409 use fidl::Peered;
3410 self.inner.channel().signal_peer(clear_mask, set_mask)
3411 }
3412}
3413
3414impl SandboxControlHandle {}
3415
3416mod internal {
3417 use super::*;
3418
3419 impl fidl::encoding::ResourceTypeMarker for ManagedRealmAddDeviceRequest {
3420 type Borrowed<'a> = &'a mut Self;
3421 fn take_or_borrow<'a>(
3422 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
3423 ) -> Self::Borrowed<'a> {
3424 value
3425 }
3426 }
3427
3428 unsafe impl fidl::encoding::TypeMarker for ManagedRealmAddDeviceRequest {
3429 type Owned = Self;
3430
3431 #[inline(always)]
3432 fn inline_align(_context: fidl::encoding::Context) -> usize {
3433 8
3434 }
3435
3436 #[inline(always)]
3437 fn inline_size(_context: fidl::encoding::Context) -> usize {
3438 24
3439 }
3440 }
3441
3442 unsafe impl
3443 fidl::encoding::Encode<
3444 ManagedRealmAddDeviceRequest,
3445 fidl::encoding::DefaultFuchsiaResourceDialect,
3446 > for &mut ManagedRealmAddDeviceRequest
3447 {
3448 #[inline]
3449 unsafe fn encode(
3450 self,
3451 encoder: &mut fidl::encoding::Encoder<
3452 '_,
3453 fidl::encoding::DefaultFuchsiaResourceDialect,
3454 >,
3455 offset: usize,
3456 _depth: fidl::encoding::Depth,
3457 ) -> fidl::Result<()> {
3458 encoder.debug_check_bounds::<ManagedRealmAddDeviceRequest>(offset);
3459 fidl::encoding::Encode::<
3461 ManagedRealmAddDeviceRequest,
3462 fidl::encoding::DefaultFuchsiaResourceDialect,
3463 >::encode(
3464 (
3465 <fidl::encoding::UnboundedString as fidl::encoding::ValueTypeMarker>::borrow(
3466 &self.path,
3467 ),
3468 <fidl::encoding::Endpoint<
3469 fidl::endpoints::ClientEnd<
3470 fidl_fuchsia_netemul_network::DeviceProxy_Marker,
3471 >,
3472 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow(
3473 &mut self.device
3474 ),
3475 ),
3476 encoder,
3477 offset,
3478 _depth,
3479 )
3480 }
3481 }
3482 unsafe impl<
3483 T0: fidl::encoding::Encode<
3484 fidl::encoding::UnboundedString,
3485 fidl::encoding::DefaultFuchsiaResourceDialect,
3486 >,
3487 T1: fidl::encoding::Encode<
3488 fidl::encoding::Endpoint<
3489 fidl::endpoints::ClientEnd<fidl_fuchsia_netemul_network::DeviceProxy_Marker>,
3490 >,
3491 fidl::encoding::DefaultFuchsiaResourceDialect,
3492 >,
3493 >
3494 fidl::encoding::Encode<
3495 ManagedRealmAddDeviceRequest,
3496 fidl::encoding::DefaultFuchsiaResourceDialect,
3497 > for (T0, T1)
3498 {
3499 #[inline]
3500 unsafe fn encode(
3501 self,
3502 encoder: &mut fidl::encoding::Encoder<
3503 '_,
3504 fidl::encoding::DefaultFuchsiaResourceDialect,
3505 >,
3506 offset: usize,
3507 depth: fidl::encoding::Depth,
3508 ) -> fidl::Result<()> {
3509 encoder.debug_check_bounds::<ManagedRealmAddDeviceRequest>(offset);
3510 unsafe {
3513 let ptr = encoder.buf.as_mut_ptr().add(offset).offset(16);
3514 (ptr as *mut u64).write_unaligned(0);
3515 }
3516 self.0.encode(encoder, offset + 0, depth)?;
3518 self.1.encode(encoder, offset + 16, depth)?;
3519 Ok(())
3520 }
3521 }
3522
3523 impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
3524 for ManagedRealmAddDeviceRequest
3525 {
3526 #[inline(always)]
3527 fn new_empty() -> Self {
3528 Self {
3529 path: fidl::new_empty!(
3530 fidl::encoding::UnboundedString,
3531 fidl::encoding::DefaultFuchsiaResourceDialect
3532 ),
3533 device: fidl::new_empty!(
3534 fidl::encoding::Endpoint<
3535 fidl::endpoints::ClientEnd<
3536 fidl_fuchsia_netemul_network::DeviceProxy_Marker,
3537 >,
3538 >,
3539 fidl::encoding::DefaultFuchsiaResourceDialect
3540 ),
3541 }
3542 }
3543
3544 #[inline]
3545 unsafe fn decode(
3546 &mut self,
3547 decoder: &mut fidl::encoding::Decoder<
3548 '_,
3549 fidl::encoding::DefaultFuchsiaResourceDialect,
3550 >,
3551 offset: usize,
3552 _depth: fidl::encoding::Depth,
3553 ) -> fidl::Result<()> {
3554 decoder.debug_check_bounds::<Self>(offset);
3555 let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(16) };
3557 let padval = unsafe { (ptr as *const u64).read_unaligned() };
3558 let mask = 0xffffffff00000000u64;
3559 let maskedval = padval & mask;
3560 if maskedval != 0 {
3561 return Err(fidl::Error::NonZeroPadding {
3562 padding_start: offset + 16 + ((mask as u64).trailing_zeros() / 8) as usize,
3563 });
3564 }
3565 fidl::decode!(
3566 fidl::encoding::UnboundedString,
3567 fidl::encoding::DefaultFuchsiaResourceDialect,
3568 &mut self.path,
3569 decoder,
3570 offset + 0,
3571 _depth
3572 )?;
3573 fidl::decode!(
3574 fidl::encoding::Endpoint<
3575 fidl::endpoints::ClientEnd<fidl_fuchsia_netemul_network::DeviceProxy_Marker>,
3576 >,
3577 fidl::encoding::DefaultFuchsiaResourceDialect,
3578 &mut self.device,
3579 decoder,
3580 offset + 16,
3581 _depth
3582 )?;
3583 Ok(())
3584 }
3585 }
3586
3587 impl fidl::encoding::ResourceTypeMarker for ManagedRealmConnectToProtocolRequest {
3588 type Borrowed<'a> = &'a mut Self;
3589 fn take_or_borrow<'a>(
3590 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
3591 ) -> Self::Borrowed<'a> {
3592 value
3593 }
3594 }
3595
3596 unsafe impl fidl::encoding::TypeMarker for ManagedRealmConnectToProtocolRequest {
3597 type Owned = Self;
3598
3599 #[inline(always)]
3600 fn inline_align(_context: fidl::encoding::Context) -> usize {
3601 8
3602 }
3603
3604 #[inline(always)]
3605 fn inline_size(_context: fidl::encoding::Context) -> usize {
3606 40
3607 }
3608 }
3609
3610 unsafe impl
3611 fidl::encoding::Encode<
3612 ManagedRealmConnectToProtocolRequest,
3613 fidl::encoding::DefaultFuchsiaResourceDialect,
3614 > for &mut ManagedRealmConnectToProtocolRequest
3615 {
3616 #[inline]
3617 unsafe fn encode(
3618 self,
3619 encoder: &mut fidl::encoding::Encoder<
3620 '_,
3621 fidl::encoding::DefaultFuchsiaResourceDialect,
3622 >,
3623 offset: usize,
3624 _depth: fidl::encoding::Depth,
3625 ) -> fidl::Result<()> {
3626 encoder.debug_check_bounds::<ManagedRealmConnectToProtocolRequest>(offset);
3627 fidl::encoding::Encode::<ManagedRealmConnectToProtocolRequest, fidl::encoding::DefaultFuchsiaResourceDialect>::encode(
3629 (
3630 <fidl::encoding::BoundedString<255> as fidl::encoding::ValueTypeMarker>::borrow(&self.protocol_name),
3631 <fidl::encoding::Optional<fidl::encoding::BoundedString<255>> as fidl::encoding::ValueTypeMarker>::borrow(&self.child_name),
3632 <fidl::encoding::HandleType<fidl::Channel, { fidl::ObjectType::CHANNEL.into_raw() }, 2147483648> as fidl::encoding::ResourceTypeMarker>::take_or_borrow(&mut self.req),
3633 ),
3634 encoder, offset, _depth
3635 )
3636 }
3637 }
3638 unsafe impl<
3639 T0: fidl::encoding::Encode<
3640 fidl::encoding::BoundedString<255>,
3641 fidl::encoding::DefaultFuchsiaResourceDialect,
3642 >,
3643 T1: fidl::encoding::Encode<
3644 fidl::encoding::Optional<fidl::encoding::BoundedString<255>>,
3645 fidl::encoding::DefaultFuchsiaResourceDialect,
3646 >,
3647 T2: fidl::encoding::Encode<
3648 fidl::encoding::HandleType<
3649 fidl::Channel,
3650 { fidl::ObjectType::CHANNEL.into_raw() },
3651 2147483648,
3652 >,
3653 fidl::encoding::DefaultFuchsiaResourceDialect,
3654 >,
3655 >
3656 fidl::encoding::Encode<
3657 ManagedRealmConnectToProtocolRequest,
3658 fidl::encoding::DefaultFuchsiaResourceDialect,
3659 > for (T0, T1, T2)
3660 {
3661 #[inline]
3662 unsafe fn encode(
3663 self,
3664 encoder: &mut fidl::encoding::Encoder<
3665 '_,
3666 fidl::encoding::DefaultFuchsiaResourceDialect,
3667 >,
3668 offset: usize,
3669 depth: fidl::encoding::Depth,
3670 ) -> fidl::Result<()> {
3671 encoder.debug_check_bounds::<ManagedRealmConnectToProtocolRequest>(offset);
3672 unsafe {
3675 let ptr = encoder.buf.as_mut_ptr().add(offset).offset(32);
3676 (ptr as *mut u64).write_unaligned(0);
3677 }
3678 self.0.encode(encoder, offset + 0, depth)?;
3680 self.1.encode(encoder, offset + 16, depth)?;
3681 self.2.encode(encoder, offset + 32, depth)?;
3682 Ok(())
3683 }
3684 }
3685
3686 impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
3687 for ManagedRealmConnectToProtocolRequest
3688 {
3689 #[inline(always)]
3690 fn new_empty() -> Self {
3691 Self {
3692 protocol_name: fidl::new_empty!(
3693 fidl::encoding::BoundedString<255>,
3694 fidl::encoding::DefaultFuchsiaResourceDialect
3695 ),
3696 child_name: fidl::new_empty!(
3697 fidl::encoding::Optional<fidl::encoding::BoundedString<255>>,
3698 fidl::encoding::DefaultFuchsiaResourceDialect
3699 ),
3700 req: fidl::new_empty!(fidl::encoding::HandleType<fidl::Channel, { fidl::ObjectType::CHANNEL.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect),
3701 }
3702 }
3703
3704 #[inline]
3705 unsafe fn decode(
3706 &mut self,
3707 decoder: &mut fidl::encoding::Decoder<
3708 '_,
3709 fidl::encoding::DefaultFuchsiaResourceDialect,
3710 >,
3711 offset: usize,
3712 _depth: fidl::encoding::Depth,
3713 ) -> fidl::Result<()> {
3714 decoder.debug_check_bounds::<Self>(offset);
3715 let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(32) };
3717 let padval = unsafe { (ptr as *const u64).read_unaligned() };
3718 let mask = 0xffffffff00000000u64;
3719 let maskedval = padval & mask;
3720 if maskedval != 0 {
3721 return Err(fidl::Error::NonZeroPadding {
3722 padding_start: offset + 32 + ((mask as u64).trailing_zeros() / 8) as usize,
3723 });
3724 }
3725 fidl::decode!(
3726 fidl::encoding::BoundedString<255>,
3727 fidl::encoding::DefaultFuchsiaResourceDialect,
3728 &mut self.protocol_name,
3729 decoder,
3730 offset + 0,
3731 _depth
3732 )?;
3733 fidl::decode!(
3734 fidl::encoding::Optional<fidl::encoding::BoundedString<255>>,
3735 fidl::encoding::DefaultFuchsiaResourceDialect,
3736 &mut self.child_name,
3737 decoder,
3738 offset + 16,
3739 _depth
3740 )?;
3741 fidl::decode!(fidl::encoding::HandleType<fidl::Channel, { fidl::ObjectType::CHANNEL.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect, &mut self.req, decoder, offset + 32, _depth)?;
3742 Ok(())
3743 }
3744 }
3745
3746 impl fidl::encoding::ResourceTypeMarker for ManagedRealmConnectToServiceRequest {
3747 type Borrowed<'a> = &'a mut Self;
3748 fn take_or_borrow<'a>(
3749 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
3750 ) -> Self::Borrowed<'a> {
3751 value
3752 }
3753 }
3754
3755 unsafe impl fidl::encoding::TypeMarker for ManagedRealmConnectToServiceRequest {
3756 type Owned = Self;
3757
3758 #[inline(always)]
3759 fn inline_align(_context: fidl::encoding::Context) -> usize {
3760 8
3761 }
3762
3763 #[inline(always)]
3764 fn inline_size(_context: fidl::encoding::Context) -> usize {
3765 40
3766 }
3767 }
3768
3769 unsafe impl
3770 fidl::encoding::Encode<
3771 ManagedRealmConnectToServiceRequest,
3772 fidl::encoding::DefaultFuchsiaResourceDialect,
3773 > for &mut ManagedRealmConnectToServiceRequest
3774 {
3775 #[inline]
3776 unsafe fn encode(
3777 self,
3778 encoder: &mut fidl::encoding::Encoder<
3779 '_,
3780 fidl::encoding::DefaultFuchsiaResourceDialect,
3781 >,
3782 offset: usize,
3783 _depth: fidl::encoding::Depth,
3784 ) -> fidl::Result<()> {
3785 encoder.debug_check_bounds::<ManagedRealmConnectToServiceRequest>(offset);
3786 fidl::encoding::Encode::<ManagedRealmConnectToServiceRequest, fidl::encoding::DefaultFuchsiaResourceDialect>::encode(
3788 (
3789 <fidl::encoding::BoundedString<255> as fidl::encoding::ValueTypeMarker>::borrow(&self.service_name),
3790 <fidl::encoding::Optional<fidl::encoding::BoundedString<255>> as fidl::encoding::ValueTypeMarker>::borrow(&self.child_name),
3791 <fidl::encoding::HandleType<fidl::Channel, { fidl::ObjectType::CHANNEL.into_raw() }, 2147483648> as fidl::encoding::ResourceTypeMarker>::take_or_borrow(&mut self.req),
3792 ),
3793 encoder, offset, _depth
3794 )
3795 }
3796 }
3797 unsafe impl<
3798 T0: fidl::encoding::Encode<
3799 fidl::encoding::BoundedString<255>,
3800 fidl::encoding::DefaultFuchsiaResourceDialect,
3801 >,
3802 T1: fidl::encoding::Encode<
3803 fidl::encoding::Optional<fidl::encoding::BoundedString<255>>,
3804 fidl::encoding::DefaultFuchsiaResourceDialect,
3805 >,
3806 T2: fidl::encoding::Encode<
3807 fidl::encoding::HandleType<
3808 fidl::Channel,
3809 { fidl::ObjectType::CHANNEL.into_raw() },
3810 2147483648,
3811 >,
3812 fidl::encoding::DefaultFuchsiaResourceDialect,
3813 >,
3814 >
3815 fidl::encoding::Encode<
3816 ManagedRealmConnectToServiceRequest,
3817 fidl::encoding::DefaultFuchsiaResourceDialect,
3818 > for (T0, T1, T2)
3819 {
3820 #[inline]
3821 unsafe fn encode(
3822 self,
3823 encoder: &mut fidl::encoding::Encoder<
3824 '_,
3825 fidl::encoding::DefaultFuchsiaResourceDialect,
3826 >,
3827 offset: usize,
3828 depth: fidl::encoding::Depth,
3829 ) -> fidl::Result<()> {
3830 encoder.debug_check_bounds::<ManagedRealmConnectToServiceRequest>(offset);
3831 unsafe {
3834 let ptr = encoder.buf.as_mut_ptr().add(offset).offset(32);
3835 (ptr as *mut u64).write_unaligned(0);
3836 }
3837 self.0.encode(encoder, offset + 0, depth)?;
3839 self.1.encode(encoder, offset + 16, depth)?;
3840 self.2.encode(encoder, offset + 32, depth)?;
3841 Ok(())
3842 }
3843 }
3844
3845 impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
3846 for ManagedRealmConnectToServiceRequest
3847 {
3848 #[inline(always)]
3849 fn new_empty() -> Self {
3850 Self {
3851 service_name: fidl::new_empty!(
3852 fidl::encoding::BoundedString<255>,
3853 fidl::encoding::DefaultFuchsiaResourceDialect
3854 ),
3855 child_name: fidl::new_empty!(
3856 fidl::encoding::Optional<fidl::encoding::BoundedString<255>>,
3857 fidl::encoding::DefaultFuchsiaResourceDialect
3858 ),
3859 req: fidl::new_empty!(fidl::encoding::HandleType<fidl::Channel, { fidl::ObjectType::CHANNEL.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect),
3860 }
3861 }
3862
3863 #[inline]
3864 unsafe fn decode(
3865 &mut self,
3866 decoder: &mut fidl::encoding::Decoder<
3867 '_,
3868 fidl::encoding::DefaultFuchsiaResourceDialect,
3869 >,
3870 offset: usize,
3871 _depth: fidl::encoding::Depth,
3872 ) -> fidl::Result<()> {
3873 decoder.debug_check_bounds::<Self>(offset);
3874 let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(32) };
3876 let padval = unsafe { (ptr as *const u64).read_unaligned() };
3877 let mask = 0xffffffff00000000u64;
3878 let maskedval = padval & mask;
3879 if maskedval != 0 {
3880 return Err(fidl::Error::NonZeroPadding {
3881 padding_start: offset + 32 + ((mask as u64).trailing_zeros() / 8) as usize,
3882 });
3883 }
3884 fidl::decode!(
3885 fidl::encoding::BoundedString<255>,
3886 fidl::encoding::DefaultFuchsiaResourceDialect,
3887 &mut self.service_name,
3888 decoder,
3889 offset + 0,
3890 _depth
3891 )?;
3892 fidl::decode!(
3893 fidl::encoding::Optional<fidl::encoding::BoundedString<255>>,
3894 fidl::encoding::DefaultFuchsiaResourceDialect,
3895 &mut self.child_name,
3896 decoder,
3897 offset + 16,
3898 _depth
3899 )?;
3900 fidl::decode!(fidl::encoding::HandleType<fidl::Channel, { fidl::ObjectType::CHANNEL.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect, &mut self.req, decoder, offset + 32, _depth)?;
3901 Ok(())
3902 }
3903 }
3904
3905 impl fidl::encoding::ResourceTypeMarker for ManagedRealmGetCrashListenerRequest {
3906 type Borrowed<'a> = &'a mut Self;
3907 fn take_or_borrow<'a>(
3908 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
3909 ) -> Self::Borrowed<'a> {
3910 value
3911 }
3912 }
3913
3914 unsafe impl fidl::encoding::TypeMarker for ManagedRealmGetCrashListenerRequest {
3915 type Owned = Self;
3916
3917 #[inline(always)]
3918 fn inline_align(_context: fidl::encoding::Context) -> usize {
3919 4
3920 }
3921
3922 #[inline(always)]
3923 fn inline_size(_context: fidl::encoding::Context) -> usize {
3924 4
3925 }
3926 }
3927
3928 unsafe impl
3929 fidl::encoding::Encode<
3930 ManagedRealmGetCrashListenerRequest,
3931 fidl::encoding::DefaultFuchsiaResourceDialect,
3932 > for &mut ManagedRealmGetCrashListenerRequest
3933 {
3934 #[inline]
3935 unsafe fn encode(
3936 self,
3937 encoder: &mut fidl::encoding::Encoder<
3938 '_,
3939 fidl::encoding::DefaultFuchsiaResourceDialect,
3940 >,
3941 offset: usize,
3942 _depth: fidl::encoding::Depth,
3943 ) -> fidl::Result<()> {
3944 encoder.debug_check_bounds::<ManagedRealmGetCrashListenerRequest>(offset);
3945 fidl::encoding::Encode::<ManagedRealmGetCrashListenerRequest, fidl::encoding::DefaultFuchsiaResourceDialect>::encode(
3947 (
3948 <fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<CrashListenerMarker>> as fidl::encoding::ResourceTypeMarker>::take_or_borrow(&mut self.listener),
3949 ),
3950 encoder, offset, _depth
3951 )
3952 }
3953 }
3954 unsafe impl<
3955 T0: fidl::encoding::Encode<
3956 fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<CrashListenerMarker>>,
3957 fidl::encoding::DefaultFuchsiaResourceDialect,
3958 >,
3959 >
3960 fidl::encoding::Encode<
3961 ManagedRealmGetCrashListenerRequest,
3962 fidl::encoding::DefaultFuchsiaResourceDialect,
3963 > for (T0,)
3964 {
3965 #[inline]
3966 unsafe fn encode(
3967 self,
3968 encoder: &mut fidl::encoding::Encoder<
3969 '_,
3970 fidl::encoding::DefaultFuchsiaResourceDialect,
3971 >,
3972 offset: usize,
3973 depth: fidl::encoding::Depth,
3974 ) -> fidl::Result<()> {
3975 encoder.debug_check_bounds::<ManagedRealmGetCrashListenerRequest>(offset);
3976 self.0.encode(encoder, offset + 0, depth)?;
3980 Ok(())
3981 }
3982 }
3983
3984 impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
3985 for ManagedRealmGetCrashListenerRequest
3986 {
3987 #[inline(always)]
3988 fn new_empty() -> Self {
3989 Self {
3990 listener: fidl::new_empty!(
3991 fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<CrashListenerMarker>>,
3992 fidl::encoding::DefaultFuchsiaResourceDialect
3993 ),
3994 }
3995 }
3996
3997 #[inline]
3998 unsafe fn decode(
3999 &mut self,
4000 decoder: &mut fidl::encoding::Decoder<
4001 '_,
4002 fidl::encoding::DefaultFuchsiaResourceDialect,
4003 >,
4004 offset: usize,
4005 _depth: fidl::encoding::Depth,
4006 ) -> fidl::Result<()> {
4007 decoder.debug_check_bounds::<Self>(offset);
4008 fidl::decode!(
4010 fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<CrashListenerMarker>>,
4011 fidl::encoding::DefaultFuchsiaResourceDialect,
4012 &mut self.listener,
4013 decoder,
4014 offset + 0,
4015 _depth
4016 )?;
4017 Ok(())
4018 }
4019 }
4020
4021 impl fidl::encoding::ResourceTypeMarker for ManagedRealmGetDevfsRequest {
4022 type Borrowed<'a> = &'a mut Self;
4023 fn take_or_borrow<'a>(
4024 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
4025 ) -> Self::Borrowed<'a> {
4026 value
4027 }
4028 }
4029
4030 unsafe impl fidl::encoding::TypeMarker for ManagedRealmGetDevfsRequest {
4031 type Owned = Self;
4032
4033 #[inline(always)]
4034 fn inline_align(_context: fidl::encoding::Context) -> usize {
4035 4
4036 }
4037
4038 #[inline(always)]
4039 fn inline_size(_context: fidl::encoding::Context) -> usize {
4040 4
4041 }
4042 }
4043
4044 unsafe impl
4045 fidl::encoding::Encode<
4046 ManagedRealmGetDevfsRequest,
4047 fidl::encoding::DefaultFuchsiaResourceDialect,
4048 > for &mut ManagedRealmGetDevfsRequest
4049 {
4050 #[inline]
4051 unsafe fn encode(
4052 self,
4053 encoder: &mut fidl::encoding::Encoder<
4054 '_,
4055 fidl::encoding::DefaultFuchsiaResourceDialect,
4056 >,
4057 offset: usize,
4058 _depth: fidl::encoding::Depth,
4059 ) -> fidl::Result<()> {
4060 encoder.debug_check_bounds::<ManagedRealmGetDevfsRequest>(offset);
4061 fidl::encoding::Encode::<
4063 ManagedRealmGetDevfsRequest,
4064 fidl::encoding::DefaultFuchsiaResourceDialect,
4065 >::encode(
4066 (<fidl::encoding::Endpoint<
4067 fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>,
4068 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow(
4069 &mut self.devfs
4070 ),),
4071 encoder,
4072 offset,
4073 _depth,
4074 )
4075 }
4076 }
4077 unsafe impl<
4078 T0: fidl::encoding::Encode<
4079 fidl::encoding::Endpoint<
4080 fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>,
4081 >,
4082 fidl::encoding::DefaultFuchsiaResourceDialect,
4083 >,
4084 >
4085 fidl::encoding::Encode<
4086 ManagedRealmGetDevfsRequest,
4087 fidl::encoding::DefaultFuchsiaResourceDialect,
4088 > for (T0,)
4089 {
4090 #[inline]
4091 unsafe fn encode(
4092 self,
4093 encoder: &mut fidl::encoding::Encoder<
4094 '_,
4095 fidl::encoding::DefaultFuchsiaResourceDialect,
4096 >,
4097 offset: usize,
4098 depth: fidl::encoding::Depth,
4099 ) -> fidl::Result<()> {
4100 encoder.debug_check_bounds::<ManagedRealmGetDevfsRequest>(offset);
4101 self.0.encode(encoder, offset + 0, depth)?;
4105 Ok(())
4106 }
4107 }
4108
4109 impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
4110 for ManagedRealmGetDevfsRequest
4111 {
4112 #[inline(always)]
4113 fn new_empty() -> Self {
4114 Self {
4115 devfs: fidl::new_empty!(
4116 fidl::encoding::Endpoint<
4117 fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>,
4118 >,
4119 fidl::encoding::DefaultFuchsiaResourceDialect
4120 ),
4121 }
4122 }
4123
4124 #[inline]
4125 unsafe fn decode(
4126 &mut self,
4127 decoder: &mut fidl::encoding::Decoder<
4128 '_,
4129 fidl::encoding::DefaultFuchsiaResourceDialect,
4130 >,
4131 offset: usize,
4132 _depth: fidl::encoding::Depth,
4133 ) -> fidl::Result<()> {
4134 decoder.debug_check_bounds::<Self>(offset);
4135 fidl::decode!(
4137 fidl::encoding::Endpoint<
4138 fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>,
4139 >,
4140 fidl::encoding::DefaultFuchsiaResourceDialect,
4141 &mut self.devfs,
4142 decoder,
4143 offset + 0,
4144 _depth
4145 )?;
4146 Ok(())
4147 }
4148 }
4149
4150 impl fidl::encoding::ResourceTypeMarker for ManagedRealmOpenDiagnosticsDirectoryRequest {
4151 type Borrowed<'a> = &'a mut Self;
4152 fn take_or_borrow<'a>(
4153 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
4154 ) -> Self::Borrowed<'a> {
4155 value
4156 }
4157 }
4158
4159 unsafe impl fidl::encoding::TypeMarker for ManagedRealmOpenDiagnosticsDirectoryRequest {
4160 type Owned = Self;
4161
4162 #[inline(always)]
4163 fn inline_align(_context: fidl::encoding::Context) -> usize {
4164 8
4165 }
4166
4167 #[inline(always)]
4168 fn inline_size(_context: fidl::encoding::Context) -> usize {
4169 24
4170 }
4171 }
4172
4173 unsafe impl
4174 fidl::encoding::Encode<
4175 ManagedRealmOpenDiagnosticsDirectoryRequest,
4176 fidl::encoding::DefaultFuchsiaResourceDialect,
4177 > for &mut ManagedRealmOpenDiagnosticsDirectoryRequest
4178 {
4179 #[inline]
4180 unsafe fn encode(
4181 self,
4182 encoder: &mut fidl::encoding::Encoder<
4183 '_,
4184 fidl::encoding::DefaultFuchsiaResourceDialect,
4185 >,
4186 offset: usize,
4187 _depth: fidl::encoding::Depth,
4188 ) -> fidl::Result<()> {
4189 encoder.debug_check_bounds::<ManagedRealmOpenDiagnosticsDirectoryRequest>(offset);
4190 fidl::encoding::Encode::<
4192 ManagedRealmOpenDiagnosticsDirectoryRequest,
4193 fidl::encoding::DefaultFuchsiaResourceDialect,
4194 >::encode(
4195 (
4196 <fidl::encoding::BoundedString<255> as fidl::encoding::ValueTypeMarker>::borrow(
4197 &self.child_name,
4198 ),
4199 <fidl::encoding::Endpoint<
4200 fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>,
4201 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow(
4202 &mut self.directory
4203 ),
4204 ),
4205 encoder,
4206 offset,
4207 _depth,
4208 )
4209 }
4210 }
4211 unsafe impl<
4212 T0: fidl::encoding::Encode<
4213 fidl::encoding::BoundedString<255>,
4214 fidl::encoding::DefaultFuchsiaResourceDialect,
4215 >,
4216 T1: fidl::encoding::Encode<
4217 fidl::encoding::Endpoint<
4218 fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>,
4219 >,
4220 fidl::encoding::DefaultFuchsiaResourceDialect,
4221 >,
4222 >
4223 fidl::encoding::Encode<
4224 ManagedRealmOpenDiagnosticsDirectoryRequest,
4225 fidl::encoding::DefaultFuchsiaResourceDialect,
4226 > for (T0, T1)
4227 {
4228 #[inline]
4229 unsafe fn encode(
4230 self,
4231 encoder: &mut fidl::encoding::Encoder<
4232 '_,
4233 fidl::encoding::DefaultFuchsiaResourceDialect,
4234 >,
4235 offset: usize,
4236 depth: fidl::encoding::Depth,
4237 ) -> fidl::Result<()> {
4238 encoder.debug_check_bounds::<ManagedRealmOpenDiagnosticsDirectoryRequest>(offset);
4239 unsafe {
4242 let ptr = encoder.buf.as_mut_ptr().add(offset).offset(16);
4243 (ptr as *mut u64).write_unaligned(0);
4244 }
4245 self.0.encode(encoder, offset + 0, depth)?;
4247 self.1.encode(encoder, offset + 16, depth)?;
4248 Ok(())
4249 }
4250 }
4251
4252 impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
4253 for ManagedRealmOpenDiagnosticsDirectoryRequest
4254 {
4255 #[inline(always)]
4256 fn new_empty() -> Self {
4257 Self {
4258 child_name: fidl::new_empty!(
4259 fidl::encoding::BoundedString<255>,
4260 fidl::encoding::DefaultFuchsiaResourceDialect
4261 ),
4262 directory: fidl::new_empty!(
4263 fidl::encoding::Endpoint<
4264 fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>,
4265 >,
4266 fidl::encoding::DefaultFuchsiaResourceDialect
4267 ),
4268 }
4269 }
4270
4271 #[inline]
4272 unsafe fn decode(
4273 &mut self,
4274 decoder: &mut fidl::encoding::Decoder<
4275 '_,
4276 fidl::encoding::DefaultFuchsiaResourceDialect,
4277 >,
4278 offset: usize,
4279 _depth: fidl::encoding::Depth,
4280 ) -> fidl::Result<()> {
4281 decoder.debug_check_bounds::<Self>(offset);
4282 let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(16) };
4284 let padval = unsafe { (ptr as *const u64).read_unaligned() };
4285 let mask = 0xffffffff00000000u64;
4286 let maskedval = padval & mask;
4287 if maskedval != 0 {
4288 return Err(fidl::Error::NonZeroPadding {
4289 padding_start: offset + 16 + ((mask as u64).trailing_zeros() / 8) as usize,
4290 });
4291 }
4292 fidl::decode!(
4293 fidl::encoding::BoundedString<255>,
4294 fidl::encoding::DefaultFuchsiaResourceDialect,
4295 &mut self.child_name,
4296 decoder,
4297 offset + 0,
4298 _depth
4299 )?;
4300 fidl::decode!(
4301 fidl::encoding::Endpoint<
4302 fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>,
4303 >,
4304 fidl::encoding::DefaultFuchsiaResourceDialect,
4305 &mut self.directory,
4306 decoder,
4307 offset + 16,
4308 _depth
4309 )?;
4310 Ok(())
4311 }
4312 }
4313
4314 impl fidl::encoding::ResourceTypeMarker for SandboxCreateRealmRequest {
4315 type Borrowed<'a> = &'a mut Self;
4316 fn take_or_borrow<'a>(
4317 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
4318 ) -> Self::Borrowed<'a> {
4319 value
4320 }
4321 }
4322
4323 unsafe impl fidl::encoding::TypeMarker for SandboxCreateRealmRequest {
4324 type Owned = Self;
4325
4326 #[inline(always)]
4327 fn inline_align(_context: fidl::encoding::Context) -> usize {
4328 8
4329 }
4330
4331 #[inline(always)]
4332 fn inline_size(_context: fidl::encoding::Context) -> usize {
4333 24
4334 }
4335 }
4336
4337 unsafe impl
4338 fidl::encoding::Encode<
4339 SandboxCreateRealmRequest,
4340 fidl::encoding::DefaultFuchsiaResourceDialect,
4341 > for &mut SandboxCreateRealmRequest
4342 {
4343 #[inline]
4344 unsafe fn encode(
4345 self,
4346 encoder: &mut fidl::encoding::Encoder<
4347 '_,
4348 fidl::encoding::DefaultFuchsiaResourceDialect,
4349 >,
4350 offset: usize,
4351 _depth: fidl::encoding::Depth,
4352 ) -> fidl::Result<()> {
4353 encoder.debug_check_bounds::<SandboxCreateRealmRequest>(offset);
4354 fidl::encoding::Encode::<SandboxCreateRealmRequest, fidl::encoding::DefaultFuchsiaResourceDialect>::encode(
4356 (
4357 <fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<ManagedRealmMarker>> as fidl::encoding::ResourceTypeMarker>::take_or_borrow(&mut self.realm),
4358 <RealmOptions as fidl::encoding::ResourceTypeMarker>::take_or_borrow(&mut self.options),
4359 ),
4360 encoder, offset, _depth
4361 )
4362 }
4363 }
4364 unsafe impl<
4365 T0: fidl::encoding::Encode<
4366 fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<ManagedRealmMarker>>,
4367 fidl::encoding::DefaultFuchsiaResourceDialect,
4368 >,
4369 T1: fidl::encoding::Encode<RealmOptions, fidl::encoding::DefaultFuchsiaResourceDialect>,
4370 >
4371 fidl::encoding::Encode<
4372 SandboxCreateRealmRequest,
4373 fidl::encoding::DefaultFuchsiaResourceDialect,
4374 > for (T0, T1)
4375 {
4376 #[inline]
4377 unsafe fn encode(
4378 self,
4379 encoder: &mut fidl::encoding::Encoder<
4380 '_,
4381 fidl::encoding::DefaultFuchsiaResourceDialect,
4382 >,
4383 offset: usize,
4384 depth: fidl::encoding::Depth,
4385 ) -> fidl::Result<()> {
4386 encoder.debug_check_bounds::<SandboxCreateRealmRequest>(offset);
4387 unsafe {
4390 let ptr = encoder.buf.as_mut_ptr().add(offset).offset(0);
4391 (ptr as *mut u64).write_unaligned(0);
4392 }
4393 self.0.encode(encoder, offset + 0, depth)?;
4395 self.1.encode(encoder, offset + 8, depth)?;
4396 Ok(())
4397 }
4398 }
4399
4400 impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
4401 for SandboxCreateRealmRequest
4402 {
4403 #[inline(always)]
4404 fn new_empty() -> Self {
4405 Self {
4406 realm: fidl::new_empty!(
4407 fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<ManagedRealmMarker>>,
4408 fidl::encoding::DefaultFuchsiaResourceDialect
4409 ),
4410 options: fidl::new_empty!(
4411 RealmOptions,
4412 fidl::encoding::DefaultFuchsiaResourceDialect
4413 ),
4414 }
4415 }
4416
4417 #[inline]
4418 unsafe fn decode(
4419 &mut self,
4420 decoder: &mut fidl::encoding::Decoder<
4421 '_,
4422 fidl::encoding::DefaultFuchsiaResourceDialect,
4423 >,
4424 offset: usize,
4425 _depth: fidl::encoding::Depth,
4426 ) -> fidl::Result<()> {
4427 decoder.debug_check_bounds::<Self>(offset);
4428 let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(0) };
4430 let padval = unsafe { (ptr as *const u64).read_unaligned() };
4431 let mask = 0xffffffff00000000u64;
4432 let maskedval = padval & mask;
4433 if maskedval != 0 {
4434 return Err(fidl::Error::NonZeroPadding {
4435 padding_start: offset + 0 + ((mask as u64).trailing_zeros() / 8) as usize,
4436 });
4437 }
4438 fidl::decode!(
4439 fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<ManagedRealmMarker>>,
4440 fidl::encoding::DefaultFuchsiaResourceDialect,
4441 &mut self.realm,
4442 decoder,
4443 offset + 0,
4444 _depth
4445 )?;
4446 fidl::decode!(
4447 RealmOptions,
4448 fidl::encoding::DefaultFuchsiaResourceDialect,
4449 &mut self.options,
4450 decoder,
4451 offset + 8,
4452 _depth
4453 )?;
4454 Ok(())
4455 }
4456 }
4457
4458 impl fidl::encoding::ResourceTypeMarker for SandboxGetNetworkContextRequest {
4459 type Borrowed<'a> = &'a mut Self;
4460 fn take_or_borrow<'a>(
4461 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
4462 ) -> Self::Borrowed<'a> {
4463 value
4464 }
4465 }
4466
4467 unsafe impl fidl::encoding::TypeMarker for SandboxGetNetworkContextRequest {
4468 type Owned = Self;
4469
4470 #[inline(always)]
4471 fn inline_align(_context: fidl::encoding::Context) -> usize {
4472 4
4473 }
4474
4475 #[inline(always)]
4476 fn inline_size(_context: fidl::encoding::Context) -> usize {
4477 4
4478 }
4479 }
4480
4481 unsafe impl
4482 fidl::encoding::Encode<
4483 SandboxGetNetworkContextRequest,
4484 fidl::encoding::DefaultFuchsiaResourceDialect,
4485 > for &mut SandboxGetNetworkContextRequest
4486 {
4487 #[inline]
4488 unsafe fn encode(
4489 self,
4490 encoder: &mut fidl::encoding::Encoder<
4491 '_,
4492 fidl::encoding::DefaultFuchsiaResourceDialect,
4493 >,
4494 offset: usize,
4495 _depth: fidl::encoding::Depth,
4496 ) -> fidl::Result<()> {
4497 encoder.debug_check_bounds::<SandboxGetNetworkContextRequest>(offset);
4498 fidl::encoding::Encode::<
4500 SandboxGetNetworkContextRequest,
4501 fidl::encoding::DefaultFuchsiaResourceDialect,
4502 >::encode(
4503 (<fidl::encoding::Endpoint<
4504 fidl::endpoints::ServerEnd<fidl_fuchsia_netemul_network::NetworkContextMarker>,
4505 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow(
4506 &mut self.network_context,
4507 ),),
4508 encoder,
4509 offset,
4510 _depth,
4511 )
4512 }
4513 }
4514 unsafe impl<
4515 T0: fidl::encoding::Encode<
4516 fidl::encoding::Endpoint<
4517 fidl::endpoints::ServerEnd<fidl_fuchsia_netemul_network::NetworkContextMarker>,
4518 >,
4519 fidl::encoding::DefaultFuchsiaResourceDialect,
4520 >,
4521 >
4522 fidl::encoding::Encode<
4523 SandboxGetNetworkContextRequest,
4524 fidl::encoding::DefaultFuchsiaResourceDialect,
4525 > for (T0,)
4526 {
4527 #[inline]
4528 unsafe fn encode(
4529 self,
4530 encoder: &mut fidl::encoding::Encoder<
4531 '_,
4532 fidl::encoding::DefaultFuchsiaResourceDialect,
4533 >,
4534 offset: usize,
4535 depth: fidl::encoding::Depth,
4536 ) -> fidl::Result<()> {
4537 encoder.debug_check_bounds::<SandboxGetNetworkContextRequest>(offset);
4538 self.0.encode(encoder, offset + 0, depth)?;
4542 Ok(())
4543 }
4544 }
4545
4546 impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
4547 for SandboxGetNetworkContextRequest
4548 {
4549 #[inline(always)]
4550 fn new_empty() -> Self {
4551 Self {
4552 network_context: fidl::new_empty!(
4553 fidl::encoding::Endpoint<
4554 fidl::endpoints::ServerEnd<
4555 fidl_fuchsia_netemul_network::NetworkContextMarker,
4556 >,
4557 >,
4558 fidl::encoding::DefaultFuchsiaResourceDialect
4559 ),
4560 }
4561 }
4562
4563 #[inline]
4564 unsafe fn decode(
4565 &mut self,
4566 decoder: &mut fidl::encoding::Decoder<
4567 '_,
4568 fidl::encoding::DefaultFuchsiaResourceDialect,
4569 >,
4570 offset: usize,
4571 _depth: fidl::encoding::Depth,
4572 ) -> fidl::Result<()> {
4573 decoder.debug_check_bounds::<Self>(offset);
4574 fidl::decode!(
4576 fidl::encoding::Endpoint<
4577 fidl::endpoints::ServerEnd<fidl_fuchsia_netemul_network::NetworkContextMarker>,
4578 >,
4579 fidl::encoding::DefaultFuchsiaResourceDialect,
4580 &mut self.network_context,
4581 decoder,
4582 offset + 0,
4583 _depth
4584 )?;
4585 Ok(())
4586 }
4587 }
4588
4589 impl ChildDef {
4590 #[inline(always)]
4591 fn max_ordinal_present(&self) -> u64 {
4592 if let Some(_) = self.config_values {
4593 return 7;
4594 }
4595 if let Some(_) = self.eager {
4596 return 6;
4597 }
4598 if let Some(_) = self.program_args {
4599 return 5;
4600 }
4601 if let Some(_) = self.uses {
4602 return 4;
4603 }
4604 if let Some(_) = self.exposes {
4605 return 3;
4606 }
4607 if let Some(_) = self.name {
4608 return 2;
4609 }
4610 if let Some(_) = self.source {
4611 return 1;
4612 }
4613 0
4614 }
4615 }
4616
4617 impl fidl::encoding::ResourceTypeMarker for ChildDef {
4618 type Borrowed<'a> = &'a mut Self;
4619 fn take_or_borrow<'a>(
4620 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
4621 ) -> Self::Borrowed<'a> {
4622 value
4623 }
4624 }
4625
4626 unsafe impl fidl::encoding::TypeMarker for ChildDef {
4627 type Owned = Self;
4628
4629 #[inline(always)]
4630 fn inline_align(_context: fidl::encoding::Context) -> usize {
4631 8
4632 }
4633
4634 #[inline(always)]
4635 fn inline_size(_context: fidl::encoding::Context) -> usize {
4636 16
4637 }
4638 }
4639
4640 unsafe impl fidl::encoding::Encode<ChildDef, fidl::encoding::DefaultFuchsiaResourceDialect>
4641 for &mut ChildDef
4642 {
4643 unsafe fn encode(
4644 self,
4645 encoder: &mut fidl::encoding::Encoder<
4646 '_,
4647 fidl::encoding::DefaultFuchsiaResourceDialect,
4648 >,
4649 offset: usize,
4650 mut depth: fidl::encoding::Depth,
4651 ) -> fidl::Result<()> {
4652 encoder.debug_check_bounds::<ChildDef>(offset);
4653 let max_ordinal: u64 = self.max_ordinal_present();
4655 encoder.write_num(max_ordinal, offset);
4656 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
4657 if max_ordinal == 0 {
4659 return Ok(());
4660 }
4661 depth.increment()?;
4662 let envelope_size = 8;
4663 let bytes_len = max_ordinal as usize * envelope_size;
4664 #[allow(unused_variables)]
4665 let offset = encoder.out_of_line_offset(bytes_len);
4666 let mut _prev_end_offset: usize = 0;
4667 if 1 > max_ordinal {
4668 return Ok(());
4669 }
4670
4671 let cur_offset: usize = (1 - 1) * envelope_size;
4674
4675 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4677
4678 fidl::encoding::encode_in_envelope_optional::<
4683 ChildSource,
4684 fidl::encoding::DefaultFuchsiaResourceDialect,
4685 >(
4686 self.source
4687 .as_mut()
4688 .map(<ChildSource as fidl::encoding::ResourceTypeMarker>::take_or_borrow),
4689 encoder,
4690 offset + cur_offset,
4691 depth,
4692 )?;
4693
4694 _prev_end_offset = cur_offset + envelope_size;
4695 if 2 > max_ordinal {
4696 return Ok(());
4697 }
4698
4699 let cur_offset: usize = (2 - 1) * envelope_size;
4702
4703 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4705
4706 fidl::encoding::encode_in_envelope_optional::<
4711 fidl::encoding::BoundedString<255>,
4712 fidl::encoding::DefaultFuchsiaResourceDialect,
4713 >(
4714 self.name.as_ref().map(
4715 <fidl::encoding::BoundedString<255> as fidl::encoding::ValueTypeMarker>::borrow,
4716 ),
4717 encoder,
4718 offset + cur_offset,
4719 depth,
4720 )?;
4721
4722 _prev_end_offset = cur_offset + envelope_size;
4723 if 3 > max_ordinal {
4724 return Ok(());
4725 }
4726
4727 let cur_offset: usize = (3 - 1) * envelope_size;
4730
4731 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4733
4734 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<fidl::encoding::BoundedString<255>>, fidl::encoding::DefaultFuchsiaResourceDialect>(
4739 self.exposes.as_ref().map(<fidl::encoding::UnboundedVector<fidl::encoding::BoundedString<255>> as fidl::encoding::ValueTypeMarker>::borrow),
4740 encoder, offset + cur_offset, depth
4741 )?;
4742
4743 _prev_end_offset = cur_offset + envelope_size;
4744 if 4 > max_ordinal {
4745 return Ok(());
4746 }
4747
4748 let cur_offset: usize = (4 - 1) * envelope_size;
4751
4752 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4754
4755 fidl::encoding::encode_in_envelope_optional::<
4760 ChildUses,
4761 fidl::encoding::DefaultFuchsiaResourceDialect,
4762 >(
4763 self.uses.as_ref().map(<ChildUses as fidl::encoding::ValueTypeMarker>::borrow),
4764 encoder,
4765 offset + cur_offset,
4766 depth,
4767 )?;
4768
4769 _prev_end_offset = cur_offset + envelope_size;
4770 if 5 > max_ordinal {
4771 return Ok(());
4772 }
4773
4774 let cur_offset: usize = (5 - 1) * envelope_size;
4777
4778 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4780
4781 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<fidl::encoding::UnboundedString>, fidl::encoding::DefaultFuchsiaResourceDialect>(
4786 self.program_args.as_ref().map(<fidl::encoding::UnboundedVector<fidl::encoding::UnboundedString> as fidl::encoding::ValueTypeMarker>::borrow),
4787 encoder, offset + cur_offset, depth
4788 )?;
4789
4790 _prev_end_offset = cur_offset + envelope_size;
4791 if 6 > max_ordinal {
4792 return Ok(());
4793 }
4794
4795 let cur_offset: usize = (6 - 1) * envelope_size;
4798
4799 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4801
4802 fidl::encoding::encode_in_envelope_optional::<
4807 bool,
4808 fidl::encoding::DefaultFuchsiaResourceDialect,
4809 >(
4810 self.eager.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
4811 encoder,
4812 offset + cur_offset,
4813 depth,
4814 )?;
4815
4816 _prev_end_offset = cur_offset + envelope_size;
4817 if 7 > max_ordinal {
4818 return Ok(());
4819 }
4820
4821 let cur_offset: usize = (7 - 1) * envelope_size;
4824
4825 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4827
4828 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<ChildConfigValue>, fidl::encoding::DefaultFuchsiaResourceDialect>(
4833 self.config_values.as_ref().map(<fidl::encoding::UnboundedVector<ChildConfigValue> as fidl::encoding::ValueTypeMarker>::borrow),
4834 encoder, offset + cur_offset, depth
4835 )?;
4836
4837 _prev_end_offset = cur_offset + envelope_size;
4838
4839 Ok(())
4840 }
4841 }
4842
4843 impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect> for ChildDef {
4844 #[inline(always)]
4845 fn new_empty() -> Self {
4846 Self::default()
4847 }
4848
4849 unsafe fn decode(
4850 &mut self,
4851 decoder: &mut fidl::encoding::Decoder<
4852 '_,
4853 fidl::encoding::DefaultFuchsiaResourceDialect,
4854 >,
4855 offset: usize,
4856 mut depth: fidl::encoding::Depth,
4857 ) -> fidl::Result<()> {
4858 decoder.debug_check_bounds::<Self>(offset);
4859 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
4860 None => return Err(fidl::Error::NotNullable),
4861 Some(len) => len,
4862 };
4863 if len == 0 {
4865 return Ok(());
4866 };
4867 depth.increment()?;
4868 let envelope_size = 8;
4869 let bytes_len = len * envelope_size;
4870 let offset = decoder.out_of_line_offset(bytes_len)?;
4871 let mut _next_ordinal_to_read = 0;
4873 let mut next_offset = offset;
4874 let end_offset = offset + bytes_len;
4875 _next_ordinal_to_read += 1;
4876 if next_offset >= end_offset {
4877 return Ok(());
4878 }
4879
4880 while _next_ordinal_to_read < 1 {
4882 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4883 _next_ordinal_to_read += 1;
4884 next_offset += envelope_size;
4885 }
4886
4887 let next_out_of_line = decoder.next_out_of_line();
4888 let handles_before = decoder.remaining_handles();
4889 if let Some((inlined, num_bytes, num_handles)) =
4890 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4891 {
4892 let member_inline_size =
4893 <ChildSource as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4894 if inlined != (member_inline_size <= 4) {
4895 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4896 }
4897 let inner_offset;
4898 let mut inner_depth = depth.clone();
4899 if inlined {
4900 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4901 inner_offset = next_offset;
4902 } else {
4903 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4904 inner_depth.increment()?;
4905 }
4906 let val_ref = self.source.get_or_insert_with(|| {
4907 fidl::new_empty!(ChildSource, fidl::encoding::DefaultFuchsiaResourceDialect)
4908 });
4909 fidl::decode!(
4910 ChildSource,
4911 fidl::encoding::DefaultFuchsiaResourceDialect,
4912 val_ref,
4913 decoder,
4914 inner_offset,
4915 inner_depth
4916 )?;
4917 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4918 {
4919 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4920 }
4921 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4922 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4923 }
4924 }
4925
4926 next_offset += envelope_size;
4927 _next_ordinal_to_read += 1;
4928 if next_offset >= end_offset {
4929 return Ok(());
4930 }
4931
4932 while _next_ordinal_to_read < 2 {
4934 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4935 _next_ordinal_to_read += 1;
4936 next_offset += envelope_size;
4937 }
4938
4939 let next_out_of_line = decoder.next_out_of_line();
4940 let handles_before = decoder.remaining_handles();
4941 if let Some((inlined, num_bytes, num_handles)) =
4942 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4943 {
4944 let member_inline_size =
4945 <fidl::encoding::BoundedString<255> as fidl::encoding::TypeMarker>::inline_size(
4946 decoder.context,
4947 );
4948 if inlined != (member_inline_size <= 4) {
4949 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4950 }
4951 let inner_offset;
4952 let mut inner_depth = depth.clone();
4953 if inlined {
4954 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4955 inner_offset = next_offset;
4956 } else {
4957 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4958 inner_depth.increment()?;
4959 }
4960 let val_ref = self.name.get_or_insert_with(|| {
4961 fidl::new_empty!(
4962 fidl::encoding::BoundedString<255>,
4963 fidl::encoding::DefaultFuchsiaResourceDialect
4964 )
4965 });
4966 fidl::decode!(
4967 fidl::encoding::BoundedString<255>,
4968 fidl::encoding::DefaultFuchsiaResourceDialect,
4969 val_ref,
4970 decoder,
4971 inner_offset,
4972 inner_depth
4973 )?;
4974 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4975 {
4976 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4977 }
4978 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4979 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4980 }
4981 }
4982
4983 next_offset += envelope_size;
4984 _next_ordinal_to_read += 1;
4985 if next_offset >= end_offset {
4986 return Ok(());
4987 }
4988
4989 while _next_ordinal_to_read < 3 {
4991 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4992 _next_ordinal_to_read += 1;
4993 next_offset += envelope_size;
4994 }
4995
4996 let next_out_of_line = decoder.next_out_of_line();
4997 let handles_before = decoder.remaining_handles();
4998 if let Some((inlined, num_bytes, num_handles)) =
4999 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5000 {
5001 let member_inline_size = <fidl::encoding::UnboundedVector<
5002 fidl::encoding::BoundedString<255>,
5003 > as fidl::encoding::TypeMarker>::inline_size(
5004 decoder.context
5005 );
5006 if inlined != (member_inline_size <= 4) {
5007 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5008 }
5009 let inner_offset;
5010 let mut inner_depth = depth.clone();
5011 if inlined {
5012 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5013 inner_offset = next_offset;
5014 } else {
5015 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5016 inner_depth.increment()?;
5017 }
5018 let val_ref = self.exposes.get_or_insert_with(|| {
5019 fidl::new_empty!(
5020 fidl::encoding::UnboundedVector<fidl::encoding::BoundedString<255>>,
5021 fidl::encoding::DefaultFuchsiaResourceDialect
5022 )
5023 });
5024 fidl::decode!(
5025 fidl::encoding::UnboundedVector<fidl::encoding::BoundedString<255>>,
5026 fidl::encoding::DefaultFuchsiaResourceDialect,
5027 val_ref,
5028 decoder,
5029 inner_offset,
5030 inner_depth
5031 )?;
5032 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5033 {
5034 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5035 }
5036 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5037 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5038 }
5039 }
5040
5041 next_offset += envelope_size;
5042 _next_ordinal_to_read += 1;
5043 if next_offset >= end_offset {
5044 return Ok(());
5045 }
5046
5047 while _next_ordinal_to_read < 4 {
5049 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5050 _next_ordinal_to_read += 1;
5051 next_offset += envelope_size;
5052 }
5053
5054 let next_out_of_line = decoder.next_out_of_line();
5055 let handles_before = decoder.remaining_handles();
5056 if let Some((inlined, num_bytes, num_handles)) =
5057 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5058 {
5059 let member_inline_size =
5060 <ChildUses as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5061 if inlined != (member_inline_size <= 4) {
5062 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5063 }
5064 let inner_offset;
5065 let mut inner_depth = depth.clone();
5066 if inlined {
5067 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5068 inner_offset = next_offset;
5069 } else {
5070 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5071 inner_depth.increment()?;
5072 }
5073 let val_ref = self.uses.get_or_insert_with(|| {
5074 fidl::new_empty!(ChildUses, fidl::encoding::DefaultFuchsiaResourceDialect)
5075 });
5076 fidl::decode!(
5077 ChildUses,
5078 fidl::encoding::DefaultFuchsiaResourceDialect,
5079 val_ref,
5080 decoder,
5081 inner_offset,
5082 inner_depth
5083 )?;
5084 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5085 {
5086 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5087 }
5088 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5089 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5090 }
5091 }
5092
5093 next_offset += envelope_size;
5094 _next_ordinal_to_read += 1;
5095 if next_offset >= end_offset {
5096 return Ok(());
5097 }
5098
5099 while _next_ordinal_to_read < 5 {
5101 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5102 _next_ordinal_to_read += 1;
5103 next_offset += envelope_size;
5104 }
5105
5106 let next_out_of_line = decoder.next_out_of_line();
5107 let handles_before = decoder.remaining_handles();
5108 if let Some((inlined, num_bytes, num_handles)) =
5109 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5110 {
5111 let member_inline_size = <fidl::encoding::UnboundedVector<
5112 fidl::encoding::UnboundedString,
5113 > as fidl::encoding::TypeMarker>::inline_size(
5114 decoder.context
5115 );
5116 if inlined != (member_inline_size <= 4) {
5117 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5118 }
5119 let inner_offset;
5120 let mut inner_depth = depth.clone();
5121 if inlined {
5122 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5123 inner_offset = next_offset;
5124 } else {
5125 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5126 inner_depth.increment()?;
5127 }
5128 let val_ref = self.program_args.get_or_insert_with(|| {
5129 fidl::new_empty!(
5130 fidl::encoding::UnboundedVector<fidl::encoding::UnboundedString>,
5131 fidl::encoding::DefaultFuchsiaResourceDialect
5132 )
5133 });
5134 fidl::decode!(
5135 fidl::encoding::UnboundedVector<fidl::encoding::UnboundedString>,
5136 fidl::encoding::DefaultFuchsiaResourceDialect,
5137 val_ref,
5138 decoder,
5139 inner_offset,
5140 inner_depth
5141 )?;
5142 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5143 {
5144 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5145 }
5146 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5147 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5148 }
5149 }
5150
5151 next_offset += envelope_size;
5152 _next_ordinal_to_read += 1;
5153 if next_offset >= end_offset {
5154 return Ok(());
5155 }
5156
5157 while _next_ordinal_to_read < 6 {
5159 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5160 _next_ordinal_to_read += 1;
5161 next_offset += envelope_size;
5162 }
5163
5164 let next_out_of_line = decoder.next_out_of_line();
5165 let handles_before = decoder.remaining_handles();
5166 if let Some((inlined, num_bytes, num_handles)) =
5167 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5168 {
5169 let member_inline_size =
5170 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5171 if inlined != (member_inline_size <= 4) {
5172 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5173 }
5174 let inner_offset;
5175 let mut inner_depth = depth.clone();
5176 if inlined {
5177 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5178 inner_offset = next_offset;
5179 } else {
5180 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5181 inner_depth.increment()?;
5182 }
5183 let val_ref = self.eager.get_or_insert_with(|| {
5184 fidl::new_empty!(bool, fidl::encoding::DefaultFuchsiaResourceDialect)
5185 });
5186 fidl::decode!(
5187 bool,
5188 fidl::encoding::DefaultFuchsiaResourceDialect,
5189 val_ref,
5190 decoder,
5191 inner_offset,
5192 inner_depth
5193 )?;
5194 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5195 {
5196 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5197 }
5198 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5199 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5200 }
5201 }
5202
5203 next_offset += envelope_size;
5204 _next_ordinal_to_read += 1;
5205 if next_offset >= end_offset {
5206 return Ok(());
5207 }
5208
5209 while _next_ordinal_to_read < 7 {
5211 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5212 _next_ordinal_to_read += 1;
5213 next_offset += envelope_size;
5214 }
5215
5216 let next_out_of_line = decoder.next_out_of_line();
5217 let handles_before = decoder.remaining_handles();
5218 if let Some((inlined, num_bytes, num_handles)) =
5219 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5220 {
5221 let member_inline_size = <fidl::encoding::UnboundedVector<ChildConfigValue> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5222 if inlined != (member_inline_size <= 4) {
5223 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5224 }
5225 let inner_offset;
5226 let mut inner_depth = depth.clone();
5227 if inlined {
5228 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5229 inner_offset = next_offset;
5230 } else {
5231 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5232 inner_depth.increment()?;
5233 }
5234 let val_ref = self.config_values.get_or_insert_with(|| {
5235 fidl::new_empty!(
5236 fidl::encoding::UnboundedVector<ChildConfigValue>,
5237 fidl::encoding::DefaultFuchsiaResourceDialect
5238 )
5239 });
5240 fidl::decode!(
5241 fidl::encoding::UnboundedVector<ChildConfigValue>,
5242 fidl::encoding::DefaultFuchsiaResourceDialect,
5243 val_ref,
5244 decoder,
5245 inner_offset,
5246 inner_depth
5247 )?;
5248 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5249 {
5250 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5251 }
5252 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5253 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5254 }
5255 }
5256
5257 next_offset += envelope_size;
5258
5259 while next_offset < end_offset {
5261 _next_ordinal_to_read += 1;
5262 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5263 next_offset += envelope_size;
5264 }
5265
5266 Ok(())
5267 }
5268 }
5269
5270 impl InterfaceOptions {
5271 #[inline(always)]
5272 fn max_ordinal_present(&self) -> u64 {
5273 if let Some(_) = self.ipv6_multicast_neighbor_solicitations {
5274 return 9;
5275 }
5276 if let Some(_) = self.ipv4_multicast_neighbor_solicitations {
5277 return 8;
5278 }
5279 if let Some(_) = self.enable_ipv6_forwarding {
5280 return 7;
5281 }
5282 if let Some(_) = self.enable_ipv4_forwarding {
5283 return 6;
5284 }
5285 if let Some(_) = self.gateway {
5286 return 5;
5287 }
5288 if let Some(_) = self.static_ips {
5289 return 4;
5290 }
5291 if let Some(_) = self.without_autogenerated_addresses {
5292 return 3;
5293 }
5294 if let Some(_) = self.device {
5295 return 2;
5296 }
5297 if let Some(_) = self.name {
5298 return 1;
5299 }
5300 0
5301 }
5302 }
5303
5304 impl fidl::encoding::ResourceTypeMarker for InterfaceOptions {
5305 type Borrowed<'a> = &'a mut Self;
5306 fn take_or_borrow<'a>(
5307 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
5308 ) -> Self::Borrowed<'a> {
5309 value
5310 }
5311 }
5312
5313 unsafe impl fidl::encoding::TypeMarker for InterfaceOptions {
5314 type Owned = Self;
5315
5316 #[inline(always)]
5317 fn inline_align(_context: fidl::encoding::Context) -> usize {
5318 8
5319 }
5320
5321 #[inline(always)]
5322 fn inline_size(_context: fidl::encoding::Context) -> usize {
5323 16
5324 }
5325 }
5326
5327 unsafe impl
5328 fidl::encoding::Encode<InterfaceOptions, fidl::encoding::DefaultFuchsiaResourceDialect>
5329 for &mut InterfaceOptions
5330 {
5331 unsafe fn encode(
5332 self,
5333 encoder: &mut fidl::encoding::Encoder<
5334 '_,
5335 fidl::encoding::DefaultFuchsiaResourceDialect,
5336 >,
5337 offset: usize,
5338 mut depth: fidl::encoding::Depth,
5339 ) -> fidl::Result<()> {
5340 encoder.debug_check_bounds::<InterfaceOptions>(offset);
5341 let max_ordinal: u64 = self.max_ordinal_present();
5343 encoder.write_num(max_ordinal, offset);
5344 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
5345 if max_ordinal == 0 {
5347 return Ok(());
5348 }
5349 depth.increment()?;
5350 let envelope_size = 8;
5351 let bytes_len = max_ordinal as usize * envelope_size;
5352 #[allow(unused_variables)]
5353 let offset = encoder.out_of_line_offset(bytes_len);
5354 let mut _prev_end_offset: usize = 0;
5355 if 1 > max_ordinal {
5356 return Ok(());
5357 }
5358
5359 let cur_offset: usize = (1 - 1) * envelope_size;
5362
5363 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5365
5366 fidl::encoding::encode_in_envelope_optional::<
5371 fidl::encoding::UnboundedString,
5372 fidl::encoding::DefaultFuchsiaResourceDialect,
5373 >(
5374 self.name.as_ref().map(
5375 <fidl::encoding::UnboundedString as fidl::encoding::ValueTypeMarker>::borrow,
5376 ),
5377 encoder,
5378 offset + cur_offset,
5379 depth,
5380 )?;
5381
5382 _prev_end_offset = cur_offset + envelope_size;
5383 if 2 > max_ordinal {
5384 return Ok(());
5385 }
5386
5387 let cur_offset: usize = (2 - 1) * envelope_size;
5390
5391 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5393
5394 fidl::encoding::encode_in_envelope_optional::<
5399 fidl::encoding::Endpoint<
5400 fidl::endpoints::ClientEnd<fidl_fuchsia_hardware_network::PortMarker>,
5401 >,
5402 fidl::encoding::DefaultFuchsiaResourceDialect,
5403 >(
5404 self.device.as_mut().map(
5405 <fidl::encoding::Endpoint<
5406 fidl::endpoints::ClientEnd<fidl_fuchsia_hardware_network::PortMarker>,
5407 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow,
5408 ),
5409 encoder,
5410 offset + cur_offset,
5411 depth,
5412 )?;
5413
5414 _prev_end_offset = cur_offset + envelope_size;
5415 if 3 > max_ordinal {
5416 return Ok(());
5417 }
5418
5419 let cur_offset: usize = (3 - 1) * envelope_size;
5422
5423 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5425
5426 fidl::encoding::encode_in_envelope_optional::<
5431 bool,
5432 fidl::encoding::DefaultFuchsiaResourceDialect,
5433 >(
5434 self.without_autogenerated_addresses
5435 .as_ref()
5436 .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
5437 encoder,
5438 offset + cur_offset,
5439 depth,
5440 )?;
5441
5442 _prev_end_offset = cur_offset + envelope_size;
5443 if 4 > max_ordinal {
5444 return Ok(());
5445 }
5446
5447 let cur_offset: usize = (4 - 1) * envelope_size;
5450
5451 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5453
5454 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<fidl_fuchsia_net::Subnet>, fidl::encoding::DefaultFuchsiaResourceDialect>(
5459 self.static_ips.as_ref().map(<fidl::encoding::UnboundedVector<fidl_fuchsia_net::Subnet> as fidl::encoding::ValueTypeMarker>::borrow),
5460 encoder, offset + cur_offset, depth
5461 )?;
5462
5463 _prev_end_offset = cur_offset + envelope_size;
5464 if 5 > max_ordinal {
5465 return Ok(());
5466 }
5467
5468 let cur_offset: usize = (5 - 1) * envelope_size;
5471
5472 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5474
5475 fidl::encoding::encode_in_envelope_optional::<
5480 fidl_fuchsia_net::IpAddress,
5481 fidl::encoding::DefaultFuchsiaResourceDialect,
5482 >(
5483 self.gateway
5484 .as_ref()
5485 .map(<fidl_fuchsia_net::IpAddress as fidl::encoding::ValueTypeMarker>::borrow),
5486 encoder,
5487 offset + cur_offset,
5488 depth,
5489 )?;
5490
5491 _prev_end_offset = cur_offset + envelope_size;
5492 if 6 > max_ordinal {
5493 return Ok(());
5494 }
5495
5496 let cur_offset: usize = (6 - 1) * envelope_size;
5499
5500 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5502
5503 fidl::encoding::encode_in_envelope_optional::<
5508 bool,
5509 fidl::encoding::DefaultFuchsiaResourceDialect,
5510 >(
5511 self.enable_ipv4_forwarding
5512 .as_ref()
5513 .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
5514 encoder,
5515 offset + cur_offset,
5516 depth,
5517 )?;
5518
5519 _prev_end_offset = cur_offset + envelope_size;
5520 if 7 > max_ordinal {
5521 return Ok(());
5522 }
5523
5524 let cur_offset: usize = (7 - 1) * envelope_size;
5527
5528 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5530
5531 fidl::encoding::encode_in_envelope_optional::<
5536 bool,
5537 fidl::encoding::DefaultFuchsiaResourceDialect,
5538 >(
5539 self.enable_ipv6_forwarding
5540 .as_ref()
5541 .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
5542 encoder,
5543 offset + cur_offset,
5544 depth,
5545 )?;
5546
5547 _prev_end_offset = cur_offset + envelope_size;
5548 if 8 > max_ordinal {
5549 return Ok(());
5550 }
5551
5552 let cur_offset: usize = (8 - 1) * envelope_size;
5555
5556 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5558
5559 fidl::encoding::encode_in_envelope_optional::<
5564 u16,
5565 fidl::encoding::DefaultFuchsiaResourceDialect,
5566 >(
5567 self.ipv4_multicast_neighbor_solicitations
5568 .as_ref()
5569 .map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
5570 encoder,
5571 offset + cur_offset,
5572 depth,
5573 )?;
5574
5575 _prev_end_offset = cur_offset + envelope_size;
5576 if 9 > max_ordinal {
5577 return Ok(());
5578 }
5579
5580 let cur_offset: usize = (9 - 1) * envelope_size;
5583
5584 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5586
5587 fidl::encoding::encode_in_envelope_optional::<
5592 u16,
5593 fidl::encoding::DefaultFuchsiaResourceDialect,
5594 >(
5595 self.ipv6_multicast_neighbor_solicitations
5596 .as_ref()
5597 .map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
5598 encoder,
5599 offset + cur_offset,
5600 depth,
5601 )?;
5602
5603 _prev_end_offset = cur_offset + envelope_size;
5604
5605 Ok(())
5606 }
5607 }
5608
5609 impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
5610 for InterfaceOptions
5611 {
5612 #[inline(always)]
5613 fn new_empty() -> Self {
5614 Self::default()
5615 }
5616
5617 unsafe fn decode(
5618 &mut self,
5619 decoder: &mut fidl::encoding::Decoder<
5620 '_,
5621 fidl::encoding::DefaultFuchsiaResourceDialect,
5622 >,
5623 offset: usize,
5624 mut depth: fidl::encoding::Depth,
5625 ) -> fidl::Result<()> {
5626 decoder.debug_check_bounds::<Self>(offset);
5627 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
5628 None => return Err(fidl::Error::NotNullable),
5629 Some(len) => len,
5630 };
5631 if len == 0 {
5633 return Ok(());
5634 };
5635 depth.increment()?;
5636 let envelope_size = 8;
5637 let bytes_len = len * envelope_size;
5638 let offset = decoder.out_of_line_offset(bytes_len)?;
5639 let mut _next_ordinal_to_read = 0;
5641 let mut next_offset = offset;
5642 let end_offset = offset + bytes_len;
5643 _next_ordinal_to_read += 1;
5644 if next_offset >= end_offset {
5645 return Ok(());
5646 }
5647
5648 while _next_ordinal_to_read < 1 {
5650 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5651 _next_ordinal_to_read += 1;
5652 next_offset += envelope_size;
5653 }
5654
5655 let next_out_of_line = decoder.next_out_of_line();
5656 let handles_before = decoder.remaining_handles();
5657 if let Some((inlined, num_bytes, num_handles)) =
5658 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5659 {
5660 let member_inline_size =
5661 <fidl::encoding::UnboundedString as fidl::encoding::TypeMarker>::inline_size(
5662 decoder.context,
5663 );
5664 if inlined != (member_inline_size <= 4) {
5665 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5666 }
5667 let inner_offset;
5668 let mut inner_depth = depth.clone();
5669 if inlined {
5670 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5671 inner_offset = next_offset;
5672 } else {
5673 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5674 inner_depth.increment()?;
5675 }
5676 let val_ref = self.name.get_or_insert_with(|| {
5677 fidl::new_empty!(
5678 fidl::encoding::UnboundedString,
5679 fidl::encoding::DefaultFuchsiaResourceDialect
5680 )
5681 });
5682 fidl::decode!(
5683 fidl::encoding::UnboundedString,
5684 fidl::encoding::DefaultFuchsiaResourceDialect,
5685 val_ref,
5686 decoder,
5687 inner_offset,
5688 inner_depth
5689 )?;
5690 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5691 {
5692 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5693 }
5694 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5695 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5696 }
5697 }
5698
5699 next_offset += envelope_size;
5700 _next_ordinal_to_read += 1;
5701 if next_offset >= end_offset {
5702 return Ok(());
5703 }
5704
5705 while _next_ordinal_to_read < 2 {
5707 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5708 _next_ordinal_to_read += 1;
5709 next_offset += envelope_size;
5710 }
5711
5712 let next_out_of_line = decoder.next_out_of_line();
5713 let handles_before = decoder.remaining_handles();
5714 if let Some((inlined, num_bytes, num_handles)) =
5715 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5716 {
5717 let member_inline_size = <fidl::encoding::Endpoint<
5718 fidl::endpoints::ClientEnd<fidl_fuchsia_hardware_network::PortMarker>,
5719 > as fidl::encoding::TypeMarker>::inline_size(
5720 decoder.context
5721 );
5722 if inlined != (member_inline_size <= 4) {
5723 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5724 }
5725 let inner_offset;
5726 let mut inner_depth = depth.clone();
5727 if inlined {
5728 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5729 inner_offset = next_offset;
5730 } else {
5731 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5732 inner_depth.increment()?;
5733 }
5734 let val_ref = self.device.get_or_insert_with(|| {
5735 fidl::new_empty!(
5736 fidl::encoding::Endpoint<
5737 fidl::endpoints::ClientEnd<fidl_fuchsia_hardware_network::PortMarker>,
5738 >,
5739 fidl::encoding::DefaultFuchsiaResourceDialect
5740 )
5741 });
5742 fidl::decode!(
5743 fidl::encoding::Endpoint<
5744 fidl::endpoints::ClientEnd<fidl_fuchsia_hardware_network::PortMarker>,
5745 >,
5746 fidl::encoding::DefaultFuchsiaResourceDialect,
5747 val_ref,
5748 decoder,
5749 inner_offset,
5750 inner_depth
5751 )?;
5752 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5753 {
5754 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5755 }
5756 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5757 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5758 }
5759 }
5760
5761 next_offset += envelope_size;
5762 _next_ordinal_to_read += 1;
5763 if next_offset >= end_offset {
5764 return Ok(());
5765 }
5766
5767 while _next_ordinal_to_read < 3 {
5769 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5770 _next_ordinal_to_read += 1;
5771 next_offset += envelope_size;
5772 }
5773
5774 let next_out_of_line = decoder.next_out_of_line();
5775 let handles_before = decoder.remaining_handles();
5776 if let Some((inlined, num_bytes, num_handles)) =
5777 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5778 {
5779 let member_inline_size =
5780 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5781 if inlined != (member_inline_size <= 4) {
5782 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5783 }
5784 let inner_offset;
5785 let mut inner_depth = depth.clone();
5786 if inlined {
5787 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5788 inner_offset = next_offset;
5789 } else {
5790 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5791 inner_depth.increment()?;
5792 }
5793 let val_ref = self.without_autogenerated_addresses.get_or_insert_with(|| {
5794 fidl::new_empty!(bool, fidl::encoding::DefaultFuchsiaResourceDialect)
5795 });
5796 fidl::decode!(
5797 bool,
5798 fidl::encoding::DefaultFuchsiaResourceDialect,
5799 val_ref,
5800 decoder,
5801 inner_offset,
5802 inner_depth
5803 )?;
5804 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5805 {
5806 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5807 }
5808 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5809 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5810 }
5811 }
5812
5813 next_offset += envelope_size;
5814 _next_ordinal_to_read += 1;
5815 if next_offset >= end_offset {
5816 return Ok(());
5817 }
5818
5819 while _next_ordinal_to_read < 4 {
5821 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5822 _next_ordinal_to_read += 1;
5823 next_offset += envelope_size;
5824 }
5825
5826 let next_out_of_line = decoder.next_out_of_line();
5827 let handles_before = decoder.remaining_handles();
5828 if let Some((inlined, num_bytes, num_handles)) =
5829 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5830 {
5831 let member_inline_size = <fidl::encoding::UnboundedVector<fidl_fuchsia_net::Subnet> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5832 if inlined != (member_inline_size <= 4) {
5833 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5834 }
5835 let inner_offset;
5836 let mut inner_depth = depth.clone();
5837 if inlined {
5838 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5839 inner_offset = next_offset;
5840 } else {
5841 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5842 inner_depth.increment()?;
5843 }
5844 let val_ref = self.static_ips.get_or_insert_with(|| {
5845 fidl::new_empty!(
5846 fidl::encoding::UnboundedVector<fidl_fuchsia_net::Subnet>,
5847 fidl::encoding::DefaultFuchsiaResourceDialect
5848 )
5849 });
5850 fidl::decode!(
5851 fidl::encoding::UnboundedVector<fidl_fuchsia_net::Subnet>,
5852 fidl::encoding::DefaultFuchsiaResourceDialect,
5853 val_ref,
5854 decoder,
5855 inner_offset,
5856 inner_depth
5857 )?;
5858 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5859 {
5860 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5861 }
5862 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5863 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5864 }
5865 }
5866
5867 next_offset += envelope_size;
5868 _next_ordinal_to_read += 1;
5869 if next_offset >= end_offset {
5870 return Ok(());
5871 }
5872
5873 while _next_ordinal_to_read < 5 {
5875 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5876 _next_ordinal_to_read += 1;
5877 next_offset += envelope_size;
5878 }
5879
5880 let next_out_of_line = decoder.next_out_of_line();
5881 let handles_before = decoder.remaining_handles();
5882 if let Some((inlined, num_bytes, num_handles)) =
5883 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5884 {
5885 let member_inline_size =
5886 <fidl_fuchsia_net::IpAddress as fidl::encoding::TypeMarker>::inline_size(
5887 decoder.context,
5888 );
5889 if inlined != (member_inline_size <= 4) {
5890 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5891 }
5892 let inner_offset;
5893 let mut inner_depth = depth.clone();
5894 if inlined {
5895 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5896 inner_offset = next_offset;
5897 } else {
5898 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5899 inner_depth.increment()?;
5900 }
5901 let val_ref = self.gateway.get_or_insert_with(|| {
5902 fidl::new_empty!(
5903 fidl_fuchsia_net::IpAddress,
5904 fidl::encoding::DefaultFuchsiaResourceDialect
5905 )
5906 });
5907 fidl::decode!(
5908 fidl_fuchsia_net::IpAddress,
5909 fidl::encoding::DefaultFuchsiaResourceDialect,
5910 val_ref,
5911 decoder,
5912 inner_offset,
5913 inner_depth
5914 )?;
5915 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5916 {
5917 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5918 }
5919 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5920 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5921 }
5922 }
5923
5924 next_offset += envelope_size;
5925 _next_ordinal_to_read += 1;
5926 if next_offset >= end_offset {
5927 return Ok(());
5928 }
5929
5930 while _next_ordinal_to_read < 6 {
5932 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5933 _next_ordinal_to_read += 1;
5934 next_offset += envelope_size;
5935 }
5936
5937 let next_out_of_line = decoder.next_out_of_line();
5938 let handles_before = decoder.remaining_handles();
5939 if let Some((inlined, num_bytes, num_handles)) =
5940 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5941 {
5942 let member_inline_size =
5943 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5944 if inlined != (member_inline_size <= 4) {
5945 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5946 }
5947 let inner_offset;
5948 let mut inner_depth = depth.clone();
5949 if inlined {
5950 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5951 inner_offset = next_offset;
5952 } else {
5953 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5954 inner_depth.increment()?;
5955 }
5956 let val_ref = self.enable_ipv4_forwarding.get_or_insert_with(|| {
5957 fidl::new_empty!(bool, fidl::encoding::DefaultFuchsiaResourceDialect)
5958 });
5959 fidl::decode!(
5960 bool,
5961 fidl::encoding::DefaultFuchsiaResourceDialect,
5962 val_ref,
5963 decoder,
5964 inner_offset,
5965 inner_depth
5966 )?;
5967 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5968 {
5969 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5970 }
5971 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5972 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5973 }
5974 }
5975
5976 next_offset += envelope_size;
5977 _next_ordinal_to_read += 1;
5978 if next_offset >= end_offset {
5979 return Ok(());
5980 }
5981
5982 while _next_ordinal_to_read < 7 {
5984 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5985 _next_ordinal_to_read += 1;
5986 next_offset += envelope_size;
5987 }
5988
5989 let next_out_of_line = decoder.next_out_of_line();
5990 let handles_before = decoder.remaining_handles();
5991 if let Some((inlined, num_bytes, num_handles)) =
5992 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5993 {
5994 let member_inline_size =
5995 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5996 if inlined != (member_inline_size <= 4) {
5997 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5998 }
5999 let inner_offset;
6000 let mut inner_depth = depth.clone();
6001 if inlined {
6002 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6003 inner_offset = next_offset;
6004 } else {
6005 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6006 inner_depth.increment()?;
6007 }
6008 let val_ref = self.enable_ipv6_forwarding.get_or_insert_with(|| {
6009 fidl::new_empty!(bool, fidl::encoding::DefaultFuchsiaResourceDialect)
6010 });
6011 fidl::decode!(
6012 bool,
6013 fidl::encoding::DefaultFuchsiaResourceDialect,
6014 val_ref,
6015 decoder,
6016 inner_offset,
6017 inner_depth
6018 )?;
6019 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6020 {
6021 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6022 }
6023 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6024 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6025 }
6026 }
6027
6028 next_offset += envelope_size;
6029 _next_ordinal_to_read += 1;
6030 if next_offset >= end_offset {
6031 return Ok(());
6032 }
6033
6034 while _next_ordinal_to_read < 8 {
6036 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6037 _next_ordinal_to_read += 1;
6038 next_offset += envelope_size;
6039 }
6040
6041 let next_out_of_line = decoder.next_out_of_line();
6042 let handles_before = decoder.remaining_handles();
6043 if let Some((inlined, num_bytes, num_handles)) =
6044 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6045 {
6046 let member_inline_size =
6047 <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6048 if inlined != (member_inline_size <= 4) {
6049 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6050 }
6051 let inner_offset;
6052 let mut inner_depth = depth.clone();
6053 if inlined {
6054 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6055 inner_offset = next_offset;
6056 } else {
6057 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6058 inner_depth.increment()?;
6059 }
6060 let val_ref = self.ipv4_multicast_neighbor_solicitations.get_or_insert_with(|| {
6061 fidl::new_empty!(u16, fidl::encoding::DefaultFuchsiaResourceDialect)
6062 });
6063 fidl::decode!(
6064 u16,
6065 fidl::encoding::DefaultFuchsiaResourceDialect,
6066 val_ref,
6067 decoder,
6068 inner_offset,
6069 inner_depth
6070 )?;
6071 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6072 {
6073 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6074 }
6075 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6076 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6077 }
6078 }
6079
6080 next_offset += envelope_size;
6081 _next_ordinal_to_read += 1;
6082 if next_offset >= end_offset {
6083 return Ok(());
6084 }
6085
6086 while _next_ordinal_to_read < 9 {
6088 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6089 _next_ordinal_to_read += 1;
6090 next_offset += envelope_size;
6091 }
6092
6093 let next_out_of_line = decoder.next_out_of_line();
6094 let handles_before = decoder.remaining_handles();
6095 if let Some((inlined, num_bytes, num_handles)) =
6096 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6097 {
6098 let member_inline_size =
6099 <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6100 if inlined != (member_inline_size <= 4) {
6101 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6102 }
6103 let inner_offset;
6104 let mut inner_depth = depth.clone();
6105 if inlined {
6106 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6107 inner_offset = next_offset;
6108 } else {
6109 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6110 inner_depth.increment()?;
6111 }
6112 let val_ref = self.ipv6_multicast_neighbor_solicitations.get_or_insert_with(|| {
6113 fidl::new_empty!(u16, fidl::encoding::DefaultFuchsiaResourceDialect)
6114 });
6115 fidl::decode!(
6116 u16,
6117 fidl::encoding::DefaultFuchsiaResourceDialect,
6118 val_ref,
6119 decoder,
6120 inner_offset,
6121 inner_depth
6122 )?;
6123 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6124 {
6125 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6126 }
6127 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6128 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6129 }
6130 }
6131
6132 next_offset += envelope_size;
6133
6134 while next_offset < end_offset {
6136 _next_ordinal_to_read += 1;
6137 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6138 next_offset += envelope_size;
6139 }
6140
6141 Ok(())
6142 }
6143 }
6144
6145 impl RealmOptions {
6146 #[inline(always)]
6147 fn max_ordinal_present(&self) -> u64 {
6148 if let Some(_) = self.children {
6149 return 2;
6150 }
6151 if let Some(_) = self.name {
6152 return 1;
6153 }
6154 0
6155 }
6156 }
6157
6158 impl fidl::encoding::ResourceTypeMarker for RealmOptions {
6159 type Borrowed<'a> = &'a mut Self;
6160 fn take_or_borrow<'a>(
6161 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
6162 ) -> Self::Borrowed<'a> {
6163 value
6164 }
6165 }
6166
6167 unsafe impl fidl::encoding::TypeMarker for RealmOptions {
6168 type Owned = Self;
6169
6170 #[inline(always)]
6171 fn inline_align(_context: fidl::encoding::Context) -> usize {
6172 8
6173 }
6174
6175 #[inline(always)]
6176 fn inline_size(_context: fidl::encoding::Context) -> usize {
6177 16
6178 }
6179 }
6180
6181 unsafe impl fidl::encoding::Encode<RealmOptions, fidl::encoding::DefaultFuchsiaResourceDialect>
6182 for &mut RealmOptions
6183 {
6184 unsafe fn encode(
6185 self,
6186 encoder: &mut fidl::encoding::Encoder<
6187 '_,
6188 fidl::encoding::DefaultFuchsiaResourceDialect,
6189 >,
6190 offset: usize,
6191 mut depth: fidl::encoding::Depth,
6192 ) -> fidl::Result<()> {
6193 encoder.debug_check_bounds::<RealmOptions>(offset);
6194 let max_ordinal: u64 = self.max_ordinal_present();
6196 encoder.write_num(max_ordinal, offset);
6197 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
6198 if max_ordinal == 0 {
6200 return Ok(());
6201 }
6202 depth.increment()?;
6203 let envelope_size = 8;
6204 let bytes_len = max_ordinal as usize * envelope_size;
6205 #[allow(unused_variables)]
6206 let offset = encoder.out_of_line_offset(bytes_len);
6207 let mut _prev_end_offset: usize = 0;
6208 if 1 > max_ordinal {
6209 return Ok(());
6210 }
6211
6212 let cur_offset: usize = (1 - 1) * envelope_size;
6215
6216 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6218
6219 fidl::encoding::encode_in_envelope_optional::<
6224 fidl::encoding::UnboundedString,
6225 fidl::encoding::DefaultFuchsiaResourceDialect,
6226 >(
6227 self.name.as_ref().map(
6228 <fidl::encoding::UnboundedString as fidl::encoding::ValueTypeMarker>::borrow,
6229 ),
6230 encoder,
6231 offset + cur_offset,
6232 depth,
6233 )?;
6234
6235 _prev_end_offset = cur_offset + envelope_size;
6236 if 2 > max_ordinal {
6237 return Ok(());
6238 }
6239
6240 let cur_offset: usize = (2 - 1) * envelope_size;
6243
6244 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6246
6247 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<ChildDef>, fidl::encoding::DefaultFuchsiaResourceDialect>(
6252 self.children.as_mut().map(<fidl::encoding::UnboundedVector<ChildDef> as fidl::encoding::ResourceTypeMarker>::take_or_borrow),
6253 encoder, offset + cur_offset, depth
6254 )?;
6255
6256 _prev_end_offset = cur_offset + envelope_size;
6257
6258 Ok(())
6259 }
6260 }
6261
6262 impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect> for RealmOptions {
6263 #[inline(always)]
6264 fn new_empty() -> Self {
6265 Self::default()
6266 }
6267
6268 unsafe fn decode(
6269 &mut self,
6270 decoder: &mut fidl::encoding::Decoder<
6271 '_,
6272 fidl::encoding::DefaultFuchsiaResourceDialect,
6273 >,
6274 offset: usize,
6275 mut depth: fidl::encoding::Depth,
6276 ) -> fidl::Result<()> {
6277 decoder.debug_check_bounds::<Self>(offset);
6278 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
6279 None => return Err(fidl::Error::NotNullable),
6280 Some(len) => len,
6281 };
6282 if len == 0 {
6284 return Ok(());
6285 };
6286 depth.increment()?;
6287 let envelope_size = 8;
6288 let bytes_len = len * envelope_size;
6289 let offset = decoder.out_of_line_offset(bytes_len)?;
6290 let mut _next_ordinal_to_read = 0;
6292 let mut next_offset = offset;
6293 let end_offset = offset + bytes_len;
6294 _next_ordinal_to_read += 1;
6295 if next_offset >= end_offset {
6296 return Ok(());
6297 }
6298
6299 while _next_ordinal_to_read < 1 {
6301 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6302 _next_ordinal_to_read += 1;
6303 next_offset += envelope_size;
6304 }
6305
6306 let next_out_of_line = decoder.next_out_of_line();
6307 let handles_before = decoder.remaining_handles();
6308 if let Some((inlined, num_bytes, num_handles)) =
6309 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6310 {
6311 let member_inline_size =
6312 <fidl::encoding::UnboundedString as fidl::encoding::TypeMarker>::inline_size(
6313 decoder.context,
6314 );
6315 if inlined != (member_inline_size <= 4) {
6316 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6317 }
6318 let inner_offset;
6319 let mut inner_depth = depth.clone();
6320 if inlined {
6321 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6322 inner_offset = next_offset;
6323 } else {
6324 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6325 inner_depth.increment()?;
6326 }
6327 let val_ref = self.name.get_or_insert_with(|| {
6328 fidl::new_empty!(
6329 fidl::encoding::UnboundedString,
6330 fidl::encoding::DefaultFuchsiaResourceDialect
6331 )
6332 });
6333 fidl::decode!(
6334 fidl::encoding::UnboundedString,
6335 fidl::encoding::DefaultFuchsiaResourceDialect,
6336 val_ref,
6337 decoder,
6338 inner_offset,
6339 inner_depth
6340 )?;
6341 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6342 {
6343 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6344 }
6345 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6346 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6347 }
6348 }
6349
6350 next_offset += envelope_size;
6351 _next_ordinal_to_read += 1;
6352 if next_offset >= end_offset {
6353 return Ok(());
6354 }
6355
6356 while _next_ordinal_to_read < 2 {
6358 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6359 _next_ordinal_to_read += 1;
6360 next_offset += envelope_size;
6361 }
6362
6363 let next_out_of_line = decoder.next_out_of_line();
6364 let handles_before = decoder.remaining_handles();
6365 if let Some((inlined, num_bytes, num_handles)) =
6366 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6367 {
6368 let member_inline_size = <fidl::encoding::UnboundedVector<ChildDef> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6369 if inlined != (member_inline_size <= 4) {
6370 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6371 }
6372 let inner_offset;
6373 let mut inner_depth = depth.clone();
6374 if inlined {
6375 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6376 inner_offset = next_offset;
6377 } else {
6378 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6379 inner_depth.increment()?;
6380 }
6381 let val_ref = self.children.get_or_insert_with(|| {
6382 fidl::new_empty!(
6383 fidl::encoding::UnboundedVector<ChildDef>,
6384 fidl::encoding::DefaultFuchsiaResourceDialect
6385 )
6386 });
6387 fidl::decode!(
6388 fidl::encoding::UnboundedVector<ChildDef>,
6389 fidl::encoding::DefaultFuchsiaResourceDialect,
6390 val_ref,
6391 decoder,
6392 inner_offset,
6393 inner_depth
6394 )?;
6395 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6396 {
6397 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6398 }
6399 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6400 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6401 }
6402 }
6403
6404 next_offset += envelope_size;
6405
6406 while next_offset < end_offset {
6408 _next_ordinal_to_read += 1;
6409 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6410 next_offset += envelope_size;
6411 }
6412
6413 Ok(())
6414 }
6415 }
6416
6417 impl fidl::encoding::ResourceTypeMarker for ChildSource {
6418 type Borrowed<'a> = &'a mut Self;
6419 fn take_or_borrow<'a>(
6420 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
6421 ) -> Self::Borrowed<'a> {
6422 value
6423 }
6424 }
6425
6426 unsafe impl fidl::encoding::TypeMarker for ChildSource {
6427 type Owned = Self;
6428
6429 #[inline(always)]
6430 fn inline_align(_context: fidl::encoding::Context) -> usize {
6431 8
6432 }
6433
6434 #[inline(always)]
6435 fn inline_size(_context: fidl::encoding::Context) -> usize {
6436 16
6437 }
6438 }
6439
6440 unsafe impl fidl::encoding::Encode<ChildSource, fidl::encoding::DefaultFuchsiaResourceDialect>
6441 for &mut ChildSource
6442 {
6443 #[inline]
6444 unsafe fn encode(
6445 self,
6446 encoder: &mut fidl::encoding::Encoder<
6447 '_,
6448 fidl::encoding::DefaultFuchsiaResourceDialect,
6449 >,
6450 offset: usize,
6451 _depth: fidl::encoding::Depth,
6452 ) -> fidl::Result<()> {
6453 encoder.debug_check_bounds::<ChildSource>(offset);
6454 encoder.write_num::<u64>(self.ordinal(), offset);
6455 match self {
6456 ChildSource::Component(ref val) => {
6457 fidl::encoding::encode_in_envelope::<fidl::encoding::BoundedString<4096>, fidl::encoding::DefaultFuchsiaResourceDialect>(
6458 <fidl::encoding::BoundedString<4096> as fidl::encoding::ValueTypeMarker>::borrow(val),
6459 encoder, offset + 8, _depth
6460 )
6461 }
6462 ChildSource::Mock(ref mut val) => {
6463 fidl::encoding::encode_in_envelope::<fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<fidl_fuchsia_io::DirectoryMarker>>, fidl::encoding::DefaultFuchsiaResourceDialect>(
6464 <fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<fidl_fuchsia_io::DirectoryMarker>> as fidl::encoding::ResourceTypeMarker>::take_or_borrow(val),
6465 encoder, offset + 8, _depth
6466 )
6467 }
6468 }
6469 }
6470 }
6471
6472 impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect> for ChildSource {
6473 #[inline(always)]
6474 fn new_empty() -> Self {
6475 Self::Component(fidl::new_empty!(
6476 fidl::encoding::BoundedString<4096>,
6477 fidl::encoding::DefaultFuchsiaResourceDialect
6478 ))
6479 }
6480
6481 #[inline]
6482 unsafe fn decode(
6483 &mut self,
6484 decoder: &mut fidl::encoding::Decoder<
6485 '_,
6486 fidl::encoding::DefaultFuchsiaResourceDialect,
6487 >,
6488 offset: usize,
6489 mut depth: fidl::encoding::Depth,
6490 ) -> fidl::Result<()> {
6491 decoder.debug_check_bounds::<Self>(offset);
6492 #[allow(unused_variables)]
6493 let next_out_of_line = decoder.next_out_of_line();
6494 let handles_before = decoder.remaining_handles();
6495 let (ordinal, inlined, num_bytes, num_handles) =
6496 fidl::encoding::decode_union_inline_portion(decoder, offset)?;
6497
6498 let member_inline_size = match ordinal {
6499 1 => {
6500 <fidl::encoding::BoundedString<4096> as fidl::encoding::TypeMarker>::inline_size(
6501 decoder.context,
6502 )
6503 }
6504 2 => <fidl::encoding::Endpoint<
6505 fidl::endpoints::ClientEnd<fidl_fuchsia_io::DirectoryMarker>,
6506 > as fidl::encoding::TypeMarker>::inline_size(decoder.context),
6507 _ => return Err(fidl::Error::UnknownUnionTag),
6508 };
6509
6510 if inlined != (member_inline_size <= 4) {
6511 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6512 }
6513 let _inner_offset;
6514 if inlined {
6515 decoder.check_inline_envelope_padding(offset + 8, member_inline_size)?;
6516 _inner_offset = offset + 8;
6517 } else {
6518 depth.increment()?;
6519 _inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6520 }
6521 match ordinal {
6522 1 => {
6523 #[allow(irrefutable_let_patterns)]
6524 if let ChildSource::Component(_) = self {
6525 } else {
6527 *self = ChildSource::Component(fidl::new_empty!(
6529 fidl::encoding::BoundedString<4096>,
6530 fidl::encoding::DefaultFuchsiaResourceDialect
6531 ));
6532 }
6533 #[allow(irrefutable_let_patterns)]
6534 if let ChildSource::Component(ref mut val) = self {
6535 fidl::decode!(
6536 fidl::encoding::BoundedString<4096>,
6537 fidl::encoding::DefaultFuchsiaResourceDialect,
6538 val,
6539 decoder,
6540 _inner_offset,
6541 depth
6542 )?;
6543 } else {
6544 unreachable!()
6545 }
6546 }
6547 2 => {
6548 #[allow(irrefutable_let_patterns)]
6549 if let ChildSource::Mock(_) = self {
6550 } else {
6552 *self = ChildSource::Mock(fidl::new_empty!(
6554 fidl::encoding::Endpoint<
6555 fidl::endpoints::ClientEnd<fidl_fuchsia_io::DirectoryMarker>,
6556 >,
6557 fidl::encoding::DefaultFuchsiaResourceDialect
6558 ));
6559 }
6560 #[allow(irrefutable_let_patterns)]
6561 if let ChildSource::Mock(ref mut val) = self {
6562 fidl::decode!(
6563 fidl::encoding::Endpoint<
6564 fidl::endpoints::ClientEnd<fidl_fuchsia_io::DirectoryMarker>,
6565 >,
6566 fidl::encoding::DefaultFuchsiaResourceDialect,
6567 val,
6568 decoder,
6569 _inner_offset,
6570 depth
6571 )?;
6572 } else {
6573 unreachable!()
6574 }
6575 }
6576 ordinal => panic!("unexpected ordinal {:?}", ordinal),
6577 }
6578 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize) {
6579 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6580 }
6581 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6582 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6583 }
6584 Ok(())
6585 }
6586 }
6587}