1#![warn(clippy::all)]
4#![allow(unused_parens, unused_mut, unused_imports, nonstandard_style)]
5
6use bitflags::bitflags;
7use fidl::encoding::{MessageBufFor, ProxyChannelBox, ResourceDialect};
8use futures::future::{self, MaybeDone, TryFutureExt};
9use zx_status;
10
11#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
12#[repr(C)]
13pub struct UsbSourceSetInputCurrentLimitRequest {
14 pub limit_ua: u32,
15}
16
17impl fidl::Persistable for UsbSourceSetInputCurrentLimitRequest {}
18
19#[derive(Clone, Debug, PartialEq)]
20pub struct UsbSourceGetSpecResponse {
21 pub spec: Spec,
22}
23
24impl fidl::Persistable for UsbSourceGetSpecResponse {}
25
26#[derive(Clone, Debug, PartialEq)]
27pub struct UsbSourceGetStatusResponse {
28 pub status: Status,
29}
30
31impl fidl::Persistable for UsbSourceGetStatusResponse {}
32
33#[derive(Clone, Debug, Default, PartialEq)]
35pub struct Spec {
36 pub source_spec: Option<fidl_fuchsia_hardware_power_source_common::Spec>,
38 #[doc(hidden)]
39 pub __source_breaking: fidl::marker::SourceBreaking,
40}
41
42impl fidl::Persistable for Spec {}
43
44#[derive(Clone, Debug, Default, PartialEq)]
46pub struct Status {
47 pub source_status: Option<fidl_fuchsia_hardware_power_source_common::Status>,
49 pub input_current_limit_ua: Option<u32>,
51 #[doc(hidden)]
52 pub __source_breaking: fidl::marker::SourceBreaking,
53}
54
55impl fidl::Persistable for Status {}
56
57pub mod debug_ordinals {
58 pub const SET_CONNECTED: u64 = 0x17a772be294b4e27;
59}
60
61pub mod usb_source_ordinals {
62 pub const GET_SPEC: u64 = 0xa6da1fd32ae9e5e;
63 pub const GET_STATUS: u64 = 0x48d44a3f9b92471a;
64 pub const SET_INPUT_CURRENT_LIMIT: u64 = 0x7633140057298018;
65 pub const WATCH: u64 = 0x740e01eea4327def;
66}
67
68mod internal {
69 use super::*;
70
71 impl fidl::encoding::ValueTypeMarker for UsbSourceSetInputCurrentLimitRequest {
72 type Borrowed<'a> = &'a Self;
73 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
74 value
75 }
76 }
77
78 unsafe impl fidl::encoding::TypeMarker for UsbSourceSetInputCurrentLimitRequest {
79 type Owned = Self;
80
81 #[inline(always)]
82 fn inline_align(_context: fidl::encoding::Context) -> usize {
83 4
84 }
85
86 #[inline(always)]
87 fn inline_size(_context: fidl::encoding::Context) -> usize {
88 4
89 }
90 #[inline(always)]
91 fn encode_is_copy() -> bool {
92 true
93 }
94
95 #[inline(always)]
96 fn decode_is_copy() -> bool {
97 true
98 }
99 }
100
101 unsafe impl<D: fidl::encoding::ResourceDialect>
102 fidl::encoding::Encode<UsbSourceSetInputCurrentLimitRequest, D>
103 for &UsbSourceSetInputCurrentLimitRequest
104 {
105 #[inline]
106 unsafe fn encode(
107 self,
108 encoder: &mut fidl::encoding::Encoder<'_, D>,
109 offset: usize,
110 _depth: fidl::encoding::Depth,
111 ) -> fidl::Result<()> {
112 encoder.debug_check_bounds::<UsbSourceSetInputCurrentLimitRequest>(offset);
113 unsafe {
114 let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
116 (buf_ptr as *mut UsbSourceSetInputCurrentLimitRequest)
117 .write_unaligned((self as *const UsbSourceSetInputCurrentLimitRequest).read());
118 }
121 Ok(())
122 }
123 }
124 unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<u32, D>>
125 fidl::encoding::Encode<UsbSourceSetInputCurrentLimitRequest, D> for (T0,)
126 {
127 #[inline]
128 unsafe fn encode(
129 self,
130 encoder: &mut fidl::encoding::Encoder<'_, D>,
131 offset: usize,
132 depth: fidl::encoding::Depth,
133 ) -> fidl::Result<()> {
134 encoder.debug_check_bounds::<UsbSourceSetInputCurrentLimitRequest>(offset);
135 self.0.encode(encoder, offset + 0, depth)?;
139 Ok(())
140 }
141 }
142
143 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
144 for UsbSourceSetInputCurrentLimitRequest
145 {
146 #[inline(always)]
147 fn new_empty() -> Self {
148 Self { limit_ua: fidl::new_empty!(u32, D) }
149 }
150
151 #[inline]
152 unsafe fn decode(
153 &mut self,
154 decoder: &mut fidl::encoding::Decoder<'_, D>,
155 offset: usize,
156 _depth: fidl::encoding::Depth,
157 ) -> fidl::Result<()> {
158 decoder.debug_check_bounds::<Self>(offset);
159 let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
160 unsafe {
163 std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 4);
164 }
165 Ok(())
166 }
167 }
168
169 impl fidl::encoding::ValueTypeMarker for UsbSourceGetSpecResponse {
170 type Borrowed<'a> = &'a Self;
171 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
172 value
173 }
174 }
175
176 unsafe impl fidl::encoding::TypeMarker for UsbSourceGetSpecResponse {
177 type Owned = Self;
178
179 #[inline(always)]
180 fn inline_align(_context: fidl::encoding::Context) -> usize {
181 8
182 }
183
184 #[inline(always)]
185 fn inline_size(_context: fidl::encoding::Context) -> usize {
186 16
187 }
188 }
189
190 unsafe impl<D: fidl::encoding::ResourceDialect>
191 fidl::encoding::Encode<UsbSourceGetSpecResponse, D> for &UsbSourceGetSpecResponse
192 {
193 #[inline]
194 unsafe fn encode(
195 self,
196 encoder: &mut fidl::encoding::Encoder<'_, D>,
197 offset: usize,
198 _depth: fidl::encoding::Depth,
199 ) -> fidl::Result<()> {
200 encoder.debug_check_bounds::<UsbSourceGetSpecResponse>(offset);
201 fidl::encoding::Encode::<UsbSourceGetSpecResponse, D>::encode(
203 (<Spec as fidl::encoding::ValueTypeMarker>::borrow(&self.spec),),
204 encoder,
205 offset,
206 _depth,
207 )
208 }
209 }
210 unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<Spec, D>>
211 fidl::encoding::Encode<UsbSourceGetSpecResponse, D> for (T0,)
212 {
213 #[inline]
214 unsafe fn encode(
215 self,
216 encoder: &mut fidl::encoding::Encoder<'_, D>,
217 offset: usize,
218 depth: fidl::encoding::Depth,
219 ) -> fidl::Result<()> {
220 encoder.debug_check_bounds::<UsbSourceGetSpecResponse>(offset);
221 self.0.encode(encoder, offset + 0, depth)?;
225 Ok(())
226 }
227 }
228
229 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
230 for UsbSourceGetSpecResponse
231 {
232 #[inline(always)]
233 fn new_empty() -> Self {
234 Self { spec: fidl::new_empty!(Spec, D) }
235 }
236
237 #[inline]
238 unsafe fn decode(
239 &mut self,
240 decoder: &mut fidl::encoding::Decoder<'_, D>,
241 offset: usize,
242 _depth: fidl::encoding::Depth,
243 ) -> fidl::Result<()> {
244 decoder.debug_check_bounds::<Self>(offset);
245 fidl::decode!(Spec, D, &mut self.spec, decoder, offset + 0, _depth)?;
247 Ok(())
248 }
249 }
250
251 impl fidl::encoding::ValueTypeMarker for UsbSourceGetStatusResponse {
252 type Borrowed<'a> = &'a Self;
253 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
254 value
255 }
256 }
257
258 unsafe impl fidl::encoding::TypeMarker for UsbSourceGetStatusResponse {
259 type Owned = Self;
260
261 #[inline(always)]
262 fn inline_align(_context: fidl::encoding::Context) -> usize {
263 8
264 }
265
266 #[inline(always)]
267 fn inline_size(_context: fidl::encoding::Context) -> usize {
268 16
269 }
270 }
271
272 unsafe impl<D: fidl::encoding::ResourceDialect>
273 fidl::encoding::Encode<UsbSourceGetStatusResponse, D> for &UsbSourceGetStatusResponse
274 {
275 #[inline]
276 unsafe fn encode(
277 self,
278 encoder: &mut fidl::encoding::Encoder<'_, D>,
279 offset: usize,
280 _depth: fidl::encoding::Depth,
281 ) -> fidl::Result<()> {
282 encoder.debug_check_bounds::<UsbSourceGetStatusResponse>(offset);
283 fidl::encoding::Encode::<UsbSourceGetStatusResponse, D>::encode(
285 (<Status as fidl::encoding::ValueTypeMarker>::borrow(&self.status),),
286 encoder,
287 offset,
288 _depth,
289 )
290 }
291 }
292 unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<Status, D>>
293 fidl::encoding::Encode<UsbSourceGetStatusResponse, D> for (T0,)
294 {
295 #[inline]
296 unsafe fn encode(
297 self,
298 encoder: &mut fidl::encoding::Encoder<'_, D>,
299 offset: usize,
300 depth: fidl::encoding::Depth,
301 ) -> fidl::Result<()> {
302 encoder.debug_check_bounds::<UsbSourceGetStatusResponse>(offset);
303 self.0.encode(encoder, offset + 0, depth)?;
307 Ok(())
308 }
309 }
310
311 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
312 for UsbSourceGetStatusResponse
313 {
314 #[inline(always)]
315 fn new_empty() -> Self {
316 Self { status: fidl::new_empty!(Status, D) }
317 }
318
319 #[inline]
320 unsafe fn decode(
321 &mut self,
322 decoder: &mut fidl::encoding::Decoder<'_, D>,
323 offset: usize,
324 _depth: fidl::encoding::Depth,
325 ) -> fidl::Result<()> {
326 decoder.debug_check_bounds::<Self>(offset);
327 fidl::decode!(Status, D, &mut self.status, decoder, offset + 0, _depth)?;
329 Ok(())
330 }
331 }
332
333 impl Spec {
334 #[inline(always)]
335 fn max_ordinal_present(&self) -> u64 {
336 if let Some(_) = self.source_spec {
337 return 1;
338 }
339 0
340 }
341 }
342
343 impl fidl::encoding::ValueTypeMarker for Spec {
344 type Borrowed<'a> = &'a Self;
345 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
346 value
347 }
348 }
349
350 unsafe impl fidl::encoding::TypeMarker for Spec {
351 type Owned = Self;
352
353 #[inline(always)]
354 fn inline_align(_context: fidl::encoding::Context) -> usize {
355 8
356 }
357
358 #[inline(always)]
359 fn inline_size(_context: fidl::encoding::Context) -> usize {
360 16
361 }
362 }
363
364 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Spec, D> for &Spec {
365 unsafe fn encode(
366 self,
367 encoder: &mut fidl::encoding::Encoder<'_, D>,
368 offset: usize,
369 mut depth: fidl::encoding::Depth,
370 ) -> fidl::Result<()> {
371 encoder.debug_check_bounds::<Spec>(offset);
372 let max_ordinal: u64 = self.max_ordinal_present();
374 encoder.write_num(max_ordinal, offset);
375 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
376 if max_ordinal == 0 {
378 return Ok(());
379 }
380 depth.increment()?;
381 let envelope_size = 8;
382 let bytes_len = max_ordinal as usize * envelope_size;
383 #[allow(unused_variables)]
384 let offset = encoder.out_of_line_offset(bytes_len);
385 let mut _prev_end_offset: usize = 0;
386 if 1 > max_ordinal {
387 return Ok(());
388 }
389
390 let cur_offset: usize = (1 - 1) * envelope_size;
393
394 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
396
397 fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_hardware_power_source_common::Spec, D>(
402 self.source_spec.as_ref().map(<fidl_fuchsia_hardware_power_source_common::Spec as fidl::encoding::ValueTypeMarker>::borrow),
403 encoder, offset + cur_offset, depth
404 )?;
405
406 _prev_end_offset = cur_offset + envelope_size;
407
408 Ok(())
409 }
410 }
411
412 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Spec {
413 #[inline(always)]
414 fn new_empty() -> Self {
415 Self::default()
416 }
417
418 unsafe fn decode(
419 &mut self,
420 decoder: &mut fidl::encoding::Decoder<'_, D>,
421 offset: usize,
422 mut depth: fidl::encoding::Depth,
423 ) -> fidl::Result<()> {
424 decoder.debug_check_bounds::<Self>(offset);
425 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
426 None => return Err(fidl::Error::NotNullable),
427 Some(len) => len,
428 };
429 if len == 0 {
431 return Ok(());
432 };
433 depth.increment()?;
434 let envelope_size = 8;
435 let bytes_len = len * envelope_size;
436 let offset = decoder.out_of_line_offset(bytes_len)?;
437 let mut _next_ordinal_to_read = 0;
439 let mut next_offset = offset;
440 let end_offset = offset + bytes_len;
441 _next_ordinal_to_read += 1;
442 if next_offset >= end_offset {
443 return Ok(());
444 }
445
446 while _next_ordinal_to_read < 1 {
448 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
449 _next_ordinal_to_read += 1;
450 next_offset += envelope_size;
451 }
452
453 let next_out_of_line = decoder.next_out_of_line();
454 let handles_before = decoder.remaining_handles();
455 if let Some((inlined, num_bytes, num_handles)) =
456 fidl::encoding::decode_envelope_header(decoder, next_offset)?
457 {
458 let member_inline_size = <fidl_fuchsia_hardware_power_source_common::Spec as fidl::encoding::TypeMarker>::inline_size(decoder.context);
459 if inlined != (member_inline_size <= 4) {
460 return Err(fidl::Error::InvalidInlineBitInEnvelope);
461 }
462 let inner_offset;
463 let mut inner_depth = depth.clone();
464 if inlined {
465 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
466 inner_offset = next_offset;
467 } else {
468 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
469 inner_depth.increment()?;
470 }
471 let val_ref = self.source_spec.get_or_insert_with(|| {
472 fidl::new_empty!(fidl_fuchsia_hardware_power_source_common::Spec, D)
473 });
474 fidl::decode!(
475 fidl_fuchsia_hardware_power_source_common::Spec,
476 D,
477 val_ref,
478 decoder,
479 inner_offset,
480 inner_depth
481 )?;
482 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
483 {
484 return Err(fidl::Error::InvalidNumBytesInEnvelope);
485 }
486 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
487 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
488 }
489 }
490
491 next_offset += envelope_size;
492
493 while next_offset < end_offset {
495 _next_ordinal_to_read += 1;
496 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
497 next_offset += envelope_size;
498 }
499
500 Ok(())
501 }
502 }
503
504 impl Status {
505 #[inline(always)]
506 fn max_ordinal_present(&self) -> u64 {
507 if let Some(_) = self.input_current_limit_ua {
508 return 2;
509 }
510 if let Some(_) = self.source_status {
511 return 1;
512 }
513 0
514 }
515 }
516
517 impl fidl::encoding::ValueTypeMarker for Status {
518 type Borrowed<'a> = &'a Self;
519 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
520 value
521 }
522 }
523
524 unsafe impl fidl::encoding::TypeMarker for Status {
525 type Owned = Self;
526
527 #[inline(always)]
528 fn inline_align(_context: fidl::encoding::Context) -> usize {
529 8
530 }
531
532 #[inline(always)]
533 fn inline_size(_context: fidl::encoding::Context) -> usize {
534 16
535 }
536 }
537
538 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Status, D> for &Status {
539 unsafe fn encode(
540 self,
541 encoder: &mut fidl::encoding::Encoder<'_, D>,
542 offset: usize,
543 mut depth: fidl::encoding::Depth,
544 ) -> fidl::Result<()> {
545 encoder.debug_check_bounds::<Status>(offset);
546 let max_ordinal: u64 = self.max_ordinal_present();
548 encoder.write_num(max_ordinal, offset);
549 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
550 if max_ordinal == 0 {
552 return Ok(());
553 }
554 depth.increment()?;
555 let envelope_size = 8;
556 let bytes_len = max_ordinal as usize * envelope_size;
557 #[allow(unused_variables)]
558 let offset = encoder.out_of_line_offset(bytes_len);
559 let mut _prev_end_offset: usize = 0;
560 if 1 > max_ordinal {
561 return Ok(());
562 }
563
564 let cur_offset: usize = (1 - 1) * envelope_size;
567
568 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
570
571 fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_hardware_power_source_common::Status, D>(
576 self.source_status.as_ref().map(<fidl_fuchsia_hardware_power_source_common::Status as fidl::encoding::ValueTypeMarker>::borrow),
577 encoder, offset + cur_offset, depth
578 )?;
579
580 _prev_end_offset = cur_offset + envelope_size;
581 if 2 > max_ordinal {
582 return Ok(());
583 }
584
585 let cur_offset: usize = (2 - 1) * envelope_size;
588
589 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
591
592 fidl::encoding::encode_in_envelope_optional::<u32, D>(
597 self.input_current_limit_ua
598 .as_ref()
599 .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
600 encoder,
601 offset + cur_offset,
602 depth,
603 )?;
604
605 _prev_end_offset = cur_offset + envelope_size;
606
607 Ok(())
608 }
609 }
610
611 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Status {
612 #[inline(always)]
613 fn new_empty() -> Self {
614 Self::default()
615 }
616
617 unsafe fn decode(
618 &mut self,
619 decoder: &mut fidl::encoding::Decoder<'_, D>,
620 offset: usize,
621 mut depth: fidl::encoding::Depth,
622 ) -> fidl::Result<()> {
623 decoder.debug_check_bounds::<Self>(offset);
624 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
625 None => return Err(fidl::Error::NotNullable),
626 Some(len) => len,
627 };
628 if len == 0 {
630 return Ok(());
631 };
632 depth.increment()?;
633 let envelope_size = 8;
634 let bytes_len = len * envelope_size;
635 let offset = decoder.out_of_line_offset(bytes_len)?;
636 let mut _next_ordinal_to_read = 0;
638 let mut next_offset = offset;
639 let end_offset = offset + bytes_len;
640 _next_ordinal_to_read += 1;
641 if next_offset >= end_offset {
642 return Ok(());
643 }
644
645 while _next_ordinal_to_read < 1 {
647 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
648 _next_ordinal_to_read += 1;
649 next_offset += envelope_size;
650 }
651
652 let next_out_of_line = decoder.next_out_of_line();
653 let handles_before = decoder.remaining_handles();
654 if let Some((inlined, num_bytes, num_handles)) =
655 fidl::encoding::decode_envelope_header(decoder, next_offset)?
656 {
657 let member_inline_size = <fidl_fuchsia_hardware_power_source_common::Status as fidl::encoding::TypeMarker>::inline_size(decoder.context);
658 if inlined != (member_inline_size <= 4) {
659 return Err(fidl::Error::InvalidInlineBitInEnvelope);
660 }
661 let inner_offset;
662 let mut inner_depth = depth.clone();
663 if inlined {
664 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
665 inner_offset = next_offset;
666 } else {
667 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
668 inner_depth.increment()?;
669 }
670 let val_ref = self.source_status.get_or_insert_with(|| {
671 fidl::new_empty!(fidl_fuchsia_hardware_power_source_common::Status, D)
672 });
673 fidl::decode!(
674 fidl_fuchsia_hardware_power_source_common::Status,
675 D,
676 val_ref,
677 decoder,
678 inner_offset,
679 inner_depth
680 )?;
681 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
682 {
683 return Err(fidl::Error::InvalidNumBytesInEnvelope);
684 }
685 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
686 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
687 }
688 }
689
690 next_offset += envelope_size;
691 _next_ordinal_to_read += 1;
692 if next_offset >= end_offset {
693 return Ok(());
694 }
695
696 while _next_ordinal_to_read < 2 {
698 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
699 _next_ordinal_to_read += 1;
700 next_offset += envelope_size;
701 }
702
703 let next_out_of_line = decoder.next_out_of_line();
704 let handles_before = decoder.remaining_handles();
705 if let Some((inlined, num_bytes, num_handles)) =
706 fidl::encoding::decode_envelope_header(decoder, next_offset)?
707 {
708 let member_inline_size =
709 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
710 if inlined != (member_inline_size <= 4) {
711 return Err(fidl::Error::InvalidInlineBitInEnvelope);
712 }
713 let inner_offset;
714 let mut inner_depth = depth.clone();
715 if inlined {
716 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
717 inner_offset = next_offset;
718 } else {
719 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
720 inner_depth.increment()?;
721 }
722 let val_ref =
723 self.input_current_limit_ua.get_or_insert_with(|| fidl::new_empty!(u32, D));
724 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
725 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
726 {
727 return Err(fidl::Error::InvalidNumBytesInEnvelope);
728 }
729 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
730 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
731 }
732 }
733
734 next_offset += envelope_size;
735
736 while next_offset < end_offset {
738 _next_ordinal_to_read += 1;
739 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
740 next_offset += envelope_size;
741 }
742
743 Ok(())
744 }
745 }
746}