1#![warn(clippy::all)]
4#![allow(unused_parens, unused_mut, unused_imports, nonstandard_style)]
5
6use bitflags::bitflags;
7use fidl::client::QueryResponseFut;
8use fidl::encoding::{MessageBufFor, ProxyChannelBox, ResourceDialect};
9use fidl::endpoints::{ControlHandle as _, Responder as _};
10pub use fidl_fuchsia_pkg_resolution__common::*;
11use futures::future::{self, MaybeDone, TryFutureExt};
12use zx_status;
13
14#[derive(Debug, Default, PartialEq)]
15pub struct PackageResolverResolveRequest {
16 pub package_url: Option<String>,
17 #[doc(hidden)]
18 pub __source_breaking: fidl::marker::SourceBreaking,
19}
20
21impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect>
22 for PackageResolverResolveRequest
23{
24}
25
26#[derive(Debug, Default, PartialEq)]
28pub struct ResolveResult {
29 #[doc(hidden)]
30 pub __source_breaking: fidl::marker::SourceBreaking,
31}
32
33impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect> for ResolveResult {}
34
35#[derive(Debug, Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash)]
36pub struct PackageResolverMarker;
37
38impl fidl::endpoints::ProtocolMarker for PackageResolverMarker {
39 type Proxy = PackageResolverProxy;
40 type RequestStream = PackageResolverRequestStream;
41 #[cfg(target_os = "fuchsia")]
42 type SynchronousProxy = PackageResolverSynchronousProxy;
43
44 const DEBUG_NAME: &'static str = "fuchsia.pkg.resolution.PackageResolver";
45}
46impl fidl::endpoints::DiscoverableProtocolMarker for PackageResolverMarker {}
47pub type PackageResolverResolveResult = Result<ResolveResult, ResolveError>;
48
49pub trait PackageResolverProxyInterface: Send + Sync {
50 type ResolveResponseFut: std::future::Future<Output = Result<PackageResolverResolveResult, fidl::Error>>
51 + Send;
52 fn r#resolve(&self, payload: PackageResolverResolveRequest) -> Self::ResolveResponseFut;
53}
54#[derive(Debug)]
55#[cfg(target_os = "fuchsia")]
56pub struct PackageResolverSynchronousProxy {
57 client: fidl::client::sync::Client,
58}
59
60#[cfg(target_os = "fuchsia")]
61impl fidl::endpoints::SynchronousProxy for PackageResolverSynchronousProxy {
62 type Proxy = PackageResolverProxy;
63 type Protocol = PackageResolverMarker;
64
65 fn from_channel(inner: fidl::Channel) -> Self {
66 Self::new(inner)
67 }
68
69 fn into_channel(self) -> fidl::Channel {
70 self.client.into_channel()
71 }
72
73 fn as_channel(&self) -> &fidl::Channel {
74 self.client.as_channel()
75 }
76}
77
78#[cfg(target_os = "fuchsia")]
79impl PackageResolverSynchronousProxy {
80 pub fn new(channel: fidl::Channel) -> Self {
81 let protocol_name = <PackageResolverMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
82 Self { client: fidl::client::sync::Client::new(channel, protocol_name) }
83 }
84
85 pub fn into_channel(self) -> fidl::Channel {
86 self.client.into_channel()
87 }
88
89 pub fn wait_for_event(
92 &self,
93 deadline: zx::MonotonicInstant,
94 ) -> Result<PackageResolverEvent, fidl::Error> {
95 PackageResolverEvent::decode(self.client.wait_for_event(deadline)?)
96 }
97
98 pub fn r#resolve(
110 &self,
111 mut payload: PackageResolverResolveRequest,
112 ___deadline: zx::MonotonicInstant,
113 ) -> Result<PackageResolverResolveResult, fidl::Error> {
114 let _response = self.client.send_query::<
115 PackageResolverResolveRequest,
116 fidl::encoding::FlexibleResultType<ResolveResult, ResolveError>,
117 >(
118 &mut payload,
119 0x33e16c815a5aed26,
120 fidl::encoding::DynamicFlags::FLEXIBLE,
121 ___deadline,
122 )?
123 .into_result::<PackageResolverMarker>("resolve")?;
124 Ok(_response.map(|x| x))
125 }
126}
127
128#[cfg(target_os = "fuchsia")]
129impl From<PackageResolverSynchronousProxy> for zx::Handle {
130 fn from(value: PackageResolverSynchronousProxy) -> Self {
131 value.into_channel().into()
132 }
133}
134
135#[cfg(target_os = "fuchsia")]
136impl From<fidl::Channel> for PackageResolverSynchronousProxy {
137 fn from(value: fidl::Channel) -> Self {
138 Self::new(value)
139 }
140}
141
142#[derive(Debug, Clone)]
143pub struct PackageResolverProxy {
144 client: fidl::client::Client<fidl::encoding::DefaultFuchsiaResourceDialect>,
145}
146
147impl fidl::endpoints::Proxy for PackageResolverProxy {
148 type Protocol = PackageResolverMarker;
149
150 fn from_channel(inner: ::fidl::AsyncChannel) -> Self {
151 Self::new(inner)
152 }
153
154 fn into_channel(self) -> Result<::fidl::AsyncChannel, Self> {
155 self.client.into_channel().map_err(|client| Self { client })
156 }
157
158 fn as_channel(&self) -> &::fidl::AsyncChannel {
159 self.client.as_channel()
160 }
161}
162
163impl PackageResolverProxy {
164 pub fn new(channel: ::fidl::AsyncChannel) -> Self {
166 let protocol_name = <PackageResolverMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
167 Self { client: fidl::client::Client::new(channel, protocol_name) }
168 }
169
170 pub fn take_event_stream(&self) -> PackageResolverEventStream {
176 PackageResolverEventStream { event_receiver: self.client.take_event_receiver() }
177 }
178
179 pub fn r#resolve(
191 &self,
192 mut payload: PackageResolverResolveRequest,
193 ) -> fidl::client::QueryResponseFut<
194 PackageResolverResolveResult,
195 fidl::encoding::DefaultFuchsiaResourceDialect,
196 > {
197 PackageResolverProxyInterface::r#resolve(self, payload)
198 }
199}
200
201impl PackageResolverProxyInterface for PackageResolverProxy {
202 type ResolveResponseFut = fidl::client::QueryResponseFut<
203 PackageResolverResolveResult,
204 fidl::encoding::DefaultFuchsiaResourceDialect,
205 >;
206 fn r#resolve(&self, mut payload: PackageResolverResolveRequest) -> Self::ResolveResponseFut {
207 fn _decode(
208 mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
209 ) -> Result<PackageResolverResolveResult, fidl::Error> {
210 let _response = fidl::client::decode_transaction_body::<
211 fidl::encoding::FlexibleResultType<ResolveResult, ResolveError>,
212 fidl::encoding::DefaultFuchsiaResourceDialect,
213 0x33e16c815a5aed26,
214 >(_buf?)?
215 .into_result::<PackageResolverMarker>("resolve")?;
216 Ok(_response.map(|x| x))
217 }
218 self.client
219 .send_query_and_decode::<PackageResolverResolveRequest, PackageResolverResolveResult>(
220 &mut payload,
221 0x33e16c815a5aed26,
222 fidl::encoding::DynamicFlags::FLEXIBLE,
223 _decode,
224 )
225 }
226}
227
228pub struct PackageResolverEventStream {
229 event_receiver: fidl::client::EventReceiver<fidl::encoding::DefaultFuchsiaResourceDialect>,
230}
231
232impl std::marker::Unpin for PackageResolverEventStream {}
233
234impl futures::stream::FusedStream for PackageResolverEventStream {
235 fn is_terminated(&self) -> bool {
236 self.event_receiver.is_terminated()
237 }
238}
239
240impl futures::Stream for PackageResolverEventStream {
241 type Item = Result<PackageResolverEvent, fidl::Error>;
242
243 fn poll_next(
244 mut self: std::pin::Pin<&mut Self>,
245 cx: &mut std::task::Context<'_>,
246 ) -> std::task::Poll<Option<Self::Item>> {
247 match futures::ready!(futures::stream::StreamExt::poll_next_unpin(
248 &mut self.event_receiver,
249 cx
250 )?) {
251 Some(buf) => std::task::Poll::Ready(Some(PackageResolverEvent::decode(buf))),
252 None => std::task::Poll::Ready(None),
253 }
254 }
255}
256
257#[derive(Debug)]
258pub enum PackageResolverEvent {
259 #[non_exhaustive]
260 _UnknownEvent {
261 ordinal: u64,
263 },
264}
265
266impl PackageResolverEvent {
267 fn decode(
269 mut buf: <fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc,
270 ) -> Result<PackageResolverEvent, fidl::Error> {
271 let (bytes, _handles) = buf.split_mut();
272 let (tx_header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
273 debug_assert_eq!(tx_header.tx_id, 0);
274 match tx_header.ordinal {
275 _ if tx_header.dynamic_flags().contains(fidl::encoding::DynamicFlags::FLEXIBLE) => {
276 Ok(PackageResolverEvent::_UnknownEvent { ordinal: tx_header.ordinal })
277 }
278 _ => Err(fidl::Error::UnknownOrdinal {
279 ordinal: tx_header.ordinal,
280 protocol_name:
281 <PackageResolverMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
282 }),
283 }
284 }
285}
286
287pub struct PackageResolverRequestStream {
289 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
290 is_terminated: bool,
291}
292
293impl std::marker::Unpin for PackageResolverRequestStream {}
294
295impl futures::stream::FusedStream for PackageResolverRequestStream {
296 fn is_terminated(&self) -> bool {
297 self.is_terminated
298 }
299}
300
301impl fidl::endpoints::RequestStream for PackageResolverRequestStream {
302 type Protocol = PackageResolverMarker;
303 type ControlHandle = PackageResolverControlHandle;
304
305 fn from_channel(channel: ::fidl::AsyncChannel) -> Self {
306 Self { inner: std::sync::Arc::new(fidl::ServeInner::new(channel)), is_terminated: false }
307 }
308
309 fn control_handle(&self) -> Self::ControlHandle {
310 PackageResolverControlHandle { inner: self.inner.clone() }
311 }
312
313 fn into_inner(
314 self,
315 ) -> (::std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>, bool)
316 {
317 (self.inner, self.is_terminated)
318 }
319
320 fn from_inner(
321 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
322 is_terminated: bool,
323 ) -> Self {
324 Self { inner, is_terminated }
325 }
326}
327
328impl futures::Stream for PackageResolverRequestStream {
329 type Item = Result<PackageResolverRequest, fidl::Error>;
330
331 fn poll_next(
332 mut self: std::pin::Pin<&mut Self>,
333 cx: &mut std::task::Context<'_>,
334 ) -> std::task::Poll<Option<Self::Item>> {
335 let this = &mut *self;
336 if this.inner.check_shutdown(cx) {
337 this.is_terminated = true;
338 return std::task::Poll::Ready(None);
339 }
340 if this.is_terminated {
341 panic!("polled PackageResolverRequestStream after completion");
342 }
343 fidl::encoding::with_tls_decode_buf::<_, fidl::encoding::DefaultFuchsiaResourceDialect>(
344 |bytes, handles| {
345 match this.inner.channel().read_etc(cx, bytes, handles) {
346 std::task::Poll::Ready(Ok(())) => {}
347 std::task::Poll::Pending => return std::task::Poll::Pending,
348 std::task::Poll::Ready(Err(zx_status::Status::PEER_CLOSED)) => {
349 this.is_terminated = true;
350 return std::task::Poll::Ready(None);
351 }
352 std::task::Poll::Ready(Err(e)) => {
353 return std::task::Poll::Ready(Some(Err(fidl::Error::ServerRequestRead(
354 e.into(),
355 ))))
356 }
357 }
358
359 let (header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
361
362 std::task::Poll::Ready(Some(match header.ordinal {
363 0x33e16c815a5aed26 => {
364 header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
365 let mut req = fidl::new_empty!(
366 PackageResolverResolveRequest,
367 fidl::encoding::DefaultFuchsiaResourceDialect
368 );
369 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<PackageResolverResolveRequest>(&header, _body_bytes, handles, &mut req)?;
370 let control_handle =
371 PackageResolverControlHandle { inner: this.inner.clone() };
372 Ok(PackageResolverRequest::Resolve {
373 payload: req,
374 responder: PackageResolverResolveResponder {
375 control_handle: std::mem::ManuallyDrop::new(control_handle),
376 tx_id: header.tx_id,
377 },
378 })
379 }
380 _ if header.tx_id == 0
381 && header
382 .dynamic_flags()
383 .contains(fidl::encoding::DynamicFlags::FLEXIBLE) =>
384 {
385 Ok(PackageResolverRequest::_UnknownMethod {
386 ordinal: header.ordinal,
387 control_handle: PackageResolverControlHandle {
388 inner: this.inner.clone(),
389 },
390 method_type: fidl::MethodType::OneWay,
391 })
392 }
393 _ if header
394 .dynamic_flags()
395 .contains(fidl::encoding::DynamicFlags::FLEXIBLE) =>
396 {
397 this.inner.send_framework_err(
398 fidl::encoding::FrameworkErr::UnknownMethod,
399 header.tx_id,
400 header.ordinal,
401 header.dynamic_flags(),
402 (bytes, handles),
403 )?;
404 Ok(PackageResolverRequest::_UnknownMethod {
405 ordinal: header.ordinal,
406 control_handle: PackageResolverControlHandle {
407 inner: this.inner.clone(),
408 },
409 method_type: fidl::MethodType::TwoWay,
410 })
411 }
412 _ => Err(fidl::Error::UnknownOrdinal {
413 ordinal: header.ordinal,
414 protocol_name:
415 <PackageResolverMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
416 }),
417 }))
418 },
419 )
420 }
421}
422
423#[derive(Debug)]
428pub enum PackageResolverRequest {
429 Resolve { payload: PackageResolverResolveRequest, responder: PackageResolverResolveResponder },
441 #[non_exhaustive]
443 _UnknownMethod {
444 ordinal: u64,
446 control_handle: PackageResolverControlHandle,
447 method_type: fidl::MethodType,
448 },
449}
450
451impl PackageResolverRequest {
452 #[allow(irrefutable_let_patterns)]
453 pub fn into_resolve(
454 self,
455 ) -> Option<(PackageResolverResolveRequest, PackageResolverResolveResponder)> {
456 if let PackageResolverRequest::Resolve { payload, responder } = self {
457 Some((payload, responder))
458 } else {
459 None
460 }
461 }
462
463 pub fn method_name(&self) -> &'static str {
465 match *self {
466 PackageResolverRequest::Resolve { .. } => "resolve",
467 PackageResolverRequest::_UnknownMethod {
468 method_type: fidl::MethodType::OneWay,
469 ..
470 } => "unknown one-way method",
471 PackageResolverRequest::_UnknownMethod {
472 method_type: fidl::MethodType::TwoWay,
473 ..
474 } => "unknown two-way method",
475 }
476 }
477}
478
479#[derive(Debug, Clone)]
480pub struct PackageResolverControlHandle {
481 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
482}
483
484impl fidl::endpoints::ControlHandle for PackageResolverControlHandle {
485 fn shutdown(&self) {
486 self.inner.shutdown()
487 }
488 fn shutdown_with_epitaph(&self, status: zx_status::Status) {
489 self.inner.shutdown_with_epitaph(status)
490 }
491
492 fn is_closed(&self) -> bool {
493 self.inner.channel().is_closed()
494 }
495 fn on_closed(&self) -> fidl::OnSignalsRef<'_> {
496 self.inner.channel().on_closed()
497 }
498
499 #[cfg(target_os = "fuchsia")]
500 fn signal_peer(
501 &self,
502 clear_mask: zx::Signals,
503 set_mask: zx::Signals,
504 ) -> Result<(), zx_status::Status> {
505 use fidl::Peered;
506 self.inner.channel().signal_peer(clear_mask, set_mask)
507 }
508}
509
510impl PackageResolverControlHandle {}
511
512#[must_use = "FIDL methods require a response to be sent"]
513#[derive(Debug)]
514pub struct PackageResolverResolveResponder {
515 control_handle: std::mem::ManuallyDrop<PackageResolverControlHandle>,
516 tx_id: u32,
517}
518
519impl std::ops::Drop for PackageResolverResolveResponder {
523 fn drop(&mut self) {
524 self.control_handle.shutdown();
525 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
527 }
528}
529
530impl fidl::endpoints::Responder for PackageResolverResolveResponder {
531 type ControlHandle = PackageResolverControlHandle;
532
533 fn control_handle(&self) -> &PackageResolverControlHandle {
534 &self.control_handle
535 }
536
537 fn drop_without_shutdown(mut self) {
538 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
540 std::mem::forget(self);
542 }
543}
544
545impl PackageResolverResolveResponder {
546 pub fn send(self, mut result: Result<ResolveResult, ResolveError>) -> Result<(), fidl::Error> {
550 let _result = self.send_raw(result);
551 if _result.is_err() {
552 self.control_handle.shutdown();
553 }
554 self.drop_without_shutdown();
555 _result
556 }
557
558 pub fn send_no_shutdown_on_err(
560 self,
561 mut result: Result<ResolveResult, ResolveError>,
562 ) -> Result<(), fidl::Error> {
563 let _result = self.send_raw(result);
564 self.drop_without_shutdown();
565 _result
566 }
567
568 fn send_raw(&self, mut result: Result<ResolveResult, ResolveError>) -> Result<(), fidl::Error> {
569 self.control_handle
570 .inner
571 .send::<fidl::encoding::FlexibleResultType<ResolveResult, ResolveError>>(
572 fidl::encoding::FlexibleResult::new(result.as_mut().map_err(|e| *e)),
573 self.tx_id,
574 0x33e16c815a5aed26,
575 fidl::encoding::DynamicFlags::FLEXIBLE,
576 )
577 }
578}
579
580mod internal {
581 use super::*;
582
583 impl PackageResolverResolveRequest {
584 #[inline(always)]
585 fn max_ordinal_present(&self) -> u64 {
586 if let Some(_) = self.package_url {
587 return 1;
588 }
589 0
590 }
591 }
592
593 impl fidl::encoding::ResourceTypeMarker for PackageResolverResolveRequest {
594 type Borrowed<'a> = &'a mut Self;
595 fn take_or_borrow<'a>(
596 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
597 ) -> Self::Borrowed<'a> {
598 value
599 }
600 }
601
602 unsafe impl fidl::encoding::TypeMarker for PackageResolverResolveRequest {
603 type Owned = Self;
604
605 #[inline(always)]
606 fn inline_align(_context: fidl::encoding::Context) -> usize {
607 8
608 }
609
610 #[inline(always)]
611 fn inline_size(_context: fidl::encoding::Context) -> usize {
612 16
613 }
614 }
615
616 unsafe impl
617 fidl::encoding::Encode<
618 PackageResolverResolveRequest,
619 fidl::encoding::DefaultFuchsiaResourceDialect,
620 > for &mut PackageResolverResolveRequest
621 {
622 unsafe fn encode(
623 self,
624 encoder: &mut fidl::encoding::Encoder<
625 '_,
626 fidl::encoding::DefaultFuchsiaResourceDialect,
627 >,
628 offset: usize,
629 mut depth: fidl::encoding::Depth,
630 ) -> fidl::Result<()> {
631 encoder.debug_check_bounds::<PackageResolverResolveRequest>(offset);
632 let max_ordinal: u64 = self.max_ordinal_present();
634 encoder.write_num(max_ordinal, offset);
635 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
636 if max_ordinal == 0 {
638 return Ok(());
639 }
640 depth.increment()?;
641 let envelope_size = 8;
642 let bytes_len = max_ordinal as usize * envelope_size;
643 #[allow(unused_variables)]
644 let offset = encoder.out_of_line_offset(bytes_len);
645 let mut _prev_end_offset: usize = 0;
646 if 1 > max_ordinal {
647 return Ok(());
648 }
649
650 let cur_offset: usize = (1 - 1) * envelope_size;
653
654 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
656
657 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<4096>, fidl::encoding::DefaultFuchsiaResourceDialect>(
662 self.package_url.as_ref().map(<fidl::encoding::BoundedString<4096> as fidl::encoding::ValueTypeMarker>::borrow),
663 encoder, offset + cur_offset, depth
664 )?;
665
666 _prev_end_offset = cur_offset + envelope_size;
667
668 Ok(())
669 }
670 }
671
672 impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
673 for PackageResolverResolveRequest
674 {
675 #[inline(always)]
676 fn new_empty() -> Self {
677 Self::default()
678 }
679
680 unsafe fn decode(
681 &mut self,
682 decoder: &mut fidl::encoding::Decoder<
683 '_,
684 fidl::encoding::DefaultFuchsiaResourceDialect,
685 >,
686 offset: usize,
687 mut depth: fidl::encoding::Depth,
688 ) -> fidl::Result<()> {
689 decoder.debug_check_bounds::<Self>(offset);
690 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
691 None => return Err(fidl::Error::NotNullable),
692 Some(len) => len,
693 };
694 if len == 0 {
696 return Ok(());
697 };
698 depth.increment()?;
699 let envelope_size = 8;
700 let bytes_len = len * envelope_size;
701 let offset = decoder.out_of_line_offset(bytes_len)?;
702 let mut _next_ordinal_to_read = 0;
704 let mut next_offset = offset;
705 let end_offset = offset + bytes_len;
706 _next_ordinal_to_read += 1;
707 if next_offset >= end_offset {
708 return Ok(());
709 }
710
711 while _next_ordinal_to_read < 1 {
713 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
714 _next_ordinal_to_read += 1;
715 next_offset += envelope_size;
716 }
717
718 let next_out_of_line = decoder.next_out_of_line();
719 let handles_before = decoder.remaining_handles();
720 if let Some((inlined, num_bytes, num_handles)) =
721 fidl::encoding::decode_envelope_header(decoder, next_offset)?
722 {
723 let member_inline_size = <fidl::encoding::BoundedString<4096> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
724 if inlined != (member_inline_size <= 4) {
725 return Err(fidl::Error::InvalidInlineBitInEnvelope);
726 }
727 let inner_offset;
728 let mut inner_depth = depth.clone();
729 if inlined {
730 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
731 inner_offset = next_offset;
732 } else {
733 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
734 inner_depth.increment()?;
735 }
736 let val_ref = self.package_url.get_or_insert_with(|| {
737 fidl::new_empty!(
738 fidl::encoding::BoundedString<4096>,
739 fidl::encoding::DefaultFuchsiaResourceDialect
740 )
741 });
742 fidl::decode!(
743 fidl::encoding::BoundedString<4096>,
744 fidl::encoding::DefaultFuchsiaResourceDialect,
745 val_ref,
746 decoder,
747 inner_offset,
748 inner_depth
749 )?;
750 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
751 {
752 return Err(fidl::Error::InvalidNumBytesInEnvelope);
753 }
754 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
755 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
756 }
757 }
758
759 next_offset += envelope_size;
760
761 while next_offset < end_offset {
763 _next_ordinal_to_read += 1;
764 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
765 next_offset += envelope_size;
766 }
767
768 Ok(())
769 }
770 }
771
772 impl ResolveResult {
773 #[inline(always)]
774 fn max_ordinal_present(&self) -> u64 {
775 0
776 }
777 }
778
779 impl fidl::encoding::ResourceTypeMarker for ResolveResult {
780 type Borrowed<'a> = &'a mut Self;
781 fn take_or_borrow<'a>(
782 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
783 ) -> Self::Borrowed<'a> {
784 value
785 }
786 }
787
788 unsafe impl fidl::encoding::TypeMarker for ResolveResult {
789 type Owned = Self;
790
791 #[inline(always)]
792 fn inline_align(_context: fidl::encoding::Context) -> usize {
793 8
794 }
795
796 #[inline(always)]
797 fn inline_size(_context: fidl::encoding::Context) -> usize {
798 16
799 }
800 }
801
802 unsafe impl fidl::encoding::Encode<ResolveResult, fidl::encoding::DefaultFuchsiaResourceDialect>
803 for &mut ResolveResult
804 {
805 unsafe fn encode(
806 self,
807 encoder: &mut fidl::encoding::Encoder<
808 '_,
809 fidl::encoding::DefaultFuchsiaResourceDialect,
810 >,
811 offset: usize,
812 mut depth: fidl::encoding::Depth,
813 ) -> fidl::Result<()> {
814 encoder.debug_check_bounds::<ResolveResult>(offset);
815 let max_ordinal: u64 = self.max_ordinal_present();
817 encoder.write_num(max_ordinal, offset);
818 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
819 if max_ordinal == 0 {
821 return Ok(());
822 }
823 depth.increment()?;
824 let envelope_size = 8;
825 let bytes_len = max_ordinal as usize * envelope_size;
826 #[allow(unused_variables)]
827 let offset = encoder.out_of_line_offset(bytes_len);
828 let mut _prev_end_offset: usize = 0;
829
830 Ok(())
831 }
832 }
833
834 impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect> for ResolveResult {
835 #[inline(always)]
836 fn new_empty() -> Self {
837 Self::default()
838 }
839
840 unsafe fn decode(
841 &mut self,
842 decoder: &mut fidl::encoding::Decoder<
843 '_,
844 fidl::encoding::DefaultFuchsiaResourceDialect,
845 >,
846 offset: usize,
847 mut depth: fidl::encoding::Depth,
848 ) -> fidl::Result<()> {
849 decoder.debug_check_bounds::<Self>(offset);
850 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
851 None => return Err(fidl::Error::NotNullable),
852 Some(len) => len,
853 };
854 if len == 0 {
856 return Ok(());
857 };
858 depth.increment()?;
859 let envelope_size = 8;
860 let bytes_len = len * envelope_size;
861 let offset = decoder.out_of_line_offset(bytes_len)?;
862 let mut _next_ordinal_to_read = 0;
864 let mut next_offset = offset;
865 let end_offset = offset + bytes_len;
866
867 while next_offset < end_offset {
869 _next_ordinal_to_read += 1;
870 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
871 next_offset += envelope_size;
872 }
873
874 Ok(())
875 }
876 }
877}