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