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