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_component_runner__common::*;
11use futures::future::{self, MaybeDone, TryFutureExt};
12use zx_status;
13
14#[derive(Debug, PartialEq)]
15pub struct ComponentControllerOnPublishDiagnosticsRequest {
16 pub payload: ComponentDiagnostics,
17}
18
19impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect>
20 for ComponentControllerOnPublishDiagnosticsRequest
21{
22}
23
24#[derive(Debug, PartialEq)]
25pub struct ComponentRunnerStartRequest {
26 pub start_info: ComponentStartInfo,
27 pub controller: fidl::endpoints::ServerEnd<ComponentControllerMarker>,
28}
29
30impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect>
31 for ComponentRunnerStartRequest
32{
33}
34
35#[derive(Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
36pub struct TaskProviderGetJobResponse {
37 pub job: fidl::Job,
38}
39
40impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect>
41 for TaskProviderGetJobResponse
42{
43}
44
45#[derive(Debug, Default, PartialEq)]
46pub struct ComponentControllerOnEscrowRequest {
47 pub outgoing_dir: Option<fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>>,
51 pub escrowed_dictionary: Option<fidl_fuchsia_component_sandbox::DictionaryRef>,
64 #[doc(hidden)]
65 pub __source_breaking: fidl::marker::SourceBreaking,
66}
67
68impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect>
69 for ComponentControllerOnEscrowRequest
70{
71}
72
73#[derive(Debug, Default, PartialEq)]
74pub struct ComponentDiagnostics {
75 pub tasks: Option<ComponentTasks>,
76 #[doc(hidden)]
77 pub __source_breaking: fidl::marker::SourceBreaking,
78}
79
80impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect> for ComponentDiagnostics {}
81
82#[derive(Debug, Default, PartialEq)]
86pub struct ComponentNamespaceEntry {
87 pub path: Option<String>,
90 pub directory: Option<fidl::endpoints::ClientEnd<fidl_fuchsia_io::DirectoryMarker>>,
92 #[doc(hidden)]
93 pub __source_breaking: fidl::marker::SourceBreaking,
94}
95
96impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect> for ComponentNamespaceEntry {}
97
98#[derive(Debug, Default, PartialEq)]
100pub struct ComponentStartInfo {
101 pub resolved_url: Option<String>,
106 pub program: Option<fidl_fuchsia_data::Dictionary>,
109 pub ns: Option<Vec<ComponentNamespaceEntry>>,
130 pub outgoing_dir: Option<fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>>,
132 pub runtime_dir: Option<fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>>,
136 pub numbered_handles: Option<Vec<fidl_fuchsia_process::HandleInfo>>,
141 pub encoded_config: Option<fidl_fuchsia_mem::Data>,
152 pub break_on_start: Option<fidl::EventPair>,
161 pub component_instance: Option<fidl::Event>,
171 pub escrowed_dictionary: Option<fidl_fuchsia_component_sandbox::DictionaryRef>,
174 #[doc(hidden)]
175 pub __source_breaking: fidl::marker::SourceBreaking,
176}
177
178impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect> for ComponentStartInfo {}
179
180#[derive(Debug, Default, PartialEq)]
181pub struct ComponentStopInfo {
182 pub termination_status: Option<i32>,
187 pub exit_code: Option<i64>,
193 #[doc(hidden)]
194 pub __source_breaking: fidl::marker::SourceBreaking,
195}
196
197impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect> for ComponentStopInfo {}
198
199#[derive(Debug, Default, PartialEq)]
200pub struct ComponentTasks {
201 pub component_task: Option<Task>,
202 pub parent_task: Option<Task>,
203 #[doc(hidden)]
204 pub __source_breaking: fidl::marker::SourceBreaking,
205}
206
207impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect> for ComponentTasks {}
208
209#[derive(Debug)]
210pub enum Task {
211 Job(fidl::Job),
212 Process(fidl::Process),
213 Thread(fidl::Thread),
214 #[doc(hidden)]
215 __SourceBreaking {
216 unknown_ordinal: u64,
217 },
218}
219
220#[macro_export]
222macro_rules! TaskUnknown {
223 () => {
224 _
225 };
226}
227
228impl PartialEq for Task {
230 fn eq(&self, other: &Self) -> bool {
231 match (self, other) {
232 (Self::Job(x), Self::Job(y)) => *x == *y,
233 (Self::Process(x), Self::Process(y)) => *x == *y,
234 (Self::Thread(x), Self::Thread(y)) => *x == *y,
235 _ => false,
236 }
237 }
238}
239
240impl Task {
241 #[inline]
242 pub fn ordinal(&self) -> u64 {
243 match *self {
244 Self::Job(_) => 1,
245 Self::Process(_) => 2,
246 Self::Thread(_) => 3,
247 Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
248 }
249 }
250
251 #[inline]
252 pub fn unknown_variant_for_testing() -> Self {
253 Self::__SourceBreaking { unknown_ordinal: 0 }
254 }
255
256 #[inline]
257 pub fn is_unknown(&self) -> bool {
258 match self {
259 Self::__SourceBreaking { .. } => true,
260 _ => false,
261 }
262 }
263}
264
265impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect> for Task {}
266
267#[derive(Debug, Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash)]
268pub struct ComponentControllerMarker;
269
270impl fidl::endpoints::ProtocolMarker for ComponentControllerMarker {
271 type Proxy = ComponentControllerProxy;
272 type RequestStream = ComponentControllerRequestStream;
273 #[cfg(target_os = "fuchsia")]
274 type SynchronousProxy = ComponentControllerSynchronousProxy;
275
276 const DEBUG_NAME: &'static str = "(anonymous) ComponentController";
277}
278
279pub trait ComponentControllerProxyInterface: Send + Sync {
280 fn r#stop(&self) -> Result<(), fidl::Error>;
281 fn r#kill(&self) -> Result<(), fidl::Error>;
282}
283#[derive(Debug)]
284#[cfg(target_os = "fuchsia")]
285pub struct ComponentControllerSynchronousProxy {
286 client: fidl::client::sync::Client,
287}
288
289#[cfg(target_os = "fuchsia")]
290impl fidl::endpoints::SynchronousProxy for ComponentControllerSynchronousProxy {
291 type Proxy = ComponentControllerProxy;
292 type Protocol = ComponentControllerMarker;
293
294 fn from_channel(inner: fidl::Channel) -> Self {
295 Self::new(inner)
296 }
297
298 fn into_channel(self) -> fidl::Channel {
299 self.client.into_channel()
300 }
301
302 fn as_channel(&self) -> &fidl::Channel {
303 self.client.as_channel()
304 }
305}
306
307#[cfg(target_os = "fuchsia")]
308impl ComponentControllerSynchronousProxy {
309 pub fn new(channel: fidl::Channel) -> Self {
310 let protocol_name =
311 <ComponentControllerMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
312 Self { client: fidl::client::sync::Client::new(channel, protocol_name) }
313 }
314
315 pub fn into_channel(self) -> fidl::Channel {
316 self.client.into_channel()
317 }
318
319 pub fn wait_for_event(
322 &self,
323 deadline: zx::MonotonicInstant,
324 ) -> Result<ComponentControllerEvent, fidl::Error> {
325 ComponentControllerEvent::decode(self.client.wait_for_event(deadline)?)
326 }
327
328 pub fn r#stop(&self) -> Result<(), fidl::Error> {
335 self.client.send::<fidl::encoding::EmptyPayload>(
336 (),
337 0x42ad097fa07c1b62,
338 fidl::encoding::DynamicFlags::empty(),
339 )
340 }
341
342 pub fn r#kill(&self) -> Result<(), fidl::Error> {
352 self.client.send::<fidl::encoding::EmptyPayload>(
353 (),
354 0x3ea62e200a45aeb4,
355 fidl::encoding::DynamicFlags::empty(),
356 )
357 }
358}
359
360#[cfg(target_os = "fuchsia")]
361impl From<ComponentControllerSynchronousProxy> for zx::Handle {
362 fn from(value: ComponentControllerSynchronousProxy) -> Self {
363 value.into_channel().into()
364 }
365}
366
367#[cfg(target_os = "fuchsia")]
368impl From<fidl::Channel> for ComponentControllerSynchronousProxy {
369 fn from(value: fidl::Channel) -> Self {
370 Self::new(value)
371 }
372}
373
374#[cfg(target_os = "fuchsia")]
375impl fidl::endpoints::FromClient for ComponentControllerSynchronousProxy {
376 type Protocol = ComponentControllerMarker;
377
378 fn from_client(value: fidl::endpoints::ClientEnd<ComponentControllerMarker>) -> Self {
379 Self::new(value.into_channel())
380 }
381}
382
383#[derive(Debug, Clone)]
384pub struct ComponentControllerProxy {
385 client: fidl::client::Client<fidl::encoding::DefaultFuchsiaResourceDialect>,
386}
387
388impl fidl::endpoints::Proxy for ComponentControllerProxy {
389 type Protocol = ComponentControllerMarker;
390
391 fn from_channel(inner: ::fidl::AsyncChannel) -> Self {
392 Self::new(inner)
393 }
394
395 fn into_channel(self) -> Result<::fidl::AsyncChannel, Self> {
396 self.client.into_channel().map_err(|client| Self { client })
397 }
398
399 fn as_channel(&self) -> &::fidl::AsyncChannel {
400 self.client.as_channel()
401 }
402}
403
404impl ComponentControllerProxy {
405 pub fn new(channel: ::fidl::AsyncChannel) -> Self {
407 let protocol_name =
408 <ComponentControllerMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
409 Self { client: fidl::client::Client::new(channel, protocol_name) }
410 }
411
412 pub fn take_event_stream(&self) -> ComponentControllerEventStream {
418 ComponentControllerEventStream { event_receiver: self.client.take_event_receiver() }
419 }
420
421 pub fn r#stop(&self) -> Result<(), fidl::Error> {
428 ComponentControllerProxyInterface::r#stop(self)
429 }
430
431 pub fn r#kill(&self) -> Result<(), fidl::Error> {
441 ComponentControllerProxyInterface::r#kill(self)
442 }
443}
444
445impl ComponentControllerProxyInterface for ComponentControllerProxy {
446 fn r#stop(&self) -> Result<(), fidl::Error> {
447 self.client.send::<fidl::encoding::EmptyPayload>(
448 (),
449 0x42ad097fa07c1b62,
450 fidl::encoding::DynamicFlags::empty(),
451 )
452 }
453
454 fn r#kill(&self) -> Result<(), fidl::Error> {
455 self.client.send::<fidl::encoding::EmptyPayload>(
456 (),
457 0x3ea62e200a45aeb4,
458 fidl::encoding::DynamicFlags::empty(),
459 )
460 }
461}
462
463pub struct ComponentControllerEventStream {
464 event_receiver: fidl::client::EventReceiver<fidl::encoding::DefaultFuchsiaResourceDialect>,
465}
466
467impl std::marker::Unpin for ComponentControllerEventStream {}
468
469impl futures::stream::FusedStream for ComponentControllerEventStream {
470 fn is_terminated(&self) -> bool {
471 self.event_receiver.is_terminated()
472 }
473}
474
475impl futures::Stream for ComponentControllerEventStream {
476 type Item = Result<ComponentControllerEvent, fidl::Error>;
477
478 fn poll_next(
479 mut self: std::pin::Pin<&mut Self>,
480 cx: &mut std::task::Context<'_>,
481 ) -> std::task::Poll<Option<Self::Item>> {
482 match futures::ready!(futures::stream::StreamExt::poll_next_unpin(
483 &mut self.event_receiver,
484 cx
485 )?) {
486 Some(buf) => std::task::Poll::Ready(Some(ComponentControllerEvent::decode(buf))),
487 None => std::task::Poll::Ready(None),
488 }
489 }
490}
491
492#[derive(Debug)]
493pub enum ComponentControllerEvent {
494 OnPublishDiagnostics {
495 payload: ComponentDiagnostics,
496 },
497 OnEscrow {
498 payload: ComponentControllerOnEscrowRequest,
499 },
500 OnStop {
501 payload: ComponentStopInfo,
502 },
503 #[non_exhaustive]
504 _UnknownEvent {
505 ordinal: u64,
507 },
508}
509
510impl ComponentControllerEvent {
511 #[allow(irrefutable_let_patterns)]
512 pub fn into_on_publish_diagnostics(self) -> Option<ComponentDiagnostics> {
513 if let ComponentControllerEvent::OnPublishDiagnostics { payload } = self {
514 Some((payload))
515 } else {
516 None
517 }
518 }
519 #[allow(irrefutable_let_patterns)]
520 pub fn into_on_escrow(self) -> Option<ComponentControllerOnEscrowRequest> {
521 if let ComponentControllerEvent::OnEscrow { payload } = self {
522 Some((payload))
523 } else {
524 None
525 }
526 }
527 #[allow(irrefutable_let_patterns)]
528 pub fn into_on_stop(self) -> Option<ComponentStopInfo> {
529 if let ComponentControllerEvent::OnStop { payload } = self {
530 Some((payload))
531 } else {
532 None
533 }
534 }
535
536 fn decode(
538 mut buf: <fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc,
539 ) -> Result<ComponentControllerEvent, fidl::Error> {
540 let (bytes, _handles) = buf.split_mut();
541 let (tx_header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
542 debug_assert_eq!(tx_header.tx_id, 0);
543 match tx_header.ordinal {
544 0x1f16d8c3c49c6947 => {
545 let mut out = fidl::new_empty!(
546 ComponentControllerOnPublishDiagnosticsRequest,
547 fidl::encoding::DefaultFuchsiaResourceDialect
548 );
549 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<ComponentControllerOnPublishDiagnosticsRequest>(&tx_header, _body_bytes, _handles, &mut out)?;
550 Ok((ComponentControllerEvent::OnPublishDiagnostics { payload: out.payload }))
551 }
552 0xa231349355343fc => {
553 let mut out = fidl::new_empty!(
554 ComponentControllerOnEscrowRequest,
555 fidl::encoding::DefaultFuchsiaResourceDialect
556 );
557 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<ComponentControllerOnEscrowRequest>(&tx_header, _body_bytes, _handles, &mut out)?;
558 Ok((ComponentControllerEvent::OnEscrow { payload: out }))
559 }
560 0x3bfd24b031878ab2 => {
561 let mut out = fidl::new_empty!(
562 ComponentStopInfo,
563 fidl::encoding::DefaultFuchsiaResourceDialect
564 );
565 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<ComponentStopInfo>(&tx_header, _body_bytes, _handles, &mut out)?;
566 Ok((ComponentControllerEvent::OnStop { payload: out }))
567 }
568 _ if tx_header.dynamic_flags().contains(fidl::encoding::DynamicFlags::FLEXIBLE) => {
569 Ok(ComponentControllerEvent::_UnknownEvent { ordinal: tx_header.ordinal })
570 }
571 _ => Err(fidl::Error::UnknownOrdinal {
572 ordinal: tx_header.ordinal,
573 protocol_name:
574 <ComponentControllerMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
575 }),
576 }
577 }
578}
579
580pub struct ComponentControllerRequestStream {
582 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
583 is_terminated: bool,
584}
585
586impl std::marker::Unpin for ComponentControllerRequestStream {}
587
588impl futures::stream::FusedStream for ComponentControllerRequestStream {
589 fn is_terminated(&self) -> bool {
590 self.is_terminated
591 }
592}
593
594impl fidl::endpoints::RequestStream for ComponentControllerRequestStream {
595 type Protocol = ComponentControllerMarker;
596 type ControlHandle = ComponentControllerControlHandle;
597
598 fn from_channel(channel: ::fidl::AsyncChannel) -> Self {
599 Self { inner: std::sync::Arc::new(fidl::ServeInner::new(channel)), is_terminated: false }
600 }
601
602 fn control_handle(&self) -> Self::ControlHandle {
603 ComponentControllerControlHandle { inner: self.inner.clone() }
604 }
605
606 fn into_inner(
607 self,
608 ) -> (::std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>, bool)
609 {
610 (self.inner, self.is_terminated)
611 }
612
613 fn from_inner(
614 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
615 is_terminated: bool,
616 ) -> Self {
617 Self { inner, is_terminated }
618 }
619}
620
621impl futures::Stream for ComponentControllerRequestStream {
622 type Item = Result<ComponentControllerRequest, fidl::Error>;
623
624 fn poll_next(
625 mut self: std::pin::Pin<&mut Self>,
626 cx: &mut std::task::Context<'_>,
627 ) -> std::task::Poll<Option<Self::Item>> {
628 let this = &mut *self;
629 if this.inner.check_shutdown(cx) {
630 this.is_terminated = true;
631 return std::task::Poll::Ready(None);
632 }
633 if this.is_terminated {
634 panic!("polled ComponentControllerRequestStream after completion");
635 }
636 fidl::encoding::with_tls_decode_buf::<_, fidl::encoding::DefaultFuchsiaResourceDialect>(
637 |bytes, handles| {
638 match this.inner.channel().read_etc(cx, bytes, handles) {
639 std::task::Poll::Ready(Ok(())) => {}
640 std::task::Poll::Pending => return std::task::Poll::Pending,
641 std::task::Poll::Ready(Err(zx_status::Status::PEER_CLOSED)) => {
642 this.is_terminated = true;
643 return std::task::Poll::Ready(None);
644 }
645 std::task::Poll::Ready(Err(e)) => {
646 return std::task::Poll::Ready(Some(Err(fidl::Error::ServerRequestRead(
647 e.into(),
648 ))))
649 }
650 }
651
652 let (header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
654
655 std::task::Poll::Ready(Some(match header.ordinal {
656 0x42ad097fa07c1b62 => {
657 header.validate_request_tx_id(fidl::MethodType::OneWay)?;
658 let mut req = fidl::new_empty!(fidl::encoding::EmptyPayload, fidl::encoding::DefaultFuchsiaResourceDialect);
659 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
660 let control_handle = ComponentControllerControlHandle {
661 inner: this.inner.clone(),
662 };
663 Ok(ComponentControllerRequest::Stop {
664 control_handle,
665 })
666 }
667 0x3ea62e200a45aeb4 => {
668 header.validate_request_tx_id(fidl::MethodType::OneWay)?;
669 let mut req = fidl::new_empty!(fidl::encoding::EmptyPayload, fidl::encoding::DefaultFuchsiaResourceDialect);
670 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
671 let control_handle = ComponentControllerControlHandle {
672 inner: this.inner.clone(),
673 };
674 Ok(ComponentControllerRequest::Kill {
675 control_handle,
676 })
677 }
678 _ if header.tx_id == 0 && header.dynamic_flags().contains(fidl::encoding::DynamicFlags::FLEXIBLE) => {
679 Ok(ComponentControllerRequest::_UnknownMethod {
680 ordinal: header.ordinal,
681 control_handle: ComponentControllerControlHandle { inner: this.inner.clone() },
682 method_type: fidl::MethodType::OneWay,
683 })
684 }
685 _ if header.dynamic_flags().contains(fidl::encoding::DynamicFlags::FLEXIBLE) => {
686 this.inner.send_framework_err(
687 fidl::encoding::FrameworkErr::UnknownMethod,
688 header.tx_id,
689 header.ordinal,
690 header.dynamic_flags(),
691 (bytes, handles),
692 )?;
693 Ok(ComponentControllerRequest::_UnknownMethod {
694 ordinal: header.ordinal,
695 control_handle: ComponentControllerControlHandle { inner: this.inner.clone() },
696 method_type: fidl::MethodType::TwoWay,
697 })
698 }
699 _ => Err(fidl::Error::UnknownOrdinal {
700 ordinal: header.ordinal,
701 protocol_name: <ComponentControllerMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
702 }),
703 }))
704 },
705 )
706 }
707}
708
709#[derive(Debug)]
788pub enum ComponentControllerRequest {
789 Stop { control_handle: ComponentControllerControlHandle },
796 Kill { control_handle: ComponentControllerControlHandle },
806 #[non_exhaustive]
808 _UnknownMethod {
809 ordinal: u64,
811 control_handle: ComponentControllerControlHandle,
812 method_type: fidl::MethodType,
813 },
814}
815
816impl ComponentControllerRequest {
817 #[allow(irrefutable_let_patterns)]
818 pub fn into_stop(self) -> Option<(ComponentControllerControlHandle)> {
819 if let ComponentControllerRequest::Stop { control_handle } = self {
820 Some((control_handle))
821 } else {
822 None
823 }
824 }
825
826 #[allow(irrefutable_let_patterns)]
827 pub fn into_kill(self) -> Option<(ComponentControllerControlHandle)> {
828 if let ComponentControllerRequest::Kill { control_handle } = self {
829 Some((control_handle))
830 } else {
831 None
832 }
833 }
834
835 pub fn method_name(&self) -> &'static str {
837 match *self {
838 ComponentControllerRequest::Stop { .. } => "stop",
839 ComponentControllerRequest::Kill { .. } => "kill",
840 ComponentControllerRequest::_UnknownMethod {
841 method_type: fidl::MethodType::OneWay,
842 ..
843 } => "unknown one-way method",
844 ComponentControllerRequest::_UnknownMethod {
845 method_type: fidl::MethodType::TwoWay,
846 ..
847 } => "unknown two-way method",
848 }
849 }
850}
851
852#[derive(Debug, Clone)]
853pub struct ComponentControllerControlHandle {
854 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
855}
856
857impl fidl::endpoints::ControlHandle for ComponentControllerControlHandle {
858 fn shutdown(&self) {
859 self.inner.shutdown()
860 }
861 fn shutdown_with_epitaph(&self, status: zx_status::Status) {
862 self.inner.shutdown_with_epitaph(status)
863 }
864
865 fn is_closed(&self) -> bool {
866 self.inner.channel().is_closed()
867 }
868 fn on_closed(&self) -> fidl::OnSignalsRef<'_> {
869 self.inner.channel().on_closed()
870 }
871
872 #[cfg(target_os = "fuchsia")]
873 fn signal_peer(
874 &self,
875 clear_mask: zx::Signals,
876 set_mask: zx::Signals,
877 ) -> Result<(), zx_status::Status> {
878 use fidl::Peered;
879 self.inner.channel().signal_peer(clear_mask, set_mask)
880 }
881}
882
883impl ComponentControllerControlHandle {
884 pub fn send_on_publish_diagnostics(
885 &self,
886 mut payload: ComponentDiagnostics,
887 ) -> Result<(), fidl::Error> {
888 self.inner.send::<ComponentControllerOnPublishDiagnosticsRequest>(
889 (&mut payload,),
890 0,
891 0x1f16d8c3c49c6947,
892 fidl::encoding::DynamicFlags::empty(),
893 )
894 }
895
896 pub fn send_on_escrow(
897 &self,
898 mut payload: ComponentControllerOnEscrowRequest,
899 ) -> Result<(), fidl::Error> {
900 self.inner.send::<ComponentControllerOnEscrowRequest>(
901 &mut payload,
902 0,
903 0xa231349355343fc,
904 fidl::encoding::DynamicFlags::FLEXIBLE,
905 )
906 }
907
908 pub fn send_on_stop(&self, mut payload: ComponentStopInfo) -> Result<(), fidl::Error> {
909 self.inner.send::<ComponentStopInfo>(
910 &mut payload,
911 0,
912 0x3bfd24b031878ab2,
913 fidl::encoding::DynamicFlags::FLEXIBLE,
914 )
915 }
916}
917
918#[derive(Debug, Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash)]
919pub struct ComponentRunnerMarker;
920
921impl fidl::endpoints::ProtocolMarker for ComponentRunnerMarker {
922 type Proxy = ComponentRunnerProxy;
923 type RequestStream = ComponentRunnerRequestStream;
924 #[cfg(target_os = "fuchsia")]
925 type SynchronousProxy = ComponentRunnerSynchronousProxy;
926
927 const DEBUG_NAME: &'static str = "fuchsia.component.runner.ComponentRunner";
928}
929impl fidl::endpoints::DiscoverableProtocolMarker for ComponentRunnerMarker {}
930
931pub trait ComponentRunnerProxyInterface: Send + Sync {
932 fn r#start(
933 &self,
934 start_info: ComponentStartInfo,
935 controller: fidl::endpoints::ServerEnd<ComponentControllerMarker>,
936 ) -> Result<(), fidl::Error>;
937}
938#[derive(Debug)]
939#[cfg(target_os = "fuchsia")]
940pub struct ComponentRunnerSynchronousProxy {
941 client: fidl::client::sync::Client,
942}
943
944#[cfg(target_os = "fuchsia")]
945impl fidl::endpoints::SynchronousProxy for ComponentRunnerSynchronousProxy {
946 type Proxy = ComponentRunnerProxy;
947 type Protocol = ComponentRunnerMarker;
948
949 fn from_channel(inner: fidl::Channel) -> Self {
950 Self::new(inner)
951 }
952
953 fn into_channel(self) -> fidl::Channel {
954 self.client.into_channel()
955 }
956
957 fn as_channel(&self) -> &fidl::Channel {
958 self.client.as_channel()
959 }
960}
961
962#[cfg(target_os = "fuchsia")]
963impl ComponentRunnerSynchronousProxy {
964 pub fn new(channel: fidl::Channel) -> Self {
965 let protocol_name = <ComponentRunnerMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
966 Self { client: fidl::client::sync::Client::new(channel, protocol_name) }
967 }
968
969 pub fn into_channel(self) -> fidl::Channel {
970 self.client.into_channel()
971 }
972
973 pub fn wait_for_event(
976 &self,
977 deadline: zx::MonotonicInstant,
978 ) -> Result<ComponentRunnerEvent, fidl::Error> {
979 ComponentRunnerEvent::decode(self.client.wait_for_event(deadline)?)
980 }
981
982 pub fn r#start(
991 &self,
992 mut start_info: ComponentStartInfo,
993 mut controller: fidl::endpoints::ServerEnd<ComponentControllerMarker>,
994 ) -> Result<(), fidl::Error> {
995 self.client.send::<ComponentRunnerStartRequest>(
996 (&mut start_info, controller),
997 0xad5a8c19f25ee09,
998 fidl::encoding::DynamicFlags::empty(),
999 )
1000 }
1001}
1002
1003#[cfg(target_os = "fuchsia")]
1004impl From<ComponentRunnerSynchronousProxy> for zx::Handle {
1005 fn from(value: ComponentRunnerSynchronousProxy) -> Self {
1006 value.into_channel().into()
1007 }
1008}
1009
1010#[cfg(target_os = "fuchsia")]
1011impl From<fidl::Channel> for ComponentRunnerSynchronousProxy {
1012 fn from(value: fidl::Channel) -> Self {
1013 Self::new(value)
1014 }
1015}
1016
1017#[cfg(target_os = "fuchsia")]
1018impl fidl::endpoints::FromClient for ComponentRunnerSynchronousProxy {
1019 type Protocol = ComponentRunnerMarker;
1020
1021 fn from_client(value: fidl::endpoints::ClientEnd<ComponentRunnerMarker>) -> Self {
1022 Self::new(value.into_channel())
1023 }
1024}
1025
1026#[derive(Debug, Clone)]
1027pub struct ComponentRunnerProxy {
1028 client: fidl::client::Client<fidl::encoding::DefaultFuchsiaResourceDialect>,
1029}
1030
1031impl fidl::endpoints::Proxy for ComponentRunnerProxy {
1032 type Protocol = ComponentRunnerMarker;
1033
1034 fn from_channel(inner: ::fidl::AsyncChannel) -> Self {
1035 Self::new(inner)
1036 }
1037
1038 fn into_channel(self) -> Result<::fidl::AsyncChannel, Self> {
1039 self.client.into_channel().map_err(|client| Self { client })
1040 }
1041
1042 fn as_channel(&self) -> &::fidl::AsyncChannel {
1043 self.client.as_channel()
1044 }
1045}
1046
1047impl ComponentRunnerProxy {
1048 pub fn new(channel: ::fidl::AsyncChannel) -> Self {
1050 let protocol_name = <ComponentRunnerMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
1051 Self { client: fidl::client::Client::new(channel, protocol_name) }
1052 }
1053
1054 pub fn take_event_stream(&self) -> ComponentRunnerEventStream {
1060 ComponentRunnerEventStream { event_receiver: self.client.take_event_receiver() }
1061 }
1062
1063 pub fn r#start(
1072 &self,
1073 mut start_info: ComponentStartInfo,
1074 mut controller: fidl::endpoints::ServerEnd<ComponentControllerMarker>,
1075 ) -> Result<(), fidl::Error> {
1076 ComponentRunnerProxyInterface::r#start(self, start_info, controller)
1077 }
1078}
1079
1080impl ComponentRunnerProxyInterface for ComponentRunnerProxy {
1081 fn r#start(
1082 &self,
1083 mut start_info: ComponentStartInfo,
1084 mut controller: fidl::endpoints::ServerEnd<ComponentControllerMarker>,
1085 ) -> Result<(), fidl::Error> {
1086 self.client.send::<ComponentRunnerStartRequest>(
1087 (&mut start_info, controller),
1088 0xad5a8c19f25ee09,
1089 fidl::encoding::DynamicFlags::empty(),
1090 )
1091 }
1092}
1093
1094pub struct ComponentRunnerEventStream {
1095 event_receiver: fidl::client::EventReceiver<fidl::encoding::DefaultFuchsiaResourceDialect>,
1096}
1097
1098impl std::marker::Unpin for ComponentRunnerEventStream {}
1099
1100impl futures::stream::FusedStream for ComponentRunnerEventStream {
1101 fn is_terminated(&self) -> bool {
1102 self.event_receiver.is_terminated()
1103 }
1104}
1105
1106impl futures::Stream for ComponentRunnerEventStream {
1107 type Item = Result<ComponentRunnerEvent, fidl::Error>;
1108
1109 fn poll_next(
1110 mut self: std::pin::Pin<&mut Self>,
1111 cx: &mut std::task::Context<'_>,
1112 ) -> std::task::Poll<Option<Self::Item>> {
1113 match futures::ready!(futures::stream::StreamExt::poll_next_unpin(
1114 &mut self.event_receiver,
1115 cx
1116 )?) {
1117 Some(buf) => std::task::Poll::Ready(Some(ComponentRunnerEvent::decode(buf))),
1118 None => std::task::Poll::Ready(None),
1119 }
1120 }
1121}
1122
1123#[derive(Debug)]
1124pub enum ComponentRunnerEvent {
1125 #[non_exhaustive]
1126 _UnknownEvent {
1127 ordinal: u64,
1129 },
1130}
1131
1132impl ComponentRunnerEvent {
1133 fn decode(
1135 mut buf: <fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc,
1136 ) -> Result<ComponentRunnerEvent, fidl::Error> {
1137 let (bytes, _handles) = buf.split_mut();
1138 let (tx_header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
1139 debug_assert_eq!(tx_header.tx_id, 0);
1140 match tx_header.ordinal {
1141 _ if tx_header.dynamic_flags().contains(fidl::encoding::DynamicFlags::FLEXIBLE) => {
1142 Ok(ComponentRunnerEvent::_UnknownEvent { ordinal: tx_header.ordinal })
1143 }
1144 _ => Err(fidl::Error::UnknownOrdinal {
1145 ordinal: tx_header.ordinal,
1146 protocol_name:
1147 <ComponentRunnerMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
1148 }),
1149 }
1150 }
1151}
1152
1153pub struct ComponentRunnerRequestStream {
1155 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
1156 is_terminated: bool,
1157}
1158
1159impl std::marker::Unpin for ComponentRunnerRequestStream {}
1160
1161impl futures::stream::FusedStream for ComponentRunnerRequestStream {
1162 fn is_terminated(&self) -> bool {
1163 self.is_terminated
1164 }
1165}
1166
1167impl fidl::endpoints::RequestStream for ComponentRunnerRequestStream {
1168 type Protocol = ComponentRunnerMarker;
1169 type ControlHandle = ComponentRunnerControlHandle;
1170
1171 fn from_channel(channel: ::fidl::AsyncChannel) -> Self {
1172 Self { inner: std::sync::Arc::new(fidl::ServeInner::new(channel)), is_terminated: false }
1173 }
1174
1175 fn control_handle(&self) -> Self::ControlHandle {
1176 ComponentRunnerControlHandle { inner: self.inner.clone() }
1177 }
1178
1179 fn into_inner(
1180 self,
1181 ) -> (::std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>, bool)
1182 {
1183 (self.inner, self.is_terminated)
1184 }
1185
1186 fn from_inner(
1187 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
1188 is_terminated: bool,
1189 ) -> Self {
1190 Self { inner, is_terminated }
1191 }
1192}
1193
1194impl futures::Stream for ComponentRunnerRequestStream {
1195 type Item = Result<ComponentRunnerRequest, fidl::Error>;
1196
1197 fn poll_next(
1198 mut self: std::pin::Pin<&mut Self>,
1199 cx: &mut std::task::Context<'_>,
1200 ) -> std::task::Poll<Option<Self::Item>> {
1201 let this = &mut *self;
1202 if this.inner.check_shutdown(cx) {
1203 this.is_terminated = true;
1204 return std::task::Poll::Ready(None);
1205 }
1206 if this.is_terminated {
1207 panic!("polled ComponentRunnerRequestStream after completion");
1208 }
1209 fidl::encoding::with_tls_decode_buf::<_, fidl::encoding::DefaultFuchsiaResourceDialect>(
1210 |bytes, handles| {
1211 match this.inner.channel().read_etc(cx, bytes, handles) {
1212 std::task::Poll::Ready(Ok(())) => {}
1213 std::task::Poll::Pending => return std::task::Poll::Pending,
1214 std::task::Poll::Ready(Err(zx_status::Status::PEER_CLOSED)) => {
1215 this.is_terminated = true;
1216 return std::task::Poll::Ready(None);
1217 }
1218 std::task::Poll::Ready(Err(e)) => {
1219 return std::task::Poll::Ready(Some(Err(fidl::Error::ServerRequestRead(
1220 e.into(),
1221 ))))
1222 }
1223 }
1224
1225 let (header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
1227
1228 std::task::Poll::Ready(Some(match header.ordinal {
1229 0xad5a8c19f25ee09 => {
1230 header.validate_request_tx_id(fidl::MethodType::OneWay)?;
1231 let mut req = fidl::new_empty!(
1232 ComponentRunnerStartRequest,
1233 fidl::encoding::DefaultFuchsiaResourceDialect
1234 );
1235 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<ComponentRunnerStartRequest>(&header, _body_bytes, handles, &mut req)?;
1236 let control_handle =
1237 ComponentRunnerControlHandle { inner: this.inner.clone() };
1238 Ok(ComponentRunnerRequest::Start {
1239 start_info: req.start_info,
1240 controller: req.controller,
1241
1242 control_handle,
1243 })
1244 }
1245 _ if header.tx_id == 0
1246 && header
1247 .dynamic_flags()
1248 .contains(fidl::encoding::DynamicFlags::FLEXIBLE) =>
1249 {
1250 Ok(ComponentRunnerRequest::_UnknownMethod {
1251 ordinal: header.ordinal,
1252 control_handle: ComponentRunnerControlHandle {
1253 inner: this.inner.clone(),
1254 },
1255 method_type: fidl::MethodType::OneWay,
1256 })
1257 }
1258 _ if header
1259 .dynamic_flags()
1260 .contains(fidl::encoding::DynamicFlags::FLEXIBLE) =>
1261 {
1262 this.inner.send_framework_err(
1263 fidl::encoding::FrameworkErr::UnknownMethod,
1264 header.tx_id,
1265 header.ordinal,
1266 header.dynamic_flags(),
1267 (bytes, handles),
1268 )?;
1269 Ok(ComponentRunnerRequest::_UnknownMethod {
1270 ordinal: header.ordinal,
1271 control_handle: ComponentRunnerControlHandle {
1272 inner: this.inner.clone(),
1273 },
1274 method_type: fidl::MethodType::TwoWay,
1275 })
1276 }
1277 _ => Err(fidl::Error::UnknownOrdinal {
1278 ordinal: header.ordinal,
1279 protocol_name:
1280 <ComponentRunnerMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
1281 }),
1282 }))
1283 },
1284 )
1285 }
1286}
1287
1288#[derive(Debug)]
1296pub enum ComponentRunnerRequest {
1297 Start {
1306 start_info: ComponentStartInfo,
1307 controller: fidl::endpoints::ServerEnd<ComponentControllerMarker>,
1308 control_handle: ComponentRunnerControlHandle,
1309 },
1310 #[non_exhaustive]
1312 _UnknownMethod {
1313 ordinal: u64,
1315 control_handle: ComponentRunnerControlHandle,
1316 method_type: fidl::MethodType,
1317 },
1318}
1319
1320impl ComponentRunnerRequest {
1321 #[allow(irrefutable_let_patterns)]
1322 pub fn into_start(
1323 self,
1324 ) -> Option<(
1325 ComponentStartInfo,
1326 fidl::endpoints::ServerEnd<ComponentControllerMarker>,
1327 ComponentRunnerControlHandle,
1328 )> {
1329 if let ComponentRunnerRequest::Start { start_info, controller, control_handle } = self {
1330 Some((start_info, controller, control_handle))
1331 } else {
1332 None
1333 }
1334 }
1335
1336 pub fn method_name(&self) -> &'static str {
1338 match *self {
1339 ComponentRunnerRequest::Start { .. } => "start",
1340 ComponentRunnerRequest::_UnknownMethod {
1341 method_type: fidl::MethodType::OneWay,
1342 ..
1343 } => "unknown one-way method",
1344 ComponentRunnerRequest::_UnknownMethod {
1345 method_type: fidl::MethodType::TwoWay,
1346 ..
1347 } => "unknown two-way method",
1348 }
1349 }
1350}
1351
1352#[derive(Debug, Clone)]
1353pub struct ComponentRunnerControlHandle {
1354 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
1355}
1356
1357impl fidl::endpoints::ControlHandle for ComponentRunnerControlHandle {
1358 fn shutdown(&self) {
1359 self.inner.shutdown()
1360 }
1361 fn shutdown_with_epitaph(&self, status: zx_status::Status) {
1362 self.inner.shutdown_with_epitaph(status)
1363 }
1364
1365 fn is_closed(&self) -> bool {
1366 self.inner.channel().is_closed()
1367 }
1368 fn on_closed(&self) -> fidl::OnSignalsRef<'_> {
1369 self.inner.channel().on_closed()
1370 }
1371
1372 #[cfg(target_os = "fuchsia")]
1373 fn signal_peer(
1374 &self,
1375 clear_mask: zx::Signals,
1376 set_mask: zx::Signals,
1377 ) -> Result<(), zx_status::Status> {
1378 use fidl::Peered;
1379 self.inner.channel().signal_peer(clear_mask, set_mask)
1380 }
1381}
1382
1383impl ComponentRunnerControlHandle {}
1384
1385#[derive(Debug, Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash)]
1386pub struct TaskProviderMarker;
1387
1388impl fidl::endpoints::ProtocolMarker for TaskProviderMarker {
1389 type Proxy = TaskProviderProxy;
1390 type RequestStream = TaskProviderRequestStream;
1391 #[cfg(target_os = "fuchsia")]
1392 type SynchronousProxy = TaskProviderSynchronousProxy;
1393
1394 const DEBUG_NAME: &'static str = "fuchsia.component.runner.TaskProvider";
1395}
1396impl fidl::endpoints::DiscoverableProtocolMarker for TaskProviderMarker {}
1397pub type TaskProviderGetJobResult = Result<fidl::Job, i32>;
1398
1399pub trait TaskProviderProxyInterface: Send + Sync {
1400 type GetJobResponseFut: std::future::Future<Output = Result<TaskProviderGetJobResult, fidl::Error>>
1401 + Send;
1402 fn r#get_job(&self) -> Self::GetJobResponseFut;
1403}
1404#[derive(Debug)]
1405#[cfg(target_os = "fuchsia")]
1406pub struct TaskProviderSynchronousProxy {
1407 client: fidl::client::sync::Client,
1408}
1409
1410#[cfg(target_os = "fuchsia")]
1411impl fidl::endpoints::SynchronousProxy for TaskProviderSynchronousProxy {
1412 type Proxy = TaskProviderProxy;
1413 type Protocol = TaskProviderMarker;
1414
1415 fn from_channel(inner: fidl::Channel) -> Self {
1416 Self::new(inner)
1417 }
1418
1419 fn into_channel(self) -> fidl::Channel {
1420 self.client.into_channel()
1421 }
1422
1423 fn as_channel(&self) -> &fidl::Channel {
1424 self.client.as_channel()
1425 }
1426}
1427
1428#[cfg(target_os = "fuchsia")]
1429impl TaskProviderSynchronousProxy {
1430 pub fn new(channel: fidl::Channel) -> Self {
1431 let protocol_name = <TaskProviderMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
1432 Self { client: fidl::client::sync::Client::new(channel, protocol_name) }
1433 }
1434
1435 pub fn into_channel(self) -> fidl::Channel {
1436 self.client.into_channel()
1437 }
1438
1439 pub fn wait_for_event(
1442 &self,
1443 deadline: zx::MonotonicInstant,
1444 ) -> Result<TaskProviderEvent, fidl::Error> {
1445 TaskProviderEvent::decode(self.client.wait_for_event(deadline)?)
1446 }
1447
1448 pub fn r#get_job(
1452 &self,
1453 ___deadline: zx::MonotonicInstant,
1454 ) -> Result<TaskProviderGetJobResult, fidl::Error> {
1455 let _response = self.client.send_query::<
1456 fidl::encoding::EmptyPayload,
1457 fidl::encoding::ResultType<TaskProviderGetJobResponse, i32>,
1458 >(
1459 (),
1460 0x4c9ca4f4fdece3ad,
1461 fidl::encoding::DynamicFlags::empty(),
1462 ___deadline,
1463 )?;
1464 Ok(_response.map(|x| x.job))
1465 }
1466}
1467
1468#[cfg(target_os = "fuchsia")]
1469impl From<TaskProviderSynchronousProxy> for zx::Handle {
1470 fn from(value: TaskProviderSynchronousProxy) -> Self {
1471 value.into_channel().into()
1472 }
1473}
1474
1475#[cfg(target_os = "fuchsia")]
1476impl From<fidl::Channel> for TaskProviderSynchronousProxy {
1477 fn from(value: fidl::Channel) -> Self {
1478 Self::new(value)
1479 }
1480}
1481
1482#[cfg(target_os = "fuchsia")]
1483impl fidl::endpoints::FromClient for TaskProviderSynchronousProxy {
1484 type Protocol = TaskProviderMarker;
1485
1486 fn from_client(value: fidl::endpoints::ClientEnd<TaskProviderMarker>) -> Self {
1487 Self::new(value.into_channel())
1488 }
1489}
1490
1491#[derive(Debug, Clone)]
1492pub struct TaskProviderProxy {
1493 client: fidl::client::Client<fidl::encoding::DefaultFuchsiaResourceDialect>,
1494}
1495
1496impl fidl::endpoints::Proxy for TaskProviderProxy {
1497 type Protocol = TaskProviderMarker;
1498
1499 fn from_channel(inner: ::fidl::AsyncChannel) -> Self {
1500 Self::new(inner)
1501 }
1502
1503 fn into_channel(self) -> Result<::fidl::AsyncChannel, Self> {
1504 self.client.into_channel().map_err(|client| Self { client })
1505 }
1506
1507 fn as_channel(&self) -> &::fidl::AsyncChannel {
1508 self.client.as_channel()
1509 }
1510}
1511
1512impl TaskProviderProxy {
1513 pub fn new(channel: ::fidl::AsyncChannel) -> Self {
1515 let protocol_name = <TaskProviderMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
1516 Self { client: fidl::client::Client::new(channel, protocol_name) }
1517 }
1518
1519 pub fn take_event_stream(&self) -> TaskProviderEventStream {
1525 TaskProviderEventStream { event_receiver: self.client.take_event_receiver() }
1526 }
1527
1528 pub fn r#get_job(
1532 &self,
1533 ) -> fidl::client::QueryResponseFut<
1534 TaskProviderGetJobResult,
1535 fidl::encoding::DefaultFuchsiaResourceDialect,
1536 > {
1537 TaskProviderProxyInterface::r#get_job(self)
1538 }
1539}
1540
1541impl TaskProviderProxyInterface for TaskProviderProxy {
1542 type GetJobResponseFut = fidl::client::QueryResponseFut<
1543 TaskProviderGetJobResult,
1544 fidl::encoding::DefaultFuchsiaResourceDialect,
1545 >;
1546 fn r#get_job(&self) -> Self::GetJobResponseFut {
1547 fn _decode(
1548 mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
1549 ) -> Result<TaskProviderGetJobResult, fidl::Error> {
1550 let _response = fidl::client::decode_transaction_body::<
1551 fidl::encoding::ResultType<TaskProviderGetJobResponse, i32>,
1552 fidl::encoding::DefaultFuchsiaResourceDialect,
1553 0x4c9ca4f4fdece3ad,
1554 >(_buf?)?;
1555 Ok(_response.map(|x| x.job))
1556 }
1557 self.client.send_query_and_decode::<fidl::encoding::EmptyPayload, TaskProviderGetJobResult>(
1558 (),
1559 0x4c9ca4f4fdece3ad,
1560 fidl::encoding::DynamicFlags::empty(),
1561 _decode,
1562 )
1563 }
1564}
1565
1566pub struct TaskProviderEventStream {
1567 event_receiver: fidl::client::EventReceiver<fidl::encoding::DefaultFuchsiaResourceDialect>,
1568}
1569
1570impl std::marker::Unpin for TaskProviderEventStream {}
1571
1572impl futures::stream::FusedStream for TaskProviderEventStream {
1573 fn is_terminated(&self) -> bool {
1574 self.event_receiver.is_terminated()
1575 }
1576}
1577
1578impl futures::Stream for TaskProviderEventStream {
1579 type Item = Result<TaskProviderEvent, fidl::Error>;
1580
1581 fn poll_next(
1582 mut self: std::pin::Pin<&mut Self>,
1583 cx: &mut std::task::Context<'_>,
1584 ) -> std::task::Poll<Option<Self::Item>> {
1585 match futures::ready!(futures::stream::StreamExt::poll_next_unpin(
1586 &mut self.event_receiver,
1587 cx
1588 )?) {
1589 Some(buf) => std::task::Poll::Ready(Some(TaskProviderEvent::decode(buf))),
1590 None => std::task::Poll::Ready(None),
1591 }
1592 }
1593}
1594
1595#[derive(Debug)]
1596pub enum TaskProviderEvent {
1597 #[non_exhaustive]
1598 _UnknownEvent {
1599 ordinal: u64,
1601 },
1602}
1603
1604impl TaskProviderEvent {
1605 fn decode(
1607 mut buf: <fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc,
1608 ) -> Result<TaskProviderEvent, fidl::Error> {
1609 let (bytes, _handles) = buf.split_mut();
1610 let (tx_header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
1611 debug_assert_eq!(tx_header.tx_id, 0);
1612 match tx_header.ordinal {
1613 _ if tx_header.dynamic_flags().contains(fidl::encoding::DynamicFlags::FLEXIBLE) => {
1614 Ok(TaskProviderEvent::_UnknownEvent { ordinal: tx_header.ordinal })
1615 }
1616 _ => Err(fidl::Error::UnknownOrdinal {
1617 ordinal: tx_header.ordinal,
1618 protocol_name: <TaskProviderMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
1619 }),
1620 }
1621 }
1622}
1623
1624pub struct TaskProviderRequestStream {
1626 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
1627 is_terminated: bool,
1628}
1629
1630impl std::marker::Unpin for TaskProviderRequestStream {}
1631
1632impl futures::stream::FusedStream for TaskProviderRequestStream {
1633 fn is_terminated(&self) -> bool {
1634 self.is_terminated
1635 }
1636}
1637
1638impl fidl::endpoints::RequestStream for TaskProviderRequestStream {
1639 type Protocol = TaskProviderMarker;
1640 type ControlHandle = TaskProviderControlHandle;
1641
1642 fn from_channel(channel: ::fidl::AsyncChannel) -> Self {
1643 Self { inner: std::sync::Arc::new(fidl::ServeInner::new(channel)), is_terminated: false }
1644 }
1645
1646 fn control_handle(&self) -> Self::ControlHandle {
1647 TaskProviderControlHandle { inner: self.inner.clone() }
1648 }
1649
1650 fn into_inner(
1651 self,
1652 ) -> (::std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>, bool)
1653 {
1654 (self.inner, self.is_terminated)
1655 }
1656
1657 fn from_inner(
1658 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
1659 is_terminated: bool,
1660 ) -> Self {
1661 Self { inner, is_terminated }
1662 }
1663}
1664
1665impl futures::Stream for TaskProviderRequestStream {
1666 type Item = Result<TaskProviderRequest, fidl::Error>;
1667
1668 fn poll_next(
1669 mut self: std::pin::Pin<&mut Self>,
1670 cx: &mut std::task::Context<'_>,
1671 ) -> std::task::Poll<Option<Self::Item>> {
1672 let this = &mut *self;
1673 if this.inner.check_shutdown(cx) {
1674 this.is_terminated = true;
1675 return std::task::Poll::Ready(None);
1676 }
1677 if this.is_terminated {
1678 panic!("polled TaskProviderRequestStream after completion");
1679 }
1680 fidl::encoding::with_tls_decode_buf::<_, fidl::encoding::DefaultFuchsiaResourceDialect>(
1681 |bytes, handles| {
1682 match this.inner.channel().read_etc(cx, bytes, handles) {
1683 std::task::Poll::Ready(Ok(())) => {}
1684 std::task::Poll::Pending => return std::task::Poll::Pending,
1685 std::task::Poll::Ready(Err(zx_status::Status::PEER_CLOSED)) => {
1686 this.is_terminated = true;
1687 return std::task::Poll::Ready(None);
1688 }
1689 std::task::Poll::Ready(Err(e)) => {
1690 return std::task::Poll::Ready(Some(Err(fidl::Error::ServerRequestRead(
1691 e.into(),
1692 ))))
1693 }
1694 }
1695
1696 let (header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
1698
1699 std::task::Poll::Ready(Some(match header.ordinal {
1700 0x4c9ca4f4fdece3ad => {
1701 header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
1702 let mut req = fidl::new_empty!(
1703 fidl::encoding::EmptyPayload,
1704 fidl::encoding::DefaultFuchsiaResourceDialect
1705 );
1706 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
1707 let control_handle =
1708 TaskProviderControlHandle { inner: this.inner.clone() };
1709 Ok(TaskProviderRequest::GetJob {
1710 responder: TaskProviderGetJobResponder {
1711 control_handle: std::mem::ManuallyDrop::new(control_handle),
1712 tx_id: header.tx_id,
1713 },
1714 })
1715 }
1716 _ if header.tx_id == 0
1717 && header
1718 .dynamic_flags()
1719 .contains(fidl::encoding::DynamicFlags::FLEXIBLE) =>
1720 {
1721 Ok(TaskProviderRequest::_UnknownMethod {
1722 ordinal: header.ordinal,
1723 control_handle: TaskProviderControlHandle { inner: this.inner.clone() },
1724 method_type: fidl::MethodType::OneWay,
1725 })
1726 }
1727 _ if header
1728 .dynamic_flags()
1729 .contains(fidl::encoding::DynamicFlags::FLEXIBLE) =>
1730 {
1731 this.inner.send_framework_err(
1732 fidl::encoding::FrameworkErr::UnknownMethod,
1733 header.tx_id,
1734 header.ordinal,
1735 header.dynamic_flags(),
1736 (bytes, handles),
1737 )?;
1738 Ok(TaskProviderRequest::_UnknownMethod {
1739 ordinal: header.ordinal,
1740 control_handle: TaskProviderControlHandle { inner: this.inner.clone() },
1741 method_type: fidl::MethodType::TwoWay,
1742 })
1743 }
1744 _ => Err(fidl::Error::UnknownOrdinal {
1745 ordinal: header.ordinal,
1746 protocol_name:
1747 <TaskProviderMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
1748 }),
1749 }))
1750 },
1751 )
1752 }
1753}
1754
1755#[derive(Debug)]
1757pub enum TaskProviderRequest {
1758 GetJob { responder: TaskProviderGetJobResponder },
1762 #[non_exhaustive]
1764 _UnknownMethod {
1765 ordinal: u64,
1767 control_handle: TaskProviderControlHandle,
1768 method_type: fidl::MethodType,
1769 },
1770}
1771
1772impl TaskProviderRequest {
1773 #[allow(irrefutable_let_patterns)]
1774 pub fn into_get_job(self) -> Option<(TaskProviderGetJobResponder)> {
1775 if let TaskProviderRequest::GetJob { responder } = self {
1776 Some((responder))
1777 } else {
1778 None
1779 }
1780 }
1781
1782 pub fn method_name(&self) -> &'static str {
1784 match *self {
1785 TaskProviderRequest::GetJob { .. } => "get_job",
1786 TaskProviderRequest::_UnknownMethod {
1787 method_type: fidl::MethodType::OneWay, ..
1788 } => "unknown one-way method",
1789 TaskProviderRequest::_UnknownMethod {
1790 method_type: fidl::MethodType::TwoWay, ..
1791 } => "unknown two-way method",
1792 }
1793 }
1794}
1795
1796#[derive(Debug, Clone)]
1797pub struct TaskProviderControlHandle {
1798 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
1799}
1800
1801impl fidl::endpoints::ControlHandle for TaskProviderControlHandle {
1802 fn shutdown(&self) {
1803 self.inner.shutdown()
1804 }
1805 fn shutdown_with_epitaph(&self, status: zx_status::Status) {
1806 self.inner.shutdown_with_epitaph(status)
1807 }
1808
1809 fn is_closed(&self) -> bool {
1810 self.inner.channel().is_closed()
1811 }
1812 fn on_closed(&self) -> fidl::OnSignalsRef<'_> {
1813 self.inner.channel().on_closed()
1814 }
1815
1816 #[cfg(target_os = "fuchsia")]
1817 fn signal_peer(
1818 &self,
1819 clear_mask: zx::Signals,
1820 set_mask: zx::Signals,
1821 ) -> Result<(), zx_status::Status> {
1822 use fidl::Peered;
1823 self.inner.channel().signal_peer(clear_mask, set_mask)
1824 }
1825}
1826
1827impl TaskProviderControlHandle {}
1828
1829#[must_use = "FIDL methods require a response to be sent"]
1830#[derive(Debug)]
1831pub struct TaskProviderGetJobResponder {
1832 control_handle: std::mem::ManuallyDrop<TaskProviderControlHandle>,
1833 tx_id: u32,
1834}
1835
1836impl std::ops::Drop for TaskProviderGetJobResponder {
1840 fn drop(&mut self) {
1841 self.control_handle.shutdown();
1842 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
1844 }
1845}
1846
1847impl fidl::endpoints::Responder for TaskProviderGetJobResponder {
1848 type ControlHandle = TaskProviderControlHandle;
1849
1850 fn control_handle(&self) -> &TaskProviderControlHandle {
1851 &self.control_handle
1852 }
1853
1854 fn drop_without_shutdown(mut self) {
1855 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
1857 std::mem::forget(self);
1859 }
1860}
1861
1862impl TaskProviderGetJobResponder {
1863 pub fn send(self, mut result: Result<fidl::Job, i32>) -> Result<(), fidl::Error> {
1867 let _result = self.send_raw(result);
1868 if _result.is_err() {
1869 self.control_handle.shutdown();
1870 }
1871 self.drop_without_shutdown();
1872 _result
1873 }
1874
1875 pub fn send_no_shutdown_on_err(
1877 self,
1878 mut result: Result<fidl::Job, i32>,
1879 ) -> Result<(), fidl::Error> {
1880 let _result = self.send_raw(result);
1881 self.drop_without_shutdown();
1882 _result
1883 }
1884
1885 fn send_raw(&self, mut result: Result<fidl::Job, i32>) -> Result<(), fidl::Error> {
1886 self.control_handle
1887 .inner
1888 .send::<fidl::encoding::ResultType<TaskProviderGetJobResponse, i32>>(
1889 result.map(|job| (job,)),
1890 self.tx_id,
1891 0x4c9ca4f4fdece3ad,
1892 fidl::encoding::DynamicFlags::empty(),
1893 )
1894 }
1895}
1896
1897mod internal {
1898 use super::*;
1899
1900 impl fidl::encoding::ResourceTypeMarker for ComponentControllerOnPublishDiagnosticsRequest {
1901 type Borrowed<'a> = &'a mut Self;
1902 fn take_or_borrow<'a>(
1903 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
1904 ) -> Self::Borrowed<'a> {
1905 value
1906 }
1907 }
1908
1909 unsafe impl fidl::encoding::TypeMarker for ComponentControllerOnPublishDiagnosticsRequest {
1910 type Owned = Self;
1911
1912 #[inline(always)]
1913 fn inline_align(_context: fidl::encoding::Context) -> usize {
1914 8
1915 }
1916
1917 #[inline(always)]
1918 fn inline_size(_context: fidl::encoding::Context) -> usize {
1919 16
1920 }
1921 }
1922
1923 unsafe impl
1924 fidl::encoding::Encode<
1925 ComponentControllerOnPublishDiagnosticsRequest,
1926 fidl::encoding::DefaultFuchsiaResourceDialect,
1927 > for &mut ComponentControllerOnPublishDiagnosticsRequest
1928 {
1929 #[inline]
1930 unsafe fn encode(
1931 self,
1932 encoder: &mut fidl::encoding::Encoder<
1933 '_,
1934 fidl::encoding::DefaultFuchsiaResourceDialect,
1935 >,
1936 offset: usize,
1937 _depth: fidl::encoding::Depth,
1938 ) -> fidl::Result<()> {
1939 encoder.debug_check_bounds::<ComponentControllerOnPublishDiagnosticsRequest>(offset);
1940 fidl::encoding::Encode::<
1942 ComponentControllerOnPublishDiagnosticsRequest,
1943 fidl::encoding::DefaultFuchsiaResourceDialect,
1944 >::encode(
1945 (<ComponentDiagnostics as fidl::encoding::ResourceTypeMarker>::take_or_borrow(
1946 &mut self.payload,
1947 ),),
1948 encoder,
1949 offset,
1950 _depth,
1951 )
1952 }
1953 }
1954 unsafe impl<
1955 T0: fidl::encoding::Encode<
1956 ComponentDiagnostics,
1957 fidl::encoding::DefaultFuchsiaResourceDialect,
1958 >,
1959 >
1960 fidl::encoding::Encode<
1961 ComponentControllerOnPublishDiagnosticsRequest,
1962 fidl::encoding::DefaultFuchsiaResourceDialect,
1963 > for (T0,)
1964 {
1965 #[inline]
1966 unsafe fn encode(
1967 self,
1968 encoder: &mut fidl::encoding::Encoder<
1969 '_,
1970 fidl::encoding::DefaultFuchsiaResourceDialect,
1971 >,
1972 offset: usize,
1973 depth: fidl::encoding::Depth,
1974 ) -> fidl::Result<()> {
1975 encoder.debug_check_bounds::<ComponentControllerOnPublishDiagnosticsRequest>(offset);
1976 self.0.encode(encoder, offset + 0, depth)?;
1980 Ok(())
1981 }
1982 }
1983
1984 impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
1985 for ComponentControllerOnPublishDiagnosticsRequest
1986 {
1987 #[inline(always)]
1988 fn new_empty() -> Self {
1989 Self {
1990 payload: fidl::new_empty!(
1991 ComponentDiagnostics,
1992 fidl::encoding::DefaultFuchsiaResourceDialect
1993 ),
1994 }
1995 }
1996
1997 #[inline]
1998 unsafe fn decode(
1999 &mut self,
2000 decoder: &mut fidl::encoding::Decoder<
2001 '_,
2002 fidl::encoding::DefaultFuchsiaResourceDialect,
2003 >,
2004 offset: usize,
2005 _depth: fidl::encoding::Depth,
2006 ) -> fidl::Result<()> {
2007 decoder.debug_check_bounds::<Self>(offset);
2008 fidl::decode!(
2010 ComponentDiagnostics,
2011 fidl::encoding::DefaultFuchsiaResourceDialect,
2012 &mut self.payload,
2013 decoder,
2014 offset + 0,
2015 _depth
2016 )?;
2017 Ok(())
2018 }
2019 }
2020
2021 impl fidl::encoding::ResourceTypeMarker for ComponentRunnerStartRequest {
2022 type Borrowed<'a> = &'a mut Self;
2023 fn take_or_borrow<'a>(
2024 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
2025 ) -> Self::Borrowed<'a> {
2026 value
2027 }
2028 }
2029
2030 unsafe impl fidl::encoding::TypeMarker for ComponentRunnerStartRequest {
2031 type Owned = Self;
2032
2033 #[inline(always)]
2034 fn inline_align(_context: fidl::encoding::Context) -> usize {
2035 8
2036 }
2037
2038 #[inline(always)]
2039 fn inline_size(_context: fidl::encoding::Context) -> usize {
2040 24
2041 }
2042 }
2043
2044 unsafe impl
2045 fidl::encoding::Encode<
2046 ComponentRunnerStartRequest,
2047 fidl::encoding::DefaultFuchsiaResourceDialect,
2048 > for &mut ComponentRunnerStartRequest
2049 {
2050 #[inline]
2051 unsafe fn encode(
2052 self,
2053 encoder: &mut fidl::encoding::Encoder<
2054 '_,
2055 fidl::encoding::DefaultFuchsiaResourceDialect,
2056 >,
2057 offset: usize,
2058 _depth: fidl::encoding::Depth,
2059 ) -> fidl::Result<()> {
2060 encoder.debug_check_bounds::<ComponentRunnerStartRequest>(offset);
2061 fidl::encoding::Encode::<ComponentRunnerStartRequest, fidl::encoding::DefaultFuchsiaResourceDialect>::encode(
2063 (
2064 <ComponentStartInfo as fidl::encoding::ResourceTypeMarker>::take_or_borrow(&mut self.start_info),
2065 <fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<ComponentControllerMarker>> as fidl::encoding::ResourceTypeMarker>::take_or_borrow(&mut self.controller),
2066 ),
2067 encoder, offset, _depth
2068 )
2069 }
2070 }
2071 unsafe impl<
2072 T0: fidl::encoding::Encode<
2073 ComponentStartInfo,
2074 fidl::encoding::DefaultFuchsiaResourceDialect,
2075 >,
2076 T1: fidl::encoding::Encode<
2077 fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<ComponentControllerMarker>>,
2078 fidl::encoding::DefaultFuchsiaResourceDialect,
2079 >,
2080 >
2081 fidl::encoding::Encode<
2082 ComponentRunnerStartRequest,
2083 fidl::encoding::DefaultFuchsiaResourceDialect,
2084 > for (T0, T1)
2085 {
2086 #[inline]
2087 unsafe fn encode(
2088 self,
2089 encoder: &mut fidl::encoding::Encoder<
2090 '_,
2091 fidl::encoding::DefaultFuchsiaResourceDialect,
2092 >,
2093 offset: usize,
2094 depth: fidl::encoding::Depth,
2095 ) -> fidl::Result<()> {
2096 encoder.debug_check_bounds::<ComponentRunnerStartRequest>(offset);
2097 unsafe {
2100 let ptr = encoder.buf.as_mut_ptr().add(offset).offset(16);
2101 (ptr as *mut u64).write_unaligned(0);
2102 }
2103 self.0.encode(encoder, offset + 0, depth)?;
2105 self.1.encode(encoder, offset + 16, depth)?;
2106 Ok(())
2107 }
2108 }
2109
2110 impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
2111 for ComponentRunnerStartRequest
2112 {
2113 #[inline(always)]
2114 fn new_empty() -> Self {
2115 Self {
2116 start_info: fidl::new_empty!(
2117 ComponentStartInfo,
2118 fidl::encoding::DefaultFuchsiaResourceDialect
2119 ),
2120 controller: fidl::new_empty!(
2121 fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<ComponentControllerMarker>>,
2122 fidl::encoding::DefaultFuchsiaResourceDialect
2123 ),
2124 }
2125 }
2126
2127 #[inline]
2128 unsafe fn decode(
2129 &mut self,
2130 decoder: &mut fidl::encoding::Decoder<
2131 '_,
2132 fidl::encoding::DefaultFuchsiaResourceDialect,
2133 >,
2134 offset: usize,
2135 _depth: fidl::encoding::Depth,
2136 ) -> fidl::Result<()> {
2137 decoder.debug_check_bounds::<Self>(offset);
2138 let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(16) };
2140 let padval = unsafe { (ptr as *const u64).read_unaligned() };
2141 let mask = 0xffffffff00000000u64;
2142 let maskedval = padval & mask;
2143 if maskedval != 0 {
2144 return Err(fidl::Error::NonZeroPadding {
2145 padding_start: offset + 16 + ((mask as u64).trailing_zeros() / 8) as usize,
2146 });
2147 }
2148 fidl::decode!(
2149 ComponentStartInfo,
2150 fidl::encoding::DefaultFuchsiaResourceDialect,
2151 &mut self.start_info,
2152 decoder,
2153 offset + 0,
2154 _depth
2155 )?;
2156 fidl::decode!(
2157 fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<ComponentControllerMarker>>,
2158 fidl::encoding::DefaultFuchsiaResourceDialect,
2159 &mut self.controller,
2160 decoder,
2161 offset + 16,
2162 _depth
2163 )?;
2164 Ok(())
2165 }
2166 }
2167
2168 impl fidl::encoding::ResourceTypeMarker for TaskProviderGetJobResponse {
2169 type Borrowed<'a> = &'a mut Self;
2170 fn take_or_borrow<'a>(
2171 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
2172 ) -> Self::Borrowed<'a> {
2173 value
2174 }
2175 }
2176
2177 unsafe impl fidl::encoding::TypeMarker for TaskProviderGetJobResponse {
2178 type Owned = Self;
2179
2180 #[inline(always)]
2181 fn inline_align(_context: fidl::encoding::Context) -> usize {
2182 4
2183 }
2184
2185 #[inline(always)]
2186 fn inline_size(_context: fidl::encoding::Context) -> usize {
2187 4
2188 }
2189 }
2190
2191 unsafe impl
2192 fidl::encoding::Encode<
2193 TaskProviderGetJobResponse,
2194 fidl::encoding::DefaultFuchsiaResourceDialect,
2195 > for &mut TaskProviderGetJobResponse
2196 {
2197 #[inline]
2198 unsafe fn encode(
2199 self,
2200 encoder: &mut fidl::encoding::Encoder<
2201 '_,
2202 fidl::encoding::DefaultFuchsiaResourceDialect,
2203 >,
2204 offset: usize,
2205 _depth: fidl::encoding::Depth,
2206 ) -> fidl::Result<()> {
2207 encoder.debug_check_bounds::<TaskProviderGetJobResponse>(offset);
2208 fidl::encoding::Encode::<
2210 TaskProviderGetJobResponse,
2211 fidl::encoding::DefaultFuchsiaResourceDialect,
2212 >::encode(
2213 (<fidl::encoding::HandleType<
2214 fidl::Job,
2215 { fidl::ObjectType::JOB.into_raw() },
2216 2147483648,
2217 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow(
2218 &mut self.job
2219 ),),
2220 encoder,
2221 offset,
2222 _depth,
2223 )
2224 }
2225 }
2226 unsafe impl<
2227 T0: fidl::encoding::Encode<
2228 fidl::encoding::HandleType<
2229 fidl::Job,
2230 { fidl::ObjectType::JOB.into_raw() },
2231 2147483648,
2232 >,
2233 fidl::encoding::DefaultFuchsiaResourceDialect,
2234 >,
2235 >
2236 fidl::encoding::Encode<
2237 TaskProviderGetJobResponse,
2238 fidl::encoding::DefaultFuchsiaResourceDialect,
2239 > for (T0,)
2240 {
2241 #[inline]
2242 unsafe fn encode(
2243 self,
2244 encoder: &mut fidl::encoding::Encoder<
2245 '_,
2246 fidl::encoding::DefaultFuchsiaResourceDialect,
2247 >,
2248 offset: usize,
2249 depth: fidl::encoding::Depth,
2250 ) -> fidl::Result<()> {
2251 encoder.debug_check_bounds::<TaskProviderGetJobResponse>(offset);
2252 self.0.encode(encoder, offset + 0, depth)?;
2256 Ok(())
2257 }
2258 }
2259
2260 impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
2261 for TaskProviderGetJobResponse
2262 {
2263 #[inline(always)]
2264 fn new_empty() -> Self {
2265 Self {
2266 job: fidl::new_empty!(fidl::encoding::HandleType<fidl::Job, { fidl::ObjectType::JOB.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect),
2267 }
2268 }
2269
2270 #[inline]
2271 unsafe fn decode(
2272 &mut self,
2273 decoder: &mut fidl::encoding::Decoder<
2274 '_,
2275 fidl::encoding::DefaultFuchsiaResourceDialect,
2276 >,
2277 offset: usize,
2278 _depth: fidl::encoding::Depth,
2279 ) -> fidl::Result<()> {
2280 decoder.debug_check_bounds::<Self>(offset);
2281 fidl::decode!(fidl::encoding::HandleType<fidl::Job, { fidl::ObjectType::JOB.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect, &mut self.job, decoder, offset + 0, _depth)?;
2283 Ok(())
2284 }
2285 }
2286
2287 impl ComponentControllerOnEscrowRequest {
2288 #[inline(always)]
2289 fn max_ordinal_present(&self) -> u64 {
2290 if let Some(_) = self.escrowed_dictionary {
2291 return 2;
2292 }
2293 if let Some(_) = self.outgoing_dir {
2294 return 1;
2295 }
2296 0
2297 }
2298 }
2299
2300 impl fidl::encoding::ResourceTypeMarker for ComponentControllerOnEscrowRequest {
2301 type Borrowed<'a> = &'a mut Self;
2302 fn take_or_borrow<'a>(
2303 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
2304 ) -> Self::Borrowed<'a> {
2305 value
2306 }
2307 }
2308
2309 unsafe impl fidl::encoding::TypeMarker for ComponentControllerOnEscrowRequest {
2310 type Owned = Self;
2311
2312 #[inline(always)]
2313 fn inline_align(_context: fidl::encoding::Context) -> usize {
2314 8
2315 }
2316
2317 #[inline(always)]
2318 fn inline_size(_context: fidl::encoding::Context) -> usize {
2319 16
2320 }
2321 }
2322
2323 unsafe impl
2324 fidl::encoding::Encode<
2325 ComponentControllerOnEscrowRequest,
2326 fidl::encoding::DefaultFuchsiaResourceDialect,
2327 > for &mut ComponentControllerOnEscrowRequest
2328 {
2329 unsafe fn encode(
2330 self,
2331 encoder: &mut fidl::encoding::Encoder<
2332 '_,
2333 fidl::encoding::DefaultFuchsiaResourceDialect,
2334 >,
2335 offset: usize,
2336 mut depth: fidl::encoding::Depth,
2337 ) -> fidl::Result<()> {
2338 encoder.debug_check_bounds::<ComponentControllerOnEscrowRequest>(offset);
2339 let max_ordinal: u64 = self.max_ordinal_present();
2341 encoder.write_num(max_ordinal, offset);
2342 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
2343 if max_ordinal == 0 {
2345 return Ok(());
2346 }
2347 depth.increment()?;
2348 let envelope_size = 8;
2349 let bytes_len = max_ordinal as usize * envelope_size;
2350 #[allow(unused_variables)]
2351 let offset = encoder.out_of_line_offset(bytes_len);
2352 let mut _prev_end_offset: usize = 0;
2353 if 1 > max_ordinal {
2354 return Ok(());
2355 }
2356
2357 let cur_offset: usize = (1 - 1) * envelope_size;
2360
2361 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2363
2364 fidl::encoding::encode_in_envelope_optional::<
2369 fidl::encoding::Endpoint<
2370 fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>,
2371 >,
2372 fidl::encoding::DefaultFuchsiaResourceDialect,
2373 >(
2374 self.outgoing_dir.as_mut().map(
2375 <fidl::encoding::Endpoint<
2376 fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>,
2377 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow,
2378 ),
2379 encoder,
2380 offset + cur_offset,
2381 depth,
2382 )?;
2383
2384 _prev_end_offset = cur_offset + envelope_size;
2385 if 2 > max_ordinal {
2386 return Ok(());
2387 }
2388
2389 let cur_offset: usize = (2 - 1) * envelope_size;
2392
2393 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2395
2396 fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_component_sandbox::DictionaryRef, fidl::encoding::DefaultFuchsiaResourceDialect>(
2401 self.escrowed_dictionary.as_mut().map(<fidl_fuchsia_component_sandbox::DictionaryRef as fidl::encoding::ResourceTypeMarker>::take_or_borrow),
2402 encoder, offset + cur_offset, depth
2403 )?;
2404
2405 _prev_end_offset = cur_offset + envelope_size;
2406
2407 Ok(())
2408 }
2409 }
2410
2411 impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
2412 for ComponentControllerOnEscrowRequest
2413 {
2414 #[inline(always)]
2415 fn new_empty() -> Self {
2416 Self::default()
2417 }
2418
2419 unsafe fn decode(
2420 &mut self,
2421 decoder: &mut fidl::encoding::Decoder<
2422 '_,
2423 fidl::encoding::DefaultFuchsiaResourceDialect,
2424 >,
2425 offset: usize,
2426 mut depth: fidl::encoding::Depth,
2427 ) -> fidl::Result<()> {
2428 decoder.debug_check_bounds::<Self>(offset);
2429 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
2430 None => return Err(fidl::Error::NotNullable),
2431 Some(len) => len,
2432 };
2433 if len == 0 {
2435 return Ok(());
2436 };
2437 depth.increment()?;
2438 let envelope_size = 8;
2439 let bytes_len = len * envelope_size;
2440 let offset = decoder.out_of_line_offset(bytes_len)?;
2441 let mut _next_ordinal_to_read = 0;
2443 let mut next_offset = offset;
2444 let end_offset = offset + bytes_len;
2445 _next_ordinal_to_read += 1;
2446 if next_offset >= end_offset {
2447 return Ok(());
2448 }
2449
2450 while _next_ordinal_to_read < 1 {
2452 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2453 _next_ordinal_to_read += 1;
2454 next_offset += envelope_size;
2455 }
2456
2457 let next_out_of_line = decoder.next_out_of_line();
2458 let handles_before = decoder.remaining_handles();
2459 if let Some((inlined, num_bytes, num_handles)) =
2460 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2461 {
2462 let member_inline_size = <fidl::encoding::Endpoint<
2463 fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>,
2464 > as fidl::encoding::TypeMarker>::inline_size(
2465 decoder.context
2466 );
2467 if inlined != (member_inline_size <= 4) {
2468 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2469 }
2470 let inner_offset;
2471 let mut inner_depth = depth.clone();
2472 if inlined {
2473 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2474 inner_offset = next_offset;
2475 } else {
2476 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2477 inner_depth.increment()?;
2478 }
2479 let val_ref = self.outgoing_dir.get_or_insert_with(|| {
2480 fidl::new_empty!(
2481 fidl::encoding::Endpoint<
2482 fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>,
2483 >,
2484 fidl::encoding::DefaultFuchsiaResourceDialect
2485 )
2486 });
2487 fidl::decode!(
2488 fidl::encoding::Endpoint<
2489 fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>,
2490 >,
2491 fidl::encoding::DefaultFuchsiaResourceDialect,
2492 val_ref,
2493 decoder,
2494 inner_offset,
2495 inner_depth
2496 )?;
2497 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2498 {
2499 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2500 }
2501 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2502 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2503 }
2504 }
2505
2506 next_offset += envelope_size;
2507 _next_ordinal_to_read += 1;
2508 if next_offset >= end_offset {
2509 return Ok(());
2510 }
2511
2512 while _next_ordinal_to_read < 2 {
2514 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2515 _next_ordinal_to_read += 1;
2516 next_offset += envelope_size;
2517 }
2518
2519 let next_out_of_line = decoder.next_out_of_line();
2520 let handles_before = decoder.remaining_handles();
2521 if let Some((inlined, num_bytes, num_handles)) =
2522 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2523 {
2524 let member_inline_size = <fidl_fuchsia_component_sandbox::DictionaryRef as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2525 if inlined != (member_inline_size <= 4) {
2526 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2527 }
2528 let inner_offset;
2529 let mut inner_depth = depth.clone();
2530 if inlined {
2531 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2532 inner_offset = next_offset;
2533 } else {
2534 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2535 inner_depth.increment()?;
2536 }
2537 let val_ref = self.escrowed_dictionary.get_or_insert_with(|| {
2538 fidl::new_empty!(
2539 fidl_fuchsia_component_sandbox::DictionaryRef,
2540 fidl::encoding::DefaultFuchsiaResourceDialect
2541 )
2542 });
2543 fidl::decode!(
2544 fidl_fuchsia_component_sandbox::DictionaryRef,
2545 fidl::encoding::DefaultFuchsiaResourceDialect,
2546 val_ref,
2547 decoder,
2548 inner_offset,
2549 inner_depth
2550 )?;
2551 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2552 {
2553 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2554 }
2555 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2556 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2557 }
2558 }
2559
2560 next_offset += envelope_size;
2561
2562 while next_offset < end_offset {
2564 _next_ordinal_to_read += 1;
2565 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2566 next_offset += envelope_size;
2567 }
2568
2569 Ok(())
2570 }
2571 }
2572
2573 impl ComponentDiagnostics {
2574 #[inline(always)]
2575 fn max_ordinal_present(&self) -> u64 {
2576 if let Some(_) = self.tasks {
2577 return 1;
2578 }
2579 0
2580 }
2581 }
2582
2583 impl fidl::encoding::ResourceTypeMarker for ComponentDiagnostics {
2584 type Borrowed<'a> = &'a mut Self;
2585 fn take_or_borrow<'a>(
2586 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
2587 ) -> Self::Borrowed<'a> {
2588 value
2589 }
2590 }
2591
2592 unsafe impl fidl::encoding::TypeMarker for ComponentDiagnostics {
2593 type Owned = Self;
2594
2595 #[inline(always)]
2596 fn inline_align(_context: fidl::encoding::Context) -> usize {
2597 8
2598 }
2599
2600 #[inline(always)]
2601 fn inline_size(_context: fidl::encoding::Context) -> usize {
2602 16
2603 }
2604 }
2605
2606 unsafe impl
2607 fidl::encoding::Encode<ComponentDiagnostics, fidl::encoding::DefaultFuchsiaResourceDialect>
2608 for &mut ComponentDiagnostics
2609 {
2610 unsafe fn encode(
2611 self,
2612 encoder: &mut fidl::encoding::Encoder<
2613 '_,
2614 fidl::encoding::DefaultFuchsiaResourceDialect,
2615 >,
2616 offset: usize,
2617 mut depth: fidl::encoding::Depth,
2618 ) -> fidl::Result<()> {
2619 encoder.debug_check_bounds::<ComponentDiagnostics>(offset);
2620 let max_ordinal: u64 = self.max_ordinal_present();
2622 encoder.write_num(max_ordinal, offset);
2623 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
2624 if max_ordinal == 0 {
2626 return Ok(());
2627 }
2628 depth.increment()?;
2629 let envelope_size = 8;
2630 let bytes_len = max_ordinal as usize * envelope_size;
2631 #[allow(unused_variables)]
2632 let offset = encoder.out_of_line_offset(bytes_len);
2633 let mut _prev_end_offset: usize = 0;
2634 if 1 > max_ordinal {
2635 return Ok(());
2636 }
2637
2638 let cur_offset: usize = (1 - 1) * envelope_size;
2641
2642 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2644
2645 fidl::encoding::encode_in_envelope_optional::<
2650 ComponentTasks,
2651 fidl::encoding::DefaultFuchsiaResourceDialect,
2652 >(
2653 self.tasks
2654 .as_mut()
2655 .map(<ComponentTasks as fidl::encoding::ResourceTypeMarker>::take_or_borrow),
2656 encoder,
2657 offset + cur_offset,
2658 depth,
2659 )?;
2660
2661 _prev_end_offset = cur_offset + envelope_size;
2662
2663 Ok(())
2664 }
2665 }
2666
2667 impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
2668 for ComponentDiagnostics
2669 {
2670 #[inline(always)]
2671 fn new_empty() -> Self {
2672 Self::default()
2673 }
2674
2675 unsafe fn decode(
2676 &mut self,
2677 decoder: &mut fidl::encoding::Decoder<
2678 '_,
2679 fidl::encoding::DefaultFuchsiaResourceDialect,
2680 >,
2681 offset: usize,
2682 mut depth: fidl::encoding::Depth,
2683 ) -> fidl::Result<()> {
2684 decoder.debug_check_bounds::<Self>(offset);
2685 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
2686 None => return Err(fidl::Error::NotNullable),
2687 Some(len) => len,
2688 };
2689 if len == 0 {
2691 return Ok(());
2692 };
2693 depth.increment()?;
2694 let envelope_size = 8;
2695 let bytes_len = len * envelope_size;
2696 let offset = decoder.out_of_line_offset(bytes_len)?;
2697 let mut _next_ordinal_to_read = 0;
2699 let mut next_offset = offset;
2700 let end_offset = offset + bytes_len;
2701 _next_ordinal_to_read += 1;
2702 if next_offset >= end_offset {
2703 return Ok(());
2704 }
2705
2706 while _next_ordinal_to_read < 1 {
2708 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2709 _next_ordinal_to_read += 1;
2710 next_offset += envelope_size;
2711 }
2712
2713 let next_out_of_line = decoder.next_out_of_line();
2714 let handles_before = decoder.remaining_handles();
2715 if let Some((inlined, num_bytes, num_handles)) =
2716 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2717 {
2718 let member_inline_size =
2719 <ComponentTasks as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2720 if inlined != (member_inline_size <= 4) {
2721 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2722 }
2723 let inner_offset;
2724 let mut inner_depth = depth.clone();
2725 if inlined {
2726 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2727 inner_offset = next_offset;
2728 } else {
2729 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2730 inner_depth.increment()?;
2731 }
2732 let val_ref = self.tasks.get_or_insert_with(|| {
2733 fidl::new_empty!(ComponentTasks, fidl::encoding::DefaultFuchsiaResourceDialect)
2734 });
2735 fidl::decode!(
2736 ComponentTasks,
2737 fidl::encoding::DefaultFuchsiaResourceDialect,
2738 val_ref,
2739 decoder,
2740 inner_offset,
2741 inner_depth
2742 )?;
2743 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2744 {
2745 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2746 }
2747 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2748 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2749 }
2750 }
2751
2752 next_offset += envelope_size;
2753
2754 while next_offset < end_offset {
2756 _next_ordinal_to_read += 1;
2757 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2758 next_offset += envelope_size;
2759 }
2760
2761 Ok(())
2762 }
2763 }
2764
2765 impl ComponentNamespaceEntry {
2766 #[inline(always)]
2767 fn max_ordinal_present(&self) -> u64 {
2768 if let Some(_) = self.directory {
2769 return 2;
2770 }
2771 if let Some(_) = self.path {
2772 return 1;
2773 }
2774 0
2775 }
2776 }
2777
2778 impl fidl::encoding::ResourceTypeMarker for ComponentNamespaceEntry {
2779 type Borrowed<'a> = &'a mut Self;
2780 fn take_or_borrow<'a>(
2781 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
2782 ) -> Self::Borrowed<'a> {
2783 value
2784 }
2785 }
2786
2787 unsafe impl fidl::encoding::TypeMarker for ComponentNamespaceEntry {
2788 type Owned = Self;
2789
2790 #[inline(always)]
2791 fn inline_align(_context: fidl::encoding::Context) -> usize {
2792 8
2793 }
2794
2795 #[inline(always)]
2796 fn inline_size(_context: fidl::encoding::Context) -> usize {
2797 16
2798 }
2799 }
2800
2801 unsafe impl
2802 fidl::encoding::Encode<
2803 ComponentNamespaceEntry,
2804 fidl::encoding::DefaultFuchsiaResourceDialect,
2805 > for &mut ComponentNamespaceEntry
2806 {
2807 unsafe fn encode(
2808 self,
2809 encoder: &mut fidl::encoding::Encoder<
2810 '_,
2811 fidl::encoding::DefaultFuchsiaResourceDialect,
2812 >,
2813 offset: usize,
2814 mut depth: fidl::encoding::Depth,
2815 ) -> fidl::Result<()> {
2816 encoder.debug_check_bounds::<ComponentNamespaceEntry>(offset);
2817 let max_ordinal: u64 = self.max_ordinal_present();
2819 encoder.write_num(max_ordinal, offset);
2820 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
2821 if max_ordinal == 0 {
2823 return Ok(());
2824 }
2825 depth.increment()?;
2826 let envelope_size = 8;
2827 let bytes_len = max_ordinal as usize * envelope_size;
2828 #[allow(unused_variables)]
2829 let offset = encoder.out_of_line_offset(bytes_len);
2830 let mut _prev_end_offset: usize = 0;
2831 if 1 > max_ordinal {
2832 return Ok(());
2833 }
2834
2835 let cur_offset: usize = (1 - 1) * envelope_size;
2838
2839 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2841
2842 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<4095>, fidl::encoding::DefaultFuchsiaResourceDialect>(
2847 self.path.as_ref().map(<fidl::encoding::BoundedString<4095> as fidl::encoding::ValueTypeMarker>::borrow),
2848 encoder, offset + cur_offset, depth
2849 )?;
2850
2851 _prev_end_offset = cur_offset + envelope_size;
2852 if 2 > max_ordinal {
2853 return Ok(());
2854 }
2855
2856 let cur_offset: usize = (2 - 1) * envelope_size;
2859
2860 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2862
2863 fidl::encoding::encode_in_envelope_optional::<
2868 fidl::encoding::Endpoint<
2869 fidl::endpoints::ClientEnd<fidl_fuchsia_io::DirectoryMarker>,
2870 >,
2871 fidl::encoding::DefaultFuchsiaResourceDialect,
2872 >(
2873 self.directory.as_mut().map(
2874 <fidl::encoding::Endpoint<
2875 fidl::endpoints::ClientEnd<fidl_fuchsia_io::DirectoryMarker>,
2876 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow,
2877 ),
2878 encoder,
2879 offset + cur_offset,
2880 depth,
2881 )?;
2882
2883 _prev_end_offset = cur_offset + envelope_size;
2884
2885 Ok(())
2886 }
2887 }
2888
2889 impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
2890 for ComponentNamespaceEntry
2891 {
2892 #[inline(always)]
2893 fn new_empty() -> Self {
2894 Self::default()
2895 }
2896
2897 unsafe fn decode(
2898 &mut self,
2899 decoder: &mut fidl::encoding::Decoder<
2900 '_,
2901 fidl::encoding::DefaultFuchsiaResourceDialect,
2902 >,
2903 offset: usize,
2904 mut depth: fidl::encoding::Depth,
2905 ) -> fidl::Result<()> {
2906 decoder.debug_check_bounds::<Self>(offset);
2907 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
2908 None => return Err(fidl::Error::NotNullable),
2909 Some(len) => len,
2910 };
2911 if len == 0 {
2913 return Ok(());
2914 };
2915 depth.increment()?;
2916 let envelope_size = 8;
2917 let bytes_len = len * envelope_size;
2918 let offset = decoder.out_of_line_offset(bytes_len)?;
2919 let mut _next_ordinal_to_read = 0;
2921 let mut next_offset = offset;
2922 let end_offset = offset + bytes_len;
2923 _next_ordinal_to_read += 1;
2924 if next_offset >= end_offset {
2925 return Ok(());
2926 }
2927
2928 while _next_ordinal_to_read < 1 {
2930 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2931 _next_ordinal_to_read += 1;
2932 next_offset += envelope_size;
2933 }
2934
2935 let next_out_of_line = decoder.next_out_of_line();
2936 let handles_before = decoder.remaining_handles();
2937 if let Some((inlined, num_bytes, num_handles)) =
2938 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2939 {
2940 let member_inline_size = <fidl::encoding::BoundedString<4095> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2941 if inlined != (member_inline_size <= 4) {
2942 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2943 }
2944 let inner_offset;
2945 let mut inner_depth = depth.clone();
2946 if inlined {
2947 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2948 inner_offset = next_offset;
2949 } else {
2950 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2951 inner_depth.increment()?;
2952 }
2953 let val_ref = self.path.get_or_insert_with(|| {
2954 fidl::new_empty!(
2955 fidl::encoding::BoundedString<4095>,
2956 fidl::encoding::DefaultFuchsiaResourceDialect
2957 )
2958 });
2959 fidl::decode!(
2960 fidl::encoding::BoundedString<4095>,
2961 fidl::encoding::DefaultFuchsiaResourceDialect,
2962 val_ref,
2963 decoder,
2964 inner_offset,
2965 inner_depth
2966 )?;
2967 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2968 {
2969 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2970 }
2971 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2972 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2973 }
2974 }
2975
2976 next_offset += envelope_size;
2977 _next_ordinal_to_read += 1;
2978 if next_offset >= end_offset {
2979 return Ok(());
2980 }
2981
2982 while _next_ordinal_to_read < 2 {
2984 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2985 _next_ordinal_to_read += 1;
2986 next_offset += envelope_size;
2987 }
2988
2989 let next_out_of_line = decoder.next_out_of_line();
2990 let handles_before = decoder.remaining_handles();
2991 if let Some((inlined, num_bytes, num_handles)) =
2992 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2993 {
2994 let member_inline_size = <fidl::encoding::Endpoint<
2995 fidl::endpoints::ClientEnd<fidl_fuchsia_io::DirectoryMarker>,
2996 > as fidl::encoding::TypeMarker>::inline_size(
2997 decoder.context
2998 );
2999 if inlined != (member_inline_size <= 4) {
3000 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3001 }
3002 let inner_offset;
3003 let mut inner_depth = depth.clone();
3004 if inlined {
3005 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3006 inner_offset = next_offset;
3007 } else {
3008 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3009 inner_depth.increment()?;
3010 }
3011 let val_ref = self.directory.get_or_insert_with(|| {
3012 fidl::new_empty!(
3013 fidl::encoding::Endpoint<
3014 fidl::endpoints::ClientEnd<fidl_fuchsia_io::DirectoryMarker>,
3015 >,
3016 fidl::encoding::DefaultFuchsiaResourceDialect
3017 )
3018 });
3019 fidl::decode!(
3020 fidl::encoding::Endpoint<
3021 fidl::endpoints::ClientEnd<fidl_fuchsia_io::DirectoryMarker>,
3022 >,
3023 fidl::encoding::DefaultFuchsiaResourceDialect,
3024 val_ref,
3025 decoder,
3026 inner_offset,
3027 inner_depth
3028 )?;
3029 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3030 {
3031 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3032 }
3033 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3034 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3035 }
3036 }
3037
3038 next_offset += envelope_size;
3039
3040 while next_offset < end_offset {
3042 _next_ordinal_to_read += 1;
3043 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3044 next_offset += envelope_size;
3045 }
3046
3047 Ok(())
3048 }
3049 }
3050
3051 impl ComponentStartInfo {
3052 #[inline(always)]
3053 fn max_ordinal_present(&self) -> u64 {
3054 if let Some(_) = self.escrowed_dictionary {
3055 return 10;
3056 }
3057 if let Some(_) = self.component_instance {
3058 return 9;
3059 }
3060 if let Some(_) = self.break_on_start {
3061 return 8;
3062 }
3063 if let Some(_) = self.encoded_config {
3064 return 7;
3065 }
3066 if let Some(_) = self.numbered_handles {
3067 return 6;
3068 }
3069 if let Some(_) = self.runtime_dir {
3070 return 5;
3071 }
3072 if let Some(_) = self.outgoing_dir {
3073 return 4;
3074 }
3075 if let Some(_) = self.ns {
3076 return 3;
3077 }
3078 if let Some(_) = self.program {
3079 return 2;
3080 }
3081 if let Some(_) = self.resolved_url {
3082 return 1;
3083 }
3084 0
3085 }
3086 }
3087
3088 impl fidl::encoding::ResourceTypeMarker for ComponentStartInfo {
3089 type Borrowed<'a> = &'a mut Self;
3090 fn take_or_borrow<'a>(
3091 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
3092 ) -> Self::Borrowed<'a> {
3093 value
3094 }
3095 }
3096
3097 unsafe impl fidl::encoding::TypeMarker for ComponentStartInfo {
3098 type Owned = Self;
3099
3100 #[inline(always)]
3101 fn inline_align(_context: fidl::encoding::Context) -> usize {
3102 8
3103 }
3104
3105 #[inline(always)]
3106 fn inline_size(_context: fidl::encoding::Context) -> usize {
3107 16
3108 }
3109 }
3110
3111 unsafe impl
3112 fidl::encoding::Encode<ComponentStartInfo, fidl::encoding::DefaultFuchsiaResourceDialect>
3113 for &mut ComponentStartInfo
3114 {
3115 unsafe fn encode(
3116 self,
3117 encoder: &mut fidl::encoding::Encoder<
3118 '_,
3119 fidl::encoding::DefaultFuchsiaResourceDialect,
3120 >,
3121 offset: usize,
3122 mut depth: fidl::encoding::Depth,
3123 ) -> fidl::Result<()> {
3124 encoder.debug_check_bounds::<ComponentStartInfo>(offset);
3125 let max_ordinal: u64 = self.max_ordinal_present();
3127 encoder.write_num(max_ordinal, offset);
3128 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
3129 if max_ordinal == 0 {
3131 return Ok(());
3132 }
3133 depth.increment()?;
3134 let envelope_size = 8;
3135 let bytes_len = max_ordinal as usize * envelope_size;
3136 #[allow(unused_variables)]
3137 let offset = encoder.out_of_line_offset(bytes_len);
3138 let mut _prev_end_offset: usize = 0;
3139 if 1 > max_ordinal {
3140 return Ok(());
3141 }
3142
3143 let cur_offset: usize = (1 - 1) * envelope_size;
3146
3147 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3149
3150 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<4096>, fidl::encoding::DefaultFuchsiaResourceDialect>(
3155 self.resolved_url.as_ref().map(<fidl::encoding::BoundedString<4096> as fidl::encoding::ValueTypeMarker>::borrow),
3156 encoder, offset + cur_offset, depth
3157 )?;
3158
3159 _prev_end_offset = cur_offset + envelope_size;
3160 if 2 > max_ordinal {
3161 return Ok(());
3162 }
3163
3164 let cur_offset: usize = (2 - 1) * envelope_size;
3167
3168 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3170
3171 fidl::encoding::encode_in_envelope_optional::<
3176 fidl_fuchsia_data::Dictionary,
3177 fidl::encoding::DefaultFuchsiaResourceDialect,
3178 >(
3179 self.program.as_ref().map(
3180 <fidl_fuchsia_data::Dictionary as fidl::encoding::ValueTypeMarker>::borrow,
3181 ),
3182 encoder,
3183 offset + cur_offset,
3184 depth,
3185 )?;
3186
3187 _prev_end_offset = cur_offset + envelope_size;
3188 if 3 > max_ordinal {
3189 return Ok(());
3190 }
3191
3192 let cur_offset: usize = (3 - 1) * envelope_size;
3195
3196 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3198
3199 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<ComponentNamespaceEntry, 32>, fidl::encoding::DefaultFuchsiaResourceDialect>(
3204 self.ns.as_mut().map(<fidl::encoding::Vector<ComponentNamespaceEntry, 32> as fidl::encoding::ResourceTypeMarker>::take_or_borrow),
3205 encoder, offset + cur_offset, depth
3206 )?;
3207
3208 _prev_end_offset = cur_offset + envelope_size;
3209 if 4 > max_ordinal {
3210 return Ok(());
3211 }
3212
3213 let cur_offset: usize = (4 - 1) * envelope_size;
3216
3217 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3219
3220 fidl::encoding::encode_in_envelope_optional::<
3225 fidl::encoding::Endpoint<
3226 fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>,
3227 >,
3228 fidl::encoding::DefaultFuchsiaResourceDialect,
3229 >(
3230 self.outgoing_dir.as_mut().map(
3231 <fidl::encoding::Endpoint<
3232 fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>,
3233 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow,
3234 ),
3235 encoder,
3236 offset + cur_offset,
3237 depth,
3238 )?;
3239
3240 _prev_end_offset = cur_offset + envelope_size;
3241 if 5 > max_ordinal {
3242 return Ok(());
3243 }
3244
3245 let cur_offset: usize = (5 - 1) * envelope_size;
3248
3249 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3251
3252 fidl::encoding::encode_in_envelope_optional::<
3257 fidl::encoding::Endpoint<
3258 fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>,
3259 >,
3260 fidl::encoding::DefaultFuchsiaResourceDialect,
3261 >(
3262 self.runtime_dir.as_mut().map(
3263 <fidl::encoding::Endpoint<
3264 fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>,
3265 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow,
3266 ),
3267 encoder,
3268 offset + cur_offset,
3269 depth,
3270 )?;
3271
3272 _prev_end_offset = cur_offset + envelope_size;
3273 if 6 > max_ordinal {
3274 return Ok(());
3275 }
3276
3277 let cur_offset: usize = (6 - 1) * envelope_size;
3280
3281 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3283
3284 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<fidl_fuchsia_process::HandleInfo, 128>, fidl::encoding::DefaultFuchsiaResourceDialect>(
3289 self.numbered_handles.as_mut().map(<fidl::encoding::Vector<fidl_fuchsia_process::HandleInfo, 128> as fidl::encoding::ResourceTypeMarker>::take_or_borrow),
3290 encoder, offset + cur_offset, depth
3291 )?;
3292
3293 _prev_end_offset = cur_offset + envelope_size;
3294 if 7 > max_ordinal {
3295 return Ok(());
3296 }
3297
3298 let cur_offset: usize = (7 - 1) * envelope_size;
3301
3302 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3304
3305 fidl::encoding::encode_in_envelope_optional::<
3310 fidl_fuchsia_mem::Data,
3311 fidl::encoding::DefaultFuchsiaResourceDialect,
3312 >(
3313 self.encoded_config.as_mut().map(
3314 <fidl_fuchsia_mem::Data as fidl::encoding::ResourceTypeMarker>::take_or_borrow,
3315 ),
3316 encoder,
3317 offset + cur_offset,
3318 depth,
3319 )?;
3320
3321 _prev_end_offset = cur_offset + envelope_size;
3322 if 8 > max_ordinal {
3323 return Ok(());
3324 }
3325
3326 let cur_offset: usize = (8 - 1) * envelope_size;
3329
3330 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3332
3333 fidl::encoding::encode_in_envelope_optional::<
3338 fidl::encoding::HandleType<
3339 fidl::EventPair,
3340 { fidl::ObjectType::EVENTPAIR.into_raw() },
3341 2147483648,
3342 >,
3343 fidl::encoding::DefaultFuchsiaResourceDialect,
3344 >(
3345 self.break_on_start.as_mut().map(
3346 <fidl::encoding::HandleType<
3347 fidl::EventPair,
3348 { fidl::ObjectType::EVENTPAIR.into_raw() },
3349 2147483648,
3350 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow,
3351 ),
3352 encoder,
3353 offset + cur_offset,
3354 depth,
3355 )?;
3356
3357 _prev_end_offset = cur_offset + envelope_size;
3358 if 9 > max_ordinal {
3359 return Ok(());
3360 }
3361
3362 let cur_offset: usize = (9 - 1) * envelope_size;
3365
3366 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3368
3369 fidl::encoding::encode_in_envelope_optional::<
3374 fidl::encoding::HandleType<
3375 fidl::Event,
3376 { fidl::ObjectType::EVENT.into_raw() },
3377 2147483648,
3378 >,
3379 fidl::encoding::DefaultFuchsiaResourceDialect,
3380 >(
3381 self.component_instance.as_mut().map(
3382 <fidl::encoding::HandleType<
3383 fidl::Event,
3384 { fidl::ObjectType::EVENT.into_raw() },
3385 2147483648,
3386 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow,
3387 ),
3388 encoder,
3389 offset + cur_offset,
3390 depth,
3391 )?;
3392
3393 _prev_end_offset = cur_offset + envelope_size;
3394 if 10 > max_ordinal {
3395 return Ok(());
3396 }
3397
3398 let cur_offset: usize = (10 - 1) * envelope_size;
3401
3402 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3404
3405 fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_component_sandbox::DictionaryRef, fidl::encoding::DefaultFuchsiaResourceDialect>(
3410 self.escrowed_dictionary.as_mut().map(<fidl_fuchsia_component_sandbox::DictionaryRef as fidl::encoding::ResourceTypeMarker>::take_or_borrow),
3411 encoder, offset + cur_offset, depth
3412 )?;
3413
3414 _prev_end_offset = cur_offset + envelope_size;
3415
3416 Ok(())
3417 }
3418 }
3419
3420 impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
3421 for ComponentStartInfo
3422 {
3423 #[inline(always)]
3424 fn new_empty() -> Self {
3425 Self::default()
3426 }
3427
3428 unsafe fn decode(
3429 &mut self,
3430 decoder: &mut fidl::encoding::Decoder<
3431 '_,
3432 fidl::encoding::DefaultFuchsiaResourceDialect,
3433 >,
3434 offset: usize,
3435 mut depth: fidl::encoding::Depth,
3436 ) -> fidl::Result<()> {
3437 decoder.debug_check_bounds::<Self>(offset);
3438 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
3439 None => return Err(fidl::Error::NotNullable),
3440 Some(len) => len,
3441 };
3442 if len == 0 {
3444 return Ok(());
3445 };
3446 depth.increment()?;
3447 let envelope_size = 8;
3448 let bytes_len = len * envelope_size;
3449 let offset = decoder.out_of_line_offset(bytes_len)?;
3450 let mut _next_ordinal_to_read = 0;
3452 let mut next_offset = offset;
3453 let end_offset = offset + bytes_len;
3454 _next_ordinal_to_read += 1;
3455 if next_offset >= end_offset {
3456 return Ok(());
3457 }
3458
3459 while _next_ordinal_to_read < 1 {
3461 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3462 _next_ordinal_to_read += 1;
3463 next_offset += envelope_size;
3464 }
3465
3466 let next_out_of_line = decoder.next_out_of_line();
3467 let handles_before = decoder.remaining_handles();
3468 if let Some((inlined, num_bytes, num_handles)) =
3469 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3470 {
3471 let member_inline_size = <fidl::encoding::BoundedString<4096> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3472 if inlined != (member_inline_size <= 4) {
3473 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3474 }
3475 let inner_offset;
3476 let mut inner_depth = depth.clone();
3477 if inlined {
3478 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3479 inner_offset = next_offset;
3480 } else {
3481 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3482 inner_depth.increment()?;
3483 }
3484 let val_ref = self.resolved_url.get_or_insert_with(|| {
3485 fidl::new_empty!(
3486 fidl::encoding::BoundedString<4096>,
3487 fidl::encoding::DefaultFuchsiaResourceDialect
3488 )
3489 });
3490 fidl::decode!(
3491 fidl::encoding::BoundedString<4096>,
3492 fidl::encoding::DefaultFuchsiaResourceDialect,
3493 val_ref,
3494 decoder,
3495 inner_offset,
3496 inner_depth
3497 )?;
3498 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3499 {
3500 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3501 }
3502 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3503 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3504 }
3505 }
3506
3507 next_offset += envelope_size;
3508 _next_ordinal_to_read += 1;
3509 if next_offset >= end_offset {
3510 return Ok(());
3511 }
3512
3513 while _next_ordinal_to_read < 2 {
3515 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3516 _next_ordinal_to_read += 1;
3517 next_offset += envelope_size;
3518 }
3519
3520 let next_out_of_line = decoder.next_out_of_line();
3521 let handles_before = decoder.remaining_handles();
3522 if let Some((inlined, num_bytes, num_handles)) =
3523 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3524 {
3525 let member_inline_size =
3526 <fidl_fuchsia_data::Dictionary as fidl::encoding::TypeMarker>::inline_size(
3527 decoder.context,
3528 );
3529 if inlined != (member_inline_size <= 4) {
3530 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3531 }
3532 let inner_offset;
3533 let mut inner_depth = depth.clone();
3534 if inlined {
3535 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3536 inner_offset = next_offset;
3537 } else {
3538 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3539 inner_depth.increment()?;
3540 }
3541 let val_ref = self.program.get_or_insert_with(|| {
3542 fidl::new_empty!(
3543 fidl_fuchsia_data::Dictionary,
3544 fidl::encoding::DefaultFuchsiaResourceDialect
3545 )
3546 });
3547 fidl::decode!(
3548 fidl_fuchsia_data::Dictionary,
3549 fidl::encoding::DefaultFuchsiaResourceDialect,
3550 val_ref,
3551 decoder,
3552 inner_offset,
3553 inner_depth
3554 )?;
3555 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3556 {
3557 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3558 }
3559 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3560 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3561 }
3562 }
3563
3564 next_offset += envelope_size;
3565 _next_ordinal_to_read += 1;
3566 if next_offset >= end_offset {
3567 return Ok(());
3568 }
3569
3570 while _next_ordinal_to_read < 3 {
3572 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3573 _next_ordinal_to_read += 1;
3574 next_offset += envelope_size;
3575 }
3576
3577 let next_out_of_line = decoder.next_out_of_line();
3578 let handles_before = decoder.remaining_handles();
3579 if let Some((inlined, num_bytes, num_handles)) =
3580 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3581 {
3582 let member_inline_size = <fidl::encoding::Vector<ComponentNamespaceEntry, 32> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3583 if inlined != (member_inline_size <= 4) {
3584 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3585 }
3586 let inner_offset;
3587 let mut inner_depth = depth.clone();
3588 if inlined {
3589 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3590 inner_offset = next_offset;
3591 } else {
3592 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3593 inner_depth.increment()?;
3594 }
3595 let val_ref =
3596 self.ns.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<ComponentNamespaceEntry, 32>, fidl::encoding::DefaultFuchsiaResourceDialect));
3597 fidl::decode!(fidl::encoding::Vector<ComponentNamespaceEntry, 32>, fidl::encoding::DefaultFuchsiaResourceDialect, val_ref, decoder, inner_offset, inner_depth)?;
3598 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3599 {
3600 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3601 }
3602 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3603 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3604 }
3605 }
3606
3607 next_offset += envelope_size;
3608 _next_ordinal_to_read += 1;
3609 if next_offset >= end_offset {
3610 return Ok(());
3611 }
3612
3613 while _next_ordinal_to_read < 4 {
3615 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3616 _next_ordinal_to_read += 1;
3617 next_offset += envelope_size;
3618 }
3619
3620 let next_out_of_line = decoder.next_out_of_line();
3621 let handles_before = decoder.remaining_handles();
3622 if let Some((inlined, num_bytes, num_handles)) =
3623 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3624 {
3625 let member_inline_size = <fidl::encoding::Endpoint<
3626 fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>,
3627 > as fidl::encoding::TypeMarker>::inline_size(
3628 decoder.context
3629 );
3630 if inlined != (member_inline_size <= 4) {
3631 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3632 }
3633 let inner_offset;
3634 let mut inner_depth = depth.clone();
3635 if inlined {
3636 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3637 inner_offset = next_offset;
3638 } else {
3639 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3640 inner_depth.increment()?;
3641 }
3642 let val_ref = self.outgoing_dir.get_or_insert_with(|| {
3643 fidl::new_empty!(
3644 fidl::encoding::Endpoint<
3645 fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>,
3646 >,
3647 fidl::encoding::DefaultFuchsiaResourceDialect
3648 )
3649 });
3650 fidl::decode!(
3651 fidl::encoding::Endpoint<
3652 fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>,
3653 >,
3654 fidl::encoding::DefaultFuchsiaResourceDialect,
3655 val_ref,
3656 decoder,
3657 inner_offset,
3658 inner_depth
3659 )?;
3660 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3661 {
3662 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3663 }
3664 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3665 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3666 }
3667 }
3668
3669 next_offset += envelope_size;
3670 _next_ordinal_to_read += 1;
3671 if next_offset >= end_offset {
3672 return Ok(());
3673 }
3674
3675 while _next_ordinal_to_read < 5 {
3677 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3678 _next_ordinal_to_read += 1;
3679 next_offset += envelope_size;
3680 }
3681
3682 let next_out_of_line = decoder.next_out_of_line();
3683 let handles_before = decoder.remaining_handles();
3684 if let Some((inlined, num_bytes, num_handles)) =
3685 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3686 {
3687 let member_inline_size = <fidl::encoding::Endpoint<
3688 fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>,
3689 > as fidl::encoding::TypeMarker>::inline_size(
3690 decoder.context
3691 );
3692 if inlined != (member_inline_size <= 4) {
3693 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3694 }
3695 let inner_offset;
3696 let mut inner_depth = depth.clone();
3697 if inlined {
3698 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3699 inner_offset = next_offset;
3700 } else {
3701 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3702 inner_depth.increment()?;
3703 }
3704 let val_ref = self.runtime_dir.get_or_insert_with(|| {
3705 fidl::new_empty!(
3706 fidl::encoding::Endpoint<
3707 fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>,
3708 >,
3709 fidl::encoding::DefaultFuchsiaResourceDialect
3710 )
3711 });
3712 fidl::decode!(
3713 fidl::encoding::Endpoint<
3714 fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>,
3715 >,
3716 fidl::encoding::DefaultFuchsiaResourceDialect,
3717 val_ref,
3718 decoder,
3719 inner_offset,
3720 inner_depth
3721 )?;
3722 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3723 {
3724 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3725 }
3726 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3727 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3728 }
3729 }
3730
3731 next_offset += envelope_size;
3732 _next_ordinal_to_read += 1;
3733 if next_offset >= end_offset {
3734 return Ok(());
3735 }
3736
3737 while _next_ordinal_to_read < 6 {
3739 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3740 _next_ordinal_to_read += 1;
3741 next_offset += envelope_size;
3742 }
3743
3744 let next_out_of_line = decoder.next_out_of_line();
3745 let handles_before = decoder.remaining_handles();
3746 if let Some((inlined, num_bytes, num_handles)) =
3747 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3748 {
3749 let member_inline_size = <fidl::encoding::Vector<
3750 fidl_fuchsia_process::HandleInfo,
3751 128,
3752 > as fidl::encoding::TypeMarker>::inline_size(
3753 decoder.context
3754 );
3755 if inlined != (member_inline_size <= 4) {
3756 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3757 }
3758 let inner_offset;
3759 let mut inner_depth = depth.clone();
3760 if inlined {
3761 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3762 inner_offset = next_offset;
3763 } else {
3764 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3765 inner_depth.increment()?;
3766 }
3767 let val_ref =
3768 self.numbered_handles.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<fidl_fuchsia_process::HandleInfo, 128>, fidl::encoding::DefaultFuchsiaResourceDialect));
3769 fidl::decode!(fidl::encoding::Vector<fidl_fuchsia_process::HandleInfo, 128>, fidl::encoding::DefaultFuchsiaResourceDialect, val_ref, decoder, inner_offset, inner_depth)?;
3770 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3771 {
3772 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3773 }
3774 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3775 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3776 }
3777 }
3778
3779 next_offset += envelope_size;
3780 _next_ordinal_to_read += 1;
3781 if next_offset >= end_offset {
3782 return Ok(());
3783 }
3784
3785 while _next_ordinal_to_read < 7 {
3787 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3788 _next_ordinal_to_read += 1;
3789 next_offset += envelope_size;
3790 }
3791
3792 let next_out_of_line = decoder.next_out_of_line();
3793 let handles_before = decoder.remaining_handles();
3794 if let Some((inlined, num_bytes, num_handles)) =
3795 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3796 {
3797 let member_inline_size =
3798 <fidl_fuchsia_mem::Data as fidl::encoding::TypeMarker>::inline_size(
3799 decoder.context,
3800 );
3801 if inlined != (member_inline_size <= 4) {
3802 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3803 }
3804 let inner_offset;
3805 let mut inner_depth = depth.clone();
3806 if inlined {
3807 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3808 inner_offset = next_offset;
3809 } else {
3810 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3811 inner_depth.increment()?;
3812 }
3813 let val_ref = self.encoded_config.get_or_insert_with(|| {
3814 fidl::new_empty!(
3815 fidl_fuchsia_mem::Data,
3816 fidl::encoding::DefaultFuchsiaResourceDialect
3817 )
3818 });
3819 fidl::decode!(
3820 fidl_fuchsia_mem::Data,
3821 fidl::encoding::DefaultFuchsiaResourceDialect,
3822 val_ref,
3823 decoder,
3824 inner_offset,
3825 inner_depth
3826 )?;
3827 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3828 {
3829 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3830 }
3831 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3832 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3833 }
3834 }
3835
3836 next_offset += envelope_size;
3837 _next_ordinal_to_read += 1;
3838 if next_offset >= end_offset {
3839 return Ok(());
3840 }
3841
3842 while _next_ordinal_to_read < 8 {
3844 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3845 _next_ordinal_to_read += 1;
3846 next_offset += envelope_size;
3847 }
3848
3849 let next_out_of_line = decoder.next_out_of_line();
3850 let handles_before = decoder.remaining_handles();
3851 if let Some((inlined, num_bytes, num_handles)) =
3852 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3853 {
3854 let member_inline_size = <fidl::encoding::HandleType<
3855 fidl::EventPair,
3856 { fidl::ObjectType::EVENTPAIR.into_raw() },
3857 2147483648,
3858 > as fidl::encoding::TypeMarker>::inline_size(
3859 decoder.context
3860 );
3861 if inlined != (member_inline_size <= 4) {
3862 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3863 }
3864 let inner_offset;
3865 let mut inner_depth = depth.clone();
3866 if inlined {
3867 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3868 inner_offset = next_offset;
3869 } else {
3870 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3871 inner_depth.increment()?;
3872 }
3873 let val_ref =
3874 self.break_on_start.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::HandleType<fidl::EventPair, { fidl::ObjectType::EVENTPAIR.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect));
3875 fidl::decode!(fidl::encoding::HandleType<fidl::EventPair, { fidl::ObjectType::EVENTPAIR.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect, val_ref, decoder, inner_offset, inner_depth)?;
3876 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3877 {
3878 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3879 }
3880 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3881 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3882 }
3883 }
3884
3885 next_offset += envelope_size;
3886 _next_ordinal_to_read += 1;
3887 if next_offset >= end_offset {
3888 return Ok(());
3889 }
3890
3891 while _next_ordinal_to_read < 9 {
3893 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3894 _next_ordinal_to_read += 1;
3895 next_offset += envelope_size;
3896 }
3897
3898 let next_out_of_line = decoder.next_out_of_line();
3899 let handles_before = decoder.remaining_handles();
3900 if let Some((inlined, num_bytes, num_handles)) =
3901 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3902 {
3903 let member_inline_size = <fidl::encoding::HandleType<
3904 fidl::Event,
3905 { fidl::ObjectType::EVENT.into_raw() },
3906 2147483648,
3907 > as fidl::encoding::TypeMarker>::inline_size(
3908 decoder.context
3909 );
3910 if inlined != (member_inline_size <= 4) {
3911 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3912 }
3913 let inner_offset;
3914 let mut inner_depth = depth.clone();
3915 if inlined {
3916 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3917 inner_offset = next_offset;
3918 } else {
3919 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3920 inner_depth.increment()?;
3921 }
3922 let val_ref =
3923 self.component_instance.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::HandleType<fidl::Event, { fidl::ObjectType::EVENT.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect));
3924 fidl::decode!(fidl::encoding::HandleType<fidl::Event, { fidl::ObjectType::EVENT.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect, val_ref, decoder, inner_offset, inner_depth)?;
3925 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3926 {
3927 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3928 }
3929 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3930 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3931 }
3932 }
3933
3934 next_offset += envelope_size;
3935 _next_ordinal_to_read += 1;
3936 if next_offset >= end_offset {
3937 return Ok(());
3938 }
3939
3940 while _next_ordinal_to_read < 10 {
3942 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3943 _next_ordinal_to_read += 1;
3944 next_offset += envelope_size;
3945 }
3946
3947 let next_out_of_line = decoder.next_out_of_line();
3948 let handles_before = decoder.remaining_handles();
3949 if let Some((inlined, num_bytes, num_handles)) =
3950 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3951 {
3952 let member_inline_size = <fidl_fuchsia_component_sandbox::DictionaryRef as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3953 if inlined != (member_inline_size <= 4) {
3954 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3955 }
3956 let inner_offset;
3957 let mut inner_depth = depth.clone();
3958 if inlined {
3959 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3960 inner_offset = next_offset;
3961 } else {
3962 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3963 inner_depth.increment()?;
3964 }
3965 let val_ref = self.escrowed_dictionary.get_or_insert_with(|| {
3966 fidl::new_empty!(
3967 fidl_fuchsia_component_sandbox::DictionaryRef,
3968 fidl::encoding::DefaultFuchsiaResourceDialect
3969 )
3970 });
3971 fidl::decode!(
3972 fidl_fuchsia_component_sandbox::DictionaryRef,
3973 fidl::encoding::DefaultFuchsiaResourceDialect,
3974 val_ref,
3975 decoder,
3976 inner_offset,
3977 inner_depth
3978 )?;
3979 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3980 {
3981 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3982 }
3983 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3984 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3985 }
3986 }
3987
3988 next_offset += envelope_size;
3989
3990 while next_offset < end_offset {
3992 _next_ordinal_to_read += 1;
3993 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3994 next_offset += envelope_size;
3995 }
3996
3997 Ok(())
3998 }
3999 }
4000
4001 impl ComponentStopInfo {
4002 #[inline(always)]
4003 fn max_ordinal_present(&self) -> u64 {
4004 if let Some(_) = self.exit_code {
4005 return 2;
4006 }
4007 if let Some(_) = self.termination_status {
4008 return 1;
4009 }
4010 0
4011 }
4012 }
4013
4014 impl fidl::encoding::ResourceTypeMarker for ComponentStopInfo {
4015 type Borrowed<'a> = &'a mut Self;
4016 fn take_or_borrow<'a>(
4017 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
4018 ) -> Self::Borrowed<'a> {
4019 value
4020 }
4021 }
4022
4023 unsafe impl fidl::encoding::TypeMarker for ComponentStopInfo {
4024 type Owned = Self;
4025
4026 #[inline(always)]
4027 fn inline_align(_context: fidl::encoding::Context) -> usize {
4028 8
4029 }
4030
4031 #[inline(always)]
4032 fn inline_size(_context: fidl::encoding::Context) -> usize {
4033 16
4034 }
4035 }
4036
4037 unsafe impl
4038 fidl::encoding::Encode<ComponentStopInfo, fidl::encoding::DefaultFuchsiaResourceDialect>
4039 for &mut ComponentStopInfo
4040 {
4041 unsafe fn encode(
4042 self,
4043 encoder: &mut fidl::encoding::Encoder<
4044 '_,
4045 fidl::encoding::DefaultFuchsiaResourceDialect,
4046 >,
4047 offset: usize,
4048 mut depth: fidl::encoding::Depth,
4049 ) -> fidl::Result<()> {
4050 encoder.debug_check_bounds::<ComponentStopInfo>(offset);
4051 let max_ordinal: u64 = self.max_ordinal_present();
4053 encoder.write_num(max_ordinal, offset);
4054 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
4055 if max_ordinal == 0 {
4057 return Ok(());
4058 }
4059 depth.increment()?;
4060 let envelope_size = 8;
4061 let bytes_len = max_ordinal as usize * envelope_size;
4062 #[allow(unused_variables)]
4063 let offset = encoder.out_of_line_offset(bytes_len);
4064 let mut _prev_end_offset: usize = 0;
4065 if 1 > max_ordinal {
4066 return Ok(());
4067 }
4068
4069 let cur_offset: usize = (1 - 1) * envelope_size;
4072
4073 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4075
4076 fidl::encoding::encode_in_envelope_optional::<
4081 i32,
4082 fidl::encoding::DefaultFuchsiaResourceDialect,
4083 >(
4084 self.termination_status
4085 .as_ref()
4086 .map(<i32 as fidl::encoding::ValueTypeMarker>::borrow),
4087 encoder,
4088 offset + cur_offset,
4089 depth,
4090 )?;
4091
4092 _prev_end_offset = cur_offset + envelope_size;
4093 if 2 > max_ordinal {
4094 return Ok(());
4095 }
4096
4097 let cur_offset: usize = (2 - 1) * envelope_size;
4100
4101 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4103
4104 fidl::encoding::encode_in_envelope_optional::<
4109 i64,
4110 fidl::encoding::DefaultFuchsiaResourceDialect,
4111 >(
4112 self.exit_code.as_ref().map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
4113 encoder,
4114 offset + cur_offset,
4115 depth,
4116 )?;
4117
4118 _prev_end_offset = cur_offset + envelope_size;
4119
4120 Ok(())
4121 }
4122 }
4123
4124 impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
4125 for ComponentStopInfo
4126 {
4127 #[inline(always)]
4128 fn new_empty() -> Self {
4129 Self::default()
4130 }
4131
4132 unsafe fn decode(
4133 &mut self,
4134 decoder: &mut fidl::encoding::Decoder<
4135 '_,
4136 fidl::encoding::DefaultFuchsiaResourceDialect,
4137 >,
4138 offset: usize,
4139 mut depth: fidl::encoding::Depth,
4140 ) -> fidl::Result<()> {
4141 decoder.debug_check_bounds::<Self>(offset);
4142 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
4143 None => return Err(fidl::Error::NotNullable),
4144 Some(len) => len,
4145 };
4146 if len == 0 {
4148 return Ok(());
4149 };
4150 depth.increment()?;
4151 let envelope_size = 8;
4152 let bytes_len = len * envelope_size;
4153 let offset = decoder.out_of_line_offset(bytes_len)?;
4154 let mut _next_ordinal_to_read = 0;
4156 let mut next_offset = offset;
4157 let end_offset = offset + bytes_len;
4158 _next_ordinal_to_read += 1;
4159 if next_offset >= end_offset {
4160 return Ok(());
4161 }
4162
4163 while _next_ordinal_to_read < 1 {
4165 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4166 _next_ordinal_to_read += 1;
4167 next_offset += envelope_size;
4168 }
4169
4170 let next_out_of_line = decoder.next_out_of_line();
4171 let handles_before = decoder.remaining_handles();
4172 if let Some((inlined, num_bytes, num_handles)) =
4173 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4174 {
4175 let member_inline_size =
4176 <i32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4177 if inlined != (member_inline_size <= 4) {
4178 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4179 }
4180 let inner_offset;
4181 let mut inner_depth = depth.clone();
4182 if inlined {
4183 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4184 inner_offset = next_offset;
4185 } else {
4186 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4187 inner_depth.increment()?;
4188 }
4189 let val_ref = self.termination_status.get_or_insert_with(|| {
4190 fidl::new_empty!(i32, fidl::encoding::DefaultFuchsiaResourceDialect)
4191 });
4192 fidl::decode!(
4193 i32,
4194 fidl::encoding::DefaultFuchsiaResourceDialect,
4195 val_ref,
4196 decoder,
4197 inner_offset,
4198 inner_depth
4199 )?;
4200 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4201 {
4202 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4203 }
4204 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4205 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4206 }
4207 }
4208
4209 next_offset += envelope_size;
4210 _next_ordinal_to_read += 1;
4211 if next_offset >= end_offset {
4212 return Ok(());
4213 }
4214
4215 while _next_ordinal_to_read < 2 {
4217 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4218 _next_ordinal_to_read += 1;
4219 next_offset += envelope_size;
4220 }
4221
4222 let next_out_of_line = decoder.next_out_of_line();
4223 let handles_before = decoder.remaining_handles();
4224 if let Some((inlined, num_bytes, num_handles)) =
4225 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4226 {
4227 let member_inline_size =
4228 <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4229 if inlined != (member_inline_size <= 4) {
4230 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4231 }
4232 let inner_offset;
4233 let mut inner_depth = depth.clone();
4234 if inlined {
4235 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4236 inner_offset = next_offset;
4237 } else {
4238 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4239 inner_depth.increment()?;
4240 }
4241 let val_ref = self.exit_code.get_or_insert_with(|| {
4242 fidl::new_empty!(i64, fidl::encoding::DefaultFuchsiaResourceDialect)
4243 });
4244 fidl::decode!(
4245 i64,
4246 fidl::encoding::DefaultFuchsiaResourceDialect,
4247 val_ref,
4248 decoder,
4249 inner_offset,
4250 inner_depth
4251 )?;
4252 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4253 {
4254 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4255 }
4256 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4257 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4258 }
4259 }
4260
4261 next_offset += envelope_size;
4262
4263 while next_offset < end_offset {
4265 _next_ordinal_to_read += 1;
4266 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4267 next_offset += envelope_size;
4268 }
4269
4270 Ok(())
4271 }
4272 }
4273
4274 impl ComponentTasks {
4275 #[inline(always)]
4276 fn max_ordinal_present(&self) -> u64 {
4277 if let Some(_) = self.parent_task {
4278 return 2;
4279 }
4280 if let Some(_) = self.component_task {
4281 return 1;
4282 }
4283 0
4284 }
4285 }
4286
4287 impl fidl::encoding::ResourceTypeMarker for ComponentTasks {
4288 type Borrowed<'a> = &'a mut Self;
4289 fn take_or_borrow<'a>(
4290 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
4291 ) -> Self::Borrowed<'a> {
4292 value
4293 }
4294 }
4295
4296 unsafe impl fidl::encoding::TypeMarker for ComponentTasks {
4297 type Owned = Self;
4298
4299 #[inline(always)]
4300 fn inline_align(_context: fidl::encoding::Context) -> usize {
4301 8
4302 }
4303
4304 #[inline(always)]
4305 fn inline_size(_context: fidl::encoding::Context) -> usize {
4306 16
4307 }
4308 }
4309
4310 unsafe impl
4311 fidl::encoding::Encode<ComponentTasks, fidl::encoding::DefaultFuchsiaResourceDialect>
4312 for &mut ComponentTasks
4313 {
4314 unsafe fn encode(
4315 self,
4316 encoder: &mut fidl::encoding::Encoder<
4317 '_,
4318 fidl::encoding::DefaultFuchsiaResourceDialect,
4319 >,
4320 offset: usize,
4321 mut depth: fidl::encoding::Depth,
4322 ) -> fidl::Result<()> {
4323 encoder.debug_check_bounds::<ComponentTasks>(offset);
4324 let max_ordinal: u64 = self.max_ordinal_present();
4326 encoder.write_num(max_ordinal, offset);
4327 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
4328 if max_ordinal == 0 {
4330 return Ok(());
4331 }
4332 depth.increment()?;
4333 let envelope_size = 8;
4334 let bytes_len = max_ordinal as usize * envelope_size;
4335 #[allow(unused_variables)]
4336 let offset = encoder.out_of_line_offset(bytes_len);
4337 let mut _prev_end_offset: usize = 0;
4338 if 1 > max_ordinal {
4339 return Ok(());
4340 }
4341
4342 let cur_offset: usize = (1 - 1) * envelope_size;
4345
4346 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4348
4349 fidl::encoding::encode_in_envelope_optional::<
4354 Task,
4355 fidl::encoding::DefaultFuchsiaResourceDialect,
4356 >(
4357 self.component_task
4358 .as_mut()
4359 .map(<Task as fidl::encoding::ResourceTypeMarker>::take_or_borrow),
4360 encoder,
4361 offset + cur_offset,
4362 depth,
4363 )?;
4364
4365 _prev_end_offset = cur_offset + envelope_size;
4366 if 2 > max_ordinal {
4367 return Ok(());
4368 }
4369
4370 let cur_offset: usize = (2 - 1) * envelope_size;
4373
4374 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4376
4377 fidl::encoding::encode_in_envelope_optional::<
4382 Task,
4383 fidl::encoding::DefaultFuchsiaResourceDialect,
4384 >(
4385 self.parent_task
4386 .as_mut()
4387 .map(<Task as fidl::encoding::ResourceTypeMarker>::take_or_borrow),
4388 encoder,
4389 offset + cur_offset,
4390 depth,
4391 )?;
4392
4393 _prev_end_offset = cur_offset + envelope_size;
4394
4395 Ok(())
4396 }
4397 }
4398
4399 impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
4400 for ComponentTasks
4401 {
4402 #[inline(always)]
4403 fn new_empty() -> Self {
4404 Self::default()
4405 }
4406
4407 unsafe fn decode(
4408 &mut self,
4409 decoder: &mut fidl::encoding::Decoder<
4410 '_,
4411 fidl::encoding::DefaultFuchsiaResourceDialect,
4412 >,
4413 offset: usize,
4414 mut depth: fidl::encoding::Depth,
4415 ) -> fidl::Result<()> {
4416 decoder.debug_check_bounds::<Self>(offset);
4417 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
4418 None => return Err(fidl::Error::NotNullable),
4419 Some(len) => len,
4420 };
4421 if len == 0 {
4423 return Ok(());
4424 };
4425 depth.increment()?;
4426 let envelope_size = 8;
4427 let bytes_len = len * envelope_size;
4428 let offset = decoder.out_of_line_offset(bytes_len)?;
4429 let mut _next_ordinal_to_read = 0;
4431 let mut next_offset = offset;
4432 let end_offset = offset + bytes_len;
4433 _next_ordinal_to_read += 1;
4434 if next_offset >= end_offset {
4435 return Ok(());
4436 }
4437
4438 while _next_ordinal_to_read < 1 {
4440 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4441 _next_ordinal_to_read += 1;
4442 next_offset += envelope_size;
4443 }
4444
4445 let next_out_of_line = decoder.next_out_of_line();
4446 let handles_before = decoder.remaining_handles();
4447 if let Some((inlined, num_bytes, num_handles)) =
4448 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4449 {
4450 let member_inline_size =
4451 <Task as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4452 if inlined != (member_inline_size <= 4) {
4453 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4454 }
4455 let inner_offset;
4456 let mut inner_depth = depth.clone();
4457 if inlined {
4458 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4459 inner_offset = next_offset;
4460 } else {
4461 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4462 inner_depth.increment()?;
4463 }
4464 let val_ref = self.component_task.get_or_insert_with(|| {
4465 fidl::new_empty!(Task, fidl::encoding::DefaultFuchsiaResourceDialect)
4466 });
4467 fidl::decode!(
4468 Task,
4469 fidl::encoding::DefaultFuchsiaResourceDialect,
4470 val_ref,
4471 decoder,
4472 inner_offset,
4473 inner_depth
4474 )?;
4475 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4476 {
4477 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4478 }
4479 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4480 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4481 }
4482 }
4483
4484 next_offset += envelope_size;
4485 _next_ordinal_to_read += 1;
4486 if next_offset >= end_offset {
4487 return Ok(());
4488 }
4489
4490 while _next_ordinal_to_read < 2 {
4492 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4493 _next_ordinal_to_read += 1;
4494 next_offset += envelope_size;
4495 }
4496
4497 let next_out_of_line = decoder.next_out_of_line();
4498 let handles_before = decoder.remaining_handles();
4499 if let Some((inlined, num_bytes, num_handles)) =
4500 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4501 {
4502 let member_inline_size =
4503 <Task as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4504 if inlined != (member_inline_size <= 4) {
4505 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4506 }
4507 let inner_offset;
4508 let mut inner_depth = depth.clone();
4509 if inlined {
4510 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4511 inner_offset = next_offset;
4512 } else {
4513 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4514 inner_depth.increment()?;
4515 }
4516 let val_ref = self.parent_task.get_or_insert_with(|| {
4517 fidl::new_empty!(Task, fidl::encoding::DefaultFuchsiaResourceDialect)
4518 });
4519 fidl::decode!(
4520 Task,
4521 fidl::encoding::DefaultFuchsiaResourceDialect,
4522 val_ref,
4523 decoder,
4524 inner_offset,
4525 inner_depth
4526 )?;
4527 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4528 {
4529 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4530 }
4531 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4532 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4533 }
4534 }
4535
4536 next_offset += envelope_size;
4537
4538 while next_offset < end_offset {
4540 _next_ordinal_to_read += 1;
4541 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4542 next_offset += envelope_size;
4543 }
4544
4545 Ok(())
4546 }
4547 }
4548
4549 impl fidl::encoding::ResourceTypeMarker for Task {
4550 type Borrowed<'a> = &'a mut Self;
4551 fn take_or_borrow<'a>(
4552 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
4553 ) -> Self::Borrowed<'a> {
4554 value
4555 }
4556 }
4557
4558 unsafe impl fidl::encoding::TypeMarker for Task {
4559 type Owned = Self;
4560
4561 #[inline(always)]
4562 fn inline_align(_context: fidl::encoding::Context) -> usize {
4563 8
4564 }
4565
4566 #[inline(always)]
4567 fn inline_size(_context: fidl::encoding::Context) -> usize {
4568 16
4569 }
4570 }
4571
4572 unsafe impl fidl::encoding::Encode<Task, fidl::encoding::DefaultFuchsiaResourceDialect>
4573 for &mut Task
4574 {
4575 #[inline]
4576 unsafe fn encode(
4577 self,
4578 encoder: &mut fidl::encoding::Encoder<
4579 '_,
4580 fidl::encoding::DefaultFuchsiaResourceDialect,
4581 >,
4582 offset: usize,
4583 _depth: fidl::encoding::Depth,
4584 ) -> fidl::Result<()> {
4585 encoder.debug_check_bounds::<Task>(offset);
4586 encoder.write_num::<u64>(self.ordinal(), offset);
4587 match self {
4588 Task::Job(ref mut val) => fidl::encoding::encode_in_envelope::<
4589 fidl::encoding::HandleType<
4590 fidl::Job,
4591 { fidl::ObjectType::JOB.into_raw() },
4592 2147483648,
4593 >,
4594 fidl::encoding::DefaultFuchsiaResourceDialect,
4595 >(
4596 <fidl::encoding::HandleType<
4597 fidl::Job,
4598 { fidl::ObjectType::JOB.into_raw() },
4599 2147483648,
4600 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow(
4601 val
4602 ),
4603 encoder,
4604 offset + 8,
4605 _depth,
4606 ),
4607 Task::Process(ref mut val) => fidl::encoding::encode_in_envelope::<
4608 fidl::encoding::HandleType<
4609 fidl::Process,
4610 { fidl::ObjectType::PROCESS.into_raw() },
4611 2147483648,
4612 >,
4613 fidl::encoding::DefaultFuchsiaResourceDialect,
4614 >(
4615 <fidl::encoding::HandleType<
4616 fidl::Process,
4617 { fidl::ObjectType::PROCESS.into_raw() },
4618 2147483648,
4619 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow(
4620 val
4621 ),
4622 encoder,
4623 offset + 8,
4624 _depth,
4625 ),
4626 Task::Thread(ref mut val) => fidl::encoding::encode_in_envelope::<
4627 fidl::encoding::HandleType<
4628 fidl::Thread,
4629 { fidl::ObjectType::THREAD.into_raw() },
4630 2147483648,
4631 >,
4632 fidl::encoding::DefaultFuchsiaResourceDialect,
4633 >(
4634 <fidl::encoding::HandleType<
4635 fidl::Thread,
4636 { fidl::ObjectType::THREAD.into_raw() },
4637 2147483648,
4638 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow(
4639 val
4640 ),
4641 encoder,
4642 offset + 8,
4643 _depth,
4644 ),
4645 Task::__SourceBreaking { .. } => Err(fidl::Error::UnknownUnionTag),
4646 }
4647 }
4648 }
4649
4650 impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect> for Task {
4651 #[inline(always)]
4652 fn new_empty() -> Self {
4653 Self::__SourceBreaking { unknown_ordinal: 0 }
4654 }
4655
4656 #[inline]
4657 unsafe fn decode(
4658 &mut self,
4659 decoder: &mut fidl::encoding::Decoder<
4660 '_,
4661 fidl::encoding::DefaultFuchsiaResourceDialect,
4662 >,
4663 offset: usize,
4664 mut depth: fidl::encoding::Depth,
4665 ) -> fidl::Result<()> {
4666 decoder.debug_check_bounds::<Self>(offset);
4667 #[allow(unused_variables)]
4668 let next_out_of_line = decoder.next_out_of_line();
4669 let handles_before = decoder.remaining_handles();
4670 let (ordinal, inlined, num_bytes, num_handles) =
4671 fidl::encoding::decode_union_inline_portion(decoder, offset)?;
4672
4673 let member_inline_size = match ordinal {
4674 1 => <fidl::encoding::HandleType<
4675 fidl::Job,
4676 { fidl::ObjectType::JOB.into_raw() },
4677 2147483648,
4678 > as fidl::encoding::TypeMarker>::inline_size(decoder.context),
4679 2 => <fidl::encoding::HandleType<
4680 fidl::Process,
4681 { fidl::ObjectType::PROCESS.into_raw() },
4682 2147483648,
4683 > as fidl::encoding::TypeMarker>::inline_size(decoder.context),
4684 3 => <fidl::encoding::HandleType<
4685 fidl::Thread,
4686 { fidl::ObjectType::THREAD.into_raw() },
4687 2147483648,
4688 > as fidl::encoding::TypeMarker>::inline_size(decoder.context),
4689 0 => return Err(fidl::Error::UnknownUnionTag),
4690 _ => num_bytes as usize,
4691 };
4692
4693 if inlined != (member_inline_size <= 4) {
4694 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4695 }
4696 let _inner_offset;
4697 if inlined {
4698 decoder.check_inline_envelope_padding(offset + 8, member_inline_size)?;
4699 _inner_offset = offset + 8;
4700 } else {
4701 depth.increment()?;
4702 _inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4703 }
4704 match ordinal {
4705 1 => {
4706 #[allow(irrefutable_let_patterns)]
4707 if let Task::Job(_) = self {
4708 } else {
4710 *self = Task::Job(
4712 fidl::new_empty!(fidl::encoding::HandleType<fidl::Job, { fidl::ObjectType::JOB.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect),
4713 );
4714 }
4715 #[allow(irrefutable_let_patterns)]
4716 if let Task::Job(ref mut val) = self {
4717 fidl::decode!(fidl::encoding::HandleType<fidl::Job, { fidl::ObjectType::JOB.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect, val, decoder, _inner_offset, depth)?;
4718 } else {
4719 unreachable!()
4720 }
4721 }
4722 2 => {
4723 #[allow(irrefutable_let_patterns)]
4724 if let Task::Process(_) = self {
4725 } else {
4727 *self = Task::Process(
4729 fidl::new_empty!(fidl::encoding::HandleType<fidl::Process, { fidl::ObjectType::PROCESS.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect),
4730 );
4731 }
4732 #[allow(irrefutable_let_patterns)]
4733 if let Task::Process(ref mut val) = self {
4734 fidl::decode!(fidl::encoding::HandleType<fidl::Process, { fidl::ObjectType::PROCESS.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect, val, decoder, _inner_offset, depth)?;
4735 } else {
4736 unreachable!()
4737 }
4738 }
4739 3 => {
4740 #[allow(irrefutable_let_patterns)]
4741 if let Task::Thread(_) = self {
4742 } else {
4744 *self = Task::Thread(
4746 fidl::new_empty!(fidl::encoding::HandleType<fidl::Thread, { fidl::ObjectType::THREAD.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect),
4747 );
4748 }
4749 #[allow(irrefutable_let_patterns)]
4750 if let Task::Thread(ref mut val) = self {
4751 fidl::decode!(fidl::encoding::HandleType<fidl::Thread, { fidl::ObjectType::THREAD.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect, val, decoder, _inner_offset, depth)?;
4752 } else {
4753 unreachable!()
4754 }
4755 }
4756 #[allow(deprecated)]
4757 ordinal => {
4758 for _ in 0..num_handles {
4759 decoder.drop_next_handle()?;
4760 }
4761 *self = Task::__SourceBreaking { unknown_ordinal: ordinal };
4762 }
4763 }
4764 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize) {
4765 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4766 }
4767 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4768 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4769 }
4770 Ok(())
4771 }
4772 }
4773}