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_resolution_common::*;
11use futures::future::{self, MaybeDone, TryFutureExt};
12use zx_status;
13
14#[derive(Debug, PartialEq)]
15pub struct ResolverResolveWithContextResponse {
16 pub component: Component,
17}
18
19impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect>
20 for ResolverResolveWithContextResponse
21{
22}
23
24#[derive(Debug, PartialEq)]
25pub struct ResolverResolveResponse {
26 pub component: Component,
27}
28
29impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect> for ResolverResolveResponse {}
30
31#[derive(Debug, Default, PartialEq)]
36pub struct Component {
37 pub url: Option<String>,
41 pub decl: Option<fidl_fuchsia_mem::Data>,
45 pub package: Option<Package>,
58 pub config_values: Option<fidl_fuchsia_mem::Data>,
61 pub resolution_context: Option<Context>,
75 pub abi_revision: Option<u64>,
77 #[doc(hidden)]
78 pub __source_breaking: fidl::marker::SourceBreaking,
79}
80
81impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect> for Component {}
82
83#[derive(Debug, Default, PartialEq)]
87pub struct Package {
88 pub url: 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 Package {}
97
98#[derive(Debug, Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash)]
99pub struct ResolverMarker;
100
101impl fidl::endpoints::ProtocolMarker for ResolverMarker {
102 type Proxy = ResolverProxy;
103 type RequestStream = ResolverRequestStream;
104 #[cfg(target_os = "fuchsia")]
105 type SynchronousProxy = ResolverSynchronousProxy;
106
107 const DEBUG_NAME: &'static str = "fuchsia.component.resolution.Resolver";
108}
109impl fidl::endpoints::DiscoverableProtocolMarker for ResolverMarker {}
110pub type ResolverResolveResult = Result<Component, ResolverError>;
111pub type ResolverResolveWithContextResult = Result<Component, ResolverError>;
112
113pub trait ResolverProxyInterface: Send + Sync {
114 type ResolveResponseFut: std::future::Future<Output = Result<ResolverResolveResult, fidl::Error>>
115 + Send;
116 fn r#resolve(&self, component_url: &str) -> Self::ResolveResponseFut;
117 type ResolveWithContextResponseFut: std::future::Future<Output = Result<ResolverResolveWithContextResult, fidl::Error>>
118 + Send;
119 fn r#resolve_with_context(
120 &self,
121 component_url: &str,
122 context: &Context,
123 ) -> Self::ResolveWithContextResponseFut;
124}
125#[derive(Debug)]
126#[cfg(target_os = "fuchsia")]
127pub struct ResolverSynchronousProxy {
128 client: fidl::client::sync::Client,
129}
130
131#[cfg(target_os = "fuchsia")]
132impl fidl::endpoints::SynchronousProxy for ResolverSynchronousProxy {
133 type Proxy = ResolverProxy;
134 type Protocol = ResolverMarker;
135
136 fn from_channel(inner: fidl::Channel) -> Self {
137 Self::new(inner)
138 }
139
140 fn into_channel(self) -> fidl::Channel {
141 self.client.into_channel()
142 }
143
144 fn as_channel(&self) -> &fidl::Channel {
145 self.client.as_channel()
146 }
147}
148
149#[cfg(target_os = "fuchsia")]
150impl ResolverSynchronousProxy {
151 pub fn new(channel: fidl::Channel) -> Self {
152 let protocol_name = <ResolverMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
153 Self { client: fidl::client::sync::Client::new(channel, protocol_name) }
154 }
155
156 pub fn into_channel(self) -> fidl::Channel {
157 self.client.into_channel()
158 }
159
160 pub fn wait_for_event(
163 &self,
164 deadline: zx::MonotonicInstant,
165 ) -> Result<ResolverEvent, fidl::Error> {
166 ResolverEvent::decode(self.client.wait_for_event(deadline)?)
167 }
168
169 pub fn r#resolve(
178 &self,
179 mut component_url: &str,
180 ___deadline: zx::MonotonicInstant,
181 ) -> Result<ResolverResolveResult, fidl::Error> {
182 let _response = self.client.send_query::<
183 ResolverResolveRequest,
184 fidl::encoding::ResultType<ResolverResolveResponse, ResolverError>,
185 >(
186 (component_url,),
187 0x57f9cfe88bf1f2e5,
188 fidl::encoding::DynamicFlags::empty(),
189 ___deadline,
190 )?;
191 Ok(_response.map(|x| x.component))
192 }
193
194 pub fn r#resolve_with_context(
208 &self,
209 mut component_url: &str,
210 mut context: &Context,
211 ___deadline: zx::MonotonicInstant,
212 ) -> Result<ResolverResolveWithContextResult, fidl::Error> {
213 let _response = self.client.send_query::<
214 ResolverResolveWithContextRequest,
215 fidl::encoding::ResultType<ResolverResolveWithContextResponse, ResolverError>,
216 >(
217 (component_url, context,),
218 0x4d64b0de827070bd,
219 fidl::encoding::DynamicFlags::empty(),
220 ___deadline,
221 )?;
222 Ok(_response.map(|x| x.component))
223 }
224}
225
226#[derive(Debug, Clone)]
227pub struct ResolverProxy {
228 client: fidl::client::Client<fidl::encoding::DefaultFuchsiaResourceDialect>,
229}
230
231impl fidl::endpoints::Proxy for ResolverProxy {
232 type Protocol = ResolverMarker;
233
234 fn from_channel(inner: ::fidl::AsyncChannel) -> Self {
235 Self::new(inner)
236 }
237
238 fn into_channel(self) -> Result<::fidl::AsyncChannel, Self> {
239 self.client.into_channel().map_err(|client| Self { client })
240 }
241
242 fn as_channel(&self) -> &::fidl::AsyncChannel {
243 self.client.as_channel()
244 }
245}
246
247impl ResolverProxy {
248 pub fn new(channel: ::fidl::AsyncChannel) -> Self {
250 let protocol_name = <ResolverMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
251 Self { client: fidl::client::Client::new(channel, protocol_name) }
252 }
253
254 pub fn take_event_stream(&self) -> ResolverEventStream {
260 ResolverEventStream { event_receiver: self.client.take_event_receiver() }
261 }
262
263 pub fn r#resolve(
272 &self,
273 mut component_url: &str,
274 ) -> fidl::client::QueryResponseFut<
275 ResolverResolveResult,
276 fidl::encoding::DefaultFuchsiaResourceDialect,
277 > {
278 ResolverProxyInterface::r#resolve(self, component_url)
279 }
280
281 pub fn r#resolve_with_context(
295 &self,
296 mut component_url: &str,
297 mut context: &Context,
298 ) -> fidl::client::QueryResponseFut<
299 ResolverResolveWithContextResult,
300 fidl::encoding::DefaultFuchsiaResourceDialect,
301 > {
302 ResolverProxyInterface::r#resolve_with_context(self, component_url, context)
303 }
304}
305
306impl ResolverProxyInterface for ResolverProxy {
307 type ResolveResponseFut = fidl::client::QueryResponseFut<
308 ResolverResolveResult,
309 fidl::encoding::DefaultFuchsiaResourceDialect,
310 >;
311 fn r#resolve(&self, mut component_url: &str) -> Self::ResolveResponseFut {
312 fn _decode(
313 mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
314 ) -> Result<ResolverResolveResult, fidl::Error> {
315 let _response = fidl::client::decode_transaction_body::<
316 fidl::encoding::ResultType<ResolverResolveResponse, ResolverError>,
317 fidl::encoding::DefaultFuchsiaResourceDialect,
318 0x57f9cfe88bf1f2e5,
319 >(_buf?)?;
320 Ok(_response.map(|x| x.component))
321 }
322 self.client.send_query_and_decode::<ResolverResolveRequest, ResolverResolveResult>(
323 (component_url,),
324 0x57f9cfe88bf1f2e5,
325 fidl::encoding::DynamicFlags::empty(),
326 _decode,
327 )
328 }
329
330 type ResolveWithContextResponseFut = fidl::client::QueryResponseFut<
331 ResolverResolveWithContextResult,
332 fidl::encoding::DefaultFuchsiaResourceDialect,
333 >;
334 fn r#resolve_with_context(
335 &self,
336 mut component_url: &str,
337 mut context: &Context,
338 ) -> Self::ResolveWithContextResponseFut {
339 fn _decode(
340 mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
341 ) -> Result<ResolverResolveWithContextResult, fidl::Error> {
342 let _response = fidl::client::decode_transaction_body::<
343 fidl::encoding::ResultType<ResolverResolveWithContextResponse, ResolverError>,
344 fidl::encoding::DefaultFuchsiaResourceDialect,
345 0x4d64b0de827070bd,
346 >(_buf?)?;
347 Ok(_response.map(|x| x.component))
348 }
349 self.client.send_query_and_decode::<
350 ResolverResolveWithContextRequest,
351 ResolverResolveWithContextResult,
352 >(
353 (component_url, context,),
354 0x4d64b0de827070bd,
355 fidl::encoding::DynamicFlags::empty(),
356 _decode,
357 )
358 }
359}
360
361pub struct ResolverEventStream {
362 event_receiver: fidl::client::EventReceiver<fidl::encoding::DefaultFuchsiaResourceDialect>,
363}
364
365impl std::marker::Unpin for ResolverEventStream {}
366
367impl futures::stream::FusedStream for ResolverEventStream {
368 fn is_terminated(&self) -> bool {
369 self.event_receiver.is_terminated()
370 }
371}
372
373impl futures::Stream for ResolverEventStream {
374 type Item = Result<ResolverEvent, fidl::Error>;
375
376 fn poll_next(
377 mut self: std::pin::Pin<&mut Self>,
378 cx: &mut std::task::Context<'_>,
379 ) -> std::task::Poll<Option<Self::Item>> {
380 match futures::ready!(futures::stream::StreamExt::poll_next_unpin(
381 &mut self.event_receiver,
382 cx
383 )?) {
384 Some(buf) => std::task::Poll::Ready(Some(ResolverEvent::decode(buf))),
385 None => std::task::Poll::Ready(None),
386 }
387 }
388}
389
390#[derive(Debug)]
391pub enum ResolverEvent {
392 #[non_exhaustive]
393 _UnknownEvent {
394 ordinal: u64,
396 },
397}
398
399impl ResolverEvent {
400 fn decode(
402 mut buf: <fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc,
403 ) -> Result<ResolverEvent, fidl::Error> {
404 let (bytes, _handles) = buf.split_mut();
405 let (tx_header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
406 debug_assert_eq!(tx_header.tx_id, 0);
407 match tx_header.ordinal {
408 _ if tx_header.dynamic_flags().contains(fidl::encoding::DynamicFlags::FLEXIBLE) => {
409 Ok(ResolverEvent::_UnknownEvent { ordinal: tx_header.ordinal })
410 }
411 _ => Err(fidl::Error::UnknownOrdinal {
412 ordinal: tx_header.ordinal,
413 protocol_name: <ResolverMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
414 }),
415 }
416 }
417}
418
419pub struct ResolverRequestStream {
421 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
422 is_terminated: bool,
423}
424
425impl std::marker::Unpin for ResolverRequestStream {}
426
427impl futures::stream::FusedStream for ResolverRequestStream {
428 fn is_terminated(&self) -> bool {
429 self.is_terminated
430 }
431}
432
433impl fidl::endpoints::RequestStream for ResolverRequestStream {
434 type Protocol = ResolverMarker;
435 type ControlHandle = ResolverControlHandle;
436
437 fn from_channel(channel: ::fidl::AsyncChannel) -> Self {
438 Self { inner: std::sync::Arc::new(fidl::ServeInner::new(channel)), is_terminated: false }
439 }
440
441 fn control_handle(&self) -> Self::ControlHandle {
442 ResolverControlHandle { inner: self.inner.clone() }
443 }
444
445 fn into_inner(
446 self,
447 ) -> (::std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>, bool)
448 {
449 (self.inner, self.is_terminated)
450 }
451
452 fn from_inner(
453 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
454 is_terminated: bool,
455 ) -> Self {
456 Self { inner, is_terminated }
457 }
458}
459
460impl futures::Stream for ResolverRequestStream {
461 type Item = Result<ResolverRequest, fidl::Error>;
462
463 fn poll_next(
464 mut self: std::pin::Pin<&mut Self>,
465 cx: &mut std::task::Context<'_>,
466 ) -> std::task::Poll<Option<Self::Item>> {
467 let this = &mut *self;
468 if this.inner.check_shutdown(cx) {
469 this.is_terminated = true;
470 return std::task::Poll::Ready(None);
471 }
472 if this.is_terminated {
473 panic!("polled ResolverRequestStream after completion");
474 }
475 fidl::encoding::with_tls_decode_buf::<_, fidl::encoding::DefaultFuchsiaResourceDialect>(
476 |bytes, handles| {
477 match this.inner.channel().read_etc(cx, bytes, handles) {
478 std::task::Poll::Ready(Ok(())) => {}
479 std::task::Poll::Pending => return std::task::Poll::Pending,
480 std::task::Poll::Ready(Err(zx_status::Status::PEER_CLOSED)) => {
481 this.is_terminated = true;
482 return std::task::Poll::Ready(None);
483 }
484 std::task::Poll::Ready(Err(e)) => {
485 return std::task::Poll::Ready(Some(Err(fidl::Error::ServerRequestRead(
486 e.into(),
487 ))))
488 }
489 }
490
491 let (header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
493
494 std::task::Poll::Ready(Some(match header.ordinal {
495 0x57f9cfe88bf1f2e5 => {
496 header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
497 let mut req = fidl::new_empty!(
498 ResolverResolveRequest,
499 fidl::encoding::DefaultFuchsiaResourceDialect
500 );
501 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<ResolverResolveRequest>(&header, _body_bytes, handles, &mut req)?;
502 let control_handle = ResolverControlHandle { inner: this.inner.clone() };
503 Ok(ResolverRequest::Resolve {
504 component_url: req.component_url,
505
506 responder: ResolverResolveResponder {
507 control_handle: std::mem::ManuallyDrop::new(control_handle),
508 tx_id: header.tx_id,
509 },
510 })
511 }
512 0x4d64b0de827070bd => {
513 header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
514 let mut req = fidl::new_empty!(
515 ResolverResolveWithContextRequest,
516 fidl::encoding::DefaultFuchsiaResourceDialect
517 );
518 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<ResolverResolveWithContextRequest>(&header, _body_bytes, handles, &mut req)?;
519 let control_handle = ResolverControlHandle { inner: this.inner.clone() };
520 Ok(ResolverRequest::ResolveWithContext {
521 component_url: req.component_url,
522 context: req.context,
523
524 responder: ResolverResolveWithContextResponder {
525 control_handle: std::mem::ManuallyDrop::new(control_handle),
526 tx_id: header.tx_id,
527 },
528 })
529 }
530 _ if header.tx_id == 0
531 && header
532 .dynamic_flags()
533 .contains(fidl::encoding::DynamicFlags::FLEXIBLE) =>
534 {
535 Ok(ResolverRequest::_UnknownMethod {
536 ordinal: header.ordinal,
537 control_handle: ResolverControlHandle { inner: this.inner.clone() },
538 method_type: fidl::MethodType::OneWay,
539 })
540 }
541 _ if header
542 .dynamic_flags()
543 .contains(fidl::encoding::DynamicFlags::FLEXIBLE) =>
544 {
545 this.inner.send_framework_err(
546 fidl::encoding::FrameworkErr::UnknownMethod,
547 header.tx_id,
548 header.ordinal,
549 header.dynamic_flags(),
550 (bytes, handles),
551 )?;
552 Ok(ResolverRequest::_UnknownMethod {
553 ordinal: header.ordinal,
554 control_handle: ResolverControlHandle { inner: this.inner.clone() },
555 method_type: fidl::MethodType::TwoWay,
556 })
557 }
558 _ => Err(fidl::Error::UnknownOrdinal {
559 ordinal: header.ordinal,
560 protocol_name:
561 <ResolverMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
562 }),
563 }))
564 },
565 )
566 }
567}
568
569#[derive(Debug)]
582pub enum ResolverRequest {
583 Resolve { component_url: String, responder: ResolverResolveResponder },
592 ResolveWithContext {
606 component_url: String,
607 context: Context,
608 responder: ResolverResolveWithContextResponder,
609 },
610 #[non_exhaustive]
612 _UnknownMethod {
613 ordinal: u64,
615 control_handle: ResolverControlHandle,
616 method_type: fidl::MethodType,
617 },
618}
619
620impl ResolverRequest {
621 #[allow(irrefutable_let_patterns)]
622 pub fn into_resolve(self) -> Option<(String, ResolverResolveResponder)> {
623 if let ResolverRequest::Resolve { component_url, responder } = self {
624 Some((component_url, responder))
625 } else {
626 None
627 }
628 }
629
630 #[allow(irrefutable_let_patterns)]
631 pub fn into_resolve_with_context(
632 self,
633 ) -> Option<(String, Context, ResolverResolveWithContextResponder)> {
634 if let ResolverRequest::ResolveWithContext { component_url, context, responder } = self {
635 Some((component_url, context, responder))
636 } else {
637 None
638 }
639 }
640
641 pub fn method_name(&self) -> &'static str {
643 match *self {
644 ResolverRequest::Resolve { .. } => "resolve",
645 ResolverRequest::ResolveWithContext { .. } => "resolve_with_context",
646 ResolverRequest::_UnknownMethod { method_type: fidl::MethodType::OneWay, .. } => {
647 "unknown one-way method"
648 }
649 ResolverRequest::_UnknownMethod { method_type: fidl::MethodType::TwoWay, .. } => {
650 "unknown two-way method"
651 }
652 }
653 }
654}
655
656#[derive(Debug, Clone)]
657pub struct ResolverControlHandle {
658 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
659}
660
661impl fidl::endpoints::ControlHandle for ResolverControlHandle {
662 fn shutdown(&self) {
663 self.inner.shutdown()
664 }
665 fn shutdown_with_epitaph(&self, status: zx_status::Status) {
666 self.inner.shutdown_with_epitaph(status)
667 }
668
669 fn is_closed(&self) -> bool {
670 self.inner.channel().is_closed()
671 }
672 fn on_closed(&self) -> fidl::OnSignalsRef<'_> {
673 self.inner.channel().on_closed()
674 }
675
676 #[cfg(target_os = "fuchsia")]
677 fn signal_peer(
678 &self,
679 clear_mask: zx::Signals,
680 set_mask: zx::Signals,
681 ) -> Result<(), zx_status::Status> {
682 use fidl::Peered;
683 self.inner.channel().signal_peer(clear_mask, set_mask)
684 }
685}
686
687impl ResolverControlHandle {}
688
689#[must_use = "FIDL methods require a response to be sent"]
690#[derive(Debug)]
691pub struct ResolverResolveResponder {
692 control_handle: std::mem::ManuallyDrop<ResolverControlHandle>,
693 tx_id: u32,
694}
695
696impl std::ops::Drop for ResolverResolveResponder {
700 fn drop(&mut self) {
701 self.control_handle.shutdown();
702 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
704 }
705}
706
707impl fidl::endpoints::Responder for ResolverResolveResponder {
708 type ControlHandle = ResolverControlHandle;
709
710 fn control_handle(&self) -> &ResolverControlHandle {
711 &self.control_handle
712 }
713
714 fn drop_without_shutdown(mut self) {
715 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
717 std::mem::forget(self);
719 }
720}
721
722impl ResolverResolveResponder {
723 pub fn send(self, mut result: Result<Component, ResolverError>) -> Result<(), fidl::Error> {
727 let _result = self.send_raw(result);
728 if _result.is_err() {
729 self.control_handle.shutdown();
730 }
731 self.drop_without_shutdown();
732 _result
733 }
734
735 pub fn send_no_shutdown_on_err(
737 self,
738 mut result: Result<Component, ResolverError>,
739 ) -> Result<(), fidl::Error> {
740 let _result = self.send_raw(result);
741 self.drop_without_shutdown();
742 _result
743 }
744
745 fn send_raw(&self, mut result: Result<Component, ResolverError>) -> Result<(), fidl::Error> {
746 self.control_handle
747 .inner
748 .send::<fidl::encoding::ResultType<ResolverResolveResponse, ResolverError>>(
749 result.as_mut().map_err(|e| *e).map(|component| (component,)),
750 self.tx_id,
751 0x57f9cfe88bf1f2e5,
752 fidl::encoding::DynamicFlags::empty(),
753 )
754 }
755}
756
757#[must_use = "FIDL methods require a response to be sent"]
758#[derive(Debug)]
759pub struct ResolverResolveWithContextResponder {
760 control_handle: std::mem::ManuallyDrop<ResolverControlHandle>,
761 tx_id: u32,
762}
763
764impl std::ops::Drop for ResolverResolveWithContextResponder {
768 fn drop(&mut self) {
769 self.control_handle.shutdown();
770 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
772 }
773}
774
775impl fidl::endpoints::Responder for ResolverResolveWithContextResponder {
776 type ControlHandle = ResolverControlHandle;
777
778 fn control_handle(&self) -> &ResolverControlHandle {
779 &self.control_handle
780 }
781
782 fn drop_without_shutdown(mut self) {
783 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
785 std::mem::forget(self);
787 }
788}
789
790impl ResolverResolveWithContextResponder {
791 pub fn send(self, mut result: Result<Component, ResolverError>) -> Result<(), fidl::Error> {
795 let _result = self.send_raw(result);
796 if _result.is_err() {
797 self.control_handle.shutdown();
798 }
799 self.drop_without_shutdown();
800 _result
801 }
802
803 pub fn send_no_shutdown_on_err(
805 self,
806 mut result: Result<Component, ResolverError>,
807 ) -> Result<(), fidl::Error> {
808 let _result = self.send_raw(result);
809 self.drop_without_shutdown();
810 _result
811 }
812
813 fn send_raw(&self, mut result: Result<Component, ResolverError>) -> Result<(), fidl::Error> {
814 self.control_handle.inner.send::<fidl::encoding::ResultType<
815 ResolverResolveWithContextResponse,
816 ResolverError,
817 >>(
818 result.as_mut().map_err(|e| *e).map(|component| (component,)),
819 self.tx_id,
820 0x4d64b0de827070bd,
821 fidl::encoding::DynamicFlags::empty(),
822 )
823 }
824}
825
826mod internal {
827 use super::*;
828
829 impl fidl::encoding::ResourceTypeMarker for ResolverResolveWithContextResponse {
830 type Borrowed<'a> = &'a mut Self;
831 fn take_or_borrow<'a>(
832 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
833 ) -> Self::Borrowed<'a> {
834 value
835 }
836 }
837
838 unsafe impl fidl::encoding::TypeMarker for ResolverResolveWithContextResponse {
839 type Owned = Self;
840
841 #[inline(always)]
842 fn inline_align(_context: fidl::encoding::Context) -> usize {
843 8
844 }
845
846 #[inline(always)]
847 fn inline_size(_context: fidl::encoding::Context) -> usize {
848 16
849 }
850 }
851
852 unsafe impl
853 fidl::encoding::Encode<
854 ResolverResolveWithContextResponse,
855 fidl::encoding::DefaultFuchsiaResourceDialect,
856 > for &mut ResolverResolveWithContextResponse
857 {
858 #[inline]
859 unsafe fn encode(
860 self,
861 encoder: &mut fidl::encoding::Encoder<
862 '_,
863 fidl::encoding::DefaultFuchsiaResourceDialect,
864 >,
865 offset: usize,
866 _depth: fidl::encoding::Depth,
867 ) -> fidl::Result<()> {
868 encoder.debug_check_bounds::<ResolverResolveWithContextResponse>(offset);
869 fidl::encoding::Encode::<
871 ResolverResolveWithContextResponse,
872 fidl::encoding::DefaultFuchsiaResourceDialect,
873 >::encode(
874 (<Component as fidl::encoding::ResourceTypeMarker>::take_or_borrow(
875 &mut self.component,
876 ),),
877 encoder,
878 offset,
879 _depth,
880 )
881 }
882 }
883 unsafe impl<T0: fidl::encoding::Encode<Component, fidl::encoding::DefaultFuchsiaResourceDialect>>
884 fidl::encoding::Encode<
885 ResolverResolveWithContextResponse,
886 fidl::encoding::DefaultFuchsiaResourceDialect,
887 > for (T0,)
888 {
889 #[inline]
890 unsafe fn encode(
891 self,
892 encoder: &mut fidl::encoding::Encoder<
893 '_,
894 fidl::encoding::DefaultFuchsiaResourceDialect,
895 >,
896 offset: usize,
897 depth: fidl::encoding::Depth,
898 ) -> fidl::Result<()> {
899 encoder.debug_check_bounds::<ResolverResolveWithContextResponse>(offset);
900 self.0.encode(encoder, offset + 0, depth)?;
904 Ok(())
905 }
906 }
907
908 impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
909 for ResolverResolveWithContextResponse
910 {
911 #[inline(always)]
912 fn new_empty() -> Self {
913 Self {
914 component: fidl::new_empty!(
915 Component,
916 fidl::encoding::DefaultFuchsiaResourceDialect
917 ),
918 }
919 }
920
921 #[inline]
922 unsafe fn decode(
923 &mut self,
924 decoder: &mut fidl::encoding::Decoder<
925 '_,
926 fidl::encoding::DefaultFuchsiaResourceDialect,
927 >,
928 offset: usize,
929 _depth: fidl::encoding::Depth,
930 ) -> fidl::Result<()> {
931 decoder.debug_check_bounds::<Self>(offset);
932 fidl::decode!(
934 Component,
935 fidl::encoding::DefaultFuchsiaResourceDialect,
936 &mut self.component,
937 decoder,
938 offset + 0,
939 _depth
940 )?;
941 Ok(())
942 }
943 }
944
945 impl fidl::encoding::ResourceTypeMarker for ResolverResolveResponse {
946 type Borrowed<'a> = &'a mut Self;
947 fn take_or_borrow<'a>(
948 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
949 ) -> Self::Borrowed<'a> {
950 value
951 }
952 }
953
954 unsafe impl fidl::encoding::TypeMarker for ResolverResolveResponse {
955 type Owned = Self;
956
957 #[inline(always)]
958 fn inline_align(_context: fidl::encoding::Context) -> usize {
959 8
960 }
961
962 #[inline(always)]
963 fn inline_size(_context: fidl::encoding::Context) -> usize {
964 16
965 }
966 }
967
968 unsafe impl
969 fidl::encoding::Encode<
970 ResolverResolveResponse,
971 fidl::encoding::DefaultFuchsiaResourceDialect,
972 > for &mut ResolverResolveResponse
973 {
974 #[inline]
975 unsafe fn encode(
976 self,
977 encoder: &mut fidl::encoding::Encoder<
978 '_,
979 fidl::encoding::DefaultFuchsiaResourceDialect,
980 >,
981 offset: usize,
982 _depth: fidl::encoding::Depth,
983 ) -> fidl::Result<()> {
984 encoder.debug_check_bounds::<ResolverResolveResponse>(offset);
985 fidl::encoding::Encode::<
987 ResolverResolveResponse,
988 fidl::encoding::DefaultFuchsiaResourceDialect,
989 >::encode(
990 (<Component as fidl::encoding::ResourceTypeMarker>::take_or_borrow(
991 &mut self.component,
992 ),),
993 encoder,
994 offset,
995 _depth,
996 )
997 }
998 }
999 unsafe impl<T0: fidl::encoding::Encode<Component, fidl::encoding::DefaultFuchsiaResourceDialect>>
1000 fidl::encoding::Encode<
1001 ResolverResolveResponse,
1002 fidl::encoding::DefaultFuchsiaResourceDialect,
1003 > for (T0,)
1004 {
1005 #[inline]
1006 unsafe fn encode(
1007 self,
1008 encoder: &mut fidl::encoding::Encoder<
1009 '_,
1010 fidl::encoding::DefaultFuchsiaResourceDialect,
1011 >,
1012 offset: usize,
1013 depth: fidl::encoding::Depth,
1014 ) -> fidl::Result<()> {
1015 encoder.debug_check_bounds::<ResolverResolveResponse>(offset);
1016 self.0.encode(encoder, offset + 0, depth)?;
1020 Ok(())
1021 }
1022 }
1023
1024 impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
1025 for ResolverResolveResponse
1026 {
1027 #[inline(always)]
1028 fn new_empty() -> Self {
1029 Self {
1030 component: fidl::new_empty!(
1031 Component,
1032 fidl::encoding::DefaultFuchsiaResourceDialect
1033 ),
1034 }
1035 }
1036
1037 #[inline]
1038 unsafe fn decode(
1039 &mut self,
1040 decoder: &mut fidl::encoding::Decoder<
1041 '_,
1042 fidl::encoding::DefaultFuchsiaResourceDialect,
1043 >,
1044 offset: usize,
1045 _depth: fidl::encoding::Depth,
1046 ) -> fidl::Result<()> {
1047 decoder.debug_check_bounds::<Self>(offset);
1048 fidl::decode!(
1050 Component,
1051 fidl::encoding::DefaultFuchsiaResourceDialect,
1052 &mut self.component,
1053 decoder,
1054 offset + 0,
1055 _depth
1056 )?;
1057 Ok(())
1058 }
1059 }
1060
1061 impl Component {
1062 #[inline(always)]
1063 fn max_ordinal_present(&self) -> u64 {
1064 if let Some(_) = self.abi_revision {
1065 return 6;
1066 }
1067 if let Some(_) = self.resolution_context {
1068 return 5;
1069 }
1070 if let Some(_) = self.config_values {
1071 return 4;
1072 }
1073 if let Some(_) = self.package {
1074 return 3;
1075 }
1076 if let Some(_) = self.decl {
1077 return 2;
1078 }
1079 if let Some(_) = self.url {
1080 return 1;
1081 }
1082 0
1083 }
1084 }
1085
1086 impl fidl::encoding::ResourceTypeMarker for Component {
1087 type Borrowed<'a> = &'a mut Self;
1088 fn take_or_borrow<'a>(
1089 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
1090 ) -> Self::Borrowed<'a> {
1091 value
1092 }
1093 }
1094
1095 unsafe impl fidl::encoding::TypeMarker for Component {
1096 type Owned = Self;
1097
1098 #[inline(always)]
1099 fn inline_align(_context: fidl::encoding::Context) -> usize {
1100 8
1101 }
1102
1103 #[inline(always)]
1104 fn inline_size(_context: fidl::encoding::Context) -> usize {
1105 16
1106 }
1107 }
1108
1109 unsafe impl fidl::encoding::Encode<Component, fidl::encoding::DefaultFuchsiaResourceDialect>
1110 for &mut Component
1111 {
1112 unsafe fn encode(
1113 self,
1114 encoder: &mut fidl::encoding::Encoder<
1115 '_,
1116 fidl::encoding::DefaultFuchsiaResourceDialect,
1117 >,
1118 offset: usize,
1119 mut depth: fidl::encoding::Depth,
1120 ) -> fidl::Result<()> {
1121 encoder.debug_check_bounds::<Component>(offset);
1122 let max_ordinal: u64 = self.max_ordinal_present();
1124 encoder.write_num(max_ordinal, offset);
1125 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
1126 if max_ordinal == 0 {
1128 return Ok(());
1129 }
1130 depth.increment()?;
1131 let envelope_size = 8;
1132 let bytes_len = max_ordinal as usize * envelope_size;
1133 #[allow(unused_variables)]
1134 let offset = encoder.out_of_line_offset(bytes_len);
1135 let mut _prev_end_offset: usize = 0;
1136 if 1 > max_ordinal {
1137 return Ok(());
1138 }
1139
1140 let cur_offset: usize = (1 - 1) * envelope_size;
1143
1144 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1146
1147 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<2083>, fidl::encoding::DefaultFuchsiaResourceDialect>(
1152 self.url.as_ref().map(<fidl::encoding::BoundedString<2083> as fidl::encoding::ValueTypeMarker>::borrow),
1153 encoder, offset + cur_offset, depth
1154 )?;
1155
1156 _prev_end_offset = cur_offset + envelope_size;
1157 if 2 > max_ordinal {
1158 return Ok(());
1159 }
1160
1161 let cur_offset: usize = (2 - 1) * envelope_size;
1164
1165 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1167
1168 fidl::encoding::encode_in_envelope_optional::<
1173 fidl_fuchsia_mem::Data,
1174 fidl::encoding::DefaultFuchsiaResourceDialect,
1175 >(
1176 self.decl.as_mut().map(
1177 <fidl_fuchsia_mem::Data as fidl::encoding::ResourceTypeMarker>::take_or_borrow,
1178 ),
1179 encoder,
1180 offset + cur_offset,
1181 depth,
1182 )?;
1183
1184 _prev_end_offset = cur_offset + envelope_size;
1185 if 3 > max_ordinal {
1186 return Ok(());
1187 }
1188
1189 let cur_offset: usize = (3 - 1) * envelope_size;
1192
1193 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1195
1196 fidl::encoding::encode_in_envelope_optional::<
1201 Package,
1202 fidl::encoding::DefaultFuchsiaResourceDialect,
1203 >(
1204 self.package
1205 .as_mut()
1206 .map(<Package as fidl::encoding::ResourceTypeMarker>::take_or_borrow),
1207 encoder,
1208 offset + cur_offset,
1209 depth,
1210 )?;
1211
1212 _prev_end_offset = cur_offset + envelope_size;
1213 if 4 > max_ordinal {
1214 return Ok(());
1215 }
1216
1217 let cur_offset: usize = (4 - 1) * envelope_size;
1220
1221 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1223
1224 fidl::encoding::encode_in_envelope_optional::<
1229 fidl_fuchsia_mem::Data,
1230 fidl::encoding::DefaultFuchsiaResourceDialect,
1231 >(
1232 self.config_values.as_mut().map(
1233 <fidl_fuchsia_mem::Data as fidl::encoding::ResourceTypeMarker>::take_or_borrow,
1234 ),
1235 encoder,
1236 offset + cur_offset,
1237 depth,
1238 )?;
1239
1240 _prev_end_offset = cur_offset + envelope_size;
1241 if 5 > max_ordinal {
1242 return Ok(());
1243 }
1244
1245 let cur_offset: usize = (5 - 1) * envelope_size;
1248
1249 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1251
1252 fidl::encoding::encode_in_envelope_optional::<
1257 Context,
1258 fidl::encoding::DefaultFuchsiaResourceDialect,
1259 >(
1260 self.resolution_context
1261 .as_ref()
1262 .map(<Context as fidl::encoding::ValueTypeMarker>::borrow),
1263 encoder,
1264 offset + cur_offset,
1265 depth,
1266 )?;
1267
1268 _prev_end_offset = cur_offset + envelope_size;
1269 if 6 > max_ordinal {
1270 return Ok(());
1271 }
1272
1273 let cur_offset: usize = (6 - 1) * envelope_size;
1276
1277 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1279
1280 fidl::encoding::encode_in_envelope_optional::<
1285 u64,
1286 fidl::encoding::DefaultFuchsiaResourceDialect,
1287 >(
1288 self.abi_revision.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
1289 encoder,
1290 offset + cur_offset,
1291 depth,
1292 )?;
1293
1294 _prev_end_offset = cur_offset + envelope_size;
1295
1296 Ok(())
1297 }
1298 }
1299
1300 impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect> for Component {
1301 #[inline(always)]
1302 fn new_empty() -> Self {
1303 Self::default()
1304 }
1305
1306 unsafe fn decode(
1307 &mut self,
1308 decoder: &mut fidl::encoding::Decoder<
1309 '_,
1310 fidl::encoding::DefaultFuchsiaResourceDialect,
1311 >,
1312 offset: usize,
1313 mut depth: fidl::encoding::Depth,
1314 ) -> fidl::Result<()> {
1315 decoder.debug_check_bounds::<Self>(offset);
1316 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
1317 None => return Err(fidl::Error::NotNullable),
1318 Some(len) => len,
1319 };
1320 if len == 0 {
1322 return Ok(());
1323 };
1324 depth.increment()?;
1325 let envelope_size = 8;
1326 let bytes_len = len * envelope_size;
1327 let offset = decoder.out_of_line_offset(bytes_len)?;
1328 let mut _next_ordinal_to_read = 0;
1330 let mut next_offset = offset;
1331 let end_offset = offset + bytes_len;
1332 _next_ordinal_to_read += 1;
1333 if next_offset >= end_offset {
1334 return Ok(());
1335 }
1336
1337 while _next_ordinal_to_read < 1 {
1339 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1340 _next_ordinal_to_read += 1;
1341 next_offset += envelope_size;
1342 }
1343
1344 let next_out_of_line = decoder.next_out_of_line();
1345 let handles_before = decoder.remaining_handles();
1346 if let Some((inlined, num_bytes, num_handles)) =
1347 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1348 {
1349 let member_inline_size = <fidl::encoding::BoundedString<2083> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1350 if inlined != (member_inline_size <= 4) {
1351 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1352 }
1353 let inner_offset;
1354 let mut inner_depth = depth.clone();
1355 if inlined {
1356 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1357 inner_offset = next_offset;
1358 } else {
1359 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1360 inner_depth.increment()?;
1361 }
1362 let val_ref = self.url.get_or_insert_with(|| {
1363 fidl::new_empty!(
1364 fidl::encoding::BoundedString<2083>,
1365 fidl::encoding::DefaultFuchsiaResourceDialect
1366 )
1367 });
1368 fidl::decode!(
1369 fidl::encoding::BoundedString<2083>,
1370 fidl::encoding::DefaultFuchsiaResourceDialect,
1371 val_ref,
1372 decoder,
1373 inner_offset,
1374 inner_depth
1375 )?;
1376 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1377 {
1378 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1379 }
1380 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1381 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1382 }
1383 }
1384
1385 next_offset += envelope_size;
1386 _next_ordinal_to_read += 1;
1387 if next_offset >= end_offset {
1388 return Ok(());
1389 }
1390
1391 while _next_ordinal_to_read < 2 {
1393 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1394 _next_ordinal_to_read += 1;
1395 next_offset += envelope_size;
1396 }
1397
1398 let next_out_of_line = decoder.next_out_of_line();
1399 let handles_before = decoder.remaining_handles();
1400 if let Some((inlined, num_bytes, num_handles)) =
1401 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1402 {
1403 let member_inline_size =
1404 <fidl_fuchsia_mem::Data as fidl::encoding::TypeMarker>::inline_size(
1405 decoder.context,
1406 );
1407 if inlined != (member_inline_size <= 4) {
1408 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1409 }
1410 let inner_offset;
1411 let mut inner_depth = depth.clone();
1412 if inlined {
1413 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1414 inner_offset = next_offset;
1415 } else {
1416 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1417 inner_depth.increment()?;
1418 }
1419 let val_ref = self.decl.get_or_insert_with(|| {
1420 fidl::new_empty!(
1421 fidl_fuchsia_mem::Data,
1422 fidl::encoding::DefaultFuchsiaResourceDialect
1423 )
1424 });
1425 fidl::decode!(
1426 fidl_fuchsia_mem::Data,
1427 fidl::encoding::DefaultFuchsiaResourceDialect,
1428 val_ref,
1429 decoder,
1430 inner_offset,
1431 inner_depth
1432 )?;
1433 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1434 {
1435 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1436 }
1437 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1438 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1439 }
1440 }
1441
1442 next_offset += envelope_size;
1443 _next_ordinal_to_read += 1;
1444 if next_offset >= end_offset {
1445 return Ok(());
1446 }
1447
1448 while _next_ordinal_to_read < 3 {
1450 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1451 _next_ordinal_to_read += 1;
1452 next_offset += envelope_size;
1453 }
1454
1455 let next_out_of_line = decoder.next_out_of_line();
1456 let handles_before = decoder.remaining_handles();
1457 if let Some((inlined, num_bytes, num_handles)) =
1458 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1459 {
1460 let member_inline_size =
1461 <Package as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1462 if inlined != (member_inline_size <= 4) {
1463 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1464 }
1465 let inner_offset;
1466 let mut inner_depth = depth.clone();
1467 if inlined {
1468 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1469 inner_offset = next_offset;
1470 } else {
1471 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1472 inner_depth.increment()?;
1473 }
1474 let val_ref = self.package.get_or_insert_with(|| {
1475 fidl::new_empty!(Package, fidl::encoding::DefaultFuchsiaResourceDialect)
1476 });
1477 fidl::decode!(
1478 Package,
1479 fidl::encoding::DefaultFuchsiaResourceDialect,
1480 val_ref,
1481 decoder,
1482 inner_offset,
1483 inner_depth
1484 )?;
1485 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1486 {
1487 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1488 }
1489 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1490 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1491 }
1492 }
1493
1494 next_offset += envelope_size;
1495 _next_ordinal_to_read += 1;
1496 if next_offset >= end_offset {
1497 return Ok(());
1498 }
1499
1500 while _next_ordinal_to_read < 4 {
1502 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1503 _next_ordinal_to_read += 1;
1504 next_offset += envelope_size;
1505 }
1506
1507 let next_out_of_line = decoder.next_out_of_line();
1508 let handles_before = decoder.remaining_handles();
1509 if let Some((inlined, num_bytes, num_handles)) =
1510 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1511 {
1512 let member_inline_size =
1513 <fidl_fuchsia_mem::Data as fidl::encoding::TypeMarker>::inline_size(
1514 decoder.context,
1515 );
1516 if inlined != (member_inline_size <= 4) {
1517 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1518 }
1519 let inner_offset;
1520 let mut inner_depth = depth.clone();
1521 if inlined {
1522 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1523 inner_offset = next_offset;
1524 } else {
1525 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1526 inner_depth.increment()?;
1527 }
1528 let val_ref = self.config_values.get_or_insert_with(|| {
1529 fidl::new_empty!(
1530 fidl_fuchsia_mem::Data,
1531 fidl::encoding::DefaultFuchsiaResourceDialect
1532 )
1533 });
1534 fidl::decode!(
1535 fidl_fuchsia_mem::Data,
1536 fidl::encoding::DefaultFuchsiaResourceDialect,
1537 val_ref,
1538 decoder,
1539 inner_offset,
1540 inner_depth
1541 )?;
1542 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1543 {
1544 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1545 }
1546 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1547 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1548 }
1549 }
1550
1551 next_offset += envelope_size;
1552 _next_ordinal_to_read += 1;
1553 if next_offset >= end_offset {
1554 return Ok(());
1555 }
1556
1557 while _next_ordinal_to_read < 5 {
1559 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1560 _next_ordinal_to_read += 1;
1561 next_offset += envelope_size;
1562 }
1563
1564 let next_out_of_line = decoder.next_out_of_line();
1565 let handles_before = decoder.remaining_handles();
1566 if let Some((inlined, num_bytes, num_handles)) =
1567 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1568 {
1569 let member_inline_size =
1570 <Context as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1571 if inlined != (member_inline_size <= 4) {
1572 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1573 }
1574 let inner_offset;
1575 let mut inner_depth = depth.clone();
1576 if inlined {
1577 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1578 inner_offset = next_offset;
1579 } else {
1580 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1581 inner_depth.increment()?;
1582 }
1583 let val_ref = self.resolution_context.get_or_insert_with(|| {
1584 fidl::new_empty!(Context, fidl::encoding::DefaultFuchsiaResourceDialect)
1585 });
1586 fidl::decode!(
1587 Context,
1588 fidl::encoding::DefaultFuchsiaResourceDialect,
1589 val_ref,
1590 decoder,
1591 inner_offset,
1592 inner_depth
1593 )?;
1594 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1595 {
1596 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1597 }
1598 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1599 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1600 }
1601 }
1602
1603 next_offset += envelope_size;
1604 _next_ordinal_to_read += 1;
1605 if next_offset >= end_offset {
1606 return Ok(());
1607 }
1608
1609 while _next_ordinal_to_read < 6 {
1611 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1612 _next_ordinal_to_read += 1;
1613 next_offset += envelope_size;
1614 }
1615
1616 let next_out_of_line = decoder.next_out_of_line();
1617 let handles_before = decoder.remaining_handles();
1618 if let Some((inlined, num_bytes, num_handles)) =
1619 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1620 {
1621 let member_inline_size =
1622 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1623 if inlined != (member_inline_size <= 4) {
1624 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1625 }
1626 let inner_offset;
1627 let mut inner_depth = depth.clone();
1628 if inlined {
1629 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1630 inner_offset = next_offset;
1631 } else {
1632 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1633 inner_depth.increment()?;
1634 }
1635 let val_ref = self.abi_revision.get_or_insert_with(|| {
1636 fidl::new_empty!(u64, fidl::encoding::DefaultFuchsiaResourceDialect)
1637 });
1638 fidl::decode!(
1639 u64,
1640 fidl::encoding::DefaultFuchsiaResourceDialect,
1641 val_ref,
1642 decoder,
1643 inner_offset,
1644 inner_depth
1645 )?;
1646 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1647 {
1648 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1649 }
1650 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1651 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1652 }
1653 }
1654
1655 next_offset += envelope_size;
1656
1657 while next_offset < end_offset {
1659 _next_ordinal_to_read += 1;
1660 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1661 next_offset += envelope_size;
1662 }
1663
1664 Ok(())
1665 }
1666 }
1667
1668 impl Package {
1669 #[inline(always)]
1670 fn max_ordinal_present(&self) -> u64 {
1671 if let Some(_) = self.directory {
1672 return 2;
1673 }
1674 if let Some(_) = self.url {
1675 return 1;
1676 }
1677 0
1678 }
1679 }
1680
1681 impl fidl::encoding::ResourceTypeMarker for Package {
1682 type Borrowed<'a> = &'a mut Self;
1683 fn take_or_borrow<'a>(
1684 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
1685 ) -> Self::Borrowed<'a> {
1686 value
1687 }
1688 }
1689
1690 unsafe impl fidl::encoding::TypeMarker for Package {
1691 type Owned = Self;
1692
1693 #[inline(always)]
1694 fn inline_align(_context: fidl::encoding::Context) -> usize {
1695 8
1696 }
1697
1698 #[inline(always)]
1699 fn inline_size(_context: fidl::encoding::Context) -> usize {
1700 16
1701 }
1702 }
1703
1704 unsafe impl fidl::encoding::Encode<Package, fidl::encoding::DefaultFuchsiaResourceDialect>
1705 for &mut Package
1706 {
1707 unsafe fn encode(
1708 self,
1709 encoder: &mut fidl::encoding::Encoder<
1710 '_,
1711 fidl::encoding::DefaultFuchsiaResourceDialect,
1712 >,
1713 offset: usize,
1714 mut depth: fidl::encoding::Depth,
1715 ) -> fidl::Result<()> {
1716 encoder.debug_check_bounds::<Package>(offset);
1717 let max_ordinal: u64 = self.max_ordinal_present();
1719 encoder.write_num(max_ordinal, offset);
1720 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
1721 if max_ordinal == 0 {
1723 return Ok(());
1724 }
1725 depth.increment()?;
1726 let envelope_size = 8;
1727 let bytes_len = max_ordinal as usize * envelope_size;
1728 #[allow(unused_variables)]
1729 let offset = encoder.out_of_line_offset(bytes_len);
1730 let mut _prev_end_offset: usize = 0;
1731 if 1 > max_ordinal {
1732 return Ok(());
1733 }
1734
1735 let cur_offset: usize = (1 - 1) * envelope_size;
1738
1739 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1741
1742 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<2083>, fidl::encoding::DefaultFuchsiaResourceDialect>(
1747 self.url.as_ref().map(<fidl::encoding::BoundedString<2083> as fidl::encoding::ValueTypeMarker>::borrow),
1748 encoder, offset + cur_offset, depth
1749 )?;
1750
1751 _prev_end_offset = cur_offset + envelope_size;
1752 if 2 > max_ordinal {
1753 return Ok(());
1754 }
1755
1756 let cur_offset: usize = (2 - 1) * envelope_size;
1759
1760 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1762
1763 fidl::encoding::encode_in_envelope_optional::<
1768 fidl::encoding::Endpoint<
1769 fidl::endpoints::ClientEnd<fidl_fuchsia_io::DirectoryMarker>,
1770 >,
1771 fidl::encoding::DefaultFuchsiaResourceDialect,
1772 >(
1773 self.directory.as_mut().map(
1774 <fidl::encoding::Endpoint<
1775 fidl::endpoints::ClientEnd<fidl_fuchsia_io::DirectoryMarker>,
1776 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow,
1777 ),
1778 encoder,
1779 offset + cur_offset,
1780 depth,
1781 )?;
1782
1783 _prev_end_offset = cur_offset + envelope_size;
1784
1785 Ok(())
1786 }
1787 }
1788
1789 impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect> for Package {
1790 #[inline(always)]
1791 fn new_empty() -> Self {
1792 Self::default()
1793 }
1794
1795 unsafe fn decode(
1796 &mut self,
1797 decoder: &mut fidl::encoding::Decoder<
1798 '_,
1799 fidl::encoding::DefaultFuchsiaResourceDialect,
1800 >,
1801 offset: usize,
1802 mut depth: fidl::encoding::Depth,
1803 ) -> fidl::Result<()> {
1804 decoder.debug_check_bounds::<Self>(offset);
1805 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
1806 None => return Err(fidl::Error::NotNullable),
1807 Some(len) => len,
1808 };
1809 if len == 0 {
1811 return Ok(());
1812 };
1813 depth.increment()?;
1814 let envelope_size = 8;
1815 let bytes_len = len * envelope_size;
1816 let offset = decoder.out_of_line_offset(bytes_len)?;
1817 let mut _next_ordinal_to_read = 0;
1819 let mut next_offset = offset;
1820 let end_offset = offset + bytes_len;
1821 _next_ordinal_to_read += 1;
1822 if next_offset >= end_offset {
1823 return Ok(());
1824 }
1825
1826 while _next_ordinal_to_read < 1 {
1828 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1829 _next_ordinal_to_read += 1;
1830 next_offset += envelope_size;
1831 }
1832
1833 let next_out_of_line = decoder.next_out_of_line();
1834 let handles_before = decoder.remaining_handles();
1835 if let Some((inlined, num_bytes, num_handles)) =
1836 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1837 {
1838 let member_inline_size = <fidl::encoding::BoundedString<2083> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1839 if inlined != (member_inline_size <= 4) {
1840 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1841 }
1842 let inner_offset;
1843 let mut inner_depth = depth.clone();
1844 if inlined {
1845 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1846 inner_offset = next_offset;
1847 } else {
1848 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1849 inner_depth.increment()?;
1850 }
1851 let val_ref = self.url.get_or_insert_with(|| {
1852 fidl::new_empty!(
1853 fidl::encoding::BoundedString<2083>,
1854 fidl::encoding::DefaultFuchsiaResourceDialect
1855 )
1856 });
1857 fidl::decode!(
1858 fidl::encoding::BoundedString<2083>,
1859 fidl::encoding::DefaultFuchsiaResourceDialect,
1860 val_ref,
1861 decoder,
1862 inner_offset,
1863 inner_depth
1864 )?;
1865 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1866 {
1867 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1868 }
1869 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1870 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1871 }
1872 }
1873
1874 next_offset += envelope_size;
1875 _next_ordinal_to_read += 1;
1876 if next_offset >= end_offset {
1877 return Ok(());
1878 }
1879
1880 while _next_ordinal_to_read < 2 {
1882 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1883 _next_ordinal_to_read += 1;
1884 next_offset += envelope_size;
1885 }
1886
1887 let next_out_of_line = decoder.next_out_of_line();
1888 let handles_before = decoder.remaining_handles();
1889 if let Some((inlined, num_bytes, num_handles)) =
1890 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1891 {
1892 let member_inline_size = <fidl::encoding::Endpoint<
1893 fidl::endpoints::ClientEnd<fidl_fuchsia_io::DirectoryMarker>,
1894 > as fidl::encoding::TypeMarker>::inline_size(
1895 decoder.context
1896 );
1897 if inlined != (member_inline_size <= 4) {
1898 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1899 }
1900 let inner_offset;
1901 let mut inner_depth = depth.clone();
1902 if inlined {
1903 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1904 inner_offset = next_offset;
1905 } else {
1906 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1907 inner_depth.increment()?;
1908 }
1909 let val_ref = self.directory.get_or_insert_with(|| {
1910 fidl::new_empty!(
1911 fidl::encoding::Endpoint<
1912 fidl::endpoints::ClientEnd<fidl_fuchsia_io::DirectoryMarker>,
1913 >,
1914 fidl::encoding::DefaultFuchsiaResourceDialect
1915 )
1916 });
1917 fidl::decode!(
1918 fidl::encoding::Endpoint<
1919 fidl::endpoints::ClientEnd<fidl_fuchsia_io::DirectoryMarker>,
1920 >,
1921 fidl::encoding::DefaultFuchsiaResourceDialect,
1922 val_ref,
1923 decoder,
1924 inner_offset,
1925 inner_depth
1926 )?;
1927 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1928 {
1929 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1930 }
1931 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1932 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1933 }
1934 }
1935
1936 next_offset += envelope_size;
1937
1938 while next_offset < end_offset {
1940 _next_ordinal_to_read += 1;
1941 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1942 next_offset += envelope_size;
1943 }
1944
1945 Ok(())
1946 }
1947 }
1948}