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