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 Self { client: fidl::client::sync::Client::new(channel) }
267 }
268
269 pub fn into_channel(self) -> fidl::Channel {
270 self.client.into_channel()
271 }
272
273 pub fn wait_for_event(
276 &self,
277 deadline: zx::MonotonicInstant,
278 ) -> Result<ConfigurableNetstackEvent, fidl::Error> {
279 ConfigurableNetstackEvent::decode(
280 self.client.wait_for_event::<ConfigurableNetstackMarker>(deadline)?,
281 )
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 >, ConfigurableNetstackMarker>(
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 Self { client: fidl::client::sync::Client::new(channel) }
764 }
765
766 pub fn into_channel(self) -> fidl::Channel {
767 self.client.into_channel()
768 }
769
770 pub fn wait_for_event(
773 &self,
774 deadline: zx::MonotonicInstant,
775 ) -> Result<CrashListenerEvent, fidl::Error> {
776 CrashListenerEvent::decode(self.client.wait_for_event::<CrashListenerMarker>(deadline)?)
777 }
778
779 pub fn r#next(&self, ___deadline: zx::MonotonicInstant) -> Result<Vec<String>, fidl::Error> {
785 let _response = self.client.send_query::<
786 fidl::encoding::EmptyPayload,
787 CrashListenerNextResponse,
788 CrashListenerMarker,
789 >(
790 (),
791 0x4ad26b66c3a90dfb,
792 fidl::encoding::DynamicFlags::empty(),
793 ___deadline,
794 )?;
795 Ok(_response.crashed_monikers)
796 }
797}
798
799#[cfg(target_os = "fuchsia")]
800impl From<CrashListenerSynchronousProxy> for zx::NullableHandle {
801 fn from(value: CrashListenerSynchronousProxy) -> Self {
802 value.into_channel().into()
803 }
804}
805
806#[cfg(target_os = "fuchsia")]
807impl From<fidl::Channel> for CrashListenerSynchronousProxy {
808 fn from(value: fidl::Channel) -> Self {
809 Self::new(value)
810 }
811}
812
813#[cfg(target_os = "fuchsia")]
814impl fidl::endpoints::FromClient for CrashListenerSynchronousProxy {
815 type Protocol = CrashListenerMarker;
816
817 fn from_client(value: fidl::endpoints::ClientEnd<CrashListenerMarker>) -> Self {
818 Self::new(value.into_channel())
819 }
820}
821
822#[derive(Debug, Clone)]
823pub struct CrashListenerProxy {
824 client: fidl::client::Client<fidl::encoding::DefaultFuchsiaResourceDialect>,
825}
826
827impl fidl::endpoints::Proxy for CrashListenerProxy {
828 type Protocol = CrashListenerMarker;
829
830 fn from_channel(inner: ::fidl::AsyncChannel) -> Self {
831 Self::new(inner)
832 }
833
834 fn into_channel(self) -> Result<::fidl::AsyncChannel, Self> {
835 self.client.into_channel().map_err(|client| Self { client })
836 }
837
838 fn as_channel(&self) -> &::fidl::AsyncChannel {
839 self.client.as_channel()
840 }
841}
842
843impl CrashListenerProxy {
844 pub fn new(channel: ::fidl::AsyncChannel) -> Self {
846 let protocol_name = <CrashListenerMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
847 Self { client: fidl::client::Client::new(channel, protocol_name) }
848 }
849
850 pub fn take_event_stream(&self) -> CrashListenerEventStream {
856 CrashListenerEventStream { event_receiver: self.client.take_event_receiver() }
857 }
858
859 pub fn r#next(
865 &self,
866 ) -> fidl::client::QueryResponseFut<Vec<String>, fidl::encoding::DefaultFuchsiaResourceDialect>
867 {
868 CrashListenerProxyInterface::r#next(self)
869 }
870}
871
872impl CrashListenerProxyInterface for CrashListenerProxy {
873 type NextResponseFut =
874 fidl::client::QueryResponseFut<Vec<String>, fidl::encoding::DefaultFuchsiaResourceDialect>;
875 fn r#next(&self) -> Self::NextResponseFut {
876 fn _decode(
877 mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
878 ) -> Result<Vec<String>, fidl::Error> {
879 let _response = fidl::client::decode_transaction_body::<
880 CrashListenerNextResponse,
881 fidl::encoding::DefaultFuchsiaResourceDialect,
882 0x4ad26b66c3a90dfb,
883 >(_buf?)?;
884 Ok(_response.crashed_monikers)
885 }
886 self.client.send_query_and_decode::<fidl::encoding::EmptyPayload, Vec<String>>(
887 (),
888 0x4ad26b66c3a90dfb,
889 fidl::encoding::DynamicFlags::empty(),
890 _decode,
891 )
892 }
893}
894
895pub struct CrashListenerEventStream {
896 event_receiver: fidl::client::EventReceiver<fidl::encoding::DefaultFuchsiaResourceDialect>,
897}
898
899impl std::marker::Unpin for CrashListenerEventStream {}
900
901impl futures::stream::FusedStream for CrashListenerEventStream {
902 fn is_terminated(&self) -> bool {
903 self.event_receiver.is_terminated()
904 }
905}
906
907impl futures::Stream for CrashListenerEventStream {
908 type Item = Result<CrashListenerEvent, fidl::Error>;
909
910 fn poll_next(
911 mut self: std::pin::Pin<&mut Self>,
912 cx: &mut std::task::Context<'_>,
913 ) -> std::task::Poll<Option<Self::Item>> {
914 match futures::ready!(futures::stream::StreamExt::poll_next_unpin(
915 &mut self.event_receiver,
916 cx
917 )?) {
918 Some(buf) => std::task::Poll::Ready(Some(CrashListenerEvent::decode(buf))),
919 None => std::task::Poll::Ready(None),
920 }
921 }
922}
923
924#[derive(Debug)]
925pub enum CrashListenerEvent {}
926
927impl CrashListenerEvent {
928 fn decode(
930 mut buf: <fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc,
931 ) -> Result<CrashListenerEvent, fidl::Error> {
932 let (bytes, _handles) = buf.split_mut();
933 let (tx_header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
934 debug_assert_eq!(tx_header.tx_id, 0);
935 match tx_header.ordinal {
936 _ => Err(fidl::Error::UnknownOrdinal {
937 ordinal: tx_header.ordinal,
938 protocol_name: <CrashListenerMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
939 }),
940 }
941 }
942}
943
944pub struct CrashListenerRequestStream {
946 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
947 is_terminated: bool,
948}
949
950impl std::marker::Unpin for CrashListenerRequestStream {}
951
952impl futures::stream::FusedStream for CrashListenerRequestStream {
953 fn is_terminated(&self) -> bool {
954 self.is_terminated
955 }
956}
957
958impl fidl::endpoints::RequestStream for CrashListenerRequestStream {
959 type Protocol = CrashListenerMarker;
960 type ControlHandle = CrashListenerControlHandle;
961
962 fn from_channel(channel: ::fidl::AsyncChannel) -> Self {
963 Self { inner: std::sync::Arc::new(fidl::ServeInner::new(channel)), is_terminated: false }
964 }
965
966 fn control_handle(&self) -> Self::ControlHandle {
967 CrashListenerControlHandle { inner: self.inner.clone() }
968 }
969
970 fn into_inner(
971 self,
972 ) -> (::std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>, bool)
973 {
974 (self.inner, self.is_terminated)
975 }
976
977 fn from_inner(
978 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
979 is_terminated: bool,
980 ) -> Self {
981 Self { inner, is_terminated }
982 }
983}
984
985impl futures::Stream for CrashListenerRequestStream {
986 type Item = Result<CrashListenerRequest, fidl::Error>;
987
988 fn poll_next(
989 mut self: std::pin::Pin<&mut Self>,
990 cx: &mut std::task::Context<'_>,
991 ) -> std::task::Poll<Option<Self::Item>> {
992 let this = &mut *self;
993 if this.inner.check_shutdown(cx) {
994 this.is_terminated = true;
995 return std::task::Poll::Ready(None);
996 }
997 if this.is_terminated {
998 panic!("polled CrashListenerRequestStream after completion");
999 }
1000 fidl::encoding::with_tls_decode_buf::<_, fidl::encoding::DefaultFuchsiaResourceDialect>(
1001 |bytes, handles| {
1002 match this.inner.channel().read_etc(cx, bytes, handles) {
1003 std::task::Poll::Ready(Ok(())) => {}
1004 std::task::Poll::Pending => return std::task::Poll::Pending,
1005 std::task::Poll::Ready(Err(zx_status::Status::PEER_CLOSED)) => {
1006 this.is_terminated = true;
1007 return std::task::Poll::Ready(None);
1008 }
1009 std::task::Poll::Ready(Err(e)) => {
1010 return std::task::Poll::Ready(Some(Err(fidl::Error::ServerRequestRead(
1011 e.into(),
1012 ))));
1013 }
1014 }
1015
1016 let (header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
1018
1019 std::task::Poll::Ready(Some(match header.ordinal {
1020 0x4ad26b66c3a90dfb => {
1021 header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
1022 let mut req = fidl::new_empty!(
1023 fidl::encoding::EmptyPayload,
1024 fidl::encoding::DefaultFuchsiaResourceDialect
1025 );
1026 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
1027 let control_handle =
1028 CrashListenerControlHandle { inner: this.inner.clone() };
1029 Ok(CrashListenerRequest::Next {
1030 responder: CrashListenerNextResponder {
1031 control_handle: std::mem::ManuallyDrop::new(control_handle),
1032 tx_id: header.tx_id,
1033 },
1034 })
1035 }
1036 _ => Err(fidl::Error::UnknownOrdinal {
1037 ordinal: header.ordinal,
1038 protocol_name:
1039 <CrashListenerMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
1040 }),
1041 }))
1042 },
1043 )
1044 }
1045}
1046
1047#[derive(Debug)]
1051pub enum CrashListenerRequest {
1052 Next { responder: CrashListenerNextResponder },
1058}
1059
1060impl CrashListenerRequest {
1061 #[allow(irrefutable_let_patterns)]
1062 pub fn into_next(self) -> Option<(CrashListenerNextResponder)> {
1063 if let CrashListenerRequest::Next { responder } = self { Some((responder)) } else { None }
1064 }
1065
1066 pub fn method_name(&self) -> &'static str {
1068 match *self {
1069 CrashListenerRequest::Next { .. } => "next",
1070 }
1071 }
1072}
1073
1074#[derive(Debug, Clone)]
1075pub struct CrashListenerControlHandle {
1076 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
1077}
1078
1079impl fidl::endpoints::ControlHandle for CrashListenerControlHandle {
1080 fn shutdown(&self) {
1081 self.inner.shutdown()
1082 }
1083
1084 fn shutdown_with_epitaph(&self, status: zx_status::Status) {
1085 self.inner.shutdown_with_epitaph(status)
1086 }
1087
1088 fn is_closed(&self) -> bool {
1089 self.inner.channel().is_closed()
1090 }
1091 fn on_closed(&self) -> fidl::OnSignalsRef<'_> {
1092 self.inner.channel().on_closed()
1093 }
1094
1095 #[cfg(target_os = "fuchsia")]
1096 fn signal_peer(
1097 &self,
1098 clear_mask: zx::Signals,
1099 set_mask: zx::Signals,
1100 ) -> Result<(), zx_status::Status> {
1101 use fidl::Peered;
1102 self.inner.channel().signal_peer(clear_mask, set_mask)
1103 }
1104}
1105
1106impl CrashListenerControlHandle {}
1107
1108#[must_use = "FIDL methods require a response to be sent"]
1109#[derive(Debug)]
1110pub struct CrashListenerNextResponder {
1111 control_handle: std::mem::ManuallyDrop<CrashListenerControlHandle>,
1112 tx_id: u32,
1113}
1114
1115impl std::ops::Drop for CrashListenerNextResponder {
1119 fn drop(&mut self) {
1120 self.control_handle.shutdown();
1121 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
1123 }
1124}
1125
1126impl fidl::endpoints::Responder for CrashListenerNextResponder {
1127 type ControlHandle = CrashListenerControlHandle;
1128
1129 fn control_handle(&self) -> &CrashListenerControlHandle {
1130 &self.control_handle
1131 }
1132
1133 fn drop_without_shutdown(mut self) {
1134 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
1136 std::mem::forget(self);
1138 }
1139}
1140
1141impl CrashListenerNextResponder {
1142 pub fn send(self, mut crashed_monikers: &[String]) -> Result<(), fidl::Error> {
1146 let _result = self.send_raw(crashed_monikers);
1147 if _result.is_err() {
1148 self.control_handle.shutdown();
1149 }
1150 self.drop_without_shutdown();
1151 _result
1152 }
1153
1154 pub fn send_no_shutdown_on_err(
1156 self,
1157 mut crashed_monikers: &[String],
1158 ) -> Result<(), fidl::Error> {
1159 let _result = self.send_raw(crashed_monikers);
1160 self.drop_without_shutdown();
1161 _result
1162 }
1163
1164 fn send_raw(&self, mut crashed_monikers: &[String]) -> Result<(), fidl::Error> {
1165 self.control_handle.inner.send::<CrashListenerNextResponse>(
1166 (crashed_monikers,),
1167 self.tx_id,
1168 0x4ad26b66c3a90dfb,
1169 fidl::encoding::DynamicFlags::empty(),
1170 )
1171 }
1172}
1173
1174#[derive(Debug, Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash)]
1175pub struct ManagedRealmMarker;
1176
1177impl fidl::endpoints::ProtocolMarker for ManagedRealmMarker {
1178 type Proxy = ManagedRealmProxy;
1179 type RequestStream = ManagedRealmRequestStream;
1180 #[cfg(target_os = "fuchsia")]
1181 type SynchronousProxy = ManagedRealmSynchronousProxy;
1182
1183 const DEBUG_NAME: &'static str = "(anonymous) ManagedRealm";
1184}
1185pub type ManagedRealmAddDeviceResult = Result<(), i32>;
1186pub type ManagedRealmRemoveDeviceResult = Result<(), i32>;
1187pub type ManagedRealmStartChildComponentResult = Result<(), i32>;
1188pub type ManagedRealmStopChildComponentResult = Result<(), i32>;
1189
1190pub trait ManagedRealmProxyInterface: Send + Sync {
1191 type GetMonikerResponseFut: std::future::Future<Output = Result<String, fidl::Error>> + Send;
1192 fn r#get_moniker(&self) -> Self::GetMonikerResponseFut;
1193 fn r#connect_to_protocol(
1194 &self,
1195 protocol_name: &str,
1196 child_name: Option<&str>,
1197 req: fidl::Channel,
1198 ) -> Result<(), fidl::Error>;
1199 type AddDeviceResponseFut: std::future::Future<Output = Result<ManagedRealmAddDeviceResult, fidl::Error>>
1200 + Send;
1201 fn r#add_device(
1202 &self,
1203 path: &str,
1204 device: fidl::endpoints::ClientEnd<fidl_fuchsia_netemul_network::DeviceProxy_Marker>,
1205 ) -> Self::AddDeviceResponseFut;
1206 type RemoveDeviceResponseFut: std::future::Future<Output = Result<ManagedRealmRemoveDeviceResult, fidl::Error>>
1207 + Send;
1208 fn r#remove_device(&self, path: &str) -> Self::RemoveDeviceResponseFut;
1209 fn r#get_devfs(
1210 &self,
1211 devfs: fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>,
1212 ) -> Result<(), fidl::Error>;
1213 type StartChildComponentResponseFut: std::future::Future<Output = Result<ManagedRealmStartChildComponentResult, fidl::Error>>
1214 + Send;
1215 fn r#start_child_component(&self, child_name: &str) -> Self::StartChildComponentResponseFut;
1216 type StopChildComponentResponseFut: std::future::Future<Output = Result<ManagedRealmStopChildComponentResult, fidl::Error>>
1217 + Send;
1218 fn r#stop_child_component(&self, child_name: &str) -> Self::StopChildComponentResponseFut;
1219 fn r#shutdown(&self) -> Result<(), fidl::Error>;
1220 fn r#open_diagnostics_directory(
1221 &self,
1222 child_name: &str,
1223 directory: fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>,
1224 ) -> Result<(), fidl::Error>;
1225 fn r#get_crash_listener(
1226 &self,
1227 listener: fidl::endpoints::ServerEnd<CrashListenerMarker>,
1228 ) -> Result<(), fidl::Error>;
1229}
1230#[derive(Debug)]
1231#[cfg(target_os = "fuchsia")]
1232pub struct ManagedRealmSynchronousProxy {
1233 client: fidl::client::sync::Client,
1234}
1235
1236#[cfg(target_os = "fuchsia")]
1237impl fidl::endpoints::SynchronousProxy for ManagedRealmSynchronousProxy {
1238 type Proxy = ManagedRealmProxy;
1239 type Protocol = ManagedRealmMarker;
1240
1241 fn from_channel(inner: fidl::Channel) -> Self {
1242 Self::new(inner)
1243 }
1244
1245 fn into_channel(self) -> fidl::Channel {
1246 self.client.into_channel()
1247 }
1248
1249 fn as_channel(&self) -> &fidl::Channel {
1250 self.client.as_channel()
1251 }
1252}
1253
1254#[cfg(target_os = "fuchsia")]
1255impl ManagedRealmSynchronousProxy {
1256 pub fn new(channel: fidl::Channel) -> Self {
1257 Self { client: fidl::client::sync::Client::new(channel) }
1258 }
1259
1260 pub fn into_channel(self) -> fidl::Channel {
1261 self.client.into_channel()
1262 }
1263
1264 pub fn wait_for_event(
1267 &self,
1268 deadline: zx::MonotonicInstant,
1269 ) -> Result<ManagedRealmEvent, fidl::Error> {
1270 ManagedRealmEvent::decode(self.client.wait_for_event::<ManagedRealmMarker>(deadline)?)
1271 }
1272
1273 pub fn r#get_moniker(&self, ___deadline: zx::MonotonicInstant) -> Result<String, fidl::Error> {
1278 let _response = self.client.send_query::<
1279 fidl::encoding::EmptyPayload,
1280 ManagedRealmGetMonikerResponse,
1281 ManagedRealmMarker,
1282 >(
1283 (),
1284 0xec8f2bf894ddc5f,
1285 fidl::encoding::DynamicFlags::empty(),
1286 ___deadline,
1287 )?;
1288 Ok(_response.moniker)
1289 }
1290
1291 pub fn r#connect_to_protocol(
1303 &self,
1304 mut protocol_name: &str,
1305 mut child_name: Option<&str>,
1306 mut req: fidl::Channel,
1307 ) -> Result<(), fidl::Error> {
1308 self.client.send::<ManagedRealmConnectToProtocolRequest>(
1309 (protocol_name, child_name, req),
1310 0x20865b728239813d,
1311 fidl::encoding::DynamicFlags::empty(),
1312 )
1313 }
1314
1315 pub fn r#add_device(
1328 &self,
1329 mut path: &str,
1330 mut device: fidl::endpoints::ClientEnd<fidl_fuchsia_netemul_network::DeviceProxy_Marker>,
1331 ___deadline: zx::MonotonicInstant,
1332 ) -> Result<ManagedRealmAddDeviceResult, fidl::Error> {
1333 let _response = self.client.send_query::<
1334 ManagedRealmAddDeviceRequest,
1335 fidl::encoding::ResultType<fidl::encoding::EmptyStruct, i32>,
1336 ManagedRealmMarker,
1337 >(
1338 (path, device,),
1339 0x789925e6f5d47c07,
1340 fidl::encoding::DynamicFlags::empty(),
1341 ___deadline,
1342 )?;
1343 Ok(_response.map(|x| x))
1344 }
1345
1346 pub fn r#remove_device(
1354 &self,
1355 mut path: &str,
1356 ___deadline: zx::MonotonicInstant,
1357 ) -> Result<ManagedRealmRemoveDeviceResult, fidl::Error> {
1358 let _response = self.client.send_query::<
1359 ManagedRealmRemoveDeviceRequest,
1360 fidl::encoding::ResultType<fidl::encoding::EmptyStruct, i32>,
1361 ManagedRealmMarker,
1362 >(
1363 (path,),
1364 0x6cffbba70ac757cc,
1365 fidl::encoding::DynamicFlags::empty(),
1366 ___deadline,
1367 )?;
1368 Ok(_response.map(|x| x))
1369 }
1370
1371 pub fn r#get_devfs(
1375 &self,
1376 mut devfs: fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>,
1377 ) -> Result<(), fidl::Error> {
1378 self.client.send::<ManagedRealmGetDevfsRequest>(
1379 (devfs,),
1380 0x707e2b17f65fcadc,
1381 fidl::encoding::DynamicFlags::empty(),
1382 )
1383 }
1384
1385 pub fn r#start_child_component(
1395 &self,
1396 mut child_name: &str,
1397 ___deadline: zx::MonotonicInstant,
1398 ) -> Result<ManagedRealmStartChildComponentResult, fidl::Error> {
1399 let _response = self.client.send_query::<
1400 ManagedRealmStartChildComponentRequest,
1401 fidl::encoding::ResultType<fidl::encoding::EmptyStruct, i32>,
1402 ManagedRealmMarker,
1403 >(
1404 (child_name,),
1405 0x20dfa243752906a1,
1406 fidl::encoding::DynamicFlags::empty(),
1407 ___deadline,
1408 )?;
1409 Ok(_response.map(|x| x))
1410 }
1411
1412 pub fn r#stop_child_component(
1422 &self,
1423 mut child_name: &str,
1424 ___deadline: zx::MonotonicInstant,
1425 ) -> Result<ManagedRealmStopChildComponentResult, fidl::Error> {
1426 let _response = self.client.send_query::<
1427 ManagedRealmStopChildComponentRequest,
1428 fidl::encoding::ResultType<fidl::encoding::EmptyStruct, i32>,
1429 ManagedRealmMarker,
1430 >(
1431 (child_name,),
1432 0x5ecfe48430aeeca7,
1433 fidl::encoding::DynamicFlags::empty(),
1434 ___deadline,
1435 )?;
1436 Ok(_response.map(|x| x))
1437 }
1438
1439 pub fn r#shutdown(&self) -> Result<(), fidl::Error> {
1444 self.client.send::<fidl::encoding::EmptyPayload>(
1445 (),
1446 0x4750920f723fba9d,
1447 fidl::encoding::DynamicFlags::empty(),
1448 )
1449 }
1450
1451 pub fn r#open_diagnostics_directory(
1453 &self,
1454 mut child_name: &str,
1455 mut directory: fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>,
1456 ) -> Result<(), fidl::Error> {
1457 self.client.send::<ManagedRealmOpenDiagnosticsDirectoryRequest>(
1458 (child_name, directory),
1459 0x7c5312484aa41c99,
1460 fidl::encoding::DynamicFlags::empty(),
1461 )
1462 }
1463
1464 pub fn r#get_crash_listener(
1466 &self,
1467 mut listener: fidl::endpoints::ServerEnd<CrashListenerMarker>,
1468 ) -> Result<(), fidl::Error> {
1469 self.client.send::<ManagedRealmGetCrashListenerRequest>(
1470 (listener,),
1471 0x407bab14357e8913,
1472 fidl::encoding::DynamicFlags::empty(),
1473 )
1474 }
1475}
1476
1477#[cfg(target_os = "fuchsia")]
1478impl From<ManagedRealmSynchronousProxy> for zx::NullableHandle {
1479 fn from(value: ManagedRealmSynchronousProxy) -> Self {
1480 value.into_channel().into()
1481 }
1482}
1483
1484#[cfg(target_os = "fuchsia")]
1485impl From<fidl::Channel> for ManagedRealmSynchronousProxy {
1486 fn from(value: fidl::Channel) -> Self {
1487 Self::new(value)
1488 }
1489}
1490
1491#[cfg(target_os = "fuchsia")]
1492impl fidl::endpoints::FromClient for ManagedRealmSynchronousProxy {
1493 type Protocol = ManagedRealmMarker;
1494
1495 fn from_client(value: fidl::endpoints::ClientEnd<ManagedRealmMarker>) -> Self {
1496 Self::new(value.into_channel())
1497 }
1498}
1499
1500#[derive(Debug, Clone)]
1501pub struct ManagedRealmProxy {
1502 client: fidl::client::Client<fidl::encoding::DefaultFuchsiaResourceDialect>,
1503}
1504
1505impl fidl::endpoints::Proxy for ManagedRealmProxy {
1506 type Protocol = ManagedRealmMarker;
1507
1508 fn from_channel(inner: ::fidl::AsyncChannel) -> Self {
1509 Self::new(inner)
1510 }
1511
1512 fn into_channel(self) -> Result<::fidl::AsyncChannel, Self> {
1513 self.client.into_channel().map_err(|client| Self { client })
1514 }
1515
1516 fn as_channel(&self) -> &::fidl::AsyncChannel {
1517 self.client.as_channel()
1518 }
1519}
1520
1521impl ManagedRealmProxy {
1522 pub fn new(channel: ::fidl::AsyncChannel) -> Self {
1524 let protocol_name = <ManagedRealmMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
1525 Self { client: fidl::client::Client::new(channel, protocol_name) }
1526 }
1527
1528 pub fn take_event_stream(&self) -> ManagedRealmEventStream {
1534 ManagedRealmEventStream { event_receiver: self.client.take_event_receiver() }
1535 }
1536
1537 pub fn r#get_moniker(
1542 &self,
1543 ) -> fidl::client::QueryResponseFut<String, fidl::encoding::DefaultFuchsiaResourceDialect> {
1544 ManagedRealmProxyInterface::r#get_moniker(self)
1545 }
1546
1547 pub fn r#connect_to_protocol(
1559 &self,
1560 mut protocol_name: &str,
1561 mut child_name: Option<&str>,
1562 mut req: fidl::Channel,
1563 ) -> Result<(), fidl::Error> {
1564 ManagedRealmProxyInterface::r#connect_to_protocol(self, protocol_name, child_name, req)
1565 }
1566
1567 pub fn r#add_device(
1580 &self,
1581 mut path: &str,
1582 mut device: fidl::endpoints::ClientEnd<fidl_fuchsia_netemul_network::DeviceProxy_Marker>,
1583 ) -> fidl::client::QueryResponseFut<
1584 ManagedRealmAddDeviceResult,
1585 fidl::encoding::DefaultFuchsiaResourceDialect,
1586 > {
1587 ManagedRealmProxyInterface::r#add_device(self, path, device)
1588 }
1589
1590 pub fn r#remove_device(
1598 &self,
1599 mut path: &str,
1600 ) -> fidl::client::QueryResponseFut<
1601 ManagedRealmRemoveDeviceResult,
1602 fidl::encoding::DefaultFuchsiaResourceDialect,
1603 > {
1604 ManagedRealmProxyInterface::r#remove_device(self, path)
1605 }
1606
1607 pub fn r#get_devfs(
1611 &self,
1612 mut devfs: fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>,
1613 ) -> Result<(), fidl::Error> {
1614 ManagedRealmProxyInterface::r#get_devfs(self, devfs)
1615 }
1616
1617 pub fn r#start_child_component(
1627 &self,
1628 mut child_name: &str,
1629 ) -> fidl::client::QueryResponseFut<
1630 ManagedRealmStartChildComponentResult,
1631 fidl::encoding::DefaultFuchsiaResourceDialect,
1632 > {
1633 ManagedRealmProxyInterface::r#start_child_component(self, child_name)
1634 }
1635
1636 pub fn r#stop_child_component(
1646 &self,
1647 mut child_name: &str,
1648 ) -> fidl::client::QueryResponseFut<
1649 ManagedRealmStopChildComponentResult,
1650 fidl::encoding::DefaultFuchsiaResourceDialect,
1651 > {
1652 ManagedRealmProxyInterface::r#stop_child_component(self, child_name)
1653 }
1654
1655 pub fn r#shutdown(&self) -> Result<(), fidl::Error> {
1660 ManagedRealmProxyInterface::r#shutdown(self)
1661 }
1662
1663 pub fn r#open_diagnostics_directory(
1665 &self,
1666 mut child_name: &str,
1667 mut directory: fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>,
1668 ) -> Result<(), fidl::Error> {
1669 ManagedRealmProxyInterface::r#open_diagnostics_directory(self, child_name, directory)
1670 }
1671
1672 pub fn r#get_crash_listener(
1674 &self,
1675 mut listener: fidl::endpoints::ServerEnd<CrashListenerMarker>,
1676 ) -> Result<(), fidl::Error> {
1677 ManagedRealmProxyInterface::r#get_crash_listener(self, listener)
1678 }
1679}
1680
1681impl ManagedRealmProxyInterface for ManagedRealmProxy {
1682 type GetMonikerResponseFut =
1683 fidl::client::QueryResponseFut<String, fidl::encoding::DefaultFuchsiaResourceDialect>;
1684 fn r#get_moniker(&self) -> Self::GetMonikerResponseFut {
1685 fn _decode(
1686 mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
1687 ) -> Result<String, fidl::Error> {
1688 let _response = fidl::client::decode_transaction_body::<
1689 ManagedRealmGetMonikerResponse,
1690 fidl::encoding::DefaultFuchsiaResourceDialect,
1691 0xec8f2bf894ddc5f,
1692 >(_buf?)?;
1693 Ok(_response.moniker)
1694 }
1695 self.client.send_query_and_decode::<fidl::encoding::EmptyPayload, String>(
1696 (),
1697 0xec8f2bf894ddc5f,
1698 fidl::encoding::DynamicFlags::empty(),
1699 _decode,
1700 )
1701 }
1702
1703 fn r#connect_to_protocol(
1704 &self,
1705 mut protocol_name: &str,
1706 mut child_name: Option<&str>,
1707 mut req: fidl::Channel,
1708 ) -> Result<(), fidl::Error> {
1709 self.client.send::<ManagedRealmConnectToProtocolRequest>(
1710 (protocol_name, child_name, req),
1711 0x20865b728239813d,
1712 fidl::encoding::DynamicFlags::empty(),
1713 )
1714 }
1715
1716 type AddDeviceResponseFut = fidl::client::QueryResponseFut<
1717 ManagedRealmAddDeviceResult,
1718 fidl::encoding::DefaultFuchsiaResourceDialect,
1719 >;
1720 fn r#add_device(
1721 &self,
1722 mut path: &str,
1723 mut device: fidl::endpoints::ClientEnd<fidl_fuchsia_netemul_network::DeviceProxy_Marker>,
1724 ) -> Self::AddDeviceResponseFut {
1725 fn _decode(
1726 mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
1727 ) -> Result<ManagedRealmAddDeviceResult, fidl::Error> {
1728 let _response = fidl::client::decode_transaction_body::<
1729 fidl::encoding::ResultType<fidl::encoding::EmptyStruct, i32>,
1730 fidl::encoding::DefaultFuchsiaResourceDialect,
1731 0x789925e6f5d47c07,
1732 >(_buf?)?;
1733 Ok(_response.map(|x| x))
1734 }
1735 self.client
1736 .send_query_and_decode::<ManagedRealmAddDeviceRequest, ManagedRealmAddDeviceResult>(
1737 (path, device),
1738 0x789925e6f5d47c07,
1739 fidl::encoding::DynamicFlags::empty(),
1740 _decode,
1741 )
1742 }
1743
1744 type RemoveDeviceResponseFut = fidl::client::QueryResponseFut<
1745 ManagedRealmRemoveDeviceResult,
1746 fidl::encoding::DefaultFuchsiaResourceDialect,
1747 >;
1748 fn r#remove_device(&self, mut path: &str) -> Self::RemoveDeviceResponseFut {
1749 fn _decode(
1750 mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
1751 ) -> Result<ManagedRealmRemoveDeviceResult, fidl::Error> {
1752 let _response = fidl::client::decode_transaction_body::<
1753 fidl::encoding::ResultType<fidl::encoding::EmptyStruct, i32>,
1754 fidl::encoding::DefaultFuchsiaResourceDialect,
1755 0x6cffbba70ac757cc,
1756 >(_buf?)?;
1757 Ok(_response.map(|x| x))
1758 }
1759 self.client.send_query_and_decode::<
1760 ManagedRealmRemoveDeviceRequest,
1761 ManagedRealmRemoveDeviceResult,
1762 >(
1763 (path,),
1764 0x6cffbba70ac757cc,
1765 fidl::encoding::DynamicFlags::empty(),
1766 _decode,
1767 )
1768 }
1769
1770 fn r#get_devfs(
1771 &self,
1772 mut devfs: fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>,
1773 ) -> Result<(), fidl::Error> {
1774 self.client.send::<ManagedRealmGetDevfsRequest>(
1775 (devfs,),
1776 0x707e2b17f65fcadc,
1777 fidl::encoding::DynamicFlags::empty(),
1778 )
1779 }
1780
1781 type StartChildComponentResponseFut = fidl::client::QueryResponseFut<
1782 ManagedRealmStartChildComponentResult,
1783 fidl::encoding::DefaultFuchsiaResourceDialect,
1784 >;
1785 fn r#start_child_component(
1786 &self,
1787 mut child_name: &str,
1788 ) -> Self::StartChildComponentResponseFut {
1789 fn _decode(
1790 mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
1791 ) -> Result<ManagedRealmStartChildComponentResult, fidl::Error> {
1792 let _response = fidl::client::decode_transaction_body::<
1793 fidl::encoding::ResultType<fidl::encoding::EmptyStruct, i32>,
1794 fidl::encoding::DefaultFuchsiaResourceDialect,
1795 0x20dfa243752906a1,
1796 >(_buf?)?;
1797 Ok(_response.map(|x| x))
1798 }
1799 self.client.send_query_and_decode::<
1800 ManagedRealmStartChildComponentRequest,
1801 ManagedRealmStartChildComponentResult,
1802 >(
1803 (child_name,),
1804 0x20dfa243752906a1,
1805 fidl::encoding::DynamicFlags::empty(),
1806 _decode,
1807 )
1808 }
1809
1810 type StopChildComponentResponseFut = fidl::client::QueryResponseFut<
1811 ManagedRealmStopChildComponentResult,
1812 fidl::encoding::DefaultFuchsiaResourceDialect,
1813 >;
1814 fn r#stop_child_component(&self, mut child_name: &str) -> Self::StopChildComponentResponseFut {
1815 fn _decode(
1816 mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
1817 ) -> Result<ManagedRealmStopChildComponentResult, fidl::Error> {
1818 let _response = fidl::client::decode_transaction_body::<
1819 fidl::encoding::ResultType<fidl::encoding::EmptyStruct, i32>,
1820 fidl::encoding::DefaultFuchsiaResourceDialect,
1821 0x5ecfe48430aeeca7,
1822 >(_buf?)?;
1823 Ok(_response.map(|x| x))
1824 }
1825 self.client.send_query_and_decode::<
1826 ManagedRealmStopChildComponentRequest,
1827 ManagedRealmStopChildComponentResult,
1828 >(
1829 (child_name,),
1830 0x5ecfe48430aeeca7,
1831 fidl::encoding::DynamicFlags::empty(),
1832 _decode,
1833 )
1834 }
1835
1836 fn r#shutdown(&self) -> Result<(), fidl::Error> {
1837 self.client.send::<fidl::encoding::EmptyPayload>(
1838 (),
1839 0x4750920f723fba9d,
1840 fidl::encoding::DynamicFlags::empty(),
1841 )
1842 }
1843
1844 fn r#open_diagnostics_directory(
1845 &self,
1846 mut child_name: &str,
1847 mut directory: fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>,
1848 ) -> Result<(), fidl::Error> {
1849 self.client.send::<ManagedRealmOpenDiagnosticsDirectoryRequest>(
1850 (child_name, directory),
1851 0x7c5312484aa41c99,
1852 fidl::encoding::DynamicFlags::empty(),
1853 )
1854 }
1855
1856 fn r#get_crash_listener(
1857 &self,
1858 mut listener: fidl::endpoints::ServerEnd<CrashListenerMarker>,
1859 ) -> Result<(), fidl::Error> {
1860 self.client.send::<ManagedRealmGetCrashListenerRequest>(
1861 (listener,),
1862 0x407bab14357e8913,
1863 fidl::encoding::DynamicFlags::empty(),
1864 )
1865 }
1866}
1867
1868pub struct ManagedRealmEventStream {
1869 event_receiver: fidl::client::EventReceiver<fidl::encoding::DefaultFuchsiaResourceDialect>,
1870}
1871
1872impl std::marker::Unpin for ManagedRealmEventStream {}
1873
1874impl futures::stream::FusedStream for ManagedRealmEventStream {
1875 fn is_terminated(&self) -> bool {
1876 self.event_receiver.is_terminated()
1877 }
1878}
1879
1880impl futures::Stream for ManagedRealmEventStream {
1881 type Item = Result<ManagedRealmEvent, fidl::Error>;
1882
1883 fn poll_next(
1884 mut self: std::pin::Pin<&mut Self>,
1885 cx: &mut std::task::Context<'_>,
1886 ) -> std::task::Poll<Option<Self::Item>> {
1887 match futures::ready!(futures::stream::StreamExt::poll_next_unpin(
1888 &mut self.event_receiver,
1889 cx
1890 )?) {
1891 Some(buf) => std::task::Poll::Ready(Some(ManagedRealmEvent::decode(buf))),
1892 None => std::task::Poll::Ready(None),
1893 }
1894 }
1895}
1896
1897#[derive(Debug)]
1898pub enum ManagedRealmEvent {
1899 OnShutdown {},
1900}
1901
1902impl ManagedRealmEvent {
1903 #[allow(irrefutable_let_patterns)]
1904 pub fn into_on_shutdown(self) -> Option<()> {
1905 if let ManagedRealmEvent::OnShutdown {} = self { Some(()) } else { None }
1906 }
1907
1908 fn decode(
1910 mut buf: <fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc,
1911 ) -> Result<ManagedRealmEvent, fidl::Error> {
1912 let (bytes, _handles) = buf.split_mut();
1913 let (tx_header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
1914 debug_assert_eq!(tx_header.tx_id, 0);
1915 match tx_header.ordinal {
1916 0x1dff0b58a5b546be => {
1917 let mut out = fidl::new_empty!(
1918 fidl::encoding::EmptyPayload,
1919 fidl::encoding::DefaultFuchsiaResourceDialect
1920 );
1921 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&tx_header, _body_bytes, _handles, &mut out)?;
1922 Ok((ManagedRealmEvent::OnShutdown {}))
1923 }
1924 _ => Err(fidl::Error::UnknownOrdinal {
1925 ordinal: tx_header.ordinal,
1926 protocol_name: <ManagedRealmMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
1927 }),
1928 }
1929 }
1930}
1931
1932pub struct ManagedRealmRequestStream {
1934 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
1935 is_terminated: bool,
1936}
1937
1938impl std::marker::Unpin for ManagedRealmRequestStream {}
1939
1940impl futures::stream::FusedStream for ManagedRealmRequestStream {
1941 fn is_terminated(&self) -> bool {
1942 self.is_terminated
1943 }
1944}
1945
1946impl fidl::endpoints::RequestStream for ManagedRealmRequestStream {
1947 type Protocol = ManagedRealmMarker;
1948 type ControlHandle = ManagedRealmControlHandle;
1949
1950 fn from_channel(channel: ::fidl::AsyncChannel) -> Self {
1951 Self { inner: std::sync::Arc::new(fidl::ServeInner::new(channel)), is_terminated: false }
1952 }
1953
1954 fn control_handle(&self) -> Self::ControlHandle {
1955 ManagedRealmControlHandle { inner: self.inner.clone() }
1956 }
1957
1958 fn into_inner(
1959 self,
1960 ) -> (::std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>, bool)
1961 {
1962 (self.inner, self.is_terminated)
1963 }
1964
1965 fn from_inner(
1966 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
1967 is_terminated: bool,
1968 ) -> Self {
1969 Self { inner, is_terminated }
1970 }
1971}
1972
1973impl futures::Stream for ManagedRealmRequestStream {
1974 type Item = Result<ManagedRealmRequest, fidl::Error>;
1975
1976 fn poll_next(
1977 mut self: std::pin::Pin<&mut Self>,
1978 cx: &mut std::task::Context<'_>,
1979 ) -> std::task::Poll<Option<Self::Item>> {
1980 let this = &mut *self;
1981 if this.inner.check_shutdown(cx) {
1982 this.is_terminated = true;
1983 return std::task::Poll::Ready(None);
1984 }
1985 if this.is_terminated {
1986 panic!("polled ManagedRealmRequestStream after completion");
1987 }
1988 fidl::encoding::with_tls_decode_buf::<_, fidl::encoding::DefaultFuchsiaResourceDialect>(
1989 |bytes, handles| {
1990 match this.inner.channel().read_etc(cx, bytes, handles) {
1991 std::task::Poll::Ready(Ok(())) => {}
1992 std::task::Poll::Pending => return std::task::Poll::Pending,
1993 std::task::Poll::Ready(Err(zx_status::Status::PEER_CLOSED)) => {
1994 this.is_terminated = true;
1995 return std::task::Poll::Ready(None);
1996 }
1997 std::task::Poll::Ready(Err(e)) => {
1998 return std::task::Poll::Ready(Some(Err(fidl::Error::ServerRequestRead(
1999 e.into(),
2000 ))));
2001 }
2002 }
2003
2004 let (header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
2006
2007 std::task::Poll::Ready(Some(match header.ordinal {
2008 0xec8f2bf894ddc5f => {
2009 header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
2010 let mut req = fidl::new_empty!(
2011 fidl::encoding::EmptyPayload,
2012 fidl::encoding::DefaultFuchsiaResourceDialect
2013 );
2014 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
2015 let control_handle =
2016 ManagedRealmControlHandle { inner: this.inner.clone() };
2017 Ok(ManagedRealmRequest::GetMoniker {
2018 responder: ManagedRealmGetMonikerResponder {
2019 control_handle: std::mem::ManuallyDrop::new(control_handle),
2020 tx_id: header.tx_id,
2021 },
2022 })
2023 }
2024 0x20865b728239813d => {
2025 header.validate_request_tx_id(fidl::MethodType::OneWay)?;
2026 let mut req = fidl::new_empty!(
2027 ManagedRealmConnectToProtocolRequest,
2028 fidl::encoding::DefaultFuchsiaResourceDialect
2029 );
2030 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<ManagedRealmConnectToProtocolRequest>(&header, _body_bytes, handles, &mut req)?;
2031 let control_handle =
2032 ManagedRealmControlHandle { inner: this.inner.clone() };
2033 Ok(ManagedRealmRequest::ConnectToProtocol {
2034 protocol_name: req.protocol_name,
2035 child_name: req.child_name,
2036 req: req.req,
2037
2038 control_handle,
2039 })
2040 }
2041 0x789925e6f5d47c07 => {
2042 header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
2043 let mut req = fidl::new_empty!(
2044 ManagedRealmAddDeviceRequest,
2045 fidl::encoding::DefaultFuchsiaResourceDialect
2046 );
2047 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<ManagedRealmAddDeviceRequest>(&header, _body_bytes, handles, &mut req)?;
2048 let control_handle =
2049 ManagedRealmControlHandle { inner: this.inner.clone() };
2050 Ok(ManagedRealmRequest::AddDevice {
2051 path: req.path,
2052 device: req.device,
2053
2054 responder: ManagedRealmAddDeviceResponder {
2055 control_handle: std::mem::ManuallyDrop::new(control_handle),
2056 tx_id: header.tx_id,
2057 },
2058 })
2059 }
2060 0x6cffbba70ac757cc => {
2061 header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
2062 let mut req = fidl::new_empty!(
2063 ManagedRealmRemoveDeviceRequest,
2064 fidl::encoding::DefaultFuchsiaResourceDialect
2065 );
2066 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<ManagedRealmRemoveDeviceRequest>(&header, _body_bytes, handles, &mut req)?;
2067 let control_handle =
2068 ManagedRealmControlHandle { inner: this.inner.clone() };
2069 Ok(ManagedRealmRequest::RemoveDevice {
2070 path: req.path,
2071
2072 responder: ManagedRealmRemoveDeviceResponder {
2073 control_handle: std::mem::ManuallyDrop::new(control_handle),
2074 tx_id: header.tx_id,
2075 },
2076 })
2077 }
2078 0x707e2b17f65fcadc => {
2079 header.validate_request_tx_id(fidl::MethodType::OneWay)?;
2080 let mut req = fidl::new_empty!(
2081 ManagedRealmGetDevfsRequest,
2082 fidl::encoding::DefaultFuchsiaResourceDialect
2083 );
2084 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<ManagedRealmGetDevfsRequest>(&header, _body_bytes, handles, &mut req)?;
2085 let control_handle =
2086 ManagedRealmControlHandle { inner: this.inner.clone() };
2087 Ok(ManagedRealmRequest::GetDevfs { devfs: req.devfs, control_handle })
2088 }
2089 0x20dfa243752906a1 => {
2090 header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
2091 let mut req = fidl::new_empty!(
2092 ManagedRealmStartChildComponentRequest,
2093 fidl::encoding::DefaultFuchsiaResourceDialect
2094 );
2095 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<ManagedRealmStartChildComponentRequest>(&header, _body_bytes, handles, &mut req)?;
2096 let control_handle =
2097 ManagedRealmControlHandle { inner: this.inner.clone() };
2098 Ok(ManagedRealmRequest::StartChildComponent {
2099 child_name: req.child_name,
2100
2101 responder: ManagedRealmStartChildComponentResponder {
2102 control_handle: std::mem::ManuallyDrop::new(control_handle),
2103 tx_id: header.tx_id,
2104 },
2105 })
2106 }
2107 0x5ecfe48430aeeca7 => {
2108 header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
2109 let mut req = fidl::new_empty!(
2110 ManagedRealmStopChildComponentRequest,
2111 fidl::encoding::DefaultFuchsiaResourceDialect
2112 );
2113 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<ManagedRealmStopChildComponentRequest>(&header, _body_bytes, handles, &mut req)?;
2114 let control_handle =
2115 ManagedRealmControlHandle { inner: this.inner.clone() };
2116 Ok(ManagedRealmRequest::StopChildComponent {
2117 child_name: req.child_name,
2118
2119 responder: ManagedRealmStopChildComponentResponder {
2120 control_handle: std::mem::ManuallyDrop::new(control_handle),
2121 tx_id: header.tx_id,
2122 },
2123 })
2124 }
2125 0x4750920f723fba9d => {
2126 header.validate_request_tx_id(fidl::MethodType::OneWay)?;
2127 let mut req = fidl::new_empty!(
2128 fidl::encoding::EmptyPayload,
2129 fidl::encoding::DefaultFuchsiaResourceDialect
2130 );
2131 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
2132 let control_handle =
2133 ManagedRealmControlHandle { inner: this.inner.clone() };
2134 Ok(ManagedRealmRequest::Shutdown { control_handle })
2135 }
2136 0x7c5312484aa41c99 => {
2137 header.validate_request_tx_id(fidl::MethodType::OneWay)?;
2138 let mut req = fidl::new_empty!(
2139 ManagedRealmOpenDiagnosticsDirectoryRequest,
2140 fidl::encoding::DefaultFuchsiaResourceDialect
2141 );
2142 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<ManagedRealmOpenDiagnosticsDirectoryRequest>(&header, _body_bytes, handles, &mut req)?;
2143 let control_handle =
2144 ManagedRealmControlHandle { inner: this.inner.clone() };
2145 Ok(ManagedRealmRequest::OpenDiagnosticsDirectory {
2146 child_name: req.child_name,
2147 directory: req.directory,
2148
2149 control_handle,
2150 })
2151 }
2152 0x407bab14357e8913 => {
2153 header.validate_request_tx_id(fidl::MethodType::OneWay)?;
2154 let mut req = fidl::new_empty!(
2155 ManagedRealmGetCrashListenerRequest,
2156 fidl::encoding::DefaultFuchsiaResourceDialect
2157 );
2158 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<ManagedRealmGetCrashListenerRequest>(&header, _body_bytes, handles, &mut req)?;
2159 let control_handle =
2160 ManagedRealmControlHandle { inner: this.inner.clone() };
2161 Ok(ManagedRealmRequest::GetCrashListener {
2162 listener: req.listener,
2163
2164 control_handle,
2165 })
2166 }
2167 _ => Err(fidl::Error::UnknownOrdinal {
2168 ordinal: header.ordinal,
2169 protocol_name:
2170 <ManagedRealmMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
2171 }),
2172 }))
2173 },
2174 )
2175 }
2176}
2177
2178#[derive(Debug)]
2191pub enum ManagedRealmRequest {
2192 GetMoniker { responder: ManagedRealmGetMonikerResponder },
2197 ConnectToProtocol {
2209 protocol_name: String,
2210 child_name: Option<String>,
2211 req: fidl::Channel,
2212 control_handle: ManagedRealmControlHandle,
2213 },
2214 AddDevice {
2227 path: String,
2228 device: fidl::endpoints::ClientEnd<fidl_fuchsia_netemul_network::DeviceProxy_Marker>,
2229 responder: ManagedRealmAddDeviceResponder,
2230 },
2231 RemoveDevice { path: String, responder: ManagedRealmRemoveDeviceResponder },
2239 GetDevfs {
2243 devfs: fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>,
2244 control_handle: ManagedRealmControlHandle,
2245 },
2246 StartChildComponent { child_name: String, responder: ManagedRealmStartChildComponentResponder },
2256 StopChildComponent { child_name: String, responder: ManagedRealmStopChildComponentResponder },
2266 Shutdown { control_handle: ManagedRealmControlHandle },
2271 OpenDiagnosticsDirectory {
2273 child_name: String,
2274 directory: fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>,
2275 control_handle: ManagedRealmControlHandle,
2276 },
2277 GetCrashListener {
2279 listener: fidl::endpoints::ServerEnd<CrashListenerMarker>,
2280 control_handle: ManagedRealmControlHandle,
2281 },
2282}
2283
2284impl ManagedRealmRequest {
2285 #[allow(irrefutable_let_patterns)]
2286 pub fn into_get_moniker(self) -> Option<(ManagedRealmGetMonikerResponder)> {
2287 if let ManagedRealmRequest::GetMoniker { responder } = self {
2288 Some((responder))
2289 } else {
2290 None
2291 }
2292 }
2293
2294 #[allow(irrefutable_let_patterns)]
2295 pub fn into_connect_to_protocol(
2296 self,
2297 ) -> Option<(String, Option<String>, fidl::Channel, ManagedRealmControlHandle)> {
2298 if let ManagedRealmRequest::ConnectToProtocol {
2299 protocol_name,
2300 child_name,
2301 req,
2302 control_handle,
2303 } = self
2304 {
2305 Some((protocol_name, child_name, req, control_handle))
2306 } else {
2307 None
2308 }
2309 }
2310
2311 #[allow(irrefutable_let_patterns)]
2312 pub fn into_add_device(
2313 self,
2314 ) -> Option<(
2315 String,
2316 fidl::endpoints::ClientEnd<fidl_fuchsia_netemul_network::DeviceProxy_Marker>,
2317 ManagedRealmAddDeviceResponder,
2318 )> {
2319 if let ManagedRealmRequest::AddDevice { path, device, responder } = self {
2320 Some((path, device, responder))
2321 } else {
2322 None
2323 }
2324 }
2325
2326 #[allow(irrefutable_let_patterns)]
2327 pub fn into_remove_device(self) -> Option<(String, ManagedRealmRemoveDeviceResponder)> {
2328 if let ManagedRealmRequest::RemoveDevice { path, responder } = self {
2329 Some((path, responder))
2330 } else {
2331 None
2332 }
2333 }
2334
2335 #[allow(irrefutable_let_patterns)]
2336 pub fn into_get_devfs(
2337 self,
2338 ) -> Option<(
2339 fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>,
2340 ManagedRealmControlHandle,
2341 )> {
2342 if let ManagedRealmRequest::GetDevfs { devfs, control_handle } = self {
2343 Some((devfs, control_handle))
2344 } else {
2345 None
2346 }
2347 }
2348
2349 #[allow(irrefutable_let_patterns)]
2350 pub fn into_start_child_component(
2351 self,
2352 ) -> Option<(String, ManagedRealmStartChildComponentResponder)> {
2353 if let ManagedRealmRequest::StartChildComponent { child_name, responder } = self {
2354 Some((child_name, responder))
2355 } else {
2356 None
2357 }
2358 }
2359
2360 #[allow(irrefutable_let_patterns)]
2361 pub fn into_stop_child_component(
2362 self,
2363 ) -> Option<(String, ManagedRealmStopChildComponentResponder)> {
2364 if let ManagedRealmRequest::StopChildComponent { child_name, responder } = self {
2365 Some((child_name, responder))
2366 } else {
2367 None
2368 }
2369 }
2370
2371 #[allow(irrefutable_let_patterns)]
2372 pub fn into_shutdown(self) -> Option<(ManagedRealmControlHandle)> {
2373 if let ManagedRealmRequest::Shutdown { control_handle } = self {
2374 Some((control_handle))
2375 } else {
2376 None
2377 }
2378 }
2379
2380 #[allow(irrefutable_let_patterns)]
2381 pub fn into_open_diagnostics_directory(
2382 self,
2383 ) -> Option<(
2384 String,
2385 fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>,
2386 ManagedRealmControlHandle,
2387 )> {
2388 if let ManagedRealmRequest::OpenDiagnosticsDirectory {
2389 child_name,
2390 directory,
2391 control_handle,
2392 } = self
2393 {
2394 Some((child_name, directory, control_handle))
2395 } else {
2396 None
2397 }
2398 }
2399
2400 #[allow(irrefutable_let_patterns)]
2401 pub fn into_get_crash_listener(
2402 self,
2403 ) -> Option<(fidl::endpoints::ServerEnd<CrashListenerMarker>, ManagedRealmControlHandle)> {
2404 if let ManagedRealmRequest::GetCrashListener { listener, control_handle } = self {
2405 Some((listener, control_handle))
2406 } else {
2407 None
2408 }
2409 }
2410
2411 pub fn method_name(&self) -> &'static str {
2413 match *self {
2414 ManagedRealmRequest::GetMoniker { .. } => "get_moniker",
2415 ManagedRealmRequest::ConnectToProtocol { .. } => "connect_to_protocol",
2416 ManagedRealmRequest::AddDevice { .. } => "add_device",
2417 ManagedRealmRequest::RemoveDevice { .. } => "remove_device",
2418 ManagedRealmRequest::GetDevfs { .. } => "get_devfs",
2419 ManagedRealmRequest::StartChildComponent { .. } => "start_child_component",
2420 ManagedRealmRequest::StopChildComponent { .. } => "stop_child_component",
2421 ManagedRealmRequest::Shutdown { .. } => "shutdown",
2422 ManagedRealmRequest::OpenDiagnosticsDirectory { .. } => "open_diagnostics_directory",
2423 ManagedRealmRequest::GetCrashListener { .. } => "get_crash_listener",
2424 }
2425 }
2426}
2427
2428#[derive(Debug, Clone)]
2429pub struct ManagedRealmControlHandle {
2430 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
2431}
2432
2433impl fidl::endpoints::ControlHandle for ManagedRealmControlHandle {
2434 fn shutdown(&self) {
2435 self.inner.shutdown()
2436 }
2437
2438 fn shutdown_with_epitaph(&self, status: zx_status::Status) {
2439 self.inner.shutdown_with_epitaph(status)
2440 }
2441
2442 fn is_closed(&self) -> bool {
2443 self.inner.channel().is_closed()
2444 }
2445 fn on_closed(&self) -> fidl::OnSignalsRef<'_> {
2446 self.inner.channel().on_closed()
2447 }
2448
2449 #[cfg(target_os = "fuchsia")]
2450 fn signal_peer(
2451 &self,
2452 clear_mask: zx::Signals,
2453 set_mask: zx::Signals,
2454 ) -> Result<(), zx_status::Status> {
2455 use fidl::Peered;
2456 self.inner.channel().signal_peer(clear_mask, set_mask)
2457 }
2458}
2459
2460impl ManagedRealmControlHandle {
2461 pub fn send_on_shutdown(&self) -> Result<(), fidl::Error> {
2462 self.inner.send::<fidl::encoding::EmptyPayload>(
2463 (),
2464 0,
2465 0x1dff0b58a5b546be,
2466 fidl::encoding::DynamicFlags::empty(),
2467 )
2468 }
2469}
2470
2471#[must_use = "FIDL methods require a response to be sent"]
2472#[derive(Debug)]
2473pub struct ManagedRealmGetMonikerResponder {
2474 control_handle: std::mem::ManuallyDrop<ManagedRealmControlHandle>,
2475 tx_id: u32,
2476}
2477
2478impl std::ops::Drop for ManagedRealmGetMonikerResponder {
2482 fn drop(&mut self) {
2483 self.control_handle.shutdown();
2484 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
2486 }
2487}
2488
2489impl fidl::endpoints::Responder for ManagedRealmGetMonikerResponder {
2490 type ControlHandle = ManagedRealmControlHandle;
2491
2492 fn control_handle(&self) -> &ManagedRealmControlHandle {
2493 &self.control_handle
2494 }
2495
2496 fn drop_without_shutdown(mut self) {
2497 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
2499 std::mem::forget(self);
2501 }
2502}
2503
2504impl ManagedRealmGetMonikerResponder {
2505 pub fn send(self, mut moniker: &str) -> Result<(), fidl::Error> {
2509 let _result = self.send_raw(moniker);
2510 if _result.is_err() {
2511 self.control_handle.shutdown();
2512 }
2513 self.drop_without_shutdown();
2514 _result
2515 }
2516
2517 pub fn send_no_shutdown_on_err(self, mut moniker: &str) -> Result<(), fidl::Error> {
2519 let _result = self.send_raw(moniker);
2520 self.drop_without_shutdown();
2521 _result
2522 }
2523
2524 fn send_raw(&self, mut moniker: &str) -> Result<(), fidl::Error> {
2525 self.control_handle.inner.send::<ManagedRealmGetMonikerResponse>(
2526 (moniker,),
2527 self.tx_id,
2528 0xec8f2bf894ddc5f,
2529 fidl::encoding::DynamicFlags::empty(),
2530 )
2531 }
2532}
2533
2534#[must_use = "FIDL methods require a response to be sent"]
2535#[derive(Debug)]
2536pub struct ManagedRealmAddDeviceResponder {
2537 control_handle: std::mem::ManuallyDrop<ManagedRealmControlHandle>,
2538 tx_id: u32,
2539}
2540
2541impl std::ops::Drop for ManagedRealmAddDeviceResponder {
2545 fn drop(&mut self) {
2546 self.control_handle.shutdown();
2547 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
2549 }
2550}
2551
2552impl fidl::endpoints::Responder for ManagedRealmAddDeviceResponder {
2553 type ControlHandle = ManagedRealmControlHandle;
2554
2555 fn control_handle(&self) -> &ManagedRealmControlHandle {
2556 &self.control_handle
2557 }
2558
2559 fn drop_without_shutdown(mut self) {
2560 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
2562 std::mem::forget(self);
2564 }
2565}
2566
2567impl ManagedRealmAddDeviceResponder {
2568 pub fn send(self, mut result: Result<(), i32>) -> Result<(), fidl::Error> {
2572 let _result = self.send_raw(result);
2573 if _result.is_err() {
2574 self.control_handle.shutdown();
2575 }
2576 self.drop_without_shutdown();
2577 _result
2578 }
2579
2580 pub fn send_no_shutdown_on_err(self, mut result: Result<(), i32>) -> Result<(), fidl::Error> {
2582 let _result = self.send_raw(result);
2583 self.drop_without_shutdown();
2584 _result
2585 }
2586
2587 fn send_raw(&self, mut result: Result<(), i32>) -> Result<(), fidl::Error> {
2588 self.control_handle
2589 .inner
2590 .send::<fidl::encoding::ResultType<fidl::encoding::EmptyStruct, i32>>(
2591 result,
2592 self.tx_id,
2593 0x789925e6f5d47c07,
2594 fidl::encoding::DynamicFlags::empty(),
2595 )
2596 }
2597}
2598
2599#[must_use = "FIDL methods require a response to be sent"]
2600#[derive(Debug)]
2601pub struct ManagedRealmRemoveDeviceResponder {
2602 control_handle: std::mem::ManuallyDrop<ManagedRealmControlHandle>,
2603 tx_id: u32,
2604}
2605
2606impl std::ops::Drop for ManagedRealmRemoveDeviceResponder {
2610 fn drop(&mut self) {
2611 self.control_handle.shutdown();
2612 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
2614 }
2615}
2616
2617impl fidl::endpoints::Responder for ManagedRealmRemoveDeviceResponder {
2618 type ControlHandle = ManagedRealmControlHandle;
2619
2620 fn control_handle(&self) -> &ManagedRealmControlHandle {
2621 &self.control_handle
2622 }
2623
2624 fn drop_without_shutdown(mut self) {
2625 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
2627 std::mem::forget(self);
2629 }
2630}
2631
2632impl ManagedRealmRemoveDeviceResponder {
2633 pub fn send(self, mut result: Result<(), i32>) -> Result<(), fidl::Error> {
2637 let _result = self.send_raw(result);
2638 if _result.is_err() {
2639 self.control_handle.shutdown();
2640 }
2641 self.drop_without_shutdown();
2642 _result
2643 }
2644
2645 pub fn send_no_shutdown_on_err(self, mut result: Result<(), i32>) -> Result<(), fidl::Error> {
2647 let _result = self.send_raw(result);
2648 self.drop_without_shutdown();
2649 _result
2650 }
2651
2652 fn send_raw(&self, mut result: Result<(), i32>) -> Result<(), fidl::Error> {
2653 self.control_handle
2654 .inner
2655 .send::<fidl::encoding::ResultType<fidl::encoding::EmptyStruct, i32>>(
2656 result,
2657 self.tx_id,
2658 0x6cffbba70ac757cc,
2659 fidl::encoding::DynamicFlags::empty(),
2660 )
2661 }
2662}
2663
2664#[must_use = "FIDL methods require a response to be sent"]
2665#[derive(Debug)]
2666pub struct ManagedRealmStartChildComponentResponder {
2667 control_handle: std::mem::ManuallyDrop<ManagedRealmControlHandle>,
2668 tx_id: u32,
2669}
2670
2671impl std::ops::Drop for ManagedRealmStartChildComponentResponder {
2675 fn drop(&mut self) {
2676 self.control_handle.shutdown();
2677 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
2679 }
2680}
2681
2682impl fidl::endpoints::Responder for ManagedRealmStartChildComponentResponder {
2683 type ControlHandle = ManagedRealmControlHandle;
2684
2685 fn control_handle(&self) -> &ManagedRealmControlHandle {
2686 &self.control_handle
2687 }
2688
2689 fn drop_without_shutdown(mut self) {
2690 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
2692 std::mem::forget(self);
2694 }
2695}
2696
2697impl ManagedRealmStartChildComponentResponder {
2698 pub fn send(self, mut result: Result<(), i32>) -> Result<(), fidl::Error> {
2702 let _result = self.send_raw(result);
2703 if _result.is_err() {
2704 self.control_handle.shutdown();
2705 }
2706 self.drop_without_shutdown();
2707 _result
2708 }
2709
2710 pub fn send_no_shutdown_on_err(self, mut result: Result<(), i32>) -> Result<(), fidl::Error> {
2712 let _result = self.send_raw(result);
2713 self.drop_without_shutdown();
2714 _result
2715 }
2716
2717 fn send_raw(&self, mut result: Result<(), i32>) -> Result<(), fidl::Error> {
2718 self.control_handle
2719 .inner
2720 .send::<fidl::encoding::ResultType<fidl::encoding::EmptyStruct, i32>>(
2721 result,
2722 self.tx_id,
2723 0x20dfa243752906a1,
2724 fidl::encoding::DynamicFlags::empty(),
2725 )
2726 }
2727}
2728
2729#[must_use = "FIDL methods require a response to be sent"]
2730#[derive(Debug)]
2731pub struct ManagedRealmStopChildComponentResponder {
2732 control_handle: std::mem::ManuallyDrop<ManagedRealmControlHandle>,
2733 tx_id: u32,
2734}
2735
2736impl std::ops::Drop for ManagedRealmStopChildComponentResponder {
2740 fn drop(&mut self) {
2741 self.control_handle.shutdown();
2742 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
2744 }
2745}
2746
2747impl fidl::endpoints::Responder for ManagedRealmStopChildComponentResponder {
2748 type ControlHandle = ManagedRealmControlHandle;
2749
2750 fn control_handle(&self) -> &ManagedRealmControlHandle {
2751 &self.control_handle
2752 }
2753
2754 fn drop_without_shutdown(mut self) {
2755 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
2757 std::mem::forget(self);
2759 }
2760}
2761
2762impl ManagedRealmStopChildComponentResponder {
2763 pub fn send(self, mut result: Result<(), i32>) -> Result<(), fidl::Error> {
2767 let _result = self.send_raw(result);
2768 if _result.is_err() {
2769 self.control_handle.shutdown();
2770 }
2771 self.drop_without_shutdown();
2772 _result
2773 }
2774
2775 pub fn send_no_shutdown_on_err(self, mut result: Result<(), i32>) -> Result<(), fidl::Error> {
2777 let _result = self.send_raw(result);
2778 self.drop_without_shutdown();
2779 _result
2780 }
2781
2782 fn send_raw(&self, mut result: Result<(), i32>) -> Result<(), fidl::Error> {
2783 self.control_handle
2784 .inner
2785 .send::<fidl::encoding::ResultType<fidl::encoding::EmptyStruct, i32>>(
2786 result,
2787 self.tx_id,
2788 0x5ecfe48430aeeca7,
2789 fidl::encoding::DynamicFlags::empty(),
2790 )
2791 }
2792}
2793
2794#[derive(Debug, Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash)]
2795pub struct SandboxMarker;
2796
2797impl fidl::endpoints::ProtocolMarker for SandboxMarker {
2798 type Proxy = SandboxProxy;
2799 type RequestStream = SandboxRequestStream;
2800 #[cfg(target_os = "fuchsia")]
2801 type SynchronousProxy = SandboxSynchronousProxy;
2802
2803 const DEBUG_NAME: &'static str = "fuchsia.netemul.Sandbox";
2804}
2805impl fidl::endpoints::DiscoverableProtocolMarker for SandboxMarker {}
2806
2807pub trait SandboxProxyInterface: Send + Sync {
2808 fn r#create_realm(
2809 &self,
2810 realm: fidl::endpoints::ServerEnd<ManagedRealmMarker>,
2811 options: RealmOptions,
2812 ) -> Result<(), fidl::Error>;
2813 fn r#get_network_context(
2814 &self,
2815 network_context: fidl::endpoints::ServerEnd<
2816 fidl_fuchsia_netemul_network::NetworkContextMarker,
2817 >,
2818 ) -> Result<(), fidl::Error>;
2819}
2820#[derive(Debug)]
2821#[cfg(target_os = "fuchsia")]
2822pub struct SandboxSynchronousProxy {
2823 client: fidl::client::sync::Client,
2824}
2825
2826#[cfg(target_os = "fuchsia")]
2827impl fidl::endpoints::SynchronousProxy for SandboxSynchronousProxy {
2828 type Proxy = SandboxProxy;
2829 type Protocol = SandboxMarker;
2830
2831 fn from_channel(inner: fidl::Channel) -> Self {
2832 Self::new(inner)
2833 }
2834
2835 fn into_channel(self) -> fidl::Channel {
2836 self.client.into_channel()
2837 }
2838
2839 fn as_channel(&self) -> &fidl::Channel {
2840 self.client.as_channel()
2841 }
2842}
2843
2844#[cfg(target_os = "fuchsia")]
2845impl SandboxSynchronousProxy {
2846 pub fn new(channel: fidl::Channel) -> Self {
2847 Self { client: fidl::client::sync::Client::new(channel) }
2848 }
2849
2850 pub fn into_channel(self) -> fidl::Channel {
2851 self.client.into_channel()
2852 }
2853
2854 pub fn wait_for_event(
2857 &self,
2858 deadline: zx::MonotonicInstant,
2859 ) -> Result<SandboxEvent, fidl::Error> {
2860 SandboxEvent::decode(self.client.wait_for_event::<SandboxMarker>(deadline)?)
2861 }
2862
2863 pub fn r#create_realm(
2874 &self,
2875 mut realm: fidl::endpoints::ServerEnd<ManagedRealmMarker>,
2876 mut options: RealmOptions,
2877 ) -> Result<(), fidl::Error> {
2878 self.client.send::<SandboxCreateRealmRequest>(
2879 (realm, &mut options),
2880 0x25d0bc5f1006a0c9,
2881 fidl::encoding::DynamicFlags::empty(),
2882 )
2883 }
2884
2885 pub fn r#get_network_context(
2889 &self,
2890 mut network_context: fidl::endpoints::ServerEnd<
2891 fidl_fuchsia_netemul_network::NetworkContextMarker,
2892 >,
2893 ) -> Result<(), fidl::Error> {
2894 self.client.send::<SandboxGetNetworkContextRequest>(
2895 (network_context,),
2896 0x140cb104c2605970,
2897 fidl::encoding::DynamicFlags::empty(),
2898 )
2899 }
2900}
2901
2902#[cfg(target_os = "fuchsia")]
2903impl From<SandboxSynchronousProxy> for zx::NullableHandle {
2904 fn from(value: SandboxSynchronousProxy) -> Self {
2905 value.into_channel().into()
2906 }
2907}
2908
2909#[cfg(target_os = "fuchsia")]
2910impl From<fidl::Channel> for SandboxSynchronousProxy {
2911 fn from(value: fidl::Channel) -> Self {
2912 Self::new(value)
2913 }
2914}
2915
2916#[cfg(target_os = "fuchsia")]
2917impl fidl::endpoints::FromClient for SandboxSynchronousProxy {
2918 type Protocol = SandboxMarker;
2919
2920 fn from_client(value: fidl::endpoints::ClientEnd<SandboxMarker>) -> Self {
2921 Self::new(value.into_channel())
2922 }
2923}
2924
2925#[derive(Debug, Clone)]
2926pub struct SandboxProxy {
2927 client: fidl::client::Client<fidl::encoding::DefaultFuchsiaResourceDialect>,
2928}
2929
2930impl fidl::endpoints::Proxy for SandboxProxy {
2931 type Protocol = SandboxMarker;
2932
2933 fn from_channel(inner: ::fidl::AsyncChannel) -> Self {
2934 Self::new(inner)
2935 }
2936
2937 fn into_channel(self) -> Result<::fidl::AsyncChannel, Self> {
2938 self.client.into_channel().map_err(|client| Self { client })
2939 }
2940
2941 fn as_channel(&self) -> &::fidl::AsyncChannel {
2942 self.client.as_channel()
2943 }
2944}
2945
2946impl SandboxProxy {
2947 pub fn new(channel: ::fidl::AsyncChannel) -> Self {
2949 let protocol_name = <SandboxMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
2950 Self { client: fidl::client::Client::new(channel, protocol_name) }
2951 }
2952
2953 pub fn take_event_stream(&self) -> SandboxEventStream {
2959 SandboxEventStream { event_receiver: self.client.take_event_receiver() }
2960 }
2961
2962 pub fn r#create_realm(
2973 &self,
2974 mut realm: fidl::endpoints::ServerEnd<ManagedRealmMarker>,
2975 mut options: RealmOptions,
2976 ) -> Result<(), fidl::Error> {
2977 SandboxProxyInterface::r#create_realm(self, realm, options)
2978 }
2979
2980 pub fn r#get_network_context(
2984 &self,
2985 mut network_context: fidl::endpoints::ServerEnd<
2986 fidl_fuchsia_netemul_network::NetworkContextMarker,
2987 >,
2988 ) -> Result<(), fidl::Error> {
2989 SandboxProxyInterface::r#get_network_context(self, network_context)
2990 }
2991}
2992
2993impl SandboxProxyInterface for SandboxProxy {
2994 fn r#create_realm(
2995 &self,
2996 mut realm: fidl::endpoints::ServerEnd<ManagedRealmMarker>,
2997 mut options: RealmOptions,
2998 ) -> Result<(), fidl::Error> {
2999 self.client.send::<SandboxCreateRealmRequest>(
3000 (realm, &mut options),
3001 0x25d0bc5f1006a0c9,
3002 fidl::encoding::DynamicFlags::empty(),
3003 )
3004 }
3005
3006 fn r#get_network_context(
3007 &self,
3008 mut network_context: fidl::endpoints::ServerEnd<
3009 fidl_fuchsia_netemul_network::NetworkContextMarker,
3010 >,
3011 ) -> Result<(), fidl::Error> {
3012 self.client.send::<SandboxGetNetworkContextRequest>(
3013 (network_context,),
3014 0x140cb104c2605970,
3015 fidl::encoding::DynamicFlags::empty(),
3016 )
3017 }
3018}
3019
3020pub struct SandboxEventStream {
3021 event_receiver: fidl::client::EventReceiver<fidl::encoding::DefaultFuchsiaResourceDialect>,
3022}
3023
3024impl std::marker::Unpin for SandboxEventStream {}
3025
3026impl futures::stream::FusedStream for SandboxEventStream {
3027 fn is_terminated(&self) -> bool {
3028 self.event_receiver.is_terminated()
3029 }
3030}
3031
3032impl futures::Stream for SandboxEventStream {
3033 type Item = Result<SandboxEvent, fidl::Error>;
3034
3035 fn poll_next(
3036 mut self: std::pin::Pin<&mut Self>,
3037 cx: &mut std::task::Context<'_>,
3038 ) -> std::task::Poll<Option<Self::Item>> {
3039 match futures::ready!(futures::stream::StreamExt::poll_next_unpin(
3040 &mut self.event_receiver,
3041 cx
3042 )?) {
3043 Some(buf) => std::task::Poll::Ready(Some(SandboxEvent::decode(buf))),
3044 None => std::task::Poll::Ready(None),
3045 }
3046 }
3047}
3048
3049#[derive(Debug)]
3050pub enum SandboxEvent {}
3051
3052impl SandboxEvent {
3053 fn decode(
3055 mut buf: <fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc,
3056 ) -> Result<SandboxEvent, fidl::Error> {
3057 let (bytes, _handles) = buf.split_mut();
3058 let (tx_header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
3059 debug_assert_eq!(tx_header.tx_id, 0);
3060 match tx_header.ordinal {
3061 _ => Err(fidl::Error::UnknownOrdinal {
3062 ordinal: tx_header.ordinal,
3063 protocol_name: <SandboxMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
3064 }),
3065 }
3066 }
3067}
3068
3069pub struct SandboxRequestStream {
3071 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
3072 is_terminated: bool,
3073}
3074
3075impl std::marker::Unpin for SandboxRequestStream {}
3076
3077impl futures::stream::FusedStream for SandboxRequestStream {
3078 fn is_terminated(&self) -> bool {
3079 self.is_terminated
3080 }
3081}
3082
3083impl fidl::endpoints::RequestStream for SandboxRequestStream {
3084 type Protocol = SandboxMarker;
3085 type ControlHandle = SandboxControlHandle;
3086
3087 fn from_channel(channel: ::fidl::AsyncChannel) -> Self {
3088 Self { inner: std::sync::Arc::new(fidl::ServeInner::new(channel)), is_terminated: false }
3089 }
3090
3091 fn control_handle(&self) -> Self::ControlHandle {
3092 SandboxControlHandle { inner: self.inner.clone() }
3093 }
3094
3095 fn into_inner(
3096 self,
3097 ) -> (::std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>, bool)
3098 {
3099 (self.inner, self.is_terminated)
3100 }
3101
3102 fn from_inner(
3103 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
3104 is_terminated: bool,
3105 ) -> Self {
3106 Self { inner, is_terminated }
3107 }
3108}
3109
3110impl futures::Stream for SandboxRequestStream {
3111 type Item = Result<SandboxRequest, fidl::Error>;
3112
3113 fn poll_next(
3114 mut self: std::pin::Pin<&mut Self>,
3115 cx: &mut std::task::Context<'_>,
3116 ) -> std::task::Poll<Option<Self::Item>> {
3117 let this = &mut *self;
3118 if this.inner.check_shutdown(cx) {
3119 this.is_terminated = true;
3120 return std::task::Poll::Ready(None);
3121 }
3122 if this.is_terminated {
3123 panic!("polled SandboxRequestStream after completion");
3124 }
3125 fidl::encoding::with_tls_decode_buf::<_, fidl::encoding::DefaultFuchsiaResourceDialect>(
3126 |bytes, handles| {
3127 match this.inner.channel().read_etc(cx, bytes, handles) {
3128 std::task::Poll::Ready(Ok(())) => {}
3129 std::task::Poll::Pending => return std::task::Poll::Pending,
3130 std::task::Poll::Ready(Err(zx_status::Status::PEER_CLOSED)) => {
3131 this.is_terminated = true;
3132 return std::task::Poll::Ready(None);
3133 }
3134 std::task::Poll::Ready(Err(e)) => {
3135 return std::task::Poll::Ready(Some(Err(fidl::Error::ServerRequestRead(
3136 e.into(),
3137 ))));
3138 }
3139 }
3140
3141 let (header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
3143
3144 std::task::Poll::Ready(Some(match header.ordinal {
3145 0x25d0bc5f1006a0c9 => {
3146 header.validate_request_tx_id(fidl::MethodType::OneWay)?;
3147 let mut req = fidl::new_empty!(
3148 SandboxCreateRealmRequest,
3149 fidl::encoding::DefaultFuchsiaResourceDialect
3150 );
3151 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<SandboxCreateRealmRequest>(&header, _body_bytes, handles, &mut req)?;
3152 let control_handle = SandboxControlHandle { inner: this.inner.clone() };
3153 Ok(SandboxRequest::CreateRealm {
3154 realm: req.realm,
3155 options: req.options,
3156
3157 control_handle,
3158 })
3159 }
3160 0x140cb104c2605970 => {
3161 header.validate_request_tx_id(fidl::MethodType::OneWay)?;
3162 let mut req = fidl::new_empty!(
3163 SandboxGetNetworkContextRequest,
3164 fidl::encoding::DefaultFuchsiaResourceDialect
3165 );
3166 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<SandboxGetNetworkContextRequest>(&header, _body_bytes, handles, &mut req)?;
3167 let control_handle = SandboxControlHandle { inner: this.inner.clone() };
3168 Ok(SandboxRequest::GetNetworkContext {
3169 network_context: req.network_context,
3170
3171 control_handle,
3172 })
3173 }
3174 _ => Err(fidl::Error::UnknownOrdinal {
3175 ordinal: header.ordinal,
3176 protocol_name:
3177 <SandboxMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
3178 }),
3179 }))
3180 },
3181 )
3182 }
3183}
3184
3185#[derive(Debug)]
3196pub enum SandboxRequest {
3197 CreateRealm {
3208 realm: fidl::endpoints::ServerEnd<ManagedRealmMarker>,
3209 options: RealmOptions,
3210 control_handle: SandboxControlHandle,
3211 },
3212 GetNetworkContext {
3216 network_context:
3217 fidl::endpoints::ServerEnd<fidl_fuchsia_netemul_network::NetworkContextMarker>,
3218 control_handle: SandboxControlHandle,
3219 },
3220}
3221
3222impl SandboxRequest {
3223 #[allow(irrefutable_let_patterns)]
3224 pub fn into_create_realm(
3225 self,
3226 ) -> Option<(fidl::endpoints::ServerEnd<ManagedRealmMarker>, RealmOptions, SandboxControlHandle)>
3227 {
3228 if let SandboxRequest::CreateRealm { realm, options, control_handle } = self {
3229 Some((realm, options, control_handle))
3230 } else {
3231 None
3232 }
3233 }
3234
3235 #[allow(irrefutable_let_patterns)]
3236 pub fn into_get_network_context(
3237 self,
3238 ) -> Option<(
3239 fidl::endpoints::ServerEnd<fidl_fuchsia_netemul_network::NetworkContextMarker>,
3240 SandboxControlHandle,
3241 )> {
3242 if let SandboxRequest::GetNetworkContext { network_context, control_handle } = self {
3243 Some((network_context, control_handle))
3244 } else {
3245 None
3246 }
3247 }
3248
3249 pub fn method_name(&self) -> &'static str {
3251 match *self {
3252 SandboxRequest::CreateRealm { .. } => "create_realm",
3253 SandboxRequest::GetNetworkContext { .. } => "get_network_context",
3254 }
3255 }
3256}
3257
3258#[derive(Debug, Clone)]
3259pub struct SandboxControlHandle {
3260 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
3261}
3262
3263impl fidl::endpoints::ControlHandle for SandboxControlHandle {
3264 fn shutdown(&self) {
3265 self.inner.shutdown()
3266 }
3267
3268 fn shutdown_with_epitaph(&self, status: zx_status::Status) {
3269 self.inner.shutdown_with_epitaph(status)
3270 }
3271
3272 fn is_closed(&self) -> bool {
3273 self.inner.channel().is_closed()
3274 }
3275 fn on_closed(&self) -> fidl::OnSignalsRef<'_> {
3276 self.inner.channel().on_closed()
3277 }
3278
3279 #[cfg(target_os = "fuchsia")]
3280 fn signal_peer(
3281 &self,
3282 clear_mask: zx::Signals,
3283 set_mask: zx::Signals,
3284 ) -> Result<(), zx_status::Status> {
3285 use fidl::Peered;
3286 self.inner.channel().signal_peer(clear_mask, set_mask)
3287 }
3288}
3289
3290impl SandboxControlHandle {}
3291
3292mod internal {
3293 use super::*;
3294
3295 impl fidl::encoding::ResourceTypeMarker for ManagedRealmAddDeviceRequest {
3296 type Borrowed<'a> = &'a mut Self;
3297 fn take_or_borrow<'a>(
3298 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
3299 ) -> Self::Borrowed<'a> {
3300 value
3301 }
3302 }
3303
3304 unsafe impl fidl::encoding::TypeMarker for ManagedRealmAddDeviceRequest {
3305 type Owned = Self;
3306
3307 #[inline(always)]
3308 fn inline_align(_context: fidl::encoding::Context) -> usize {
3309 8
3310 }
3311
3312 #[inline(always)]
3313 fn inline_size(_context: fidl::encoding::Context) -> usize {
3314 24
3315 }
3316 }
3317
3318 unsafe impl
3319 fidl::encoding::Encode<
3320 ManagedRealmAddDeviceRequest,
3321 fidl::encoding::DefaultFuchsiaResourceDialect,
3322 > for &mut ManagedRealmAddDeviceRequest
3323 {
3324 #[inline]
3325 unsafe fn encode(
3326 self,
3327 encoder: &mut fidl::encoding::Encoder<
3328 '_,
3329 fidl::encoding::DefaultFuchsiaResourceDialect,
3330 >,
3331 offset: usize,
3332 _depth: fidl::encoding::Depth,
3333 ) -> fidl::Result<()> {
3334 encoder.debug_check_bounds::<ManagedRealmAddDeviceRequest>(offset);
3335 fidl::encoding::Encode::<
3337 ManagedRealmAddDeviceRequest,
3338 fidl::encoding::DefaultFuchsiaResourceDialect,
3339 >::encode(
3340 (
3341 <fidl::encoding::UnboundedString as fidl::encoding::ValueTypeMarker>::borrow(
3342 &self.path,
3343 ),
3344 <fidl::encoding::Endpoint<
3345 fidl::endpoints::ClientEnd<
3346 fidl_fuchsia_netemul_network::DeviceProxy_Marker,
3347 >,
3348 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow(
3349 &mut self.device
3350 ),
3351 ),
3352 encoder,
3353 offset,
3354 _depth,
3355 )
3356 }
3357 }
3358 unsafe impl<
3359 T0: fidl::encoding::Encode<
3360 fidl::encoding::UnboundedString,
3361 fidl::encoding::DefaultFuchsiaResourceDialect,
3362 >,
3363 T1: fidl::encoding::Encode<
3364 fidl::encoding::Endpoint<
3365 fidl::endpoints::ClientEnd<fidl_fuchsia_netemul_network::DeviceProxy_Marker>,
3366 >,
3367 fidl::encoding::DefaultFuchsiaResourceDialect,
3368 >,
3369 >
3370 fidl::encoding::Encode<
3371 ManagedRealmAddDeviceRequest,
3372 fidl::encoding::DefaultFuchsiaResourceDialect,
3373 > for (T0, T1)
3374 {
3375 #[inline]
3376 unsafe fn encode(
3377 self,
3378 encoder: &mut fidl::encoding::Encoder<
3379 '_,
3380 fidl::encoding::DefaultFuchsiaResourceDialect,
3381 >,
3382 offset: usize,
3383 depth: fidl::encoding::Depth,
3384 ) -> fidl::Result<()> {
3385 encoder.debug_check_bounds::<ManagedRealmAddDeviceRequest>(offset);
3386 unsafe {
3389 let ptr = encoder.buf.as_mut_ptr().add(offset).offset(16);
3390 (ptr as *mut u64).write_unaligned(0);
3391 }
3392 self.0.encode(encoder, offset + 0, depth)?;
3394 self.1.encode(encoder, offset + 16, depth)?;
3395 Ok(())
3396 }
3397 }
3398
3399 impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
3400 for ManagedRealmAddDeviceRequest
3401 {
3402 #[inline(always)]
3403 fn new_empty() -> Self {
3404 Self {
3405 path: fidl::new_empty!(
3406 fidl::encoding::UnboundedString,
3407 fidl::encoding::DefaultFuchsiaResourceDialect
3408 ),
3409 device: fidl::new_empty!(
3410 fidl::encoding::Endpoint<
3411 fidl::endpoints::ClientEnd<
3412 fidl_fuchsia_netemul_network::DeviceProxy_Marker,
3413 >,
3414 >,
3415 fidl::encoding::DefaultFuchsiaResourceDialect
3416 ),
3417 }
3418 }
3419
3420 #[inline]
3421 unsafe fn decode(
3422 &mut self,
3423 decoder: &mut fidl::encoding::Decoder<
3424 '_,
3425 fidl::encoding::DefaultFuchsiaResourceDialect,
3426 >,
3427 offset: usize,
3428 _depth: fidl::encoding::Depth,
3429 ) -> fidl::Result<()> {
3430 decoder.debug_check_bounds::<Self>(offset);
3431 let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(16) };
3433 let padval = unsafe { (ptr as *const u64).read_unaligned() };
3434 let mask = 0xffffffff00000000u64;
3435 let maskedval = padval & mask;
3436 if maskedval != 0 {
3437 return Err(fidl::Error::NonZeroPadding {
3438 padding_start: offset + 16 + ((mask as u64).trailing_zeros() / 8) as usize,
3439 });
3440 }
3441 fidl::decode!(
3442 fidl::encoding::UnboundedString,
3443 fidl::encoding::DefaultFuchsiaResourceDialect,
3444 &mut self.path,
3445 decoder,
3446 offset + 0,
3447 _depth
3448 )?;
3449 fidl::decode!(
3450 fidl::encoding::Endpoint<
3451 fidl::endpoints::ClientEnd<fidl_fuchsia_netemul_network::DeviceProxy_Marker>,
3452 >,
3453 fidl::encoding::DefaultFuchsiaResourceDialect,
3454 &mut self.device,
3455 decoder,
3456 offset + 16,
3457 _depth
3458 )?;
3459 Ok(())
3460 }
3461 }
3462
3463 impl fidl::encoding::ResourceTypeMarker for ManagedRealmConnectToProtocolRequest {
3464 type Borrowed<'a> = &'a mut Self;
3465 fn take_or_borrow<'a>(
3466 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
3467 ) -> Self::Borrowed<'a> {
3468 value
3469 }
3470 }
3471
3472 unsafe impl fidl::encoding::TypeMarker for ManagedRealmConnectToProtocolRequest {
3473 type Owned = Self;
3474
3475 #[inline(always)]
3476 fn inline_align(_context: fidl::encoding::Context) -> usize {
3477 8
3478 }
3479
3480 #[inline(always)]
3481 fn inline_size(_context: fidl::encoding::Context) -> usize {
3482 40
3483 }
3484 }
3485
3486 unsafe impl
3487 fidl::encoding::Encode<
3488 ManagedRealmConnectToProtocolRequest,
3489 fidl::encoding::DefaultFuchsiaResourceDialect,
3490 > for &mut ManagedRealmConnectToProtocolRequest
3491 {
3492 #[inline]
3493 unsafe fn encode(
3494 self,
3495 encoder: &mut fidl::encoding::Encoder<
3496 '_,
3497 fidl::encoding::DefaultFuchsiaResourceDialect,
3498 >,
3499 offset: usize,
3500 _depth: fidl::encoding::Depth,
3501 ) -> fidl::Result<()> {
3502 encoder.debug_check_bounds::<ManagedRealmConnectToProtocolRequest>(offset);
3503 fidl::encoding::Encode::<ManagedRealmConnectToProtocolRequest, fidl::encoding::DefaultFuchsiaResourceDialect>::encode(
3505 (
3506 <fidl::encoding::BoundedString<255> as fidl::encoding::ValueTypeMarker>::borrow(&self.protocol_name),
3507 <fidl::encoding::Optional<fidl::encoding::BoundedString<255>> as fidl::encoding::ValueTypeMarker>::borrow(&self.child_name),
3508 <fidl::encoding::HandleType<fidl::Channel, { fidl::ObjectType::CHANNEL.into_raw() }, 2147483648> as fidl::encoding::ResourceTypeMarker>::take_or_borrow(&mut self.req),
3509 ),
3510 encoder, offset, _depth
3511 )
3512 }
3513 }
3514 unsafe impl<
3515 T0: fidl::encoding::Encode<
3516 fidl::encoding::BoundedString<255>,
3517 fidl::encoding::DefaultFuchsiaResourceDialect,
3518 >,
3519 T1: fidl::encoding::Encode<
3520 fidl::encoding::Optional<fidl::encoding::BoundedString<255>>,
3521 fidl::encoding::DefaultFuchsiaResourceDialect,
3522 >,
3523 T2: fidl::encoding::Encode<
3524 fidl::encoding::HandleType<
3525 fidl::Channel,
3526 { fidl::ObjectType::CHANNEL.into_raw() },
3527 2147483648,
3528 >,
3529 fidl::encoding::DefaultFuchsiaResourceDialect,
3530 >,
3531 >
3532 fidl::encoding::Encode<
3533 ManagedRealmConnectToProtocolRequest,
3534 fidl::encoding::DefaultFuchsiaResourceDialect,
3535 > for (T0, T1, T2)
3536 {
3537 #[inline]
3538 unsafe fn encode(
3539 self,
3540 encoder: &mut fidl::encoding::Encoder<
3541 '_,
3542 fidl::encoding::DefaultFuchsiaResourceDialect,
3543 >,
3544 offset: usize,
3545 depth: fidl::encoding::Depth,
3546 ) -> fidl::Result<()> {
3547 encoder.debug_check_bounds::<ManagedRealmConnectToProtocolRequest>(offset);
3548 unsafe {
3551 let ptr = encoder.buf.as_mut_ptr().add(offset).offset(32);
3552 (ptr as *mut u64).write_unaligned(0);
3553 }
3554 self.0.encode(encoder, offset + 0, depth)?;
3556 self.1.encode(encoder, offset + 16, depth)?;
3557 self.2.encode(encoder, offset + 32, depth)?;
3558 Ok(())
3559 }
3560 }
3561
3562 impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
3563 for ManagedRealmConnectToProtocolRequest
3564 {
3565 #[inline(always)]
3566 fn new_empty() -> Self {
3567 Self {
3568 protocol_name: fidl::new_empty!(
3569 fidl::encoding::BoundedString<255>,
3570 fidl::encoding::DefaultFuchsiaResourceDialect
3571 ),
3572 child_name: fidl::new_empty!(
3573 fidl::encoding::Optional<fidl::encoding::BoundedString<255>>,
3574 fidl::encoding::DefaultFuchsiaResourceDialect
3575 ),
3576 req: fidl::new_empty!(fidl::encoding::HandleType<fidl::Channel, { fidl::ObjectType::CHANNEL.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect),
3577 }
3578 }
3579
3580 #[inline]
3581 unsafe fn decode(
3582 &mut self,
3583 decoder: &mut fidl::encoding::Decoder<
3584 '_,
3585 fidl::encoding::DefaultFuchsiaResourceDialect,
3586 >,
3587 offset: usize,
3588 _depth: fidl::encoding::Depth,
3589 ) -> fidl::Result<()> {
3590 decoder.debug_check_bounds::<Self>(offset);
3591 let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(32) };
3593 let padval = unsafe { (ptr as *const u64).read_unaligned() };
3594 let mask = 0xffffffff00000000u64;
3595 let maskedval = padval & mask;
3596 if maskedval != 0 {
3597 return Err(fidl::Error::NonZeroPadding {
3598 padding_start: offset + 32 + ((mask as u64).trailing_zeros() / 8) as usize,
3599 });
3600 }
3601 fidl::decode!(
3602 fidl::encoding::BoundedString<255>,
3603 fidl::encoding::DefaultFuchsiaResourceDialect,
3604 &mut self.protocol_name,
3605 decoder,
3606 offset + 0,
3607 _depth
3608 )?;
3609 fidl::decode!(
3610 fidl::encoding::Optional<fidl::encoding::BoundedString<255>>,
3611 fidl::encoding::DefaultFuchsiaResourceDialect,
3612 &mut self.child_name,
3613 decoder,
3614 offset + 16,
3615 _depth
3616 )?;
3617 fidl::decode!(fidl::encoding::HandleType<fidl::Channel, { fidl::ObjectType::CHANNEL.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect, &mut self.req, decoder, offset + 32, _depth)?;
3618 Ok(())
3619 }
3620 }
3621
3622 impl fidl::encoding::ResourceTypeMarker for ManagedRealmGetCrashListenerRequest {
3623 type Borrowed<'a> = &'a mut Self;
3624 fn take_or_borrow<'a>(
3625 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
3626 ) -> Self::Borrowed<'a> {
3627 value
3628 }
3629 }
3630
3631 unsafe impl fidl::encoding::TypeMarker for ManagedRealmGetCrashListenerRequest {
3632 type Owned = Self;
3633
3634 #[inline(always)]
3635 fn inline_align(_context: fidl::encoding::Context) -> usize {
3636 4
3637 }
3638
3639 #[inline(always)]
3640 fn inline_size(_context: fidl::encoding::Context) -> usize {
3641 4
3642 }
3643 }
3644
3645 unsafe impl
3646 fidl::encoding::Encode<
3647 ManagedRealmGetCrashListenerRequest,
3648 fidl::encoding::DefaultFuchsiaResourceDialect,
3649 > for &mut ManagedRealmGetCrashListenerRequest
3650 {
3651 #[inline]
3652 unsafe fn encode(
3653 self,
3654 encoder: &mut fidl::encoding::Encoder<
3655 '_,
3656 fidl::encoding::DefaultFuchsiaResourceDialect,
3657 >,
3658 offset: usize,
3659 _depth: fidl::encoding::Depth,
3660 ) -> fidl::Result<()> {
3661 encoder.debug_check_bounds::<ManagedRealmGetCrashListenerRequest>(offset);
3662 fidl::encoding::Encode::<ManagedRealmGetCrashListenerRequest, fidl::encoding::DefaultFuchsiaResourceDialect>::encode(
3664 (
3665 <fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<CrashListenerMarker>> as fidl::encoding::ResourceTypeMarker>::take_or_borrow(&mut self.listener),
3666 ),
3667 encoder, offset, _depth
3668 )
3669 }
3670 }
3671 unsafe impl<
3672 T0: fidl::encoding::Encode<
3673 fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<CrashListenerMarker>>,
3674 fidl::encoding::DefaultFuchsiaResourceDialect,
3675 >,
3676 >
3677 fidl::encoding::Encode<
3678 ManagedRealmGetCrashListenerRequest,
3679 fidl::encoding::DefaultFuchsiaResourceDialect,
3680 > for (T0,)
3681 {
3682 #[inline]
3683 unsafe fn encode(
3684 self,
3685 encoder: &mut fidl::encoding::Encoder<
3686 '_,
3687 fidl::encoding::DefaultFuchsiaResourceDialect,
3688 >,
3689 offset: usize,
3690 depth: fidl::encoding::Depth,
3691 ) -> fidl::Result<()> {
3692 encoder.debug_check_bounds::<ManagedRealmGetCrashListenerRequest>(offset);
3693 self.0.encode(encoder, offset + 0, depth)?;
3697 Ok(())
3698 }
3699 }
3700
3701 impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
3702 for ManagedRealmGetCrashListenerRequest
3703 {
3704 #[inline(always)]
3705 fn new_empty() -> Self {
3706 Self {
3707 listener: fidl::new_empty!(
3708 fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<CrashListenerMarker>>,
3709 fidl::encoding::DefaultFuchsiaResourceDialect
3710 ),
3711 }
3712 }
3713
3714 #[inline]
3715 unsafe fn decode(
3716 &mut self,
3717 decoder: &mut fidl::encoding::Decoder<
3718 '_,
3719 fidl::encoding::DefaultFuchsiaResourceDialect,
3720 >,
3721 offset: usize,
3722 _depth: fidl::encoding::Depth,
3723 ) -> fidl::Result<()> {
3724 decoder.debug_check_bounds::<Self>(offset);
3725 fidl::decode!(
3727 fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<CrashListenerMarker>>,
3728 fidl::encoding::DefaultFuchsiaResourceDialect,
3729 &mut self.listener,
3730 decoder,
3731 offset + 0,
3732 _depth
3733 )?;
3734 Ok(())
3735 }
3736 }
3737
3738 impl fidl::encoding::ResourceTypeMarker for ManagedRealmGetDevfsRequest {
3739 type Borrowed<'a> = &'a mut Self;
3740 fn take_or_borrow<'a>(
3741 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
3742 ) -> Self::Borrowed<'a> {
3743 value
3744 }
3745 }
3746
3747 unsafe impl fidl::encoding::TypeMarker for ManagedRealmGetDevfsRequest {
3748 type Owned = Self;
3749
3750 #[inline(always)]
3751 fn inline_align(_context: fidl::encoding::Context) -> usize {
3752 4
3753 }
3754
3755 #[inline(always)]
3756 fn inline_size(_context: fidl::encoding::Context) -> usize {
3757 4
3758 }
3759 }
3760
3761 unsafe impl
3762 fidl::encoding::Encode<
3763 ManagedRealmGetDevfsRequest,
3764 fidl::encoding::DefaultFuchsiaResourceDialect,
3765 > for &mut ManagedRealmGetDevfsRequest
3766 {
3767 #[inline]
3768 unsafe fn encode(
3769 self,
3770 encoder: &mut fidl::encoding::Encoder<
3771 '_,
3772 fidl::encoding::DefaultFuchsiaResourceDialect,
3773 >,
3774 offset: usize,
3775 _depth: fidl::encoding::Depth,
3776 ) -> fidl::Result<()> {
3777 encoder.debug_check_bounds::<ManagedRealmGetDevfsRequest>(offset);
3778 fidl::encoding::Encode::<
3780 ManagedRealmGetDevfsRequest,
3781 fidl::encoding::DefaultFuchsiaResourceDialect,
3782 >::encode(
3783 (<fidl::encoding::Endpoint<
3784 fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>,
3785 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow(
3786 &mut self.devfs
3787 ),),
3788 encoder,
3789 offset,
3790 _depth,
3791 )
3792 }
3793 }
3794 unsafe impl<
3795 T0: fidl::encoding::Encode<
3796 fidl::encoding::Endpoint<
3797 fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>,
3798 >,
3799 fidl::encoding::DefaultFuchsiaResourceDialect,
3800 >,
3801 >
3802 fidl::encoding::Encode<
3803 ManagedRealmGetDevfsRequest,
3804 fidl::encoding::DefaultFuchsiaResourceDialect,
3805 > for (T0,)
3806 {
3807 #[inline]
3808 unsafe fn encode(
3809 self,
3810 encoder: &mut fidl::encoding::Encoder<
3811 '_,
3812 fidl::encoding::DefaultFuchsiaResourceDialect,
3813 >,
3814 offset: usize,
3815 depth: fidl::encoding::Depth,
3816 ) -> fidl::Result<()> {
3817 encoder.debug_check_bounds::<ManagedRealmGetDevfsRequest>(offset);
3818 self.0.encode(encoder, offset + 0, depth)?;
3822 Ok(())
3823 }
3824 }
3825
3826 impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
3827 for ManagedRealmGetDevfsRequest
3828 {
3829 #[inline(always)]
3830 fn new_empty() -> Self {
3831 Self {
3832 devfs: fidl::new_empty!(
3833 fidl::encoding::Endpoint<
3834 fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>,
3835 >,
3836 fidl::encoding::DefaultFuchsiaResourceDialect
3837 ),
3838 }
3839 }
3840
3841 #[inline]
3842 unsafe fn decode(
3843 &mut self,
3844 decoder: &mut fidl::encoding::Decoder<
3845 '_,
3846 fidl::encoding::DefaultFuchsiaResourceDialect,
3847 >,
3848 offset: usize,
3849 _depth: fidl::encoding::Depth,
3850 ) -> fidl::Result<()> {
3851 decoder.debug_check_bounds::<Self>(offset);
3852 fidl::decode!(
3854 fidl::encoding::Endpoint<
3855 fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>,
3856 >,
3857 fidl::encoding::DefaultFuchsiaResourceDialect,
3858 &mut self.devfs,
3859 decoder,
3860 offset + 0,
3861 _depth
3862 )?;
3863 Ok(())
3864 }
3865 }
3866
3867 impl fidl::encoding::ResourceTypeMarker for ManagedRealmOpenDiagnosticsDirectoryRequest {
3868 type Borrowed<'a> = &'a mut Self;
3869 fn take_or_borrow<'a>(
3870 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
3871 ) -> Self::Borrowed<'a> {
3872 value
3873 }
3874 }
3875
3876 unsafe impl fidl::encoding::TypeMarker for ManagedRealmOpenDiagnosticsDirectoryRequest {
3877 type Owned = Self;
3878
3879 #[inline(always)]
3880 fn inline_align(_context: fidl::encoding::Context) -> usize {
3881 8
3882 }
3883
3884 #[inline(always)]
3885 fn inline_size(_context: fidl::encoding::Context) -> usize {
3886 24
3887 }
3888 }
3889
3890 unsafe impl
3891 fidl::encoding::Encode<
3892 ManagedRealmOpenDiagnosticsDirectoryRequest,
3893 fidl::encoding::DefaultFuchsiaResourceDialect,
3894 > for &mut ManagedRealmOpenDiagnosticsDirectoryRequest
3895 {
3896 #[inline]
3897 unsafe fn encode(
3898 self,
3899 encoder: &mut fidl::encoding::Encoder<
3900 '_,
3901 fidl::encoding::DefaultFuchsiaResourceDialect,
3902 >,
3903 offset: usize,
3904 _depth: fidl::encoding::Depth,
3905 ) -> fidl::Result<()> {
3906 encoder.debug_check_bounds::<ManagedRealmOpenDiagnosticsDirectoryRequest>(offset);
3907 fidl::encoding::Encode::<
3909 ManagedRealmOpenDiagnosticsDirectoryRequest,
3910 fidl::encoding::DefaultFuchsiaResourceDialect,
3911 >::encode(
3912 (
3913 <fidl::encoding::BoundedString<255> as fidl::encoding::ValueTypeMarker>::borrow(
3914 &self.child_name,
3915 ),
3916 <fidl::encoding::Endpoint<
3917 fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>,
3918 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow(
3919 &mut self.directory
3920 ),
3921 ),
3922 encoder,
3923 offset,
3924 _depth,
3925 )
3926 }
3927 }
3928 unsafe impl<
3929 T0: fidl::encoding::Encode<
3930 fidl::encoding::BoundedString<255>,
3931 fidl::encoding::DefaultFuchsiaResourceDialect,
3932 >,
3933 T1: fidl::encoding::Encode<
3934 fidl::encoding::Endpoint<
3935 fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>,
3936 >,
3937 fidl::encoding::DefaultFuchsiaResourceDialect,
3938 >,
3939 >
3940 fidl::encoding::Encode<
3941 ManagedRealmOpenDiagnosticsDirectoryRequest,
3942 fidl::encoding::DefaultFuchsiaResourceDialect,
3943 > for (T0, T1)
3944 {
3945 #[inline]
3946 unsafe fn encode(
3947 self,
3948 encoder: &mut fidl::encoding::Encoder<
3949 '_,
3950 fidl::encoding::DefaultFuchsiaResourceDialect,
3951 >,
3952 offset: usize,
3953 depth: fidl::encoding::Depth,
3954 ) -> fidl::Result<()> {
3955 encoder.debug_check_bounds::<ManagedRealmOpenDiagnosticsDirectoryRequest>(offset);
3956 unsafe {
3959 let ptr = encoder.buf.as_mut_ptr().add(offset).offset(16);
3960 (ptr as *mut u64).write_unaligned(0);
3961 }
3962 self.0.encode(encoder, offset + 0, depth)?;
3964 self.1.encode(encoder, offset + 16, depth)?;
3965 Ok(())
3966 }
3967 }
3968
3969 impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
3970 for ManagedRealmOpenDiagnosticsDirectoryRequest
3971 {
3972 #[inline(always)]
3973 fn new_empty() -> Self {
3974 Self {
3975 child_name: fidl::new_empty!(
3976 fidl::encoding::BoundedString<255>,
3977 fidl::encoding::DefaultFuchsiaResourceDialect
3978 ),
3979 directory: fidl::new_empty!(
3980 fidl::encoding::Endpoint<
3981 fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>,
3982 >,
3983 fidl::encoding::DefaultFuchsiaResourceDialect
3984 ),
3985 }
3986 }
3987
3988 #[inline]
3989 unsafe fn decode(
3990 &mut self,
3991 decoder: &mut fidl::encoding::Decoder<
3992 '_,
3993 fidl::encoding::DefaultFuchsiaResourceDialect,
3994 >,
3995 offset: usize,
3996 _depth: fidl::encoding::Depth,
3997 ) -> fidl::Result<()> {
3998 decoder.debug_check_bounds::<Self>(offset);
3999 let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(16) };
4001 let padval = unsafe { (ptr as *const u64).read_unaligned() };
4002 let mask = 0xffffffff00000000u64;
4003 let maskedval = padval & mask;
4004 if maskedval != 0 {
4005 return Err(fidl::Error::NonZeroPadding {
4006 padding_start: offset + 16 + ((mask as u64).trailing_zeros() / 8) as usize,
4007 });
4008 }
4009 fidl::decode!(
4010 fidl::encoding::BoundedString<255>,
4011 fidl::encoding::DefaultFuchsiaResourceDialect,
4012 &mut self.child_name,
4013 decoder,
4014 offset + 0,
4015 _depth
4016 )?;
4017 fidl::decode!(
4018 fidl::encoding::Endpoint<
4019 fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>,
4020 >,
4021 fidl::encoding::DefaultFuchsiaResourceDialect,
4022 &mut self.directory,
4023 decoder,
4024 offset + 16,
4025 _depth
4026 )?;
4027 Ok(())
4028 }
4029 }
4030
4031 impl fidl::encoding::ResourceTypeMarker for SandboxCreateRealmRequest {
4032 type Borrowed<'a> = &'a mut Self;
4033 fn take_or_borrow<'a>(
4034 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
4035 ) -> Self::Borrowed<'a> {
4036 value
4037 }
4038 }
4039
4040 unsafe impl fidl::encoding::TypeMarker for SandboxCreateRealmRequest {
4041 type Owned = Self;
4042
4043 #[inline(always)]
4044 fn inline_align(_context: fidl::encoding::Context) -> usize {
4045 8
4046 }
4047
4048 #[inline(always)]
4049 fn inline_size(_context: fidl::encoding::Context) -> usize {
4050 24
4051 }
4052 }
4053
4054 unsafe impl
4055 fidl::encoding::Encode<
4056 SandboxCreateRealmRequest,
4057 fidl::encoding::DefaultFuchsiaResourceDialect,
4058 > for &mut SandboxCreateRealmRequest
4059 {
4060 #[inline]
4061 unsafe fn encode(
4062 self,
4063 encoder: &mut fidl::encoding::Encoder<
4064 '_,
4065 fidl::encoding::DefaultFuchsiaResourceDialect,
4066 >,
4067 offset: usize,
4068 _depth: fidl::encoding::Depth,
4069 ) -> fidl::Result<()> {
4070 encoder.debug_check_bounds::<SandboxCreateRealmRequest>(offset);
4071 fidl::encoding::Encode::<SandboxCreateRealmRequest, fidl::encoding::DefaultFuchsiaResourceDialect>::encode(
4073 (
4074 <fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<ManagedRealmMarker>> as fidl::encoding::ResourceTypeMarker>::take_or_borrow(&mut self.realm),
4075 <RealmOptions as fidl::encoding::ResourceTypeMarker>::take_or_borrow(&mut self.options),
4076 ),
4077 encoder, offset, _depth
4078 )
4079 }
4080 }
4081 unsafe impl<
4082 T0: fidl::encoding::Encode<
4083 fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<ManagedRealmMarker>>,
4084 fidl::encoding::DefaultFuchsiaResourceDialect,
4085 >,
4086 T1: fidl::encoding::Encode<RealmOptions, fidl::encoding::DefaultFuchsiaResourceDialect>,
4087 >
4088 fidl::encoding::Encode<
4089 SandboxCreateRealmRequest,
4090 fidl::encoding::DefaultFuchsiaResourceDialect,
4091 > for (T0, T1)
4092 {
4093 #[inline]
4094 unsafe fn encode(
4095 self,
4096 encoder: &mut fidl::encoding::Encoder<
4097 '_,
4098 fidl::encoding::DefaultFuchsiaResourceDialect,
4099 >,
4100 offset: usize,
4101 depth: fidl::encoding::Depth,
4102 ) -> fidl::Result<()> {
4103 encoder.debug_check_bounds::<SandboxCreateRealmRequest>(offset);
4104 unsafe {
4107 let ptr = encoder.buf.as_mut_ptr().add(offset).offset(0);
4108 (ptr as *mut u64).write_unaligned(0);
4109 }
4110 self.0.encode(encoder, offset + 0, depth)?;
4112 self.1.encode(encoder, offset + 8, depth)?;
4113 Ok(())
4114 }
4115 }
4116
4117 impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
4118 for SandboxCreateRealmRequest
4119 {
4120 #[inline(always)]
4121 fn new_empty() -> Self {
4122 Self {
4123 realm: fidl::new_empty!(
4124 fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<ManagedRealmMarker>>,
4125 fidl::encoding::DefaultFuchsiaResourceDialect
4126 ),
4127 options: fidl::new_empty!(
4128 RealmOptions,
4129 fidl::encoding::DefaultFuchsiaResourceDialect
4130 ),
4131 }
4132 }
4133
4134 #[inline]
4135 unsafe fn decode(
4136 &mut self,
4137 decoder: &mut fidl::encoding::Decoder<
4138 '_,
4139 fidl::encoding::DefaultFuchsiaResourceDialect,
4140 >,
4141 offset: usize,
4142 _depth: fidl::encoding::Depth,
4143 ) -> fidl::Result<()> {
4144 decoder.debug_check_bounds::<Self>(offset);
4145 let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(0) };
4147 let padval = unsafe { (ptr as *const u64).read_unaligned() };
4148 let mask = 0xffffffff00000000u64;
4149 let maskedval = padval & mask;
4150 if maskedval != 0 {
4151 return Err(fidl::Error::NonZeroPadding {
4152 padding_start: offset + 0 + ((mask as u64).trailing_zeros() / 8) as usize,
4153 });
4154 }
4155 fidl::decode!(
4156 fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<ManagedRealmMarker>>,
4157 fidl::encoding::DefaultFuchsiaResourceDialect,
4158 &mut self.realm,
4159 decoder,
4160 offset + 0,
4161 _depth
4162 )?;
4163 fidl::decode!(
4164 RealmOptions,
4165 fidl::encoding::DefaultFuchsiaResourceDialect,
4166 &mut self.options,
4167 decoder,
4168 offset + 8,
4169 _depth
4170 )?;
4171 Ok(())
4172 }
4173 }
4174
4175 impl fidl::encoding::ResourceTypeMarker for SandboxGetNetworkContextRequest {
4176 type Borrowed<'a> = &'a mut Self;
4177 fn take_or_borrow<'a>(
4178 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
4179 ) -> Self::Borrowed<'a> {
4180 value
4181 }
4182 }
4183
4184 unsafe impl fidl::encoding::TypeMarker for SandboxGetNetworkContextRequest {
4185 type Owned = Self;
4186
4187 #[inline(always)]
4188 fn inline_align(_context: fidl::encoding::Context) -> usize {
4189 4
4190 }
4191
4192 #[inline(always)]
4193 fn inline_size(_context: fidl::encoding::Context) -> usize {
4194 4
4195 }
4196 }
4197
4198 unsafe impl
4199 fidl::encoding::Encode<
4200 SandboxGetNetworkContextRequest,
4201 fidl::encoding::DefaultFuchsiaResourceDialect,
4202 > for &mut SandboxGetNetworkContextRequest
4203 {
4204 #[inline]
4205 unsafe fn encode(
4206 self,
4207 encoder: &mut fidl::encoding::Encoder<
4208 '_,
4209 fidl::encoding::DefaultFuchsiaResourceDialect,
4210 >,
4211 offset: usize,
4212 _depth: fidl::encoding::Depth,
4213 ) -> fidl::Result<()> {
4214 encoder.debug_check_bounds::<SandboxGetNetworkContextRequest>(offset);
4215 fidl::encoding::Encode::<
4217 SandboxGetNetworkContextRequest,
4218 fidl::encoding::DefaultFuchsiaResourceDialect,
4219 >::encode(
4220 (<fidl::encoding::Endpoint<
4221 fidl::endpoints::ServerEnd<fidl_fuchsia_netemul_network::NetworkContextMarker>,
4222 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow(
4223 &mut self.network_context,
4224 ),),
4225 encoder,
4226 offset,
4227 _depth,
4228 )
4229 }
4230 }
4231 unsafe impl<
4232 T0: fidl::encoding::Encode<
4233 fidl::encoding::Endpoint<
4234 fidl::endpoints::ServerEnd<fidl_fuchsia_netemul_network::NetworkContextMarker>,
4235 >,
4236 fidl::encoding::DefaultFuchsiaResourceDialect,
4237 >,
4238 >
4239 fidl::encoding::Encode<
4240 SandboxGetNetworkContextRequest,
4241 fidl::encoding::DefaultFuchsiaResourceDialect,
4242 > for (T0,)
4243 {
4244 #[inline]
4245 unsafe fn encode(
4246 self,
4247 encoder: &mut fidl::encoding::Encoder<
4248 '_,
4249 fidl::encoding::DefaultFuchsiaResourceDialect,
4250 >,
4251 offset: usize,
4252 depth: fidl::encoding::Depth,
4253 ) -> fidl::Result<()> {
4254 encoder.debug_check_bounds::<SandboxGetNetworkContextRequest>(offset);
4255 self.0.encode(encoder, offset + 0, depth)?;
4259 Ok(())
4260 }
4261 }
4262
4263 impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
4264 for SandboxGetNetworkContextRequest
4265 {
4266 #[inline(always)]
4267 fn new_empty() -> Self {
4268 Self {
4269 network_context: fidl::new_empty!(
4270 fidl::encoding::Endpoint<
4271 fidl::endpoints::ServerEnd<
4272 fidl_fuchsia_netemul_network::NetworkContextMarker,
4273 >,
4274 >,
4275 fidl::encoding::DefaultFuchsiaResourceDialect
4276 ),
4277 }
4278 }
4279
4280 #[inline]
4281 unsafe fn decode(
4282 &mut self,
4283 decoder: &mut fidl::encoding::Decoder<
4284 '_,
4285 fidl::encoding::DefaultFuchsiaResourceDialect,
4286 >,
4287 offset: usize,
4288 _depth: fidl::encoding::Depth,
4289 ) -> fidl::Result<()> {
4290 decoder.debug_check_bounds::<Self>(offset);
4291 fidl::decode!(
4293 fidl::encoding::Endpoint<
4294 fidl::endpoints::ServerEnd<fidl_fuchsia_netemul_network::NetworkContextMarker>,
4295 >,
4296 fidl::encoding::DefaultFuchsiaResourceDialect,
4297 &mut self.network_context,
4298 decoder,
4299 offset + 0,
4300 _depth
4301 )?;
4302 Ok(())
4303 }
4304 }
4305
4306 impl ChildDef {
4307 #[inline(always)]
4308 fn max_ordinal_present(&self) -> u64 {
4309 if let Some(_) = self.config_values {
4310 return 7;
4311 }
4312 if let Some(_) = self.eager {
4313 return 6;
4314 }
4315 if let Some(_) = self.program_args {
4316 return 5;
4317 }
4318 if let Some(_) = self.uses {
4319 return 4;
4320 }
4321 if let Some(_) = self.exposes {
4322 return 3;
4323 }
4324 if let Some(_) = self.name {
4325 return 2;
4326 }
4327 if let Some(_) = self.source {
4328 return 1;
4329 }
4330 0
4331 }
4332 }
4333
4334 impl fidl::encoding::ResourceTypeMarker for ChildDef {
4335 type Borrowed<'a> = &'a mut Self;
4336 fn take_or_borrow<'a>(
4337 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
4338 ) -> Self::Borrowed<'a> {
4339 value
4340 }
4341 }
4342
4343 unsafe impl fidl::encoding::TypeMarker for ChildDef {
4344 type Owned = Self;
4345
4346 #[inline(always)]
4347 fn inline_align(_context: fidl::encoding::Context) -> usize {
4348 8
4349 }
4350
4351 #[inline(always)]
4352 fn inline_size(_context: fidl::encoding::Context) -> usize {
4353 16
4354 }
4355 }
4356
4357 unsafe impl fidl::encoding::Encode<ChildDef, fidl::encoding::DefaultFuchsiaResourceDialect>
4358 for &mut ChildDef
4359 {
4360 unsafe fn encode(
4361 self,
4362 encoder: &mut fidl::encoding::Encoder<
4363 '_,
4364 fidl::encoding::DefaultFuchsiaResourceDialect,
4365 >,
4366 offset: usize,
4367 mut depth: fidl::encoding::Depth,
4368 ) -> fidl::Result<()> {
4369 encoder.debug_check_bounds::<ChildDef>(offset);
4370 let max_ordinal: u64 = self.max_ordinal_present();
4372 encoder.write_num(max_ordinal, offset);
4373 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
4374 if max_ordinal == 0 {
4376 return Ok(());
4377 }
4378 depth.increment()?;
4379 let envelope_size = 8;
4380 let bytes_len = max_ordinal as usize * envelope_size;
4381 #[allow(unused_variables)]
4382 let offset = encoder.out_of_line_offset(bytes_len);
4383 let mut _prev_end_offset: usize = 0;
4384 if 1 > max_ordinal {
4385 return Ok(());
4386 }
4387
4388 let cur_offset: usize = (1 - 1) * envelope_size;
4391
4392 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4394
4395 fidl::encoding::encode_in_envelope_optional::<
4400 ChildSource,
4401 fidl::encoding::DefaultFuchsiaResourceDialect,
4402 >(
4403 self.source
4404 .as_mut()
4405 .map(<ChildSource as fidl::encoding::ResourceTypeMarker>::take_or_borrow),
4406 encoder,
4407 offset + cur_offset,
4408 depth,
4409 )?;
4410
4411 _prev_end_offset = cur_offset + envelope_size;
4412 if 2 > max_ordinal {
4413 return Ok(());
4414 }
4415
4416 let cur_offset: usize = (2 - 1) * envelope_size;
4419
4420 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4422
4423 fidl::encoding::encode_in_envelope_optional::<
4428 fidl::encoding::BoundedString<255>,
4429 fidl::encoding::DefaultFuchsiaResourceDialect,
4430 >(
4431 self.name.as_ref().map(
4432 <fidl::encoding::BoundedString<255> as fidl::encoding::ValueTypeMarker>::borrow,
4433 ),
4434 encoder,
4435 offset + cur_offset,
4436 depth,
4437 )?;
4438
4439 _prev_end_offset = cur_offset + envelope_size;
4440 if 3 > max_ordinal {
4441 return Ok(());
4442 }
4443
4444 let cur_offset: usize = (3 - 1) * envelope_size;
4447
4448 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4450
4451 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<fidl::encoding::BoundedString<255>>, fidl::encoding::DefaultFuchsiaResourceDialect>(
4456 self.exposes.as_ref().map(<fidl::encoding::UnboundedVector<fidl::encoding::BoundedString<255>> as fidl::encoding::ValueTypeMarker>::borrow),
4457 encoder, offset + cur_offset, depth
4458 )?;
4459
4460 _prev_end_offset = cur_offset + envelope_size;
4461 if 4 > max_ordinal {
4462 return Ok(());
4463 }
4464
4465 let cur_offset: usize = (4 - 1) * envelope_size;
4468
4469 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4471
4472 fidl::encoding::encode_in_envelope_optional::<
4477 ChildUses,
4478 fidl::encoding::DefaultFuchsiaResourceDialect,
4479 >(
4480 self.uses.as_ref().map(<ChildUses as fidl::encoding::ValueTypeMarker>::borrow),
4481 encoder,
4482 offset + cur_offset,
4483 depth,
4484 )?;
4485
4486 _prev_end_offset = cur_offset + envelope_size;
4487 if 5 > max_ordinal {
4488 return Ok(());
4489 }
4490
4491 let cur_offset: usize = (5 - 1) * envelope_size;
4494
4495 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4497
4498 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<fidl::encoding::UnboundedString>, fidl::encoding::DefaultFuchsiaResourceDialect>(
4503 self.program_args.as_ref().map(<fidl::encoding::UnboundedVector<fidl::encoding::UnboundedString> as fidl::encoding::ValueTypeMarker>::borrow),
4504 encoder, offset + cur_offset, depth
4505 )?;
4506
4507 _prev_end_offset = cur_offset + envelope_size;
4508 if 6 > max_ordinal {
4509 return Ok(());
4510 }
4511
4512 let cur_offset: usize = (6 - 1) * envelope_size;
4515
4516 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4518
4519 fidl::encoding::encode_in_envelope_optional::<
4524 bool,
4525 fidl::encoding::DefaultFuchsiaResourceDialect,
4526 >(
4527 self.eager.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
4528 encoder,
4529 offset + cur_offset,
4530 depth,
4531 )?;
4532
4533 _prev_end_offset = cur_offset + envelope_size;
4534 if 7 > max_ordinal {
4535 return Ok(());
4536 }
4537
4538 let cur_offset: usize = (7 - 1) * envelope_size;
4541
4542 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4544
4545 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<ChildConfigValue>, fidl::encoding::DefaultFuchsiaResourceDialect>(
4550 self.config_values.as_ref().map(<fidl::encoding::UnboundedVector<ChildConfigValue> as fidl::encoding::ValueTypeMarker>::borrow),
4551 encoder, offset + cur_offset, depth
4552 )?;
4553
4554 _prev_end_offset = cur_offset + envelope_size;
4555
4556 Ok(())
4557 }
4558 }
4559
4560 impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect> for ChildDef {
4561 #[inline(always)]
4562 fn new_empty() -> Self {
4563 Self::default()
4564 }
4565
4566 unsafe fn decode(
4567 &mut self,
4568 decoder: &mut fidl::encoding::Decoder<
4569 '_,
4570 fidl::encoding::DefaultFuchsiaResourceDialect,
4571 >,
4572 offset: usize,
4573 mut depth: fidl::encoding::Depth,
4574 ) -> fidl::Result<()> {
4575 decoder.debug_check_bounds::<Self>(offset);
4576 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
4577 None => return Err(fidl::Error::NotNullable),
4578 Some(len) => len,
4579 };
4580 if len == 0 {
4582 return Ok(());
4583 };
4584 depth.increment()?;
4585 let envelope_size = 8;
4586 let bytes_len = len * envelope_size;
4587 let offset = decoder.out_of_line_offset(bytes_len)?;
4588 let mut _next_ordinal_to_read = 0;
4590 let mut next_offset = offset;
4591 let end_offset = offset + bytes_len;
4592 _next_ordinal_to_read += 1;
4593 if next_offset >= end_offset {
4594 return Ok(());
4595 }
4596
4597 while _next_ordinal_to_read < 1 {
4599 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4600 _next_ordinal_to_read += 1;
4601 next_offset += envelope_size;
4602 }
4603
4604 let next_out_of_line = decoder.next_out_of_line();
4605 let handles_before = decoder.remaining_handles();
4606 if let Some((inlined, num_bytes, num_handles)) =
4607 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4608 {
4609 let member_inline_size =
4610 <ChildSource as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4611 if inlined != (member_inline_size <= 4) {
4612 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4613 }
4614 let inner_offset;
4615 let mut inner_depth = depth.clone();
4616 if inlined {
4617 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4618 inner_offset = next_offset;
4619 } else {
4620 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4621 inner_depth.increment()?;
4622 }
4623 let val_ref = self.source.get_or_insert_with(|| {
4624 fidl::new_empty!(ChildSource, fidl::encoding::DefaultFuchsiaResourceDialect)
4625 });
4626 fidl::decode!(
4627 ChildSource,
4628 fidl::encoding::DefaultFuchsiaResourceDialect,
4629 val_ref,
4630 decoder,
4631 inner_offset,
4632 inner_depth
4633 )?;
4634 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4635 {
4636 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4637 }
4638 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4639 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4640 }
4641 }
4642
4643 next_offset += envelope_size;
4644 _next_ordinal_to_read += 1;
4645 if next_offset >= end_offset {
4646 return Ok(());
4647 }
4648
4649 while _next_ordinal_to_read < 2 {
4651 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4652 _next_ordinal_to_read += 1;
4653 next_offset += envelope_size;
4654 }
4655
4656 let next_out_of_line = decoder.next_out_of_line();
4657 let handles_before = decoder.remaining_handles();
4658 if let Some((inlined, num_bytes, num_handles)) =
4659 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4660 {
4661 let member_inline_size =
4662 <fidl::encoding::BoundedString<255> as fidl::encoding::TypeMarker>::inline_size(
4663 decoder.context,
4664 );
4665 if inlined != (member_inline_size <= 4) {
4666 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4667 }
4668 let inner_offset;
4669 let mut inner_depth = depth.clone();
4670 if inlined {
4671 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4672 inner_offset = next_offset;
4673 } else {
4674 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4675 inner_depth.increment()?;
4676 }
4677 let val_ref = self.name.get_or_insert_with(|| {
4678 fidl::new_empty!(
4679 fidl::encoding::BoundedString<255>,
4680 fidl::encoding::DefaultFuchsiaResourceDialect
4681 )
4682 });
4683 fidl::decode!(
4684 fidl::encoding::BoundedString<255>,
4685 fidl::encoding::DefaultFuchsiaResourceDialect,
4686 val_ref,
4687 decoder,
4688 inner_offset,
4689 inner_depth
4690 )?;
4691 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4692 {
4693 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4694 }
4695 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4696 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4697 }
4698 }
4699
4700 next_offset += envelope_size;
4701 _next_ordinal_to_read += 1;
4702 if next_offset >= end_offset {
4703 return Ok(());
4704 }
4705
4706 while _next_ordinal_to_read < 3 {
4708 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4709 _next_ordinal_to_read += 1;
4710 next_offset += envelope_size;
4711 }
4712
4713 let next_out_of_line = decoder.next_out_of_line();
4714 let handles_before = decoder.remaining_handles();
4715 if let Some((inlined, num_bytes, num_handles)) =
4716 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4717 {
4718 let member_inline_size = <fidl::encoding::UnboundedVector<
4719 fidl::encoding::BoundedString<255>,
4720 > as fidl::encoding::TypeMarker>::inline_size(
4721 decoder.context
4722 );
4723 if inlined != (member_inline_size <= 4) {
4724 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4725 }
4726 let inner_offset;
4727 let mut inner_depth = depth.clone();
4728 if inlined {
4729 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4730 inner_offset = next_offset;
4731 } else {
4732 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4733 inner_depth.increment()?;
4734 }
4735 let val_ref = self.exposes.get_or_insert_with(|| {
4736 fidl::new_empty!(
4737 fidl::encoding::UnboundedVector<fidl::encoding::BoundedString<255>>,
4738 fidl::encoding::DefaultFuchsiaResourceDialect
4739 )
4740 });
4741 fidl::decode!(
4742 fidl::encoding::UnboundedVector<fidl::encoding::BoundedString<255>>,
4743 fidl::encoding::DefaultFuchsiaResourceDialect,
4744 val_ref,
4745 decoder,
4746 inner_offset,
4747 inner_depth
4748 )?;
4749 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4750 {
4751 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4752 }
4753 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4754 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4755 }
4756 }
4757
4758 next_offset += envelope_size;
4759 _next_ordinal_to_read += 1;
4760 if next_offset >= end_offset {
4761 return Ok(());
4762 }
4763
4764 while _next_ordinal_to_read < 4 {
4766 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4767 _next_ordinal_to_read += 1;
4768 next_offset += envelope_size;
4769 }
4770
4771 let next_out_of_line = decoder.next_out_of_line();
4772 let handles_before = decoder.remaining_handles();
4773 if let Some((inlined, num_bytes, num_handles)) =
4774 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4775 {
4776 let member_inline_size =
4777 <ChildUses as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4778 if inlined != (member_inline_size <= 4) {
4779 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4780 }
4781 let inner_offset;
4782 let mut inner_depth = depth.clone();
4783 if inlined {
4784 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4785 inner_offset = next_offset;
4786 } else {
4787 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4788 inner_depth.increment()?;
4789 }
4790 let val_ref = self.uses.get_or_insert_with(|| {
4791 fidl::new_empty!(ChildUses, fidl::encoding::DefaultFuchsiaResourceDialect)
4792 });
4793 fidl::decode!(
4794 ChildUses,
4795 fidl::encoding::DefaultFuchsiaResourceDialect,
4796 val_ref,
4797 decoder,
4798 inner_offset,
4799 inner_depth
4800 )?;
4801 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4802 {
4803 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4804 }
4805 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4806 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4807 }
4808 }
4809
4810 next_offset += envelope_size;
4811 _next_ordinal_to_read += 1;
4812 if next_offset >= end_offset {
4813 return Ok(());
4814 }
4815
4816 while _next_ordinal_to_read < 5 {
4818 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4819 _next_ordinal_to_read += 1;
4820 next_offset += envelope_size;
4821 }
4822
4823 let next_out_of_line = decoder.next_out_of_line();
4824 let handles_before = decoder.remaining_handles();
4825 if let Some((inlined, num_bytes, num_handles)) =
4826 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4827 {
4828 let member_inline_size = <fidl::encoding::UnboundedVector<
4829 fidl::encoding::UnboundedString,
4830 > as fidl::encoding::TypeMarker>::inline_size(
4831 decoder.context
4832 );
4833 if inlined != (member_inline_size <= 4) {
4834 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4835 }
4836 let inner_offset;
4837 let mut inner_depth = depth.clone();
4838 if inlined {
4839 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4840 inner_offset = next_offset;
4841 } else {
4842 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4843 inner_depth.increment()?;
4844 }
4845 let val_ref = self.program_args.get_or_insert_with(|| {
4846 fidl::new_empty!(
4847 fidl::encoding::UnboundedVector<fidl::encoding::UnboundedString>,
4848 fidl::encoding::DefaultFuchsiaResourceDialect
4849 )
4850 });
4851 fidl::decode!(
4852 fidl::encoding::UnboundedVector<fidl::encoding::UnboundedString>,
4853 fidl::encoding::DefaultFuchsiaResourceDialect,
4854 val_ref,
4855 decoder,
4856 inner_offset,
4857 inner_depth
4858 )?;
4859 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4860 {
4861 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4862 }
4863 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4864 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4865 }
4866 }
4867
4868 next_offset += envelope_size;
4869 _next_ordinal_to_read += 1;
4870 if next_offset >= end_offset {
4871 return Ok(());
4872 }
4873
4874 while _next_ordinal_to_read < 6 {
4876 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4877 _next_ordinal_to_read += 1;
4878 next_offset += envelope_size;
4879 }
4880
4881 let next_out_of_line = decoder.next_out_of_line();
4882 let handles_before = decoder.remaining_handles();
4883 if let Some((inlined, num_bytes, num_handles)) =
4884 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4885 {
4886 let member_inline_size =
4887 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4888 if inlined != (member_inline_size <= 4) {
4889 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4890 }
4891 let inner_offset;
4892 let mut inner_depth = depth.clone();
4893 if inlined {
4894 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4895 inner_offset = next_offset;
4896 } else {
4897 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4898 inner_depth.increment()?;
4899 }
4900 let val_ref = self.eager.get_or_insert_with(|| {
4901 fidl::new_empty!(bool, fidl::encoding::DefaultFuchsiaResourceDialect)
4902 });
4903 fidl::decode!(
4904 bool,
4905 fidl::encoding::DefaultFuchsiaResourceDialect,
4906 val_ref,
4907 decoder,
4908 inner_offset,
4909 inner_depth
4910 )?;
4911 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4912 {
4913 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4914 }
4915 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4916 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4917 }
4918 }
4919
4920 next_offset += envelope_size;
4921 _next_ordinal_to_read += 1;
4922 if next_offset >= end_offset {
4923 return Ok(());
4924 }
4925
4926 while _next_ordinal_to_read < 7 {
4928 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4929 _next_ordinal_to_read += 1;
4930 next_offset += envelope_size;
4931 }
4932
4933 let next_out_of_line = decoder.next_out_of_line();
4934 let handles_before = decoder.remaining_handles();
4935 if let Some((inlined, num_bytes, num_handles)) =
4936 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4937 {
4938 let member_inline_size = <fidl::encoding::UnboundedVector<ChildConfigValue> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4939 if inlined != (member_inline_size <= 4) {
4940 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4941 }
4942 let inner_offset;
4943 let mut inner_depth = depth.clone();
4944 if inlined {
4945 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4946 inner_offset = next_offset;
4947 } else {
4948 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4949 inner_depth.increment()?;
4950 }
4951 let val_ref = self.config_values.get_or_insert_with(|| {
4952 fidl::new_empty!(
4953 fidl::encoding::UnboundedVector<ChildConfigValue>,
4954 fidl::encoding::DefaultFuchsiaResourceDialect
4955 )
4956 });
4957 fidl::decode!(
4958 fidl::encoding::UnboundedVector<ChildConfigValue>,
4959 fidl::encoding::DefaultFuchsiaResourceDialect,
4960 val_ref,
4961 decoder,
4962 inner_offset,
4963 inner_depth
4964 )?;
4965 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4966 {
4967 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4968 }
4969 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4970 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4971 }
4972 }
4973
4974 next_offset += envelope_size;
4975
4976 while next_offset < end_offset {
4978 _next_ordinal_to_read += 1;
4979 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4980 next_offset += envelope_size;
4981 }
4982
4983 Ok(())
4984 }
4985 }
4986
4987 impl InterfaceOptions {
4988 #[inline(always)]
4989 fn max_ordinal_present(&self) -> u64 {
4990 if let Some(_) = self.ipv6_multicast_neighbor_solicitations {
4991 return 9;
4992 }
4993 if let Some(_) = self.ipv4_multicast_neighbor_solicitations {
4994 return 8;
4995 }
4996 if let Some(_) = self.enable_ipv6_forwarding {
4997 return 7;
4998 }
4999 if let Some(_) = self.enable_ipv4_forwarding {
5000 return 6;
5001 }
5002 if let Some(_) = self.gateway {
5003 return 5;
5004 }
5005 if let Some(_) = self.static_ips {
5006 return 4;
5007 }
5008 if let Some(_) = self.without_autogenerated_addresses {
5009 return 3;
5010 }
5011 if let Some(_) = self.device {
5012 return 2;
5013 }
5014 if let Some(_) = self.name {
5015 return 1;
5016 }
5017 0
5018 }
5019 }
5020
5021 impl fidl::encoding::ResourceTypeMarker for InterfaceOptions {
5022 type Borrowed<'a> = &'a mut Self;
5023 fn take_or_borrow<'a>(
5024 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
5025 ) -> Self::Borrowed<'a> {
5026 value
5027 }
5028 }
5029
5030 unsafe impl fidl::encoding::TypeMarker for InterfaceOptions {
5031 type Owned = Self;
5032
5033 #[inline(always)]
5034 fn inline_align(_context: fidl::encoding::Context) -> usize {
5035 8
5036 }
5037
5038 #[inline(always)]
5039 fn inline_size(_context: fidl::encoding::Context) -> usize {
5040 16
5041 }
5042 }
5043
5044 unsafe impl
5045 fidl::encoding::Encode<InterfaceOptions, fidl::encoding::DefaultFuchsiaResourceDialect>
5046 for &mut InterfaceOptions
5047 {
5048 unsafe fn encode(
5049 self,
5050 encoder: &mut fidl::encoding::Encoder<
5051 '_,
5052 fidl::encoding::DefaultFuchsiaResourceDialect,
5053 >,
5054 offset: usize,
5055 mut depth: fidl::encoding::Depth,
5056 ) -> fidl::Result<()> {
5057 encoder.debug_check_bounds::<InterfaceOptions>(offset);
5058 let max_ordinal: u64 = self.max_ordinal_present();
5060 encoder.write_num(max_ordinal, offset);
5061 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
5062 if max_ordinal == 0 {
5064 return Ok(());
5065 }
5066 depth.increment()?;
5067 let envelope_size = 8;
5068 let bytes_len = max_ordinal as usize * envelope_size;
5069 #[allow(unused_variables)]
5070 let offset = encoder.out_of_line_offset(bytes_len);
5071 let mut _prev_end_offset: usize = 0;
5072 if 1 > max_ordinal {
5073 return Ok(());
5074 }
5075
5076 let cur_offset: usize = (1 - 1) * envelope_size;
5079
5080 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5082
5083 fidl::encoding::encode_in_envelope_optional::<
5088 fidl::encoding::UnboundedString,
5089 fidl::encoding::DefaultFuchsiaResourceDialect,
5090 >(
5091 self.name.as_ref().map(
5092 <fidl::encoding::UnboundedString as fidl::encoding::ValueTypeMarker>::borrow,
5093 ),
5094 encoder,
5095 offset + cur_offset,
5096 depth,
5097 )?;
5098
5099 _prev_end_offset = cur_offset + envelope_size;
5100 if 2 > max_ordinal {
5101 return Ok(());
5102 }
5103
5104 let cur_offset: usize = (2 - 1) * envelope_size;
5107
5108 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5110
5111 fidl::encoding::encode_in_envelope_optional::<
5116 fidl::encoding::Endpoint<
5117 fidl::endpoints::ClientEnd<fidl_fuchsia_hardware_network::PortMarker>,
5118 >,
5119 fidl::encoding::DefaultFuchsiaResourceDialect,
5120 >(
5121 self.device.as_mut().map(
5122 <fidl::encoding::Endpoint<
5123 fidl::endpoints::ClientEnd<fidl_fuchsia_hardware_network::PortMarker>,
5124 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow,
5125 ),
5126 encoder,
5127 offset + cur_offset,
5128 depth,
5129 )?;
5130
5131 _prev_end_offset = cur_offset + envelope_size;
5132 if 3 > max_ordinal {
5133 return Ok(());
5134 }
5135
5136 let cur_offset: usize = (3 - 1) * envelope_size;
5139
5140 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5142
5143 fidl::encoding::encode_in_envelope_optional::<
5148 bool,
5149 fidl::encoding::DefaultFuchsiaResourceDialect,
5150 >(
5151 self.without_autogenerated_addresses
5152 .as_ref()
5153 .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
5154 encoder,
5155 offset + cur_offset,
5156 depth,
5157 )?;
5158
5159 _prev_end_offset = cur_offset + envelope_size;
5160 if 4 > max_ordinal {
5161 return Ok(());
5162 }
5163
5164 let cur_offset: usize = (4 - 1) * envelope_size;
5167
5168 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5170
5171 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<fidl_fuchsia_net::Subnet>, fidl::encoding::DefaultFuchsiaResourceDialect>(
5176 self.static_ips.as_ref().map(<fidl::encoding::UnboundedVector<fidl_fuchsia_net::Subnet> as fidl::encoding::ValueTypeMarker>::borrow),
5177 encoder, offset + cur_offset, depth
5178 )?;
5179
5180 _prev_end_offset = cur_offset + envelope_size;
5181 if 5 > max_ordinal {
5182 return Ok(());
5183 }
5184
5185 let cur_offset: usize = (5 - 1) * envelope_size;
5188
5189 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5191
5192 fidl::encoding::encode_in_envelope_optional::<
5197 fidl_fuchsia_net::IpAddress,
5198 fidl::encoding::DefaultFuchsiaResourceDialect,
5199 >(
5200 self.gateway
5201 .as_ref()
5202 .map(<fidl_fuchsia_net::IpAddress as fidl::encoding::ValueTypeMarker>::borrow),
5203 encoder,
5204 offset + cur_offset,
5205 depth,
5206 )?;
5207
5208 _prev_end_offset = cur_offset + envelope_size;
5209 if 6 > max_ordinal {
5210 return Ok(());
5211 }
5212
5213 let cur_offset: usize = (6 - 1) * envelope_size;
5216
5217 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5219
5220 fidl::encoding::encode_in_envelope_optional::<
5225 bool,
5226 fidl::encoding::DefaultFuchsiaResourceDialect,
5227 >(
5228 self.enable_ipv4_forwarding
5229 .as_ref()
5230 .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
5231 encoder,
5232 offset + cur_offset,
5233 depth,
5234 )?;
5235
5236 _prev_end_offset = cur_offset + envelope_size;
5237 if 7 > max_ordinal {
5238 return Ok(());
5239 }
5240
5241 let cur_offset: usize = (7 - 1) * envelope_size;
5244
5245 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5247
5248 fidl::encoding::encode_in_envelope_optional::<
5253 bool,
5254 fidl::encoding::DefaultFuchsiaResourceDialect,
5255 >(
5256 self.enable_ipv6_forwarding
5257 .as_ref()
5258 .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
5259 encoder,
5260 offset + cur_offset,
5261 depth,
5262 )?;
5263
5264 _prev_end_offset = cur_offset + envelope_size;
5265 if 8 > max_ordinal {
5266 return Ok(());
5267 }
5268
5269 let cur_offset: usize = (8 - 1) * envelope_size;
5272
5273 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5275
5276 fidl::encoding::encode_in_envelope_optional::<
5281 u16,
5282 fidl::encoding::DefaultFuchsiaResourceDialect,
5283 >(
5284 self.ipv4_multicast_neighbor_solicitations
5285 .as_ref()
5286 .map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
5287 encoder,
5288 offset + cur_offset,
5289 depth,
5290 )?;
5291
5292 _prev_end_offset = cur_offset + envelope_size;
5293 if 9 > max_ordinal {
5294 return Ok(());
5295 }
5296
5297 let cur_offset: usize = (9 - 1) * envelope_size;
5300
5301 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5303
5304 fidl::encoding::encode_in_envelope_optional::<
5309 u16,
5310 fidl::encoding::DefaultFuchsiaResourceDialect,
5311 >(
5312 self.ipv6_multicast_neighbor_solicitations
5313 .as_ref()
5314 .map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
5315 encoder,
5316 offset + cur_offset,
5317 depth,
5318 )?;
5319
5320 _prev_end_offset = cur_offset + envelope_size;
5321
5322 Ok(())
5323 }
5324 }
5325
5326 impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
5327 for InterfaceOptions
5328 {
5329 #[inline(always)]
5330 fn new_empty() -> Self {
5331 Self::default()
5332 }
5333
5334 unsafe fn decode(
5335 &mut self,
5336 decoder: &mut fidl::encoding::Decoder<
5337 '_,
5338 fidl::encoding::DefaultFuchsiaResourceDialect,
5339 >,
5340 offset: usize,
5341 mut depth: fidl::encoding::Depth,
5342 ) -> fidl::Result<()> {
5343 decoder.debug_check_bounds::<Self>(offset);
5344 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
5345 None => return Err(fidl::Error::NotNullable),
5346 Some(len) => len,
5347 };
5348 if len == 0 {
5350 return Ok(());
5351 };
5352 depth.increment()?;
5353 let envelope_size = 8;
5354 let bytes_len = len * envelope_size;
5355 let offset = decoder.out_of_line_offset(bytes_len)?;
5356 let mut _next_ordinal_to_read = 0;
5358 let mut next_offset = offset;
5359 let end_offset = offset + bytes_len;
5360 _next_ordinal_to_read += 1;
5361 if next_offset >= end_offset {
5362 return Ok(());
5363 }
5364
5365 while _next_ordinal_to_read < 1 {
5367 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5368 _next_ordinal_to_read += 1;
5369 next_offset += envelope_size;
5370 }
5371
5372 let next_out_of_line = decoder.next_out_of_line();
5373 let handles_before = decoder.remaining_handles();
5374 if let Some((inlined, num_bytes, num_handles)) =
5375 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5376 {
5377 let member_inline_size =
5378 <fidl::encoding::UnboundedString as fidl::encoding::TypeMarker>::inline_size(
5379 decoder.context,
5380 );
5381 if inlined != (member_inline_size <= 4) {
5382 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5383 }
5384 let inner_offset;
5385 let mut inner_depth = depth.clone();
5386 if inlined {
5387 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5388 inner_offset = next_offset;
5389 } else {
5390 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5391 inner_depth.increment()?;
5392 }
5393 let val_ref = self.name.get_or_insert_with(|| {
5394 fidl::new_empty!(
5395 fidl::encoding::UnboundedString,
5396 fidl::encoding::DefaultFuchsiaResourceDialect
5397 )
5398 });
5399 fidl::decode!(
5400 fidl::encoding::UnboundedString,
5401 fidl::encoding::DefaultFuchsiaResourceDialect,
5402 val_ref,
5403 decoder,
5404 inner_offset,
5405 inner_depth
5406 )?;
5407 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5408 {
5409 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5410 }
5411 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5412 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5413 }
5414 }
5415
5416 next_offset += envelope_size;
5417 _next_ordinal_to_read += 1;
5418 if next_offset >= end_offset {
5419 return Ok(());
5420 }
5421
5422 while _next_ordinal_to_read < 2 {
5424 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5425 _next_ordinal_to_read += 1;
5426 next_offset += envelope_size;
5427 }
5428
5429 let next_out_of_line = decoder.next_out_of_line();
5430 let handles_before = decoder.remaining_handles();
5431 if let Some((inlined, num_bytes, num_handles)) =
5432 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5433 {
5434 let member_inline_size = <fidl::encoding::Endpoint<
5435 fidl::endpoints::ClientEnd<fidl_fuchsia_hardware_network::PortMarker>,
5436 > as fidl::encoding::TypeMarker>::inline_size(
5437 decoder.context
5438 );
5439 if inlined != (member_inline_size <= 4) {
5440 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5441 }
5442 let inner_offset;
5443 let mut inner_depth = depth.clone();
5444 if inlined {
5445 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5446 inner_offset = next_offset;
5447 } else {
5448 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5449 inner_depth.increment()?;
5450 }
5451 let val_ref = self.device.get_or_insert_with(|| {
5452 fidl::new_empty!(
5453 fidl::encoding::Endpoint<
5454 fidl::endpoints::ClientEnd<fidl_fuchsia_hardware_network::PortMarker>,
5455 >,
5456 fidl::encoding::DefaultFuchsiaResourceDialect
5457 )
5458 });
5459 fidl::decode!(
5460 fidl::encoding::Endpoint<
5461 fidl::endpoints::ClientEnd<fidl_fuchsia_hardware_network::PortMarker>,
5462 >,
5463 fidl::encoding::DefaultFuchsiaResourceDialect,
5464 val_ref,
5465 decoder,
5466 inner_offset,
5467 inner_depth
5468 )?;
5469 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5470 {
5471 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5472 }
5473 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5474 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5475 }
5476 }
5477
5478 next_offset += envelope_size;
5479 _next_ordinal_to_read += 1;
5480 if next_offset >= end_offset {
5481 return Ok(());
5482 }
5483
5484 while _next_ordinal_to_read < 3 {
5486 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5487 _next_ordinal_to_read += 1;
5488 next_offset += envelope_size;
5489 }
5490
5491 let next_out_of_line = decoder.next_out_of_line();
5492 let handles_before = decoder.remaining_handles();
5493 if let Some((inlined, num_bytes, num_handles)) =
5494 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5495 {
5496 let member_inline_size =
5497 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5498 if inlined != (member_inline_size <= 4) {
5499 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5500 }
5501 let inner_offset;
5502 let mut inner_depth = depth.clone();
5503 if inlined {
5504 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5505 inner_offset = next_offset;
5506 } else {
5507 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5508 inner_depth.increment()?;
5509 }
5510 let val_ref = self.without_autogenerated_addresses.get_or_insert_with(|| {
5511 fidl::new_empty!(bool, fidl::encoding::DefaultFuchsiaResourceDialect)
5512 });
5513 fidl::decode!(
5514 bool,
5515 fidl::encoding::DefaultFuchsiaResourceDialect,
5516 val_ref,
5517 decoder,
5518 inner_offset,
5519 inner_depth
5520 )?;
5521 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5522 {
5523 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5524 }
5525 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5526 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5527 }
5528 }
5529
5530 next_offset += envelope_size;
5531 _next_ordinal_to_read += 1;
5532 if next_offset >= end_offset {
5533 return Ok(());
5534 }
5535
5536 while _next_ordinal_to_read < 4 {
5538 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5539 _next_ordinal_to_read += 1;
5540 next_offset += envelope_size;
5541 }
5542
5543 let next_out_of_line = decoder.next_out_of_line();
5544 let handles_before = decoder.remaining_handles();
5545 if let Some((inlined, num_bytes, num_handles)) =
5546 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5547 {
5548 let member_inline_size = <fidl::encoding::UnboundedVector<fidl_fuchsia_net::Subnet> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5549 if inlined != (member_inline_size <= 4) {
5550 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5551 }
5552 let inner_offset;
5553 let mut inner_depth = depth.clone();
5554 if inlined {
5555 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5556 inner_offset = next_offset;
5557 } else {
5558 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5559 inner_depth.increment()?;
5560 }
5561 let val_ref = self.static_ips.get_or_insert_with(|| {
5562 fidl::new_empty!(
5563 fidl::encoding::UnboundedVector<fidl_fuchsia_net::Subnet>,
5564 fidl::encoding::DefaultFuchsiaResourceDialect
5565 )
5566 });
5567 fidl::decode!(
5568 fidl::encoding::UnboundedVector<fidl_fuchsia_net::Subnet>,
5569 fidl::encoding::DefaultFuchsiaResourceDialect,
5570 val_ref,
5571 decoder,
5572 inner_offset,
5573 inner_depth
5574 )?;
5575 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5576 {
5577 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5578 }
5579 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5580 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5581 }
5582 }
5583
5584 next_offset += envelope_size;
5585 _next_ordinal_to_read += 1;
5586 if next_offset >= end_offset {
5587 return Ok(());
5588 }
5589
5590 while _next_ordinal_to_read < 5 {
5592 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5593 _next_ordinal_to_read += 1;
5594 next_offset += envelope_size;
5595 }
5596
5597 let next_out_of_line = decoder.next_out_of_line();
5598 let handles_before = decoder.remaining_handles();
5599 if let Some((inlined, num_bytes, num_handles)) =
5600 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5601 {
5602 let member_inline_size =
5603 <fidl_fuchsia_net::IpAddress as fidl::encoding::TypeMarker>::inline_size(
5604 decoder.context,
5605 );
5606 if inlined != (member_inline_size <= 4) {
5607 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5608 }
5609 let inner_offset;
5610 let mut inner_depth = depth.clone();
5611 if inlined {
5612 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5613 inner_offset = next_offset;
5614 } else {
5615 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5616 inner_depth.increment()?;
5617 }
5618 let val_ref = self.gateway.get_or_insert_with(|| {
5619 fidl::new_empty!(
5620 fidl_fuchsia_net::IpAddress,
5621 fidl::encoding::DefaultFuchsiaResourceDialect
5622 )
5623 });
5624 fidl::decode!(
5625 fidl_fuchsia_net::IpAddress,
5626 fidl::encoding::DefaultFuchsiaResourceDialect,
5627 val_ref,
5628 decoder,
5629 inner_offset,
5630 inner_depth
5631 )?;
5632 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5633 {
5634 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5635 }
5636 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5637 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5638 }
5639 }
5640
5641 next_offset += envelope_size;
5642 _next_ordinal_to_read += 1;
5643 if next_offset >= end_offset {
5644 return Ok(());
5645 }
5646
5647 while _next_ordinal_to_read < 6 {
5649 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5650 _next_ordinal_to_read += 1;
5651 next_offset += envelope_size;
5652 }
5653
5654 let next_out_of_line = decoder.next_out_of_line();
5655 let handles_before = decoder.remaining_handles();
5656 if let Some((inlined, num_bytes, num_handles)) =
5657 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5658 {
5659 let member_inline_size =
5660 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5661 if inlined != (member_inline_size <= 4) {
5662 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5663 }
5664 let inner_offset;
5665 let mut inner_depth = depth.clone();
5666 if inlined {
5667 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5668 inner_offset = next_offset;
5669 } else {
5670 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5671 inner_depth.increment()?;
5672 }
5673 let val_ref = self.enable_ipv4_forwarding.get_or_insert_with(|| {
5674 fidl::new_empty!(bool, fidl::encoding::DefaultFuchsiaResourceDialect)
5675 });
5676 fidl::decode!(
5677 bool,
5678 fidl::encoding::DefaultFuchsiaResourceDialect,
5679 val_ref,
5680 decoder,
5681 inner_offset,
5682 inner_depth
5683 )?;
5684 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5685 {
5686 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5687 }
5688 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5689 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5690 }
5691 }
5692
5693 next_offset += envelope_size;
5694 _next_ordinal_to_read += 1;
5695 if next_offset >= end_offset {
5696 return Ok(());
5697 }
5698
5699 while _next_ordinal_to_read < 7 {
5701 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5702 _next_ordinal_to_read += 1;
5703 next_offset += envelope_size;
5704 }
5705
5706 let next_out_of_line = decoder.next_out_of_line();
5707 let handles_before = decoder.remaining_handles();
5708 if let Some((inlined, num_bytes, num_handles)) =
5709 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5710 {
5711 let member_inline_size =
5712 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5713 if inlined != (member_inline_size <= 4) {
5714 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5715 }
5716 let inner_offset;
5717 let mut inner_depth = depth.clone();
5718 if inlined {
5719 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5720 inner_offset = next_offset;
5721 } else {
5722 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5723 inner_depth.increment()?;
5724 }
5725 let val_ref = self.enable_ipv6_forwarding.get_or_insert_with(|| {
5726 fidl::new_empty!(bool, fidl::encoding::DefaultFuchsiaResourceDialect)
5727 });
5728 fidl::decode!(
5729 bool,
5730 fidl::encoding::DefaultFuchsiaResourceDialect,
5731 val_ref,
5732 decoder,
5733 inner_offset,
5734 inner_depth
5735 )?;
5736 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5737 {
5738 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5739 }
5740 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5741 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5742 }
5743 }
5744
5745 next_offset += envelope_size;
5746 _next_ordinal_to_read += 1;
5747 if next_offset >= end_offset {
5748 return Ok(());
5749 }
5750
5751 while _next_ordinal_to_read < 8 {
5753 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5754 _next_ordinal_to_read += 1;
5755 next_offset += envelope_size;
5756 }
5757
5758 let next_out_of_line = decoder.next_out_of_line();
5759 let handles_before = decoder.remaining_handles();
5760 if let Some((inlined, num_bytes, num_handles)) =
5761 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5762 {
5763 let member_inline_size =
5764 <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5765 if inlined != (member_inline_size <= 4) {
5766 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5767 }
5768 let inner_offset;
5769 let mut inner_depth = depth.clone();
5770 if inlined {
5771 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5772 inner_offset = next_offset;
5773 } else {
5774 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5775 inner_depth.increment()?;
5776 }
5777 let val_ref = self.ipv4_multicast_neighbor_solicitations.get_or_insert_with(|| {
5778 fidl::new_empty!(u16, fidl::encoding::DefaultFuchsiaResourceDialect)
5779 });
5780 fidl::decode!(
5781 u16,
5782 fidl::encoding::DefaultFuchsiaResourceDialect,
5783 val_ref,
5784 decoder,
5785 inner_offset,
5786 inner_depth
5787 )?;
5788 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5789 {
5790 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5791 }
5792 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5793 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5794 }
5795 }
5796
5797 next_offset += envelope_size;
5798 _next_ordinal_to_read += 1;
5799 if next_offset >= end_offset {
5800 return Ok(());
5801 }
5802
5803 while _next_ordinal_to_read < 9 {
5805 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5806 _next_ordinal_to_read += 1;
5807 next_offset += envelope_size;
5808 }
5809
5810 let next_out_of_line = decoder.next_out_of_line();
5811 let handles_before = decoder.remaining_handles();
5812 if let Some((inlined, num_bytes, num_handles)) =
5813 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5814 {
5815 let member_inline_size =
5816 <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5817 if inlined != (member_inline_size <= 4) {
5818 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5819 }
5820 let inner_offset;
5821 let mut inner_depth = depth.clone();
5822 if inlined {
5823 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5824 inner_offset = next_offset;
5825 } else {
5826 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5827 inner_depth.increment()?;
5828 }
5829 let val_ref = self.ipv6_multicast_neighbor_solicitations.get_or_insert_with(|| {
5830 fidl::new_empty!(u16, fidl::encoding::DefaultFuchsiaResourceDialect)
5831 });
5832 fidl::decode!(
5833 u16,
5834 fidl::encoding::DefaultFuchsiaResourceDialect,
5835 val_ref,
5836 decoder,
5837 inner_offset,
5838 inner_depth
5839 )?;
5840 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5841 {
5842 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5843 }
5844 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5845 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5846 }
5847 }
5848
5849 next_offset += envelope_size;
5850
5851 while next_offset < end_offset {
5853 _next_ordinal_to_read += 1;
5854 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5855 next_offset += envelope_size;
5856 }
5857
5858 Ok(())
5859 }
5860 }
5861
5862 impl RealmOptions {
5863 #[inline(always)]
5864 fn max_ordinal_present(&self) -> u64 {
5865 if let Some(_) = self.children {
5866 return 2;
5867 }
5868 if let Some(_) = self.name {
5869 return 1;
5870 }
5871 0
5872 }
5873 }
5874
5875 impl fidl::encoding::ResourceTypeMarker for RealmOptions {
5876 type Borrowed<'a> = &'a mut Self;
5877 fn take_or_borrow<'a>(
5878 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
5879 ) -> Self::Borrowed<'a> {
5880 value
5881 }
5882 }
5883
5884 unsafe impl fidl::encoding::TypeMarker for RealmOptions {
5885 type Owned = Self;
5886
5887 #[inline(always)]
5888 fn inline_align(_context: fidl::encoding::Context) -> usize {
5889 8
5890 }
5891
5892 #[inline(always)]
5893 fn inline_size(_context: fidl::encoding::Context) -> usize {
5894 16
5895 }
5896 }
5897
5898 unsafe impl fidl::encoding::Encode<RealmOptions, fidl::encoding::DefaultFuchsiaResourceDialect>
5899 for &mut RealmOptions
5900 {
5901 unsafe fn encode(
5902 self,
5903 encoder: &mut fidl::encoding::Encoder<
5904 '_,
5905 fidl::encoding::DefaultFuchsiaResourceDialect,
5906 >,
5907 offset: usize,
5908 mut depth: fidl::encoding::Depth,
5909 ) -> fidl::Result<()> {
5910 encoder.debug_check_bounds::<RealmOptions>(offset);
5911 let max_ordinal: u64 = self.max_ordinal_present();
5913 encoder.write_num(max_ordinal, offset);
5914 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
5915 if max_ordinal == 0 {
5917 return Ok(());
5918 }
5919 depth.increment()?;
5920 let envelope_size = 8;
5921 let bytes_len = max_ordinal as usize * envelope_size;
5922 #[allow(unused_variables)]
5923 let offset = encoder.out_of_line_offset(bytes_len);
5924 let mut _prev_end_offset: usize = 0;
5925 if 1 > max_ordinal {
5926 return Ok(());
5927 }
5928
5929 let cur_offset: usize = (1 - 1) * envelope_size;
5932
5933 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5935
5936 fidl::encoding::encode_in_envelope_optional::<
5941 fidl::encoding::UnboundedString,
5942 fidl::encoding::DefaultFuchsiaResourceDialect,
5943 >(
5944 self.name.as_ref().map(
5945 <fidl::encoding::UnboundedString as fidl::encoding::ValueTypeMarker>::borrow,
5946 ),
5947 encoder,
5948 offset + cur_offset,
5949 depth,
5950 )?;
5951
5952 _prev_end_offset = cur_offset + envelope_size;
5953 if 2 > max_ordinal {
5954 return Ok(());
5955 }
5956
5957 let cur_offset: usize = (2 - 1) * envelope_size;
5960
5961 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5963
5964 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<ChildDef>, fidl::encoding::DefaultFuchsiaResourceDialect>(
5969 self.children.as_mut().map(<fidl::encoding::UnboundedVector<ChildDef> as fidl::encoding::ResourceTypeMarker>::take_or_borrow),
5970 encoder, offset + cur_offset, depth
5971 )?;
5972
5973 _prev_end_offset = cur_offset + envelope_size;
5974
5975 Ok(())
5976 }
5977 }
5978
5979 impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect> for RealmOptions {
5980 #[inline(always)]
5981 fn new_empty() -> Self {
5982 Self::default()
5983 }
5984
5985 unsafe fn decode(
5986 &mut self,
5987 decoder: &mut fidl::encoding::Decoder<
5988 '_,
5989 fidl::encoding::DefaultFuchsiaResourceDialect,
5990 >,
5991 offset: usize,
5992 mut depth: fidl::encoding::Depth,
5993 ) -> fidl::Result<()> {
5994 decoder.debug_check_bounds::<Self>(offset);
5995 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
5996 None => return Err(fidl::Error::NotNullable),
5997 Some(len) => len,
5998 };
5999 if len == 0 {
6001 return Ok(());
6002 };
6003 depth.increment()?;
6004 let envelope_size = 8;
6005 let bytes_len = len * envelope_size;
6006 let offset = decoder.out_of_line_offset(bytes_len)?;
6007 let mut _next_ordinal_to_read = 0;
6009 let mut next_offset = offset;
6010 let end_offset = offset + bytes_len;
6011 _next_ordinal_to_read += 1;
6012 if next_offset >= end_offset {
6013 return Ok(());
6014 }
6015
6016 while _next_ordinal_to_read < 1 {
6018 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6019 _next_ordinal_to_read += 1;
6020 next_offset += envelope_size;
6021 }
6022
6023 let next_out_of_line = decoder.next_out_of_line();
6024 let handles_before = decoder.remaining_handles();
6025 if let Some((inlined, num_bytes, num_handles)) =
6026 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6027 {
6028 let member_inline_size =
6029 <fidl::encoding::UnboundedString as fidl::encoding::TypeMarker>::inline_size(
6030 decoder.context,
6031 );
6032 if inlined != (member_inline_size <= 4) {
6033 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6034 }
6035 let inner_offset;
6036 let mut inner_depth = depth.clone();
6037 if inlined {
6038 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6039 inner_offset = next_offset;
6040 } else {
6041 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6042 inner_depth.increment()?;
6043 }
6044 let val_ref = self.name.get_or_insert_with(|| {
6045 fidl::new_empty!(
6046 fidl::encoding::UnboundedString,
6047 fidl::encoding::DefaultFuchsiaResourceDialect
6048 )
6049 });
6050 fidl::decode!(
6051 fidl::encoding::UnboundedString,
6052 fidl::encoding::DefaultFuchsiaResourceDialect,
6053 val_ref,
6054 decoder,
6055 inner_offset,
6056 inner_depth
6057 )?;
6058 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6059 {
6060 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6061 }
6062 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6063 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6064 }
6065 }
6066
6067 next_offset += envelope_size;
6068 _next_ordinal_to_read += 1;
6069 if next_offset >= end_offset {
6070 return Ok(());
6071 }
6072
6073 while _next_ordinal_to_read < 2 {
6075 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6076 _next_ordinal_to_read += 1;
6077 next_offset += envelope_size;
6078 }
6079
6080 let next_out_of_line = decoder.next_out_of_line();
6081 let handles_before = decoder.remaining_handles();
6082 if let Some((inlined, num_bytes, num_handles)) =
6083 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6084 {
6085 let member_inline_size = <fidl::encoding::UnboundedVector<ChildDef> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6086 if inlined != (member_inline_size <= 4) {
6087 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6088 }
6089 let inner_offset;
6090 let mut inner_depth = depth.clone();
6091 if inlined {
6092 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6093 inner_offset = next_offset;
6094 } else {
6095 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6096 inner_depth.increment()?;
6097 }
6098 let val_ref = self.children.get_or_insert_with(|| {
6099 fidl::new_empty!(
6100 fidl::encoding::UnboundedVector<ChildDef>,
6101 fidl::encoding::DefaultFuchsiaResourceDialect
6102 )
6103 });
6104 fidl::decode!(
6105 fidl::encoding::UnboundedVector<ChildDef>,
6106 fidl::encoding::DefaultFuchsiaResourceDialect,
6107 val_ref,
6108 decoder,
6109 inner_offset,
6110 inner_depth
6111 )?;
6112 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6113 {
6114 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6115 }
6116 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6117 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6118 }
6119 }
6120
6121 next_offset += envelope_size;
6122
6123 while next_offset < end_offset {
6125 _next_ordinal_to_read += 1;
6126 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6127 next_offset += envelope_size;
6128 }
6129
6130 Ok(())
6131 }
6132 }
6133
6134 impl fidl::encoding::ResourceTypeMarker for ChildSource {
6135 type Borrowed<'a> = &'a mut Self;
6136 fn take_or_borrow<'a>(
6137 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
6138 ) -> Self::Borrowed<'a> {
6139 value
6140 }
6141 }
6142
6143 unsafe impl fidl::encoding::TypeMarker for ChildSource {
6144 type Owned = Self;
6145
6146 #[inline(always)]
6147 fn inline_align(_context: fidl::encoding::Context) -> usize {
6148 8
6149 }
6150
6151 #[inline(always)]
6152 fn inline_size(_context: fidl::encoding::Context) -> usize {
6153 16
6154 }
6155 }
6156
6157 unsafe impl fidl::encoding::Encode<ChildSource, fidl::encoding::DefaultFuchsiaResourceDialect>
6158 for &mut ChildSource
6159 {
6160 #[inline]
6161 unsafe fn encode(
6162 self,
6163 encoder: &mut fidl::encoding::Encoder<
6164 '_,
6165 fidl::encoding::DefaultFuchsiaResourceDialect,
6166 >,
6167 offset: usize,
6168 _depth: fidl::encoding::Depth,
6169 ) -> fidl::Result<()> {
6170 encoder.debug_check_bounds::<ChildSource>(offset);
6171 encoder.write_num::<u64>(self.ordinal(), offset);
6172 match self {
6173 ChildSource::Component(ref val) => {
6174 fidl::encoding::encode_in_envelope::<fidl::encoding::BoundedString<4096>, fidl::encoding::DefaultFuchsiaResourceDialect>(
6175 <fidl::encoding::BoundedString<4096> as fidl::encoding::ValueTypeMarker>::borrow(val),
6176 encoder, offset + 8, _depth
6177 )
6178 }
6179 ChildSource::Mock(ref mut val) => {
6180 fidl::encoding::encode_in_envelope::<fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<fidl_fuchsia_io::DirectoryMarker>>, fidl::encoding::DefaultFuchsiaResourceDialect>(
6181 <fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<fidl_fuchsia_io::DirectoryMarker>> as fidl::encoding::ResourceTypeMarker>::take_or_borrow(val),
6182 encoder, offset + 8, _depth
6183 )
6184 }
6185 }
6186 }
6187 }
6188
6189 impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect> for ChildSource {
6190 #[inline(always)]
6191 fn new_empty() -> Self {
6192 Self::Component(fidl::new_empty!(
6193 fidl::encoding::BoundedString<4096>,
6194 fidl::encoding::DefaultFuchsiaResourceDialect
6195 ))
6196 }
6197
6198 #[inline]
6199 unsafe fn decode(
6200 &mut self,
6201 decoder: &mut fidl::encoding::Decoder<
6202 '_,
6203 fidl::encoding::DefaultFuchsiaResourceDialect,
6204 >,
6205 offset: usize,
6206 mut depth: fidl::encoding::Depth,
6207 ) -> fidl::Result<()> {
6208 decoder.debug_check_bounds::<Self>(offset);
6209 #[allow(unused_variables)]
6210 let next_out_of_line = decoder.next_out_of_line();
6211 let handles_before = decoder.remaining_handles();
6212 let (ordinal, inlined, num_bytes, num_handles) =
6213 fidl::encoding::decode_union_inline_portion(decoder, offset)?;
6214
6215 let member_inline_size = match ordinal {
6216 1 => {
6217 <fidl::encoding::BoundedString<4096> as fidl::encoding::TypeMarker>::inline_size(
6218 decoder.context,
6219 )
6220 }
6221 2 => <fidl::encoding::Endpoint<
6222 fidl::endpoints::ClientEnd<fidl_fuchsia_io::DirectoryMarker>,
6223 > as fidl::encoding::TypeMarker>::inline_size(decoder.context),
6224 _ => return Err(fidl::Error::UnknownUnionTag),
6225 };
6226
6227 if inlined != (member_inline_size <= 4) {
6228 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6229 }
6230 let _inner_offset;
6231 if inlined {
6232 decoder.check_inline_envelope_padding(offset + 8, member_inline_size)?;
6233 _inner_offset = offset + 8;
6234 } else {
6235 depth.increment()?;
6236 _inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6237 }
6238 match ordinal {
6239 1 => {
6240 #[allow(irrefutable_let_patterns)]
6241 if let ChildSource::Component(_) = self {
6242 } else {
6244 *self = ChildSource::Component(fidl::new_empty!(
6246 fidl::encoding::BoundedString<4096>,
6247 fidl::encoding::DefaultFuchsiaResourceDialect
6248 ));
6249 }
6250 #[allow(irrefutable_let_patterns)]
6251 if let ChildSource::Component(ref mut val) = self {
6252 fidl::decode!(
6253 fidl::encoding::BoundedString<4096>,
6254 fidl::encoding::DefaultFuchsiaResourceDialect,
6255 val,
6256 decoder,
6257 _inner_offset,
6258 depth
6259 )?;
6260 } else {
6261 unreachable!()
6262 }
6263 }
6264 2 => {
6265 #[allow(irrefutable_let_patterns)]
6266 if let ChildSource::Mock(_) = self {
6267 } else {
6269 *self = ChildSource::Mock(fidl::new_empty!(
6271 fidl::encoding::Endpoint<
6272 fidl::endpoints::ClientEnd<fidl_fuchsia_io::DirectoryMarker>,
6273 >,
6274 fidl::encoding::DefaultFuchsiaResourceDialect
6275 ));
6276 }
6277 #[allow(irrefutable_let_patterns)]
6278 if let ChildSource::Mock(ref mut val) = self {
6279 fidl::decode!(
6280 fidl::encoding::Endpoint<
6281 fidl::endpoints::ClientEnd<fidl_fuchsia_io::DirectoryMarker>,
6282 >,
6283 fidl::encoding::DefaultFuchsiaResourceDialect,
6284 val,
6285 decoder,
6286 _inner_offset,
6287 depth
6288 )?;
6289 } else {
6290 unreachable!()
6291 }
6292 }
6293 ordinal => panic!("unexpected ordinal {:?}", ordinal),
6294 }
6295 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize) {
6296 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6297 }
6298 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6299 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6300 }
6301 Ok(())
6302 }
6303 }
6304}