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, PartialEq)]
42pub struct DeviceSetNodesBandwidthResponse {
43 pub aggregated_bandwidth: Vec<AggregatedBandwidth>,
44}
45
46impl fidl::Persistable for DeviceSetNodesBandwidthResponse {}
47
48#[derive(Clone, Debug, Default, PartialEq)]
49pub struct AggregatedBandwidth {
50 pub node_id: Option<u32>,
52 pub average_bandwidth_bps: Option<u64>,
54 pub peak_bandwidth_bps: Option<u64>,
56 #[doc(hidden)]
57 pub __source_breaking: fidl::marker::SourceBreaking,
58}
59
60impl fidl::Persistable for AggregatedBandwidth {}
61
62#[derive(Clone, Debug, Default, PartialEq)]
63pub struct BandwidthRequest {
64 pub average_bandwidth_bps: Option<u64>,
65 pub peak_bandwidth_bps: Option<u64>,
66 pub tag: Option<u32>,
68 #[doc(hidden)]
69 pub __source_breaking: fidl::marker::SourceBreaking,
70}
71
72impl fidl::Persistable for BandwidthRequest {}
73
74#[derive(Clone, Debug, Default, PartialEq)]
75pub struct Edge {
76 pub src_node_id: Option<u32>,
78 pub dst_node_id: Option<u32>,
80 pub weight: Option<u32>,
86 #[doc(hidden)]
87 pub __source_breaking: fidl::marker::SourceBreaking,
88}
89
90impl fidl::Persistable for Edge {}
91
92#[derive(Clone, Debug, Default, PartialEq)]
93pub struct Metadata {
94 pub paths: Option<Vec<PathEndpoints>>,
97 #[doc(hidden)]
98 pub __source_breaking: fidl::marker::SourceBreaking,
99}
100
101impl fidl::Persistable for Metadata {}
102impl fidl::Serializable for Metadata {
103 const SERIALIZABLE_NAME: &'static str = "fuchsia.hardware.interconnect.Metadata";
104}
105
106#[derive(Clone, Debug, Default, PartialEq)]
107pub struct Node {
108 pub id: Option<u32>,
110 pub name: Option<String>,
112 pub interconnect_name: Option<String>,
114 pub initial_avg_bandwidth_bps: Option<u64>,
116 pub initial_peak_bandwidth_bps: Option<u64>,
118 #[doc(hidden)]
119 pub __source_breaking: fidl::marker::SourceBreaking,
120}
121
122impl fidl::Persistable for Node {}
123
124#[derive(Clone, Debug, Default, PartialEq)]
125pub struct NodeBandwidth {
126 pub node_id: Option<u32>,
128 pub requests: Option<Vec<BandwidthRequest>>,
130 #[doc(hidden)]
131 pub __source_breaking: fidl::marker::SourceBreaking,
132}
133
134impl fidl::Persistable for NodeBandwidth {}
135
136#[derive(Clone, Debug, Default, PartialEq)]
137pub struct PathEndpoints {
138 pub name: Option<String>,
140 pub id: Option<u32>,
142 pub src_node_id: Option<u32>,
144 pub dst_node_id: Option<u32>,
146 pub tag: Option<u32>,
149 #[doc(hidden)]
150 pub __source_breaking: fidl::marker::SourceBreaking,
151}
152
153impl fidl::Persistable for PathEndpoints {}
154
155pub mod device_ordinals {
156 pub const SET_NODES_BANDWIDTH: u64 = 0x3bb98f59dd645c14;
157 pub const GET_NODE_GRAPH: u64 = 0x2f676c9ef41b8306;
158 pub const GET_PATH_ENDPOINTS: u64 = 0x656ae602a096765b;
159}
160
161pub mod path_ordinals {
162 pub const SET_BANDWIDTH: u64 = 0xd366c6e86f69d1d;
163}
164
165mod internal {
166 use super::*;
167
168 impl fidl::encoding::ValueTypeMarker for DeviceSetNodesBandwidthRequest {
169 type Borrowed<'a> = &'a Self;
170 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
171 value
172 }
173 }
174
175 unsafe impl fidl::encoding::TypeMarker for DeviceSetNodesBandwidthRequest {
176 type Owned = Self;
177
178 #[inline(always)]
179 fn inline_align(_context: fidl::encoding::Context) -> usize {
180 8
181 }
182
183 #[inline(always)]
184 fn inline_size(_context: fidl::encoding::Context) -> usize {
185 16
186 }
187 }
188
189 unsafe impl<D: fidl::encoding::ResourceDialect>
190 fidl::encoding::Encode<DeviceSetNodesBandwidthRequest, D>
191 for &DeviceSetNodesBandwidthRequest
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::<DeviceSetNodesBandwidthRequest>(offset);
201 fidl::encoding::Encode::<DeviceSetNodesBandwidthRequest, D>::encode(
203 (
204 <fidl::encoding::UnboundedVector<NodeBandwidth> as fidl::encoding::ValueTypeMarker>::borrow(&self.nodes),
205 ),
206 encoder, offset, _depth
207 )
208 }
209 }
210 unsafe impl<
211 D: fidl::encoding::ResourceDialect,
212 T0: fidl::encoding::Encode<fidl::encoding::UnboundedVector<NodeBandwidth>, D>,
213 > fidl::encoding::Encode<DeviceSetNodesBandwidthRequest, D> for (T0,)
214 {
215 #[inline]
216 unsafe fn encode(
217 self,
218 encoder: &mut fidl::encoding::Encoder<'_, D>,
219 offset: usize,
220 depth: fidl::encoding::Depth,
221 ) -> fidl::Result<()> {
222 encoder.debug_check_bounds::<DeviceSetNodesBandwidthRequest>(offset);
223 self.0.encode(encoder, offset + 0, depth)?;
227 Ok(())
228 }
229 }
230
231 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
232 for DeviceSetNodesBandwidthRequest
233 {
234 #[inline(always)]
235 fn new_empty() -> Self {
236 Self { nodes: fidl::new_empty!(fidl::encoding::UnboundedVector<NodeBandwidth>, D) }
237 }
238
239 #[inline]
240 unsafe fn decode(
241 &mut self,
242 decoder: &mut fidl::encoding::Decoder<'_, D>,
243 offset: usize,
244 _depth: fidl::encoding::Depth,
245 ) -> fidl::Result<()> {
246 decoder.debug_check_bounds::<Self>(offset);
247 fidl::decode!(
249 fidl::encoding::UnboundedVector<NodeBandwidth>,
250 D,
251 &mut self.nodes,
252 decoder,
253 offset + 0,
254 _depth
255 )?;
256 Ok(())
257 }
258 }
259
260 impl fidl::encoding::ValueTypeMarker for DeviceGetNodeGraphResponse {
261 type Borrowed<'a> = &'a Self;
262 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
263 value
264 }
265 }
266
267 unsafe impl fidl::encoding::TypeMarker for DeviceGetNodeGraphResponse {
268 type Owned = Self;
269
270 #[inline(always)]
271 fn inline_align(_context: fidl::encoding::Context) -> usize {
272 8
273 }
274
275 #[inline(always)]
276 fn inline_size(_context: fidl::encoding::Context) -> usize {
277 32
278 }
279 }
280
281 unsafe impl<D: fidl::encoding::ResourceDialect>
282 fidl::encoding::Encode<DeviceGetNodeGraphResponse, D> for &DeviceGetNodeGraphResponse
283 {
284 #[inline]
285 unsafe fn encode(
286 self,
287 encoder: &mut fidl::encoding::Encoder<'_, D>,
288 offset: usize,
289 _depth: fidl::encoding::Depth,
290 ) -> fidl::Result<()> {
291 encoder.debug_check_bounds::<DeviceGetNodeGraphResponse>(offset);
292 fidl::encoding::Encode::<DeviceGetNodeGraphResponse, D>::encode(
294 (
295 <fidl::encoding::UnboundedVector<Node> as fidl::encoding::ValueTypeMarker>::borrow(&self.nodes),
296 <fidl::encoding::UnboundedVector<Edge> as fidl::encoding::ValueTypeMarker>::borrow(&self.edges),
297 ),
298 encoder, offset, _depth
299 )
300 }
301 }
302 unsafe impl<
303 D: fidl::encoding::ResourceDialect,
304 T0: fidl::encoding::Encode<fidl::encoding::UnboundedVector<Node>, D>,
305 T1: fidl::encoding::Encode<fidl::encoding::UnboundedVector<Edge>, D>,
306 > fidl::encoding::Encode<DeviceGetNodeGraphResponse, D> for (T0, T1)
307 {
308 #[inline]
309 unsafe fn encode(
310 self,
311 encoder: &mut fidl::encoding::Encoder<'_, D>,
312 offset: usize,
313 depth: fidl::encoding::Depth,
314 ) -> fidl::Result<()> {
315 encoder.debug_check_bounds::<DeviceGetNodeGraphResponse>(offset);
316 self.0.encode(encoder, offset + 0, depth)?;
320 self.1.encode(encoder, offset + 16, depth)?;
321 Ok(())
322 }
323 }
324
325 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
326 for DeviceGetNodeGraphResponse
327 {
328 #[inline(always)]
329 fn new_empty() -> Self {
330 Self {
331 nodes: fidl::new_empty!(fidl::encoding::UnboundedVector<Node>, D),
332 edges: fidl::new_empty!(fidl::encoding::UnboundedVector<Edge>, D),
333 }
334 }
335
336 #[inline]
337 unsafe fn decode(
338 &mut self,
339 decoder: &mut fidl::encoding::Decoder<'_, D>,
340 offset: usize,
341 _depth: fidl::encoding::Depth,
342 ) -> fidl::Result<()> {
343 decoder.debug_check_bounds::<Self>(offset);
344 fidl::decode!(
346 fidl::encoding::UnboundedVector<Node>,
347 D,
348 &mut self.nodes,
349 decoder,
350 offset + 0,
351 _depth
352 )?;
353 fidl::decode!(
354 fidl::encoding::UnboundedVector<Edge>,
355 D,
356 &mut self.edges,
357 decoder,
358 offset + 16,
359 _depth
360 )?;
361 Ok(())
362 }
363 }
364
365 impl fidl::encoding::ValueTypeMarker for DeviceGetPathEndpointsResponse {
366 type Borrowed<'a> = &'a Self;
367 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
368 value
369 }
370 }
371
372 unsafe impl fidl::encoding::TypeMarker for DeviceGetPathEndpointsResponse {
373 type Owned = Self;
374
375 #[inline(always)]
376 fn inline_align(_context: fidl::encoding::Context) -> usize {
377 8
378 }
379
380 #[inline(always)]
381 fn inline_size(_context: fidl::encoding::Context) -> usize {
382 16
383 }
384 }
385
386 unsafe impl<D: fidl::encoding::ResourceDialect>
387 fidl::encoding::Encode<DeviceGetPathEndpointsResponse, D>
388 for &DeviceGetPathEndpointsResponse
389 {
390 #[inline]
391 unsafe fn encode(
392 self,
393 encoder: &mut fidl::encoding::Encoder<'_, D>,
394 offset: usize,
395 _depth: fidl::encoding::Depth,
396 ) -> fidl::Result<()> {
397 encoder.debug_check_bounds::<DeviceGetPathEndpointsResponse>(offset);
398 fidl::encoding::Encode::<DeviceGetPathEndpointsResponse, D>::encode(
400 (
401 <fidl::encoding::UnboundedVector<PathEndpoints> as fidl::encoding::ValueTypeMarker>::borrow(&self.paths),
402 ),
403 encoder, offset, _depth
404 )
405 }
406 }
407 unsafe impl<
408 D: fidl::encoding::ResourceDialect,
409 T0: fidl::encoding::Encode<fidl::encoding::UnboundedVector<PathEndpoints>, D>,
410 > fidl::encoding::Encode<DeviceGetPathEndpointsResponse, D> for (T0,)
411 {
412 #[inline]
413 unsafe fn encode(
414 self,
415 encoder: &mut fidl::encoding::Encoder<'_, D>,
416 offset: usize,
417 depth: fidl::encoding::Depth,
418 ) -> fidl::Result<()> {
419 encoder.debug_check_bounds::<DeviceGetPathEndpointsResponse>(offset);
420 self.0.encode(encoder, offset + 0, depth)?;
424 Ok(())
425 }
426 }
427
428 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
429 for DeviceGetPathEndpointsResponse
430 {
431 #[inline(always)]
432 fn new_empty() -> Self {
433 Self { paths: fidl::new_empty!(fidl::encoding::UnboundedVector<PathEndpoints>, D) }
434 }
435
436 #[inline]
437 unsafe fn decode(
438 &mut self,
439 decoder: &mut fidl::encoding::Decoder<'_, D>,
440 offset: usize,
441 _depth: fidl::encoding::Depth,
442 ) -> fidl::Result<()> {
443 decoder.debug_check_bounds::<Self>(offset);
444 fidl::decode!(
446 fidl::encoding::UnboundedVector<PathEndpoints>,
447 D,
448 &mut self.paths,
449 decoder,
450 offset + 0,
451 _depth
452 )?;
453 Ok(())
454 }
455 }
456
457 impl fidl::encoding::ValueTypeMarker for DeviceSetNodesBandwidthResponse {
458 type Borrowed<'a> = &'a Self;
459 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
460 value
461 }
462 }
463
464 unsafe impl fidl::encoding::TypeMarker for DeviceSetNodesBandwidthResponse {
465 type Owned = Self;
466
467 #[inline(always)]
468 fn inline_align(_context: fidl::encoding::Context) -> usize {
469 8
470 }
471
472 #[inline(always)]
473 fn inline_size(_context: fidl::encoding::Context) -> usize {
474 16
475 }
476 }
477
478 unsafe impl<D: fidl::encoding::ResourceDialect>
479 fidl::encoding::Encode<DeviceSetNodesBandwidthResponse, D>
480 for &DeviceSetNodesBandwidthResponse
481 {
482 #[inline]
483 unsafe fn encode(
484 self,
485 encoder: &mut fidl::encoding::Encoder<'_, D>,
486 offset: usize,
487 _depth: fidl::encoding::Depth,
488 ) -> fidl::Result<()> {
489 encoder.debug_check_bounds::<DeviceSetNodesBandwidthResponse>(offset);
490 fidl::encoding::Encode::<DeviceSetNodesBandwidthResponse, D>::encode(
492 (
493 <fidl::encoding::UnboundedVector<AggregatedBandwidth> as fidl::encoding::ValueTypeMarker>::borrow(&self.aggregated_bandwidth),
494 ),
495 encoder, offset, _depth
496 )
497 }
498 }
499 unsafe impl<
500 D: fidl::encoding::ResourceDialect,
501 T0: fidl::encoding::Encode<fidl::encoding::UnboundedVector<AggregatedBandwidth>, D>,
502 > fidl::encoding::Encode<DeviceSetNodesBandwidthResponse, D> for (T0,)
503 {
504 #[inline]
505 unsafe fn encode(
506 self,
507 encoder: &mut fidl::encoding::Encoder<'_, D>,
508 offset: usize,
509 depth: fidl::encoding::Depth,
510 ) -> fidl::Result<()> {
511 encoder.debug_check_bounds::<DeviceSetNodesBandwidthResponse>(offset);
512 self.0.encode(encoder, offset + 0, depth)?;
516 Ok(())
517 }
518 }
519
520 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
521 for DeviceSetNodesBandwidthResponse
522 {
523 #[inline(always)]
524 fn new_empty() -> Self {
525 Self {
526 aggregated_bandwidth: fidl::new_empty!(
527 fidl::encoding::UnboundedVector<AggregatedBandwidth>,
528 D
529 ),
530 }
531 }
532
533 #[inline]
534 unsafe fn decode(
535 &mut self,
536 decoder: &mut fidl::encoding::Decoder<'_, D>,
537 offset: usize,
538 _depth: fidl::encoding::Depth,
539 ) -> fidl::Result<()> {
540 decoder.debug_check_bounds::<Self>(offset);
541 fidl::decode!(
543 fidl::encoding::UnboundedVector<AggregatedBandwidth>,
544 D,
545 &mut self.aggregated_bandwidth,
546 decoder,
547 offset + 0,
548 _depth
549 )?;
550 Ok(())
551 }
552 }
553
554 impl AggregatedBandwidth {
555 #[inline(always)]
556 fn max_ordinal_present(&self) -> u64 {
557 if let Some(_) = self.peak_bandwidth_bps {
558 return 3;
559 }
560 if let Some(_) = self.average_bandwidth_bps {
561 return 2;
562 }
563 if let Some(_) = self.node_id {
564 return 1;
565 }
566 0
567 }
568 }
569
570 impl fidl::encoding::ValueTypeMarker for AggregatedBandwidth {
571 type Borrowed<'a> = &'a Self;
572 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
573 value
574 }
575 }
576
577 unsafe impl fidl::encoding::TypeMarker for AggregatedBandwidth {
578 type Owned = Self;
579
580 #[inline(always)]
581 fn inline_align(_context: fidl::encoding::Context) -> usize {
582 8
583 }
584
585 #[inline(always)]
586 fn inline_size(_context: fidl::encoding::Context) -> usize {
587 16
588 }
589 }
590
591 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<AggregatedBandwidth, D>
592 for &AggregatedBandwidth
593 {
594 unsafe fn encode(
595 self,
596 encoder: &mut fidl::encoding::Encoder<'_, D>,
597 offset: usize,
598 mut depth: fidl::encoding::Depth,
599 ) -> fidl::Result<()> {
600 encoder.debug_check_bounds::<AggregatedBandwidth>(offset);
601 let max_ordinal: u64 = self.max_ordinal_present();
603 encoder.write_num(max_ordinal, offset);
604 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
605 if max_ordinal == 0 {
607 return Ok(());
608 }
609 depth.increment()?;
610 let envelope_size = 8;
611 let bytes_len = max_ordinal as usize * envelope_size;
612 #[allow(unused_variables)]
613 let offset = encoder.out_of_line_offset(bytes_len);
614 let mut _prev_end_offset: usize = 0;
615 if 1 > max_ordinal {
616 return Ok(());
617 }
618
619 let cur_offset: usize = (1 - 1) * envelope_size;
622
623 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
625
626 fidl::encoding::encode_in_envelope_optional::<u32, D>(
631 self.node_id.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
632 encoder,
633 offset + cur_offset,
634 depth,
635 )?;
636
637 _prev_end_offset = cur_offset + envelope_size;
638 if 2 > max_ordinal {
639 return Ok(());
640 }
641
642 let cur_offset: usize = (2 - 1) * envelope_size;
645
646 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
648
649 fidl::encoding::encode_in_envelope_optional::<u64, D>(
654 self.average_bandwidth_bps
655 .as_ref()
656 .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
657 encoder,
658 offset + cur_offset,
659 depth,
660 )?;
661
662 _prev_end_offset = cur_offset + envelope_size;
663 if 3 > max_ordinal {
664 return Ok(());
665 }
666
667 let cur_offset: usize = (3 - 1) * envelope_size;
670
671 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
673
674 fidl::encoding::encode_in_envelope_optional::<u64, D>(
679 self.peak_bandwidth_bps
680 .as_ref()
681 .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
682 encoder,
683 offset + cur_offset,
684 depth,
685 )?;
686
687 _prev_end_offset = cur_offset + envelope_size;
688
689 Ok(())
690 }
691 }
692
693 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for AggregatedBandwidth {
694 #[inline(always)]
695 fn new_empty() -> Self {
696 Self::default()
697 }
698
699 unsafe fn decode(
700 &mut self,
701 decoder: &mut fidl::encoding::Decoder<'_, D>,
702 offset: usize,
703 mut depth: fidl::encoding::Depth,
704 ) -> fidl::Result<()> {
705 decoder.debug_check_bounds::<Self>(offset);
706 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
707 None => return Err(fidl::Error::NotNullable),
708 Some(len) => len,
709 };
710 if len == 0 {
712 return Ok(());
713 };
714 depth.increment()?;
715 let envelope_size = 8;
716 let bytes_len = len * envelope_size;
717 let offset = decoder.out_of_line_offset(bytes_len)?;
718 let mut _next_ordinal_to_read = 0;
720 let mut next_offset = offset;
721 let end_offset = offset + bytes_len;
722 _next_ordinal_to_read += 1;
723 if next_offset >= end_offset {
724 return Ok(());
725 }
726
727 while _next_ordinal_to_read < 1 {
729 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
730 _next_ordinal_to_read += 1;
731 next_offset += envelope_size;
732 }
733
734 let next_out_of_line = decoder.next_out_of_line();
735 let handles_before = decoder.remaining_handles();
736 if let Some((inlined, num_bytes, num_handles)) =
737 fidl::encoding::decode_envelope_header(decoder, next_offset)?
738 {
739 let member_inline_size =
740 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
741 if inlined != (member_inline_size <= 4) {
742 return Err(fidl::Error::InvalidInlineBitInEnvelope);
743 }
744 let inner_offset;
745 let mut inner_depth = depth.clone();
746 if inlined {
747 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
748 inner_offset = next_offset;
749 } else {
750 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
751 inner_depth.increment()?;
752 }
753 let val_ref = self.node_id.get_or_insert_with(|| fidl::new_empty!(u32, D));
754 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
755 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
756 {
757 return Err(fidl::Error::InvalidNumBytesInEnvelope);
758 }
759 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
760 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
761 }
762 }
763
764 next_offset += envelope_size;
765 _next_ordinal_to_read += 1;
766 if next_offset >= end_offset {
767 return Ok(());
768 }
769
770 while _next_ordinal_to_read < 2 {
772 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
773 _next_ordinal_to_read += 1;
774 next_offset += envelope_size;
775 }
776
777 let next_out_of_line = decoder.next_out_of_line();
778 let handles_before = decoder.remaining_handles();
779 if let Some((inlined, num_bytes, num_handles)) =
780 fidl::encoding::decode_envelope_header(decoder, next_offset)?
781 {
782 let member_inline_size =
783 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
784 if inlined != (member_inline_size <= 4) {
785 return Err(fidl::Error::InvalidInlineBitInEnvelope);
786 }
787 let inner_offset;
788 let mut inner_depth = depth.clone();
789 if inlined {
790 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
791 inner_offset = next_offset;
792 } else {
793 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
794 inner_depth.increment()?;
795 }
796 let val_ref =
797 self.average_bandwidth_bps.get_or_insert_with(|| fidl::new_empty!(u64, D));
798 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
799 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
800 {
801 return Err(fidl::Error::InvalidNumBytesInEnvelope);
802 }
803 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
804 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
805 }
806 }
807
808 next_offset += envelope_size;
809 _next_ordinal_to_read += 1;
810 if next_offset >= end_offset {
811 return Ok(());
812 }
813
814 while _next_ordinal_to_read < 3 {
816 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
817 _next_ordinal_to_read += 1;
818 next_offset += envelope_size;
819 }
820
821 let next_out_of_line = decoder.next_out_of_line();
822 let handles_before = decoder.remaining_handles();
823 if let Some((inlined, num_bytes, num_handles)) =
824 fidl::encoding::decode_envelope_header(decoder, next_offset)?
825 {
826 let member_inline_size =
827 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
828 if inlined != (member_inline_size <= 4) {
829 return Err(fidl::Error::InvalidInlineBitInEnvelope);
830 }
831 let inner_offset;
832 let mut inner_depth = depth.clone();
833 if inlined {
834 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
835 inner_offset = next_offset;
836 } else {
837 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
838 inner_depth.increment()?;
839 }
840 let val_ref =
841 self.peak_bandwidth_bps.get_or_insert_with(|| fidl::new_empty!(u64, D));
842 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
843 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
844 {
845 return Err(fidl::Error::InvalidNumBytesInEnvelope);
846 }
847 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
848 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
849 }
850 }
851
852 next_offset += envelope_size;
853
854 while next_offset < end_offset {
856 _next_ordinal_to_read += 1;
857 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
858 next_offset += envelope_size;
859 }
860
861 Ok(())
862 }
863 }
864
865 impl BandwidthRequest {
866 #[inline(always)]
867 fn max_ordinal_present(&self) -> u64 {
868 if let Some(_) = self.tag {
869 return 3;
870 }
871 if let Some(_) = self.peak_bandwidth_bps {
872 return 2;
873 }
874 if let Some(_) = self.average_bandwidth_bps {
875 return 1;
876 }
877 0
878 }
879 }
880
881 impl fidl::encoding::ValueTypeMarker for BandwidthRequest {
882 type Borrowed<'a> = &'a Self;
883 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
884 value
885 }
886 }
887
888 unsafe impl fidl::encoding::TypeMarker for BandwidthRequest {
889 type Owned = Self;
890
891 #[inline(always)]
892 fn inline_align(_context: fidl::encoding::Context) -> usize {
893 8
894 }
895
896 #[inline(always)]
897 fn inline_size(_context: fidl::encoding::Context) -> usize {
898 16
899 }
900 }
901
902 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<BandwidthRequest, D>
903 for &BandwidthRequest
904 {
905 unsafe fn encode(
906 self,
907 encoder: &mut fidl::encoding::Encoder<'_, D>,
908 offset: usize,
909 mut depth: fidl::encoding::Depth,
910 ) -> fidl::Result<()> {
911 encoder.debug_check_bounds::<BandwidthRequest>(offset);
912 let max_ordinal: u64 = self.max_ordinal_present();
914 encoder.write_num(max_ordinal, offset);
915 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
916 if max_ordinal == 0 {
918 return Ok(());
919 }
920 depth.increment()?;
921 let envelope_size = 8;
922 let bytes_len = max_ordinal as usize * envelope_size;
923 #[allow(unused_variables)]
924 let offset = encoder.out_of_line_offset(bytes_len);
925 let mut _prev_end_offset: usize = 0;
926 if 1 > max_ordinal {
927 return Ok(());
928 }
929
930 let cur_offset: usize = (1 - 1) * envelope_size;
933
934 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
936
937 fidl::encoding::encode_in_envelope_optional::<u64, D>(
942 self.average_bandwidth_bps
943 .as_ref()
944 .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
945 encoder,
946 offset + cur_offset,
947 depth,
948 )?;
949
950 _prev_end_offset = cur_offset + envelope_size;
951 if 2 > max_ordinal {
952 return Ok(());
953 }
954
955 let cur_offset: usize = (2 - 1) * envelope_size;
958
959 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
961
962 fidl::encoding::encode_in_envelope_optional::<u64, D>(
967 self.peak_bandwidth_bps
968 .as_ref()
969 .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
970 encoder,
971 offset + cur_offset,
972 depth,
973 )?;
974
975 _prev_end_offset = cur_offset + envelope_size;
976 if 3 > max_ordinal {
977 return Ok(());
978 }
979
980 let cur_offset: usize = (3 - 1) * envelope_size;
983
984 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
986
987 fidl::encoding::encode_in_envelope_optional::<u32, D>(
992 self.tag.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
993 encoder,
994 offset + cur_offset,
995 depth,
996 )?;
997
998 _prev_end_offset = cur_offset + envelope_size;
999
1000 Ok(())
1001 }
1002 }
1003
1004 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for BandwidthRequest {
1005 #[inline(always)]
1006 fn new_empty() -> Self {
1007 Self::default()
1008 }
1009
1010 unsafe fn decode(
1011 &mut self,
1012 decoder: &mut fidl::encoding::Decoder<'_, D>,
1013 offset: usize,
1014 mut depth: fidl::encoding::Depth,
1015 ) -> fidl::Result<()> {
1016 decoder.debug_check_bounds::<Self>(offset);
1017 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
1018 None => return Err(fidl::Error::NotNullable),
1019 Some(len) => len,
1020 };
1021 if len == 0 {
1023 return Ok(());
1024 };
1025 depth.increment()?;
1026 let envelope_size = 8;
1027 let bytes_len = len * envelope_size;
1028 let offset = decoder.out_of_line_offset(bytes_len)?;
1029 let mut _next_ordinal_to_read = 0;
1031 let mut next_offset = offset;
1032 let end_offset = offset + bytes_len;
1033 _next_ordinal_to_read += 1;
1034 if next_offset >= end_offset {
1035 return Ok(());
1036 }
1037
1038 while _next_ordinal_to_read < 1 {
1040 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1041 _next_ordinal_to_read += 1;
1042 next_offset += envelope_size;
1043 }
1044
1045 let next_out_of_line = decoder.next_out_of_line();
1046 let handles_before = decoder.remaining_handles();
1047 if let Some((inlined, num_bytes, num_handles)) =
1048 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1049 {
1050 let member_inline_size =
1051 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1052 if inlined != (member_inline_size <= 4) {
1053 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1054 }
1055 let inner_offset;
1056 let mut inner_depth = depth.clone();
1057 if inlined {
1058 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1059 inner_offset = next_offset;
1060 } else {
1061 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1062 inner_depth.increment()?;
1063 }
1064 let val_ref =
1065 self.average_bandwidth_bps.get_or_insert_with(|| fidl::new_empty!(u64, D));
1066 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
1067 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1068 {
1069 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1070 }
1071 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1072 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1073 }
1074 }
1075
1076 next_offset += envelope_size;
1077 _next_ordinal_to_read += 1;
1078 if next_offset >= end_offset {
1079 return Ok(());
1080 }
1081
1082 while _next_ordinal_to_read < 2 {
1084 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1085 _next_ordinal_to_read += 1;
1086 next_offset += envelope_size;
1087 }
1088
1089 let next_out_of_line = decoder.next_out_of_line();
1090 let handles_before = decoder.remaining_handles();
1091 if let Some((inlined, num_bytes, num_handles)) =
1092 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1093 {
1094 let member_inline_size =
1095 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1096 if inlined != (member_inline_size <= 4) {
1097 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1098 }
1099 let inner_offset;
1100 let mut inner_depth = depth.clone();
1101 if inlined {
1102 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1103 inner_offset = next_offset;
1104 } else {
1105 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1106 inner_depth.increment()?;
1107 }
1108 let val_ref =
1109 self.peak_bandwidth_bps.get_or_insert_with(|| fidl::new_empty!(u64, D));
1110 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
1111 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1112 {
1113 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1114 }
1115 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1116 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1117 }
1118 }
1119
1120 next_offset += envelope_size;
1121 _next_ordinal_to_read += 1;
1122 if next_offset >= end_offset {
1123 return Ok(());
1124 }
1125
1126 while _next_ordinal_to_read < 3 {
1128 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1129 _next_ordinal_to_read += 1;
1130 next_offset += envelope_size;
1131 }
1132
1133 let next_out_of_line = decoder.next_out_of_line();
1134 let handles_before = decoder.remaining_handles();
1135 if let Some((inlined, num_bytes, num_handles)) =
1136 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1137 {
1138 let member_inline_size =
1139 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1140 if inlined != (member_inline_size <= 4) {
1141 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1142 }
1143 let inner_offset;
1144 let mut inner_depth = depth.clone();
1145 if inlined {
1146 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1147 inner_offset = next_offset;
1148 } else {
1149 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1150 inner_depth.increment()?;
1151 }
1152 let val_ref = self.tag.get_or_insert_with(|| fidl::new_empty!(u32, D));
1153 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
1154 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1155 {
1156 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1157 }
1158 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1159 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1160 }
1161 }
1162
1163 next_offset += envelope_size;
1164
1165 while next_offset < end_offset {
1167 _next_ordinal_to_read += 1;
1168 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1169 next_offset += envelope_size;
1170 }
1171
1172 Ok(())
1173 }
1174 }
1175
1176 impl Edge {
1177 #[inline(always)]
1178 fn max_ordinal_present(&self) -> u64 {
1179 if let Some(_) = self.weight {
1180 return 3;
1181 }
1182 if let Some(_) = self.dst_node_id {
1183 return 2;
1184 }
1185 if let Some(_) = self.src_node_id {
1186 return 1;
1187 }
1188 0
1189 }
1190 }
1191
1192 impl fidl::encoding::ValueTypeMarker for Edge {
1193 type Borrowed<'a> = &'a Self;
1194 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1195 value
1196 }
1197 }
1198
1199 unsafe impl fidl::encoding::TypeMarker for Edge {
1200 type Owned = Self;
1201
1202 #[inline(always)]
1203 fn inline_align(_context: fidl::encoding::Context) -> usize {
1204 8
1205 }
1206
1207 #[inline(always)]
1208 fn inline_size(_context: fidl::encoding::Context) -> usize {
1209 16
1210 }
1211 }
1212
1213 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Edge, D> for &Edge {
1214 unsafe fn encode(
1215 self,
1216 encoder: &mut fidl::encoding::Encoder<'_, D>,
1217 offset: usize,
1218 mut depth: fidl::encoding::Depth,
1219 ) -> fidl::Result<()> {
1220 encoder.debug_check_bounds::<Edge>(offset);
1221 let max_ordinal: u64 = self.max_ordinal_present();
1223 encoder.write_num(max_ordinal, offset);
1224 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
1225 if max_ordinal == 0 {
1227 return Ok(());
1228 }
1229 depth.increment()?;
1230 let envelope_size = 8;
1231 let bytes_len = max_ordinal as usize * envelope_size;
1232 #[allow(unused_variables)]
1233 let offset = encoder.out_of_line_offset(bytes_len);
1234 let mut _prev_end_offset: usize = 0;
1235 if 1 > max_ordinal {
1236 return Ok(());
1237 }
1238
1239 let cur_offset: usize = (1 - 1) * envelope_size;
1242
1243 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1245
1246 fidl::encoding::encode_in_envelope_optional::<u32, D>(
1251 self.src_node_id.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
1252 encoder,
1253 offset + cur_offset,
1254 depth,
1255 )?;
1256
1257 _prev_end_offset = cur_offset + envelope_size;
1258 if 2 > max_ordinal {
1259 return Ok(());
1260 }
1261
1262 let cur_offset: usize = (2 - 1) * envelope_size;
1265
1266 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1268
1269 fidl::encoding::encode_in_envelope_optional::<u32, D>(
1274 self.dst_node_id.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
1275 encoder,
1276 offset + cur_offset,
1277 depth,
1278 )?;
1279
1280 _prev_end_offset = cur_offset + envelope_size;
1281 if 3 > max_ordinal {
1282 return Ok(());
1283 }
1284
1285 let cur_offset: usize = (3 - 1) * envelope_size;
1288
1289 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1291
1292 fidl::encoding::encode_in_envelope_optional::<u32, D>(
1297 self.weight.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
1298 encoder,
1299 offset + cur_offset,
1300 depth,
1301 )?;
1302
1303 _prev_end_offset = cur_offset + envelope_size;
1304
1305 Ok(())
1306 }
1307 }
1308
1309 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Edge {
1310 #[inline(always)]
1311 fn new_empty() -> Self {
1312 Self::default()
1313 }
1314
1315 unsafe fn decode(
1316 &mut self,
1317 decoder: &mut fidl::encoding::Decoder<'_, D>,
1318 offset: usize,
1319 mut depth: fidl::encoding::Depth,
1320 ) -> fidl::Result<()> {
1321 decoder.debug_check_bounds::<Self>(offset);
1322 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
1323 None => return Err(fidl::Error::NotNullable),
1324 Some(len) => len,
1325 };
1326 if len == 0 {
1328 return Ok(());
1329 };
1330 depth.increment()?;
1331 let envelope_size = 8;
1332 let bytes_len = len * envelope_size;
1333 let offset = decoder.out_of_line_offset(bytes_len)?;
1334 let mut _next_ordinal_to_read = 0;
1336 let mut next_offset = offset;
1337 let end_offset = offset + bytes_len;
1338 _next_ordinal_to_read += 1;
1339 if next_offset >= end_offset {
1340 return Ok(());
1341 }
1342
1343 while _next_ordinal_to_read < 1 {
1345 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1346 _next_ordinal_to_read += 1;
1347 next_offset += envelope_size;
1348 }
1349
1350 let next_out_of_line = decoder.next_out_of_line();
1351 let handles_before = decoder.remaining_handles();
1352 if let Some((inlined, num_bytes, num_handles)) =
1353 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1354 {
1355 let member_inline_size =
1356 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1357 if inlined != (member_inline_size <= 4) {
1358 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1359 }
1360 let inner_offset;
1361 let mut inner_depth = depth.clone();
1362 if inlined {
1363 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1364 inner_offset = next_offset;
1365 } else {
1366 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1367 inner_depth.increment()?;
1368 }
1369 let val_ref = self.src_node_id.get_or_insert_with(|| fidl::new_empty!(u32, D));
1370 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
1371 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1372 {
1373 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1374 }
1375 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1376 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1377 }
1378 }
1379
1380 next_offset += envelope_size;
1381 _next_ordinal_to_read += 1;
1382 if next_offset >= end_offset {
1383 return Ok(());
1384 }
1385
1386 while _next_ordinal_to_read < 2 {
1388 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1389 _next_ordinal_to_read += 1;
1390 next_offset += envelope_size;
1391 }
1392
1393 let next_out_of_line = decoder.next_out_of_line();
1394 let handles_before = decoder.remaining_handles();
1395 if let Some((inlined, num_bytes, num_handles)) =
1396 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1397 {
1398 let member_inline_size =
1399 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1400 if inlined != (member_inline_size <= 4) {
1401 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1402 }
1403 let inner_offset;
1404 let mut inner_depth = depth.clone();
1405 if inlined {
1406 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1407 inner_offset = next_offset;
1408 } else {
1409 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1410 inner_depth.increment()?;
1411 }
1412 let val_ref = self.dst_node_id.get_or_insert_with(|| fidl::new_empty!(u32, D));
1413 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
1414 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1415 {
1416 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1417 }
1418 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1419 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1420 }
1421 }
1422
1423 next_offset += envelope_size;
1424 _next_ordinal_to_read += 1;
1425 if next_offset >= end_offset {
1426 return Ok(());
1427 }
1428
1429 while _next_ordinal_to_read < 3 {
1431 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1432 _next_ordinal_to_read += 1;
1433 next_offset += envelope_size;
1434 }
1435
1436 let next_out_of_line = decoder.next_out_of_line();
1437 let handles_before = decoder.remaining_handles();
1438 if let Some((inlined, num_bytes, num_handles)) =
1439 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1440 {
1441 let member_inline_size =
1442 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1443 if inlined != (member_inline_size <= 4) {
1444 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1445 }
1446 let inner_offset;
1447 let mut inner_depth = depth.clone();
1448 if inlined {
1449 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1450 inner_offset = next_offset;
1451 } else {
1452 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1453 inner_depth.increment()?;
1454 }
1455 let val_ref = self.weight.get_or_insert_with(|| fidl::new_empty!(u32, D));
1456 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
1457 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1458 {
1459 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1460 }
1461 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1462 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1463 }
1464 }
1465
1466 next_offset += envelope_size;
1467
1468 while next_offset < end_offset {
1470 _next_ordinal_to_read += 1;
1471 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1472 next_offset += envelope_size;
1473 }
1474
1475 Ok(())
1476 }
1477 }
1478
1479 impl Metadata {
1480 #[inline(always)]
1481 fn max_ordinal_present(&self) -> u64 {
1482 if let Some(_) = self.paths {
1483 return 1;
1484 }
1485 0
1486 }
1487 }
1488
1489 impl fidl::encoding::ValueTypeMarker for Metadata {
1490 type Borrowed<'a> = &'a Self;
1491 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1492 value
1493 }
1494 }
1495
1496 unsafe impl fidl::encoding::TypeMarker for Metadata {
1497 type Owned = Self;
1498
1499 #[inline(always)]
1500 fn inline_align(_context: fidl::encoding::Context) -> usize {
1501 8
1502 }
1503
1504 #[inline(always)]
1505 fn inline_size(_context: fidl::encoding::Context) -> usize {
1506 16
1507 }
1508 }
1509
1510 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Metadata, D> for &Metadata {
1511 unsafe fn encode(
1512 self,
1513 encoder: &mut fidl::encoding::Encoder<'_, D>,
1514 offset: usize,
1515 mut depth: fidl::encoding::Depth,
1516 ) -> fidl::Result<()> {
1517 encoder.debug_check_bounds::<Metadata>(offset);
1518 let max_ordinal: u64 = self.max_ordinal_present();
1520 encoder.write_num(max_ordinal, offset);
1521 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
1522 if max_ordinal == 0 {
1524 return Ok(());
1525 }
1526 depth.increment()?;
1527 let envelope_size = 8;
1528 let bytes_len = max_ordinal as usize * envelope_size;
1529 #[allow(unused_variables)]
1530 let offset = encoder.out_of_line_offset(bytes_len);
1531 let mut _prev_end_offset: usize = 0;
1532 if 1 > max_ordinal {
1533 return Ok(());
1534 }
1535
1536 let cur_offset: usize = (1 - 1) * envelope_size;
1539
1540 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1542
1543 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<PathEndpoints>, D>(
1548 self.paths.as_ref().map(<fidl::encoding::UnboundedVector<PathEndpoints> as fidl::encoding::ValueTypeMarker>::borrow),
1549 encoder, offset + cur_offset, depth
1550 )?;
1551
1552 _prev_end_offset = cur_offset + envelope_size;
1553
1554 Ok(())
1555 }
1556 }
1557
1558 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Metadata {
1559 #[inline(always)]
1560 fn new_empty() -> Self {
1561 Self::default()
1562 }
1563
1564 unsafe fn decode(
1565 &mut self,
1566 decoder: &mut fidl::encoding::Decoder<'_, D>,
1567 offset: usize,
1568 mut depth: fidl::encoding::Depth,
1569 ) -> fidl::Result<()> {
1570 decoder.debug_check_bounds::<Self>(offset);
1571 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
1572 None => return Err(fidl::Error::NotNullable),
1573 Some(len) => len,
1574 };
1575 if len == 0 {
1577 return Ok(());
1578 };
1579 depth.increment()?;
1580 let envelope_size = 8;
1581 let bytes_len = len * envelope_size;
1582 let offset = decoder.out_of_line_offset(bytes_len)?;
1583 let mut _next_ordinal_to_read = 0;
1585 let mut next_offset = offset;
1586 let end_offset = offset + bytes_len;
1587 _next_ordinal_to_read += 1;
1588 if next_offset >= end_offset {
1589 return Ok(());
1590 }
1591
1592 while _next_ordinal_to_read < 1 {
1594 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1595 _next_ordinal_to_read += 1;
1596 next_offset += envelope_size;
1597 }
1598
1599 let next_out_of_line = decoder.next_out_of_line();
1600 let handles_before = decoder.remaining_handles();
1601 if let Some((inlined, num_bytes, num_handles)) =
1602 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1603 {
1604 let member_inline_size = <fidl::encoding::UnboundedVector<PathEndpoints> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1605 if inlined != (member_inline_size <= 4) {
1606 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1607 }
1608 let inner_offset;
1609 let mut inner_depth = depth.clone();
1610 if inlined {
1611 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1612 inner_offset = next_offset;
1613 } else {
1614 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1615 inner_depth.increment()?;
1616 }
1617 let val_ref = self.paths.get_or_insert_with(|| {
1618 fidl::new_empty!(fidl::encoding::UnboundedVector<PathEndpoints>, D)
1619 });
1620 fidl::decode!(
1621 fidl::encoding::UnboundedVector<PathEndpoints>,
1622 D,
1623 val_ref,
1624 decoder,
1625 inner_offset,
1626 inner_depth
1627 )?;
1628 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1629 {
1630 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1631 }
1632 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1633 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1634 }
1635 }
1636
1637 next_offset += envelope_size;
1638
1639 while next_offset < end_offset {
1641 _next_ordinal_to_read += 1;
1642 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1643 next_offset += envelope_size;
1644 }
1645
1646 Ok(())
1647 }
1648 }
1649
1650 impl Node {
1651 #[inline(always)]
1652 fn max_ordinal_present(&self) -> u64 {
1653 if let Some(_) = self.initial_peak_bandwidth_bps {
1654 return 5;
1655 }
1656 if let Some(_) = self.initial_avg_bandwidth_bps {
1657 return 4;
1658 }
1659 if let Some(_) = self.interconnect_name {
1660 return 3;
1661 }
1662 if let Some(_) = self.name {
1663 return 2;
1664 }
1665 if let Some(_) = self.id {
1666 return 1;
1667 }
1668 0
1669 }
1670 }
1671
1672 impl fidl::encoding::ValueTypeMarker for Node {
1673 type Borrowed<'a> = &'a Self;
1674 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1675 value
1676 }
1677 }
1678
1679 unsafe impl fidl::encoding::TypeMarker for Node {
1680 type Owned = Self;
1681
1682 #[inline(always)]
1683 fn inline_align(_context: fidl::encoding::Context) -> usize {
1684 8
1685 }
1686
1687 #[inline(always)]
1688 fn inline_size(_context: fidl::encoding::Context) -> usize {
1689 16
1690 }
1691 }
1692
1693 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Node, D> for &Node {
1694 unsafe fn encode(
1695 self,
1696 encoder: &mut fidl::encoding::Encoder<'_, D>,
1697 offset: usize,
1698 mut depth: fidl::encoding::Depth,
1699 ) -> fidl::Result<()> {
1700 encoder.debug_check_bounds::<Node>(offset);
1701 let max_ordinal: u64 = self.max_ordinal_present();
1703 encoder.write_num(max_ordinal, offset);
1704 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
1705 if max_ordinal == 0 {
1707 return Ok(());
1708 }
1709 depth.increment()?;
1710 let envelope_size = 8;
1711 let bytes_len = max_ordinal as usize * envelope_size;
1712 #[allow(unused_variables)]
1713 let offset = encoder.out_of_line_offset(bytes_len);
1714 let mut _prev_end_offset: usize = 0;
1715 if 1 > max_ordinal {
1716 return Ok(());
1717 }
1718
1719 let cur_offset: usize = (1 - 1) * envelope_size;
1722
1723 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1725
1726 fidl::encoding::encode_in_envelope_optional::<u32, D>(
1731 self.id.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
1732 encoder,
1733 offset + cur_offset,
1734 depth,
1735 )?;
1736
1737 _prev_end_offset = cur_offset + envelope_size;
1738 if 2 > max_ordinal {
1739 return Ok(());
1740 }
1741
1742 let cur_offset: usize = (2 - 1) * envelope_size;
1745
1746 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1748
1749 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<64>, D>(
1754 self.name.as_ref().map(
1755 <fidl::encoding::BoundedString<64> as fidl::encoding::ValueTypeMarker>::borrow,
1756 ),
1757 encoder,
1758 offset + cur_offset,
1759 depth,
1760 )?;
1761
1762 _prev_end_offset = cur_offset + envelope_size;
1763 if 3 > max_ordinal {
1764 return Ok(());
1765 }
1766
1767 let cur_offset: usize = (3 - 1) * envelope_size;
1770
1771 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1773
1774 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<64>, D>(
1779 self.interconnect_name.as_ref().map(
1780 <fidl::encoding::BoundedString<64> as fidl::encoding::ValueTypeMarker>::borrow,
1781 ),
1782 encoder,
1783 offset + cur_offset,
1784 depth,
1785 )?;
1786
1787 _prev_end_offset = cur_offset + envelope_size;
1788 if 4 > max_ordinal {
1789 return Ok(());
1790 }
1791
1792 let cur_offset: usize = (4 - 1) * envelope_size;
1795
1796 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1798
1799 fidl::encoding::encode_in_envelope_optional::<u64, D>(
1804 self.initial_avg_bandwidth_bps
1805 .as_ref()
1806 .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
1807 encoder,
1808 offset + cur_offset,
1809 depth,
1810 )?;
1811
1812 _prev_end_offset = cur_offset + envelope_size;
1813 if 5 > max_ordinal {
1814 return Ok(());
1815 }
1816
1817 let cur_offset: usize = (5 - 1) * envelope_size;
1820
1821 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1823
1824 fidl::encoding::encode_in_envelope_optional::<u64, D>(
1829 self.initial_peak_bandwidth_bps
1830 .as_ref()
1831 .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
1832 encoder,
1833 offset + cur_offset,
1834 depth,
1835 )?;
1836
1837 _prev_end_offset = cur_offset + envelope_size;
1838
1839 Ok(())
1840 }
1841 }
1842
1843 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Node {
1844 #[inline(always)]
1845 fn new_empty() -> Self {
1846 Self::default()
1847 }
1848
1849 unsafe fn decode(
1850 &mut self,
1851 decoder: &mut fidl::encoding::Decoder<'_, D>,
1852 offset: usize,
1853 mut depth: fidl::encoding::Depth,
1854 ) -> fidl::Result<()> {
1855 decoder.debug_check_bounds::<Self>(offset);
1856 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
1857 None => return Err(fidl::Error::NotNullable),
1858 Some(len) => len,
1859 };
1860 if len == 0 {
1862 return Ok(());
1863 };
1864 depth.increment()?;
1865 let envelope_size = 8;
1866 let bytes_len = len * envelope_size;
1867 let offset = decoder.out_of_line_offset(bytes_len)?;
1868 let mut _next_ordinal_to_read = 0;
1870 let mut next_offset = offset;
1871 let end_offset = offset + bytes_len;
1872 _next_ordinal_to_read += 1;
1873 if next_offset >= end_offset {
1874 return Ok(());
1875 }
1876
1877 while _next_ordinal_to_read < 1 {
1879 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1880 _next_ordinal_to_read += 1;
1881 next_offset += envelope_size;
1882 }
1883
1884 let next_out_of_line = decoder.next_out_of_line();
1885 let handles_before = decoder.remaining_handles();
1886 if let Some((inlined, num_bytes, num_handles)) =
1887 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1888 {
1889 let member_inline_size =
1890 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1891 if inlined != (member_inline_size <= 4) {
1892 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1893 }
1894 let inner_offset;
1895 let mut inner_depth = depth.clone();
1896 if inlined {
1897 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1898 inner_offset = next_offset;
1899 } else {
1900 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1901 inner_depth.increment()?;
1902 }
1903 let val_ref = self.id.get_or_insert_with(|| fidl::new_empty!(u32, D));
1904 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
1905 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1906 {
1907 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1908 }
1909 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1910 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1911 }
1912 }
1913
1914 next_offset += envelope_size;
1915 _next_ordinal_to_read += 1;
1916 if next_offset >= end_offset {
1917 return Ok(());
1918 }
1919
1920 while _next_ordinal_to_read < 2 {
1922 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1923 _next_ordinal_to_read += 1;
1924 next_offset += envelope_size;
1925 }
1926
1927 let next_out_of_line = decoder.next_out_of_line();
1928 let handles_before = decoder.remaining_handles();
1929 if let Some((inlined, num_bytes, num_handles)) =
1930 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1931 {
1932 let member_inline_size =
1933 <fidl::encoding::BoundedString<64> as fidl::encoding::TypeMarker>::inline_size(
1934 decoder.context,
1935 );
1936 if inlined != (member_inline_size <= 4) {
1937 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1938 }
1939 let inner_offset;
1940 let mut inner_depth = depth.clone();
1941 if inlined {
1942 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1943 inner_offset = next_offset;
1944 } else {
1945 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1946 inner_depth.increment()?;
1947 }
1948 let val_ref = self
1949 .name
1950 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<64>, D));
1951 fidl::decode!(
1952 fidl::encoding::BoundedString<64>,
1953 D,
1954 val_ref,
1955 decoder,
1956 inner_offset,
1957 inner_depth
1958 )?;
1959 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1960 {
1961 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1962 }
1963 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1964 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1965 }
1966 }
1967
1968 next_offset += envelope_size;
1969 _next_ordinal_to_read += 1;
1970 if next_offset >= end_offset {
1971 return Ok(());
1972 }
1973
1974 while _next_ordinal_to_read < 3 {
1976 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1977 _next_ordinal_to_read += 1;
1978 next_offset += envelope_size;
1979 }
1980
1981 let next_out_of_line = decoder.next_out_of_line();
1982 let handles_before = decoder.remaining_handles();
1983 if let Some((inlined, num_bytes, num_handles)) =
1984 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1985 {
1986 let member_inline_size =
1987 <fidl::encoding::BoundedString<64> as fidl::encoding::TypeMarker>::inline_size(
1988 decoder.context,
1989 );
1990 if inlined != (member_inline_size <= 4) {
1991 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1992 }
1993 let inner_offset;
1994 let mut inner_depth = depth.clone();
1995 if inlined {
1996 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1997 inner_offset = next_offset;
1998 } else {
1999 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2000 inner_depth.increment()?;
2001 }
2002 let val_ref = self
2003 .interconnect_name
2004 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<64>, D));
2005 fidl::decode!(
2006 fidl::encoding::BoundedString<64>,
2007 D,
2008 val_ref,
2009 decoder,
2010 inner_offset,
2011 inner_depth
2012 )?;
2013 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2014 {
2015 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2016 }
2017 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2018 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2019 }
2020 }
2021
2022 next_offset += envelope_size;
2023 _next_ordinal_to_read += 1;
2024 if next_offset >= end_offset {
2025 return Ok(());
2026 }
2027
2028 while _next_ordinal_to_read < 4 {
2030 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2031 _next_ordinal_to_read += 1;
2032 next_offset += envelope_size;
2033 }
2034
2035 let next_out_of_line = decoder.next_out_of_line();
2036 let handles_before = decoder.remaining_handles();
2037 if let Some((inlined, num_bytes, num_handles)) =
2038 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2039 {
2040 let member_inline_size =
2041 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2042 if inlined != (member_inline_size <= 4) {
2043 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2044 }
2045 let inner_offset;
2046 let mut inner_depth = depth.clone();
2047 if inlined {
2048 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2049 inner_offset = next_offset;
2050 } else {
2051 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2052 inner_depth.increment()?;
2053 }
2054 let val_ref =
2055 self.initial_avg_bandwidth_bps.get_or_insert_with(|| fidl::new_empty!(u64, D));
2056 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
2057 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2058 {
2059 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2060 }
2061 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2062 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2063 }
2064 }
2065
2066 next_offset += envelope_size;
2067 _next_ordinal_to_read += 1;
2068 if next_offset >= end_offset {
2069 return Ok(());
2070 }
2071
2072 while _next_ordinal_to_read < 5 {
2074 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2075 _next_ordinal_to_read += 1;
2076 next_offset += envelope_size;
2077 }
2078
2079 let next_out_of_line = decoder.next_out_of_line();
2080 let handles_before = decoder.remaining_handles();
2081 if let Some((inlined, num_bytes, num_handles)) =
2082 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2083 {
2084 let member_inline_size =
2085 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2086 if inlined != (member_inline_size <= 4) {
2087 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2088 }
2089 let inner_offset;
2090 let mut inner_depth = depth.clone();
2091 if inlined {
2092 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2093 inner_offset = next_offset;
2094 } else {
2095 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2096 inner_depth.increment()?;
2097 }
2098 let val_ref =
2099 self.initial_peak_bandwidth_bps.get_or_insert_with(|| fidl::new_empty!(u64, D));
2100 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
2101 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2102 {
2103 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2104 }
2105 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2106 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2107 }
2108 }
2109
2110 next_offset += envelope_size;
2111
2112 while next_offset < end_offset {
2114 _next_ordinal_to_read += 1;
2115 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2116 next_offset += envelope_size;
2117 }
2118
2119 Ok(())
2120 }
2121 }
2122
2123 impl NodeBandwidth {
2124 #[inline(always)]
2125 fn max_ordinal_present(&self) -> u64 {
2126 if let Some(_) = self.requests {
2127 return 2;
2128 }
2129 if let Some(_) = self.node_id {
2130 return 1;
2131 }
2132 0
2133 }
2134 }
2135
2136 impl fidl::encoding::ValueTypeMarker for NodeBandwidth {
2137 type Borrowed<'a> = &'a Self;
2138 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2139 value
2140 }
2141 }
2142
2143 unsafe impl fidl::encoding::TypeMarker for NodeBandwidth {
2144 type Owned = Self;
2145
2146 #[inline(always)]
2147 fn inline_align(_context: fidl::encoding::Context) -> usize {
2148 8
2149 }
2150
2151 #[inline(always)]
2152 fn inline_size(_context: fidl::encoding::Context) -> usize {
2153 16
2154 }
2155 }
2156
2157 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<NodeBandwidth, D>
2158 for &NodeBandwidth
2159 {
2160 unsafe fn encode(
2161 self,
2162 encoder: &mut fidl::encoding::Encoder<'_, D>,
2163 offset: usize,
2164 mut depth: fidl::encoding::Depth,
2165 ) -> fidl::Result<()> {
2166 encoder.debug_check_bounds::<NodeBandwidth>(offset);
2167 let max_ordinal: u64 = self.max_ordinal_present();
2169 encoder.write_num(max_ordinal, offset);
2170 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
2171 if max_ordinal == 0 {
2173 return Ok(());
2174 }
2175 depth.increment()?;
2176 let envelope_size = 8;
2177 let bytes_len = max_ordinal as usize * envelope_size;
2178 #[allow(unused_variables)]
2179 let offset = encoder.out_of_line_offset(bytes_len);
2180 let mut _prev_end_offset: usize = 0;
2181 if 1 > max_ordinal {
2182 return Ok(());
2183 }
2184
2185 let cur_offset: usize = (1 - 1) * envelope_size;
2188
2189 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2191
2192 fidl::encoding::encode_in_envelope_optional::<u32, D>(
2197 self.node_id.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
2198 encoder,
2199 offset + cur_offset,
2200 depth,
2201 )?;
2202
2203 _prev_end_offset = cur_offset + envelope_size;
2204 if 2 > max_ordinal {
2205 return Ok(());
2206 }
2207
2208 let cur_offset: usize = (2 - 1) * envelope_size;
2211
2212 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2214
2215 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<BandwidthRequest, 64>, D>(
2220 self.requests.as_ref().map(<fidl::encoding::Vector<BandwidthRequest, 64> as fidl::encoding::ValueTypeMarker>::borrow),
2221 encoder, offset + cur_offset, depth
2222 )?;
2223
2224 _prev_end_offset = cur_offset + envelope_size;
2225
2226 Ok(())
2227 }
2228 }
2229
2230 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for NodeBandwidth {
2231 #[inline(always)]
2232 fn new_empty() -> Self {
2233 Self::default()
2234 }
2235
2236 unsafe fn decode(
2237 &mut self,
2238 decoder: &mut fidl::encoding::Decoder<'_, D>,
2239 offset: usize,
2240 mut depth: fidl::encoding::Depth,
2241 ) -> fidl::Result<()> {
2242 decoder.debug_check_bounds::<Self>(offset);
2243 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
2244 None => return Err(fidl::Error::NotNullable),
2245 Some(len) => len,
2246 };
2247 if len == 0 {
2249 return Ok(());
2250 };
2251 depth.increment()?;
2252 let envelope_size = 8;
2253 let bytes_len = len * envelope_size;
2254 let offset = decoder.out_of_line_offset(bytes_len)?;
2255 let mut _next_ordinal_to_read = 0;
2257 let mut next_offset = offset;
2258 let end_offset = offset + bytes_len;
2259 _next_ordinal_to_read += 1;
2260 if next_offset >= end_offset {
2261 return Ok(());
2262 }
2263
2264 while _next_ordinal_to_read < 1 {
2266 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2267 _next_ordinal_to_read += 1;
2268 next_offset += envelope_size;
2269 }
2270
2271 let next_out_of_line = decoder.next_out_of_line();
2272 let handles_before = decoder.remaining_handles();
2273 if let Some((inlined, num_bytes, num_handles)) =
2274 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2275 {
2276 let member_inline_size =
2277 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2278 if inlined != (member_inline_size <= 4) {
2279 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2280 }
2281 let inner_offset;
2282 let mut inner_depth = depth.clone();
2283 if inlined {
2284 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2285 inner_offset = next_offset;
2286 } else {
2287 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2288 inner_depth.increment()?;
2289 }
2290 let val_ref = self.node_id.get_or_insert_with(|| fidl::new_empty!(u32, D));
2291 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
2292 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2293 {
2294 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2295 }
2296 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2297 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2298 }
2299 }
2300
2301 next_offset += envelope_size;
2302 _next_ordinal_to_read += 1;
2303 if next_offset >= end_offset {
2304 return Ok(());
2305 }
2306
2307 while _next_ordinal_to_read < 2 {
2309 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2310 _next_ordinal_to_read += 1;
2311 next_offset += envelope_size;
2312 }
2313
2314 let next_out_of_line = decoder.next_out_of_line();
2315 let handles_before = decoder.remaining_handles();
2316 if let Some((inlined, num_bytes, num_handles)) =
2317 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2318 {
2319 let member_inline_size = <fidl::encoding::Vector<BandwidthRequest, 64> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2320 if inlined != (member_inline_size <= 4) {
2321 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2322 }
2323 let inner_offset;
2324 let mut inner_depth = depth.clone();
2325 if inlined {
2326 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2327 inner_offset = next_offset;
2328 } else {
2329 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2330 inner_depth.increment()?;
2331 }
2332 let val_ref = self.requests.get_or_insert_with(
2333 || fidl::new_empty!(fidl::encoding::Vector<BandwidthRequest, 64>, D),
2334 );
2335 fidl::decode!(fidl::encoding::Vector<BandwidthRequest, 64>, D, val_ref, decoder, inner_offset, inner_depth)?;
2336 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2337 {
2338 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2339 }
2340 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2341 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2342 }
2343 }
2344
2345 next_offset += envelope_size;
2346
2347 while next_offset < end_offset {
2349 _next_ordinal_to_read += 1;
2350 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2351 next_offset += envelope_size;
2352 }
2353
2354 Ok(())
2355 }
2356 }
2357
2358 impl PathEndpoints {
2359 #[inline(always)]
2360 fn max_ordinal_present(&self) -> u64 {
2361 if let Some(_) = self.tag {
2362 return 5;
2363 }
2364 if let Some(_) = self.dst_node_id {
2365 return 4;
2366 }
2367 if let Some(_) = self.src_node_id {
2368 return 3;
2369 }
2370 if let Some(_) = self.id {
2371 return 2;
2372 }
2373 if let Some(_) = self.name {
2374 return 1;
2375 }
2376 0
2377 }
2378 }
2379
2380 impl fidl::encoding::ValueTypeMarker for PathEndpoints {
2381 type Borrowed<'a> = &'a Self;
2382 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2383 value
2384 }
2385 }
2386
2387 unsafe impl fidl::encoding::TypeMarker for PathEndpoints {
2388 type Owned = Self;
2389
2390 #[inline(always)]
2391 fn inline_align(_context: fidl::encoding::Context) -> usize {
2392 8
2393 }
2394
2395 #[inline(always)]
2396 fn inline_size(_context: fidl::encoding::Context) -> usize {
2397 16
2398 }
2399 }
2400
2401 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<PathEndpoints, D>
2402 for &PathEndpoints
2403 {
2404 unsafe fn encode(
2405 self,
2406 encoder: &mut fidl::encoding::Encoder<'_, D>,
2407 offset: usize,
2408 mut depth: fidl::encoding::Depth,
2409 ) -> fidl::Result<()> {
2410 encoder.debug_check_bounds::<PathEndpoints>(offset);
2411 let max_ordinal: u64 = self.max_ordinal_present();
2413 encoder.write_num(max_ordinal, offset);
2414 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
2415 if max_ordinal == 0 {
2417 return Ok(());
2418 }
2419 depth.increment()?;
2420 let envelope_size = 8;
2421 let bytes_len = max_ordinal as usize * envelope_size;
2422 #[allow(unused_variables)]
2423 let offset = encoder.out_of_line_offset(bytes_len);
2424 let mut _prev_end_offset: usize = 0;
2425 if 1 > max_ordinal {
2426 return Ok(());
2427 }
2428
2429 let cur_offset: usize = (1 - 1) * envelope_size;
2432
2433 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2435
2436 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<64>, D>(
2441 self.name.as_ref().map(
2442 <fidl::encoding::BoundedString<64> as fidl::encoding::ValueTypeMarker>::borrow,
2443 ),
2444 encoder,
2445 offset + cur_offset,
2446 depth,
2447 )?;
2448
2449 _prev_end_offset = cur_offset + envelope_size;
2450 if 2 > max_ordinal {
2451 return Ok(());
2452 }
2453
2454 let cur_offset: usize = (2 - 1) * envelope_size;
2457
2458 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2460
2461 fidl::encoding::encode_in_envelope_optional::<u32, D>(
2466 self.id.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
2467 encoder,
2468 offset + cur_offset,
2469 depth,
2470 )?;
2471
2472 _prev_end_offset = cur_offset + envelope_size;
2473 if 3 > max_ordinal {
2474 return Ok(());
2475 }
2476
2477 let cur_offset: usize = (3 - 1) * envelope_size;
2480
2481 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2483
2484 fidl::encoding::encode_in_envelope_optional::<u32, D>(
2489 self.src_node_id.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
2490 encoder,
2491 offset + cur_offset,
2492 depth,
2493 )?;
2494
2495 _prev_end_offset = cur_offset + envelope_size;
2496 if 4 > max_ordinal {
2497 return Ok(());
2498 }
2499
2500 let cur_offset: usize = (4 - 1) * envelope_size;
2503
2504 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2506
2507 fidl::encoding::encode_in_envelope_optional::<u32, D>(
2512 self.dst_node_id.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
2513 encoder,
2514 offset + cur_offset,
2515 depth,
2516 )?;
2517
2518 _prev_end_offset = cur_offset + envelope_size;
2519 if 5 > max_ordinal {
2520 return Ok(());
2521 }
2522
2523 let cur_offset: usize = (5 - 1) * envelope_size;
2526
2527 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2529
2530 fidl::encoding::encode_in_envelope_optional::<u32, D>(
2535 self.tag.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
2536 encoder,
2537 offset + cur_offset,
2538 depth,
2539 )?;
2540
2541 _prev_end_offset = cur_offset + envelope_size;
2542
2543 Ok(())
2544 }
2545 }
2546
2547 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for PathEndpoints {
2548 #[inline(always)]
2549 fn new_empty() -> Self {
2550 Self::default()
2551 }
2552
2553 unsafe fn decode(
2554 &mut self,
2555 decoder: &mut fidl::encoding::Decoder<'_, D>,
2556 offset: usize,
2557 mut depth: fidl::encoding::Depth,
2558 ) -> fidl::Result<()> {
2559 decoder.debug_check_bounds::<Self>(offset);
2560 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
2561 None => return Err(fidl::Error::NotNullable),
2562 Some(len) => len,
2563 };
2564 if len == 0 {
2566 return Ok(());
2567 };
2568 depth.increment()?;
2569 let envelope_size = 8;
2570 let bytes_len = len * envelope_size;
2571 let offset = decoder.out_of_line_offset(bytes_len)?;
2572 let mut _next_ordinal_to_read = 0;
2574 let mut next_offset = offset;
2575 let end_offset = offset + bytes_len;
2576 _next_ordinal_to_read += 1;
2577 if next_offset >= end_offset {
2578 return Ok(());
2579 }
2580
2581 while _next_ordinal_to_read < 1 {
2583 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2584 _next_ordinal_to_read += 1;
2585 next_offset += envelope_size;
2586 }
2587
2588 let next_out_of_line = decoder.next_out_of_line();
2589 let handles_before = decoder.remaining_handles();
2590 if let Some((inlined, num_bytes, num_handles)) =
2591 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2592 {
2593 let member_inline_size =
2594 <fidl::encoding::BoundedString<64> as fidl::encoding::TypeMarker>::inline_size(
2595 decoder.context,
2596 );
2597 if inlined != (member_inline_size <= 4) {
2598 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2599 }
2600 let inner_offset;
2601 let mut inner_depth = depth.clone();
2602 if inlined {
2603 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2604 inner_offset = next_offset;
2605 } else {
2606 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2607 inner_depth.increment()?;
2608 }
2609 let val_ref = self
2610 .name
2611 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<64>, D));
2612 fidl::decode!(
2613 fidl::encoding::BoundedString<64>,
2614 D,
2615 val_ref,
2616 decoder,
2617 inner_offset,
2618 inner_depth
2619 )?;
2620 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2621 {
2622 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2623 }
2624 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2625 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2626 }
2627 }
2628
2629 next_offset += envelope_size;
2630 _next_ordinal_to_read += 1;
2631 if next_offset >= end_offset {
2632 return Ok(());
2633 }
2634
2635 while _next_ordinal_to_read < 2 {
2637 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2638 _next_ordinal_to_read += 1;
2639 next_offset += envelope_size;
2640 }
2641
2642 let next_out_of_line = decoder.next_out_of_line();
2643 let handles_before = decoder.remaining_handles();
2644 if let Some((inlined, num_bytes, num_handles)) =
2645 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2646 {
2647 let member_inline_size =
2648 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2649 if inlined != (member_inline_size <= 4) {
2650 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2651 }
2652 let inner_offset;
2653 let mut inner_depth = depth.clone();
2654 if inlined {
2655 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2656 inner_offset = next_offset;
2657 } else {
2658 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2659 inner_depth.increment()?;
2660 }
2661 let val_ref = self.id.get_or_insert_with(|| fidl::new_empty!(u32, D));
2662 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
2663 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2664 {
2665 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2666 }
2667 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2668 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2669 }
2670 }
2671
2672 next_offset += envelope_size;
2673 _next_ordinal_to_read += 1;
2674 if next_offset >= end_offset {
2675 return Ok(());
2676 }
2677
2678 while _next_ordinal_to_read < 3 {
2680 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2681 _next_ordinal_to_read += 1;
2682 next_offset += envelope_size;
2683 }
2684
2685 let next_out_of_line = decoder.next_out_of_line();
2686 let handles_before = decoder.remaining_handles();
2687 if let Some((inlined, num_bytes, num_handles)) =
2688 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2689 {
2690 let member_inline_size =
2691 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2692 if inlined != (member_inline_size <= 4) {
2693 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2694 }
2695 let inner_offset;
2696 let mut inner_depth = depth.clone();
2697 if inlined {
2698 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2699 inner_offset = next_offset;
2700 } else {
2701 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2702 inner_depth.increment()?;
2703 }
2704 let val_ref = self.src_node_id.get_or_insert_with(|| fidl::new_empty!(u32, D));
2705 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
2706 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2707 {
2708 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2709 }
2710 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2711 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2712 }
2713 }
2714
2715 next_offset += envelope_size;
2716 _next_ordinal_to_read += 1;
2717 if next_offset >= end_offset {
2718 return Ok(());
2719 }
2720
2721 while _next_ordinal_to_read < 4 {
2723 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2724 _next_ordinal_to_read += 1;
2725 next_offset += envelope_size;
2726 }
2727
2728 let next_out_of_line = decoder.next_out_of_line();
2729 let handles_before = decoder.remaining_handles();
2730 if let Some((inlined, num_bytes, num_handles)) =
2731 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2732 {
2733 let member_inline_size =
2734 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2735 if inlined != (member_inline_size <= 4) {
2736 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2737 }
2738 let inner_offset;
2739 let mut inner_depth = depth.clone();
2740 if inlined {
2741 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2742 inner_offset = next_offset;
2743 } else {
2744 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2745 inner_depth.increment()?;
2746 }
2747 let val_ref = self.dst_node_id.get_or_insert_with(|| fidl::new_empty!(u32, D));
2748 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
2749 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2750 {
2751 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2752 }
2753 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2754 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2755 }
2756 }
2757
2758 next_offset += envelope_size;
2759 _next_ordinal_to_read += 1;
2760 if next_offset >= end_offset {
2761 return Ok(());
2762 }
2763
2764 while _next_ordinal_to_read < 5 {
2766 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2767 _next_ordinal_to_read += 1;
2768 next_offset += envelope_size;
2769 }
2770
2771 let next_out_of_line = decoder.next_out_of_line();
2772 let handles_before = decoder.remaining_handles();
2773 if let Some((inlined, num_bytes, num_handles)) =
2774 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2775 {
2776 let member_inline_size =
2777 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2778 if inlined != (member_inline_size <= 4) {
2779 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2780 }
2781 let inner_offset;
2782 let mut inner_depth = depth.clone();
2783 if inlined {
2784 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2785 inner_offset = next_offset;
2786 } else {
2787 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2788 inner_depth.increment()?;
2789 }
2790 let val_ref = self.tag.get_or_insert_with(|| fidl::new_empty!(u32, D));
2791 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
2792 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2793 {
2794 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2795 }
2796 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2797 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2798 }
2799 }
2800
2801 next_offset += envelope_size;
2802
2803 while next_offset < end_offset {
2805 _next_ordinal_to_read += 1;
2806 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2807 next_offset += envelope_size;
2808 }
2809
2810 Ok(())
2811 }
2812 }
2813}