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 shutdown_with_epitaph(&self, status: zx_status::Status) {
564 self.inner.shutdown_with_epitaph(status)
565 }
566
567 fn is_closed(&self) -> bool {
568 self.inner.channel().is_closed()
569 }
570 fn on_closed(&self) -> fdomain_client::OnFDomainSignals {
571 self.inner.channel().on_closed()
572 }
573}
574
575impl ResolverControlHandle {}
576
577#[must_use = "FIDL methods require a response to be sent"]
578#[derive(Debug)]
579pub struct ResolverResolveResponder {
580 control_handle: std::mem::ManuallyDrop<ResolverControlHandle>,
581 tx_id: u32,
582}
583
584impl std::ops::Drop for ResolverResolveResponder {
588 fn drop(&mut self) {
589 self.control_handle.shutdown();
590 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
592 }
593}
594
595impl fdomain_client::fidl::Responder for ResolverResolveResponder {
596 type ControlHandle = ResolverControlHandle;
597
598 fn control_handle(&self) -> &ResolverControlHandle {
599 &self.control_handle
600 }
601
602 fn drop_without_shutdown(mut self) {
603 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
605 std::mem::forget(self);
607 }
608}
609
610impl ResolverResolveResponder {
611 pub fn send(self, mut result: Result<Component, ResolverError>) -> Result<(), fidl::Error> {
615 let _result = self.send_raw(result);
616 if _result.is_err() {
617 self.control_handle.shutdown();
618 }
619 self.drop_without_shutdown();
620 _result
621 }
622
623 pub fn send_no_shutdown_on_err(
625 self,
626 mut result: Result<Component, ResolverError>,
627 ) -> Result<(), fidl::Error> {
628 let _result = self.send_raw(result);
629 self.drop_without_shutdown();
630 _result
631 }
632
633 fn send_raw(&self, mut result: Result<Component, ResolverError>) -> Result<(), fidl::Error> {
634 self.control_handle
635 .inner
636 .send::<fidl::encoding::ResultType<ResolverResolveResponse, ResolverError>>(
637 result.as_mut().map_err(|e| *e).map(|component| (component,)),
638 self.tx_id,
639 0x57f9cfe88bf1f2e5,
640 fidl::encoding::DynamicFlags::empty(),
641 )
642 }
643}
644
645#[must_use = "FIDL methods require a response to be sent"]
646#[derive(Debug)]
647pub struct ResolverResolveWithContextResponder {
648 control_handle: std::mem::ManuallyDrop<ResolverControlHandle>,
649 tx_id: u32,
650}
651
652impl std::ops::Drop for ResolverResolveWithContextResponder {
656 fn drop(&mut self) {
657 self.control_handle.shutdown();
658 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
660 }
661}
662
663impl fdomain_client::fidl::Responder for ResolverResolveWithContextResponder {
664 type ControlHandle = ResolverControlHandle;
665
666 fn control_handle(&self) -> &ResolverControlHandle {
667 &self.control_handle
668 }
669
670 fn drop_without_shutdown(mut self) {
671 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
673 std::mem::forget(self);
675 }
676}
677
678impl ResolverResolveWithContextResponder {
679 pub fn send(self, mut result: Result<Component, ResolverError>) -> Result<(), fidl::Error> {
683 let _result = self.send_raw(result);
684 if _result.is_err() {
685 self.control_handle.shutdown();
686 }
687 self.drop_without_shutdown();
688 _result
689 }
690
691 pub fn send_no_shutdown_on_err(
693 self,
694 mut result: Result<Component, ResolverError>,
695 ) -> Result<(), fidl::Error> {
696 let _result = self.send_raw(result);
697 self.drop_without_shutdown();
698 _result
699 }
700
701 fn send_raw(&self, mut result: Result<Component, ResolverError>) -> Result<(), fidl::Error> {
702 self.control_handle.inner.send::<fidl::encoding::ResultType<
703 ResolverResolveWithContextResponse,
704 ResolverError,
705 >>(
706 result.as_mut().map_err(|e| *e).map(|component| (component,)),
707 self.tx_id,
708 0x4d64b0de827070bd,
709 fidl::encoding::DynamicFlags::empty(),
710 )
711 }
712}
713
714mod internal {
715 use super::*;
716
717 impl fidl::encoding::ResourceTypeMarker for ResolverResolveWithContextResponse {
718 type Borrowed<'a> = &'a mut Self;
719 fn take_or_borrow<'a>(
720 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
721 ) -> Self::Borrowed<'a> {
722 value
723 }
724 }
725
726 unsafe impl fidl::encoding::TypeMarker for ResolverResolveWithContextResponse {
727 type Owned = Self;
728
729 #[inline(always)]
730 fn inline_align(_context: fidl::encoding::Context) -> usize {
731 8
732 }
733
734 #[inline(always)]
735 fn inline_size(_context: fidl::encoding::Context) -> usize {
736 16
737 }
738 }
739
740 unsafe impl
741 fidl::encoding::Encode<
742 ResolverResolveWithContextResponse,
743 fdomain_client::fidl::FDomainResourceDialect,
744 > for &mut ResolverResolveWithContextResponse
745 {
746 #[inline]
747 unsafe fn encode(
748 self,
749 encoder: &mut fidl::encoding::Encoder<'_, fdomain_client::fidl::FDomainResourceDialect>,
750 offset: usize,
751 _depth: fidl::encoding::Depth,
752 ) -> fidl::Result<()> {
753 encoder.debug_check_bounds::<ResolverResolveWithContextResponse>(offset);
754 fidl::encoding::Encode::<
756 ResolverResolveWithContextResponse,
757 fdomain_client::fidl::FDomainResourceDialect,
758 >::encode(
759 (<Component as fidl::encoding::ResourceTypeMarker>::take_or_borrow(
760 &mut self.component,
761 ),),
762 encoder,
763 offset,
764 _depth,
765 )
766 }
767 }
768 unsafe impl<T0: fidl::encoding::Encode<Component, fdomain_client::fidl::FDomainResourceDialect>>
769 fidl::encoding::Encode<
770 ResolverResolveWithContextResponse,
771 fdomain_client::fidl::FDomainResourceDialect,
772 > for (T0,)
773 {
774 #[inline]
775 unsafe fn encode(
776 self,
777 encoder: &mut fidl::encoding::Encoder<'_, fdomain_client::fidl::FDomainResourceDialect>,
778 offset: usize,
779 depth: fidl::encoding::Depth,
780 ) -> fidl::Result<()> {
781 encoder.debug_check_bounds::<ResolverResolveWithContextResponse>(offset);
782 self.0.encode(encoder, offset + 0, depth)?;
786 Ok(())
787 }
788 }
789
790 impl fidl::encoding::Decode<Self, fdomain_client::fidl::FDomainResourceDialect>
791 for ResolverResolveWithContextResponse
792 {
793 #[inline(always)]
794 fn new_empty() -> Self {
795 Self {
796 component: fidl::new_empty!(
797 Component,
798 fdomain_client::fidl::FDomainResourceDialect
799 ),
800 }
801 }
802
803 #[inline]
804 unsafe fn decode(
805 &mut self,
806 decoder: &mut fidl::encoding::Decoder<'_, fdomain_client::fidl::FDomainResourceDialect>,
807 offset: usize,
808 _depth: fidl::encoding::Depth,
809 ) -> fidl::Result<()> {
810 decoder.debug_check_bounds::<Self>(offset);
811 fidl::decode!(
813 Component,
814 fdomain_client::fidl::FDomainResourceDialect,
815 &mut self.component,
816 decoder,
817 offset + 0,
818 _depth
819 )?;
820 Ok(())
821 }
822 }
823
824 impl fidl::encoding::ResourceTypeMarker for ResolverResolveResponse {
825 type Borrowed<'a> = &'a mut Self;
826 fn take_or_borrow<'a>(
827 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
828 ) -> Self::Borrowed<'a> {
829 value
830 }
831 }
832
833 unsafe impl fidl::encoding::TypeMarker for ResolverResolveResponse {
834 type Owned = Self;
835
836 #[inline(always)]
837 fn inline_align(_context: fidl::encoding::Context) -> usize {
838 8
839 }
840
841 #[inline(always)]
842 fn inline_size(_context: fidl::encoding::Context) -> usize {
843 16
844 }
845 }
846
847 unsafe impl
848 fidl::encoding::Encode<
849 ResolverResolveResponse,
850 fdomain_client::fidl::FDomainResourceDialect,
851 > for &mut ResolverResolveResponse
852 {
853 #[inline]
854 unsafe fn encode(
855 self,
856 encoder: &mut fidl::encoding::Encoder<'_, fdomain_client::fidl::FDomainResourceDialect>,
857 offset: usize,
858 _depth: fidl::encoding::Depth,
859 ) -> fidl::Result<()> {
860 encoder.debug_check_bounds::<ResolverResolveResponse>(offset);
861 fidl::encoding::Encode::<
863 ResolverResolveResponse,
864 fdomain_client::fidl::FDomainResourceDialect,
865 >::encode(
866 (<Component as fidl::encoding::ResourceTypeMarker>::take_or_borrow(
867 &mut self.component,
868 ),),
869 encoder,
870 offset,
871 _depth,
872 )
873 }
874 }
875 unsafe impl<T0: fidl::encoding::Encode<Component, fdomain_client::fidl::FDomainResourceDialect>>
876 fidl::encoding::Encode<
877 ResolverResolveResponse,
878 fdomain_client::fidl::FDomainResourceDialect,
879 > for (T0,)
880 {
881 #[inline]
882 unsafe fn encode(
883 self,
884 encoder: &mut fidl::encoding::Encoder<'_, fdomain_client::fidl::FDomainResourceDialect>,
885 offset: usize,
886 depth: fidl::encoding::Depth,
887 ) -> fidl::Result<()> {
888 encoder.debug_check_bounds::<ResolverResolveResponse>(offset);
889 self.0.encode(encoder, offset + 0, depth)?;
893 Ok(())
894 }
895 }
896
897 impl fidl::encoding::Decode<Self, fdomain_client::fidl::FDomainResourceDialect>
898 for ResolverResolveResponse
899 {
900 #[inline(always)]
901 fn new_empty() -> Self {
902 Self {
903 component: fidl::new_empty!(
904 Component,
905 fdomain_client::fidl::FDomainResourceDialect
906 ),
907 }
908 }
909
910 #[inline]
911 unsafe fn decode(
912 &mut self,
913 decoder: &mut fidl::encoding::Decoder<'_, fdomain_client::fidl::FDomainResourceDialect>,
914 offset: usize,
915 _depth: fidl::encoding::Depth,
916 ) -> fidl::Result<()> {
917 decoder.debug_check_bounds::<Self>(offset);
918 fidl::decode!(
920 Component,
921 fdomain_client::fidl::FDomainResourceDialect,
922 &mut self.component,
923 decoder,
924 offset + 0,
925 _depth
926 )?;
927 Ok(())
928 }
929 }
930
931 impl Component {
932 #[inline(always)]
933 fn max_ordinal_present(&self) -> u64 {
934 if let Some(_) = self.abi_revision {
935 return 6;
936 }
937 if let Some(_) = self.resolution_context {
938 return 5;
939 }
940 if let Some(_) = self.config_values {
941 return 4;
942 }
943 if let Some(_) = self.package {
944 return 3;
945 }
946 if let Some(_) = self.decl {
947 return 2;
948 }
949 if let Some(_) = self.url {
950 return 1;
951 }
952 0
953 }
954 }
955
956 impl fidl::encoding::ResourceTypeMarker for Component {
957 type Borrowed<'a> = &'a mut Self;
958 fn take_or_borrow<'a>(
959 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
960 ) -> Self::Borrowed<'a> {
961 value
962 }
963 }
964
965 unsafe impl fidl::encoding::TypeMarker for Component {
966 type Owned = Self;
967
968 #[inline(always)]
969 fn inline_align(_context: fidl::encoding::Context) -> usize {
970 8
971 }
972
973 #[inline(always)]
974 fn inline_size(_context: fidl::encoding::Context) -> usize {
975 16
976 }
977 }
978
979 unsafe impl fidl::encoding::Encode<Component, fdomain_client::fidl::FDomainResourceDialect>
980 for &mut Component
981 {
982 unsafe fn encode(
983 self,
984 encoder: &mut fidl::encoding::Encoder<'_, fdomain_client::fidl::FDomainResourceDialect>,
985 offset: usize,
986 mut depth: fidl::encoding::Depth,
987 ) -> fidl::Result<()> {
988 encoder.debug_check_bounds::<Component>(offset);
989 let max_ordinal: u64 = self.max_ordinal_present();
991 encoder.write_num(max_ordinal, offset);
992 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
993 if max_ordinal == 0 {
995 return Ok(());
996 }
997 depth.increment()?;
998 let envelope_size = 8;
999 let bytes_len = max_ordinal as usize * envelope_size;
1000 #[allow(unused_variables)]
1001 let offset = encoder.out_of_line_offset(bytes_len);
1002 let mut _prev_end_offset: usize = 0;
1003 if 1 > max_ordinal {
1004 return Ok(());
1005 }
1006
1007 let cur_offset: usize = (1 - 1) * envelope_size;
1010
1011 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1013
1014 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<2083>, fdomain_client::fidl::FDomainResourceDialect>(
1019 self.url.as_ref().map(<fidl::encoding::BoundedString<2083> as fidl::encoding::ValueTypeMarker>::borrow),
1020 encoder, offset + cur_offset, depth
1021 )?;
1022
1023 _prev_end_offset = cur_offset + envelope_size;
1024 if 2 > max_ordinal {
1025 return Ok(());
1026 }
1027
1028 let cur_offset: usize = (2 - 1) * envelope_size;
1031
1032 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1034
1035 fidl::encoding::encode_in_envelope_optional::<fdomain_fuchsia_mem::Data, fdomain_client::fidl::FDomainResourceDialect>(
1040 self.decl.as_mut().map(<fdomain_fuchsia_mem::Data as fidl::encoding::ResourceTypeMarker>::take_or_borrow),
1041 encoder, offset + cur_offset, depth
1042 )?;
1043
1044 _prev_end_offset = cur_offset + envelope_size;
1045 if 3 > max_ordinal {
1046 return Ok(());
1047 }
1048
1049 let cur_offset: usize = (3 - 1) * envelope_size;
1052
1053 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1055
1056 fidl::encoding::encode_in_envelope_optional::<
1061 Package,
1062 fdomain_client::fidl::FDomainResourceDialect,
1063 >(
1064 self.package
1065 .as_mut()
1066 .map(<Package as fidl::encoding::ResourceTypeMarker>::take_or_borrow),
1067 encoder,
1068 offset + cur_offset,
1069 depth,
1070 )?;
1071
1072 _prev_end_offset = cur_offset + envelope_size;
1073 if 4 > max_ordinal {
1074 return Ok(());
1075 }
1076
1077 let cur_offset: usize = (4 - 1) * envelope_size;
1080
1081 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1083
1084 fidl::encoding::encode_in_envelope_optional::<fdomain_fuchsia_mem::Data, fdomain_client::fidl::FDomainResourceDialect>(
1089 self.config_values.as_mut().map(<fdomain_fuchsia_mem::Data as fidl::encoding::ResourceTypeMarker>::take_or_borrow),
1090 encoder, offset + cur_offset, depth
1091 )?;
1092
1093 _prev_end_offset = cur_offset + envelope_size;
1094 if 5 > max_ordinal {
1095 return Ok(());
1096 }
1097
1098 let cur_offset: usize = (5 - 1) * envelope_size;
1101
1102 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1104
1105 fidl::encoding::encode_in_envelope_optional::<
1110 Context,
1111 fdomain_client::fidl::FDomainResourceDialect,
1112 >(
1113 self.resolution_context
1114 .as_ref()
1115 .map(<Context as fidl::encoding::ValueTypeMarker>::borrow),
1116 encoder,
1117 offset + cur_offset,
1118 depth,
1119 )?;
1120
1121 _prev_end_offset = cur_offset + envelope_size;
1122 if 6 > max_ordinal {
1123 return Ok(());
1124 }
1125
1126 let cur_offset: usize = (6 - 1) * envelope_size;
1129
1130 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1132
1133 fidl::encoding::encode_in_envelope_optional::<
1138 u64,
1139 fdomain_client::fidl::FDomainResourceDialect,
1140 >(
1141 self.abi_revision.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
1142 encoder,
1143 offset + cur_offset,
1144 depth,
1145 )?;
1146
1147 _prev_end_offset = cur_offset + envelope_size;
1148
1149 Ok(())
1150 }
1151 }
1152
1153 impl fidl::encoding::Decode<Self, fdomain_client::fidl::FDomainResourceDialect> for Component {
1154 #[inline(always)]
1155 fn new_empty() -> Self {
1156 Self::default()
1157 }
1158
1159 unsafe fn decode(
1160 &mut self,
1161 decoder: &mut fidl::encoding::Decoder<'_, fdomain_client::fidl::FDomainResourceDialect>,
1162 offset: usize,
1163 mut depth: fidl::encoding::Depth,
1164 ) -> fidl::Result<()> {
1165 decoder.debug_check_bounds::<Self>(offset);
1166 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
1167 None => return Err(fidl::Error::NotNullable),
1168 Some(len) => len,
1169 };
1170 if len == 0 {
1172 return Ok(());
1173 };
1174 depth.increment()?;
1175 let envelope_size = 8;
1176 let bytes_len = len * envelope_size;
1177 let offset = decoder.out_of_line_offset(bytes_len)?;
1178 let mut _next_ordinal_to_read = 0;
1180 let mut next_offset = offset;
1181 let end_offset = offset + bytes_len;
1182 _next_ordinal_to_read += 1;
1183 if next_offset >= end_offset {
1184 return Ok(());
1185 }
1186
1187 while _next_ordinal_to_read < 1 {
1189 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1190 _next_ordinal_to_read += 1;
1191 next_offset += envelope_size;
1192 }
1193
1194 let next_out_of_line = decoder.next_out_of_line();
1195 let handles_before = decoder.remaining_handles();
1196 if let Some((inlined, num_bytes, num_handles)) =
1197 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1198 {
1199 let member_inline_size = <fidl::encoding::BoundedString<2083> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1200 if inlined != (member_inline_size <= 4) {
1201 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1202 }
1203 let inner_offset;
1204 let mut inner_depth = depth.clone();
1205 if inlined {
1206 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1207 inner_offset = next_offset;
1208 } else {
1209 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1210 inner_depth.increment()?;
1211 }
1212 let val_ref = self.url.get_or_insert_with(|| {
1213 fidl::new_empty!(
1214 fidl::encoding::BoundedString<2083>,
1215 fdomain_client::fidl::FDomainResourceDialect
1216 )
1217 });
1218 fidl::decode!(
1219 fidl::encoding::BoundedString<2083>,
1220 fdomain_client::fidl::FDomainResourceDialect,
1221 val_ref,
1222 decoder,
1223 inner_offset,
1224 inner_depth
1225 )?;
1226 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1227 {
1228 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1229 }
1230 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1231 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1232 }
1233 }
1234
1235 next_offset += envelope_size;
1236 _next_ordinal_to_read += 1;
1237 if next_offset >= end_offset {
1238 return Ok(());
1239 }
1240
1241 while _next_ordinal_to_read < 2 {
1243 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1244 _next_ordinal_to_read += 1;
1245 next_offset += envelope_size;
1246 }
1247
1248 let next_out_of_line = decoder.next_out_of_line();
1249 let handles_before = decoder.remaining_handles();
1250 if let Some((inlined, num_bytes, num_handles)) =
1251 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1252 {
1253 let member_inline_size =
1254 <fdomain_fuchsia_mem::Data as fidl::encoding::TypeMarker>::inline_size(
1255 decoder.context,
1256 );
1257 if inlined != (member_inline_size <= 4) {
1258 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1259 }
1260 let inner_offset;
1261 let mut inner_depth = depth.clone();
1262 if inlined {
1263 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1264 inner_offset = next_offset;
1265 } else {
1266 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1267 inner_depth.increment()?;
1268 }
1269 let val_ref = self.decl.get_or_insert_with(|| {
1270 fidl::new_empty!(
1271 fdomain_fuchsia_mem::Data,
1272 fdomain_client::fidl::FDomainResourceDialect
1273 )
1274 });
1275 fidl::decode!(
1276 fdomain_fuchsia_mem::Data,
1277 fdomain_client::fidl::FDomainResourceDialect,
1278 val_ref,
1279 decoder,
1280 inner_offset,
1281 inner_depth
1282 )?;
1283 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1284 {
1285 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1286 }
1287 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1288 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1289 }
1290 }
1291
1292 next_offset += envelope_size;
1293 _next_ordinal_to_read += 1;
1294 if next_offset >= end_offset {
1295 return Ok(());
1296 }
1297
1298 while _next_ordinal_to_read < 3 {
1300 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1301 _next_ordinal_to_read += 1;
1302 next_offset += envelope_size;
1303 }
1304
1305 let next_out_of_line = decoder.next_out_of_line();
1306 let handles_before = decoder.remaining_handles();
1307 if let Some((inlined, num_bytes, num_handles)) =
1308 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1309 {
1310 let member_inline_size =
1311 <Package as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1312 if inlined != (member_inline_size <= 4) {
1313 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1314 }
1315 let inner_offset;
1316 let mut inner_depth = depth.clone();
1317 if inlined {
1318 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1319 inner_offset = next_offset;
1320 } else {
1321 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1322 inner_depth.increment()?;
1323 }
1324 let val_ref = self.package.get_or_insert_with(|| {
1325 fidl::new_empty!(Package, fdomain_client::fidl::FDomainResourceDialect)
1326 });
1327 fidl::decode!(
1328 Package,
1329 fdomain_client::fidl::FDomainResourceDialect,
1330 val_ref,
1331 decoder,
1332 inner_offset,
1333 inner_depth
1334 )?;
1335 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1336 {
1337 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1338 }
1339 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1340 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1341 }
1342 }
1343
1344 next_offset += envelope_size;
1345 _next_ordinal_to_read += 1;
1346 if next_offset >= end_offset {
1347 return Ok(());
1348 }
1349
1350 while _next_ordinal_to_read < 4 {
1352 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1353 _next_ordinal_to_read += 1;
1354 next_offset += envelope_size;
1355 }
1356
1357 let next_out_of_line = decoder.next_out_of_line();
1358 let handles_before = decoder.remaining_handles();
1359 if let Some((inlined, num_bytes, num_handles)) =
1360 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1361 {
1362 let member_inline_size =
1363 <fdomain_fuchsia_mem::Data as fidl::encoding::TypeMarker>::inline_size(
1364 decoder.context,
1365 );
1366 if inlined != (member_inline_size <= 4) {
1367 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1368 }
1369 let inner_offset;
1370 let mut inner_depth = depth.clone();
1371 if inlined {
1372 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1373 inner_offset = next_offset;
1374 } else {
1375 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1376 inner_depth.increment()?;
1377 }
1378 let val_ref = self.config_values.get_or_insert_with(|| {
1379 fidl::new_empty!(
1380 fdomain_fuchsia_mem::Data,
1381 fdomain_client::fidl::FDomainResourceDialect
1382 )
1383 });
1384 fidl::decode!(
1385 fdomain_fuchsia_mem::Data,
1386 fdomain_client::fidl::FDomainResourceDialect,
1387 val_ref,
1388 decoder,
1389 inner_offset,
1390 inner_depth
1391 )?;
1392 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1393 {
1394 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1395 }
1396 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1397 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1398 }
1399 }
1400
1401 next_offset += envelope_size;
1402 _next_ordinal_to_read += 1;
1403 if next_offset >= end_offset {
1404 return Ok(());
1405 }
1406
1407 while _next_ordinal_to_read < 5 {
1409 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1410 _next_ordinal_to_read += 1;
1411 next_offset += envelope_size;
1412 }
1413
1414 let next_out_of_line = decoder.next_out_of_line();
1415 let handles_before = decoder.remaining_handles();
1416 if let Some((inlined, num_bytes, num_handles)) =
1417 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1418 {
1419 let member_inline_size =
1420 <Context as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1421 if inlined != (member_inline_size <= 4) {
1422 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1423 }
1424 let inner_offset;
1425 let mut inner_depth = depth.clone();
1426 if inlined {
1427 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1428 inner_offset = next_offset;
1429 } else {
1430 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1431 inner_depth.increment()?;
1432 }
1433 let val_ref = self.resolution_context.get_or_insert_with(|| {
1434 fidl::new_empty!(Context, fdomain_client::fidl::FDomainResourceDialect)
1435 });
1436 fidl::decode!(
1437 Context,
1438 fdomain_client::fidl::FDomainResourceDialect,
1439 val_ref,
1440 decoder,
1441 inner_offset,
1442 inner_depth
1443 )?;
1444 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1445 {
1446 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1447 }
1448 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1449 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1450 }
1451 }
1452
1453 next_offset += envelope_size;
1454 _next_ordinal_to_read += 1;
1455 if next_offset >= end_offset {
1456 return Ok(());
1457 }
1458
1459 while _next_ordinal_to_read < 6 {
1461 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1462 _next_ordinal_to_read += 1;
1463 next_offset += envelope_size;
1464 }
1465
1466 let next_out_of_line = decoder.next_out_of_line();
1467 let handles_before = decoder.remaining_handles();
1468 if let Some((inlined, num_bytes, num_handles)) =
1469 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1470 {
1471 let member_inline_size =
1472 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1473 if inlined != (member_inline_size <= 4) {
1474 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1475 }
1476 let inner_offset;
1477 let mut inner_depth = depth.clone();
1478 if inlined {
1479 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1480 inner_offset = next_offset;
1481 } else {
1482 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1483 inner_depth.increment()?;
1484 }
1485 let val_ref = self.abi_revision.get_or_insert_with(|| {
1486 fidl::new_empty!(u64, fdomain_client::fidl::FDomainResourceDialect)
1487 });
1488 fidl::decode!(
1489 u64,
1490 fdomain_client::fidl::FDomainResourceDialect,
1491 val_ref,
1492 decoder,
1493 inner_offset,
1494 inner_depth
1495 )?;
1496 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1497 {
1498 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1499 }
1500 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1501 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1502 }
1503 }
1504
1505 next_offset += envelope_size;
1506
1507 while next_offset < end_offset {
1509 _next_ordinal_to_read += 1;
1510 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1511 next_offset += envelope_size;
1512 }
1513
1514 Ok(())
1515 }
1516 }
1517
1518 impl Package {
1519 #[inline(always)]
1520 fn max_ordinal_present(&self) -> u64 {
1521 if let Some(_) = self.directory {
1522 return 2;
1523 }
1524 if let Some(_) = self.url {
1525 return 1;
1526 }
1527 0
1528 }
1529 }
1530
1531 impl fidl::encoding::ResourceTypeMarker for Package {
1532 type Borrowed<'a> = &'a mut Self;
1533 fn take_or_borrow<'a>(
1534 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
1535 ) -> Self::Borrowed<'a> {
1536 value
1537 }
1538 }
1539
1540 unsafe impl fidl::encoding::TypeMarker for Package {
1541 type Owned = Self;
1542
1543 #[inline(always)]
1544 fn inline_align(_context: fidl::encoding::Context) -> usize {
1545 8
1546 }
1547
1548 #[inline(always)]
1549 fn inline_size(_context: fidl::encoding::Context) -> usize {
1550 16
1551 }
1552 }
1553
1554 unsafe impl fidl::encoding::Encode<Package, fdomain_client::fidl::FDomainResourceDialect>
1555 for &mut Package
1556 {
1557 unsafe fn encode(
1558 self,
1559 encoder: &mut fidl::encoding::Encoder<'_, fdomain_client::fidl::FDomainResourceDialect>,
1560 offset: usize,
1561 mut depth: fidl::encoding::Depth,
1562 ) -> fidl::Result<()> {
1563 encoder.debug_check_bounds::<Package>(offset);
1564 let max_ordinal: u64 = self.max_ordinal_present();
1566 encoder.write_num(max_ordinal, offset);
1567 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
1568 if max_ordinal == 0 {
1570 return Ok(());
1571 }
1572 depth.increment()?;
1573 let envelope_size = 8;
1574 let bytes_len = max_ordinal as usize * envelope_size;
1575 #[allow(unused_variables)]
1576 let offset = encoder.out_of_line_offset(bytes_len);
1577 let mut _prev_end_offset: usize = 0;
1578 if 1 > max_ordinal {
1579 return Ok(());
1580 }
1581
1582 let cur_offset: usize = (1 - 1) * envelope_size;
1585
1586 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1588
1589 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<2083>, fdomain_client::fidl::FDomainResourceDialect>(
1594 self.url.as_ref().map(<fidl::encoding::BoundedString<2083> as fidl::encoding::ValueTypeMarker>::borrow),
1595 encoder, offset + cur_offset, depth
1596 )?;
1597
1598 _prev_end_offset = cur_offset + envelope_size;
1599 if 2 > max_ordinal {
1600 return Ok(());
1601 }
1602
1603 let cur_offset: usize = (2 - 1) * envelope_size;
1606
1607 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1609
1610 fidl::encoding::encode_in_envelope_optional::<
1615 fidl::encoding::Endpoint<
1616 fdomain_client::fidl::ClientEnd<fdomain_fuchsia_io::DirectoryMarker>,
1617 >,
1618 fdomain_client::fidl::FDomainResourceDialect,
1619 >(
1620 self.directory.as_mut().map(
1621 <fidl::encoding::Endpoint<
1622 fdomain_client::fidl::ClientEnd<fdomain_fuchsia_io::DirectoryMarker>,
1623 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow,
1624 ),
1625 encoder,
1626 offset + cur_offset,
1627 depth,
1628 )?;
1629
1630 _prev_end_offset = cur_offset + envelope_size;
1631
1632 Ok(())
1633 }
1634 }
1635
1636 impl fidl::encoding::Decode<Self, fdomain_client::fidl::FDomainResourceDialect> for Package {
1637 #[inline(always)]
1638 fn new_empty() -> Self {
1639 Self::default()
1640 }
1641
1642 unsafe fn decode(
1643 &mut self,
1644 decoder: &mut fidl::encoding::Decoder<'_, fdomain_client::fidl::FDomainResourceDialect>,
1645 offset: usize,
1646 mut depth: fidl::encoding::Depth,
1647 ) -> fidl::Result<()> {
1648 decoder.debug_check_bounds::<Self>(offset);
1649 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
1650 None => return Err(fidl::Error::NotNullable),
1651 Some(len) => len,
1652 };
1653 if len == 0 {
1655 return Ok(());
1656 };
1657 depth.increment()?;
1658 let envelope_size = 8;
1659 let bytes_len = len * envelope_size;
1660 let offset = decoder.out_of_line_offset(bytes_len)?;
1661 let mut _next_ordinal_to_read = 0;
1663 let mut next_offset = offset;
1664 let end_offset = offset + bytes_len;
1665 _next_ordinal_to_read += 1;
1666 if next_offset >= end_offset {
1667 return Ok(());
1668 }
1669
1670 while _next_ordinal_to_read < 1 {
1672 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1673 _next_ordinal_to_read += 1;
1674 next_offset += envelope_size;
1675 }
1676
1677 let next_out_of_line = decoder.next_out_of_line();
1678 let handles_before = decoder.remaining_handles();
1679 if let Some((inlined, num_bytes, num_handles)) =
1680 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1681 {
1682 let member_inline_size = <fidl::encoding::BoundedString<2083> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1683 if inlined != (member_inline_size <= 4) {
1684 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1685 }
1686 let inner_offset;
1687 let mut inner_depth = depth.clone();
1688 if inlined {
1689 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1690 inner_offset = next_offset;
1691 } else {
1692 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1693 inner_depth.increment()?;
1694 }
1695 let val_ref = self.url.get_or_insert_with(|| {
1696 fidl::new_empty!(
1697 fidl::encoding::BoundedString<2083>,
1698 fdomain_client::fidl::FDomainResourceDialect
1699 )
1700 });
1701 fidl::decode!(
1702 fidl::encoding::BoundedString<2083>,
1703 fdomain_client::fidl::FDomainResourceDialect,
1704 val_ref,
1705 decoder,
1706 inner_offset,
1707 inner_depth
1708 )?;
1709 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1710 {
1711 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1712 }
1713 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1714 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1715 }
1716 }
1717
1718 next_offset += envelope_size;
1719 _next_ordinal_to_read += 1;
1720 if next_offset >= end_offset {
1721 return Ok(());
1722 }
1723
1724 while _next_ordinal_to_read < 2 {
1726 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1727 _next_ordinal_to_read += 1;
1728 next_offset += envelope_size;
1729 }
1730
1731 let next_out_of_line = decoder.next_out_of_line();
1732 let handles_before = decoder.remaining_handles();
1733 if let Some((inlined, num_bytes, num_handles)) =
1734 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1735 {
1736 let member_inline_size = <fidl::encoding::Endpoint<
1737 fdomain_client::fidl::ClientEnd<fdomain_fuchsia_io::DirectoryMarker>,
1738 > as fidl::encoding::TypeMarker>::inline_size(
1739 decoder.context
1740 );
1741 if inlined != (member_inline_size <= 4) {
1742 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1743 }
1744 let inner_offset;
1745 let mut inner_depth = depth.clone();
1746 if inlined {
1747 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1748 inner_offset = next_offset;
1749 } else {
1750 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1751 inner_depth.increment()?;
1752 }
1753 let val_ref = self.directory.get_or_insert_with(|| {
1754 fidl::new_empty!(
1755 fidl::encoding::Endpoint<
1756 fdomain_client::fidl::ClientEnd<fdomain_fuchsia_io::DirectoryMarker>,
1757 >,
1758 fdomain_client::fidl::FDomainResourceDialect
1759 )
1760 });
1761 fidl::decode!(
1762 fidl::encoding::Endpoint<
1763 fdomain_client::fidl::ClientEnd<fdomain_fuchsia_io::DirectoryMarker>,
1764 >,
1765 fdomain_client::fidl::FDomainResourceDialect,
1766 val_ref,
1767 decoder,
1768 inner_offset,
1769 inner_depth
1770 )?;
1771 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1772 {
1773 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1774 }
1775 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1776 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1777 }
1778 }
1779
1780 next_offset += envelope_size;
1781
1782 while next_offset < end_offset {
1784 _next_ordinal_to_read += 1;
1785 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1786 next_offset += envelope_size;
1787 }
1788
1789 Ok(())
1790 }
1791 }
1792}