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