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