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
11pub const EDGES_MAX: u32 = 64;
13
14pub const NAME_MAX_LENGTH: u32 = 64;
16
17#[derive(Clone, Debug, PartialEq)]
18pub struct DeviceSetNodesBandwidthRequest {
19 pub nodes: Vec<NodeBandwidth>,
20}
21
22impl fidl::Persistable for DeviceSetNodesBandwidthRequest {}
23
24#[derive(Clone, Debug, PartialEq)]
25pub struct DeviceGetNodeGraphResponse {
26 pub nodes: Vec<Node>,
27 pub edges: Vec<Edge>,
28}
29
30impl fidl::Persistable for DeviceGetNodeGraphResponse {}
31
32#[derive(Clone, Debug, PartialEq)]
33pub struct DeviceGetPathEndpointsResponse {
34 pub paths: Vec<PathEndpoints>,
37}
38
39impl fidl::Persistable for DeviceGetPathEndpointsResponse {}
40
41#[derive(Clone, Debug, Default, PartialEq)]
42pub struct BandwidthRequest {
43 pub average_bandwidth_bps: Option<u64>,
44 pub peak_bandwidth_bps: Option<u64>,
45 #[doc(hidden)]
46 pub __source_breaking: fidl::marker::SourceBreaking,
47}
48
49impl fidl::Persistable for BandwidthRequest {}
50
51#[derive(Clone, Debug, Default, PartialEq)]
52pub struct Edge {
53 pub src_node_id: Option<u32>,
55 pub dst_node_id: Option<u32>,
57 pub weight: Option<u32>,
63 #[doc(hidden)]
64 pub __source_breaking: fidl::marker::SourceBreaking,
65}
66
67impl fidl::Persistable for Edge {}
68
69#[derive(Clone, Debug, Default, PartialEq)]
70pub struct Metadata {
71 pub paths: Option<Vec<PathEndpoints>>,
74 #[doc(hidden)]
75 pub __source_breaking: fidl::marker::SourceBreaking,
76}
77
78impl fidl::Persistable for Metadata {}
79impl fidl::Serializable for Metadata {
80 const SERIALIZABLE_NAME: &'static str = "fuchsia.hardware.interconnect.Metadata";
81}
82
83#[derive(Clone, Debug, Default, PartialEq)]
84pub struct Node {
85 pub id: Option<u32>,
87 pub name: Option<String>,
89 pub interconnect_name: Option<String>,
91 pub initial_avg_bandwidth_bps: Option<u64>,
93 pub initial_peak_bandwidth_bps: Option<u64>,
95 #[doc(hidden)]
96 pub __source_breaking: fidl::marker::SourceBreaking,
97}
98
99impl fidl::Persistable for Node {}
100
101#[derive(Clone, Debug, Default, PartialEq)]
102pub struct NodeBandwidth {
103 pub node_id: Option<u32>,
105 pub requests: Option<Vec<BandwidthRequest>>,
107 #[doc(hidden)]
108 pub __source_breaking: fidl::marker::SourceBreaking,
109}
110
111impl fidl::Persistable for NodeBandwidth {}
112
113#[derive(Clone, Debug, Default, PartialEq)]
114pub struct PathEndpoints {
115 pub name: Option<String>,
117 pub id: Option<u32>,
119 pub src_node_id: Option<u32>,
121 pub dst_node_id: Option<u32>,
123 #[doc(hidden)]
124 pub __source_breaking: fidl::marker::SourceBreaking,
125}
126
127impl fidl::Persistable for PathEndpoints {}
128
129pub mod device_ordinals {
130 pub const SET_NODES_BANDWIDTH: u64 = 0x3bb98f59dd645c14;
131 pub const GET_NODE_GRAPH: u64 = 0x2f676c9ef41b8306;
132 pub const GET_PATH_ENDPOINTS: u64 = 0x656ae602a096765b;
133}
134
135pub mod path_ordinals {
136 pub const SET_BANDWIDTH: u64 = 0xd366c6e86f69d1d;
137}
138
139mod internal {
140 use super::*;
141
142 impl fidl::encoding::ValueTypeMarker for DeviceSetNodesBandwidthRequest {
143 type Borrowed<'a> = &'a Self;
144 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
145 value
146 }
147 }
148
149 unsafe impl fidl::encoding::TypeMarker for DeviceSetNodesBandwidthRequest {
150 type Owned = Self;
151
152 #[inline(always)]
153 fn inline_align(_context: fidl::encoding::Context) -> usize {
154 8
155 }
156
157 #[inline(always)]
158 fn inline_size(_context: fidl::encoding::Context) -> usize {
159 16
160 }
161 }
162
163 unsafe impl<D: fidl::encoding::ResourceDialect>
164 fidl::encoding::Encode<DeviceSetNodesBandwidthRequest, D>
165 for &DeviceSetNodesBandwidthRequest
166 {
167 #[inline]
168 unsafe fn encode(
169 self,
170 encoder: &mut fidl::encoding::Encoder<'_, D>,
171 offset: usize,
172 _depth: fidl::encoding::Depth,
173 ) -> fidl::Result<()> {
174 encoder.debug_check_bounds::<DeviceSetNodesBandwidthRequest>(offset);
175 fidl::encoding::Encode::<DeviceSetNodesBandwidthRequest, D>::encode(
177 (
178 <fidl::encoding::UnboundedVector<NodeBandwidth> as fidl::encoding::ValueTypeMarker>::borrow(&self.nodes),
179 ),
180 encoder, offset, _depth
181 )
182 }
183 }
184 unsafe impl<
185 D: fidl::encoding::ResourceDialect,
186 T0: fidl::encoding::Encode<fidl::encoding::UnboundedVector<NodeBandwidth>, D>,
187 > fidl::encoding::Encode<DeviceSetNodesBandwidthRequest, D> for (T0,)
188 {
189 #[inline]
190 unsafe fn encode(
191 self,
192 encoder: &mut fidl::encoding::Encoder<'_, D>,
193 offset: usize,
194 depth: fidl::encoding::Depth,
195 ) -> fidl::Result<()> {
196 encoder.debug_check_bounds::<DeviceSetNodesBandwidthRequest>(offset);
197 self.0.encode(encoder, offset + 0, depth)?;
201 Ok(())
202 }
203 }
204
205 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
206 for DeviceSetNodesBandwidthRequest
207 {
208 #[inline(always)]
209 fn new_empty() -> Self {
210 Self { nodes: fidl::new_empty!(fidl::encoding::UnboundedVector<NodeBandwidth>, D) }
211 }
212
213 #[inline]
214 unsafe fn decode(
215 &mut self,
216 decoder: &mut fidl::encoding::Decoder<'_, D>,
217 offset: usize,
218 _depth: fidl::encoding::Depth,
219 ) -> fidl::Result<()> {
220 decoder.debug_check_bounds::<Self>(offset);
221 fidl::decode!(
223 fidl::encoding::UnboundedVector<NodeBandwidth>,
224 D,
225 &mut self.nodes,
226 decoder,
227 offset + 0,
228 _depth
229 )?;
230 Ok(())
231 }
232 }
233
234 impl fidl::encoding::ValueTypeMarker for DeviceGetNodeGraphResponse {
235 type Borrowed<'a> = &'a Self;
236 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
237 value
238 }
239 }
240
241 unsafe impl fidl::encoding::TypeMarker for DeviceGetNodeGraphResponse {
242 type Owned = Self;
243
244 #[inline(always)]
245 fn inline_align(_context: fidl::encoding::Context) -> usize {
246 8
247 }
248
249 #[inline(always)]
250 fn inline_size(_context: fidl::encoding::Context) -> usize {
251 32
252 }
253 }
254
255 unsafe impl<D: fidl::encoding::ResourceDialect>
256 fidl::encoding::Encode<DeviceGetNodeGraphResponse, D> for &DeviceGetNodeGraphResponse
257 {
258 #[inline]
259 unsafe fn encode(
260 self,
261 encoder: &mut fidl::encoding::Encoder<'_, D>,
262 offset: usize,
263 _depth: fidl::encoding::Depth,
264 ) -> fidl::Result<()> {
265 encoder.debug_check_bounds::<DeviceGetNodeGraphResponse>(offset);
266 fidl::encoding::Encode::<DeviceGetNodeGraphResponse, D>::encode(
268 (
269 <fidl::encoding::UnboundedVector<Node> as fidl::encoding::ValueTypeMarker>::borrow(&self.nodes),
270 <fidl::encoding::UnboundedVector<Edge> as fidl::encoding::ValueTypeMarker>::borrow(&self.edges),
271 ),
272 encoder, offset, _depth
273 )
274 }
275 }
276 unsafe impl<
277 D: fidl::encoding::ResourceDialect,
278 T0: fidl::encoding::Encode<fidl::encoding::UnboundedVector<Node>, D>,
279 T1: fidl::encoding::Encode<fidl::encoding::UnboundedVector<Edge>, D>,
280 > fidl::encoding::Encode<DeviceGetNodeGraphResponse, D> for (T0, T1)
281 {
282 #[inline]
283 unsafe fn encode(
284 self,
285 encoder: &mut fidl::encoding::Encoder<'_, D>,
286 offset: usize,
287 depth: fidl::encoding::Depth,
288 ) -> fidl::Result<()> {
289 encoder.debug_check_bounds::<DeviceGetNodeGraphResponse>(offset);
290 self.0.encode(encoder, offset + 0, depth)?;
294 self.1.encode(encoder, offset + 16, depth)?;
295 Ok(())
296 }
297 }
298
299 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
300 for DeviceGetNodeGraphResponse
301 {
302 #[inline(always)]
303 fn new_empty() -> Self {
304 Self {
305 nodes: fidl::new_empty!(fidl::encoding::UnboundedVector<Node>, D),
306 edges: fidl::new_empty!(fidl::encoding::UnboundedVector<Edge>, D),
307 }
308 }
309
310 #[inline]
311 unsafe fn decode(
312 &mut self,
313 decoder: &mut fidl::encoding::Decoder<'_, D>,
314 offset: usize,
315 _depth: fidl::encoding::Depth,
316 ) -> fidl::Result<()> {
317 decoder.debug_check_bounds::<Self>(offset);
318 fidl::decode!(
320 fidl::encoding::UnboundedVector<Node>,
321 D,
322 &mut self.nodes,
323 decoder,
324 offset + 0,
325 _depth
326 )?;
327 fidl::decode!(
328 fidl::encoding::UnboundedVector<Edge>,
329 D,
330 &mut self.edges,
331 decoder,
332 offset + 16,
333 _depth
334 )?;
335 Ok(())
336 }
337 }
338
339 impl fidl::encoding::ValueTypeMarker for DeviceGetPathEndpointsResponse {
340 type Borrowed<'a> = &'a Self;
341 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
342 value
343 }
344 }
345
346 unsafe impl fidl::encoding::TypeMarker for DeviceGetPathEndpointsResponse {
347 type Owned = Self;
348
349 #[inline(always)]
350 fn inline_align(_context: fidl::encoding::Context) -> usize {
351 8
352 }
353
354 #[inline(always)]
355 fn inline_size(_context: fidl::encoding::Context) -> usize {
356 16
357 }
358 }
359
360 unsafe impl<D: fidl::encoding::ResourceDialect>
361 fidl::encoding::Encode<DeviceGetPathEndpointsResponse, D>
362 for &DeviceGetPathEndpointsResponse
363 {
364 #[inline]
365 unsafe fn encode(
366 self,
367 encoder: &mut fidl::encoding::Encoder<'_, D>,
368 offset: usize,
369 _depth: fidl::encoding::Depth,
370 ) -> fidl::Result<()> {
371 encoder.debug_check_bounds::<DeviceGetPathEndpointsResponse>(offset);
372 fidl::encoding::Encode::<DeviceGetPathEndpointsResponse, D>::encode(
374 (
375 <fidl::encoding::UnboundedVector<PathEndpoints> as fidl::encoding::ValueTypeMarker>::borrow(&self.paths),
376 ),
377 encoder, offset, _depth
378 )
379 }
380 }
381 unsafe impl<
382 D: fidl::encoding::ResourceDialect,
383 T0: fidl::encoding::Encode<fidl::encoding::UnboundedVector<PathEndpoints>, D>,
384 > fidl::encoding::Encode<DeviceGetPathEndpointsResponse, D> for (T0,)
385 {
386 #[inline]
387 unsafe fn encode(
388 self,
389 encoder: &mut fidl::encoding::Encoder<'_, D>,
390 offset: usize,
391 depth: fidl::encoding::Depth,
392 ) -> fidl::Result<()> {
393 encoder.debug_check_bounds::<DeviceGetPathEndpointsResponse>(offset);
394 self.0.encode(encoder, offset + 0, depth)?;
398 Ok(())
399 }
400 }
401
402 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
403 for DeviceGetPathEndpointsResponse
404 {
405 #[inline(always)]
406 fn new_empty() -> Self {
407 Self { paths: fidl::new_empty!(fidl::encoding::UnboundedVector<PathEndpoints>, D) }
408 }
409
410 #[inline]
411 unsafe fn decode(
412 &mut self,
413 decoder: &mut fidl::encoding::Decoder<'_, D>,
414 offset: usize,
415 _depth: fidl::encoding::Depth,
416 ) -> fidl::Result<()> {
417 decoder.debug_check_bounds::<Self>(offset);
418 fidl::decode!(
420 fidl::encoding::UnboundedVector<PathEndpoints>,
421 D,
422 &mut self.paths,
423 decoder,
424 offset + 0,
425 _depth
426 )?;
427 Ok(())
428 }
429 }
430
431 impl BandwidthRequest {
432 #[inline(always)]
433 fn max_ordinal_present(&self) -> u64 {
434 if let Some(_) = self.peak_bandwidth_bps {
435 return 2;
436 }
437 if let Some(_) = self.average_bandwidth_bps {
438 return 1;
439 }
440 0
441 }
442 }
443
444 impl fidl::encoding::ValueTypeMarker for BandwidthRequest {
445 type Borrowed<'a> = &'a Self;
446 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
447 value
448 }
449 }
450
451 unsafe impl fidl::encoding::TypeMarker for BandwidthRequest {
452 type Owned = Self;
453
454 #[inline(always)]
455 fn inline_align(_context: fidl::encoding::Context) -> usize {
456 8
457 }
458
459 #[inline(always)]
460 fn inline_size(_context: fidl::encoding::Context) -> usize {
461 16
462 }
463 }
464
465 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<BandwidthRequest, D>
466 for &BandwidthRequest
467 {
468 unsafe fn encode(
469 self,
470 encoder: &mut fidl::encoding::Encoder<'_, D>,
471 offset: usize,
472 mut depth: fidl::encoding::Depth,
473 ) -> fidl::Result<()> {
474 encoder.debug_check_bounds::<BandwidthRequest>(offset);
475 let max_ordinal: u64 = self.max_ordinal_present();
477 encoder.write_num(max_ordinal, offset);
478 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
479 if max_ordinal == 0 {
481 return Ok(());
482 }
483 depth.increment()?;
484 let envelope_size = 8;
485 let bytes_len = max_ordinal as usize * envelope_size;
486 #[allow(unused_variables)]
487 let offset = encoder.out_of_line_offset(bytes_len);
488 let mut _prev_end_offset: usize = 0;
489 if 1 > max_ordinal {
490 return Ok(());
491 }
492
493 let cur_offset: usize = (1 - 1) * envelope_size;
496
497 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
499
500 fidl::encoding::encode_in_envelope_optional::<u64, D>(
505 self.average_bandwidth_bps
506 .as_ref()
507 .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
508 encoder,
509 offset + cur_offset,
510 depth,
511 )?;
512
513 _prev_end_offset = cur_offset + envelope_size;
514 if 2 > max_ordinal {
515 return Ok(());
516 }
517
518 let cur_offset: usize = (2 - 1) * envelope_size;
521
522 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
524
525 fidl::encoding::encode_in_envelope_optional::<u64, D>(
530 self.peak_bandwidth_bps
531 .as_ref()
532 .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
533 encoder,
534 offset + cur_offset,
535 depth,
536 )?;
537
538 _prev_end_offset = cur_offset + envelope_size;
539
540 Ok(())
541 }
542 }
543
544 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for BandwidthRequest {
545 #[inline(always)]
546 fn new_empty() -> Self {
547 Self::default()
548 }
549
550 unsafe fn decode(
551 &mut self,
552 decoder: &mut fidl::encoding::Decoder<'_, D>,
553 offset: usize,
554 mut depth: fidl::encoding::Depth,
555 ) -> fidl::Result<()> {
556 decoder.debug_check_bounds::<Self>(offset);
557 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
558 None => return Err(fidl::Error::NotNullable),
559 Some(len) => len,
560 };
561 if len == 0 {
563 return Ok(());
564 };
565 depth.increment()?;
566 let envelope_size = 8;
567 let bytes_len = len * envelope_size;
568 let offset = decoder.out_of_line_offset(bytes_len)?;
569 let mut _next_ordinal_to_read = 0;
571 let mut next_offset = offset;
572 let end_offset = offset + bytes_len;
573 _next_ordinal_to_read += 1;
574 if next_offset >= end_offset {
575 return Ok(());
576 }
577
578 while _next_ordinal_to_read < 1 {
580 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
581 _next_ordinal_to_read += 1;
582 next_offset += envelope_size;
583 }
584
585 let next_out_of_line = decoder.next_out_of_line();
586 let handles_before = decoder.remaining_handles();
587 if let Some((inlined, num_bytes, num_handles)) =
588 fidl::encoding::decode_envelope_header(decoder, next_offset)?
589 {
590 let member_inline_size =
591 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
592 if inlined != (member_inline_size <= 4) {
593 return Err(fidl::Error::InvalidInlineBitInEnvelope);
594 }
595 let inner_offset;
596 let mut inner_depth = depth.clone();
597 if inlined {
598 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
599 inner_offset = next_offset;
600 } else {
601 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
602 inner_depth.increment()?;
603 }
604 let val_ref =
605 self.average_bandwidth_bps.get_or_insert_with(|| fidl::new_empty!(u64, D));
606 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
607 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
608 {
609 return Err(fidl::Error::InvalidNumBytesInEnvelope);
610 }
611 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
612 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
613 }
614 }
615
616 next_offset += envelope_size;
617 _next_ordinal_to_read += 1;
618 if next_offset >= end_offset {
619 return Ok(());
620 }
621
622 while _next_ordinal_to_read < 2 {
624 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
625 _next_ordinal_to_read += 1;
626 next_offset += envelope_size;
627 }
628
629 let next_out_of_line = decoder.next_out_of_line();
630 let handles_before = decoder.remaining_handles();
631 if let Some((inlined, num_bytes, num_handles)) =
632 fidl::encoding::decode_envelope_header(decoder, next_offset)?
633 {
634 let member_inline_size =
635 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
636 if inlined != (member_inline_size <= 4) {
637 return Err(fidl::Error::InvalidInlineBitInEnvelope);
638 }
639 let inner_offset;
640 let mut inner_depth = depth.clone();
641 if inlined {
642 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
643 inner_offset = next_offset;
644 } else {
645 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
646 inner_depth.increment()?;
647 }
648 let val_ref =
649 self.peak_bandwidth_bps.get_or_insert_with(|| fidl::new_empty!(u64, D));
650 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
651 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
652 {
653 return Err(fidl::Error::InvalidNumBytesInEnvelope);
654 }
655 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
656 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
657 }
658 }
659
660 next_offset += envelope_size;
661
662 while next_offset < end_offset {
664 _next_ordinal_to_read += 1;
665 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
666 next_offset += envelope_size;
667 }
668
669 Ok(())
670 }
671 }
672
673 impl Edge {
674 #[inline(always)]
675 fn max_ordinal_present(&self) -> u64 {
676 if let Some(_) = self.weight {
677 return 3;
678 }
679 if let Some(_) = self.dst_node_id {
680 return 2;
681 }
682 if let Some(_) = self.src_node_id {
683 return 1;
684 }
685 0
686 }
687 }
688
689 impl fidl::encoding::ValueTypeMarker for Edge {
690 type Borrowed<'a> = &'a Self;
691 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
692 value
693 }
694 }
695
696 unsafe impl fidl::encoding::TypeMarker for Edge {
697 type Owned = Self;
698
699 #[inline(always)]
700 fn inline_align(_context: fidl::encoding::Context) -> usize {
701 8
702 }
703
704 #[inline(always)]
705 fn inline_size(_context: fidl::encoding::Context) -> usize {
706 16
707 }
708 }
709
710 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Edge, D> for &Edge {
711 unsafe fn encode(
712 self,
713 encoder: &mut fidl::encoding::Encoder<'_, D>,
714 offset: usize,
715 mut depth: fidl::encoding::Depth,
716 ) -> fidl::Result<()> {
717 encoder.debug_check_bounds::<Edge>(offset);
718 let max_ordinal: u64 = self.max_ordinal_present();
720 encoder.write_num(max_ordinal, offset);
721 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
722 if max_ordinal == 0 {
724 return Ok(());
725 }
726 depth.increment()?;
727 let envelope_size = 8;
728 let bytes_len = max_ordinal as usize * envelope_size;
729 #[allow(unused_variables)]
730 let offset = encoder.out_of_line_offset(bytes_len);
731 let mut _prev_end_offset: usize = 0;
732 if 1 > max_ordinal {
733 return Ok(());
734 }
735
736 let cur_offset: usize = (1 - 1) * envelope_size;
739
740 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
742
743 fidl::encoding::encode_in_envelope_optional::<u32, D>(
748 self.src_node_id.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
749 encoder,
750 offset + cur_offset,
751 depth,
752 )?;
753
754 _prev_end_offset = cur_offset + envelope_size;
755 if 2 > max_ordinal {
756 return Ok(());
757 }
758
759 let cur_offset: usize = (2 - 1) * envelope_size;
762
763 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
765
766 fidl::encoding::encode_in_envelope_optional::<u32, D>(
771 self.dst_node_id.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
772 encoder,
773 offset + cur_offset,
774 depth,
775 )?;
776
777 _prev_end_offset = cur_offset + envelope_size;
778 if 3 > max_ordinal {
779 return Ok(());
780 }
781
782 let cur_offset: usize = (3 - 1) * envelope_size;
785
786 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
788
789 fidl::encoding::encode_in_envelope_optional::<u32, D>(
794 self.weight.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
795 encoder,
796 offset + cur_offset,
797 depth,
798 )?;
799
800 _prev_end_offset = cur_offset + envelope_size;
801
802 Ok(())
803 }
804 }
805
806 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Edge {
807 #[inline(always)]
808 fn new_empty() -> Self {
809 Self::default()
810 }
811
812 unsafe fn decode(
813 &mut self,
814 decoder: &mut fidl::encoding::Decoder<'_, D>,
815 offset: usize,
816 mut depth: fidl::encoding::Depth,
817 ) -> fidl::Result<()> {
818 decoder.debug_check_bounds::<Self>(offset);
819 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
820 None => return Err(fidl::Error::NotNullable),
821 Some(len) => len,
822 };
823 if len == 0 {
825 return Ok(());
826 };
827 depth.increment()?;
828 let envelope_size = 8;
829 let bytes_len = len * envelope_size;
830 let offset = decoder.out_of_line_offset(bytes_len)?;
831 let mut _next_ordinal_to_read = 0;
833 let mut next_offset = offset;
834 let end_offset = offset + bytes_len;
835 _next_ordinal_to_read += 1;
836 if next_offset >= end_offset {
837 return Ok(());
838 }
839
840 while _next_ordinal_to_read < 1 {
842 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
843 _next_ordinal_to_read += 1;
844 next_offset += envelope_size;
845 }
846
847 let next_out_of_line = decoder.next_out_of_line();
848 let handles_before = decoder.remaining_handles();
849 if let Some((inlined, num_bytes, num_handles)) =
850 fidl::encoding::decode_envelope_header(decoder, next_offset)?
851 {
852 let member_inline_size =
853 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
854 if inlined != (member_inline_size <= 4) {
855 return Err(fidl::Error::InvalidInlineBitInEnvelope);
856 }
857 let inner_offset;
858 let mut inner_depth = depth.clone();
859 if inlined {
860 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
861 inner_offset = next_offset;
862 } else {
863 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
864 inner_depth.increment()?;
865 }
866 let val_ref = self.src_node_id.get_or_insert_with(|| fidl::new_empty!(u32, D));
867 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
868 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
869 {
870 return Err(fidl::Error::InvalidNumBytesInEnvelope);
871 }
872 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
873 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
874 }
875 }
876
877 next_offset += envelope_size;
878 _next_ordinal_to_read += 1;
879 if next_offset >= end_offset {
880 return Ok(());
881 }
882
883 while _next_ordinal_to_read < 2 {
885 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
886 _next_ordinal_to_read += 1;
887 next_offset += envelope_size;
888 }
889
890 let next_out_of_line = decoder.next_out_of_line();
891 let handles_before = decoder.remaining_handles();
892 if let Some((inlined, num_bytes, num_handles)) =
893 fidl::encoding::decode_envelope_header(decoder, next_offset)?
894 {
895 let member_inline_size =
896 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
897 if inlined != (member_inline_size <= 4) {
898 return Err(fidl::Error::InvalidInlineBitInEnvelope);
899 }
900 let inner_offset;
901 let mut inner_depth = depth.clone();
902 if inlined {
903 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
904 inner_offset = next_offset;
905 } else {
906 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
907 inner_depth.increment()?;
908 }
909 let val_ref = self.dst_node_id.get_or_insert_with(|| fidl::new_empty!(u32, D));
910 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
911 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
912 {
913 return Err(fidl::Error::InvalidNumBytesInEnvelope);
914 }
915 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
916 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
917 }
918 }
919
920 next_offset += envelope_size;
921 _next_ordinal_to_read += 1;
922 if next_offset >= end_offset {
923 return Ok(());
924 }
925
926 while _next_ordinal_to_read < 3 {
928 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
929 _next_ordinal_to_read += 1;
930 next_offset += envelope_size;
931 }
932
933 let next_out_of_line = decoder.next_out_of_line();
934 let handles_before = decoder.remaining_handles();
935 if let Some((inlined, num_bytes, num_handles)) =
936 fidl::encoding::decode_envelope_header(decoder, next_offset)?
937 {
938 let member_inline_size =
939 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
940 if inlined != (member_inline_size <= 4) {
941 return Err(fidl::Error::InvalidInlineBitInEnvelope);
942 }
943 let inner_offset;
944 let mut inner_depth = depth.clone();
945 if inlined {
946 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
947 inner_offset = next_offset;
948 } else {
949 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
950 inner_depth.increment()?;
951 }
952 let val_ref = self.weight.get_or_insert_with(|| fidl::new_empty!(u32, D));
953 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
954 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
955 {
956 return Err(fidl::Error::InvalidNumBytesInEnvelope);
957 }
958 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
959 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
960 }
961 }
962
963 next_offset += envelope_size;
964
965 while next_offset < end_offset {
967 _next_ordinal_to_read += 1;
968 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
969 next_offset += envelope_size;
970 }
971
972 Ok(())
973 }
974 }
975
976 impl Metadata {
977 #[inline(always)]
978 fn max_ordinal_present(&self) -> u64 {
979 if let Some(_) = self.paths {
980 return 1;
981 }
982 0
983 }
984 }
985
986 impl fidl::encoding::ValueTypeMarker for Metadata {
987 type Borrowed<'a> = &'a Self;
988 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
989 value
990 }
991 }
992
993 unsafe impl fidl::encoding::TypeMarker for Metadata {
994 type Owned = Self;
995
996 #[inline(always)]
997 fn inline_align(_context: fidl::encoding::Context) -> usize {
998 8
999 }
1000
1001 #[inline(always)]
1002 fn inline_size(_context: fidl::encoding::Context) -> usize {
1003 16
1004 }
1005 }
1006
1007 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Metadata, D> for &Metadata {
1008 unsafe fn encode(
1009 self,
1010 encoder: &mut fidl::encoding::Encoder<'_, D>,
1011 offset: usize,
1012 mut depth: fidl::encoding::Depth,
1013 ) -> fidl::Result<()> {
1014 encoder.debug_check_bounds::<Metadata>(offset);
1015 let max_ordinal: u64 = self.max_ordinal_present();
1017 encoder.write_num(max_ordinal, offset);
1018 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
1019 if max_ordinal == 0 {
1021 return Ok(());
1022 }
1023 depth.increment()?;
1024 let envelope_size = 8;
1025 let bytes_len = max_ordinal as usize * envelope_size;
1026 #[allow(unused_variables)]
1027 let offset = encoder.out_of_line_offset(bytes_len);
1028 let mut _prev_end_offset: usize = 0;
1029 if 1 > max_ordinal {
1030 return Ok(());
1031 }
1032
1033 let cur_offset: usize = (1 - 1) * envelope_size;
1036
1037 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1039
1040 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<PathEndpoints>, D>(
1045 self.paths.as_ref().map(<fidl::encoding::UnboundedVector<PathEndpoints> as fidl::encoding::ValueTypeMarker>::borrow),
1046 encoder, offset + cur_offset, depth
1047 )?;
1048
1049 _prev_end_offset = cur_offset + envelope_size;
1050
1051 Ok(())
1052 }
1053 }
1054
1055 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Metadata {
1056 #[inline(always)]
1057 fn new_empty() -> Self {
1058 Self::default()
1059 }
1060
1061 unsafe fn decode(
1062 &mut self,
1063 decoder: &mut fidl::encoding::Decoder<'_, D>,
1064 offset: usize,
1065 mut depth: fidl::encoding::Depth,
1066 ) -> fidl::Result<()> {
1067 decoder.debug_check_bounds::<Self>(offset);
1068 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
1069 None => return Err(fidl::Error::NotNullable),
1070 Some(len) => len,
1071 };
1072 if len == 0 {
1074 return Ok(());
1075 };
1076 depth.increment()?;
1077 let envelope_size = 8;
1078 let bytes_len = len * envelope_size;
1079 let offset = decoder.out_of_line_offset(bytes_len)?;
1080 let mut _next_ordinal_to_read = 0;
1082 let mut next_offset = offset;
1083 let end_offset = offset + bytes_len;
1084 _next_ordinal_to_read += 1;
1085 if next_offset >= end_offset {
1086 return Ok(());
1087 }
1088
1089 while _next_ordinal_to_read < 1 {
1091 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1092 _next_ordinal_to_read += 1;
1093 next_offset += envelope_size;
1094 }
1095
1096 let next_out_of_line = decoder.next_out_of_line();
1097 let handles_before = decoder.remaining_handles();
1098 if let Some((inlined, num_bytes, num_handles)) =
1099 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1100 {
1101 let member_inline_size = <fidl::encoding::UnboundedVector<PathEndpoints> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1102 if inlined != (member_inline_size <= 4) {
1103 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1104 }
1105 let inner_offset;
1106 let mut inner_depth = depth.clone();
1107 if inlined {
1108 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1109 inner_offset = next_offset;
1110 } else {
1111 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1112 inner_depth.increment()?;
1113 }
1114 let val_ref = self.paths.get_or_insert_with(|| {
1115 fidl::new_empty!(fidl::encoding::UnboundedVector<PathEndpoints>, D)
1116 });
1117 fidl::decode!(
1118 fidl::encoding::UnboundedVector<PathEndpoints>,
1119 D,
1120 val_ref,
1121 decoder,
1122 inner_offset,
1123 inner_depth
1124 )?;
1125 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1126 {
1127 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1128 }
1129 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1130 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1131 }
1132 }
1133
1134 next_offset += envelope_size;
1135
1136 while next_offset < end_offset {
1138 _next_ordinal_to_read += 1;
1139 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1140 next_offset += envelope_size;
1141 }
1142
1143 Ok(())
1144 }
1145 }
1146
1147 impl Node {
1148 #[inline(always)]
1149 fn max_ordinal_present(&self) -> u64 {
1150 if let Some(_) = self.initial_peak_bandwidth_bps {
1151 return 5;
1152 }
1153 if let Some(_) = self.initial_avg_bandwidth_bps {
1154 return 4;
1155 }
1156 if let Some(_) = self.interconnect_name {
1157 return 3;
1158 }
1159 if let Some(_) = self.name {
1160 return 2;
1161 }
1162 if let Some(_) = self.id {
1163 return 1;
1164 }
1165 0
1166 }
1167 }
1168
1169 impl fidl::encoding::ValueTypeMarker for Node {
1170 type Borrowed<'a> = &'a Self;
1171 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1172 value
1173 }
1174 }
1175
1176 unsafe impl fidl::encoding::TypeMarker for Node {
1177 type Owned = Self;
1178
1179 #[inline(always)]
1180 fn inline_align(_context: fidl::encoding::Context) -> usize {
1181 8
1182 }
1183
1184 #[inline(always)]
1185 fn inline_size(_context: fidl::encoding::Context) -> usize {
1186 16
1187 }
1188 }
1189
1190 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Node, D> for &Node {
1191 unsafe fn encode(
1192 self,
1193 encoder: &mut fidl::encoding::Encoder<'_, D>,
1194 offset: usize,
1195 mut depth: fidl::encoding::Depth,
1196 ) -> fidl::Result<()> {
1197 encoder.debug_check_bounds::<Node>(offset);
1198 let max_ordinal: u64 = self.max_ordinal_present();
1200 encoder.write_num(max_ordinal, offset);
1201 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
1202 if max_ordinal == 0 {
1204 return Ok(());
1205 }
1206 depth.increment()?;
1207 let envelope_size = 8;
1208 let bytes_len = max_ordinal as usize * envelope_size;
1209 #[allow(unused_variables)]
1210 let offset = encoder.out_of_line_offset(bytes_len);
1211 let mut _prev_end_offset: usize = 0;
1212 if 1 > max_ordinal {
1213 return Ok(());
1214 }
1215
1216 let cur_offset: usize = (1 - 1) * envelope_size;
1219
1220 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1222
1223 fidl::encoding::encode_in_envelope_optional::<u32, D>(
1228 self.id.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
1229 encoder,
1230 offset + cur_offset,
1231 depth,
1232 )?;
1233
1234 _prev_end_offset = cur_offset + envelope_size;
1235 if 2 > max_ordinal {
1236 return Ok(());
1237 }
1238
1239 let cur_offset: usize = (2 - 1) * envelope_size;
1242
1243 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1245
1246 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<64>, D>(
1251 self.name.as_ref().map(
1252 <fidl::encoding::BoundedString<64> as fidl::encoding::ValueTypeMarker>::borrow,
1253 ),
1254 encoder,
1255 offset + cur_offset,
1256 depth,
1257 )?;
1258
1259 _prev_end_offset = cur_offset + envelope_size;
1260 if 3 > max_ordinal {
1261 return Ok(());
1262 }
1263
1264 let cur_offset: usize = (3 - 1) * envelope_size;
1267
1268 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1270
1271 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<64>, D>(
1276 self.interconnect_name.as_ref().map(
1277 <fidl::encoding::BoundedString<64> as fidl::encoding::ValueTypeMarker>::borrow,
1278 ),
1279 encoder,
1280 offset + cur_offset,
1281 depth,
1282 )?;
1283
1284 _prev_end_offset = cur_offset + envelope_size;
1285 if 4 > max_ordinal {
1286 return Ok(());
1287 }
1288
1289 let cur_offset: usize = (4 - 1) * envelope_size;
1292
1293 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1295
1296 fidl::encoding::encode_in_envelope_optional::<u64, D>(
1301 self.initial_avg_bandwidth_bps
1302 .as_ref()
1303 .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
1304 encoder,
1305 offset + cur_offset,
1306 depth,
1307 )?;
1308
1309 _prev_end_offset = cur_offset + envelope_size;
1310 if 5 > max_ordinal {
1311 return Ok(());
1312 }
1313
1314 let cur_offset: usize = (5 - 1) * envelope_size;
1317
1318 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1320
1321 fidl::encoding::encode_in_envelope_optional::<u64, D>(
1326 self.initial_peak_bandwidth_bps
1327 .as_ref()
1328 .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
1329 encoder,
1330 offset + cur_offset,
1331 depth,
1332 )?;
1333
1334 _prev_end_offset = cur_offset + envelope_size;
1335
1336 Ok(())
1337 }
1338 }
1339
1340 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Node {
1341 #[inline(always)]
1342 fn new_empty() -> Self {
1343 Self::default()
1344 }
1345
1346 unsafe fn decode(
1347 &mut self,
1348 decoder: &mut fidl::encoding::Decoder<'_, D>,
1349 offset: usize,
1350 mut depth: fidl::encoding::Depth,
1351 ) -> fidl::Result<()> {
1352 decoder.debug_check_bounds::<Self>(offset);
1353 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
1354 None => return Err(fidl::Error::NotNullable),
1355 Some(len) => len,
1356 };
1357 if len == 0 {
1359 return Ok(());
1360 };
1361 depth.increment()?;
1362 let envelope_size = 8;
1363 let bytes_len = len * envelope_size;
1364 let offset = decoder.out_of_line_offset(bytes_len)?;
1365 let mut _next_ordinal_to_read = 0;
1367 let mut next_offset = offset;
1368 let end_offset = offset + bytes_len;
1369 _next_ordinal_to_read += 1;
1370 if next_offset >= end_offset {
1371 return Ok(());
1372 }
1373
1374 while _next_ordinal_to_read < 1 {
1376 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1377 _next_ordinal_to_read += 1;
1378 next_offset += envelope_size;
1379 }
1380
1381 let next_out_of_line = decoder.next_out_of_line();
1382 let handles_before = decoder.remaining_handles();
1383 if let Some((inlined, num_bytes, num_handles)) =
1384 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1385 {
1386 let member_inline_size =
1387 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1388 if inlined != (member_inline_size <= 4) {
1389 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1390 }
1391 let inner_offset;
1392 let mut inner_depth = depth.clone();
1393 if inlined {
1394 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1395 inner_offset = next_offset;
1396 } else {
1397 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1398 inner_depth.increment()?;
1399 }
1400 let val_ref = self.id.get_or_insert_with(|| fidl::new_empty!(u32, D));
1401 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
1402 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1403 {
1404 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1405 }
1406 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1407 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1408 }
1409 }
1410
1411 next_offset += envelope_size;
1412 _next_ordinal_to_read += 1;
1413 if next_offset >= end_offset {
1414 return Ok(());
1415 }
1416
1417 while _next_ordinal_to_read < 2 {
1419 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1420 _next_ordinal_to_read += 1;
1421 next_offset += envelope_size;
1422 }
1423
1424 let next_out_of_line = decoder.next_out_of_line();
1425 let handles_before = decoder.remaining_handles();
1426 if let Some((inlined, num_bytes, num_handles)) =
1427 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1428 {
1429 let member_inline_size =
1430 <fidl::encoding::BoundedString<64> as fidl::encoding::TypeMarker>::inline_size(
1431 decoder.context,
1432 );
1433 if inlined != (member_inline_size <= 4) {
1434 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1435 }
1436 let inner_offset;
1437 let mut inner_depth = depth.clone();
1438 if inlined {
1439 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1440 inner_offset = next_offset;
1441 } else {
1442 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1443 inner_depth.increment()?;
1444 }
1445 let val_ref = self
1446 .name
1447 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<64>, D));
1448 fidl::decode!(
1449 fidl::encoding::BoundedString<64>,
1450 D,
1451 val_ref,
1452 decoder,
1453 inner_offset,
1454 inner_depth
1455 )?;
1456 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1457 {
1458 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1459 }
1460 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1461 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1462 }
1463 }
1464
1465 next_offset += envelope_size;
1466 _next_ordinal_to_read += 1;
1467 if next_offset >= end_offset {
1468 return Ok(());
1469 }
1470
1471 while _next_ordinal_to_read < 3 {
1473 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1474 _next_ordinal_to_read += 1;
1475 next_offset += envelope_size;
1476 }
1477
1478 let next_out_of_line = decoder.next_out_of_line();
1479 let handles_before = decoder.remaining_handles();
1480 if let Some((inlined, num_bytes, num_handles)) =
1481 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1482 {
1483 let member_inline_size =
1484 <fidl::encoding::BoundedString<64> as fidl::encoding::TypeMarker>::inline_size(
1485 decoder.context,
1486 );
1487 if inlined != (member_inline_size <= 4) {
1488 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1489 }
1490 let inner_offset;
1491 let mut inner_depth = depth.clone();
1492 if inlined {
1493 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1494 inner_offset = next_offset;
1495 } else {
1496 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1497 inner_depth.increment()?;
1498 }
1499 let val_ref = self
1500 .interconnect_name
1501 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<64>, D));
1502 fidl::decode!(
1503 fidl::encoding::BoundedString<64>,
1504 D,
1505 val_ref,
1506 decoder,
1507 inner_offset,
1508 inner_depth
1509 )?;
1510 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1511 {
1512 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1513 }
1514 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1515 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1516 }
1517 }
1518
1519 next_offset += envelope_size;
1520 _next_ordinal_to_read += 1;
1521 if next_offset >= end_offset {
1522 return Ok(());
1523 }
1524
1525 while _next_ordinal_to_read < 4 {
1527 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1528 _next_ordinal_to_read += 1;
1529 next_offset += envelope_size;
1530 }
1531
1532 let next_out_of_line = decoder.next_out_of_line();
1533 let handles_before = decoder.remaining_handles();
1534 if let Some((inlined, num_bytes, num_handles)) =
1535 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1536 {
1537 let member_inline_size =
1538 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1539 if inlined != (member_inline_size <= 4) {
1540 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1541 }
1542 let inner_offset;
1543 let mut inner_depth = depth.clone();
1544 if inlined {
1545 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1546 inner_offset = next_offset;
1547 } else {
1548 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1549 inner_depth.increment()?;
1550 }
1551 let val_ref =
1552 self.initial_avg_bandwidth_bps.get_or_insert_with(|| fidl::new_empty!(u64, D));
1553 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
1554 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1555 {
1556 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1557 }
1558 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1559 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1560 }
1561 }
1562
1563 next_offset += envelope_size;
1564 _next_ordinal_to_read += 1;
1565 if next_offset >= end_offset {
1566 return Ok(());
1567 }
1568
1569 while _next_ordinal_to_read < 5 {
1571 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1572 _next_ordinal_to_read += 1;
1573 next_offset += envelope_size;
1574 }
1575
1576 let next_out_of_line = decoder.next_out_of_line();
1577 let handles_before = decoder.remaining_handles();
1578 if let Some((inlined, num_bytes, num_handles)) =
1579 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1580 {
1581 let member_inline_size =
1582 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1583 if inlined != (member_inline_size <= 4) {
1584 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1585 }
1586 let inner_offset;
1587 let mut inner_depth = depth.clone();
1588 if inlined {
1589 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1590 inner_offset = next_offset;
1591 } else {
1592 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1593 inner_depth.increment()?;
1594 }
1595 let val_ref =
1596 self.initial_peak_bandwidth_bps.get_or_insert_with(|| fidl::new_empty!(u64, D));
1597 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
1598 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1599 {
1600 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1601 }
1602 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1603 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1604 }
1605 }
1606
1607 next_offset += envelope_size;
1608
1609 while next_offset < end_offset {
1611 _next_ordinal_to_read += 1;
1612 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1613 next_offset += envelope_size;
1614 }
1615
1616 Ok(())
1617 }
1618 }
1619
1620 impl NodeBandwidth {
1621 #[inline(always)]
1622 fn max_ordinal_present(&self) -> u64 {
1623 if let Some(_) = self.requests {
1624 return 2;
1625 }
1626 if let Some(_) = self.node_id {
1627 return 1;
1628 }
1629 0
1630 }
1631 }
1632
1633 impl fidl::encoding::ValueTypeMarker for NodeBandwidth {
1634 type Borrowed<'a> = &'a Self;
1635 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1636 value
1637 }
1638 }
1639
1640 unsafe impl fidl::encoding::TypeMarker for NodeBandwidth {
1641 type Owned = Self;
1642
1643 #[inline(always)]
1644 fn inline_align(_context: fidl::encoding::Context) -> usize {
1645 8
1646 }
1647
1648 #[inline(always)]
1649 fn inline_size(_context: fidl::encoding::Context) -> usize {
1650 16
1651 }
1652 }
1653
1654 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<NodeBandwidth, D>
1655 for &NodeBandwidth
1656 {
1657 unsafe fn encode(
1658 self,
1659 encoder: &mut fidl::encoding::Encoder<'_, D>,
1660 offset: usize,
1661 mut depth: fidl::encoding::Depth,
1662 ) -> fidl::Result<()> {
1663 encoder.debug_check_bounds::<NodeBandwidth>(offset);
1664 let max_ordinal: u64 = self.max_ordinal_present();
1666 encoder.write_num(max_ordinal, offset);
1667 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
1668 if max_ordinal == 0 {
1670 return Ok(());
1671 }
1672 depth.increment()?;
1673 let envelope_size = 8;
1674 let bytes_len = max_ordinal as usize * envelope_size;
1675 #[allow(unused_variables)]
1676 let offset = encoder.out_of_line_offset(bytes_len);
1677 let mut _prev_end_offset: usize = 0;
1678 if 1 > max_ordinal {
1679 return Ok(());
1680 }
1681
1682 let cur_offset: usize = (1 - 1) * envelope_size;
1685
1686 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1688
1689 fidl::encoding::encode_in_envelope_optional::<u32, D>(
1694 self.node_id.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
1695 encoder,
1696 offset + cur_offset,
1697 depth,
1698 )?;
1699
1700 _prev_end_offset = cur_offset + envelope_size;
1701 if 2 > max_ordinal {
1702 return Ok(());
1703 }
1704
1705 let cur_offset: usize = (2 - 1) * envelope_size;
1708
1709 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1711
1712 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<BandwidthRequest, 64>, D>(
1717 self.requests.as_ref().map(<fidl::encoding::Vector<BandwidthRequest, 64> as fidl::encoding::ValueTypeMarker>::borrow),
1718 encoder, offset + cur_offset, depth
1719 )?;
1720
1721 _prev_end_offset = cur_offset + envelope_size;
1722
1723 Ok(())
1724 }
1725 }
1726
1727 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for NodeBandwidth {
1728 #[inline(always)]
1729 fn new_empty() -> Self {
1730 Self::default()
1731 }
1732
1733 unsafe fn decode(
1734 &mut self,
1735 decoder: &mut fidl::encoding::Decoder<'_, D>,
1736 offset: usize,
1737 mut depth: fidl::encoding::Depth,
1738 ) -> fidl::Result<()> {
1739 decoder.debug_check_bounds::<Self>(offset);
1740 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
1741 None => return Err(fidl::Error::NotNullable),
1742 Some(len) => len,
1743 };
1744 if len == 0 {
1746 return Ok(());
1747 };
1748 depth.increment()?;
1749 let envelope_size = 8;
1750 let bytes_len = len * envelope_size;
1751 let offset = decoder.out_of_line_offset(bytes_len)?;
1752 let mut _next_ordinal_to_read = 0;
1754 let mut next_offset = offset;
1755 let end_offset = offset + bytes_len;
1756 _next_ordinal_to_read += 1;
1757 if next_offset >= end_offset {
1758 return Ok(());
1759 }
1760
1761 while _next_ordinal_to_read < 1 {
1763 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1764 _next_ordinal_to_read += 1;
1765 next_offset += envelope_size;
1766 }
1767
1768 let next_out_of_line = decoder.next_out_of_line();
1769 let handles_before = decoder.remaining_handles();
1770 if let Some((inlined, num_bytes, num_handles)) =
1771 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1772 {
1773 let member_inline_size =
1774 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1775 if inlined != (member_inline_size <= 4) {
1776 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1777 }
1778 let inner_offset;
1779 let mut inner_depth = depth.clone();
1780 if inlined {
1781 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1782 inner_offset = next_offset;
1783 } else {
1784 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1785 inner_depth.increment()?;
1786 }
1787 let val_ref = self.node_id.get_or_insert_with(|| fidl::new_empty!(u32, D));
1788 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
1789 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1790 {
1791 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1792 }
1793 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1794 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1795 }
1796 }
1797
1798 next_offset += envelope_size;
1799 _next_ordinal_to_read += 1;
1800 if next_offset >= end_offset {
1801 return Ok(());
1802 }
1803
1804 while _next_ordinal_to_read < 2 {
1806 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1807 _next_ordinal_to_read += 1;
1808 next_offset += envelope_size;
1809 }
1810
1811 let next_out_of_line = decoder.next_out_of_line();
1812 let handles_before = decoder.remaining_handles();
1813 if let Some((inlined, num_bytes, num_handles)) =
1814 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1815 {
1816 let member_inline_size = <fidl::encoding::Vector<BandwidthRequest, 64> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1817 if inlined != (member_inline_size <= 4) {
1818 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1819 }
1820 let inner_offset;
1821 let mut inner_depth = depth.clone();
1822 if inlined {
1823 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1824 inner_offset = next_offset;
1825 } else {
1826 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1827 inner_depth.increment()?;
1828 }
1829 let val_ref = self.requests.get_or_insert_with(
1830 || fidl::new_empty!(fidl::encoding::Vector<BandwidthRequest, 64>, D),
1831 );
1832 fidl::decode!(fidl::encoding::Vector<BandwidthRequest, 64>, D, val_ref, decoder, inner_offset, inner_depth)?;
1833 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1834 {
1835 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1836 }
1837 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1838 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1839 }
1840 }
1841
1842 next_offset += envelope_size;
1843
1844 while next_offset < end_offset {
1846 _next_ordinal_to_read += 1;
1847 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1848 next_offset += envelope_size;
1849 }
1850
1851 Ok(())
1852 }
1853 }
1854
1855 impl PathEndpoints {
1856 #[inline(always)]
1857 fn max_ordinal_present(&self) -> u64 {
1858 if let Some(_) = self.dst_node_id {
1859 return 4;
1860 }
1861 if let Some(_) = self.src_node_id {
1862 return 3;
1863 }
1864 if let Some(_) = self.id {
1865 return 2;
1866 }
1867 if let Some(_) = self.name {
1868 return 1;
1869 }
1870 0
1871 }
1872 }
1873
1874 impl fidl::encoding::ValueTypeMarker for PathEndpoints {
1875 type Borrowed<'a> = &'a Self;
1876 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1877 value
1878 }
1879 }
1880
1881 unsafe impl fidl::encoding::TypeMarker for PathEndpoints {
1882 type Owned = Self;
1883
1884 #[inline(always)]
1885 fn inline_align(_context: fidl::encoding::Context) -> usize {
1886 8
1887 }
1888
1889 #[inline(always)]
1890 fn inline_size(_context: fidl::encoding::Context) -> usize {
1891 16
1892 }
1893 }
1894
1895 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<PathEndpoints, D>
1896 for &PathEndpoints
1897 {
1898 unsafe fn encode(
1899 self,
1900 encoder: &mut fidl::encoding::Encoder<'_, D>,
1901 offset: usize,
1902 mut depth: fidl::encoding::Depth,
1903 ) -> fidl::Result<()> {
1904 encoder.debug_check_bounds::<PathEndpoints>(offset);
1905 let max_ordinal: u64 = self.max_ordinal_present();
1907 encoder.write_num(max_ordinal, offset);
1908 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
1909 if max_ordinal == 0 {
1911 return Ok(());
1912 }
1913 depth.increment()?;
1914 let envelope_size = 8;
1915 let bytes_len = max_ordinal as usize * envelope_size;
1916 #[allow(unused_variables)]
1917 let offset = encoder.out_of_line_offset(bytes_len);
1918 let mut _prev_end_offset: usize = 0;
1919 if 1 > max_ordinal {
1920 return Ok(());
1921 }
1922
1923 let cur_offset: usize = (1 - 1) * envelope_size;
1926
1927 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1929
1930 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<64>, D>(
1935 self.name.as_ref().map(
1936 <fidl::encoding::BoundedString<64> as fidl::encoding::ValueTypeMarker>::borrow,
1937 ),
1938 encoder,
1939 offset + cur_offset,
1940 depth,
1941 )?;
1942
1943 _prev_end_offset = cur_offset + envelope_size;
1944 if 2 > max_ordinal {
1945 return Ok(());
1946 }
1947
1948 let cur_offset: usize = (2 - 1) * envelope_size;
1951
1952 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1954
1955 fidl::encoding::encode_in_envelope_optional::<u32, D>(
1960 self.id.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
1961 encoder,
1962 offset + cur_offset,
1963 depth,
1964 )?;
1965
1966 _prev_end_offset = cur_offset + envelope_size;
1967 if 3 > max_ordinal {
1968 return Ok(());
1969 }
1970
1971 let cur_offset: usize = (3 - 1) * envelope_size;
1974
1975 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1977
1978 fidl::encoding::encode_in_envelope_optional::<u32, D>(
1983 self.src_node_id.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
1984 encoder,
1985 offset + cur_offset,
1986 depth,
1987 )?;
1988
1989 _prev_end_offset = cur_offset + envelope_size;
1990 if 4 > max_ordinal {
1991 return Ok(());
1992 }
1993
1994 let cur_offset: usize = (4 - 1) * envelope_size;
1997
1998 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2000
2001 fidl::encoding::encode_in_envelope_optional::<u32, D>(
2006 self.dst_node_id.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
2007 encoder,
2008 offset + cur_offset,
2009 depth,
2010 )?;
2011
2012 _prev_end_offset = cur_offset + envelope_size;
2013
2014 Ok(())
2015 }
2016 }
2017
2018 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for PathEndpoints {
2019 #[inline(always)]
2020 fn new_empty() -> Self {
2021 Self::default()
2022 }
2023
2024 unsafe fn decode(
2025 &mut self,
2026 decoder: &mut fidl::encoding::Decoder<'_, D>,
2027 offset: usize,
2028 mut depth: fidl::encoding::Depth,
2029 ) -> fidl::Result<()> {
2030 decoder.debug_check_bounds::<Self>(offset);
2031 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
2032 None => return Err(fidl::Error::NotNullable),
2033 Some(len) => len,
2034 };
2035 if len == 0 {
2037 return Ok(());
2038 };
2039 depth.increment()?;
2040 let envelope_size = 8;
2041 let bytes_len = len * envelope_size;
2042 let offset = decoder.out_of_line_offset(bytes_len)?;
2043 let mut _next_ordinal_to_read = 0;
2045 let mut next_offset = offset;
2046 let end_offset = offset + bytes_len;
2047 _next_ordinal_to_read += 1;
2048 if next_offset >= end_offset {
2049 return Ok(());
2050 }
2051
2052 while _next_ordinal_to_read < 1 {
2054 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2055 _next_ordinal_to_read += 1;
2056 next_offset += envelope_size;
2057 }
2058
2059 let next_out_of_line = decoder.next_out_of_line();
2060 let handles_before = decoder.remaining_handles();
2061 if let Some((inlined, num_bytes, num_handles)) =
2062 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2063 {
2064 let member_inline_size =
2065 <fidl::encoding::BoundedString<64> as fidl::encoding::TypeMarker>::inline_size(
2066 decoder.context,
2067 );
2068 if inlined != (member_inline_size <= 4) {
2069 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2070 }
2071 let inner_offset;
2072 let mut inner_depth = depth.clone();
2073 if inlined {
2074 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2075 inner_offset = next_offset;
2076 } else {
2077 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2078 inner_depth.increment()?;
2079 }
2080 let val_ref = self
2081 .name
2082 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<64>, D));
2083 fidl::decode!(
2084 fidl::encoding::BoundedString<64>,
2085 D,
2086 val_ref,
2087 decoder,
2088 inner_offset,
2089 inner_depth
2090 )?;
2091 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2092 {
2093 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2094 }
2095 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2096 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2097 }
2098 }
2099
2100 next_offset += envelope_size;
2101 _next_ordinal_to_read += 1;
2102 if next_offset >= end_offset {
2103 return Ok(());
2104 }
2105
2106 while _next_ordinal_to_read < 2 {
2108 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2109 _next_ordinal_to_read += 1;
2110 next_offset += envelope_size;
2111 }
2112
2113 let next_out_of_line = decoder.next_out_of_line();
2114 let handles_before = decoder.remaining_handles();
2115 if let Some((inlined, num_bytes, num_handles)) =
2116 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2117 {
2118 let member_inline_size =
2119 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2120 if inlined != (member_inline_size <= 4) {
2121 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2122 }
2123 let inner_offset;
2124 let mut inner_depth = depth.clone();
2125 if inlined {
2126 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2127 inner_offset = next_offset;
2128 } else {
2129 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2130 inner_depth.increment()?;
2131 }
2132 let val_ref = self.id.get_or_insert_with(|| fidl::new_empty!(u32, D));
2133 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
2134 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2135 {
2136 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2137 }
2138 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2139 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2140 }
2141 }
2142
2143 next_offset += envelope_size;
2144 _next_ordinal_to_read += 1;
2145 if next_offset >= end_offset {
2146 return Ok(());
2147 }
2148
2149 while _next_ordinal_to_read < 3 {
2151 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2152 _next_ordinal_to_read += 1;
2153 next_offset += envelope_size;
2154 }
2155
2156 let next_out_of_line = decoder.next_out_of_line();
2157 let handles_before = decoder.remaining_handles();
2158 if let Some((inlined, num_bytes, num_handles)) =
2159 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2160 {
2161 let member_inline_size =
2162 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2163 if inlined != (member_inline_size <= 4) {
2164 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2165 }
2166 let inner_offset;
2167 let mut inner_depth = depth.clone();
2168 if inlined {
2169 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2170 inner_offset = next_offset;
2171 } else {
2172 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2173 inner_depth.increment()?;
2174 }
2175 let val_ref = self.src_node_id.get_or_insert_with(|| fidl::new_empty!(u32, D));
2176 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
2177 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2178 {
2179 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2180 }
2181 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2182 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2183 }
2184 }
2185
2186 next_offset += envelope_size;
2187 _next_ordinal_to_read += 1;
2188 if next_offset >= end_offset {
2189 return Ok(());
2190 }
2191
2192 while _next_ordinal_to_read < 4 {
2194 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2195 _next_ordinal_to_read += 1;
2196 next_offset += envelope_size;
2197 }
2198
2199 let next_out_of_line = decoder.next_out_of_line();
2200 let handles_before = decoder.remaining_handles();
2201 if let Some((inlined, num_bytes, num_handles)) =
2202 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2203 {
2204 let member_inline_size =
2205 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2206 if inlined != (member_inline_size <= 4) {
2207 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2208 }
2209 let inner_offset;
2210 let mut inner_depth = depth.clone();
2211 if inlined {
2212 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2213 inner_offset = next_offset;
2214 } else {
2215 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2216 inner_depth.increment()?;
2217 }
2218 let val_ref = self.dst_node_id.get_or_insert_with(|| fidl::new_empty!(u32, D));
2219 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
2220 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2221 {
2222 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2223 }
2224 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2225 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2226 }
2227 }
2228
2229 next_offset += envelope_size;
2230
2231 while next_offset < end_offset {
2233 _next_ordinal_to_read += 1;
2234 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2235 next_offset += envelope_size;
2236 }
2237
2238 Ok(())
2239 }
2240 }
2241}