1#![warn(clippy::all)]
4#![allow(unused_parens, unused_mut, unused_imports, nonstandard_style)]
5
6use bitflags::bitflags;
7use fdomain_client::fidl::{ControlHandle as _, FDomainFlexibleIntoResult as _, Responder as _};
8use fidl::encoding::{MessageBufFor, ProxyChannelBox, ResourceDialect};
9pub use fidl_fuchsia_component_resolution__common::*;
10use futures::future::{self, MaybeDone, TryFutureExt};
11use zx_status;
12
13#[derive(Debug, PartialEq)]
14pub struct ResolverResolveWithContextResponse {
15 pub component: Component,
16}
17
18impl fidl::Standalone<fdomain_client::fidl::FDomainResourceDialect>
19 for ResolverResolveWithContextResponse
20{
21}
22
23#[derive(Debug, PartialEq)]
24pub struct ResolverResolveResponse {
25 pub component: Component,
26}
27
28impl fidl::Standalone<fdomain_client::fidl::FDomainResourceDialect> for ResolverResolveResponse {}
29
30#[derive(Debug, Default, PartialEq)]
35pub struct Component {
36 pub url: Option<String>,
40 pub decl: Option<fdomain_fuchsia_mem::Data>,
44 pub package: Option<Package>,
57 pub config_values: Option<fdomain_fuchsia_mem::Data>,
60 pub resolution_context: Option<Context>,
74 pub abi_revision: Option<u64>,
76 #[doc(hidden)]
77 pub __source_breaking: fidl::marker::SourceBreaking,
78}
79
80impl fidl::Standalone<fdomain_client::fidl::FDomainResourceDialect> for Component {}
81
82#[derive(Debug, Default, PartialEq)]
86pub struct Package {
87 pub url: Option<String>,
89 pub directory: Option<fdomain_client::fidl::ClientEnd<fdomain_fuchsia_io::DirectoryMarker>>,
91 #[doc(hidden)]
92 pub __source_breaking: fidl::marker::SourceBreaking,
93}
94
95impl fidl::Standalone<fdomain_client::fidl::FDomainResourceDialect> for Package {}
96
97#[derive(Debug, Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash)]
98pub struct ResolverMarker;
99
100impl fdomain_client::fidl::ProtocolMarker for ResolverMarker {
101 type Proxy = ResolverProxy;
102 type RequestStream = ResolverRequestStream;
103
104 const DEBUG_NAME: &'static str = "fuchsia.component.resolution.Resolver";
105}
106impl fdomain_client::fidl::DiscoverableProtocolMarker for ResolverMarker {}
107pub type ResolverResolveResult = Result<Component, ResolverError>;
108pub type ResolverResolveWithContextResult = Result<Component, ResolverError>;
109
110pub trait ResolverProxyInterface: Send + Sync {
111 type ResolveResponseFut: std::future::Future<Output = Result<ResolverResolveResult, fidl::Error>>
112 + Send;
113 fn r#resolve(&self, component_url: &str) -> Self::ResolveResponseFut;
114 type ResolveWithContextResponseFut: std::future::Future<Output = Result<ResolverResolveWithContextResult, fidl::Error>>
115 + Send;
116 fn r#resolve_with_context(
117 &self,
118 component_url: &str,
119 context: &Context,
120 ) -> Self::ResolveWithContextResponseFut;
121}
122
123#[derive(Debug, Clone)]
124pub struct ResolverProxy {
125 client: fidl::client::Client<fdomain_client::fidl::FDomainResourceDialect>,
126}
127
128impl fdomain_client::fidl::Proxy for ResolverProxy {
129 type Protocol = ResolverMarker;
130
131 fn from_channel(inner: fdomain_client::Channel) -> Self {
132 Self::new(inner)
133 }
134
135 fn into_channel(self) -> Result<fdomain_client::Channel, Self> {
136 self.client.into_channel().map_err(|client| Self { client })
137 }
138
139 fn as_channel(&self) -> &fdomain_client::Channel {
140 self.client.as_channel()
141 }
142}
143
144impl ResolverProxy {
145 pub fn new(channel: fdomain_client::Channel) -> Self {
147 let protocol_name = <ResolverMarker as fdomain_client::fidl::ProtocolMarker>::DEBUG_NAME;
148 Self { client: fidl::client::Client::new(channel, protocol_name) }
149 }
150
151 pub fn take_event_stream(&self) -> ResolverEventStream {
157 ResolverEventStream { event_receiver: self.client.take_event_receiver() }
158 }
159
160 pub fn r#resolve(
169 &self,
170 mut component_url: &str,
171 ) -> fidl::client::QueryResponseFut<
172 ResolverResolveResult,
173 fdomain_client::fidl::FDomainResourceDialect,
174 > {
175 ResolverProxyInterface::r#resolve(self, component_url)
176 }
177
178 pub fn r#resolve_with_context(
192 &self,
193 mut component_url: &str,
194 mut context: &Context,
195 ) -> fidl::client::QueryResponseFut<
196 ResolverResolveWithContextResult,
197 fdomain_client::fidl::FDomainResourceDialect,
198 > {
199 ResolverProxyInterface::r#resolve_with_context(self, component_url, context)
200 }
201}
202
203impl ResolverProxyInterface for ResolverProxy {
204 type ResolveResponseFut = fidl::client::QueryResponseFut<
205 ResolverResolveResult,
206 fdomain_client::fidl::FDomainResourceDialect,
207 >;
208 fn r#resolve(&self, mut component_url: &str) -> Self::ResolveResponseFut {
209 fn _decode(
210 mut _buf: Result<<fdomain_client::fidl::FDomainResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
211 ) -> Result<ResolverResolveResult, fidl::Error> {
212 let _response = fidl::client::decode_transaction_body::<
213 fidl::encoding::ResultType<ResolverResolveResponse, ResolverError>,
214 fdomain_client::fidl::FDomainResourceDialect,
215 0x57f9cfe88bf1f2e5,
216 >(_buf?)?;
217 Ok(_response.map(|x| x.component))
218 }
219 self.client.send_query_and_decode::<ResolverResolveRequest, ResolverResolveResult>(
220 (component_url,),
221 0x57f9cfe88bf1f2e5,
222 fidl::encoding::DynamicFlags::empty(),
223 _decode,
224 )
225 }
226
227 type ResolveWithContextResponseFut = fidl::client::QueryResponseFut<
228 ResolverResolveWithContextResult,
229 fdomain_client::fidl::FDomainResourceDialect,
230 >;
231 fn r#resolve_with_context(
232 &self,
233 mut component_url: &str,
234 mut context: &Context,
235 ) -> Self::ResolveWithContextResponseFut {
236 fn _decode(
237 mut _buf: Result<<fdomain_client::fidl::FDomainResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
238 ) -> Result<ResolverResolveWithContextResult, fidl::Error> {
239 let _response = fidl::client::decode_transaction_body::<
240 fidl::encoding::ResultType<ResolverResolveWithContextResponse, ResolverError>,
241 fdomain_client::fidl::FDomainResourceDialect,
242 0x4d64b0de827070bd,
243 >(_buf?)?;
244 Ok(_response.map(|x| x.component))
245 }
246 self.client.send_query_and_decode::<
247 ResolverResolveWithContextRequest,
248 ResolverResolveWithContextResult,
249 >(
250 (component_url, context,),
251 0x4d64b0de827070bd,
252 fidl::encoding::DynamicFlags::empty(),
253 _decode,
254 )
255 }
256}
257
258pub struct ResolverEventStream {
259 event_receiver: fidl::client::EventReceiver<fdomain_client::fidl::FDomainResourceDialect>,
260}
261
262impl std::marker::Unpin for ResolverEventStream {}
263
264impl futures::stream::FusedStream for ResolverEventStream {
265 fn is_terminated(&self) -> bool {
266 self.event_receiver.is_terminated()
267 }
268}
269
270impl futures::Stream for ResolverEventStream {
271 type Item = Result<ResolverEvent, fidl::Error>;
272
273 fn poll_next(
274 mut self: std::pin::Pin<&mut Self>,
275 cx: &mut std::task::Context<'_>,
276 ) -> std::task::Poll<Option<Self::Item>> {
277 match futures::ready!(futures::stream::StreamExt::poll_next_unpin(
278 &mut self.event_receiver,
279 cx
280 )?) {
281 Some(buf) => std::task::Poll::Ready(Some(ResolverEvent::decode(buf))),
282 None => std::task::Poll::Ready(None),
283 }
284 }
285}
286
287#[derive(Debug)]
288pub enum ResolverEvent {
289 #[non_exhaustive]
290 _UnknownEvent {
291 ordinal: u64,
293 },
294}
295
296impl ResolverEvent {
297 fn decode(
299 mut buf: <fdomain_client::fidl::FDomainResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc,
300 ) -> Result<ResolverEvent, fidl::Error> {
301 let (bytes, _handles) = buf.split_mut();
302 let (tx_header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
303 debug_assert_eq!(tx_header.tx_id, 0);
304 match tx_header.ordinal {
305 _ if tx_header.dynamic_flags().contains(fidl::encoding::DynamicFlags::FLEXIBLE) => {
306 Ok(ResolverEvent::_UnknownEvent { ordinal: tx_header.ordinal })
307 }
308 _ => Err(fidl::Error::UnknownOrdinal {
309 ordinal: tx_header.ordinal,
310 protocol_name: <ResolverMarker as fdomain_client::fidl::ProtocolMarker>::DEBUG_NAME,
311 }),
312 }
313 }
314}
315
316pub struct ResolverRequestStream {
318 inner: std::sync::Arc<fidl::ServeInner<fdomain_client::fidl::FDomainResourceDialect>>,
319 is_terminated: bool,
320}
321
322impl std::marker::Unpin for ResolverRequestStream {}
323
324impl futures::stream::FusedStream for ResolverRequestStream {
325 fn is_terminated(&self) -> bool {
326 self.is_terminated
327 }
328}
329
330impl fdomain_client::fidl::RequestStream for ResolverRequestStream {
331 type Protocol = ResolverMarker;
332 type ControlHandle = ResolverControlHandle;
333
334 fn from_channel(channel: fdomain_client::Channel) -> Self {
335 Self { inner: std::sync::Arc::new(fidl::ServeInner::new(channel)), is_terminated: false }
336 }
337
338 fn control_handle(&self) -> Self::ControlHandle {
339 ResolverControlHandle { inner: self.inner.clone() }
340 }
341
342 fn into_inner(
343 self,
344 ) -> (::std::sync::Arc<fidl::ServeInner<fdomain_client::fidl::FDomainResourceDialect>>, bool)
345 {
346 (self.inner, self.is_terminated)
347 }
348
349 fn from_inner(
350 inner: std::sync::Arc<fidl::ServeInner<fdomain_client::fidl::FDomainResourceDialect>>,
351 is_terminated: bool,
352 ) -> Self {
353 Self { inner, is_terminated }
354 }
355}
356
357impl futures::Stream for ResolverRequestStream {
358 type Item = Result<ResolverRequest, fidl::Error>;
359
360 fn poll_next(
361 mut self: std::pin::Pin<&mut Self>,
362 cx: &mut std::task::Context<'_>,
363 ) -> std::task::Poll<Option<Self::Item>> {
364 let this = &mut *self;
365 if this.inner.check_shutdown(cx) {
366 this.is_terminated = true;
367 return std::task::Poll::Ready(None);
368 }
369 if this.is_terminated {
370 panic!("polled ResolverRequestStream after completion");
371 }
372 fidl::encoding::with_tls_decode_buf::<_, fdomain_client::fidl::FDomainResourceDialect>(
373 |bytes, handles| {
374 match this.inner.channel().read_etc(cx, bytes, handles) {
375 std::task::Poll::Ready(Ok(())) => {}
376 std::task::Poll::Pending => return std::task::Poll::Pending,
377 std::task::Poll::Ready(Err(None)) => {
378 this.is_terminated = true;
379 return std::task::Poll::Ready(None);
380 }
381 std::task::Poll::Ready(Err(Some(e))) => {
382 return std::task::Poll::Ready(Some(Err(fidl::Error::ServerRequestRead(
383 e.into(),
384 ))))
385 }
386 }
387
388 let (header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
390
391 std::task::Poll::Ready(Some(match header.ordinal {
392 0x57f9cfe88bf1f2e5 => {
393 header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
394 let mut req = fidl::new_empty!(
395 ResolverResolveRequest,
396 fdomain_client::fidl::FDomainResourceDialect
397 );
398 fidl::encoding::Decoder::<fdomain_client::fidl::FDomainResourceDialect>::decode_into::<ResolverResolveRequest>(&header, _body_bytes, handles, &mut req)?;
399 let control_handle = ResolverControlHandle { inner: this.inner.clone() };
400 Ok(ResolverRequest::Resolve {
401 component_url: req.component_url,
402
403 responder: ResolverResolveResponder {
404 control_handle: std::mem::ManuallyDrop::new(control_handle),
405 tx_id: header.tx_id,
406 },
407 })
408 }
409 0x4d64b0de827070bd => {
410 header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
411 let mut req = fidl::new_empty!(
412 ResolverResolveWithContextRequest,
413 fdomain_client::fidl::FDomainResourceDialect
414 );
415 fidl::encoding::Decoder::<fdomain_client::fidl::FDomainResourceDialect>::decode_into::<ResolverResolveWithContextRequest>(&header, _body_bytes, handles, &mut req)?;
416 let control_handle = ResolverControlHandle { inner: this.inner.clone() };
417 Ok(ResolverRequest::ResolveWithContext {
418 component_url: req.component_url,
419 context: req.context,
420
421 responder: ResolverResolveWithContextResponder {
422 control_handle: std::mem::ManuallyDrop::new(control_handle),
423 tx_id: header.tx_id,
424 },
425 })
426 }
427 _ if header.tx_id == 0
428 && header
429 .dynamic_flags()
430 .contains(fidl::encoding::DynamicFlags::FLEXIBLE) =>
431 {
432 Ok(ResolverRequest::_UnknownMethod {
433 ordinal: header.ordinal,
434 control_handle: ResolverControlHandle { inner: this.inner.clone() },
435 method_type: fidl::MethodType::OneWay,
436 })
437 }
438 _ if header
439 .dynamic_flags()
440 .contains(fidl::encoding::DynamicFlags::FLEXIBLE) =>
441 {
442 this.inner.send_framework_err(
443 fidl::encoding::FrameworkErr::UnknownMethod,
444 header.tx_id,
445 header.ordinal,
446 header.dynamic_flags(),
447 (bytes, handles),
448 )?;
449 Ok(ResolverRequest::_UnknownMethod {
450 ordinal: header.ordinal,
451 control_handle: ResolverControlHandle { inner: this.inner.clone() },
452 method_type: fidl::MethodType::TwoWay,
453 })
454 }
455 _ => Err(fidl::Error::UnknownOrdinal {
456 ordinal: header.ordinal,
457 protocol_name:
458 <ResolverMarker as fdomain_client::fidl::ProtocolMarker>::DEBUG_NAME,
459 }),
460 }))
461 },
462 )
463 }
464}
465
466#[derive(Debug)]
479pub enum ResolverRequest {
480 Resolve { component_url: String, responder: ResolverResolveResponder },
489 ResolveWithContext {
503 component_url: String,
504 context: Context,
505 responder: ResolverResolveWithContextResponder,
506 },
507 #[non_exhaustive]
509 _UnknownMethod {
510 ordinal: u64,
512 control_handle: ResolverControlHandle,
513 method_type: fidl::MethodType,
514 },
515}
516
517impl ResolverRequest {
518 #[allow(irrefutable_let_patterns)]
519 pub fn into_resolve(self) -> Option<(String, ResolverResolveResponder)> {
520 if let ResolverRequest::Resolve { component_url, responder } = self {
521 Some((component_url, responder))
522 } else {
523 None
524 }
525 }
526
527 #[allow(irrefutable_let_patterns)]
528 pub fn into_resolve_with_context(
529 self,
530 ) -> Option<(String, Context, ResolverResolveWithContextResponder)> {
531 if let ResolverRequest::ResolveWithContext { component_url, context, responder } = self {
532 Some((component_url, context, responder))
533 } else {
534 None
535 }
536 }
537
538 pub fn method_name(&self) -> &'static str {
540 match *self {
541 ResolverRequest::Resolve { .. } => "resolve",
542 ResolverRequest::ResolveWithContext { .. } => "resolve_with_context",
543 ResolverRequest::_UnknownMethod { method_type: fidl::MethodType::OneWay, .. } => {
544 "unknown one-way method"
545 }
546 ResolverRequest::_UnknownMethod { method_type: fidl::MethodType::TwoWay, .. } => {
547 "unknown two-way method"
548 }
549 }
550 }
551}
552
553#[derive(Debug, Clone)]
554pub struct ResolverControlHandle {
555 inner: std::sync::Arc<fidl::ServeInner<fdomain_client::fidl::FDomainResourceDialect>>,
556}
557
558impl fdomain_client::fidl::ControlHandle for ResolverControlHandle {
559 fn shutdown(&self) {
560 self.inner.shutdown()
561 }
562
563 fn is_closed(&self) -> bool {
564 self.inner.channel().is_closed()
565 }
566 fn on_closed(&self) -> fdomain_client::OnFDomainSignals {
567 self.inner.channel().on_closed()
568 }
569}
570
571impl ResolverControlHandle {}
572
573#[must_use = "FIDL methods require a response to be sent"]
574#[derive(Debug)]
575pub struct ResolverResolveResponder {
576 control_handle: std::mem::ManuallyDrop<ResolverControlHandle>,
577 tx_id: u32,
578}
579
580impl std::ops::Drop for ResolverResolveResponder {
584 fn drop(&mut self) {
585 self.control_handle.shutdown();
586 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
588 }
589}
590
591impl fdomain_client::fidl::Responder for ResolverResolveResponder {
592 type ControlHandle = ResolverControlHandle;
593
594 fn control_handle(&self) -> &ResolverControlHandle {
595 &self.control_handle
596 }
597
598 fn drop_without_shutdown(mut self) {
599 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
601 std::mem::forget(self);
603 }
604}
605
606impl ResolverResolveResponder {
607 pub fn send(self, mut result: Result<Component, ResolverError>) -> Result<(), fidl::Error> {
611 let _result = self.send_raw(result);
612 if _result.is_err() {
613 self.control_handle.shutdown();
614 }
615 self.drop_without_shutdown();
616 _result
617 }
618
619 pub fn send_no_shutdown_on_err(
621 self,
622 mut result: Result<Component, ResolverError>,
623 ) -> Result<(), fidl::Error> {
624 let _result = self.send_raw(result);
625 self.drop_without_shutdown();
626 _result
627 }
628
629 fn send_raw(&self, mut result: Result<Component, ResolverError>) -> Result<(), fidl::Error> {
630 self.control_handle
631 .inner
632 .send::<fidl::encoding::ResultType<ResolverResolveResponse, ResolverError>>(
633 result.as_mut().map_err(|e| *e).map(|component| (component,)),
634 self.tx_id,
635 0x57f9cfe88bf1f2e5,
636 fidl::encoding::DynamicFlags::empty(),
637 )
638 }
639}
640
641#[must_use = "FIDL methods require a response to be sent"]
642#[derive(Debug)]
643pub struct ResolverResolveWithContextResponder {
644 control_handle: std::mem::ManuallyDrop<ResolverControlHandle>,
645 tx_id: u32,
646}
647
648impl std::ops::Drop for ResolverResolveWithContextResponder {
652 fn drop(&mut self) {
653 self.control_handle.shutdown();
654 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
656 }
657}
658
659impl fdomain_client::fidl::Responder for ResolverResolveWithContextResponder {
660 type ControlHandle = ResolverControlHandle;
661
662 fn control_handle(&self) -> &ResolverControlHandle {
663 &self.control_handle
664 }
665
666 fn drop_without_shutdown(mut self) {
667 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
669 std::mem::forget(self);
671 }
672}
673
674impl ResolverResolveWithContextResponder {
675 pub fn send(self, mut result: Result<Component, ResolverError>) -> Result<(), fidl::Error> {
679 let _result = self.send_raw(result);
680 if _result.is_err() {
681 self.control_handle.shutdown();
682 }
683 self.drop_without_shutdown();
684 _result
685 }
686
687 pub fn send_no_shutdown_on_err(
689 self,
690 mut result: Result<Component, ResolverError>,
691 ) -> Result<(), fidl::Error> {
692 let _result = self.send_raw(result);
693 self.drop_without_shutdown();
694 _result
695 }
696
697 fn send_raw(&self, mut result: Result<Component, ResolverError>) -> Result<(), fidl::Error> {
698 self.control_handle.inner.send::<fidl::encoding::ResultType<
699 ResolverResolveWithContextResponse,
700 ResolverError,
701 >>(
702 result.as_mut().map_err(|e| *e).map(|component| (component,)),
703 self.tx_id,
704 0x4d64b0de827070bd,
705 fidl::encoding::DynamicFlags::empty(),
706 )
707 }
708}
709
710mod internal {
711 use super::*;
712
713 impl fidl::encoding::ResourceTypeMarker for ResolverResolveWithContextResponse {
714 type Borrowed<'a> = &'a mut Self;
715 fn take_or_borrow<'a>(
716 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
717 ) -> Self::Borrowed<'a> {
718 value
719 }
720 }
721
722 unsafe impl fidl::encoding::TypeMarker for ResolverResolveWithContextResponse {
723 type Owned = Self;
724
725 #[inline(always)]
726 fn inline_align(_context: fidl::encoding::Context) -> usize {
727 8
728 }
729
730 #[inline(always)]
731 fn inline_size(_context: fidl::encoding::Context) -> usize {
732 16
733 }
734 }
735
736 unsafe impl
737 fidl::encoding::Encode<
738 ResolverResolveWithContextResponse,
739 fdomain_client::fidl::FDomainResourceDialect,
740 > for &mut ResolverResolveWithContextResponse
741 {
742 #[inline]
743 unsafe fn encode(
744 self,
745 encoder: &mut fidl::encoding::Encoder<'_, fdomain_client::fidl::FDomainResourceDialect>,
746 offset: usize,
747 _depth: fidl::encoding::Depth,
748 ) -> fidl::Result<()> {
749 encoder.debug_check_bounds::<ResolverResolveWithContextResponse>(offset);
750 fidl::encoding::Encode::<
752 ResolverResolveWithContextResponse,
753 fdomain_client::fidl::FDomainResourceDialect,
754 >::encode(
755 (<Component as fidl::encoding::ResourceTypeMarker>::take_or_borrow(
756 &mut self.component,
757 ),),
758 encoder,
759 offset,
760 _depth,
761 )
762 }
763 }
764 unsafe impl<T0: fidl::encoding::Encode<Component, fdomain_client::fidl::FDomainResourceDialect>>
765 fidl::encoding::Encode<
766 ResolverResolveWithContextResponse,
767 fdomain_client::fidl::FDomainResourceDialect,
768 > for (T0,)
769 {
770 #[inline]
771 unsafe fn encode(
772 self,
773 encoder: &mut fidl::encoding::Encoder<'_, fdomain_client::fidl::FDomainResourceDialect>,
774 offset: usize,
775 depth: fidl::encoding::Depth,
776 ) -> fidl::Result<()> {
777 encoder.debug_check_bounds::<ResolverResolveWithContextResponse>(offset);
778 self.0.encode(encoder, offset + 0, depth)?;
782 Ok(())
783 }
784 }
785
786 impl fidl::encoding::Decode<Self, fdomain_client::fidl::FDomainResourceDialect>
787 for ResolverResolveWithContextResponse
788 {
789 #[inline(always)]
790 fn new_empty() -> Self {
791 Self {
792 component: fidl::new_empty!(
793 Component,
794 fdomain_client::fidl::FDomainResourceDialect
795 ),
796 }
797 }
798
799 #[inline]
800 unsafe fn decode(
801 &mut self,
802 decoder: &mut fidl::encoding::Decoder<'_, fdomain_client::fidl::FDomainResourceDialect>,
803 offset: usize,
804 _depth: fidl::encoding::Depth,
805 ) -> fidl::Result<()> {
806 decoder.debug_check_bounds::<Self>(offset);
807 fidl::decode!(
809 Component,
810 fdomain_client::fidl::FDomainResourceDialect,
811 &mut self.component,
812 decoder,
813 offset + 0,
814 _depth
815 )?;
816 Ok(())
817 }
818 }
819
820 impl fidl::encoding::ResourceTypeMarker for ResolverResolveResponse {
821 type Borrowed<'a> = &'a mut Self;
822 fn take_or_borrow<'a>(
823 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
824 ) -> Self::Borrowed<'a> {
825 value
826 }
827 }
828
829 unsafe impl fidl::encoding::TypeMarker for ResolverResolveResponse {
830 type Owned = Self;
831
832 #[inline(always)]
833 fn inline_align(_context: fidl::encoding::Context) -> usize {
834 8
835 }
836
837 #[inline(always)]
838 fn inline_size(_context: fidl::encoding::Context) -> usize {
839 16
840 }
841 }
842
843 unsafe impl
844 fidl::encoding::Encode<
845 ResolverResolveResponse,
846 fdomain_client::fidl::FDomainResourceDialect,
847 > for &mut ResolverResolveResponse
848 {
849 #[inline]
850 unsafe fn encode(
851 self,
852 encoder: &mut fidl::encoding::Encoder<'_, fdomain_client::fidl::FDomainResourceDialect>,
853 offset: usize,
854 _depth: fidl::encoding::Depth,
855 ) -> fidl::Result<()> {
856 encoder.debug_check_bounds::<ResolverResolveResponse>(offset);
857 fidl::encoding::Encode::<
859 ResolverResolveResponse,
860 fdomain_client::fidl::FDomainResourceDialect,
861 >::encode(
862 (<Component as fidl::encoding::ResourceTypeMarker>::take_or_borrow(
863 &mut self.component,
864 ),),
865 encoder,
866 offset,
867 _depth,
868 )
869 }
870 }
871 unsafe impl<T0: fidl::encoding::Encode<Component, fdomain_client::fidl::FDomainResourceDialect>>
872 fidl::encoding::Encode<
873 ResolverResolveResponse,
874 fdomain_client::fidl::FDomainResourceDialect,
875 > for (T0,)
876 {
877 #[inline]
878 unsafe fn encode(
879 self,
880 encoder: &mut fidl::encoding::Encoder<'_, fdomain_client::fidl::FDomainResourceDialect>,
881 offset: usize,
882 depth: fidl::encoding::Depth,
883 ) -> fidl::Result<()> {
884 encoder.debug_check_bounds::<ResolverResolveResponse>(offset);
885 self.0.encode(encoder, offset + 0, depth)?;
889 Ok(())
890 }
891 }
892
893 impl fidl::encoding::Decode<Self, fdomain_client::fidl::FDomainResourceDialect>
894 for ResolverResolveResponse
895 {
896 #[inline(always)]
897 fn new_empty() -> Self {
898 Self {
899 component: fidl::new_empty!(
900 Component,
901 fdomain_client::fidl::FDomainResourceDialect
902 ),
903 }
904 }
905
906 #[inline]
907 unsafe fn decode(
908 &mut self,
909 decoder: &mut fidl::encoding::Decoder<'_, fdomain_client::fidl::FDomainResourceDialect>,
910 offset: usize,
911 _depth: fidl::encoding::Depth,
912 ) -> fidl::Result<()> {
913 decoder.debug_check_bounds::<Self>(offset);
914 fidl::decode!(
916 Component,
917 fdomain_client::fidl::FDomainResourceDialect,
918 &mut self.component,
919 decoder,
920 offset + 0,
921 _depth
922 )?;
923 Ok(())
924 }
925 }
926
927 impl Component {
928 #[inline(always)]
929 fn max_ordinal_present(&self) -> u64 {
930 if let Some(_) = self.abi_revision {
931 return 6;
932 }
933 if let Some(_) = self.resolution_context {
934 return 5;
935 }
936 if let Some(_) = self.config_values {
937 return 4;
938 }
939 if let Some(_) = self.package {
940 return 3;
941 }
942 if let Some(_) = self.decl {
943 return 2;
944 }
945 if let Some(_) = self.url {
946 return 1;
947 }
948 0
949 }
950 }
951
952 impl fidl::encoding::ResourceTypeMarker for Component {
953 type Borrowed<'a> = &'a mut Self;
954 fn take_or_borrow<'a>(
955 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
956 ) -> Self::Borrowed<'a> {
957 value
958 }
959 }
960
961 unsafe impl fidl::encoding::TypeMarker for Component {
962 type Owned = Self;
963
964 #[inline(always)]
965 fn inline_align(_context: fidl::encoding::Context) -> usize {
966 8
967 }
968
969 #[inline(always)]
970 fn inline_size(_context: fidl::encoding::Context) -> usize {
971 16
972 }
973 }
974
975 unsafe impl fidl::encoding::Encode<Component, fdomain_client::fidl::FDomainResourceDialect>
976 for &mut Component
977 {
978 unsafe fn encode(
979 self,
980 encoder: &mut fidl::encoding::Encoder<'_, fdomain_client::fidl::FDomainResourceDialect>,
981 offset: usize,
982 mut depth: fidl::encoding::Depth,
983 ) -> fidl::Result<()> {
984 encoder.debug_check_bounds::<Component>(offset);
985 let max_ordinal: u64 = self.max_ordinal_present();
987 encoder.write_num(max_ordinal, offset);
988 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
989 if max_ordinal == 0 {
991 return Ok(());
992 }
993 depth.increment()?;
994 let envelope_size = 8;
995 let bytes_len = max_ordinal as usize * envelope_size;
996 #[allow(unused_variables)]
997 let offset = encoder.out_of_line_offset(bytes_len);
998 let mut _prev_end_offset: usize = 0;
999 if 1 > max_ordinal {
1000 return Ok(());
1001 }
1002
1003 let cur_offset: usize = (1 - 1) * envelope_size;
1006
1007 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1009
1010 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<2083>, fdomain_client::fidl::FDomainResourceDialect>(
1015 self.url.as_ref().map(<fidl::encoding::BoundedString<2083> as fidl::encoding::ValueTypeMarker>::borrow),
1016 encoder, offset + cur_offset, depth
1017 )?;
1018
1019 _prev_end_offset = cur_offset + envelope_size;
1020 if 2 > max_ordinal {
1021 return Ok(());
1022 }
1023
1024 let cur_offset: usize = (2 - 1) * envelope_size;
1027
1028 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1030
1031 fidl::encoding::encode_in_envelope_optional::<fdomain_fuchsia_mem::Data, fdomain_client::fidl::FDomainResourceDialect>(
1036 self.decl.as_mut().map(<fdomain_fuchsia_mem::Data as fidl::encoding::ResourceTypeMarker>::take_or_borrow),
1037 encoder, offset + cur_offset, depth
1038 )?;
1039
1040 _prev_end_offset = cur_offset + envelope_size;
1041 if 3 > max_ordinal {
1042 return Ok(());
1043 }
1044
1045 let cur_offset: usize = (3 - 1) * envelope_size;
1048
1049 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1051
1052 fidl::encoding::encode_in_envelope_optional::<
1057 Package,
1058 fdomain_client::fidl::FDomainResourceDialect,
1059 >(
1060 self.package
1061 .as_mut()
1062 .map(<Package as fidl::encoding::ResourceTypeMarker>::take_or_borrow),
1063 encoder,
1064 offset + cur_offset,
1065 depth,
1066 )?;
1067
1068 _prev_end_offset = cur_offset + envelope_size;
1069 if 4 > max_ordinal {
1070 return Ok(());
1071 }
1072
1073 let cur_offset: usize = (4 - 1) * envelope_size;
1076
1077 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1079
1080 fidl::encoding::encode_in_envelope_optional::<fdomain_fuchsia_mem::Data, fdomain_client::fidl::FDomainResourceDialect>(
1085 self.config_values.as_mut().map(<fdomain_fuchsia_mem::Data as fidl::encoding::ResourceTypeMarker>::take_or_borrow),
1086 encoder, offset + cur_offset, depth
1087 )?;
1088
1089 _prev_end_offset = cur_offset + envelope_size;
1090 if 5 > max_ordinal {
1091 return Ok(());
1092 }
1093
1094 let cur_offset: usize = (5 - 1) * envelope_size;
1097
1098 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1100
1101 fidl::encoding::encode_in_envelope_optional::<
1106 Context,
1107 fdomain_client::fidl::FDomainResourceDialect,
1108 >(
1109 self.resolution_context
1110 .as_ref()
1111 .map(<Context as fidl::encoding::ValueTypeMarker>::borrow),
1112 encoder,
1113 offset + cur_offset,
1114 depth,
1115 )?;
1116
1117 _prev_end_offset = cur_offset + envelope_size;
1118 if 6 > max_ordinal {
1119 return Ok(());
1120 }
1121
1122 let cur_offset: usize = (6 - 1) * envelope_size;
1125
1126 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1128
1129 fidl::encoding::encode_in_envelope_optional::<
1134 u64,
1135 fdomain_client::fidl::FDomainResourceDialect,
1136 >(
1137 self.abi_revision.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
1138 encoder,
1139 offset + cur_offset,
1140 depth,
1141 )?;
1142
1143 _prev_end_offset = cur_offset + envelope_size;
1144
1145 Ok(())
1146 }
1147 }
1148
1149 impl fidl::encoding::Decode<Self, fdomain_client::fidl::FDomainResourceDialect> for Component {
1150 #[inline(always)]
1151 fn new_empty() -> Self {
1152 Self::default()
1153 }
1154
1155 unsafe fn decode(
1156 &mut self,
1157 decoder: &mut fidl::encoding::Decoder<'_, fdomain_client::fidl::FDomainResourceDialect>,
1158 offset: usize,
1159 mut depth: fidl::encoding::Depth,
1160 ) -> fidl::Result<()> {
1161 decoder.debug_check_bounds::<Self>(offset);
1162 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
1163 None => return Err(fidl::Error::NotNullable),
1164 Some(len) => len,
1165 };
1166 if len == 0 {
1168 return Ok(());
1169 };
1170 depth.increment()?;
1171 let envelope_size = 8;
1172 let bytes_len = len * envelope_size;
1173 let offset = decoder.out_of_line_offset(bytes_len)?;
1174 let mut _next_ordinal_to_read = 0;
1176 let mut next_offset = offset;
1177 let end_offset = offset + bytes_len;
1178 _next_ordinal_to_read += 1;
1179 if next_offset >= end_offset {
1180 return Ok(());
1181 }
1182
1183 while _next_ordinal_to_read < 1 {
1185 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1186 _next_ordinal_to_read += 1;
1187 next_offset += envelope_size;
1188 }
1189
1190 let next_out_of_line = decoder.next_out_of_line();
1191 let handles_before = decoder.remaining_handles();
1192 if let Some((inlined, num_bytes, num_handles)) =
1193 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1194 {
1195 let member_inline_size = <fidl::encoding::BoundedString<2083> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1196 if inlined != (member_inline_size <= 4) {
1197 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1198 }
1199 let inner_offset;
1200 let mut inner_depth = depth.clone();
1201 if inlined {
1202 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1203 inner_offset = next_offset;
1204 } else {
1205 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1206 inner_depth.increment()?;
1207 }
1208 let val_ref = self.url.get_or_insert_with(|| {
1209 fidl::new_empty!(
1210 fidl::encoding::BoundedString<2083>,
1211 fdomain_client::fidl::FDomainResourceDialect
1212 )
1213 });
1214 fidl::decode!(
1215 fidl::encoding::BoundedString<2083>,
1216 fdomain_client::fidl::FDomainResourceDialect,
1217 val_ref,
1218 decoder,
1219 inner_offset,
1220 inner_depth
1221 )?;
1222 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1223 {
1224 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1225 }
1226 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1227 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1228 }
1229 }
1230
1231 next_offset += envelope_size;
1232 _next_ordinal_to_read += 1;
1233 if next_offset >= end_offset {
1234 return Ok(());
1235 }
1236
1237 while _next_ordinal_to_read < 2 {
1239 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1240 _next_ordinal_to_read += 1;
1241 next_offset += envelope_size;
1242 }
1243
1244 let next_out_of_line = decoder.next_out_of_line();
1245 let handles_before = decoder.remaining_handles();
1246 if let Some((inlined, num_bytes, num_handles)) =
1247 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1248 {
1249 let member_inline_size =
1250 <fdomain_fuchsia_mem::Data as fidl::encoding::TypeMarker>::inline_size(
1251 decoder.context,
1252 );
1253 if inlined != (member_inline_size <= 4) {
1254 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1255 }
1256 let inner_offset;
1257 let mut inner_depth = depth.clone();
1258 if inlined {
1259 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1260 inner_offset = next_offset;
1261 } else {
1262 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1263 inner_depth.increment()?;
1264 }
1265 let val_ref = self.decl.get_or_insert_with(|| {
1266 fidl::new_empty!(
1267 fdomain_fuchsia_mem::Data,
1268 fdomain_client::fidl::FDomainResourceDialect
1269 )
1270 });
1271 fidl::decode!(
1272 fdomain_fuchsia_mem::Data,
1273 fdomain_client::fidl::FDomainResourceDialect,
1274 val_ref,
1275 decoder,
1276 inner_offset,
1277 inner_depth
1278 )?;
1279 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1280 {
1281 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1282 }
1283 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1284 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1285 }
1286 }
1287
1288 next_offset += envelope_size;
1289 _next_ordinal_to_read += 1;
1290 if next_offset >= end_offset {
1291 return Ok(());
1292 }
1293
1294 while _next_ordinal_to_read < 3 {
1296 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1297 _next_ordinal_to_read += 1;
1298 next_offset += envelope_size;
1299 }
1300
1301 let next_out_of_line = decoder.next_out_of_line();
1302 let handles_before = decoder.remaining_handles();
1303 if let Some((inlined, num_bytes, num_handles)) =
1304 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1305 {
1306 let member_inline_size =
1307 <Package as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1308 if inlined != (member_inline_size <= 4) {
1309 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1310 }
1311 let inner_offset;
1312 let mut inner_depth = depth.clone();
1313 if inlined {
1314 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1315 inner_offset = next_offset;
1316 } else {
1317 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1318 inner_depth.increment()?;
1319 }
1320 let val_ref = self.package.get_or_insert_with(|| {
1321 fidl::new_empty!(Package, fdomain_client::fidl::FDomainResourceDialect)
1322 });
1323 fidl::decode!(
1324 Package,
1325 fdomain_client::fidl::FDomainResourceDialect,
1326 val_ref,
1327 decoder,
1328 inner_offset,
1329 inner_depth
1330 )?;
1331 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1332 {
1333 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1334 }
1335 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1336 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1337 }
1338 }
1339
1340 next_offset += envelope_size;
1341 _next_ordinal_to_read += 1;
1342 if next_offset >= end_offset {
1343 return Ok(());
1344 }
1345
1346 while _next_ordinal_to_read < 4 {
1348 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1349 _next_ordinal_to_read += 1;
1350 next_offset += envelope_size;
1351 }
1352
1353 let next_out_of_line = decoder.next_out_of_line();
1354 let handles_before = decoder.remaining_handles();
1355 if let Some((inlined, num_bytes, num_handles)) =
1356 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1357 {
1358 let member_inline_size =
1359 <fdomain_fuchsia_mem::Data as fidl::encoding::TypeMarker>::inline_size(
1360 decoder.context,
1361 );
1362 if inlined != (member_inline_size <= 4) {
1363 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1364 }
1365 let inner_offset;
1366 let mut inner_depth = depth.clone();
1367 if inlined {
1368 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1369 inner_offset = next_offset;
1370 } else {
1371 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1372 inner_depth.increment()?;
1373 }
1374 let val_ref = self.config_values.get_or_insert_with(|| {
1375 fidl::new_empty!(
1376 fdomain_fuchsia_mem::Data,
1377 fdomain_client::fidl::FDomainResourceDialect
1378 )
1379 });
1380 fidl::decode!(
1381 fdomain_fuchsia_mem::Data,
1382 fdomain_client::fidl::FDomainResourceDialect,
1383 val_ref,
1384 decoder,
1385 inner_offset,
1386 inner_depth
1387 )?;
1388 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1389 {
1390 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1391 }
1392 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1393 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1394 }
1395 }
1396
1397 next_offset += envelope_size;
1398 _next_ordinal_to_read += 1;
1399 if next_offset >= end_offset {
1400 return Ok(());
1401 }
1402
1403 while _next_ordinal_to_read < 5 {
1405 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1406 _next_ordinal_to_read += 1;
1407 next_offset += envelope_size;
1408 }
1409
1410 let next_out_of_line = decoder.next_out_of_line();
1411 let handles_before = decoder.remaining_handles();
1412 if let Some((inlined, num_bytes, num_handles)) =
1413 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1414 {
1415 let member_inline_size =
1416 <Context as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1417 if inlined != (member_inline_size <= 4) {
1418 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1419 }
1420 let inner_offset;
1421 let mut inner_depth = depth.clone();
1422 if inlined {
1423 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1424 inner_offset = next_offset;
1425 } else {
1426 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1427 inner_depth.increment()?;
1428 }
1429 let val_ref = self.resolution_context.get_or_insert_with(|| {
1430 fidl::new_empty!(Context, fdomain_client::fidl::FDomainResourceDialect)
1431 });
1432 fidl::decode!(
1433 Context,
1434 fdomain_client::fidl::FDomainResourceDialect,
1435 val_ref,
1436 decoder,
1437 inner_offset,
1438 inner_depth
1439 )?;
1440 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1441 {
1442 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1443 }
1444 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1445 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1446 }
1447 }
1448
1449 next_offset += envelope_size;
1450 _next_ordinal_to_read += 1;
1451 if next_offset >= end_offset {
1452 return Ok(());
1453 }
1454
1455 while _next_ordinal_to_read < 6 {
1457 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1458 _next_ordinal_to_read += 1;
1459 next_offset += envelope_size;
1460 }
1461
1462 let next_out_of_line = decoder.next_out_of_line();
1463 let handles_before = decoder.remaining_handles();
1464 if let Some((inlined, num_bytes, num_handles)) =
1465 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1466 {
1467 let member_inline_size =
1468 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1469 if inlined != (member_inline_size <= 4) {
1470 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1471 }
1472 let inner_offset;
1473 let mut inner_depth = depth.clone();
1474 if inlined {
1475 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1476 inner_offset = next_offset;
1477 } else {
1478 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1479 inner_depth.increment()?;
1480 }
1481 let val_ref = self.abi_revision.get_or_insert_with(|| {
1482 fidl::new_empty!(u64, fdomain_client::fidl::FDomainResourceDialect)
1483 });
1484 fidl::decode!(
1485 u64,
1486 fdomain_client::fidl::FDomainResourceDialect,
1487 val_ref,
1488 decoder,
1489 inner_offset,
1490 inner_depth
1491 )?;
1492 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1493 {
1494 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1495 }
1496 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1497 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1498 }
1499 }
1500
1501 next_offset += envelope_size;
1502
1503 while next_offset < end_offset {
1505 _next_ordinal_to_read += 1;
1506 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1507 next_offset += envelope_size;
1508 }
1509
1510 Ok(())
1511 }
1512 }
1513
1514 impl Package {
1515 #[inline(always)]
1516 fn max_ordinal_present(&self) -> u64 {
1517 if let Some(_) = self.directory {
1518 return 2;
1519 }
1520 if let Some(_) = self.url {
1521 return 1;
1522 }
1523 0
1524 }
1525 }
1526
1527 impl fidl::encoding::ResourceTypeMarker for Package {
1528 type Borrowed<'a> = &'a mut Self;
1529 fn take_or_borrow<'a>(
1530 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
1531 ) -> Self::Borrowed<'a> {
1532 value
1533 }
1534 }
1535
1536 unsafe impl fidl::encoding::TypeMarker for Package {
1537 type Owned = Self;
1538
1539 #[inline(always)]
1540 fn inline_align(_context: fidl::encoding::Context) -> usize {
1541 8
1542 }
1543
1544 #[inline(always)]
1545 fn inline_size(_context: fidl::encoding::Context) -> usize {
1546 16
1547 }
1548 }
1549
1550 unsafe impl fidl::encoding::Encode<Package, fdomain_client::fidl::FDomainResourceDialect>
1551 for &mut Package
1552 {
1553 unsafe fn encode(
1554 self,
1555 encoder: &mut fidl::encoding::Encoder<'_, fdomain_client::fidl::FDomainResourceDialect>,
1556 offset: usize,
1557 mut depth: fidl::encoding::Depth,
1558 ) -> fidl::Result<()> {
1559 encoder.debug_check_bounds::<Package>(offset);
1560 let max_ordinal: u64 = self.max_ordinal_present();
1562 encoder.write_num(max_ordinal, offset);
1563 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
1564 if max_ordinal == 0 {
1566 return Ok(());
1567 }
1568 depth.increment()?;
1569 let envelope_size = 8;
1570 let bytes_len = max_ordinal as usize * envelope_size;
1571 #[allow(unused_variables)]
1572 let offset = encoder.out_of_line_offset(bytes_len);
1573 let mut _prev_end_offset: usize = 0;
1574 if 1 > max_ordinal {
1575 return Ok(());
1576 }
1577
1578 let cur_offset: usize = (1 - 1) * envelope_size;
1581
1582 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1584
1585 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<2083>, fdomain_client::fidl::FDomainResourceDialect>(
1590 self.url.as_ref().map(<fidl::encoding::BoundedString<2083> as fidl::encoding::ValueTypeMarker>::borrow),
1591 encoder, offset + cur_offset, depth
1592 )?;
1593
1594 _prev_end_offset = cur_offset + envelope_size;
1595 if 2 > max_ordinal {
1596 return Ok(());
1597 }
1598
1599 let cur_offset: usize = (2 - 1) * envelope_size;
1602
1603 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1605
1606 fidl::encoding::encode_in_envelope_optional::<
1611 fidl::encoding::Endpoint<
1612 fdomain_client::fidl::ClientEnd<fdomain_fuchsia_io::DirectoryMarker>,
1613 >,
1614 fdomain_client::fidl::FDomainResourceDialect,
1615 >(
1616 self.directory.as_mut().map(
1617 <fidl::encoding::Endpoint<
1618 fdomain_client::fidl::ClientEnd<fdomain_fuchsia_io::DirectoryMarker>,
1619 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow,
1620 ),
1621 encoder,
1622 offset + cur_offset,
1623 depth,
1624 )?;
1625
1626 _prev_end_offset = cur_offset + envelope_size;
1627
1628 Ok(())
1629 }
1630 }
1631
1632 impl fidl::encoding::Decode<Self, fdomain_client::fidl::FDomainResourceDialect> for Package {
1633 #[inline(always)]
1634 fn new_empty() -> Self {
1635 Self::default()
1636 }
1637
1638 unsafe fn decode(
1639 &mut self,
1640 decoder: &mut fidl::encoding::Decoder<'_, fdomain_client::fidl::FDomainResourceDialect>,
1641 offset: usize,
1642 mut depth: fidl::encoding::Depth,
1643 ) -> fidl::Result<()> {
1644 decoder.debug_check_bounds::<Self>(offset);
1645 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
1646 None => return Err(fidl::Error::NotNullable),
1647 Some(len) => len,
1648 };
1649 if len == 0 {
1651 return Ok(());
1652 };
1653 depth.increment()?;
1654 let envelope_size = 8;
1655 let bytes_len = len * envelope_size;
1656 let offset = decoder.out_of_line_offset(bytes_len)?;
1657 let mut _next_ordinal_to_read = 0;
1659 let mut next_offset = offset;
1660 let end_offset = offset + bytes_len;
1661 _next_ordinal_to_read += 1;
1662 if next_offset >= end_offset {
1663 return Ok(());
1664 }
1665
1666 while _next_ordinal_to_read < 1 {
1668 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1669 _next_ordinal_to_read += 1;
1670 next_offset += envelope_size;
1671 }
1672
1673 let next_out_of_line = decoder.next_out_of_line();
1674 let handles_before = decoder.remaining_handles();
1675 if let Some((inlined, num_bytes, num_handles)) =
1676 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1677 {
1678 let member_inline_size = <fidl::encoding::BoundedString<2083> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1679 if inlined != (member_inline_size <= 4) {
1680 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1681 }
1682 let inner_offset;
1683 let mut inner_depth = depth.clone();
1684 if inlined {
1685 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1686 inner_offset = next_offset;
1687 } else {
1688 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1689 inner_depth.increment()?;
1690 }
1691 let val_ref = self.url.get_or_insert_with(|| {
1692 fidl::new_empty!(
1693 fidl::encoding::BoundedString<2083>,
1694 fdomain_client::fidl::FDomainResourceDialect
1695 )
1696 });
1697 fidl::decode!(
1698 fidl::encoding::BoundedString<2083>,
1699 fdomain_client::fidl::FDomainResourceDialect,
1700 val_ref,
1701 decoder,
1702 inner_offset,
1703 inner_depth
1704 )?;
1705 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1706 {
1707 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1708 }
1709 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1710 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1711 }
1712 }
1713
1714 next_offset += envelope_size;
1715 _next_ordinal_to_read += 1;
1716 if next_offset >= end_offset {
1717 return Ok(());
1718 }
1719
1720 while _next_ordinal_to_read < 2 {
1722 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1723 _next_ordinal_to_read += 1;
1724 next_offset += envelope_size;
1725 }
1726
1727 let next_out_of_line = decoder.next_out_of_line();
1728 let handles_before = decoder.remaining_handles();
1729 if let Some((inlined, num_bytes, num_handles)) =
1730 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1731 {
1732 let member_inline_size = <fidl::encoding::Endpoint<
1733 fdomain_client::fidl::ClientEnd<fdomain_fuchsia_io::DirectoryMarker>,
1734 > as fidl::encoding::TypeMarker>::inline_size(
1735 decoder.context
1736 );
1737 if inlined != (member_inline_size <= 4) {
1738 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1739 }
1740 let inner_offset;
1741 let mut inner_depth = depth.clone();
1742 if inlined {
1743 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1744 inner_offset = next_offset;
1745 } else {
1746 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1747 inner_depth.increment()?;
1748 }
1749 let val_ref = self.directory.get_or_insert_with(|| {
1750 fidl::new_empty!(
1751 fidl::encoding::Endpoint<
1752 fdomain_client::fidl::ClientEnd<fdomain_fuchsia_io::DirectoryMarker>,
1753 >,
1754 fdomain_client::fidl::FDomainResourceDialect
1755 )
1756 });
1757 fidl::decode!(
1758 fidl::encoding::Endpoint<
1759 fdomain_client::fidl::ClientEnd<fdomain_fuchsia_io::DirectoryMarker>,
1760 >,
1761 fdomain_client::fidl::FDomainResourceDialect,
1762 val_ref,
1763 decoder,
1764 inner_offset,
1765 inner_depth
1766 )?;
1767 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1768 {
1769 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1770 }
1771 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1772 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1773 }
1774 }
1775
1776 next_offset += envelope_size;
1777
1778 while next_offset < end_offset {
1780 _next_ordinal_to_read += 1;
1781 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1782 next_offset += envelope_size;
1783 }
1784
1785 Ok(())
1786 }
1787 }
1788}