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