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 ConfigurableNetstackControlHandle {
635 pub fn shutdown_with_epitaph(&self, status: impl Into<fidl::Epitaph>) {
636 self.inner.shutdown_with_epitaph(status.into())
637 }
638}
639
640impl fidl::endpoints::ControlHandle for ConfigurableNetstackControlHandle {
641 fn shutdown(&self) {
642 self.inner.shutdown()
643 }
644
645 fn shutdown_with_epitaph(&self, status: fidl::Epitaph) {
646 self.inner.shutdown_with_epitaph(status)
647 }
648
649 fn is_closed(&self) -> bool {
650 self.inner.channel().is_closed()
651 }
652 fn on_closed(&self) -> fidl::OnSignalsRef<'_> {
653 self.inner.channel().on_closed()
654 }
655
656 #[cfg(target_os = "fuchsia")]
657 fn signal_peer(
658 &self,
659 clear_mask: zx::Signals,
660 set_mask: zx::Signals,
661 ) -> Result<(), zx_status::Status> {
662 use fidl::Peered;
663 self.inner.channel().signal_peer(clear_mask, set_mask)
664 }
665}
666
667impl ConfigurableNetstackControlHandle {}
668
669#[must_use = "FIDL methods require a response to be sent"]
670#[derive(Debug)]
671pub struct ConfigurableNetstackConfigureInterfaceResponder {
672 control_handle: std::mem::ManuallyDrop<ConfigurableNetstackControlHandle>,
673 tx_id: u32,
674}
675
676impl std::ops::Drop for ConfigurableNetstackConfigureInterfaceResponder {
680 fn drop(&mut self) {
681 self.control_handle.shutdown();
682 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
684 }
685}
686
687impl fidl::endpoints::Responder for ConfigurableNetstackConfigureInterfaceResponder {
688 type ControlHandle = ConfigurableNetstackControlHandle;
689
690 fn control_handle(&self) -> &ConfigurableNetstackControlHandle {
691 &self.control_handle
692 }
693
694 fn drop_without_shutdown(mut self) {
695 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
697 std::mem::forget(self);
699 }
700}
701
702impl ConfigurableNetstackConfigureInterfaceResponder {
703 pub fn send(self, mut result: Result<(), ConfigurationError>) -> Result<(), fidl::Error> {
707 let _result = self.send_raw(result);
708 if _result.is_err() {
709 self.control_handle.shutdown();
710 }
711 self.drop_without_shutdown();
712 _result
713 }
714
715 pub fn send_no_shutdown_on_err(
717 self,
718 mut result: Result<(), ConfigurationError>,
719 ) -> Result<(), fidl::Error> {
720 let _result = self.send_raw(result);
721 self.drop_without_shutdown();
722 _result
723 }
724
725 fn send_raw(&self, mut result: Result<(), ConfigurationError>) -> Result<(), fidl::Error> {
726 self.control_handle.inner.send::<fidl::encoding::ResultType<
727 fidl::encoding::EmptyStruct,
728 ConfigurationError,
729 >>(
730 result,
731 self.tx_id,
732 0x64db8deb981ee49,
733 fidl::encoding::DynamicFlags::empty(),
734 )
735 }
736}
737
738#[derive(Debug, Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash)]
739pub struct CrashListenerMarker;
740
741impl fidl::endpoints::ProtocolMarker for CrashListenerMarker {
742 type Proxy = CrashListenerProxy;
743 type RequestStream = CrashListenerRequestStream;
744 #[cfg(target_os = "fuchsia")]
745 type SynchronousProxy = CrashListenerSynchronousProxy;
746
747 const DEBUG_NAME: &'static str = "(anonymous) CrashListener";
748}
749
750pub trait CrashListenerProxyInterface: Send + Sync {
751 type NextResponseFut: std::future::Future<Output = Result<Vec<String>, fidl::Error>> + Send;
752 fn r#next(&self) -> Self::NextResponseFut;
753}
754#[derive(Debug)]
755#[cfg(target_os = "fuchsia")]
756pub struct CrashListenerSynchronousProxy {
757 client: fidl::client::sync::Client,
758}
759
760#[cfg(target_os = "fuchsia")]
761impl fidl::endpoints::SynchronousProxy for CrashListenerSynchronousProxy {
762 type Proxy = CrashListenerProxy;
763 type Protocol = CrashListenerMarker;
764
765 fn from_channel(inner: fidl::Channel) -> Self {
766 Self::new(inner)
767 }
768
769 fn into_channel(self) -> fidl::Channel {
770 self.client.into_channel()
771 }
772
773 fn as_channel(&self) -> &fidl::Channel {
774 self.client.as_channel()
775 }
776}
777
778#[cfg(target_os = "fuchsia")]
779impl CrashListenerSynchronousProxy {
780 pub fn new(channel: fidl::Channel) -> Self {
781 Self { client: fidl::client::sync::Client::new(channel) }
782 }
783
784 pub fn into_channel(self) -> fidl::Channel {
785 self.client.into_channel()
786 }
787
788 pub fn wait_for_event(
791 &self,
792 deadline: zx::MonotonicInstant,
793 ) -> Result<CrashListenerEvent, fidl::Error> {
794 CrashListenerEvent::decode(self.client.wait_for_event::<CrashListenerMarker>(deadline)?)
795 }
796
797 pub fn r#next(&self, ___deadline: zx::MonotonicInstant) -> Result<Vec<String>, fidl::Error> {
803 let _response = self.client.send_query::<
804 fidl::encoding::EmptyPayload,
805 CrashListenerNextResponse,
806 CrashListenerMarker,
807 >(
808 (),
809 0x4ad26b66c3a90dfb,
810 fidl::encoding::DynamicFlags::empty(),
811 ___deadline,
812 )?;
813 Ok(_response.crashed_monikers)
814 }
815}
816
817#[cfg(target_os = "fuchsia")]
818impl From<CrashListenerSynchronousProxy> for zx::NullableHandle {
819 fn from(value: CrashListenerSynchronousProxy) -> Self {
820 value.into_channel().into()
821 }
822}
823
824#[cfg(target_os = "fuchsia")]
825impl From<fidl::Channel> for CrashListenerSynchronousProxy {
826 fn from(value: fidl::Channel) -> Self {
827 Self::new(value)
828 }
829}
830
831#[cfg(target_os = "fuchsia")]
832impl fidl::endpoints::FromClient for CrashListenerSynchronousProxy {
833 type Protocol = CrashListenerMarker;
834
835 fn from_client(value: fidl::endpoints::ClientEnd<CrashListenerMarker>) -> Self {
836 Self::new(value.into_channel())
837 }
838}
839
840#[derive(Debug, Clone)]
841pub struct CrashListenerProxy {
842 client: fidl::client::Client<fidl::encoding::DefaultFuchsiaResourceDialect>,
843}
844
845impl fidl::endpoints::Proxy for CrashListenerProxy {
846 type Protocol = CrashListenerMarker;
847
848 fn from_channel(inner: ::fidl::AsyncChannel) -> Self {
849 Self::new(inner)
850 }
851
852 fn into_channel(self) -> Result<::fidl::AsyncChannel, Self> {
853 self.client.into_channel().map_err(|client| Self { client })
854 }
855
856 fn as_channel(&self) -> &::fidl::AsyncChannel {
857 self.client.as_channel()
858 }
859}
860
861impl CrashListenerProxy {
862 pub fn new(channel: ::fidl::AsyncChannel) -> Self {
864 let protocol_name = <CrashListenerMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
865 Self { client: fidl::client::Client::new(channel, protocol_name) }
866 }
867
868 pub fn take_event_stream(&self) -> CrashListenerEventStream {
874 CrashListenerEventStream { event_receiver: self.client.take_event_receiver() }
875 }
876
877 pub fn r#next(
883 &self,
884 ) -> fidl::client::QueryResponseFut<Vec<String>, fidl::encoding::DefaultFuchsiaResourceDialect>
885 {
886 CrashListenerProxyInterface::r#next(self)
887 }
888}
889
890impl CrashListenerProxyInterface for CrashListenerProxy {
891 type NextResponseFut =
892 fidl::client::QueryResponseFut<Vec<String>, fidl::encoding::DefaultFuchsiaResourceDialect>;
893 fn r#next(&self) -> Self::NextResponseFut {
894 fn _decode(
895 mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
896 ) -> Result<Vec<String>, fidl::Error> {
897 let _response = fidl::client::decode_transaction_body::<
898 CrashListenerNextResponse,
899 fidl::encoding::DefaultFuchsiaResourceDialect,
900 0x4ad26b66c3a90dfb,
901 >(_buf?)?;
902 Ok(_response.crashed_monikers)
903 }
904 self.client.send_query_and_decode::<fidl::encoding::EmptyPayload, Vec<String>>(
905 (),
906 0x4ad26b66c3a90dfb,
907 fidl::encoding::DynamicFlags::empty(),
908 _decode,
909 )
910 }
911}
912
913pub struct CrashListenerEventStream {
914 event_receiver: fidl::client::EventReceiver<fidl::encoding::DefaultFuchsiaResourceDialect>,
915}
916
917impl std::marker::Unpin for CrashListenerEventStream {}
918
919impl futures::stream::FusedStream for CrashListenerEventStream {
920 fn is_terminated(&self) -> bool {
921 self.event_receiver.is_terminated()
922 }
923}
924
925impl futures::Stream for CrashListenerEventStream {
926 type Item = Result<CrashListenerEvent, fidl::Error>;
927
928 fn poll_next(
929 mut self: std::pin::Pin<&mut Self>,
930 cx: &mut std::task::Context<'_>,
931 ) -> std::task::Poll<Option<Self::Item>> {
932 match futures::ready!(futures::stream::StreamExt::poll_next_unpin(
933 &mut self.event_receiver,
934 cx
935 )?) {
936 Some(buf) => std::task::Poll::Ready(Some(CrashListenerEvent::decode(buf))),
937 None => std::task::Poll::Ready(None),
938 }
939 }
940}
941
942#[derive(Debug)]
943pub enum CrashListenerEvent {}
944
945impl CrashListenerEvent {
946 fn decode(
948 mut buf: <fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc,
949 ) -> Result<CrashListenerEvent, fidl::Error> {
950 let (bytes, _handles) = buf.split_mut();
951 let (tx_header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
952 debug_assert_eq!(tx_header.tx_id, 0);
953 match tx_header.ordinal {
954 _ => Err(fidl::Error::UnknownOrdinal {
955 ordinal: tx_header.ordinal,
956 protocol_name: <CrashListenerMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
957 }),
958 }
959 }
960}
961
962pub struct CrashListenerRequestStream {
964 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
965 is_terminated: bool,
966}
967
968impl std::marker::Unpin for CrashListenerRequestStream {}
969
970impl futures::stream::FusedStream for CrashListenerRequestStream {
971 fn is_terminated(&self) -> bool {
972 self.is_terminated
973 }
974}
975
976impl fidl::endpoints::RequestStream for CrashListenerRequestStream {
977 type Protocol = CrashListenerMarker;
978 type ControlHandle = CrashListenerControlHandle;
979
980 fn from_channel(channel: ::fidl::AsyncChannel) -> Self {
981 Self { inner: std::sync::Arc::new(fidl::ServeInner::new(channel)), is_terminated: false }
982 }
983
984 fn control_handle(&self) -> Self::ControlHandle {
985 CrashListenerControlHandle { inner: self.inner.clone() }
986 }
987
988 fn into_inner(
989 self,
990 ) -> (::std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>, bool)
991 {
992 (self.inner, self.is_terminated)
993 }
994
995 fn from_inner(
996 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
997 is_terminated: bool,
998 ) -> Self {
999 Self { inner, is_terminated }
1000 }
1001}
1002
1003impl futures::Stream for CrashListenerRequestStream {
1004 type Item = Result<CrashListenerRequest, fidl::Error>;
1005
1006 fn poll_next(
1007 mut self: std::pin::Pin<&mut Self>,
1008 cx: &mut std::task::Context<'_>,
1009 ) -> std::task::Poll<Option<Self::Item>> {
1010 let this = &mut *self;
1011 if this.inner.check_shutdown(cx) {
1012 this.is_terminated = true;
1013 return std::task::Poll::Ready(None);
1014 }
1015 if this.is_terminated {
1016 panic!("polled CrashListenerRequestStream after completion");
1017 }
1018 fidl::encoding::with_tls_decode_buf::<_, fidl::encoding::DefaultFuchsiaResourceDialect>(
1019 |bytes, handles| {
1020 match this.inner.channel().read_etc(cx, bytes, handles) {
1021 std::task::Poll::Ready(Ok(())) => {}
1022 std::task::Poll::Pending => return std::task::Poll::Pending,
1023 std::task::Poll::Ready(Err(zx_status::Status::PEER_CLOSED)) => {
1024 this.is_terminated = true;
1025 return std::task::Poll::Ready(None);
1026 }
1027 std::task::Poll::Ready(Err(e)) => {
1028 return std::task::Poll::Ready(Some(Err(fidl::Error::ServerRequestRead(
1029 e.into(),
1030 ))));
1031 }
1032 }
1033
1034 let (header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
1036
1037 std::task::Poll::Ready(Some(match header.ordinal {
1038 0x4ad26b66c3a90dfb => {
1039 header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
1040 let mut req = fidl::new_empty!(
1041 fidl::encoding::EmptyPayload,
1042 fidl::encoding::DefaultFuchsiaResourceDialect
1043 );
1044 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
1045 let control_handle =
1046 CrashListenerControlHandle { inner: this.inner.clone() };
1047 Ok(CrashListenerRequest::Next {
1048 responder: CrashListenerNextResponder {
1049 control_handle: std::mem::ManuallyDrop::new(control_handle),
1050 tx_id: header.tx_id,
1051 },
1052 })
1053 }
1054 _ => Err(fidl::Error::UnknownOrdinal {
1055 ordinal: header.ordinal,
1056 protocol_name:
1057 <CrashListenerMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
1058 }),
1059 }))
1060 },
1061 )
1062 }
1063}
1064
1065#[derive(Debug)]
1069pub enum CrashListenerRequest {
1070 Next { responder: CrashListenerNextResponder },
1076}
1077
1078impl CrashListenerRequest {
1079 #[allow(irrefutable_let_patterns)]
1080 pub fn into_next(self) -> Option<(CrashListenerNextResponder)> {
1081 if let CrashListenerRequest::Next { responder } = self { Some((responder)) } else { None }
1082 }
1083
1084 pub fn method_name(&self) -> &'static str {
1086 match *self {
1087 CrashListenerRequest::Next { .. } => "next",
1088 }
1089 }
1090}
1091
1092#[derive(Debug, Clone)]
1093pub struct CrashListenerControlHandle {
1094 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
1095}
1096
1097impl CrashListenerControlHandle {
1098 pub fn shutdown_with_epitaph(&self, status: impl Into<fidl::Epitaph>) {
1099 self.inner.shutdown_with_epitaph(status.into())
1100 }
1101}
1102
1103impl fidl::endpoints::ControlHandle for CrashListenerControlHandle {
1104 fn shutdown(&self) {
1105 self.inner.shutdown()
1106 }
1107
1108 fn shutdown_with_epitaph(&self, status: fidl::Epitaph) {
1109 self.inner.shutdown_with_epitaph(status)
1110 }
1111
1112 fn is_closed(&self) -> bool {
1113 self.inner.channel().is_closed()
1114 }
1115 fn on_closed(&self) -> fidl::OnSignalsRef<'_> {
1116 self.inner.channel().on_closed()
1117 }
1118
1119 #[cfg(target_os = "fuchsia")]
1120 fn signal_peer(
1121 &self,
1122 clear_mask: zx::Signals,
1123 set_mask: zx::Signals,
1124 ) -> Result<(), zx_status::Status> {
1125 use fidl::Peered;
1126 self.inner.channel().signal_peer(clear_mask, set_mask)
1127 }
1128}
1129
1130impl CrashListenerControlHandle {}
1131
1132#[must_use = "FIDL methods require a response to be sent"]
1133#[derive(Debug)]
1134pub struct CrashListenerNextResponder {
1135 control_handle: std::mem::ManuallyDrop<CrashListenerControlHandle>,
1136 tx_id: u32,
1137}
1138
1139impl std::ops::Drop for CrashListenerNextResponder {
1143 fn drop(&mut self) {
1144 self.control_handle.shutdown();
1145 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
1147 }
1148}
1149
1150impl fidl::endpoints::Responder for CrashListenerNextResponder {
1151 type ControlHandle = CrashListenerControlHandle;
1152
1153 fn control_handle(&self) -> &CrashListenerControlHandle {
1154 &self.control_handle
1155 }
1156
1157 fn drop_without_shutdown(mut self) {
1158 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
1160 std::mem::forget(self);
1162 }
1163}
1164
1165impl CrashListenerNextResponder {
1166 pub fn send(self, mut crashed_monikers: &[String]) -> Result<(), fidl::Error> {
1170 let _result = self.send_raw(crashed_monikers);
1171 if _result.is_err() {
1172 self.control_handle.shutdown();
1173 }
1174 self.drop_without_shutdown();
1175 _result
1176 }
1177
1178 pub fn send_no_shutdown_on_err(
1180 self,
1181 mut crashed_monikers: &[String],
1182 ) -> Result<(), fidl::Error> {
1183 let _result = self.send_raw(crashed_monikers);
1184 self.drop_without_shutdown();
1185 _result
1186 }
1187
1188 fn send_raw(&self, mut crashed_monikers: &[String]) -> Result<(), fidl::Error> {
1189 self.control_handle.inner.send::<CrashListenerNextResponse>(
1190 (crashed_monikers,),
1191 self.tx_id,
1192 0x4ad26b66c3a90dfb,
1193 fidl::encoding::DynamicFlags::empty(),
1194 )
1195 }
1196}
1197
1198#[derive(Debug, Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash)]
1199pub struct ManagedRealmMarker;
1200
1201impl fidl::endpoints::ProtocolMarker for ManagedRealmMarker {
1202 type Proxy = ManagedRealmProxy;
1203 type RequestStream = ManagedRealmRequestStream;
1204 #[cfg(target_os = "fuchsia")]
1205 type SynchronousProxy = ManagedRealmSynchronousProxy;
1206
1207 const DEBUG_NAME: &'static str = "(anonymous) ManagedRealm";
1208}
1209pub type ManagedRealmAddDeviceResult = Result<(), i32>;
1210pub type ManagedRealmRemoveDeviceResult = Result<(), i32>;
1211pub type ManagedRealmStartChildComponentResult = Result<(), i32>;
1212pub type ManagedRealmStopChildComponentResult = Result<(), i32>;
1213
1214pub trait ManagedRealmProxyInterface: Send + Sync {
1215 type GetMonikerResponseFut: std::future::Future<Output = Result<String, fidl::Error>> + Send;
1216 fn r#get_moniker(&self) -> Self::GetMonikerResponseFut;
1217 fn r#connect_to_protocol(
1218 &self,
1219 protocol_name: &str,
1220 child_name: Option<&str>,
1221 req: fidl::Channel,
1222 ) -> Result<(), fidl::Error>;
1223 fn r#connect_to_service(
1224 &self,
1225 service_name: &str,
1226 child_name: Option<&str>,
1227 req: fidl::Channel,
1228 ) -> Result<(), fidl::Error>;
1229 type AddDeviceResponseFut: std::future::Future<Output = Result<ManagedRealmAddDeviceResult, fidl::Error>>
1230 + Send;
1231 fn r#add_device(
1232 &self,
1233 path: &str,
1234 device: fidl::endpoints::ClientEnd<fidl_fuchsia_netemul_network::DeviceProxy_Marker>,
1235 ) -> Self::AddDeviceResponseFut;
1236 type RemoveDeviceResponseFut: std::future::Future<Output = Result<ManagedRealmRemoveDeviceResult, fidl::Error>>
1237 + Send;
1238 fn r#remove_device(&self, path: &str) -> Self::RemoveDeviceResponseFut;
1239 fn r#get_devfs(
1240 &self,
1241 devfs: fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>,
1242 ) -> Result<(), fidl::Error>;
1243 type StartChildComponentResponseFut: std::future::Future<Output = Result<ManagedRealmStartChildComponentResult, fidl::Error>>
1244 + Send;
1245 fn r#start_child_component(&self, child_name: &str) -> Self::StartChildComponentResponseFut;
1246 type StopChildComponentResponseFut: std::future::Future<Output = Result<ManagedRealmStopChildComponentResult, fidl::Error>>
1247 + Send;
1248 fn r#stop_child_component(&self, child_name: &str) -> Self::StopChildComponentResponseFut;
1249 fn r#shutdown(&self) -> Result<(), fidl::Error>;
1250 fn r#open_diagnostics_directory(
1251 &self,
1252 child_name: &str,
1253 directory: fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>,
1254 ) -> Result<(), fidl::Error>;
1255 fn r#get_crash_listener(
1256 &self,
1257 listener: fidl::endpoints::ServerEnd<CrashListenerMarker>,
1258 ) -> Result<(), fidl::Error>;
1259}
1260#[derive(Debug)]
1261#[cfg(target_os = "fuchsia")]
1262pub struct ManagedRealmSynchronousProxy {
1263 client: fidl::client::sync::Client,
1264}
1265
1266#[cfg(target_os = "fuchsia")]
1267impl fidl::endpoints::SynchronousProxy for ManagedRealmSynchronousProxy {
1268 type Proxy = ManagedRealmProxy;
1269 type Protocol = ManagedRealmMarker;
1270
1271 fn from_channel(inner: fidl::Channel) -> Self {
1272 Self::new(inner)
1273 }
1274
1275 fn into_channel(self) -> fidl::Channel {
1276 self.client.into_channel()
1277 }
1278
1279 fn as_channel(&self) -> &fidl::Channel {
1280 self.client.as_channel()
1281 }
1282}
1283
1284#[cfg(target_os = "fuchsia")]
1285impl ManagedRealmSynchronousProxy {
1286 pub fn new(channel: fidl::Channel) -> Self {
1287 Self { client: fidl::client::sync::Client::new(channel) }
1288 }
1289
1290 pub fn into_channel(self) -> fidl::Channel {
1291 self.client.into_channel()
1292 }
1293
1294 pub fn wait_for_event(
1297 &self,
1298 deadline: zx::MonotonicInstant,
1299 ) -> Result<ManagedRealmEvent, fidl::Error> {
1300 ManagedRealmEvent::decode(self.client.wait_for_event::<ManagedRealmMarker>(deadline)?)
1301 }
1302
1303 pub fn r#get_moniker(&self, ___deadline: zx::MonotonicInstant) -> Result<String, fidl::Error> {
1308 let _response = self.client.send_query::<
1309 fidl::encoding::EmptyPayload,
1310 ManagedRealmGetMonikerResponse,
1311 ManagedRealmMarker,
1312 >(
1313 (),
1314 0xec8f2bf894ddc5f,
1315 fidl::encoding::DynamicFlags::empty(),
1316 ___deadline,
1317 )?;
1318 Ok(_response.moniker)
1319 }
1320
1321 pub fn r#connect_to_protocol(
1333 &self,
1334 mut protocol_name: &str,
1335 mut child_name: Option<&str>,
1336 mut req: fidl::Channel,
1337 ) -> Result<(), fidl::Error> {
1338 self.client.send::<ManagedRealmConnectToProtocolRequest>(
1339 (protocol_name, child_name, req),
1340 0x20865b728239813d,
1341 fidl::encoding::DynamicFlags::empty(),
1342 )
1343 }
1344
1345 pub fn r#connect_to_service(
1356 &self,
1357 mut service_name: &str,
1358 mut child_name: Option<&str>,
1359 mut req: fidl::Channel,
1360 ) -> Result<(), fidl::Error> {
1361 self.client.send::<ManagedRealmConnectToServiceRequest>(
1362 (service_name, child_name, req),
1363 0x1cfd66bc614daf6a,
1364 fidl::encoding::DynamicFlags::empty(),
1365 )
1366 }
1367
1368 pub fn r#add_device(
1381 &self,
1382 mut path: &str,
1383 mut device: fidl::endpoints::ClientEnd<fidl_fuchsia_netemul_network::DeviceProxy_Marker>,
1384 ___deadline: zx::MonotonicInstant,
1385 ) -> Result<ManagedRealmAddDeviceResult, fidl::Error> {
1386 let _response = self.client.send_query::<
1387 ManagedRealmAddDeviceRequest,
1388 fidl::encoding::ResultType<fidl::encoding::EmptyStruct, i32>,
1389 ManagedRealmMarker,
1390 >(
1391 (path, device,),
1392 0x789925e6f5d47c07,
1393 fidl::encoding::DynamicFlags::empty(),
1394 ___deadline,
1395 )?;
1396 Ok(_response.map(|x| x))
1397 }
1398
1399 pub fn r#remove_device(
1407 &self,
1408 mut path: &str,
1409 ___deadline: zx::MonotonicInstant,
1410 ) -> Result<ManagedRealmRemoveDeviceResult, fidl::Error> {
1411 let _response = self.client.send_query::<
1412 ManagedRealmRemoveDeviceRequest,
1413 fidl::encoding::ResultType<fidl::encoding::EmptyStruct, i32>,
1414 ManagedRealmMarker,
1415 >(
1416 (path,),
1417 0x6cffbba70ac757cc,
1418 fidl::encoding::DynamicFlags::empty(),
1419 ___deadline,
1420 )?;
1421 Ok(_response.map(|x| x))
1422 }
1423
1424 pub fn r#get_devfs(
1428 &self,
1429 mut devfs: fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>,
1430 ) -> Result<(), fidl::Error> {
1431 self.client.send::<ManagedRealmGetDevfsRequest>(
1432 (devfs,),
1433 0x707e2b17f65fcadc,
1434 fidl::encoding::DynamicFlags::empty(),
1435 )
1436 }
1437
1438 pub fn r#start_child_component(
1448 &self,
1449 mut child_name: &str,
1450 ___deadline: zx::MonotonicInstant,
1451 ) -> Result<ManagedRealmStartChildComponentResult, fidl::Error> {
1452 let _response = self.client.send_query::<
1453 ManagedRealmStartChildComponentRequest,
1454 fidl::encoding::ResultType<fidl::encoding::EmptyStruct, i32>,
1455 ManagedRealmMarker,
1456 >(
1457 (child_name,),
1458 0x20dfa243752906a1,
1459 fidl::encoding::DynamicFlags::empty(),
1460 ___deadline,
1461 )?;
1462 Ok(_response.map(|x| x))
1463 }
1464
1465 pub fn r#stop_child_component(
1475 &self,
1476 mut child_name: &str,
1477 ___deadline: zx::MonotonicInstant,
1478 ) -> Result<ManagedRealmStopChildComponentResult, fidl::Error> {
1479 let _response = self.client.send_query::<
1480 ManagedRealmStopChildComponentRequest,
1481 fidl::encoding::ResultType<fidl::encoding::EmptyStruct, i32>,
1482 ManagedRealmMarker,
1483 >(
1484 (child_name,),
1485 0x5ecfe48430aeeca7,
1486 fidl::encoding::DynamicFlags::empty(),
1487 ___deadline,
1488 )?;
1489 Ok(_response.map(|x| x))
1490 }
1491
1492 pub fn r#shutdown(&self) -> Result<(), fidl::Error> {
1497 self.client.send::<fidl::encoding::EmptyPayload>(
1498 (),
1499 0x4750920f723fba9d,
1500 fidl::encoding::DynamicFlags::empty(),
1501 )
1502 }
1503
1504 pub fn r#open_diagnostics_directory(
1506 &self,
1507 mut child_name: &str,
1508 mut directory: fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>,
1509 ) -> Result<(), fidl::Error> {
1510 self.client.send::<ManagedRealmOpenDiagnosticsDirectoryRequest>(
1511 (child_name, directory),
1512 0x7c5312484aa41c99,
1513 fidl::encoding::DynamicFlags::empty(),
1514 )
1515 }
1516
1517 pub fn r#get_crash_listener(
1519 &self,
1520 mut listener: fidl::endpoints::ServerEnd<CrashListenerMarker>,
1521 ) -> Result<(), fidl::Error> {
1522 self.client.send::<ManagedRealmGetCrashListenerRequest>(
1523 (listener,),
1524 0x407bab14357e8913,
1525 fidl::encoding::DynamicFlags::empty(),
1526 )
1527 }
1528}
1529
1530#[cfg(target_os = "fuchsia")]
1531impl From<ManagedRealmSynchronousProxy> for zx::NullableHandle {
1532 fn from(value: ManagedRealmSynchronousProxy) -> Self {
1533 value.into_channel().into()
1534 }
1535}
1536
1537#[cfg(target_os = "fuchsia")]
1538impl From<fidl::Channel> for ManagedRealmSynchronousProxy {
1539 fn from(value: fidl::Channel) -> Self {
1540 Self::new(value)
1541 }
1542}
1543
1544#[cfg(target_os = "fuchsia")]
1545impl fidl::endpoints::FromClient for ManagedRealmSynchronousProxy {
1546 type Protocol = ManagedRealmMarker;
1547
1548 fn from_client(value: fidl::endpoints::ClientEnd<ManagedRealmMarker>) -> Self {
1549 Self::new(value.into_channel())
1550 }
1551}
1552
1553#[derive(Debug, Clone)]
1554pub struct ManagedRealmProxy {
1555 client: fidl::client::Client<fidl::encoding::DefaultFuchsiaResourceDialect>,
1556}
1557
1558impl fidl::endpoints::Proxy for ManagedRealmProxy {
1559 type Protocol = ManagedRealmMarker;
1560
1561 fn from_channel(inner: ::fidl::AsyncChannel) -> Self {
1562 Self::new(inner)
1563 }
1564
1565 fn into_channel(self) -> Result<::fidl::AsyncChannel, Self> {
1566 self.client.into_channel().map_err(|client| Self { client })
1567 }
1568
1569 fn as_channel(&self) -> &::fidl::AsyncChannel {
1570 self.client.as_channel()
1571 }
1572}
1573
1574impl ManagedRealmProxy {
1575 pub fn new(channel: ::fidl::AsyncChannel) -> Self {
1577 let protocol_name = <ManagedRealmMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
1578 Self { client: fidl::client::Client::new(channel, protocol_name) }
1579 }
1580
1581 pub fn take_event_stream(&self) -> ManagedRealmEventStream {
1587 ManagedRealmEventStream { event_receiver: self.client.take_event_receiver() }
1588 }
1589
1590 pub fn r#get_moniker(
1595 &self,
1596 ) -> fidl::client::QueryResponseFut<String, fidl::encoding::DefaultFuchsiaResourceDialect> {
1597 ManagedRealmProxyInterface::r#get_moniker(self)
1598 }
1599
1600 pub fn r#connect_to_protocol(
1612 &self,
1613 mut protocol_name: &str,
1614 mut child_name: Option<&str>,
1615 mut req: fidl::Channel,
1616 ) -> Result<(), fidl::Error> {
1617 ManagedRealmProxyInterface::r#connect_to_protocol(self, protocol_name, child_name, req)
1618 }
1619
1620 pub fn r#connect_to_service(
1631 &self,
1632 mut service_name: &str,
1633 mut child_name: Option<&str>,
1634 mut req: fidl::Channel,
1635 ) -> Result<(), fidl::Error> {
1636 ManagedRealmProxyInterface::r#connect_to_service(self, service_name, child_name, req)
1637 }
1638
1639 pub fn r#add_device(
1652 &self,
1653 mut path: &str,
1654 mut device: fidl::endpoints::ClientEnd<fidl_fuchsia_netemul_network::DeviceProxy_Marker>,
1655 ) -> fidl::client::QueryResponseFut<
1656 ManagedRealmAddDeviceResult,
1657 fidl::encoding::DefaultFuchsiaResourceDialect,
1658 > {
1659 ManagedRealmProxyInterface::r#add_device(self, path, device)
1660 }
1661
1662 pub fn r#remove_device(
1670 &self,
1671 mut path: &str,
1672 ) -> fidl::client::QueryResponseFut<
1673 ManagedRealmRemoveDeviceResult,
1674 fidl::encoding::DefaultFuchsiaResourceDialect,
1675 > {
1676 ManagedRealmProxyInterface::r#remove_device(self, path)
1677 }
1678
1679 pub fn r#get_devfs(
1683 &self,
1684 mut devfs: fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>,
1685 ) -> Result<(), fidl::Error> {
1686 ManagedRealmProxyInterface::r#get_devfs(self, devfs)
1687 }
1688
1689 pub fn r#start_child_component(
1699 &self,
1700 mut child_name: &str,
1701 ) -> fidl::client::QueryResponseFut<
1702 ManagedRealmStartChildComponentResult,
1703 fidl::encoding::DefaultFuchsiaResourceDialect,
1704 > {
1705 ManagedRealmProxyInterface::r#start_child_component(self, child_name)
1706 }
1707
1708 pub fn r#stop_child_component(
1718 &self,
1719 mut child_name: &str,
1720 ) -> fidl::client::QueryResponseFut<
1721 ManagedRealmStopChildComponentResult,
1722 fidl::encoding::DefaultFuchsiaResourceDialect,
1723 > {
1724 ManagedRealmProxyInterface::r#stop_child_component(self, child_name)
1725 }
1726
1727 pub fn r#shutdown(&self) -> Result<(), fidl::Error> {
1732 ManagedRealmProxyInterface::r#shutdown(self)
1733 }
1734
1735 pub fn r#open_diagnostics_directory(
1737 &self,
1738 mut child_name: &str,
1739 mut directory: fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>,
1740 ) -> Result<(), fidl::Error> {
1741 ManagedRealmProxyInterface::r#open_diagnostics_directory(self, child_name, directory)
1742 }
1743
1744 pub fn r#get_crash_listener(
1746 &self,
1747 mut listener: fidl::endpoints::ServerEnd<CrashListenerMarker>,
1748 ) -> Result<(), fidl::Error> {
1749 ManagedRealmProxyInterface::r#get_crash_listener(self, listener)
1750 }
1751}
1752
1753impl ManagedRealmProxyInterface for ManagedRealmProxy {
1754 type GetMonikerResponseFut =
1755 fidl::client::QueryResponseFut<String, fidl::encoding::DefaultFuchsiaResourceDialect>;
1756 fn r#get_moniker(&self) -> Self::GetMonikerResponseFut {
1757 fn _decode(
1758 mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
1759 ) -> Result<String, fidl::Error> {
1760 let _response = fidl::client::decode_transaction_body::<
1761 ManagedRealmGetMonikerResponse,
1762 fidl::encoding::DefaultFuchsiaResourceDialect,
1763 0xec8f2bf894ddc5f,
1764 >(_buf?)?;
1765 Ok(_response.moniker)
1766 }
1767 self.client.send_query_and_decode::<fidl::encoding::EmptyPayload, String>(
1768 (),
1769 0xec8f2bf894ddc5f,
1770 fidl::encoding::DynamicFlags::empty(),
1771 _decode,
1772 )
1773 }
1774
1775 fn r#connect_to_protocol(
1776 &self,
1777 mut protocol_name: &str,
1778 mut child_name: Option<&str>,
1779 mut req: fidl::Channel,
1780 ) -> Result<(), fidl::Error> {
1781 self.client.send::<ManagedRealmConnectToProtocolRequest>(
1782 (protocol_name, child_name, req),
1783 0x20865b728239813d,
1784 fidl::encoding::DynamicFlags::empty(),
1785 )
1786 }
1787
1788 fn r#connect_to_service(
1789 &self,
1790 mut service_name: &str,
1791 mut child_name: Option<&str>,
1792 mut req: fidl::Channel,
1793 ) -> Result<(), fidl::Error> {
1794 self.client.send::<ManagedRealmConnectToServiceRequest>(
1795 (service_name, child_name, req),
1796 0x1cfd66bc614daf6a,
1797 fidl::encoding::DynamicFlags::empty(),
1798 )
1799 }
1800
1801 type AddDeviceResponseFut = fidl::client::QueryResponseFut<
1802 ManagedRealmAddDeviceResult,
1803 fidl::encoding::DefaultFuchsiaResourceDialect,
1804 >;
1805 fn r#add_device(
1806 &self,
1807 mut path: &str,
1808 mut device: fidl::endpoints::ClientEnd<fidl_fuchsia_netemul_network::DeviceProxy_Marker>,
1809 ) -> Self::AddDeviceResponseFut {
1810 fn _decode(
1811 mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
1812 ) -> Result<ManagedRealmAddDeviceResult, fidl::Error> {
1813 let _response = fidl::client::decode_transaction_body::<
1814 fidl::encoding::ResultType<fidl::encoding::EmptyStruct, i32>,
1815 fidl::encoding::DefaultFuchsiaResourceDialect,
1816 0x789925e6f5d47c07,
1817 >(_buf?)?;
1818 Ok(_response.map(|x| x))
1819 }
1820 self.client
1821 .send_query_and_decode::<ManagedRealmAddDeviceRequest, ManagedRealmAddDeviceResult>(
1822 (path, device),
1823 0x789925e6f5d47c07,
1824 fidl::encoding::DynamicFlags::empty(),
1825 _decode,
1826 )
1827 }
1828
1829 type RemoveDeviceResponseFut = fidl::client::QueryResponseFut<
1830 ManagedRealmRemoveDeviceResult,
1831 fidl::encoding::DefaultFuchsiaResourceDialect,
1832 >;
1833 fn r#remove_device(&self, mut path: &str) -> Self::RemoveDeviceResponseFut {
1834 fn _decode(
1835 mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
1836 ) -> Result<ManagedRealmRemoveDeviceResult, fidl::Error> {
1837 let _response = fidl::client::decode_transaction_body::<
1838 fidl::encoding::ResultType<fidl::encoding::EmptyStruct, i32>,
1839 fidl::encoding::DefaultFuchsiaResourceDialect,
1840 0x6cffbba70ac757cc,
1841 >(_buf?)?;
1842 Ok(_response.map(|x| x))
1843 }
1844 self.client.send_query_and_decode::<
1845 ManagedRealmRemoveDeviceRequest,
1846 ManagedRealmRemoveDeviceResult,
1847 >(
1848 (path,),
1849 0x6cffbba70ac757cc,
1850 fidl::encoding::DynamicFlags::empty(),
1851 _decode,
1852 )
1853 }
1854
1855 fn r#get_devfs(
1856 &self,
1857 mut devfs: fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>,
1858 ) -> Result<(), fidl::Error> {
1859 self.client.send::<ManagedRealmGetDevfsRequest>(
1860 (devfs,),
1861 0x707e2b17f65fcadc,
1862 fidl::encoding::DynamicFlags::empty(),
1863 )
1864 }
1865
1866 type StartChildComponentResponseFut = fidl::client::QueryResponseFut<
1867 ManagedRealmStartChildComponentResult,
1868 fidl::encoding::DefaultFuchsiaResourceDialect,
1869 >;
1870 fn r#start_child_component(
1871 &self,
1872 mut child_name: &str,
1873 ) -> Self::StartChildComponentResponseFut {
1874 fn _decode(
1875 mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
1876 ) -> Result<ManagedRealmStartChildComponentResult, fidl::Error> {
1877 let _response = fidl::client::decode_transaction_body::<
1878 fidl::encoding::ResultType<fidl::encoding::EmptyStruct, i32>,
1879 fidl::encoding::DefaultFuchsiaResourceDialect,
1880 0x20dfa243752906a1,
1881 >(_buf?)?;
1882 Ok(_response.map(|x| x))
1883 }
1884 self.client.send_query_and_decode::<
1885 ManagedRealmStartChildComponentRequest,
1886 ManagedRealmStartChildComponentResult,
1887 >(
1888 (child_name,),
1889 0x20dfa243752906a1,
1890 fidl::encoding::DynamicFlags::empty(),
1891 _decode,
1892 )
1893 }
1894
1895 type StopChildComponentResponseFut = fidl::client::QueryResponseFut<
1896 ManagedRealmStopChildComponentResult,
1897 fidl::encoding::DefaultFuchsiaResourceDialect,
1898 >;
1899 fn r#stop_child_component(&self, mut child_name: &str) -> Self::StopChildComponentResponseFut {
1900 fn _decode(
1901 mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
1902 ) -> Result<ManagedRealmStopChildComponentResult, fidl::Error> {
1903 let _response = fidl::client::decode_transaction_body::<
1904 fidl::encoding::ResultType<fidl::encoding::EmptyStruct, i32>,
1905 fidl::encoding::DefaultFuchsiaResourceDialect,
1906 0x5ecfe48430aeeca7,
1907 >(_buf?)?;
1908 Ok(_response.map(|x| x))
1909 }
1910 self.client.send_query_and_decode::<
1911 ManagedRealmStopChildComponentRequest,
1912 ManagedRealmStopChildComponentResult,
1913 >(
1914 (child_name,),
1915 0x5ecfe48430aeeca7,
1916 fidl::encoding::DynamicFlags::empty(),
1917 _decode,
1918 )
1919 }
1920
1921 fn r#shutdown(&self) -> Result<(), fidl::Error> {
1922 self.client.send::<fidl::encoding::EmptyPayload>(
1923 (),
1924 0x4750920f723fba9d,
1925 fidl::encoding::DynamicFlags::empty(),
1926 )
1927 }
1928
1929 fn r#open_diagnostics_directory(
1930 &self,
1931 mut child_name: &str,
1932 mut directory: fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>,
1933 ) -> Result<(), fidl::Error> {
1934 self.client.send::<ManagedRealmOpenDiagnosticsDirectoryRequest>(
1935 (child_name, directory),
1936 0x7c5312484aa41c99,
1937 fidl::encoding::DynamicFlags::empty(),
1938 )
1939 }
1940
1941 fn r#get_crash_listener(
1942 &self,
1943 mut listener: fidl::endpoints::ServerEnd<CrashListenerMarker>,
1944 ) -> Result<(), fidl::Error> {
1945 self.client.send::<ManagedRealmGetCrashListenerRequest>(
1946 (listener,),
1947 0x407bab14357e8913,
1948 fidl::encoding::DynamicFlags::empty(),
1949 )
1950 }
1951}
1952
1953pub struct ManagedRealmEventStream {
1954 event_receiver: fidl::client::EventReceiver<fidl::encoding::DefaultFuchsiaResourceDialect>,
1955}
1956
1957impl std::marker::Unpin for ManagedRealmEventStream {}
1958
1959impl futures::stream::FusedStream for ManagedRealmEventStream {
1960 fn is_terminated(&self) -> bool {
1961 self.event_receiver.is_terminated()
1962 }
1963}
1964
1965impl futures::Stream for ManagedRealmEventStream {
1966 type Item = Result<ManagedRealmEvent, fidl::Error>;
1967
1968 fn poll_next(
1969 mut self: std::pin::Pin<&mut Self>,
1970 cx: &mut std::task::Context<'_>,
1971 ) -> std::task::Poll<Option<Self::Item>> {
1972 match futures::ready!(futures::stream::StreamExt::poll_next_unpin(
1973 &mut self.event_receiver,
1974 cx
1975 )?) {
1976 Some(buf) => std::task::Poll::Ready(Some(ManagedRealmEvent::decode(buf))),
1977 None => std::task::Poll::Ready(None),
1978 }
1979 }
1980}
1981
1982#[derive(Debug)]
1983pub enum ManagedRealmEvent {
1984 OnShutdown {},
1985}
1986
1987impl ManagedRealmEvent {
1988 #[allow(irrefutable_let_patterns)]
1989 pub fn into_on_shutdown(self) -> Option<()> {
1990 if let ManagedRealmEvent::OnShutdown {} = self { Some(()) } else { None }
1991 }
1992
1993 fn decode(
1995 mut buf: <fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc,
1996 ) -> Result<ManagedRealmEvent, fidl::Error> {
1997 let (bytes, _handles) = buf.split_mut();
1998 let (tx_header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
1999 debug_assert_eq!(tx_header.tx_id, 0);
2000 match tx_header.ordinal {
2001 0x1dff0b58a5b546be => {
2002 let mut out = fidl::new_empty!(
2003 fidl::encoding::EmptyPayload,
2004 fidl::encoding::DefaultFuchsiaResourceDialect
2005 );
2006 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&tx_header, _body_bytes, _handles, &mut out)?;
2007 Ok((ManagedRealmEvent::OnShutdown {}))
2008 }
2009 _ => Err(fidl::Error::UnknownOrdinal {
2010 ordinal: tx_header.ordinal,
2011 protocol_name: <ManagedRealmMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
2012 }),
2013 }
2014 }
2015}
2016
2017pub struct ManagedRealmRequestStream {
2019 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
2020 is_terminated: bool,
2021}
2022
2023impl std::marker::Unpin for ManagedRealmRequestStream {}
2024
2025impl futures::stream::FusedStream for ManagedRealmRequestStream {
2026 fn is_terminated(&self) -> bool {
2027 self.is_terminated
2028 }
2029}
2030
2031impl fidl::endpoints::RequestStream for ManagedRealmRequestStream {
2032 type Protocol = ManagedRealmMarker;
2033 type ControlHandle = ManagedRealmControlHandle;
2034
2035 fn from_channel(channel: ::fidl::AsyncChannel) -> Self {
2036 Self { inner: std::sync::Arc::new(fidl::ServeInner::new(channel)), is_terminated: false }
2037 }
2038
2039 fn control_handle(&self) -> Self::ControlHandle {
2040 ManagedRealmControlHandle { inner: self.inner.clone() }
2041 }
2042
2043 fn into_inner(
2044 self,
2045 ) -> (::std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>, bool)
2046 {
2047 (self.inner, self.is_terminated)
2048 }
2049
2050 fn from_inner(
2051 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
2052 is_terminated: bool,
2053 ) -> Self {
2054 Self { inner, is_terminated }
2055 }
2056}
2057
2058impl futures::Stream for ManagedRealmRequestStream {
2059 type Item = Result<ManagedRealmRequest, fidl::Error>;
2060
2061 fn poll_next(
2062 mut self: std::pin::Pin<&mut Self>,
2063 cx: &mut std::task::Context<'_>,
2064 ) -> std::task::Poll<Option<Self::Item>> {
2065 let this = &mut *self;
2066 if this.inner.check_shutdown(cx) {
2067 this.is_terminated = true;
2068 return std::task::Poll::Ready(None);
2069 }
2070 if this.is_terminated {
2071 panic!("polled ManagedRealmRequestStream after completion");
2072 }
2073 fidl::encoding::with_tls_decode_buf::<_, fidl::encoding::DefaultFuchsiaResourceDialect>(
2074 |bytes, handles| {
2075 match this.inner.channel().read_etc(cx, bytes, handles) {
2076 std::task::Poll::Ready(Ok(())) => {}
2077 std::task::Poll::Pending => return std::task::Poll::Pending,
2078 std::task::Poll::Ready(Err(zx_status::Status::PEER_CLOSED)) => {
2079 this.is_terminated = true;
2080 return std::task::Poll::Ready(None);
2081 }
2082 std::task::Poll::Ready(Err(e)) => {
2083 return std::task::Poll::Ready(Some(Err(fidl::Error::ServerRequestRead(
2084 e.into(),
2085 ))));
2086 }
2087 }
2088
2089 let (header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
2091
2092 std::task::Poll::Ready(Some(match header.ordinal {
2093 0xec8f2bf894ddc5f => {
2094 header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
2095 let mut req = fidl::new_empty!(
2096 fidl::encoding::EmptyPayload,
2097 fidl::encoding::DefaultFuchsiaResourceDialect
2098 );
2099 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
2100 let control_handle =
2101 ManagedRealmControlHandle { inner: this.inner.clone() };
2102 Ok(ManagedRealmRequest::GetMoniker {
2103 responder: ManagedRealmGetMonikerResponder {
2104 control_handle: std::mem::ManuallyDrop::new(control_handle),
2105 tx_id: header.tx_id,
2106 },
2107 })
2108 }
2109 0x20865b728239813d => {
2110 header.validate_request_tx_id(fidl::MethodType::OneWay)?;
2111 let mut req = fidl::new_empty!(
2112 ManagedRealmConnectToProtocolRequest,
2113 fidl::encoding::DefaultFuchsiaResourceDialect
2114 );
2115 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<ManagedRealmConnectToProtocolRequest>(&header, _body_bytes, handles, &mut req)?;
2116 let control_handle =
2117 ManagedRealmControlHandle { inner: this.inner.clone() };
2118 Ok(ManagedRealmRequest::ConnectToProtocol {
2119 protocol_name: req.protocol_name,
2120 child_name: req.child_name,
2121 req: req.req,
2122
2123 control_handle,
2124 })
2125 }
2126 0x1cfd66bc614daf6a => {
2127 header.validate_request_tx_id(fidl::MethodType::OneWay)?;
2128 let mut req = fidl::new_empty!(
2129 ManagedRealmConnectToServiceRequest,
2130 fidl::encoding::DefaultFuchsiaResourceDialect
2131 );
2132 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<ManagedRealmConnectToServiceRequest>(&header, _body_bytes, handles, &mut req)?;
2133 let control_handle =
2134 ManagedRealmControlHandle { inner: this.inner.clone() };
2135 Ok(ManagedRealmRequest::ConnectToService {
2136 service_name: req.service_name,
2137 child_name: req.child_name,
2138 req: req.req,
2139
2140 control_handle,
2141 })
2142 }
2143 0x789925e6f5d47c07 => {
2144 header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
2145 let mut req = fidl::new_empty!(
2146 ManagedRealmAddDeviceRequest,
2147 fidl::encoding::DefaultFuchsiaResourceDialect
2148 );
2149 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<ManagedRealmAddDeviceRequest>(&header, _body_bytes, handles, &mut req)?;
2150 let control_handle =
2151 ManagedRealmControlHandle { inner: this.inner.clone() };
2152 Ok(ManagedRealmRequest::AddDevice {
2153 path: req.path,
2154 device: req.device,
2155
2156 responder: ManagedRealmAddDeviceResponder {
2157 control_handle: std::mem::ManuallyDrop::new(control_handle),
2158 tx_id: header.tx_id,
2159 },
2160 })
2161 }
2162 0x6cffbba70ac757cc => {
2163 header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
2164 let mut req = fidl::new_empty!(
2165 ManagedRealmRemoveDeviceRequest,
2166 fidl::encoding::DefaultFuchsiaResourceDialect
2167 );
2168 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<ManagedRealmRemoveDeviceRequest>(&header, _body_bytes, handles, &mut req)?;
2169 let control_handle =
2170 ManagedRealmControlHandle { inner: this.inner.clone() };
2171 Ok(ManagedRealmRequest::RemoveDevice {
2172 path: req.path,
2173
2174 responder: ManagedRealmRemoveDeviceResponder {
2175 control_handle: std::mem::ManuallyDrop::new(control_handle),
2176 tx_id: header.tx_id,
2177 },
2178 })
2179 }
2180 0x707e2b17f65fcadc => {
2181 header.validate_request_tx_id(fidl::MethodType::OneWay)?;
2182 let mut req = fidl::new_empty!(
2183 ManagedRealmGetDevfsRequest,
2184 fidl::encoding::DefaultFuchsiaResourceDialect
2185 );
2186 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<ManagedRealmGetDevfsRequest>(&header, _body_bytes, handles, &mut req)?;
2187 let control_handle =
2188 ManagedRealmControlHandle { inner: this.inner.clone() };
2189 Ok(ManagedRealmRequest::GetDevfs { devfs: req.devfs, control_handle })
2190 }
2191 0x20dfa243752906a1 => {
2192 header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
2193 let mut req = fidl::new_empty!(
2194 ManagedRealmStartChildComponentRequest,
2195 fidl::encoding::DefaultFuchsiaResourceDialect
2196 );
2197 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<ManagedRealmStartChildComponentRequest>(&header, _body_bytes, handles, &mut req)?;
2198 let control_handle =
2199 ManagedRealmControlHandle { inner: this.inner.clone() };
2200 Ok(ManagedRealmRequest::StartChildComponent {
2201 child_name: req.child_name,
2202
2203 responder: ManagedRealmStartChildComponentResponder {
2204 control_handle: std::mem::ManuallyDrop::new(control_handle),
2205 tx_id: header.tx_id,
2206 },
2207 })
2208 }
2209 0x5ecfe48430aeeca7 => {
2210 header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
2211 let mut req = fidl::new_empty!(
2212 ManagedRealmStopChildComponentRequest,
2213 fidl::encoding::DefaultFuchsiaResourceDialect
2214 );
2215 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<ManagedRealmStopChildComponentRequest>(&header, _body_bytes, handles, &mut req)?;
2216 let control_handle =
2217 ManagedRealmControlHandle { inner: this.inner.clone() };
2218 Ok(ManagedRealmRequest::StopChildComponent {
2219 child_name: req.child_name,
2220
2221 responder: ManagedRealmStopChildComponentResponder {
2222 control_handle: std::mem::ManuallyDrop::new(control_handle),
2223 tx_id: header.tx_id,
2224 },
2225 })
2226 }
2227 0x4750920f723fba9d => {
2228 header.validate_request_tx_id(fidl::MethodType::OneWay)?;
2229 let mut req = fidl::new_empty!(
2230 fidl::encoding::EmptyPayload,
2231 fidl::encoding::DefaultFuchsiaResourceDialect
2232 );
2233 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
2234 let control_handle =
2235 ManagedRealmControlHandle { inner: this.inner.clone() };
2236 Ok(ManagedRealmRequest::Shutdown { control_handle })
2237 }
2238 0x7c5312484aa41c99 => {
2239 header.validate_request_tx_id(fidl::MethodType::OneWay)?;
2240 let mut req = fidl::new_empty!(
2241 ManagedRealmOpenDiagnosticsDirectoryRequest,
2242 fidl::encoding::DefaultFuchsiaResourceDialect
2243 );
2244 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<ManagedRealmOpenDiagnosticsDirectoryRequest>(&header, _body_bytes, handles, &mut req)?;
2245 let control_handle =
2246 ManagedRealmControlHandle { inner: this.inner.clone() };
2247 Ok(ManagedRealmRequest::OpenDiagnosticsDirectory {
2248 child_name: req.child_name,
2249 directory: req.directory,
2250
2251 control_handle,
2252 })
2253 }
2254 0x407bab14357e8913 => {
2255 header.validate_request_tx_id(fidl::MethodType::OneWay)?;
2256 let mut req = fidl::new_empty!(
2257 ManagedRealmGetCrashListenerRequest,
2258 fidl::encoding::DefaultFuchsiaResourceDialect
2259 );
2260 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<ManagedRealmGetCrashListenerRequest>(&header, _body_bytes, handles, &mut req)?;
2261 let control_handle =
2262 ManagedRealmControlHandle { inner: this.inner.clone() };
2263 Ok(ManagedRealmRequest::GetCrashListener {
2264 listener: req.listener,
2265
2266 control_handle,
2267 })
2268 }
2269 _ => Err(fidl::Error::UnknownOrdinal {
2270 ordinal: header.ordinal,
2271 protocol_name:
2272 <ManagedRealmMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
2273 }),
2274 }))
2275 },
2276 )
2277 }
2278}
2279
2280#[derive(Debug)]
2293pub enum ManagedRealmRequest {
2294 GetMoniker { responder: ManagedRealmGetMonikerResponder },
2299 ConnectToProtocol {
2311 protocol_name: String,
2312 child_name: Option<String>,
2313 req: fidl::Channel,
2314 control_handle: ManagedRealmControlHandle,
2315 },
2316 ConnectToService {
2327 service_name: String,
2328 child_name: Option<String>,
2329 req: fidl::Channel,
2330 control_handle: ManagedRealmControlHandle,
2331 },
2332 AddDevice {
2345 path: String,
2346 device: fidl::endpoints::ClientEnd<fidl_fuchsia_netemul_network::DeviceProxy_Marker>,
2347 responder: ManagedRealmAddDeviceResponder,
2348 },
2349 RemoveDevice { path: String, responder: ManagedRealmRemoveDeviceResponder },
2357 GetDevfs {
2361 devfs: fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>,
2362 control_handle: ManagedRealmControlHandle,
2363 },
2364 StartChildComponent { child_name: String, responder: ManagedRealmStartChildComponentResponder },
2374 StopChildComponent { child_name: String, responder: ManagedRealmStopChildComponentResponder },
2384 Shutdown { control_handle: ManagedRealmControlHandle },
2389 OpenDiagnosticsDirectory {
2391 child_name: String,
2392 directory: fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>,
2393 control_handle: ManagedRealmControlHandle,
2394 },
2395 GetCrashListener {
2397 listener: fidl::endpoints::ServerEnd<CrashListenerMarker>,
2398 control_handle: ManagedRealmControlHandle,
2399 },
2400}
2401
2402impl ManagedRealmRequest {
2403 #[allow(irrefutable_let_patterns)]
2404 pub fn into_get_moniker(self) -> Option<(ManagedRealmGetMonikerResponder)> {
2405 if let ManagedRealmRequest::GetMoniker { responder } = self {
2406 Some((responder))
2407 } else {
2408 None
2409 }
2410 }
2411
2412 #[allow(irrefutable_let_patterns)]
2413 pub fn into_connect_to_protocol(
2414 self,
2415 ) -> Option<(String, Option<String>, fidl::Channel, ManagedRealmControlHandle)> {
2416 if let ManagedRealmRequest::ConnectToProtocol {
2417 protocol_name,
2418 child_name,
2419 req,
2420 control_handle,
2421 } = self
2422 {
2423 Some((protocol_name, child_name, req, control_handle))
2424 } else {
2425 None
2426 }
2427 }
2428
2429 #[allow(irrefutable_let_patterns)]
2430 pub fn into_connect_to_service(
2431 self,
2432 ) -> Option<(String, Option<String>, fidl::Channel, ManagedRealmControlHandle)> {
2433 if let ManagedRealmRequest::ConnectToService {
2434 service_name,
2435 child_name,
2436 req,
2437 control_handle,
2438 } = self
2439 {
2440 Some((service_name, child_name, req, control_handle))
2441 } else {
2442 None
2443 }
2444 }
2445
2446 #[allow(irrefutable_let_patterns)]
2447 pub fn into_add_device(
2448 self,
2449 ) -> Option<(
2450 String,
2451 fidl::endpoints::ClientEnd<fidl_fuchsia_netemul_network::DeviceProxy_Marker>,
2452 ManagedRealmAddDeviceResponder,
2453 )> {
2454 if let ManagedRealmRequest::AddDevice { path, device, responder } = self {
2455 Some((path, device, responder))
2456 } else {
2457 None
2458 }
2459 }
2460
2461 #[allow(irrefutable_let_patterns)]
2462 pub fn into_remove_device(self) -> Option<(String, ManagedRealmRemoveDeviceResponder)> {
2463 if let ManagedRealmRequest::RemoveDevice { path, responder } = self {
2464 Some((path, responder))
2465 } else {
2466 None
2467 }
2468 }
2469
2470 #[allow(irrefutable_let_patterns)]
2471 pub fn into_get_devfs(
2472 self,
2473 ) -> Option<(
2474 fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>,
2475 ManagedRealmControlHandle,
2476 )> {
2477 if let ManagedRealmRequest::GetDevfs { devfs, control_handle } = self {
2478 Some((devfs, control_handle))
2479 } else {
2480 None
2481 }
2482 }
2483
2484 #[allow(irrefutable_let_patterns)]
2485 pub fn into_start_child_component(
2486 self,
2487 ) -> Option<(String, ManagedRealmStartChildComponentResponder)> {
2488 if let ManagedRealmRequest::StartChildComponent { child_name, responder } = self {
2489 Some((child_name, responder))
2490 } else {
2491 None
2492 }
2493 }
2494
2495 #[allow(irrefutable_let_patterns)]
2496 pub fn into_stop_child_component(
2497 self,
2498 ) -> Option<(String, ManagedRealmStopChildComponentResponder)> {
2499 if let ManagedRealmRequest::StopChildComponent { child_name, responder } = self {
2500 Some((child_name, responder))
2501 } else {
2502 None
2503 }
2504 }
2505
2506 #[allow(irrefutable_let_patterns)]
2507 pub fn into_shutdown(self) -> Option<(ManagedRealmControlHandle)> {
2508 if let ManagedRealmRequest::Shutdown { control_handle } = self {
2509 Some((control_handle))
2510 } else {
2511 None
2512 }
2513 }
2514
2515 #[allow(irrefutable_let_patterns)]
2516 pub fn into_open_diagnostics_directory(
2517 self,
2518 ) -> Option<(
2519 String,
2520 fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>,
2521 ManagedRealmControlHandle,
2522 )> {
2523 if let ManagedRealmRequest::OpenDiagnosticsDirectory {
2524 child_name,
2525 directory,
2526 control_handle,
2527 } = self
2528 {
2529 Some((child_name, directory, control_handle))
2530 } else {
2531 None
2532 }
2533 }
2534
2535 #[allow(irrefutable_let_patterns)]
2536 pub fn into_get_crash_listener(
2537 self,
2538 ) -> Option<(fidl::endpoints::ServerEnd<CrashListenerMarker>, ManagedRealmControlHandle)> {
2539 if let ManagedRealmRequest::GetCrashListener { listener, control_handle } = self {
2540 Some((listener, control_handle))
2541 } else {
2542 None
2543 }
2544 }
2545
2546 pub fn method_name(&self) -> &'static str {
2548 match *self {
2549 ManagedRealmRequest::GetMoniker { .. } => "get_moniker",
2550 ManagedRealmRequest::ConnectToProtocol { .. } => "connect_to_protocol",
2551 ManagedRealmRequest::ConnectToService { .. } => "connect_to_service",
2552 ManagedRealmRequest::AddDevice { .. } => "add_device",
2553 ManagedRealmRequest::RemoveDevice { .. } => "remove_device",
2554 ManagedRealmRequest::GetDevfs { .. } => "get_devfs",
2555 ManagedRealmRequest::StartChildComponent { .. } => "start_child_component",
2556 ManagedRealmRequest::StopChildComponent { .. } => "stop_child_component",
2557 ManagedRealmRequest::Shutdown { .. } => "shutdown",
2558 ManagedRealmRequest::OpenDiagnosticsDirectory { .. } => "open_diagnostics_directory",
2559 ManagedRealmRequest::GetCrashListener { .. } => "get_crash_listener",
2560 }
2561 }
2562}
2563
2564#[derive(Debug, Clone)]
2565pub struct ManagedRealmControlHandle {
2566 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
2567}
2568
2569impl ManagedRealmControlHandle {
2570 pub fn shutdown_with_epitaph(&self, status: impl Into<fidl::Epitaph>) {
2571 self.inner.shutdown_with_epitaph(status.into())
2572 }
2573}
2574
2575impl fidl::endpoints::ControlHandle for ManagedRealmControlHandle {
2576 fn shutdown(&self) {
2577 self.inner.shutdown()
2578 }
2579
2580 fn shutdown_with_epitaph(&self, status: fidl::Epitaph) {
2581 self.inner.shutdown_with_epitaph(status)
2582 }
2583
2584 fn is_closed(&self) -> bool {
2585 self.inner.channel().is_closed()
2586 }
2587 fn on_closed(&self) -> fidl::OnSignalsRef<'_> {
2588 self.inner.channel().on_closed()
2589 }
2590
2591 #[cfg(target_os = "fuchsia")]
2592 fn signal_peer(
2593 &self,
2594 clear_mask: zx::Signals,
2595 set_mask: zx::Signals,
2596 ) -> Result<(), zx_status::Status> {
2597 use fidl::Peered;
2598 self.inner.channel().signal_peer(clear_mask, set_mask)
2599 }
2600}
2601
2602impl ManagedRealmControlHandle {
2603 pub fn send_on_shutdown(&self) -> Result<(), fidl::Error> {
2604 self.inner.send::<fidl::encoding::EmptyPayload>(
2605 (),
2606 0,
2607 0x1dff0b58a5b546be,
2608 fidl::encoding::DynamicFlags::empty(),
2609 )
2610 }
2611}
2612
2613#[must_use = "FIDL methods require a response to be sent"]
2614#[derive(Debug)]
2615pub struct ManagedRealmGetMonikerResponder {
2616 control_handle: std::mem::ManuallyDrop<ManagedRealmControlHandle>,
2617 tx_id: u32,
2618}
2619
2620impl std::ops::Drop for ManagedRealmGetMonikerResponder {
2624 fn drop(&mut self) {
2625 self.control_handle.shutdown();
2626 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
2628 }
2629}
2630
2631impl fidl::endpoints::Responder for ManagedRealmGetMonikerResponder {
2632 type ControlHandle = ManagedRealmControlHandle;
2633
2634 fn control_handle(&self) -> &ManagedRealmControlHandle {
2635 &self.control_handle
2636 }
2637
2638 fn drop_without_shutdown(mut self) {
2639 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
2641 std::mem::forget(self);
2643 }
2644}
2645
2646impl ManagedRealmGetMonikerResponder {
2647 pub fn send(self, mut moniker: &str) -> Result<(), fidl::Error> {
2651 let _result = self.send_raw(moniker);
2652 if _result.is_err() {
2653 self.control_handle.shutdown();
2654 }
2655 self.drop_without_shutdown();
2656 _result
2657 }
2658
2659 pub fn send_no_shutdown_on_err(self, mut moniker: &str) -> Result<(), fidl::Error> {
2661 let _result = self.send_raw(moniker);
2662 self.drop_without_shutdown();
2663 _result
2664 }
2665
2666 fn send_raw(&self, mut moniker: &str) -> Result<(), fidl::Error> {
2667 self.control_handle.inner.send::<ManagedRealmGetMonikerResponse>(
2668 (moniker,),
2669 self.tx_id,
2670 0xec8f2bf894ddc5f,
2671 fidl::encoding::DynamicFlags::empty(),
2672 )
2673 }
2674}
2675
2676#[must_use = "FIDL methods require a response to be sent"]
2677#[derive(Debug)]
2678pub struct ManagedRealmAddDeviceResponder {
2679 control_handle: std::mem::ManuallyDrop<ManagedRealmControlHandle>,
2680 tx_id: u32,
2681}
2682
2683impl std::ops::Drop for ManagedRealmAddDeviceResponder {
2687 fn drop(&mut self) {
2688 self.control_handle.shutdown();
2689 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
2691 }
2692}
2693
2694impl fidl::endpoints::Responder for ManagedRealmAddDeviceResponder {
2695 type ControlHandle = ManagedRealmControlHandle;
2696
2697 fn control_handle(&self) -> &ManagedRealmControlHandle {
2698 &self.control_handle
2699 }
2700
2701 fn drop_without_shutdown(mut self) {
2702 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
2704 std::mem::forget(self);
2706 }
2707}
2708
2709impl ManagedRealmAddDeviceResponder {
2710 pub fn send(self, mut result: Result<(), i32>) -> Result<(), fidl::Error> {
2714 let _result = self.send_raw(result);
2715 if _result.is_err() {
2716 self.control_handle.shutdown();
2717 }
2718 self.drop_without_shutdown();
2719 _result
2720 }
2721
2722 pub fn send_no_shutdown_on_err(self, mut result: Result<(), i32>) -> Result<(), fidl::Error> {
2724 let _result = self.send_raw(result);
2725 self.drop_without_shutdown();
2726 _result
2727 }
2728
2729 fn send_raw(&self, mut result: Result<(), i32>) -> Result<(), fidl::Error> {
2730 self.control_handle
2731 .inner
2732 .send::<fidl::encoding::ResultType<fidl::encoding::EmptyStruct, i32>>(
2733 result,
2734 self.tx_id,
2735 0x789925e6f5d47c07,
2736 fidl::encoding::DynamicFlags::empty(),
2737 )
2738 }
2739}
2740
2741#[must_use = "FIDL methods require a response to be sent"]
2742#[derive(Debug)]
2743pub struct ManagedRealmRemoveDeviceResponder {
2744 control_handle: std::mem::ManuallyDrop<ManagedRealmControlHandle>,
2745 tx_id: u32,
2746}
2747
2748impl std::ops::Drop for ManagedRealmRemoveDeviceResponder {
2752 fn drop(&mut self) {
2753 self.control_handle.shutdown();
2754 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
2756 }
2757}
2758
2759impl fidl::endpoints::Responder for ManagedRealmRemoveDeviceResponder {
2760 type ControlHandle = ManagedRealmControlHandle;
2761
2762 fn control_handle(&self) -> &ManagedRealmControlHandle {
2763 &self.control_handle
2764 }
2765
2766 fn drop_without_shutdown(mut self) {
2767 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
2769 std::mem::forget(self);
2771 }
2772}
2773
2774impl ManagedRealmRemoveDeviceResponder {
2775 pub fn send(self, mut result: Result<(), i32>) -> Result<(), fidl::Error> {
2779 let _result = self.send_raw(result);
2780 if _result.is_err() {
2781 self.control_handle.shutdown();
2782 }
2783 self.drop_without_shutdown();
2784 _result
2785 }
2786
2787 pub fn send_no_shutdown_on_err(self, mut result: Result<(), i32>) -> Result<(), fidl::Error> {
2789 let _result = self.send_raw(result);
2790 self.drop_without_shutdown();
2791 _result
2792 }
2793
2794 fn send_raw(&self, mut result: Result<(), i32>) -> Result<(), fidl::Error> {
2795 self.control_handle
2796 .inner
2797 .send::<fidl::encoding::ResultType<fidl::encoding::EmptyStruct, i32>>(
2798 result,
2799 self.tx_id,
2800 0x6cffbba70ac757cc,
2801 fidl::encoding::DynamicFlags::empty(),
2802 )
2803 }
2804}
2805
2806#[must_use = "FIDL methods require a response to be sent"]
2807#[derive(Debug)]
2808pub struct ManagedRealmStartChildComponentResponder {
2809 control_handle: std::mem::ManuallyDrop<ManagedRealmControlHandle>,
2810 tx_id: u32,
2811}
2812
2813impl std::ops::Drop for ManagedRealmStartChildComponentResponder {
2817 fn drop(&mut self) {
2818 self.control_handle.shutdown();
2819 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
2821 }
2822}
2823
2824impl fidl::endpoints::Responder for ManagedRealmStartChildComponentResponder {
2825 type ControlHandle = ManagedRealmControlHandle;
2826
2827 fn control_handle(&self) -> &ManagedRealmControlHandle {
2828 &self.control_handle
2829 }
2830
2831 fn drop_without_shutdown(mut self) {
2832 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
2834 std::mem::forget(self);
2836 }
2837}
2838
2839impl ManagedRealmStartChildComponentResponder {
2840 pub fn send(self, mut result: Result<(), i32>) -> Result<(), fidl::Error> {
2844 let _result = self.send_raw(result);
2845 if _result.is_err() {
2846 self.control_handle.shutdown();
2847 }
2848 self.drop_without_shutdown();
2849 _result
2850 }
2851
2852 pub fn send_no_shutdown_on_err(self, mut result: Result<(), i32>) -> Result<(), fidl::Error> {
2854 let _result = self.send_raw(result);
2855 self.drop_without_shutdown();
2856 _result
2857 }
2858
2859 fn send_raw(&self, mut result: Result<(), i32>) -> Result<(), fidl::Error> {
2860 self.control_handle
2861 .inner
2862 .send::<fidl::encoding::ResultType<fidl::encoding::EmptyStruct, i32>>(
2863 result,
2864 self.tx_id,
2865 0x20dfa243752906a1,
2866 fidl::encoding::DynamicFlags::empty(),
2867 )
2868 }
2869}
2870
2871#[must_use = "FIDL methods require a response to be sent"]
2872#[derive(Debug)]
2873pub struct ManagedRealmStopChildComponentResponder {
2874 control_handle: std::mem::ManuallyDrop<ManagedRealmControlHandle>,
2875 tx_id: u32,
2876}
2877
2878impl std::ops::Drop for ManagedRealmStopChildComponentResponder {
2882 fn drop(&mut self) {
2883 self.control_handle.shutdown();
2884 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
2886 }
2887}
2888
2889impl fidl::endpoints::Responder for ManagedRealmStopChildComponentResponder {
2890 type ControlHandle = ManagedRealmControlHandle;
2891
2892 fn control_handle(&self) -> &ManagedRealmControlHandle {
2893 &self.control_handle
2894 }
2895
2896 fn drop_without_shutdown(mut self) {
2897 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
2899 std::mem::forget(self);
2901 }
2902}
2903
2904impl ManagedRealmStopChildComponentResponder {
2905 pub fn send(self, mut result: Result<(), i32>) -> Result<(), fidl::Error> {
2909 let _result = self.send_raw(result);
2910 if _result.is_err() {
2911 self.control_handle.shutdown();
2912 }
2913 self.drop_without_shutdown();
2914 _result
2915 }
2916
2917 pub fn send_no_shutdown_on_err(self, mut result: Result<(), i32>) -> Result<(), fidl::Error> {
2919 let _result = self.send_raw(result);
2920 self.drop_without_shutdown();
2921 _result
2922 }
2923
2924 fn send_raw(&self, mut result: Result<(), i32>) -> Result<(), fidl::Error> {
2925 self.control_handle
2926 .inner
2927 .send::<fidl::encoding::ResultType<fidl::encoding::EmptyStruct, i32>>(
2928 result,
2929 self.tx_id,
2930 0x5ecfe48430aeeca7,
2931 fidl::encoding::DynamicFlags::empty(),
2932 )
2933 }
2934}
2935
2936#[derive(Debug, Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash)]
2937pub struct SandboxMarker;
2938
2939impl fidl::endpoints::ProtocolMarker for SandboxMarker {
2940 type Proxy = SandboxProxy;
2941 type RequestStream = SandboxRequestStream;
2942 #[cfg(target_os = "fuchsia")]
2943 type SynchronousProxy = SandboxSynchronousProxy;
2944
2945 const DEBUG_NAME: &'static str = "fuchsia.netemul.Sandbox";
2946}
2947impl fidl::endpoints::DiscoverableProtocolMarker for SandboxMarker {}
2948
2949pub trait SandboxProxyInterface: Send + Sync {
2950 fn r#create_realm(
2951 &self,
2952 realm: fidl::endpoints::ServerEnd<ManagedRealmMarker>,
2953 options: RealmOptions,
2954 ) -> Result<(), fidl::Error>;
2955 fn r#get_network_context(
2956 &self,
2957 network_context: fidl::endpoints::ServerEnd<
2958 fidl_fuchsia_netemul_network::NetworkContextMarker,
2959 >,
2960 ) -> Result<(), fidl::Error>;
2961}
2962#[derive(Debug)]
2963#[cfg(target_os = "fuchsia")]
2964pub struct SandboxSynchronousProxy {
2965 client: fidl::client::sync::Client,
2966}
2967
2968#[cfg(target_os = "fuchsia")]
2969impl fidl::endpoints::SynchronousProxy for SandboxSynchronousProxy {
2970 type Proxy = SandboxProxy;
2971 type Protocol = SandboxMarker;
2972
2973 fn from_channel(inner: fidl::Channel) -> Self {
2974 Self::new(inner)
2975 }
2976
2977 fn into_channel(self) -> fidl::Channel {
2978 self.client.into_channel()
2979 }
2980
2981 fn as_channel(&self) -> &fidl::Channel {
2982 self.client.as_channel()
2983 }
2984}
2985
2986#[cfg(target_os = "fuchsia")]
2987impl SandboxSynchronousProxy {
2988 pub fn new(channel: fidl::Channel) -> Self {
2989 Self { client: fidl::client::sync::Client::new(channel) }
2990 }
2991
2992 pub fn into_channel(self) -> fidl::Channel {
2993 self.client.into_channel()
2994 }
2995
2996 pub fn wait_for_event(
2999 &self,
3000 deadline: zx::MonotonicInstant,
3001 ) -> Result<SandboxEvent, fidl::Error> {
3002 SandboxEvent::decode(self.client.wait_for_event::<SandboxMarker>(deadline)?)
3003 }
3004
3005 pub fn r#create_realm(
3016 &self,
3017 mut realm: fidl::endpoints::ServerEnd<ManagedRealmMarker>,
3018 mut options: RealmOptions,
3019 ) -> Result<(), fidl::Error> {
3020 self.client.send::<SandboxCreateRealmRequest>(
3021 (realm, &mut options),
3022 0x25d0bc5f1006a0c9,
3023 fidl::encoding::DynamicFlags::empty(),
3024 )
3025 }
3026
3027 pub fn r#get_network_context(
3031 &self,
3032 mut network_context: fidl::endpoints::ServerEnd<
3033 fidl_fuchsia_netemul_network::NetworkContextMarker,
3034 >,
3035 ) -> Result<(), fidl::Error> {
3036 self.client.send::<SandboxGetNetworkContextRequest>(
3037 (network_context,),
3038 0x140cb104c2605970,
3039 fidl::encoding::DynamicFlags::empty(),
3040 )
3041 }
3042}
3043
3044#[cfg(target_os = "fuchsia")]
3045impl From<SandboxSynchronousProxy> for zx::NullableHandle {
3046 fn from(value: SandboxSynchronousProxy) -> Self {
3047 value.into_channel().into()
3048 }
3049}
3050
3051#[cfg(target_os = "fuchsia")]
3052impl From<fidl::Channel> for SandboxSynchronousProxy {
3053 fn from(value: fidl::Channel) -> Self {
3054 Self::new(value)
3055 }
3056}
3057
3058#[cfg(target_os = "fuchsia")]
3059impl fidl::endpoints::FromClient for SandboxSynchronousProxy {
3060 type Protocol = SandboxMarker;
3061
3062 fn from_client(value: fidl::endpoints::ClientEnd<SandboxMarker>) -> Self {
3063 Self::new(value.into_channel())
3064 }
3065}
3066
3067#[derive(Debug, Clone)]
3068pub struct SandboxProxy {
3069 client: fidl::client::Client<fidl::encoding::DefaultFuchsiaResourceDialect>,
3070}
3071
3072impl fidl::endpoints::Proxy for SandboxProxy {
3073 type Protocol = SandboxMarker;
3074
3075 fn from_channel(inner: ::fidl::AsyncChannel) -> Self {
3076 Self::new(inner)
3077 }
3078
3079 fn into_channel(self) -> Result<::fidl::AsyncChannel, Self> {
3080 self.client.into_channel().map_err(|client| Self { client })
3081 }
3082
3083 fn as_channel(&self) -> &::fidl::AsyncChannel {
3084 self.client.as_channel()
3085 }
3086}
3087
3088impl SandboxProxy {
3089 pub fn new(channel: ::fidl::AsyncChannel) -> Self {
3091 let protocol_name = <SandboxMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
3092 Self { client: fidl::client::Client::new(channel, protocol_name) }
3093 }
3094
3095 pub fn take_event_stream(&self) -> SandboxEventStream {
3101 SandboxEventStream { event_receiver: self.client.take_event_receiver() }
3102 }
3103
3104 pub fn r#create_realm(
3115 &self,
3116 mut realm: fidl::endpoints::ServerEnd<ManagedRealmMarker>,
3117 mut options: RealmOptions,
3118 ) -> Result<(), fidl::Error> {
3119 SandboxProxyInterface::r#create_realm(self, realm, options)
3120 }
3121
3122 pub fn r#get_network_context(
3126 &self,
3127 mut network_context: fidl::endpoints::ServerEnd<
3128 fidl_fuchsia_netemul_network::NetworkContextMarker,
3129 >,
3130 ) -> Result<(), fidl::Error> {
3131 SandboxProxyInterface::r#get_network_context(self, network_context)
3132 }
3133}
3134
3135impl SandboxProxyInterface for SandboxProxy {
3136 fn r#create_realm(
3137 &self,
3138 mut realm: fidl::endpoints::ServerEnd<ManagedRealmMarker>,
3139 mut options: RealmOptions,
3140 ) -> Result<(), fidl::Error> {
3141 self.client.send::<SandboxCreateRealmRequest>(
3142 (realm, &mut options),
3143 0x25d0bc5f1006a0c9,
3144 fidl::encoding::DynamicFlags::empty(),
3145 )
3146 }
3147
3148 fn r#get_network_context(
3149 &self,
3150 mut network_context: fidl::endpoints::ServerEnd<
3151 fidl_fuchsia_netemul_network::NetworkContextMarker,
3152 >,
3153 ) -> Result<(), fidl::Error> {
3154 self.client.send::<SandboxGetNetworkContextRequest>(
3155 (network_context,),
3156 0x140cb104c2605970,
3157 fidl::encoding::DynamicFlags::empty(),
3158 )
3159 }
3160}
3161
3162pub struct SandboxEventStream {
3163 event_receiver: fidl::client::EventReceiver<fidl::encoding::DefaultFuchsiaResourceDialect>,
3164}
3165
3166impl std::marker::Unpin for SandboxEventStream {}
3167
3168impl futures::stream::FusedStream for SandboxEventStream {
3169 fn is_terminated(&self) -> bool {
3170 self.event_receiver.is_terminated()
3171 }
3172}
3173
3174impl futures::Stream for SandboxEventStream {
3175 type Item = Result<SandboxEvent, fidl::Error>;
3176
3177 fn poll_next(
3178 mut self: std::pin::Pin<&mut Self>,
3179 cx: &mut std::task::Context<'_>,
3180 ) -> std::task::Poll<Option<Self::Item>> {
3181 match futures::ready!(futures::stream::StreamExt::poll_next_unpin(
3182 &mut self.event_receiver,
3183 cx
3184 )?) {
3185 Some(buf) => std::task::Poll::Ready(Some(SandboxEvent::decode(buf))),
3186 None => std::task::Poll::Ready(None),
3187 }
3188 }
3189}
3190
3191#[derive(Debug)]
3192pub enum SandboxEvent {}
3193
3194impl SandboxEvent {
3195 fn decode(
3197 mut buf: <fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc,
3198 ) -> Result<SandboxEvent, fidl::Error> {
3199 let (bytes, _handles) = buf.split_mut();
3200 let (tx_header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
3201 debug_assert_eq!(tx_header.tx_id, 0);
3202 match tx_header.ordinal {
3203 _ => Err(fidl::Error::UnknownOrdinal {
3204 ordinal: tx_header.ordinal,
3205 protocol_name: <SandboxMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
3206 }),
3207 }
3208 }
3209}
3210
3211pub struct SandboxRequestStream {
3213 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
3214 is_terminated: bool,
3215}
3216
3217impl std::marker::Unpin for SandboxRequestStream {}
3218
3219impl futures::stream::FusedStream for SandboxRequestStream {
3220 fn is_terminated(&self) -> bool {
3221 self.is_terminated
3222 }
3223}
3224
3225impl fidl::endpoints::RequestStream for SandboxRequestStream {
3226 type Protocol = SandboxMarker;
3227 type ControlHandle = SandboxControlHandle;
3228
3229 fn from_channel(channel: ::fidl::AsyncChannel) -> Self {
3230 Self { inner: std::sync::Arc::new(fidl::ServeInner::new(channel)), is_terminated: false }
3231 }
3232
3233 fn control_handle(&self) -> Self::ControlHandle {
3234 SandboxControlHandle { inner: self.inner.clone() }
3235 }
3236
3237 fn into_inner(
3238 self,
3239 ) -> (::std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>, bool)
3240 {
3241 (self.inner, self.is_terminated)
3242 }
3243
3244 fn from_inner(
3245 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
3246 is_terminated: bool,
3247 ) -> Self {
3248 Self { inner, is_terminated }
3249 }
3250}
3251
3252impl futures::Stream for SandboxRequestStream {
3253 type Item = Result<SandboxRequest, fidl::Error>;
3254
3255 fn poll_next(
3256 mut self: std::pin::Pin<&mut Self>,
3257 cx: &mut std::task::Context<'_>,
3258 ) -> std::task::Poll<Option<Self::Item>> {
3259 let this = &mut *self;
3260 if this.inner.check_shutdown(cx) {
3261 this.is_terminated = true;
3262 return std::task::Poll::Ready(None);
3263 }
3264 if this.is_terminated {
3265 panic!("polled SandboxRequestStream after completion");
3266 }
3267 fidl::encoding::with_tls_decode_buf::<_, fidl::encoding::DefaultFuchsiaResourceDialect>(
3268 |bytes, handles| {
3269 match this.inner.channel().read_etc(cx, bytes, handles) {
3270 std::task::Poll::Ready(Ok(())) => {}
3271 std::task::Poll::Pending => return std::task::Poll::Pending,
3272 std::task::Poll::Ready(Err(zx_status::Status::PEER_CLOSED)) => {
3273 this.is_terminated = true;
3274 return std::task::Poll::Ready(None);
3275 }
3276 std::task::Poll::Ready(Err(e)) => {
3277 return std::task::Poll::Ready(Some(Err(fidl::Error::ServerRequestRead(
3278 e.into(),
3279 ))));
3280 }
3281 }
3282
3283 let (header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
3285
3286 std::task::Poll::Ready(Some(match header.ordinal {
3287 0x25d0bc5f1006a0c9 => {
3288 header.validate_request_tx_id(fidl::MethodType::OneWay)?;
3289 let mut req = fidl::new_empty!(
3290 SandboxCreateRealmRequest,
3291 fidl::encoding::DefaultFuchsiaResourceDialect
3292 );
3293 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<SandboxCreateRealmRequest>(&header, _body_bytes, handles, &mut req)?;
3294 let control_handle = SandboxControlHandle { inner: this.inner.clone() };
3295 Ok(SandboxRequest::CreateRealm {
3296 realm: req.realm,
3297 options: req.options,
3298
3299 control_handle,
3300 })
3301 }
3302 0x140cb104c2605970 => {
3303 header.validate_request_tx_id(fidl::MethodType::OneWay)?;
3304 let mut req = fidl::new_empty!(
3305 SandboxGetNetworkContextRequest,
3306 fidl::encoding::DefaultFuchsiaResourceDialect
3307 );
3308 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<SandboxGetNetworkContextRequest>(&header, _body_bytes, handles, &mut req)?;
3309 let control_handle = SandboxControlHandle { inner: this.inner.clone() };
3310 Ok(SandboxRequest::GetNetworkContext {
3311 network_context: req.network_context,
3312
3313 control_handle,
3314 })
3315 }
3316 _ => Err(fidl::Error::UnknownOrdinal {
3317 ordinal: header.ordinal,
3318 protocol_name:
3319 <SandboxMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
3320 }),
3321 }))
3322 },
3323 )
3324 }
3325}
3326
3327#[derive(Debug)]
3338pub enum SandboxRequest {
3339 CreateRealm {
3350 realm: fidl::endpoints::ServerEnd<ManagedRealmMarker>,
3351 options: RealmOptions,
3352 control_handle: SandboxControlHandle,
3353 },
3354 GetNetworkContext {
3358 network_context:
3359 fidl::endpoints::ServerEnd<fidl_fuchsia_netemul_network::NetworkContextMarker>,
3360 control_handle: SandboxControlHandle,
3361 },
3362}
3363
3364impl SandboxRequest {
3365 #[allow(irrefutable_let_patterns)]
3366 pub fn into_create_realm(
3367 self,
3368 ) -> Option<(fidl::endpoints::ServerEnd<ManagedRealmMarker>, RealmOptions, SandboxControlHandle)>
3369 {
3370 if let SandboxRequest::CreateRealm { realm, options, control_handle } = self {
3371 Some((realm, options, control_handle))
3372 } else {
3373 None
3374 }
3375 }
3376
3377 #[allow(irrefutable_let_patterns)]
3378 pub fn into_get_network_context(
3379 self,
3380 ) -> Option<(
3381 fidl::endpoints::ServerEnd<fidl_fuchsia_netemul_network::NetworkContextMarker>,
3382 SandboxControlHandle,
3383 )> {
3384 if let SandboxRequest::GetNetworkContext { network_context, control_handle } = self {
3385 Some((network_context, control_handle))
3386 } else {
3387 None
3388 }
3389 }
3390
3391 pub fn method_name(&self) -> &'static str {
3393 match *self {
3394 SandboxRequest::CreateRealm { .. } => "create_realm",
3395 SandboxRequest::GetNetworkContext { .. } => "get_network_context",
3396 }
3397 }
3398}
3399
3400#[derive(Debug, Clone)]
3401pub struct SandboxControlHandle {
3402 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
3403}
3404
3405impl SandboxControlHandle {
3406 pub fn shutdown_with_epitaph(&self, status: impl Into<fidl::Epitaph>) {
3407 self.inner.shutdown_with_epitaph(status.into())
3408 }
3409}
3410
3411impl fidl::endpoints::ControlHandle for SandboxControlHandle {
3412 fn shutdown(&self) {
3413 self.inner.shutdown()
3414 }
3415
3416 fn shutdown_with_epitaph(&self, status: fidl::Epitaph) {
3417 self.inner.shutdown_with_epitaph(status)
3418 }
3419
3420 fn is_closed(&self) -> bool {
3421 self.inner.channel().is_closed()
3422 }
3423 fn on_closed(&self) -> fidl::OnSignalsRef<'_> {
3424 self.inner.channel().on_closed()
3425 }
3426
3427 #[cfg(target_os = "fuchsia")]
3428 fn signal_peer(
3429 &self,
3430 clear_mask: zx::Signals,
3431 set_mask: zx::Signals,
3432 ) -> Result<(), zx_status::Status> {
3433 use fidl::Peered;
3434 self.inner.channel().signal_peer(clear_mask, set_mask)
3435 }
3436}
3437
3438impl SandboxControlHandle {}
3439
3440mod internal {
3441 use super::*;
3442
3443 impl fidl::encoding::ResourceTypeMarker for ManagedRealmAddDeviceRequest {
3444 type Borrowed<'a> = &'a mut Self;
3445 fn take_or_borrow<'a>(
3446 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
3447 ) -> Self::Borrowed<'a> {
3448 value
3449 }
3450 }
3451
3452 unsafe impl fidl::encoding::TypeMarker for ManagedRealmAddDeviceRequest {
3453 type Owned = Self;
3454
3455 #[inline(always)]
3456 fn inline_align(_context: fidl::encoding::Context) -> usize {
3457 8
3458 }
3459
3460 #[inline(always)]
3461 fn inline_size(_context: fidl::encoding::Context) -> usize {
3462 24
3463 }
3464 }
3465
3466 unsafe impl
3467 fidl::encoding::Encode<
3468 ManagedRealmAddDeviceRequest,
3469 fidl::encoding::DefaultFuchsiaResourceDialect,
3470 > for &mut ManagedRealmAddDeviceRequest
3471 {
3472 #[inline]
3473 unsafe fn encode(
3474 self,
3475 encoder: &mut fidl::encoding::Encoder<
3476 '_,
3477 fidl::encoding::DefaultFuchsiaResourceDialect,
3478 >,
3479 offset: usize,
3480 _depth: fidl::encoding::Depth,
3481 ) -> fidl::Result<()> {
3482 encoder.debug_check_bounds::<ManagedRealmAddDeviceRequest>(offset);
3483 fidl::encoding::Encode::<
3485 ManagedRealmAddDeviceRequest,
3486 fidl::encoding::DefaultFuchsiaResourceDialect,
3487 >::encode(
3488 (
3489 <fidl::encoding::UnboundedString as fidl::encoding::ValueTypeMarker>::borrow(
3490 &self.path,
3491 ),
3492 <fidl::encoding::Endpoint<
3493 fidl::endpoints::ClientEnd<
3494 fidl_fuchsia_netemul_network::DeviceProxy_Marker,
3495 >,
3496 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow(
3497 &mut self.device
3498 ),
3499 ),
3500 encoder,
3501 offset,
3502 _depth,
3503 )
3504 }
3505 }
3506 unsafe impl<
3507 T0: fidl::encoding::Encode<
3508 fidl::encoding::UnboundedString,
3509 fidl::encoding::DefaultFuchsiaResourceDialect,
3510 >,
3511 T1: fidl::encoding::Encode<
3512 fidl::encoding::Endpoint<
3513 fidl::endpoints::ClientEnd<fidl_fuchsia_netemul_network::DeviceProxy_Marker>,
3514 >,
3515 fidl::encoding::DefaultFuchsiaResourceDialect,
3516 >,
3517 >
3518 fidl::encoding::Encode<
3519 ManagedRealmAddDeviceRequest,
3520 fidl::encoding::DefaultFuchsiaResourceDialect,
3521 > for (T0, T1)
3522 {
3523 #[inline]
3524 unsafe fn encode(
3525 self,
3526 encoder: &mut fidl::encoding::Encoder<
3527 '_,
3528 fidl::encoding::DefaultFuchsiaResourceDialect,
3529 >,
3530 offset: usize,
3531 depth: fidl::encoding::Depth,
3532 ) -> fidl::Result<()> {
3533 encoder.debug_check_bounds::<ManagedRealmAddDeviceRequest>(offset);
3534 unsafe {
3537 let ptr = encoder.buf.as_mut_ptr().add(offset).offset(16);
3538 (ptr as *mut u64).write_unaligned(0);
3539 }
3540 self.0.encode(encoder, offset + 0, depth)?;
3542 self.1.encode(encoder, offset + 16, depth)?;
3543 Ok(())
3544 }
3545 }
3546
3547 impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
3548 for ManagedRealmAddDeviceRequest
3549 {
3550 #[inline(always)]
3551 fn new_empty() -> Self {
3552 Self {
3553 path: fidl::new_empty!(
3554 fidl::encoding::UnboundedString,
3555 fidl::encoding::DefaultFuchsiaResourceDialect
3556 ),
3557 device: fidl::new_empty!(
3558 fidl::encoding::Endpoint<
3559 fidl::endpoints::ClientEnd<
3560 fidl_fuchsia_netemul_network::DeviceProxy_Marker,
3561 >,
3562 >,
3563 fidl::encoding::DefaultFuchsiaResourceDialect
3564 ),
3565 }
3566 }
3567
3568 #[inline]
3569 unsafe fn decode(
3570 &mut self,
3571 decoder: &mut fidl::encoding::Decoder<
3572 '_,
3573 fidl::encoding::DefaultFuchsiaResourceDialect,
3574 >,
3575 offset: usize,
3576 _depth: fidl::encoding::Depth,
3577 ) -> fidl::Result<()> {
3578 decoder.debug_check_bounds::<Self>(offset);
3579 let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(16) };
3581 let padval = unsafe { (ptr as *const u64).read_unaligned() };
3582 let mask = 0xffffffff00000000u64;
3583 let maskedval = padval & mask;
3584 if maskedval != 0 {
3585 return Err(fidl::Error::NonZeroPadding {
3586 padding_start: offset + 16 + ((mask as u64).trailing_zeros() / 8) as usize,
3587 });
3588 }
3589 fidl::decode!(
3590 fidl::encoding::UnboundedString,
3591 fidl::encoding::DefaultFuchsiaResourceDialect,
3592 &mut self.path,
3593 decoder,
3594 offset + 0,
3595 _depth
3596 )?;
3597 fidl::decode!(
3598 fidl::encoding::Endpoint<
3599 fidl::endpoints::ClientEnd<fidl_fuchsia_netemul_network::DeviceProxy_Marker>,
3600 >,
3601 fidl::encoding::DefaultFuchsiaResourceDialect,
3602 &mut self.device,
3603 decoder,
3604 offset + 16,
3605 _depth
3606 )?;
3607 Ok(())
3608 }
3609 }
3610
3611 impl fidl::encoding::ResourceTypeMarker for ManagedRealmConnectToProtocolRequest {
3612 type Borrowed<'a> = &'a mut Self;
3613 fn take_or_borrow<'a>(
3614 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
3615 ) -> Self::Borrowed<'a> {
3616 value
3617 }
3618 }
3619
3620 unsafe impl fidl::encoding::TypeMarker for ManagedRealmConnectToProtocolRequest {
3621 type Owned = Self;
3622
3623 #[inline(always)]
3624 fn inline_align(_context: fidl::encoding::Context) -> usize {
3625 8
3626 }
3627
3628 #[inline(always)]
3629 fn inline_size(_context: fidl::encoding::Context) -> usize {
3630 40
3631 }
3632 }
3633
3634 unsafe impl
3635 fidl::encoding::Encode<
3636 ManagedRealmConnectToProtocolRequest,
3637 fidl::encoding::DefaultFuchsiaResourceDialect,
3638 > for &mut ManagedRealmConnectToProtocolRequest
3639 {
3640 #[inline]
3641 unsafe fn encode(
3642 self,
3643 encoder: &mut fidl::encoding::Encoder<
3644 '_,
3645 fidl::encoding::DefaultFuchsiaResourceDialect,
3646 >,
3647 offset: usize,
3648 _depth: fidl::encoding::Depth,
3649 ) -> fidl::Result<()> {
3650 encoder.debug_check_bounds::<ManagedRealmConnectToProtocolRequest>(offset);
3651 fidl::encoding::Encode::<ManagedRealmConnectToProtocolRequest, fidl::encoding::DefaultFuchsiaResourceDialect>::encode(
3653 (
3654 <fidl::encoding::BoundedString<255> as fidl::encoding::ValueTypeMarker>::borrow(&self.protocol_name),
3655 <fidl::encoding::Optional<fidl::encoding::BoundedString<255>> as fidl::encoding::ValueTypeMarker>::borrow(&self.child_name),
3656 <fidl::encoding::HandleType<fidl::Channel, { fidl::ObjectType::CHANNEL.into_raw() }, 2147483648> as fidl::encoding::ResourceTypeMarker>::take_or_borrow(&mut self.req),
3657 ),
3658 encoder, offset, _depth
3659 )
3660 }
3661 }
3662 unsafe impl<
3663 T0: fidl::encoding::Encode<
3664 fidl::encoding::BoundedString<255>,
3665 fidl::encoding::DefaultFuchsiaResourceDialect,
3666 >,
3667 T1: fidl::encoding::Encode<
3668 fidl::encoding::Optional<fidl::encoding::BoundedString<255>>,
3669 fidl::encoding::DefaultFuchsiaResourceDialect,
3670 >,
3671 T2: fidl::encoding::Encode<
3672 fidl::encoding::HandleType<
3673 fidl::Channel,
3674 { fidl::ObjectType::CHANNEL.into_raw() },
3675 2147483648,
3676 >,
3677 fidl::encoding::DefaultFuchsiaResourceDialect,
3678 >,
3679 >
3680 fidl::encoding::Encode<
3681 ManagedRealmConnectToProtocolRequest,
3682 fidl::encoding::DefaultFuchsiaResourceDialect,
3683 > for (T0, T1, T2)
3684 {
3685 #[inline]
3686 unsafe fn encode(
3687 self,
3688 encoder: &mut fidl::encoding::Encoder<
3689 '_,
3690 fidl::encoding::DefaultFuchsiaResourceDialect,
3691 >,
3692 offset: usize,
3693 depth: fidl::encoding::Depth,
3694 ) -> fidl::Result<()> {
3695 encoder.debug_check_bounds::<ManagedRealmConnectToProtocolRequest>(offset);
3696 unsafe {
3699 let ptr = encoder.buf.as_mut_ptr().add(offset).offset(32);
3700 (ptr as *mut u64).write_unaligned(0);
3701 }
3702 self.0.encode(encoder, offset + 0, depth)?;
3704 self.1.encode(encoder, offset + 16, depth)?;
3705 self.2.encode(encoder, offset + 32, depth)?;
3706 Ok(())
3707 }
3708 }
3709
3710 impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
3711 for ManagedRealmConnectToProtocolRequest
3712 {
3713 #[inline(always)]
3714 fn new_empty() -> Self {
3715 Self {
3716 protocol_name: fidl::new_empty!(
3717 fidl::encoding::BoundedString<255>,
3718 fidl::encoding::DefaultFuchsiaResourceDialect
3719 ),
3720 child_name: fidl::new_empty!(
3721 fidl::encoding::Optional<fidl::encoding::BoundedString<255>>,
3722 fidl::encoding::DefaultFuchsiaResourceDialect
3723 ),
3724 req: fidl::new_empty!(fidl::encoding::HandleType<fidl::Channel, { fidl::ObjectType::CHANNEL.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect),
3725 }
3726 }
3727
3728 #[inline]
3729 unsafe fn decode(
3730 &mut self,
3731 decoder: &mut fidl::encoding::Decoder<
3732 '_,
3733 fidl::encoding::DefaultFuchsiaResourceDialect,
3734 >,
3735 offset: usize,
3736 _depth: fidl::encoding::Depth,
3737 ) -> fidl::Result<()> {
3738 decoder.debug_check_bounds::<Self>(offset);
3739 let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(32) };
3741 let padval = unsafe { (ptr as *const u64).read_unaligned() };
3742 let mask = 0xffffffff00000000u64;
3743 let maskedval = padval & mask;
3744 if maskedval != 0 {
3745 return Err(fidl::Error::NonZeroPadding {
3746 padding_start: offset + 32 + ((mask as u64).trailing_zeros() / 8) as usize,
3747 });
3748 }
3749 fidl::decode!(
3750 fidl::encoding::BoundedString<255>,
3751 fidl::encoding::DefaultFuchsiaResourceDialect,
3752 &mut self.protocol_name,
3753 decoder,
3754 offset + 0,
3755 _depth
3756 )?;
3757 fidl::decode!(
3758 fidl::encoding::Optional<fidl::encoding::BoundedString<255>>,
3759 fidl::encoding::DefaultFuchsiaResourceDialect,
3760 &mut self.child_name,
3761 decoder,
3762 offset + 16,
3763 _depth
3764 )?;
3765 fidl::decode!(fidl::encoding::HandleType<fidl::Channel, { fidl::ObjectType::CHANNEL.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect, &mut self.req, decoder, offset + 32, _depth)?;
3766 Ok(())
3767 }
3768 }
3769
3770 impl fidl::encoding::ResourceTypeMarker for ManagedRealmConnectToServiceRequest {
3771 type Borrowed<'a> = &'a mut Self;
3772 fn take_or_borrow<'a>(
3773 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
3774 ) -> Self::Borrowed<'a> {
3775 value
3776 }
3777 }
3778
3779 unsafe impl fidl::encoding::TypeMarker for ManagedRealmConnectToServiceRequest {
3780 type Owned = Self;
3781
3782 #[inline(always)]
3783 fn inline_align(_context: fidl::encoding::Context) -> usize {
3784 8
3785 }
3786
3787 #[inline(always)]
3788 fn inline_size(_context: fidl::encoding::Context) -> usize {
3789 40
3790 }
3791 }
3792
3793 unsafe impl
3794 fidl::encoding::Encode<
3795 ManagedRealmConnectToServiceRequest,
3796 fidl::encoding::DefaultFuchsiaResourceDialect,
3797 > for &mut ManagedRealmConnectToServiceRequest
3798 {
3799 #[inline]
3800 unsafe fn encode(
3801 self,
3802 encoder: &mut fidl::encoding::Encoder<
3803 '_,
3804 fidl::encoding::DefaultFuchsiaResourceDialect,
3805 >,
3806 offset: usize,
3807 _depth: fidl::encoding::Depth,
3808 ) -> fidl::Result<()> {
3809 encoder.debug_check_bounds::<ManagedRealmConnectToServiceRequest>(offset);
3810 fidl::encoding::Encode::<ManagedRealmConnectToServiceRequest, fidl::encoding::DefaultFuchsiaResourceDialect>::encode(
3812 (
3813 <fidl::encoding::BoundedString<255> as fidl::encoding::ValueTypeMarker>::borrow(&self.service_name),
3814 <fidl::encoding::Optional<fidl::encoding::BoundedString<255>> as fidl::encoding::ValueTypeMarker>::borrow(&self.child_name),
3815 <fidl::encoding::HandleType<fidl::Channel, { fidl::ObjectType::CHANNEL.into_raw() }, 2147483648> as fidl::encoding::ResourceTypeMarker>::take_or_borrow(&mut self.req),
3816 ),
3817 encoder, offset, _depth
3818 )
3819 }
3820 }
3821 unsafe impl<
3822 T0: fidl::encoding::Encode<
3823 fidl::encoding::BoundedString<255>,
3824 fidl::encoding::DefaultFuchsiaResourceDialect,
3825 >,
3826 T1: fidl::encoding::Encode<
3827 fidl::encoding::Optional<fidl::encoding::BoundedString<255>>,
3828 fidl::encoding::DefaultFuchsiaResourceDialect,
3829 >,
3830 T2: fidl::encoding::Encode<
3831 fidl::encoding::HandleType<
3832 fidl::Channel,
3833 { fidl::ObjectType::CHANNEL.into_raw() },
3834 2147483648,
3835 >,
3836 fidl::encoding::DefaultFuchsiaResourceDialect,
3837 >,
3838 >
3839 fidl::encoding::Encode<
3840 ManagedRealmConnectToServiceRequest,
3841 fidl::encoding::DefaultFuchsiaResourceDialect,
3842 > for (T0, T1, T2)
3843 {
3844 #[inline]
3845 unsafe fn encode(
3846 self,
3847 encoder: &mut fidl::encoding::Encoder<
3848 '_,
3849 fidl::encoding::DefaultFuchsiaResourceDialect,
3850 >,
3851 offset: usize,
3852 depth: fidl::encoding::Depth,
3853 ) -> fidl::Result<()> {
3854 encoder.debug_check_bounds::<ManagedRealmConnectToServiceRequest>(offset);
3855 unsafe {
3858 let ptr = encoder.buf.as_mut_ptr().add(offset).offset(32);
3859 (ptr as *mut u64).write_unaligned(0);
3860 }
3861 self.0.encode(encoder, offset + 0, depth)?;
3863 self.1.encode(encoder, offset + 16, depth)?;
3864 self.2.encode(encoder, offset + 32, depth)?;
3865 Ok(())
3866 }
3867 }
3868
3869 impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
3870 for ManagedRealmConnectToServiceRequest
3871 {
3872 #[inline(always)]
3873 fn new_empty() -> Self {
3874 Self {
3875 service_name: fidl::new_empty!(
3876 fidl::encoding::BoundedString<255>,
3877 fidl::encoding::DefaultFuchsiaResourceDialect
3878 ),
3879 child_name: fidl::new_empty!(
3880 fidl::encoding::Optional<fidl::encoding::BoundedString<255>>,
3881 fidl::encoding::DefaultFuchsiaResourceDialect
3882 ),
3883 req: fidl::new_empty!(fidl::encoding::HandleType<fidl::Channel, { fidl::ObjectType::CHANNEL.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect),
3884 }
3885 }
3886
3887 #[inline]
3888 unsafe fn decode(
3889 &mut self,
3890 decoder: &mut fidl::encoding::Decoder<
3891 '_,
3892 fidl::encoding::DefaultFuchsiaResourceDialect,
3893 >,
3894 offset: usize,
3895 _depth: fidl::encoding::Depth,
3896 ) -> fidl::Result<()> {
3897 decoder.debug_check_bounds::<Self>(offset);
3898 let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(32) };
3900 let padval = unsafe { (ptr as *const u64).read_unaligned() };
3901 let mask = 0xffffffff00000000u64;
3902 let maskedval = padval & mask;
3903 if maskedval != 0 {
3904 return Err(fidl::Error::NonZeroPadding {
3905 padding_start: offset + 32 + ((mask as u64).trailing_zeros() / 8) as usize,
3906 });
3907 }
3908 fidl::decode!(
3909 fidl::encoding::BoundedString<255>,
3910 fidl::encoding::DefaultFuchsiaResourceDialect,
3911 &mut self.service_name,
3912 decoder,
3913 offset + 0,
3914 _depth
3915 )?;
3916 fidl::decode!(
3917 fidl::encoding::Optional<fidl::encoding::BoundedString<255>>,
3918 fidl::encoding::DefaultFuchsiaResourceDialect,
3919 &mut self.child_name,
3920 decoder,
3921 offset + 16,
3922 _depth
3923 )?;
3924 fidl::decode!(fidl::encoding::HandleType<fidl::Channel, { fidl::ObjectType::CHANNEL.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect, &mut self.req, decoder, offset + 32, _depth)?;
3925 Ok(())
3926 }
3927 }
3928
3929 impl fidl::encoding::ResourceTypeMarker for ManagedRealmGetCrashListenerRequest {
3930 type Borrowed<'a> = &'a mut Self;
3931 fn take_or_borrow<'a>(
3932 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
3933 ) -> Self::Borrowed<'a> {
3934 value
3935 }
3936 }
3937
3938 unsafe impl fidl::encoding::TypeMarker for ManagedRealmGetCrashListenerRequest {
3939 type Owned = Self;
3940
3941 #[inline(always)]
3942 fn inline_align(_context: fidl::encoding::Context) -> usize {
3943 4
3944 }
3945
3946 #[inline(always)]
3947 fn inline_size(_context: fidl::encoding::Context) -> usize {
3948 4
3949 }
3950 }
3951
3952 unsafe impl
3953 fidl::encoding::Encode<
3954 ManagedRealmGetCrashListenerRequest,
3955 fidl::encoding::DefaultFuchsiaResourceDialect,
3956 > for &mut ManagedRealmGetCrashListenerRequest
3957 {
3958 #[inline]
3959 unsafe fn encode(
3960 self,
3961 encoder: &mut fidl::encoding::Encoder<
3962 '_,
3963 fidl::encoding::DefaultFuchsiaResourceDialect,
3964 >,
3965 offset: usize,
3966 _depth: fidl::encoding::Depth,
3967 ) -> fidl::Result<()> {
3968 encoder.debug_check_bounds::<ManagedRealmGetCrashListenerRequest>(offset);
3969 fidl::encoding::Encode::<ManagedRealmGetCrashListenerRequest, fidl::encoding::DefaultFuchsiaResourceDialect>::encode(
3971 (
3972 <fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<CrashListenerMarker>> as fidl::encoding::ResourceTypeMarker>::take_or_borrow(&mut self.listener),
3973 ),
3974 encoder, offset, _depth
3975 )
3976 }
3977 }
3978 unsafe impl<
3979 T0: fidl::encoding::Encode<
3980 fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<CrashListenerMarker>>,
3981 fidl::encoding::DefaultFuchsiaResourceDialect,
3982 >,
3983 >
3984 fidl::encoding::Encode<
3985 ManagedRealmGetCrashListenerRequest,
3986 fidl::encoding::DefaultFuchsiaResourceDialect,
3987 > for (T0,)
3988 {
3989 #[inline]
3990 unsafe fn encode(
3991 self,
3992 encoder: &mut fidl::encoding::Encoder<
3993 '_,
3994 fidl::encoding::DefaultFuchsiaResourceDialect,
3995 >,
3996 offset: usize,
3997 depth: fidl::encoding::Depth,
3998 ) -> fidl::Result<()> {
3999 encoder.debug_check_bounds::<ManagedRealmGetCrashListenerRequest>(offset);
4000 self.0.encode(encoder, offset + 0, depth)?;
4004 Ok(())
4005 }
4006 }
4007
4008 impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
4009 for ManagedRealmGetCrashListenerRequest
4010 {
4011 #[inline(always)]
4012 fn new_empty() -> Self {
4013 Self {
4014 listener: fidl::new_empty!(
4015 fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<CrashListenerMarker>>,
4016 fidl::encoding::DefaultFuchsiaResourceDialect
4017 ),
4018 }
4019 }
4020
4021 #[inline]
4022 unsafe fn decode(
4023 &mut self,
4024 decoder: &mut fidl::encoding::Decoder<
4025 '_,
4026 fidl::encoding::DefaultFuchsiaResourceDialect,
4027 >,
4028 offset: usize,
4029 _depth: fidl::encoding::Depth,
4030 ) -> fidl::Result<()> {
4031 decoder.debug_check_bounds::<Self>(offset);
4032 fidl::decode!(
4034 fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<CrashListenerMarker>>,
4035 fidl::encoding::DefaultFuchsiaResourceDialect,
4036 &mut self.listener,
4037 decoder,
4038 offset + 0,
4039 _depth
4040 )?;
4041 Ok(())
4042 }
4043 }
4044
4045 impl fidl::encoding::ResourceTypeMarker for ManagedRealmGetDevfsRequest {
4046 type Borrowed<'a> = &'a mut Self;
4047 fn take_or_borrow<'a>(
4048 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
4049 ) -> Self::Borrowed<'a> {
4050 value
4051 }
4052 }
4053
4054 unsafe impl fidl::encoding::TypeMarker for ManagedRealmGetDevfsRequest {
4055 type Owned = Self;
4056
4057 #[inline(always)]
4058 fn inline_align(_context: fidl::encoding::Context) -> usize {
4059 4
4060 }
4061
4062 #[inline(always)]
4063 fn inline_size(_context: fidl::encoding::Context) -> usize {
4064 4
4065 }
4066 }
4067
4068 unsafe impl
4069 fidl::encoding::Encode<
4070 ManagedRealmGetDevfsRequest,
4071 fidl::encoding::DefaultFuchsiaResourceDialect,
4072 > for &mut ManagedRealmGetDevfsRequest
4073 {
4074 #[inline]
4075 unsafe fn encode(
4076 self,
4077 encoder: &mut fidl::encoding::Encoder<
4078 '_,
4079 fidl::encoding::DefaultFuchsiaResourceDialect,
4080 >,
4081 offset: usize,
4082 _depth: fidl::encoding::Depth,
4083 ) -> fidl::Result<()> {
4084 encoder.debug_check_bounds::<ManagedRealmGetDevfsRequest>(offset);
4085 fidl::encoding::Encode::<
4087 ManagedRealmGetDevfsRequest,
4088 fidl::encoding::DefaultFuchsiaResourceDialect,
4089 >::encode(
4090 (<fidl::encoding::Endpoint<
4091 fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>,
4092 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow(
4093 &mut self.devfs
4094 ),),
4095 encoder,
4096 offset,
4097 _depth,
4098 )
4099 }
4100 }
4101 unsafe impl<
4102 T0: fidl::encoding::Encode<
4103 fidl::encoding::Endpoint<
4104 fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>,
4105 >,
4106 fidl::encoding::DefaultFuchsiaResourceDialect,
4107 >,
4108 >
4109 fidl::encoding::Encode<
4110 ManagedRealmGetDevfsRequest,
4111 fidl::encoding::DefaultFuchsiaResourceDialect,
4112 > for (T0,)
4113 {
4114 #[inline]
4115 unsafe fn encode(
4116 self,
4117 encoder: &mut fidl::encoding::Encoder<
4118 '_,
4119 fidl::encoding::DefaultFuchsiaResourceDialect,
4120 >,
4121 offset: usize,
4122 depth: fidl::encoding::Depth,
4123 ) -> fidl::Result<()> {
4124 encoder.debug_check_bounds::<ManagedRealmGetDevfsRequest>(offset);
4125 self.0.encode(encoder, offset + 0, depth)?;
4129 Ok(())
4130 }
4131 }
4132
4133 impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
4134 for ManagedRealmGetDevfsRequest
4135 {
4136 #[inline(always)]
4137 fn new_empty() -> Self {
4138 Self {
4139 devfs: fidl::new_empty!(
4140 fidl::encoding::Endpoint<
4141 fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>,
4142 >,
4143 fidl::encoding::DefaultFuchsiaResourceDialect
4144 ),
4145 }
4146 }
4147
4148 #[inline]
4149 unsafe fn decode(
4150 &mut self,
4151 decoder: &mut fidl::encoding::Decoder<
4152 '_,
4153 fidl::encoding::DefaultFuchsiaResourceDialect,
4154 >,
4155 offset: usize,
4156 _depth: fidl::encoding::Depth,
4157 ) -> fidl::Result<()> {
4158 decoder.debug_check_bounds::<Self>(offset);
4159 fidl::decode!(
4161 fidl::encoding::Endpoint<
4162 fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>,
4163 >,
4164 fidl::encoding::DefaultFuchsiaResourceDialect,
4165 &mut self.devfs,
4166 decoder,
4167 offset + 0,
4168 _depth
4169 )?;
4170 Ok(())
4171 }
4172 }
4173
4174 impl fidl::encoding::ResourceTypeMarker for ManagedRealmOpenDiagnosticsDirectoryRequest {
4175 type Borrowed<'a> = &'a mut Self;
4176 fn take_or_borrow<'a>(
4177 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
4178 ) -> Self::Borrowed<'a> {
4179 value
4180 }
4181 }
4182
4183 unsafe impl fidl::encoding::TypeMarker for ManagedRealmOpenDiagnosticsDirectoryRequest {
4184 type Owned = Self;
4185
4186 #[inline(always)]
4187 fn inline_align(_context: fidl::encoding::Context) -> usize {
4188 8
4189 }
4190
4191 #[inline(always)]
4192 fn inline_size(_context: fidl::encoding::Context) -> usize {
4193 24
4194 }
4195 }
4196
4197 unsafe impl
4198 fidl::encoding::Encode<
4199 ManagedRealmOpenDiagnosticsDirectoryRequest,
4200 fidl::encoding::DefaultFuchsiaResourceDialect,
4201 > for &mut ManagedRealmOpenDiagnosticsDirectoryRequest
4202 {
4203 #[inline]
4204 unsafe fn encode(
4205 self,
4206 encoder: &mut fidl::encoding::Encoder<
4207 '_,
4208 fidl::encoding::DefaultFuchsiaResourceDialect,
4209 >,
4210 offset: usize,
4211 _depth: fidl::encoding::Depth,
4212 ) -> fidl::Result<()> {
4213 encoder.debug_check_bounds::<ManagedRealmOpenDiagnosticsDirectoryRequest>(offset);
4214 fidl::encoding::Encode::<
4216 ManagedRealmOpenDiagnosticsDirectoryRequest,
4217 fidl::encoding::DefaultFuchsiaResourceDialect,
4218 >::encode(
4219 (
4220 <fidl::encoding::BoundedString<255> as fidl::encoding::ValueTypeMarker>::borrow(
4221 &self.child_name,
4222 ),
4223 <fidl::encoding::Endpoint<
4224 fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>,
4225 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow(
4226 &mut self.directory
4227 ),
4228 ),
4229 encoder,
4230 offset,
4231 _depth,
4232 )
4233 }
4234 }
4235 unsafe impl<
4236 T0: fidl::encoding::Encode<
4237 fidl::encoding::BoundedString<255>,
4238 fidl::encoding::DefaultFuchsiaResourceDialect,
4239 >,
4240 T1: fidl::encoding::Encode<
4241 fidl::encoding::Endpoint<
4242 fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>,
4243 >,
4244 fidl::encoding::DefaultFuchsiaResourceDialect,
4245 >,
4246 >
4247 fidl::encoding::Encode<
4248 ManagedRealmOpenDiagnosticsDirectoryRequest,
4249 fidl::encoding::DefaultFuchsiaResourceDialect,
4250 > for (T0, T1)
4251 {
4252 #[inline]
4253 unsafe fn encode(
4254 self,
4255 encoder: &mut fidl::encoding::Encoder<
4256 '_,
4257 fidl::encoding::DefaultFuchsiaResourceDialect,
4258 >,
4259 offset: usize,
4260 depth: fidl::encoding::Depth,
4261 ) -> fidl::Result<()> {
4262 encoder.debug_check_bounds::<ManagedRealmOpenDiagnosticsDirectoryRequest>(offset);
4263 unsafe {
4266 let ptr = encoder.buf.as_mut_ptr().add(offset).offset(16);
4267 (ptr as *mut u64).write_unaligned(0);
4268 }
4269 self.0.encode(encoder, offset + 0, depth)?;
4271 self.1.encode(encoder, offset + 16, depth)?;
4272 Ok(())
4273 }
4274 }
4275
4276 impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
4277 for ManagedRealmOpenDiagnosticsDirectoryRequest
4278 {
4279 #[inline(always)]
4280 fn new_empty() -> Self {
4281 Self {
4282 child_name: fidl::new_empty!(
4283 fidl::encoding::BoundedString<255>,
4284 fidl::encoding::DefaultFuchsiaResourceDialect
4285 ),
4286 directory: fidl::new_empty!(
4287 fidl::encoding::Endpoint<
4288 fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>,
4289 >,
4290 fidl::encoding::DefaultFuchsiaResourceDialect
4291 ),
4292 }
4293 }
4294
4295 #[inline]
4296 unsafe fn decode(
4297 &mut self,
4298 decoder: &mut fidl::encoding::Decoder<
4299 '_,
4300 fidl::encoding::DefaultFuchsiaResourceDialect,
4301 >,
4302 offset: usize,
4303 _depth: fidl::encoding::Depth,
4304 ) -> fidl::Result<()> {
4305 decoder.debug_check_bounds::<Self>(offset);
4306 let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(16) };
4308 let padval = unsafe { (ptr as *const u64).read_unaligned() };
4309 let mask = 0xffffffff00000000u64;
4310 let maskedval = padval & mask;
4311 if maskedval != 0 {
4312 return Err(fidl::Error::NonZeroPadding {
4313 padding_start: offset + 16 + ((mask as u64).trailing_zeros() / 8) as usize,
4314 });
4315 }
4316 fidl::decode!(
4317 fidl::encoding::BoundedString<255>,
4318 fidl::encoding::DefaultFuchsiaResourceDialect,
4319 &mut self.child_name,
4320 decoder,
4321 offset + 0,
4322 _depth
4323 )?;
4324 fidl::decode!(
4325 fidl::encoding::Endpoint<
4326 fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>,
4327 >,
4328 fidl::encoding::DefaultFuchsiaResourceDialect,
4329 &mut self.directory,
4330 decoder,
4331 offset + 16,
4332 _depth
4333 )?;
4334 Ok(())
4335 }
4336 }
4337
4338 impl fidl::encoding::ResourceTypeMarker for SandboxCreateRealmRequest {
4339 type Borrowed<'a> = &'a mut Self;
4340 fn take_or_borrow<'a>(
4341 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
4342 ) -> Self::Borrowed<'a> {
4343 value
4344 }
4345 }
4346
4347 unsafe impl fidl::encoding::TypeMarker for SandboxCreateRealmRequest {
4348 type Owned = Self;
4349
4350 #[inline(always)]
4351 fn inline_align(_context: fidl::encoding::Context) -> usize {
4352 8
4353 }
4354
4355 #[inline(always)]
4356 fn inline_size(_context: fidl::encoding::Context) -> usize {
4357 24
4358 }
4359 }
4360
4361 unsafe impl
4362 fidl::encoding::Encode<
4363 SandboxCreateRealmRequest,
4364 fidl::encoding::DefaultFuchsiaResourceDialect,
4365 > for &mut SandboxCreateRealmRequest
4366 {
4367 #[inline]
4368 unsafe fn encode(
4369 self,
4370 encoder: &mut fidl::encoding::Encoder<
4371 '_,
4372 fidl::encoding::DefaultFuchsiaResourceDialect,
4373 >,
4374 offset: usize,
4375 _depth: fidl::encoding::Depth,
4376 ) -> fidl::Result<()> {
4377 encoder.debug_check_bounds::<SandboxCreateRealmRequest>(offset);
4378 fidl::encoding::Encode::<SandboxCreateRealmRequest, fidl::encoding::DefaultFuchsiaResourceDialect>::encode(
4380 (
4381 <fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<ManagedRealmMarker>> as fidl::encoding::ResourceTypeMarker>::take_or_borrow(&mut self.realm),
4382 <RealmOptions as fidl::encoding::ResourceTypeMarker>::take_or_borrow(&mut self.options),
4383 ),
4384 encoder, offset, _depth
4385 )
4386 }
4387 }
4388 unsafe impl<
4389 T0: fidl::encoding::Encode<
4390 fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<ManagedRealmMarker>>,
4391 fidl::encoding::DefaultFuchsiaResourceDialect,
4392 >,
4393 T1: fidl::encoding::Encode<RealmOptions, fidl::encoding::DefaultFuchsiaResourceDialect>,
4394 >
4395 fidl::encoding::Encode<
4396 SandboxCreateRealmRequest,
4397 fidl::encoding::DefaultFuchsiaResourceDialect,
4398 > for (T0, T1)
4399 {
4400 #[inline]
4401 unsafe fn encode(
4402 self,
4403 encoder: &mut fidl::encoding::Encoder<
4404 '_,
4405 fidl::encoding::DefaultFuchsiaResourceDialect,
4406 >,
4407 offset: usize,
4408 depth: fidl::encoding::Depth,
4409 ) -> fidl::Result<()> {
4410 encoder.debug_check_bounds::<SandboxCreateRealmRequest>(offset);
4411 unsafe {
4414 let ptr = encoder.buf.as_mut_ptr().add(offset).offset(0);
4415 (ptr as *mut u64).write_unaligned(0);
4416 }
4417 self.0.encode(encoder, offset + 0, depth)?;
4419 self.1.encode(encoder, offset + 8, depth)?;
4420 Ok(())
4421 }
4422 }
4423
4424 impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
4425 for SandboxCreateRealmRequest
4426 {
4427 #[inline(always)]
4428 fn new_empty() -> Self {
4429 Self {
4430 realm: fidl::new_empty!(
4431 fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<ManagedRealmMarker>>,
4432 fidl::encoding::DefaultFuchsiaResourceDialect
4433 ),
4434 options: fidl::new_empty!(
4435 RealmOptions,
4436 fidl::encoding::DefaultFuchsiaResourceDialect
4437 ),
4438 }
4439 }
4440
4441 #[inline]
4442 unsafe fn decode(
4443 &mut self,
4444 decoder: &mut fidl::encoding::Decoder<
4445 '_,
4446 fidl::encoding::DefaultFuchsiaResourceDialect,
4447 >,
4448 offset: usize,
4449 _depth: fidl::encoding::Depth,
4450 ) -> fidl::Result<()> {
4451 decoder.debug_check_bounds::<Self>(offset);
4452 let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(0) };
4454 let padval = unsafe { (ptr as *const u64).read_unaligned() };
4455 let mask = 0xffffffff00000000u64;
4456 let maskedval = padval & mask;
4457 if maskedval != 0 {
4458 return Err(fidl::Error::NonZeroPadding {
4459 padding_start: offset + 0 + ((mask as u64).trailing_zeros() / 8) as usize,
4460 });
4461 }
4462 fidl::decode!(
4463 fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<ManagedRealmMarker>>,
4464 fidl::encoding::DefaultFuchsiaResourceDialect,
4465 &mut self.realm,
4466 decoder,
4467 offset + 0,
4468 _depth
4469 )?;
4470 fidl::decode!(
4471 RealmOptions,
4472 fidl::encoding::DefaultFuchsiaResourceDialect,
4473 &mut self.options,
4474 decoder,
4475 offset + 8,
4476 _depth
4477 )?;
4478 Ok(())
4479 }
4480 }
4481
4482 impl fidl::encoding::ResourceTypeMarker for SandboxGetNetworkContextRequest {
4483 type Borrowed<'a> = &'a mut Self;
4484 fn take_or_borrow<'a>(
4485 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
4486 ) -> Self::Borrowed<'a> {
4487 value
4488 }
4489 }
4490
4491 unsafe impl fidl::encoding::TypeMarker for SandboxGetNetworkContextRequest {
4492 type Owned = Self;
4493
4494 #[inline(always)]
4495 fn inline_align(_context: fidl::encoding::Context) -> usize {
4496 4
4497 }
4498
4499 #[inline(always)]
4500 fn inline_size(_context: fidl::encoding::Context) -> usize {
4501 4
4502 }
4503 }
4504
4505 unsafe impl
4506 fidl::encoding::Encode<
4507 SandboxGetNetworkContextRequest,
4508 fidl::encoding::DefaultFuchsiaResourceDialect,
4509 > for &mut SandboxGetNetworkContextRequest
4510 {
4511 #[inline]
4512 unsafe fn encode(
4513 self,
4514 encoder: &mut fidl::encoding::Encoder<
4515 '_,
4516 fidl::encoding::DefaultFuchsiaResourceDialect,
4517 >,
4518 offset: usize,
4519 _depth: fidl::encoding::Depth,
4520 ) -> fidl::Result<()> {
4521 encoder.debug_check_bounds::<SandboxGetNetworkContextRequest>(offset);
4522 fidl::encoding::Encode::<
4524 SandboxGetNetworkContextRequest,
4525 fidl::encoding::DefaultFuchsiaResourceDialect,
4526 >::encode(
4527 (<fidl::encoding::Endpoint<
4528 fidl::endpoints::ServerEnd<fidl_fuchsia_netemul_network::NetworkContextMarker>,
4529 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow(
4530 &mut self.network_context,
4531 ),),
4532 encoder,
4533 offset,
4534 _depth,
4535 )
4536 }
4537 }
4538 unsafe impl<
4539 T0: fidl::encoding::Encode<
4540 fidl::encoding::Endpoint<
4541 fidl::endpoints::ServerEnd<fidl_fuchsia_netemul_network::NetworkContextMarker>,
4542 >,
4543 fidl::encoding::DefaultFuchsiaResourceDialect,
4544 >,
4545 >
4546 fidl::encoding::Encode<
4547 SandboxGetNetworkContextRequest,
4548 fidl::encoding::DefaultFuchsiaResourceDialect,
4549 > for (T0,)
4550 {
4551 #[inline]
4552 unsafe fn encode(
4553 self,
4554 encoder: &mut fidl::encoding::Encoder<
4555 '_,
4556 fidl::encoding::DefaultFuchsiaResourceDialect,
4557 >,
4558 offset: usize,
4559 depth: fidl::encoding::Depth,
4560 ) -> fidl::Result<()> {
4561 encoder.debug_check_bounds::<SandboxGetNetworkContextRequest>(offset);
4562 self.0.encode(encoder, offset + 0, depth)?;
4566 Ok(())
4567 }
4568 }
4569
4570 impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
4571 for SandboxGetNetworkContextRequest
4572 {
4573 #[inline(always)]
4574 fn new_empty() -> Self {
4575 Self {
4576 network_context: fidl::new_empty!(
4577 fidl::encoding::Endpoint<
4578 fidl::endpoints::ServerEnd<
4579 fidl_fuchsia_netemul_network::NetworkContextMarker,
4580 >,
4581 >,
4582 fidl::encoding::DefaultFuchsiaResourceDialect
4583 ),
4584 }
4585 }
4586
4587 #[inline]
4588 unsafe fn decode(
4589 &mut self,
4590 decoder: &mut fidl::encoding::Decoder<
4591 '_,
4592 fidl::encoding::DefaultFuchsiaResourceDialect,
4593 >,
4594 offset: usize,
4595 _depth: fidl::encoding::Depth,
4596 ) -> fidl::Result<()> {
4597 decoder.debug_check_bounds::<Self>(offset);
4598 fidl::decode!(
4600 fidl::encoding::Endpoint<
4601 fidl::endpoints::ServerEnd<fidl_fuchsia_netemul_network::NetworkContextMarker>,
4602 >,
4603 fidl::encoding::DefaultFuchsiaResourceDialect,
4604 &mut self.network_context,
4605 decoder,
4606 offset + 0,
4607 _depth
4608 )?;
4609 Ok(())
4610 }
4611 }
4612
4613 impl ChildDef {
4614 #[inline(always)]
4615 fn max_ordinal_present(&self) -> u64 {
4616 if let Some(_) = self.config_values {
4617 return 7;
4618 }
4619 if let Some(_) = self.eager {
4620 return 6;
4621 }
4622 if let Some(_) = self.program_args {
4623 return 5;
4624 }
4625 if let Some(_) = self.uses {
4626 return 4;
4627 }
4628 if let Some(_) = self.exposes {
4629 return 3;
4630 }
4631 if let Some(_) = self.name {
4632 return 2;
4633 }
4634 if let Some(_) = self.source {
4635 return 1;
4636 }
4637 0
4638 }
4639 }
4640
4641 impl fidl::encoding::ResourceTypeMarker for ChildDef {
4642 type Borrowed<'a> = &'a mut Self;
4643 fn take_or_borrow<'a>(
4644 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
4645 ) -> Self::Borrowed<'a> {
4646 value
4647 }
4648 }
4649
4650 unsafe impl fidl::encoding::TypeMarker for ChildDef {
4651 type Owned = Self;
4652
4653 #[inline(always)]
4654 fn inline_align(_context: fidl::encoding::Context) -> usize {
4655 8
4656 }
4657
4658 #[inline(always)]
4659 fn inline_size(_context: fidl::encoding::Context) -> usize {
4660 16
4661 }
4662 }
4663
4664 unsafe impl fidl::encoding::Encode<ChildDef, fidl::encoding::DefaultFuchsiaResourceDialect>
4665 for &mut ChildDef
4666 {
4667 unsafe fn encode(
4668 self,
4669 encoder: &mut fidl::encoding::Encoder<
4670 '_,
4671 fidl::encoding::DefaultFuchsiaResourceDialect,
4672 >,
4673 offset: usize,
4674 mut depth: fidl::encoding::Depth,
4675 ) -> fidl::Result<()> {
4676 encoder.debug_check_bounds::<ChildDef>(offset);
4677 let max_ordinal: u64 = self.max_ordinal_present();
4679 encoder.write_num(max_ordinal, offset);
4680 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
4681 if max_ordinal == 0 {
4683 return Ok(());
4684 }
4685 depth.increment()?;
4686 let envelope_size = 8;
4687 let bytes_len = max_ordinal as usize * envelope_size;
4688 #[allow(unused_variables)]
4689 let offset = encoder.out_of_line_offset(bytes_len);
4690 let mut _prev_end_offset: usize = 0;
4691 if 1 > max_ordinal {
4692 return Ok(());
4693 }
4694
4695 let cur_offset: usize = (1 - 1) * envelope_size;
4698
4699 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4701
4702 fidl::encoding::encode_in_envelope_optional::<
4707 ChildSource,
4708 fidl::encoding::DefaultFuchsiaResourceDialect,
4709 >(
4710 self.source
4711 .as_mut()
4712 .map(<ChildSource as fidl::encoding::ResourceTypeMarker>::take_or_borrow),
4713 encoder,
4714 offset + cur_offset,
4715 depth,
4716 )?;
4717
4718 _prev_end_offset = cur_offset + envelope_size;
4719 if 2 > max_ordinal {
4720 return Ok(());
4721 }
4722
4723 let cur_offset: usize = (2 - 1) * envelope_size;
4726
4727 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4729
4730 fidl::encoding::encode_in_envelope_optional::<
4735 fidl::encoding::BoundedString<255>,
4736 fidl::encoding::DefaultFuchsiaResourceDialect,
4737 >(
4738 self.name.as_ref().map(
4739 <fidl::encoding::BoundedString<255> as fidl::encoding::ValueTypeMarker>::borrow,
4740 ),
4741 encoder,
4742 offset + cur_offset,
4743 depth,
4744 )?;
4745
4746 _prev_end_offset = cur_offset + envelope_size;
4747 if 3 > max_ordinal {
4748 return Ok(());
4749 }
4750
4751 let cur_offset: usize = (3 - 1) * envelope_size;
4754
4755 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4757
4758 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<fidl::encoding::BoundedString<255>>, fidl::encoding::DefaultFuchsiaResourceDialect>(
4763 self.exposes.as_ref().map(<fidl::encoding::UnboundedVector<fidl::encoding::BoundedString<255>> as fidl::encoding::ValueTypeMarker>::borrow),
4764 encoder, offset + cur_offset, depth
4765 )?;
4766
4767 _prev_end_offset = cur_offset + envelope_size;
4768 if 4 > max_ordinal {
4769 return Ok(());
4770 }
4771
4772 let cur_offset: usize = (4 - 1) * envelope_size;
4775
4776 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4778
4779 fidl::encoding::encode_in_envelope_optional::<
4784 ChildUses,
4785 fidl::encoding::DefaultFuchsiaResourceDialect,
4786 >(
4787 self.uses.as_ref().map(<ChildUses as fidl::encoding::ValueTypeMarker>::borrow),
4788 encoder,
4789 offset + cur_offset,
4790 depth,
4791 )?;
4792
4793 _prev_end_offset = cur_offset + envelope_size;
4794 if 5 > max_ordinal {
4795 return Ok(());
4796 }
4797
4798 let cur_offset: usize = (5 - 1) * envelope_size;
4801
4802 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4804
4805 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<fidl::encoding::UnboundedString>, fidl::encoding::DefaultFuchsiaResourceDialect>(
4810 self.program_args.as_ref().map(<fidl::encoding::UnboundedVector<fidl::encoding::UnboundedString> as fidl::encoding::ValueTypeMarker>::borrow),
4811 encoder, offset + cur_offset, depth
4812 )?;
4813
4814 _prev_end_offset = cur_offset + envelope_size;
4815 if 6 > max_ordinal {
4816 return Ok(());
4817 }
4818
4819 let cur_offset: usize = (6 - 1) * envelope_size;
4822
4823 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4825
4826 fidl::encoding::encode_in_envelope_optional::<
4831 bool,
4832 fidl::encoding::DefaultFuchsiaResourceDialect,
4833 >(
4834 self.eager.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
4835 encoder,
4836 offset + cur_offset,
4837 depth,
4838 )?;
4839
4840 _prev_end_offset = cur_offset + envelope_size;
4841 if 7 > max_ordinal {
4842 return Ok(());
4843 }
4844
4845 let cur_offset: usize = (7 - 1) * envelope_size;
4848
4849 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4851
4852 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<ChildConfigValue>, fidl::encoding::DefaultFuchsiaResourceDialect>(
4857 self.config_values.as_ref().map(<fidl::encoding::UnboundedVector<ChildConfigValue> as fidl::encoding::ValueTypeMarker>::borrow),
4858 encoder, offset + cur_offset, depth
4859 )?;
4860
4861 _prev_end_offset = cur_offset + envelope_size;
4862
4863 Ok(())
4864 }
4865 }
4866
4867 impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect> for ChildDef {
4868 #[inline(always)]
4869 fn new_empty() -> Self {
4870 Self::default()
4871 }
4872
4873 unsafe fn decode(
4874 &mut self,
4875 decoder: &mut fidl::encoding::Decoder<
4876 '_,
4877 fidl::encoding::DefaultFuchsiaResourceDialect,
4878 >,
4879 offset: usize,
4880 mut depth: fidl::encoding::Depth,
4881 ) -> fidl::Result<()> {
4882 decoder.debug_check_bounds::<Self>(offset);
4883 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
4884 None => return Err(fidl::Error::NotNullable),
4885 Some(len) => len,
4886 };
4887 if len == 0 {
4889 return Ok(());
4890 };
4891 depth.increment()?;
4892 let envelope_size = 8;
4893 let bytes_len = len * envelope_size;
4894 let offset = decoder.out_of_line_offset(bytes_len)?;
4895 let mut _next_ordinal_to_read = 0;
4897 let mut next_offset = offset;
4898 let end_offset = offset + bytes_len;
4899 _next_ordinal_to_read += 1;
4900 if next_offset >= end_offset {
4901 return Ok(());
4902 }
4903
4904 while _next_ordinal_to_read < 1 {
4906 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4907 _next_ordinal_to_read += 1;
4908 next_offset += envelope_size;
4909 }
4910
4911 let next_out_of_line = decoder.next_out_of_line();
4912 let handles_before = decoder.remaining_handles();
4913 if let Some((inlined, num_bytes, num_handles)) =
4914 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4915 {
4916 let member_inline_size =
4917 <ChildSource as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4918 if inlined != (member_inline_size <= 4) {
4919 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4920 }
4921 let inner_offset;
4922 let mut inner_depth = depth.clone();
4923 if inlined {
4924 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4925 inner_offset = next_offset;
4926 } else {
4927 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4928 inner_depth.increment()?;
4929 }
4930 let val_ref = self.source.get_or_insert_with(|| {
4931 fidl::new_empty!(ChildSource, fidl::encoding::DefaultFuchsiaResourceDialect)
4932 });
4933 fidl::decode!(
4934 ChildSource,
4935 fidl::encoding::DefaultFuchsiaResourceDialect,
4936 val_ref,
4937 decoder,
4938 inner_offset,
4939 inner_depth
4940 )?;
4941 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4942 {
4943 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4944 }
4945 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4946 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4947 }
4948 }
4949
4950 next_offset += envelope_size;
4951 _next_ordinal_to_read += 1;
4952 if next_offset >= end_offset {
4953 return Ok(());
4954 }
4955
4956 while _next_ordinal_to_read < 2 {
4958 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4959 _next_ordinal_to_read += 1;
4960 next_offset += envelope_size;
4961 }
4962
4963 let next_out_of_line = decoder.next_out_of_line();
4964 let handles_before = decoder.remaining_handles();
4965 if let Some((inlined, num_bytes, num_handles)) =
4966 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4967 {
4968 let member_inline_size =
4969 <fidl::encoding::BoundedString<255> as fidl::encoding::TypeMarker>::inline_size(
4970 decoder.context,
4971 );
4972 if inlined != (member_inline_size <= 4) {
4973 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4974 }
4975 let inner_offset;
4976 let mut inner_depth = depth.clone();
4977 if inlined {
4978 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4979 inner_offset = next_offset;
4980 } else {
4981 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4982 inner_depth.increment()?;
4983 }
4984 let val_ref = self.name.get_or_insert_with(|| {
4985 fidl::new_empty!(
4986 fidl::encoding::BoundedString<255>,
4987 fidl::encoding::DefaultFuchsiaResourceDialect
4988 )
4989 });
4990 fidl::decode!(
4991 fidl::encoding::BoundedString<255>,
4992 fidl::encoding::DefaultFuchsiaResourceDialect,
4993 val_ref,
4994 decoder,
4995 inner_offset,
4996 inner_depth
4997 )?;
4998 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4999 {
5000 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5001 }
5002 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5003 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5004 }
5005 }
5006
5007 next_offset += envelope_size;
5008 _next_ordinal_to_read += 1;
5009 if next_offset >= end_offset {
5010 return Ok(());
5011 }
5012
5013 while _next_ordinal_to_read < 3 {
5015 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5016 _next_ordinal_to_read += 1;
5017 next_offset += envelope_size;
5018 }
5019
5020 let next_out_of_line = decoder.next_out_of_line();
5021 let handles_before = decoder.remaining_handles();
5022 if let Some((inlined, num_bytes, num_handles)) =
5023 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5024 {
5025 let member_inline_size = <fidl::encoding::UnboundedVector<
5026 fidl::encoding::BoundedString<255>,
5027 > as fidl::encoding::TypeMarker>::inline_size(
5028 decoder.context
5029 );
5030 if inlined != (member_inline_size <= 4) {
5031 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5032 }
5033 let inner_offset;
5034 let mut inner_depth = depth.clone();
5035 if inlined {
5036 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5037 inner_offset = next_offset;
5038 } else {
5039 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5040 inner_depth.increment()?;
5041 }
5042 let val_ref = self.exposes.get_or_insert_with(|| {
5043 fidl::new_empty!(
5044 fidl::encoding::UnboundedVector<fidl::encoding::BoundedString<255>>,
5045 fidl::encoding::DefaultFuchsiaResourceDialect
5046 )
5047 });
5048 fidl::decode!(
5049 fidl::encoding::UnboundedVector<fidl::encoding::BoundedString<255>>,
5050 fidl::encoding::DefaultFuchsiaResourceDialect,
5051 val_ref,
5052 decoder,
5053 inner_offset,
5054 inner_depth
5055 )?;
5056 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5057 {
5058 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5059 }
5060 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5061 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5062 }
5063 }
5064
5065 next_offset += envelope_size;
5066 _next_ordinal_to_read += 1;
5067 if next_offset >= end_offset {
5068 return Ok(());
5069 }
5070
5071 while _next_ordinal_to_read < 4 {
5073 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5074 _next_ordinal_to_read += 1;
5075 next_offset += envelope_size;
5076 }
5077
5078 let next_out_of_line = decoder.next_out_of_line();
5079 let handles_before = decoder.remaining_handles();
5080 if let Some((inlined, num_bytes, num_handles)) =
5081 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5082 {
5083 let member_inline_size =
5084 <ChildUses as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5085 if inlined != (member_inline_size <= 4) {
5086 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5087 }
5088 let inner_offset;
5089 let mut inner_depth = depth.clone();
5090 if inlined {
5091 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5092 inner_offset = next_offset;
5093 } else {
5094 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5095 inner_depth.increment()?;
5096 }
5097 let val_ref = self.uses.get_or_insert_with(|| {
5098 fidl::new_empty!(ChildUses, fidl::encoding::DefaultFuchsiaResourceDialect)
5099 });
5100 fidl::decode!(
5101 ChildUses,
5102 fidl::encoding::DefaultFuchsiaResourceDialect,
5103 val_ref,
5104 decoder,
5105 inner_offset,
5106 inner_depth
5107 )?;
5108 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5109 {
5110 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5111 }
5112 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5113 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5114 }
5115 }
5116
5117 next_offset += envelope_size;
5118 _next_ordinal_to_read += 1;
5119 if next_offset >= end_offset {
5120 return Ok(());
5121 }
5122
5123 while _next_ordinal_to_read < 5 {
5125 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5126 _next_ordinal_to_read += 1;
5127 next_offset += envelope_size;
5128 }
5129
5130 let next_out_of_line = decoder.next_out_of_line();
5131 let handles_before = decoder.remaining_handles();
5132 if let Some((inlined, num_bytes, num_handles)) =
5133 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5134 {
5135 let member_inline_size = <fidl::encoding::UnboundedVector<
5136 fidl::encoding::UnboundedString,
5137 > as fidl::encoding::TypeMarker>::inline_size(
5138 decoder.context
5139 );
5140 if inlined != (member_inline_size <= 4) {
5141 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5142 }
5143 let inner_offset;
5144 let mut inner_depth = depth.clone();
5145 if inlined {
5146 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5147 inner_offset = next_offset;
5148 } else {
5149 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5150 inner_depth.increment()?;
5151 }
5152 let val_ref = self.program_args.get_or_insert_with(|| {
5153 fidl::new_empty!(
5154 fidl::encoding::UnboundedVector<fidl::encoding::UnboundedString>,
5155 fidl::encoding::DefaultFuchsiaResourceDialect
5156 )
5157 });
5158 fidl::decode!(
5159 fidl::encoding::UnboundedVector<fidl::encoding::UnboundedString>,
5160 fidl::encoding::DefaultFuchsiaResourceDialect,
5161 val_ref,
5162 decoder,
5163 inner_offset,
5164 inner_depth
5165 )?;
5166 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5167 {
5168 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5169 }
5170 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5171 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5172 }
5173 }
5174
5175 next_offset += envelope_size;
5176 _next_ordinal_to_read += 1;
5177 if next_offset >= end_offset {
5178 return Ok(());
5179 }
5180
5181 while _next_ordinal_to_read < 6 {
5183 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5184 _next_ordinal_to_read += 1;
5185 next_offset += envelope_size;
5186 }
5187
5188 let next_out_of_line = decoder.next_out_of_line();
5189 let handles_before = decoder.remaining_handles();
5190 if let Some((inlined, num_bytes, num_handles)) =
5191 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5192 {
5193 let member_inline_size =
5194 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5195 if inlined != (member_inline_size <= 4) {
5196 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5197 }
5198 let inner_offset;
5199 let mut inner_depth = depth.clone();
5200 if inlined {
5201 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5202 inner_offset = next_offset;
5203 } else {
5204 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5205 inner_depth.increment()?;
5206 }
5207 let val_ref = self.eager.get_or_insert_with(|| {
5208 fidl::new_empty!(bool, fidl::encoding::DefaultFuchsiaResourceDialect)
5209 });
5210 fidl::decode!(
5211 bool,
5212 fidl::encoding::DefaultFuchsiaResourceDialect,
5213 val_ref,
5214 decoder,
5215 inner_offset,
5216 inner_depth
5217 )?;
5218 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5219 {
5220 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5221 }
5222 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5223 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5224 }
5225 }
5226
5227 next_offset += envelope_size;
5228 _next_ordinal_to_read += 1;
5229 if next_offset >= end_offset {
5230 return Ok(());
5231 }
5232
5233 while _next_ordinal_to_read < 7 {
5235 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5236 _next_ordinal_to_read += 1;
5237 next_offset += envelope_size;
5238 }
5239
5240 let next_out_of_line = decoder.next_out_of_line();
5241 let handles_before = decoder.remaining_handles();
5242 if let Some((inlined, num_bytes, num_handles)) =
5243 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5244 {
5245 let member_inline_size = <fidl::encoding::UnboundedVector<ChildConfigValue> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5246 if inlined != (member_inline_size <= 4) {
5247 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5248 }
5249 let inner_offset;
5250 let mut inner_depth = depth.clone();
5251 if inlined {
5252 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5253 inner_offset = next_offset;
5254 } else {
5255 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5256 inner_depth.increment()?;
5257 }
5258 let val_ref = self.config_values.get_or_insert_with(|| {
5259 fidl::new_empty!(
5260 fidl::encoding::UnboundedVector<ChildConfigValue>,
5261 fidl::encoding::DefaultFuchsiaResourceDialect
5262 )
5263 });
5264 fidl::decode!(
5265 fidl::encoding::UnboundedVector<ChildConfigValue>,
5266 fidl::encoding::DefaultFuchsiaResourceDialect,
5267 val_ref,
5268 decoder,
5269 inner_offset,
5270 inner_depth
5271 )?;
5272 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5273 {
5274 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5275 }
5276 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5277 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5278 }
5279 }
5280
5281 next_offset += envelope_size;
5282
5283 while next_offset < end_offset {
5285 _next_ordinal_to_read += 1;
5286 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5287 next_offset += envelope_size;
5288 }
5289
5290 Ok(())
5291 }
5292 }
5293
5294 impl InterfaceOptions {
5295 #[inline(always)]
5296 fn max_ordinal_present(&self) -> u64 {
5297 if let Some(_) = self.ipv6_multicast_neighbor_solicitations {
5298 return 9;
5299 }
5300 if let Some(_) = self.ipv4_multicast_neighbor_solicitations {
5301 return 8;
5302 }
5303 if let Some(_) = self.enable_ipv6_forwarding {
5304 return 7;
5305 }
5306 if let Some(_) = self.enable_ipv4_forwarding {
5307 return 6;
5308 }
5309 if let Some(_) = self.gateway {
5310 return 5;
5311 }
5312 if let Some(_) = self.static_ips {
5313 return 4;
5314 }
5315 if let Some(_) = self.without_autogenerated_addresses {
5316 return 3;
5317 }
5318 if let Some(_) = self.device {
5319 return 2;
5320 }
5321 if let Some(_) = self.name {
5322 return 1;
5323 }
5324 0
5325 }
5326 }
5327
5328 impl fidl::encoding::ResourceTypeMarker for InterfaceOptions {
5329 type Borrowed<'a> = &'a mut Self;
5330 fn take_or_borrow<'a>(
5331 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
5332 ) -> Self::Borrowed<'a> {
5333 value
5334 }
5335 }
5336
5337 unsafe impl fidl::encoding::TypeMarker for InterfaceOptions {
5338 type Owned = Self;
5339
5340 #[inline(always)]
5341 fn inline_align(_context: fidl::encoding::Context) -> usize {
5342 8
5343 }
5344
5345 #[inline(always)]
5346 fn inline_size(_context: fidl::encoding::Context) -> usize {
5347 16
5348 }
5349 }
5350
5351 unsafe impl
5352 fidl::encoding::Encode<InterfaceOptions, fidl::encoding::DefaultFuchsiaResourceDialect>
5353 for &mut InterfaceOptions
5354 {
5355 unsafe fn encode(
5356 self,
5357 encoder: &mut fidl::encoding::Encoder<
5358 '_,
5359 fidl::encoding::DefaultFuchsiaResourceDialect,
5360 >,
5361 offset: usize,
5362 mut depth: fidl::encoding::Depth,
5363 ) -> fidl::Result<()> {
5364 encoder.debug_check_bounds::<InterfaceOptions>(offset);
5365 let max_ordinal: u64 = self.max_ordinal_present();
5367 encoder.write_num(max_ordinal, offset);
5368 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
5369 if max_ordinal == 0 {
5371 return Ok(());
5372 }
5373 depth.increment()?;
5374 let envelope_size = 8;
5375 let bytes_len = max_ordinal as usize * envelope_size;
5376 #[allow(unused_variables)]
5377 let offset = encoder.out_of_line_offset(bytes_len);
5378 let mut _prev_end_offset: usize = 0;
5379 if 1 > max_ordinal {
5380 return Ok(());
5381 }
5382
5383 let cur_offset: usize = (1 - 1) * envelope_size;
5386
5387 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5389
5390 fidl::encoding::encode_in_envelope_optional::<
5395 fidl::encoding::UnboundedString,
5396 fidl::encoding::DefaultFuchsiaResourceDialect,
5397 >(
5398 self.name.as_ref().map(
5399 <fidl::encoding::UnboundedString as fidl::encoding::ValueTypeMarker>::borrow,
5400 ),
5401 encoder,
5402 offset + cur_offset,
5403 depth,
5404 )?;
5405
5406 _prev_end_offset = cur_offset + envelope_size;
5407 if 2 > max_ordinal {
5408 return Ok(());
5409 }
5410
5411 let cur_offset: usize = (2 - 1) * envelope_size;
5414
5415 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5417
5418 fidl::encoding::encode_in_envelope_optional::<
5423 fidl::encoding::Endpoint<
5424 fidl::endpoints::ClientEnd<fidl_fuchsia_hardware_network::PortMarker>,
5425 >,
5426 fidl::encoding::DefaultFuchsiaResourceDialect,
5427 >(
5428 self.device.as_mut().map(
5429 <fidl::encoding::Endpoint<
5430 fidl::endpoints::ClientEnd<fidl_fuchsia_hardware_network::PortMarker>,
5431 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow,
5432 ),
5433 encoder,
5434 offset + cur_offset,
5435 depth,
5436 )?;
5437
5438 _prev_end_offset = cur_offset + envelope_size;
5439 if 3 > max_ordinal {
5440 return Ok(());
5441 }
5442
5443 let cur_offset: usize = (3 - 1) * envelope_size;
5446
5447 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5449
5450 fidl::encoding::encode_in_envelope_optional::<
5455 bool,
5456 fidl::encoding::DefaultFuchsiaResourceDialect,
5457 >(
5458 self.without_autogenerated_addresses
5459 .as_ref()
5460 .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
5461 encoder,
5462 offset + cur_offset,
5463 depth,
5464 )?;
5465
5466 _prev_end_offset = cur_offset + envelope_size;
5467 if 4 > max_ordinal {
5468 return Ok(());
5469 }
5470
5471 let cur_offset: usize = (4 - 1) * envelope_size;
5474
5475 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5477
5478 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<fidl_fuchsia_net::Subnet>, fidl::encoding::DefaultFuchsiaResourceDialect>(
5483 self.static_ips.as_ref().map(<fidl::encoding::UnboundedVector<fidl_fuchsia_net::Subnet> as fidl::encoding::ValueTypeMarker>::borrow),
5484 encoder, offset + cur_offset, depth
5485 )?;
5486
5487 _prev_end_offset = cur_offset + envelope_size;
5488 if 5 > max_ordinal {
5489 return Ok(());
5490 }
5491
5492 let cur_offset: usize = (5 - 1) * envelope_size;
5495
5496 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5498
5499 fidl::encoding::encode_in_envelope_optional::<
5504 fidl_fuchsia_net::IpAddress,
5505 fidl::encoding::DefaultFuchsiaResourceDialect,
5506 >(
5507 self.gateway
5508 .as_ref()
5509 .map(<fidl_fuchsia_net::IpAddress as fidl::encoding::ValueTypeMarker>::borrow),
5510 encoder,
5511 offset + cur_offset,
5512 depth,
5513 )?;
5514
5515 _prev_end_offset = cur_offset + envelope_size;
5516 if 6 > max_ordinal {
5517 return Ok(());
5518 }
5519
5520 let cur_offset: usize = (6 - 1) * envelope_size;
5523
5524 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5526
5527 fidl::encoding::encode_in_envelope_optional::<
5532 bool,
5533 fidl::encoding::DefaultFuchsiaResourceDialect,
5534 >(
5535 self.enable_ipv4_forwarding
5536 .as_ref()
5537 .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
5538 encoder,
5539 offset + cur_offset,
5540 depth,
5541 )?;
5542
5543 _prev_end_offset = cur_offset + envelope_size;
5544 if 7 > max_ordinal {
5545 return Ok(());
5546 }
5547
5548 let cur_offset: usize = (7 - 1) * envelope_size;
5551
5552 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5554
5555 fidl::encoding::encode_in_envelope_optional::<
5560 bool,
5561 fidl::encoding::DefaultFuchsiaResourceDialect,
5562 >(
5563 self.enable_ipv6_forwarding
5564 .as_ref()
5565 .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
5566 encoder,
5567 offset + cur_offset,
5568 depth,
5569 )?;
5570
5571 _prev_end_offset = cur_offset + envelope_size;
5572 if 8 > max_ordinal {
5573 return Ok(());
5574 }
5575
5576 let cur_offset: usize = (8 - 1) * envelope_size;
5579
5580 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5582
5583 fidl::encoding::encode_in_envelope_optional::<
5588 u16,
5589 fidl::encoding::DefaultFuchsiaResourceDialect,
5590 >(
5591 self.ipv4_multicast_neighbor_solicitations
5592 .as_ref()
5593 .map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
5594 encoder,
5595 offset + cur_offset,
5596 depth,
5597 )?;
5598
5599 _prev_end_offset = cur_offset + envelope_size;
5600 if 9 > max_ordinal {
5601 return Ok(());
5602 }
5603
5604 let cur_offset: usize = (9 - 1) * envelope_size;
5607
5608 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5610
5611 fidl::encoding::encode_in_envelope_optional::<
5616 u16,
5617 fidl::encoding::DefaultFuchsiaResourceDialect,
5618 >(
5619 self.ipv6_multicast_neighbor_solicitations
5620 .as_ref()
5621 .map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
5622 encoder,
5623 offset + cur_offset,
5624 depth,
5625 )?;
5626
5627 _prev_end_offset = cur_offset + envelope_size;
5628
5629 Ok(())
5630 }
5631 }
5632
5633 impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
5634 for InterfaceOptions
5635 {
5636 #[inline(always)]
5637 fn new_empty() -> Self {
5638 Self::default()
5639 }
5640
5641 unsafe fn decode(
5642 &mut self,
5643 decoder: &mut fidl::encoding::Decoder<
5644 '_,
5645 fidl::encoding::DefaultFuchsiaResourceDialect,
5646 >,
5647 offset: usize,
5648 mut depth: fidl::encoding::Depth,
5649 ) -> fidl::Result<()> {
5650 decoder.debug_check_bounds::<Self>(offset);
5651 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
5652 None => return Err(fidl::Error::NotNullable),
5653 Some(len) => len,
5654 };
5655 if len == 0 {
5657 return Ok(());
5658 };
5659 depth.increment()?;
5660 let envelope_size = 8;
5661 let bytes_len = len * envelope_size;
5662 let offset = decoder.out_of_line_offset(bytes_len)?;
5663 let mut _next_ordinal_to_read = 0;
5665 let mut next_offset = offset;
5666 let end_offset = offset + bytes_len;
5667 _next_ordinal_to_read += 1;
5668 if next_offset >= end_offset {
5669 return Ok(());
5670 }
5671
5672 while _next_ordinal_to_read < 1 {
5674 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5675 _next_ordinal_to_read += 1;
5676 next_offset += envelope_size;
5677 }
5678
5679 let next_out_of_line = decoder.next_out_of_line();
5680 let handles_before = decoder.remaining_handles();
5681 if let Some((inlined, num_bytes, num_handles)) =
5682 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5683 {
5684 let member_inline_size =
5685 <fidl::encoding::UnboundedString as fidl::encoding::TypeMarker>::inline_size(
5686 decoder.context,
5687 );
5688 if inlined != (member_inline_size <= 4) {
5689 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5690 }
5691 let inner_offset;
5692 let mut inner_depth = depth.clone();
5693 if inlined {
5694 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5695 inner_offset = next_offset;
5696 } else {
5697 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5698 inner_depth.increment()?;
5699 }
5700 let val_ref = self.name.get_or_insert_with(|| {
5701 fidl::new_empty!(
5702 fidl::encoding::UnboundedString,
5703 fidl::encoding::DefaultFuchsiaResourceDialect
5704 )
5705 });
5706 fidl::decode!(
5707 fidl::encoding::UnboundedString,
5708 fidl::encoding::DefaultFuchsiaResourceDialect,
5709 val_ref,
5710 decoder,
5711 inner_offset,
5712 inner_depth
5713 )?;
5714 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5715 {
5716 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5717 }
5718 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5719 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5720 }
5721 }
5722
5723 next_offset += envelope_size;
5724 _next_ordinal_to_read += 1;
5725 if next_offset >= end_offset {
5726 return Ok(());
5727 }
5728
5729 while _next_ordinal_to_read < 2 {
5731 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5732 _next_ordinal_to_read += 1;
5733 next_offset += envelope_size;
5734 }
5735
5736 let next_out_of_line = decoder.next_out_of_line();
5737 let handles_before = decoder.remaining_handles();
5738 if let Some((inlined, num_bytes, num_handles)) =
5739 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5740 {
5741 let member_inline_size = <fidl::encoding::Endpoint<
5742 fidl::endpoints::ClientEnd<fidl_fuchsia_hardware_network::PortMarker>,
5743 > as fidl::encoding::TypeMarker>::inline_size(
5744 decoder.context
5745 );
5746 if inlined != (member_inline_size <= 4) {
5747 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5748 }
5749 let inner_offset;
5750 let mut inner_depth = depth.clone();
5751 if inlined {
5752 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5753 inner_offset = next_offset;
5754 } else {
5755 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5756 inner_depth.increment()?;
5757 }
5758 let val_ref = self.device.get_or_insert_with(|| {
5759 fidl::new_empty!(
5760 fidl::encoding::Endpoint<
5761 fidl::endpoints::ClientEnd<fidl_fuchsia_hardware_network::PortMarker>,
5762 >,
5763 fidl::encoding::DefaultFuchsiaResourceDialect
5764 )
5765 });
5766 fidl::decode!(
5767 fidl::encoding::Endpoint<
5768 fidl::endpoints::ClientEnd<fidl_fuchsia_hardware_network::PortMarker>,
5769 >,
5770 fidl::encoding::DefaultFuchsiaResourceDialect,
5771 val_ref,
5772 decoder,
5773 inner_offset,
5774 inner_depth
5775 )?;
5776 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5777 {
5778 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5779 }
5780 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5781 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5782 }
5783 }
5784
5785 next_offset += envelope_size;
5786 _next_ordinal_to_read += 1;
5787 if next_offset >= end_offset {
5788 return Ok(());
5789 }
5790
5791 while _next_ordinal_to_read < 3 {
5793 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5794 _next_ordinal_to_read += 1;
5795 next_offset += envelope_size;
5796 }
5797
5798 let next_out_of_line = decoder.next_out_of_line();
5799 let handles_before = decoder.remaining_handles();
5800 if let Some((inlined, num_bytes, num_handles)) =
5801 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5802 {
5803 let member_inline_size =
5804 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5805 if inlined != (member_inline_size <= 4) {
5806 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5807 }
5808 let inner_offset;
5809 let mut inner_depth = depth.clone();
5810 if inlined {
5811 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5812 inner_offset = next_offset;
5813 } else {
5814 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5815 inner_depth.increment()?;
5816 }
5817 let val_ref = self.without_autogenerated_addresses.get_or_insert_with(|| {
5818 fidl::new_empty!(bool, fidl::encoding::DefaultFuchsiaResourceDialect)
5819 });
5820 fidl::decode!(
5821 bool,
5822 fidl::encoding::DefaultFuchsiaResourceDialect,
5823 val_ref,
5824 decoder,
5825 inner_offset,
5826 inner_depth
5827 )?;
5828 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5829 {
5830 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5831 }
5832 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5833 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5834 }
5835 }
5836
5837 next_offset += envelope_size;
5838 _next_ordinal_to_read += 1;
5839 if next_offset >= end_offset {
5840 return Ok(());
5841 }
5842
5843 while _next_ordinal_to_read < 4 {
5845 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5846 _next_ordinal_to_read += 1;
5847 next_offset += envelope_size;
5848 }
5849
5850 let next_out_of_line = decoder.next_out_of_line();
5851 let handles_before = decoder.remaining_handles();
5852 if let Some((inlined, num_bytes, num_handles)) =
5853 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5854 {
5855 let member_inline_size = <fidl::encoding::UnboundedVector<fidl_fuchsia_net::Subnet> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5856 if inlined != (member_inline_size <= 4) {
5857 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5858 }
5859 let inner_offset;
5860 let mut inner_depth = depth.clone();
5861 if inlined {
5862 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5863 inner_offset = next_offset;
5864 } else {
5865 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5866 inner_depth.increment()?;
5867 }
5868 let val_ref = self.static_ips.get_or_insert_with(|| {
5869 fidl::new_empty!(
5870 fidl::encoding::UnboundedVector<fidl_fuchsia_net::Subnet>,
5871 fidl::encoding::DefaultFuchsiaResourceDialect
5872 )
5873 });
5874 fidl::decode!(
5875 fidl::encoding::UnboundedVector<fidl_fuchsia_net::Subnet>,
5876 fidl::encoding::DefaultFuchsiaResourceDialect,
5877 val_ref,
5878 decoder,
5879 inner_offset,
5880 inner_depth
5881 )?;
5882 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5883 {
5884 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5885 }
5886 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5887 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5888 }
5889 }
5890
5891 next_offset += envelope_size;
5892 _next_ordinal_to_read += 1;
5893 if next_offset >= end_offset {
5894 return Ok(());
5895 }
5896
5897 while _next_ordinal_to_read < 5 {
5899 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5900 _next_ordinal_to_read += 1;
5901 next_offset += envelope_size;
5902 }
5903
5904 let next_out_of_line = decoder.next_out_of_line();
5905 let handles_before = decoder.remaining_handles();
5906 if let Some((inlined, num_bytes, num_handles)) =
5907 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5908 {
5909 let member_inline_size =
5910 <fidl_fuchsia_net::IpAddress as fidl::encoding::TypeMarker>::inline_size(
5911 decoder.context,
5912 );
5913 if inlined != (member_inline_size <= 4) {
5914 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5915 }
5916 let inner_offset;
5917 let mut inner_depth = depth.clone();
5918 if inlined {
5919 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5920 inner_offset = next_offset;
5921 } else {
5922 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5923 inner_depth.increment()?;
5924 }
5925 let val_ref = self.gateway.get_or_insert_with(|| {
5926 fidl::new_empty!(
5927 fidl_fuchsia_net::IpAddress,
5928 fidl::encoding::DefaultFuchsiaResourceDialect
5929 )
5930 });
5931 fidl::decode!(
5932 fidl_fuchsia_net::IpAddress,
5933 fidl::encoding::DefaultFuchsiaResourceDialect,
5934 val_ref,
5935 decoder,
5936 inner_offset,
5937 inner_depth
5938 )?;
5939 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5940 {
5941 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5942 }
5943 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5944 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5945 }
5946 }
5947
5948 next_offset += envelope_size;
5949 _next_ordinal_to_read += 1;
5950 if next_offset >= end_offset {
5951 return Ok(());
5952 }
5953
5954 while _next_ordinal_to_read < 6 {
5956 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5957 _next_ordinal_to_read += 1;
5958 next_offset += envelope_size;
5959 }
5960
5961 let next_out_of_line = decoder.next_out_of_line();
5962 let handles_before = decoder.remaining_handles();
5963 if let Some((inlined, num_bytes, num_handles)) =
5964 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5965 {
5966 let member_inline_size =
5967 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5968 if inlined != (member_inline_size <= 4) {
5969 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5970 }
5971 let inner_offset;
5972 let mut inner_depth = depth.clone();
5973 if inlined {
5974 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5975 inner_offset = next_offset;
5976 } else {
5977 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5978 inner_depth.increment()?;
5979 }
5980 let val_ref = self.enable_ipv4_forwarding.get_or_insert_with(|| {
5981 fidl::new_empty!(bool, fidl::encoding::DefaultFuchsiaResourceDialect)
5982 });
5983 fidl::decode!(
5984 bool,
5985 fidl::encoding::DefaultFuchsiaResourceDialect,
5986 val_ref,
5987 decoder,
5988 inner_offset,
5989 inner_depth
5990 )?;
5991 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5992 {
5993 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5994 }
5995 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5996 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5997 }
5998 }
5999
6000 next_offset += envelope_size;
6001 _next_ordinal_to_read += 1;
6002 if next_offset >= end_offset {
6003 return Ok(());
6004 }
6005
6006 while _next_ordinal_to_read < 7 {
6008 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6009 _next_ordinal_to_read += 1;
6010 next_offset += envelope_size;
6011 }
6012
6013 let next_out_of_line = decoder.next_out_of_line();
6014 let handles_before = decoder.remaining_handles();
6015 if let Some((inlined, num_bytes, num_handles)) =
6016 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6017 {
6018 let member_inline_size =
6019 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6020 if inlined != (member_inline_size <= 4) {
6021 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6022 }
6023 let inner_offset;
6024 let mut inner_depth = depth.clone();
6025 if inlined {
6026 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6027 inner_offset = next_offset;
6028 } else {
6029 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6030 inner_depth.increment()?;
6031 }
6032 let val_ref = self.enable_ipv6_forwarding.get_or_insert_with(|| {
6033 fidl::new_empty!(bool, fidl::encoding::DefaultFuchsiaResourceDialect)
6034 });
6035 fidl::decode!(
6036 bool,
6037 fidl::encoding::DefaultFuchsiaResourceDialect,
6038 val_ref,
6039 decoder,
6040 inner_offset,
6041 inner_depth
6042 )?;
6043 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6044 {
6045 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6046 }
6047 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6048 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6049 }
6050 }
6051
6052 next_offset += envelope_size;
6053 _next_ordinal_to_read += 1;
6054 if next_offset >= end_offset {
6055 return Ok(());
6056 }
6057
6058 while _next_ordinal_to_read < 8 {
6060 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6061 _next_ordinal_to_read += 1;
6062 next_offset += envelope_size;
6063 }
6064
6065 let next_out_of_line = decoder.next_out_of_line();
6066 let handles_before = decoder.remaining_handles();
6067 if let Some((inlined, num_bytes, num_handles)) =
6068 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6069 {
6070 let member_inline_size =
6071 <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6072 if inlined != (member_inline_size <= 4) {
6073 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6074 }
6075 let inner_offset;
6076 let mut inner_depth = depth.clone();
6077 if inlined {
6078 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6079 inner_offset = next_offset;
6080 } else {
6081 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6082 inner_depth.increment()?;
6083 }
6084 let val_ref = self.ipv4_multicast_neighbor_solicitations.get_or_insert_with(|| {
6085 fidl::new_empty!(u16, fidl::encoding::DefaultFuchsiaResourceDialect)
6086 });
6087 fidl::decode!(
6088 u16,
6089 fidl::encoding::DefaultFuchsiaResourceDialect,
6090 val_ref,
6091 decoder,
6092 inner_offset,
6093 inner_depth
6094 )?;
6095 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6096 {
6097 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6098 }
6099 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6100 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6101 }
6102 }
6103
6104 next_offset += envelope_size;
6105 _next_ordinal_to_read += 1;
6106 if next_offset >= end_offset {
6107 return Ok(());
6108 }
6109
6110 while _next_ordinal_to_read < 9 {
6112 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6113 _next_ordinal_to_read += 1;
6114 next_offset += envelope_size;
6115 }
6116
6117 let next_out_of_line = decoder.next_out_of_line();
6118 let handles_before = decoder.remaining_handles();
6119 if let Some((inlined, num_bytes, num_handles)) =
6120 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6121 {
6122 let member_inline_size =
6123 <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6124 if inlined != (member_inline_size <= 4) {
6125 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6126 }
6127 let inner_offset;
6128 let mut inner_depth = depth.clone();
6129 if inlined {
6130 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6131 inner_offset = next_offset;
6132 } else {
6133 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6134 inner_depth.increment()?;
6135 }
6136 let val_ref = self.ipv6_multicast_neighbor_solicitations.get_or_insert_with(|| {
6137 fidl::new_empty!(u16, fidl::encoding::DefaultFuchsiaResourceDialect)
6138 });
6139 fidl::decode!(
6140 u16,
6141 fidl::encoding::DefaultFuchsiaResourceDialect,
6142 val_ref,
6143 decoder,
6144 inner_offset,
6145 inner_depth
6146 )?;
6147 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6148 {
6149 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6150 }
6151 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6152 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6153 }
6154 }
6155
6156 next_offset += envelope_size;
6157
6158 while next_offset < end_offset {
6160 _next_ordinal_to_read += 1;
6161 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6162 next_offset += envelope_size;
6163 }
6164
6165 Ok(())
6166 }
6167 }
6168
6169 impl RealmOptions {
6170 #[inline(always)]
6171 fn max_ordinal_present(&self) -> u64 {
6172 if let Some(_) = self.children {
6173 return 2;
6174 }
6175 if let Some(_) = self.name {
6176 return 1;
6177 }
6178 0
6179 }
6180 }
6181
6182 impl fidl::encoding::ResourceTypeMarker for RealmOptions {
6183 type Borrowed<'a> = &'a mut Self;
6184 fn take_or_borrow<'a>(
6185 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
6186 ) -> Self::Borrowed<'a> {
6187 value
6188 }
6189 }
6190
6191 unsafe impl fidl::encoding::TypeMarker for RealmOptions {
6192 type Owned = Self;
6193
6194 #[inline(always)]
6195 fn inline_align(_context: fidl::encoding::Context) -> usize {
6196 8
6197 }
6198
6199 #[inline(always)]
6200 fn inline_size(_context: fidl::encoding::Context) -> usize {
6201 16
6202 }
6203 }
6204
6205 unsafe impl fidl::encoding::Encode<RealmOptions, fidl::encoding::DefaultFuchsiaResourceDialect>
6206 for &mut RealmOptions
6207 {
6208 unsafe fn encode(
6209 self,
6210 encoder: &mut fidl::encoding::Encoder<
6211 '_,
6212 fidl::encoding::DefaultFuchsiaResourceDialect,
6213 >,
6214 offset: usize,
6215 mut depth: fidl::encoding::Depth,
6216 ) -> fidl::Result<()> {
6217 encoder.debug_check_bounds::<RealmOptions>(offset);
6218 let max_ordinal: u64 = self.max_ordinal_present();
6220 encoder.write_num(max_ordinal, offset);
6221 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
6222 if max_ordinal == 0 {
6224 return Ok(());
6225 }
6226 depth.increment()?;
6227 let envelope_size = 8;
6228 let bytes_len = max_ordinal as usize * envelope_size;
6229 #[allow(unused_variables)]
6230 let offset = encoder.out_of_line_offset(bytes_len);
6231 let mut _prev_end_offset: usize = 0;
6232 if 1 > max_ordinal {
6233 return Ok(());
6234 }
6235
6236 let cur_offset: usize = (1 - 1) * envelope_size;
6239
6240 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6242
6243 fidl::encoding::encode_in_envelope_optional::<
6248 fidl::encoding::UnboundedString,
6249 fidl::encoding::DefaultFuchsiaResourceDialect,
6250 >(
6251 self.name.as_ref().map(
6252 <fidl::encoding::UnboundedString as fidl::encoding::ValueTypeMarker>::borrow,
6253 ),
6254 encoder,
6255 offset + cur_offset,
6256 depth,
6257 )?;
6258
6259 _prev_end_offset = cur_offset + envelope_size;
6260 if 2 > max_ordinal {
6261 return Ok(());
6262 }
6263
6264 let cur_offset: usize = (2 - 1) * envelope_size;
6267
6268 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6270
6271 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<ChildDef>, fidl::encoding::DefaultFuchsiaResourceDialect>(
6276 self.children.as_mut().map(<fidl::encoding::UnboundedVector<ChildDef> as fidl::encoding::ResourceTypeMarker>::take_or_borrow),
6277 encoder, offset + cur_offset, depth
6278 )?;
6279
6280 _prev_end_offset = cur_offset + envelope_size;
6281
6282 Ok(())
6283 }
6284 }
6285
6286 impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect> for RealmOptions {
6287 #[inline(always)]
6288 fn new_empty() -> Self {
6289 Self::default()
6290 }
6291
6292 unsafe fn decode(
6293 &mut self,
6294 decoder: &mut fidl::encoding::Decoder<
6295 '_,
6296 fidl::encoding::DefaultFuchsiaResourceDialect,
6297 >,
6298 offset: usize,
6299 mut depth: fidl::encoding::Depth,
6300 ) -> fidl::Result<()> {
6301 decoder.debug_check_bounds::<Self>(offset);
6302 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
6303 None => return Err(fidl::Error::NotNullable),
6304 Some(len) => len,
6305 };
6306 if len == 0 {
6308 return Ok(());
6309 };
6310 depth.increment()?;
6311 let envelope_size = 8;
6312 let bytes_len = len * envelope_size;
6313 let offset = decoder.out_of_line_offset(bytes_len)?;
6314 let mut _next_ordinal_to_read = 0;
6316 let mut next_offset = offset;
6317 let end_offset = offset + bytes_len;
6318 _next_ordinal_to_read += 1;
6319 if next_offset >= end_offset {
6320 return Ok(());
6321 }
6322
6323 while _next_ordinal_to_read < 1 {
6325 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6326 _next_ordinal_to_read += 1;
6327 next_offset += envelope_size;
6328 }
6329
6330 let next_out_of_line = decoder.next_out_of_line();
6331 let handles_before = decoder.remaining_handles();
6332 if let Some((inlined, num_bytes, num_handles)) =
6333 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6334 {
6335 let member_inline_size =
6336 <fidl::encoding::UnboundedString as fidl::encoding::TypeMarker>::inline_size(
6337 decoder.context,
6338 );
6339 if inlined != (member_inline_size <= 4) {
6340 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6341 }
6342 let inner_offset;
6343 let mut inner_depth = depth.clone();
6344 if inlined {
6345 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6346 inner_offset = next_offset;
6347 } else {
6348 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6349 inner_depth.increment()?;
6350 }
6351 let val_ref = self.name.get_or_insert_with(|| {
6352 fidl::new_empty!(
6353 fidl::encoding::UnboundedString,
6354 fidl::encoding::DefaultFuchsiaResourceDialect
6355 )
6356 });
6357 fidl::decode!(
6358 fidl::encoding::UnboundedString,
6359 fidl::encoding::DefaultFuchsiaResourceDialect,
6360 val_ref,
6361 decoder,
6362 inner_offset,
6363 inner_depth
6364 )?;
6365 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6366 {
6367 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6368 }
6369 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6370 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6371 }
6372 }
6373
6374 next_offset += envelope_size;
6375 _next_ordinal_to_read += 1;
6376 if next_offset >= end_offset {
6377 return Ok(());
6378 }
6379
6380 while _next_ordinal_to_read < 2 {
6382 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6383 _next_ordinal_to_read += 1;
6384 next_offset += envelope_size;
6385 }
6386
6387 let next_out_of_line = decoder.next_out_of_line();
6388 let handles_before = decoder.remaining_handles();
6389 if let Some((inlined, num_bytes, num_handles)) =
6390 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6391 {
6392 let member_inline_size = <fidl::encoding::UnboundedVector<ChildDef> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6393 if inlined != (member_inline_size <= 4) {
6394 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6395 }
6396 let inner_offset;
6397 let mut inner_depth = depth.clone();
6398 if inlined {
6399 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6400 inner_offset = next_offset;
6401 } else {
6402 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6403 inner_depth.increment()?;
6404 }
6405 let val_ref = self.children.get_or_insert_with(|| {
6406 fidl::new_empty!(
6407 fidl::encoding::UnboundedVector<ChildDef>,
6408 fidl::encoding::DefaultFuchsiaResourceDialect
6409 )
6410 });
6411 fidl::decode!(
6412 fidl::encoding::UnboundedVector<ChildDef>,
6413 fidl::encoding::DefaultFuchsiaResourceDialect,
6414 val_ref,
6415 decoder,
6416 inner_offset,
6417 inner_depth
6418 )?;
6419 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6420 {
6421 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6422 }
6423 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6424 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6425 }
6426 }
6427
6428 next_offset += envelope_size;
6429
6430 while next_offset < end_offset {
6432 _next_ordinal_to_read += 1;
6433 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6434 next_offset += envelope_size;
6435 }
6436
6437 Ok(())
6438 }
6439 }
6440
6441 impl fidl::encoding::ResourceTypeMarker for ChildSource {
6442 type Borrowed<'a> = &'a mut Self;
6443 fn take_or_borrow<'a>(
6444 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
6445 ) -> Self::Borrowed<'a> {
6446 value
6447 }
6448 }
6449
6450 unsafe impl fidl::encoding::TypeMarker for ChildSource {
6451 type Owned = Self;
6452
6453 #[inline(always)]
6454 fn inline_align(_context: fidl::encoding::Context) -> usize {
6455 8
6456 }
6457
6458 #[inline(always)]
6459 fn inline_size(_context: fidl::encoding::Context) -> usize {
6460 16
6461 }
6462 }
6463
6464 unsafe impl fidl::encoding::Encode<ChildSource, fidl::encoding::DefaultFuchsiaResourceDialect>
6465 for &mut ChildSource
6466 {
6467 #[inline]
6468 unsafe fn encode(
6469 self,
6470 encoder: &mut fidl::encoding::Encoder<
6471 '_,
6472 fidl::encoding::DefaultFuchsiaResourceDialect,
6473 >,
6474 offset: usize,
6475 _depth: fidl::encoding::Depth,
6476 ) -> fidl::Result<()> {
6477 encoder.debug_check_bounds::<ChildSource>(offset);
6478 encoder.write_num::<u64>(self.ordinal(), offset);
6479 match self {
6480 ChildSource::Component(ref val) => {
6481 fidl::encoding::encode_in_envelope::<fidl::encoding::BoundedString<4096>, fidl::encoding::DefaultFuchsiaResourceDialect>(
6482 <fidl::encoding::BoundedString<4096> as fidl::encoding::ValueTypeMarker>::borrow(val),
6483 encoder, offset + 8, _depth
6484 )
6485 }
6486 ChildSource::Mock(ref mut val) => {
6487 fidl::encoding::encode_in_envelope::<fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<fidl_fuchsia_io::DirectoryMarker>>, fidl::encoding::DefaultFuchsiaResourceDialect>(
6488 <fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<fidl_fuchsia_io::DirectoryMarker>> as fidl::encoding::ResourceTypeMarker>::take_or_borrow(val),
6489 encoder, offset + 8, _depth
6490 )
6491 }
6492 }
6493 }
6494 }
6495
6496 impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect> for ChildSource {
6497 #[inline(always)]
6498 fn new_empty() -> Self {
6499 Self::Component(fidl::new_empty!(
6500 fidl::encoding::BoundedString<4096>,
6501 fidl::encoding::DefaultFuchsiaResourceDialect
6502 ))
6503 }
6504
6505 #[inline]
6506 unsafe fn decode(
6507 &mut self,
6508 decoder: &mut fidl::encoding::Decoder<
6509 '_,
6510 fidl::encoding::DefaultFuchsiaResourceDialect,
6511 >,
6512 offset: usize,
6513 mut depth: fidl::encoding::Depth,
6514 ) -> fidl::Result<()> {
6515 decoder.debug_check_bounds::<Self>(offset);
6516 #[allow(unused_variables)]
6517 let next_out_of_line = decoder.next_out_of_line();
6518 let handles_before = decoder.remaining_handles();
6519 let (ordinal, inlined, num_bytes, num_handles) =
6520 fidl::encoding::decode_union_inline_portion(decoder, offset)?;
6521
6522 let member_inline_size = match ordinal {
6523 1 => {
6524 <fidl::encoding::BoundedString<4096> as fidl::encoding::TypeMarker>::inline_size(
6525 decoder.context,
6526 )
6527 }
6528 2 => <fidl::encoding::Endpoint<
6529 fidl::endpoints::ClientEnd<fidl_fuchsia_io::DirectoryMarker>,
6530 > as fidl::encoding::TypeMarker>::inline_size(decoder.context),
6531 _ => return Err(fidl::Error::UnknownUnionTag),
6532 };
6533
6534 if inlined != (member_inline_size <= 4) {
6535 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6536 }
6537 let _inner_offset;
6538 if inlined {
6539 decoder.check_inline_envelope_padding(offset + 8, member_inline_size)?;
6540 _inner_offset = offset + 8;
6541 } else {
6542 depth.increment()?;
6543 _inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6544 }
6545 match ordinal {
6546 1 => {
6547 #[allow(irrefutable_let_patterns)]
6548 if let ChildSource::Component(_) = self {
6549 } else {
6551 *self = ChildSource::Component(fidl::new_empty!(
6553 fidl::encoding::BoundedString<4096>,
6554 fidl::encoding::DefaultFuchsiaResourceDialect
6555 ));
6556 }
6557 #[allow(irrefutable_let_patterns)]
6558 if let ChildSource::Component(ref mut val) = self {
6559 fidl::decode!(
6560 fidl::encoding::BoundedString<4096>,
6561 fidl::encoding::DefaultFuchsiaResourceDialect,
6562 val,
6563 decoder,
6564 _inner_offset,
6565 depth
6566 )?;
6567 } else {
6568 unreachable!()
6569 }
6570 }
6571 2 => {
6572 #[allow(irrefutable_let_patterns)]
6573 if let ChildSource::Mock(_) = self {
6574 } else {
6576 *self = ChildSource::Mock(fidl::new_empty!(
6578 fidl::encoding::Endpoint<
6579 fidl::endpoints::ClientEnd<fidl_fuchsia_io::DirectoryMarker>,
6580 >,
6581 fidl::encoding::DefaultFuchsiaResourceDialect
6582 ));
6583 }
6584 #[allow(irrefutable_let_patterns)]
6585 if let ChildSource::Mock(ref mut val) = self {
6586 fidl::decode!(
6587 fidl::encoding::Endpoint<
6588 fidl::endpoints::ClientEnd<fidl_fuchsia_io::DirectoryMarker>,
6589 >,
6590 fidl::encoding::DefaultFuchsiaResourceDialect,
6591 val,
6592 decoder,
6593 _inner_offset,
6594 depth
6595 )?;
6596 } else {
6597 unreachable!()
6598 }
6599 }
6600 ordinal => panic!("unexpected ordinal {:?}", ordinal),
6601 }
6602 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize) {
6603 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6604 }
6605 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6606 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6607 }
6608 Ok(())
6609 }
6610 }
6611}