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 #[doc(hidden)]
67 pub __source_breaking: fidl::marker::SourceBreaking,
68}
69
70impl fidl::Persistable for BandwidthRequest {}
71
72#[derive(Clone, Debug, Default, PartialEq)]
73pub struct Edge {
74 pub src_node_id: Option<u32>,
76 pub dst_node_id: Option<u32>,
78 pub weight: Option<u32>,
84 #[doc(hidden)]
85 pub __source_breaking: fidl::marker::SourceBreaking,
86}
87
88impl fidl::Persistable for Edge {}
89
90#[derive(Clone, Debug, Default, PartialEq)]
91pub struct Metadata {
92 pub paths: Option<Vec<PathEndpoints>>,
95 #[doc(hidden)]
96 pub __source_breaking: fidl::marker::SourceBreaking,
97}
98
99impl fidl::Persistable for Metadata {}
100impl fidl::Serializable for Metadata {
101 const SERIALIZABLE_NAME: &'static str = "fuchsia.hardware.interconnect.Metadata";
102}
103
104#[derive(Clone, Debug, Default, PartialEq)]
105pub struct Node {
106 pub id: Option<u32>,
108 pub name: Option<String>,
110 pub interconnect_name: Option<String>,
112 pub initial_avg_bandwidth_bps: Option<u64>,
114 pub initial_peak_bandwidth_bps: Option<u64>,
116 #[doc(hidden)]
117 pub __source_breaking: fidl::marker::SourceBreaking,
118}
119
120impl fidl::Persistable for Node {}
121
122#[derive(Clone, Debug, Default, PartialEq)]
123pub struct NodeBandwidth {
124 pub node_id: Option<u32>,
126 pub requests: Option<Vec<BandwidthRequest>>,
128 #[doc(hidden)]
129 pub __source_breaking: fidl::marker::SourceBreaking,
130}
131
132impl fidl::Persistable for NodeBandwidth {}
133
134#[derive(Clone, Debug, Default, PartialEq)]
135pub struct PathEndpoints {
136 pub name: Option<String>,
138 pub id: Option<u32>,
140 pub src_node_id: Option<u32>,
142 pub dst_node_id: Option<u32>,
144 #[doc(hidden)]
145 pub __source_breaking: fidl::marker::SourceBreaking,
146}
147
148impl fidl::Persistable for PathEndpoints {}
149
150pub mod device_ordinals {
151 pub const SET_NODES_BANDWIDTH: u64 = 0x3bb98f59dd645c14;
152 pub const GET_NODE_GRAPH: u64 = 0x2f676c9ef41b8306;
153 pub const GET_PATH_ENDPOINTS: u64 = 0x656ae602a096765b;
154}
155
156pub mod path_ordinals {
157 pub const SET_BANDWIDTH: u64 = 0xd366c6e86f69d1d;
158}
159
160mod internal {
161 use super::*;
162
163 impl fidl::encoding::ValueTypeMarker for DeviceSetNodesBandwidthRequest {
164 type Borrowed<'a> = &'a Self;
165 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
166 value
167 }
168 }
169
170 unsafe impl fidl::encoding::TypeMarker for DeviceSetNodesBandwidthRequest {
171 type Owned = Self;
172
173 #[inline(always)]
174 fn inline_align(_context: fidl::encoding::Context) -> usize {
175 8
176 }
177
178 #[inline(always)]
179 fn inline_size(_context: fidl::encoding::Context) -> usize {
180 16
181 }
182 }
183
184 unsafe impl<D: fidl::encoding::ResourceDialect>
185 fidl::encoding::Encode<DeviceSetNodesBandwidthRequest, D>
186 for &DeviceSetNodesBandwidthRequest
187 {
188 #[inline]
189 unsafe fn encode(
190 self,
191 encoder: &mut fidl::encoding::Encoder<'_, D>,
192 offset: usize,
193 _depth: fidl::encoding::Depth,
194 ) -> fidl::Result<()> {
195 encoder.debug_check_bounds::<DeviceSetNodesBandwidthRequest>(offset);
196 fidl::encoding::Encode::<DeviceSetNodesBandwidthRequest, D>::encode(
198 (
199 <fidl::encoding::UnboundedVector<NodeBandwidth> as fidl::encoding::ValueTypeMarker>::borrow(&self.nodes),
200 ),
201 encoder, offset, _depth
202 )
203 }
204 }
205 unsafe impl<
206 D: fidl::encoding::ResourceDialect,
207 T0: fidl::encoding::Encode<fidl::encoding::UnboundedVector<NodeBandwidth>, D>,
208 > fidl::encoding::Encode<DeviceSetNodesBandwidthRequest, D> for (T0,)
209 {
210 #[inline]
211 unsafe fn encode(
212 self,
213 encoder: &mut fidl::encoding::Encoder<'_, D>,
214 offset: usize,
215 depth: fidl::encoding::Depth,
216 ) -> fidl::Result<()> {
217 encoder.debug_check_bounds::<DeviceSetNodesBandwidthRequest>(offset);
218 self.0.encode(encoder, offset + 0, depth)?;
222 Ok(())
223 }
224 }
225
226 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
227 for DeviceSetNodesBandwidthRequest
228 {
229 #[inline(always)]
230 fn new_empty() -> Self {
231 Self { nodes: fidl::new_empty!(fidl::encoding::UnboundedVector<NodeBandwidth>, D) }
232 }
233
234 #[inline]
235 unsafe fn decode(
236 &mut self,
237 decoder: &mut fidl::encoding::Decoder<'_, D>,
238 offset: usize,
239 _depth: fidl::encoding::Depth,
240 ) -> fidl::Result<()> {
241 decoder.debug_check_bounds::<Self>(offset);
242 fidl::decode!(
244 fidl::encoding::UnboundedVector<NodeBandwidth>,
245 D,
246 &mut self.nodes,
247 decoder,
248 offset + 0,
249 _depth
250 )?;
251 Ok(())
252 }
253 }
254
255 impl fidl::encoding::ValueTypeMarker for DeviceGetNodeGraphResponse {
256 type Borrowed<'a> = &'a Self;
257 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
258 value
259 }
260 }
261
262 unsafe impl fidl::encoding::TypeMarker for DeviceGetNodeGraphResponse {
263 type Owned = Self;
264
265 #[inline(always)]
266 fn inline_align(_context: fidl::encoding::Context) -> usize {
267 8
268 }
269
270 #[inline(always)]
271 fn inline_size(_context: fidl::encoding::Context) -> usize {
272 32
273 }
274 }
275
276 unsafe impl<D: fidl::encoding::ResourceDialect>
277 fidl::encoding::Encode<DeviceGetNodeGraphResponse, D> for &DeviceGetNodeGraphResponse
278 {
279 #[inline]
280 unsafe fn encode(
281 self,
282 encoder: &mut fidl::encoding::Encoder<'_, D>,
283 offset: usize,
284 _depth: fidl::encoding::Depth,
285 ) -> fidl::Result<()> {
286 encoder.debug_check_bounds::<DeviceGetNodeGraphResponse>(offset);
287 fidl::encoding::Encode::<DeviceGetNodeGraphResponse, D>::encode(
289 (
290 <fidl::encoding::UnboundedVector<Node> as fidl::encoding::ValueTypeMarker>::borrow(&self.nodes),
291 <fidl::encoding::UnboundedVector<Edge> as fidl::encoding::ValueTypeMarker>::borrow(&self.edges),
292 ),
293 encoder, offset, _depth
294 )
295 }
296 }
297 unsafe impl<
298 D: fidl::encoding::ResourceDialect,
299 T0: fidl::encoding::Encode<fidl::encoding::UnboundedVector<Node>, D>,
300 T1: fidl::encoding::Encode<fidl::encoding::UnboundedVector<Edge>, D>,
301 > fidl::encoding::Encode<DeviceGetNodeGraphResponse, D> for (T0, T1)
302 {
303 #[inline]
304 unsafe fn encode(
305 self,
306 encoder: &mut fidl::encoding::Encoder<'_, D>,
307 offset: usize,
308 depth: fidl::encoding::Depth,
309 ) -> fidl::Result<()> {
310 encoder.debug_check_bounds::<DeviceGetNodeGraphResponse>(offset);
311 self.0.encode(encoder, offset + 0, depth)?;
315 self.1.encode(encoder, offset + 16, depth)?;
316 Ok(())
317 }
318 }
319
320 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
321 for DeviceGetNodeGraphResponse
322 {
323 #[inline(always)]
324 fn new_empty() -> Self {
325 Self {
326 nodes: fidl::new_empty!(fidl::encoding::UnboundedVector<Node>, D),
327 edges: fidl::new_empty!(fidl::encoding::UnboundedVector<Edge>, D),
328 }
329 }
330
331 #[inline]
332 unsafe fn decode(
333 &mut self,
334 decoder: &mut fidl::encoding::Decoder<'_, D>,
335 offset: usize,
336 _depth: fidl::encoding::Depth,
337 ) -> fidl::Result<()> {
338 decoder.debug_check_bounds::<Self>(offset);
339 fidl::decode!(
341 fidl::encoding::UnboundedVector<Node>,
342 D,
343 &mut self.nodes,
344 decoder,
345 offset + 0,
346 _depth
347 )?;
348 fidl::decode!(
349 fidl::encoding::UnboundedVector<Edge>,
350 D,
351 &mut self.edges,
352 decoder,
353 offset + 16,
354 _depth
355 )?;
356 Ok(())
357 }
358 }
359
360 impl fidl::encoding::ValueTypeMarker for DeviceGetPathEndpointsResponse {
361 type Borrowed<'a> = &'a Self;
362 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
363 value
364 }
365 }
366
367 unsafe impl fidl::encoding::TypeMarker for DeviceGetPathEndpointsResponse {
368 type Owned = Self;
369
370 #[inline(always)]
371 fn inline_align(_context: fidl::encoding::Context) -> usize {
372 8
373 }
374
375 #[inline(always)]
376 fn inline_size(_context: fidl::encoding::Context) -> usize {
377 16
378 }
379 }
380
381 unsafe impl<D: fidl::encoding::ResourceDialect>
382 fidl::encoding::Encode<DeviceGetPathEndpointsResponse, D>
383 for &DeviceGetPathEndpointsResponse
384 {
385 #[inline]
386 unsafe fn encode(
387 self,
388 encoder: &mut fidl::encoding::Encoder<'_, D>,
389 offset: usize,
390 _depth: fidl::encoding::Depth,
391 ) -> fidl::Result<()> {
392 encoder.debug_check_bounds::<DeviceGetPathEndpointsResponse>(offset);
393 fidl::encoding::Encode::<DeviceGetPathEndpointsResponse, D>::encode(
395 (
396 <fidl::encoding::UnboundedVector<PathEndpoints> as fidl::encoding::ValueTypeMarker>::borrow(&self.paths),
397 ),
398 encoder, offset, _depth
399 )
400 }
401 }
402 unsafe impl<
403 D: fidl::encoding::ResourceDialect,
404 T0: fidl::encoding::Encode<fidl::encoding::UnboundedVector<PathEndpoints>, D>,
405 > fidl::encoding::Encode<DeviceGetPathEndpointsResponse, D> for (T0,)
406 {
407 #[inline]
408 unsafe fn encode(
409 self,
410 encoder: &mut fidl::encoding::Encoder<'_, D>,
411 offset: usize,
412 depth: fidl::encoding::Depth,
413 ) -> fidl::Result<()> {
414 encoder.debug_check_bounds::<DeviceGetPathEndpointsResponse>(offset);
415 self.0.encode(encoder, offset + 0, depth)?;
419 Ok(())
420 }
421 }
422
423 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
424 for DeviceGetPathEndpointsResponse
425 {
426 #[inline(always)]
427 fn new_empty() -> Self {
428 Self { paths: fidl::new_empty!(fidl::encoding::UnboundedVector<PathEndpoints>, D) }
429 }
430
431 #[inline]
432 unsafe fn decode(
433 &mut self,
434 decoder: &mut fidl::encoding::Decoder<'_, D>,
435 offset: usize,
436 _depth: fidl::encoding::Depth,
437 ) -> fidl::Result<()> {
438 decoder.debug_check_bounds::<Self>(offset);
439 fidl::decode!(
441 fidl::encoding::UnboundedVector<PathEndpoints>,
442 D,
443 &mut self.paths,
444 decoder,
445 offset + 0,
446 _depth
447 )?;
448 Ok(())
449 }
450 }
451
452 impl fidl::encoding::ValueTypeMarker for DeviceSetNodesBandwidthResponse {
453 type Borrowed<'a> = &'a Self;
454 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
455 value
456 }
457 }
458
459 unsafe impl fidl::encoding::TypeMarker for DeviceSetNodesBandwidthResponse {
460 type Owned = Self;
461
462 #[inline(always)]
463 fn inline_align(_context: fidl::encoding::Context) -> usize {
464 8
465 }
466
467 #[inline(always)]
468 fn inline_size(_context: fidl::encoding::Context) -> usize {
469 16
470 }
471 }
472
473 unsafe impl<D: fidl::encoding::ResourceDialect>
474 fidl::encoding::Encode<DeviceSetNodesBandwidthResponse, D>
475 for &DeviceSetNodesBandwidthResponse
476 {
477 #[inline]
478 unsafe fn encode(
479 self,
480 encoder: &mut fidl::encoding::Encoder<'_, D>,
481 offset: usize,
482 _depth: fidl::encoding::Depth,
483 ) -> fidl::Result<()> {
484 encoder.debug_check_bounds::<DeviceSetNodesBandwidthResponse>(offset);
485 fidl::encoding::Encode::<DeviceSetNodesBandwidthResponse, D>::encode(
487 (
488 <fidl::encoding::UnboundedVector<AggregatedBandwidth> as fidl::encoding::ValueTypeMarker>::borrow(&self.aggregated_bandwidth),
489 ),
490 encoder, offset, _depth
491 )
492 }
493 }
494 unsafe impl<
495 D: fidl::encoding::ResourceDialect,
496 T0: fidl::encoding::Encode<fidl::encoding::UnboundedVector<AggregatedBandwidth>, D>,
497 > fidl::encoding::Encode<DeviceSetNodesBandwidthResponse, D> for (T0,)
498 {
499 #[inline]
500 unsafe fn encode(
501 self,
502 encoder: &mut fidl::encoding::Encoder<'_, D>,
503 offset: usize,
504 depth: fidl::encoding::Depth,
505 ) -> fidl::Result<()> {
506 encoder.debug_check_bounds::<DeviceSetNodesBandwidthResponse>(offset);
507 self.0.encode(encoder, offset + 0, depth)?;
511 Ok(())
512 }
513 }
514
515 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
516 for DeviceSetNodesBandwidthResponse
517 {
518 #[inline(always)]
519 fn new_empty() -> Self {
520 Self {
521 aggregated_bandwidth: fidl::new_empty!(
522 fidl::encoding::UnboundedVector<AggregatedBandwidth>,
523 D
524 ),
525 }
526 }
527
528 #[inline]
529 unsafe fn decode(
530 &mut self,
531 decoder: &mut fidl::encoding::Decoder<'_, D>,
532 offset: usize,
533 _depth: fidl::encoding::Depth,
534 ) -> fidl::Result<()> {
535 decoder.debug_check_bounds::<Self>(offset);
536 fidl::decode!(
538 fidl::encoding::UnboundedVector<AggregatedBandwidth>,
539 D,
540 &mut self.aggregated_bandwidth,
541 decoder,
542 offset + 0,
543 _depth
544 )?;
545 Ok(())
546 }
547 }
548
549 impl AggregatedBandwidth {
550 #[inline(always)]
551 fn max_ordinal_present(&self) -> u64 {
552 if let Some(_) = self.peak_bandwidth_bps {
553 return 3;
554 }
555 if let Some(_) = self.average_bandwidth_bps {
556 return 2;
557 }
558 if let Some(_) = self.node_id {
559 return 1;
560 }
561 0
562 }
563 }
564
565 impl fidl::encoding::ValueTypeMarker for AggregatedBandwidth {
566 type Borrowed<'a> = &'a Self;
567 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
568 value
569 }
570 }
571
572 unsafe impl fidl::encoding::TypeMarker for AggregatedBandwidth {
573 type Owned = Self;
574
575 #[inline(always)]
576 fn inline_align(_context: fidl::encoding::Context) -> usize {
577 8
578 }
579
580 #[inline(always)]
581 fn inline_size(_context: fidl::encoding::Context) -> usize {
582 16
583 }
584 }
585
586 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<AggregatedBandwidth, D>
587 for &AggregatedBandwidth
588 {
589 unsafe fn encode(
590 self,
591 encoder: &mut fidl::encoding::Encoder<'_, D>,
592 offset: usize,
593 mut depth: fidl::encoding::Depth,
594 ) -> fidl::Result<()> {
595 encoder.debug_check_bounds::<AggregatedBandwidth>(offset);
596 let max_ordinal: u64 = self.max_ordinal_present();
598 encoder.write_num(max_ordinal, offset);
599 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
600 if max_ordinal == 0 {
602 return Ok(());
603 }
604 depth.increment()?;
605 let envelope_size = 8;
606 let bytes_len = max_ordinal as usize * envelope_size;
607 #[allow(unused_variables)]
608 let offset = encoder.out_of_line_offset(bytes_len);
609 let mut _prev_end_offset: usize = 0;
610 if 1 > max_ordinal {
611 return Ok(());
612 }
613
614 let cur_offset: usize = (1 - 1) * envelope_size;
617
618 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
620
621 fidl::encoding::encode_in_envelope_optional::<u32, D>(
626 self.node_id.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
627 encoder,
628 offset + cur_offset,
629 depth,
630 )?;
631
632 _prev_end_offset = cur_offset + envelope_size;
633 if 2 > max_ordinal {
634 return Ok(());
635 }
636
637 let cur_offset: usize = (2 - 1) * envelope_size;
640
641 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
643
644 fidl::encoding::encode_in_envelope_optional::<u64, D>(
649 self.average_bandwidth_bps
650 .as_ref()
651 .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
652 encoder,
653 offset + cur_offset,
654 depth,
655 )?;
656
657 _prev_end_offset = cur_offset + envelope_size;
658 if 3 > max_ordinal {
659 return Ok(());
660 }
661
662 let cur_offset: usize = (3 - 1) * envelope_size;
665
666 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
668
669 fidl::encoding::encode_in_envelope_optional::<u64, D>(
674 self.peak_bandwidth_bps
675 .as_ref()
676 .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
677 encoder,
678 offset + cur_offset,
679 depth,
680 )?;
681
682 _prev_end_offset = cur_offset + envelope_size;
683
684 Ok(())
685 }
686 }
687
688 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for AggregatedBandwidth {
689 #[inline(always)]
690 fn new_empty() -> Self {
691 Self::default()
692 }
693
694 unsafe fn decode(
695 &mut self,
696 decoder: &mut fidl::encoding::Decoder<'_, D>,
697 offset: usize,
698 mut depth: fidl::encoding::Depth,
699 ) -> fidl::Result<()> {
700 decoder.debug_check_bounds::<Self>(offset);
701 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
702 None => return Err(fidl::Error::NotNullable),
703 Some(len) => len,
704 };
705 if len == 0 {
707 return Ok(());
708 };
709 depth.increment()?;
710 let envelope_size = 8;
711 let bytes_len = len * envelope_size;
712 let offset = decoder.out_of_line_offset(bytes_len)?;
713 let mut _next_ordinal_to_read = 0;
715 let mut next_offset = offset;
716 let end_offset = offset + bytes_len;
717 _next_ordinal_to_read += 1;
718 if next_offset >= end_offset {
719 return Ok(());
720 }
721
722 while _next_ordinal_to_read < 1 {
724 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
725 _next_ordinal_to_read += 1;
726 next_offset += envelope_size;
727 }
728
729 let next_out_of_line = decoder.next_out_of_line();
730 let handles_before = decoder.remaining_handles();
731 if let Some((inlined, num_bytes, num_handles)) =
732 fidl::encoding::decode_envelope_header(decoder, next_offset)?
733 {
734 let member_inline_size =
735 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
736 if inlined != (member_inline_size <= 4) {
737 return Err(fidl::Error::InvalidInlineBitInEnvelope);
738 }
739 let inner_offset;
740 let mut inner_depth = depth.clone();
741 if inlined {
742 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
743 inner_offset = next_offset;
744 } else {
745 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
746 inner_depth.increment()?;
747 }
748 let val_ref = self.node_id.get_or_insert_with(|| fidl::new_empty!(u32, D));
749 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
750 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
751 {
752 return Err(fidl::Error::InvalidNumBytesInEnvelope);
753 }
754 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
755 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
756 }
757 }
758
759 next_offset += envelope_size;
760 _next_ordinal_to_read += 1;
761 if next_offset >= end_offset {
762 return Ok(());
763 }
764
765 while _next_ordinal_to_read < 2 {
767 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
768 _next_ordinal_to_read += 1;
769 next_offset += envelope_size;
770 }
771
772 let next_out_of_line = decoder.next_out_of_line();
773 let handles_before = decoder.remaining_handles();
774 if let Some((inlined, num_bytes, num_handles)) =
775 fidl::encoding::decode_envelope_header(decoder, next_offset)?
776 {
777 let member_inline_size =
778 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
779 if inlined != (member_inline_size <= 4) {
780 return Err(fidl::Error::InvalidInlineBitInEnvelope);
781 }
782 let inner_offset;
783 let mut inner_depth = depth.clone();
784 if inlined {
785 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
786 inner_offset = next_offset;
787 } else {
788 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
789 inner_depth.increment()?;
790 }
791 let val_ref =
792 self.average_bandwidth_bps.get_or_insert_with(|| fidl::new_empty!(u64, D));
793 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
794 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
795 {
796 return Err(fidl::Error::InvalidNumBytesInEnvelope);
797 }
798 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
799 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
800 }
801 }
802
803 next_offset += envelope_size;
804 _next_ordinal_to_read += 1;
805 if next_offset >= end_offset {
806 return Ok(());
807 }
808
809 while _next_ordinal_to_read < 3 {
811 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
812 _next_ordinal_to_read += 1;
813 next_offset += envelope_size;
814 }
815
816 let next_out_of_line = decoder.next_out_of_line();
817 let handles_before = decoder.remaining_handles();
818 if let Some((inlined, num_bytes, num_handles)) =
819 fidl::encoding::decode_envelope_header(decoder, next_offset)?
820 {
821 let member_inline_size =
822 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
823 if inlined != (member_inline_size <= 4) {
824 return Err(fidl::Error::InvalidInlineBitInEnvelope);
825 }
826 let inner_offset;
827 let mut inner_depth = depth.clone();
828 if inlined {
829 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
830 inner_offset = next_offset;
831 } else {
832 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
833 inner_depth.increment()?;
834 }
835 let val_ref =
836 self.peak_bandwidth_bps.get_or_insert_with(|| fidl::new_empty!(u64, D));
837 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
838 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
839 {
840 return Err(fidl::Error::InvalidNumBytesInEnvelope);
841 }
842 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
843 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
844 }
845 }
846
847 next_offset += envelope_size;
848
849 while next_offset < end_offset {
851 _next_ordinal_to_read += 1;
852 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
853 next_offset += envelope_size;
854 }
855
856 Ok(())
857 }
858 }
859
860 impl BandwidthRequest {
861 #[inline(always)]
862 fn max_ordinal_present(&self) -> u64 {
863 if let Some(_) = self.peak_bandwidth_bps {
864 return 2;
865 }
866 if let Some(_) = self.average_bandwidth_bps {
867 return 1;
868 }
869 0
870 }
871 }
872
873 impl fidl::encoding::ValueTypeMarker for BandwidthRequest {
874 type Borrowed<'a> = &'a Self;
875 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
876 value
877 }
878 }
879
880 unsafe impl fidl::encoding::TypeMarker for BandwidthRequest {
881 type Owned = Self;
882
883 #[inline(always)]
884 fn inline_align(_context: fidl::encoding::Context) -> usize {
885 8
886 }
887
888 #[inline(always)]
889 fn inline_size(_context: fidl::encoding::Context) -> usize {
890 16
891 }
892 }
893
894 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<BandwidthRequest, D>
895 for &BandwidthRequest
896 {
897 unsafe fn encode(
898 self,
899 encoder: &mut fidl::encoding::Encoder<'_, D>,
900 offset: usize,
901 mut depth: fidl::encoding::Depth,
902 ) -> fidl::Result<()> {
903 encoder.debug_check_bounds::<BandwidthRequest>(offset);
904 let max_ordinal: u64 = self.max_ordinal_present();
906 encoder.write_num(max_ordinal, offset);
907 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
908 if max_ordinal == 0 {
910 return Ok(());
911 }
912 depth.increment()?;
913 let envelope_size = 8;
914 let bytes_len = max_ordinal as usize * envelope_size;
915 #[allow(unused_variables)]
916 let offset = encoder.out_of_line_offset(bytes_len);
917 let mut _prev_end_offset: usize = 0;
918 if 1 > max_ordinal {
919 return Ok(());
920 }
921
922 let cur_offset: usize = (1 - 1) * envelope_size;
925
926 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
928
929 fidl::encoding::encode_in_envelope_optional::<u64, D>(
934 self.average_bandwidth_bps
935 .as_ref()
936 .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
937 encoder,
938 offset + cur_offset,
939 depth,
940 )?;
941
942 _prev_end_offset = cur_offset + envelope_size;
943 if 2 > max_ordinal {
944 return Ok(());
945 }
946
947 let cur_offset: usize = (2 - 1) * envelope_size;
950
951 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
953
954 fidl::encoding::encode_in_envelope_optional::<u64, D>(
959 self.peak_bandwidth_bps
960 .as_ref()
961 .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
962 encoder,
963 offset + cur_offset,
964 depth,
965 )?;
966
967 _prev_end_offset = cur_offset + envelope_size;
968
969 Ok(())
970 }
971 }
972
973 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for BandwidthRequest {
974 #[inline(always)]
975 fn new_empty() -> Self {
976 Self::default()
977 }
978
979 unsafe fn decode(
980 &mut self,
981 decoder: &mut fidl::encoding::Decoder<'_, D>,
982 offset: usize,
983 mut depth: fidl::encoding::Depth,
984 ) -> fidl::Result<()> {
985 decoder.debug_check_bounds::<Self>(offset);
986 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
987 None => return Err(fidl::Error::NotNullable),
988 Some(len) => len,
989 };
990 if len == 0 {
992 return Ok(());
993 };
994 depth.increment()?;
995 let envelope_size = 8;
996 let bytes_len = len * envelope_size;
997 let offset = decoder.out_of_line_offset(bytes_len)?;
998 let mut _next_ordinal_to_read = 0;
1000 let mut next_offset = offset;
1001 let end_offset = offset + bytes_len;
1002 _next_ordinal_to_read += 1;
1003 if next_offset >= end_offset {
1004 return Ok(());
1005 }
1006
1007 while _next_ordinal_to_read < 1 {
1009 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1010 _next_ordinal_to_read += 1;
1011 next_offset += envelope_size;
1012 }
1013
1014 let next_out_of_line = decoder.next_out_of_line();
1015 let handles_before = decoder.remaining_handles();
1016 if let Some((inlined, num_bytes, num_handles)) =
1017 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1018 {
1019 let member_inline_size =
1020 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1021 if inlined != (member_inline_size <= 4) {
1022 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1023 }
1024 let inner_offset;
1025 let mut inner_depth = depth.clone();
1026 if inlined {
1027 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1028 inner_offset = next_offset;
1029 } else {
1030 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1031 inner_depth.increment()?;
1032 }
1033 let val_ref =
1034 self.average_bandwidth_bps.get_or_insert_with(|| fidl::new_empty!(u64, D));
1035 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
1036 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1037 {
1038 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1039 }
1040 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1041 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1042 }
1043 }
1044
1045 next_offset += envelope_size;
1046 _next_ordinal_to_read += 1;
1047 if next_offset >= end_offset {
1048 return Ok(());
1049 }
1050
1051 while _next_ordinal_to_read < 2 {
1053 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1054 _next_ordinal_to_read += 1;
1055 next_offset += envelope_size;
1056 }
1057
1058 let next_out_of_line = decoder.next_out_of_line();
1059 let handles_before = decoder.remaining_handles();
1060 if let Some((inlined, num_bytes, num_handles)) =
1061 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1062 {
1063 let member_inline_size =
1064 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1065 if inlined != (member_inline_size <= 4) {
1066 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1067 }
1068 let inner_offset;
1069 let mut inner_depth = depth.clone();
1070 if inlined {
1071 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1072 inner_offset = next_offset;
1073 } else {
1074 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1075 inner_depth.increment()?;
1076 }
1077 let val_ref =
1078 self.peak_bandwidth_bps.get_or_insert_with(|| fidl::new_empty!(u64, D));
1079 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
1080 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1081 {
1082 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1083 }
1084 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1085 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1086 }
1087 }
1088
1089 next_offset += envelope_size;
1090
1091 while next_offset < end_offset {
1093 _next_ordinal_to_read += 1;
1094 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1095 next_offset += envelope_size;
1096 }
1097
1098 Ok(())
1099 }
1100 }
1101
1102 impl Edge {
1103 #[inline(always)]
1104 fn max_ordinal_present(&self) -> u64 {
1105 if let Some(_) = self.weight {
1106 return 3;
1107 }
1108 if let Some(_) = self.dst_node_id {
1109 return 2;
1110 }
1111 if let Some(_) = self.src_node_id {
1112 return 1;
1113 }
1114 0
1115 }
1116 }
1117
1118 impl fidl::encoding::ValueTypeMarker for Edge {
1119 type Borrowed<'a> = &'a Self;
1120 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1121 value
1122 }
1123 }
1124
1125 unsafe impl fidl::encoding::TypeMarker for Edge {
1126 type Owned = Self;
1127
1128 #[inline(always)]
1129 fn inline_align(_context: fidl::encoding::Context) -> usize {
1130 8
1131 }
1132
1133 #[inline(always)]
1134 fn inline_size(_context: fidl::encoding::Context) -> usize {
1135 16
1136 }
1137 }
1138
1139 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Edge, D> for &Edge {
1140 unsafe fn encode(
1141 self,
1142 encoder: &mut fidl::encoding::Encoder<'_, D>,
1143 offset: usize,
1144 mut depth: fidl::encoding::Depth,
1145 ) -> fidl::Result<()> {
1146 encoder.debug_check_bounds::<Edge>(offset);
1147 let max_ordinal: u64 = self.max_ordinal_present();
1149 encoder.write_num(max_ordinal, offset);
1150 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
1151 if max_ordinal == 0 {
1153 return Ok(());
1154 }
1155 depth.increment()?;
1156 let envelope_size = 8;
1157 let bytes_len = max_ordinal as usize * envelope_size;
1158 #[allow(unused_variables)]
1159 let offset = encoder.out_of_line_offset(bytes_len);
1160 let mut _prev_end_offset: usize = 0;
1161 if 1 > max_ordinal {
1162 return Ok(());
1163 }
1164
1165 let cur_offset: usize = (1 - 1) * envelope_size;
1168
1169 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1171
1172 fidl::encoding::encode_in_envelope_optional::<u32, D>(
1177 self.src_node_id.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
1178 encoder,
1179 offset + cur_offset,
1180 depth,
1181 )?;
1182
1183 _prev_end_offset = cur_offset + envelope_size;
1184 if 2 > max_ordinal {
1185 return Ok(());
1186 }
1187
1188 let cur_offset: usize = (2 - 1) * envelope_size;
1191
1192 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1194
1195 fidl::encoding::encode_in_envelope_optional::<u32, D>(
1200 self.dst_node_id.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
1201 encoder,
1202 offset + cur_offset,
1203 depth,
1204 )?;
1205
1206 _prev_end_offset = cur_offset + envelope_size;
1207 if 3 > max_ordinal {
1208 return Ok(());
1209 }
1210
1211 let cur_offset: usize = (3 - 1) * envelope_size;
1214
1215 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1217
1218 fidl::encoding::encode_in_envelope_optional::<u32, D>(
1223 self.weight.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
1224 encoder,
1225 offset + cur_offset,
1226 depth,
1227 )?;
1228
1229 _prev_end_offset = cur_offset + envelope_size;
1230
1231 Ok(())
1232 }
1233 }
1234
1235 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Edge {
1236 #[inline(always)]
1237 fn new_empty() -> Self {
1238 Self::default()
1239 }
1240
1241 unsafe fn decode(
1242 &mut self,
1243 decoder: &mut fidl::encoding::Decoder<'_, D>,
1244 offset: usize,
1245 mut depth: fidl::encoding::Depth,
1246 ) -> fidl::Result<()> {
1247 decoder.debug_check_bounds::<Self>(offset);
1248 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
1249 None => return Err(fidl::Error::NotNullable),
1250 Some(len) => len,
1251 };
1252 if len == 0 {
1254 return Ok(());
1255 };
1256 depth.increment()?;
1257 let envelope_size = 8;
1258 let bytes_len = len * envelope_size;
1259 let offset = decoder.out_of_line_offset(bytes_len)?;
1260 let mut _next_ordinal_to_read = 0;
1262 let mut next_offset = offset;
1263 let end_offset = offset + bytes_len;
1264 _next_ordinal_to_read += 1;
1265 if next_offset >= end_offset {
1266 return Ok(());
1267 }
1268
1269 while _next_ordinal_to_read < 1 {
1271 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1272 _next_ordinal_to_read += 1;
1273 next_offset += envelope_size;
1274 }
1275
1276 let next_out_of_line = decoder.next_out_of_line();
1277 let handles_before = decoder.remaining_handles();
1278 if let Some((inlined, num_bytes, num_handles)) =
1279 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1280 {
1281 let member_inline_size =
1282 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1283 if inlined != (member_inline_size <= 4) {
1284 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1285 }
1286 let inner_offset;
1287 let mut inner_depth = depth.clone();
1288 if inlined {
1289 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1290 inner_offset = next_offset;
1291 } else {
1292 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1293 inner_depth.increment()?;
1294 }
1295 let val_ref = self.src_node_id.get_or_insert_with(|| fidl::new_empty!(u32, D));
1296 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
1297 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1298 {
1299 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1300 }
1301 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1302 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1303 }
1304 }
1305
1306 next_offset += envelope_size;
1307 _next_ordinal_to_read += 1;
1308 if next_offset >= end_offset {
1309 return Ok(());
1310 }
1311
1312 while _next_ordinal_to_read < 2 {
1314 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1315 _next_ordinal_to_read += 1;
1316 next_offset += envelope_size;
1317 }
1318
1319 let next_out_of_line = decoder.next_out_of_line();
1320 let handles_before = decoder.remaining_handles();
1321 if let Some((inlined, num_bytes, num_handles)) =
1322 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1323 {
1324 let member_inline_size =
1325 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1326 if inlined != (member_inline_size <= 4) {
1327 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1328 }
1329 let inner_offset;
1330 let mut inner_depth = depth.clone();
1331 if inlined {
1332 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1333 inner_offset = next_offset;
1334 } else {
1335 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1336 inner_depth.increment()?;
1337 }
1338 let val_ref = self.dst_node_id.get_or_insert_with(|| fidl::new_empty!(u32, D));
1339 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
1340 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1341 {
1342 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1343 }
1344 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1345 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1346 }
1347 }
1348
1349 next_offset += envelope_size;
1350 _next_ordinal_to_read += 1;
1351 if next_offset >= end_offset {
1352 return Ok(());
1353 }
1354
1355 while _next_ordinal_to_read < 3 {
1357 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1358 _next_ordinal_to_read += 1;
1359 next_offset += envelope_size;
1360 }
1361
1362 let next_out_of_line = decoder.next_out_of_line();
1363 let handles_before = decoder.remaining_handles();
1364 if let Some((inlined, num_bytes, num_handles)) =
1365 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1366 {
1367 let member_inline_size =
1368 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1369 if inlined != (member_inline_size <= 4) {
1370 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1371 }
1372 let inner_offset;
1373 let mut inner_depth = depth.clone();
1374 if inlined {
1375 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1376 inner_offset = next_offset;
1377 } else {
1378 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1379 inner_depth.increment()?;
1380 }
1381 let val_ref = self.weight.get_or_insert_with(|| fidl::new_empty!(u32, D));
1382 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
1383 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1384 {
1385 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1386 }
1387 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1388 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1389 }
1390 }
1391
1392 next_offset += envelope_size;
1393
1394 while next_offset < end_offset {
1396 _next_ordinal_to_read += 1;
1397 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1398 next_offset += envelope_size;
1399 }
1400
1401 Ok(())
1402 }
1403 }
1404
1405 impl Metadata {
1406 #[inline(always)]
1407 fn max_ordinal_present(&self) -> u64 {
1408 if let Some(_) = self.paths {
1409 return 1;
1410 }
1411 0
1412 }
1413 }
1414
1415 impl fidl::encoding::ValueTypeMarker for Metadata {
1416 type Borrowed<'a> = &'a Self;
1417 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1418 value
1419 }
1420 }
1421
1422 unsafe impl fidl::encoding::TypeMarker for Metadata {
1423 type Owned = Self;
1424
1425 #[inline(always)]
1426 fn inline_align(_context: fidl::encoding::Context) -> usize {
1427 8
1428 }
1429
1430 #[inline(always)]
1431 fn inline_size(_context: fidl::encoding::Context) -> usize {
1432 16
1433 }
1434 }
1435
1436 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Metadata, D> for &Metadata {
1437 unsafe fn encode(
1438 self,
1439 encoder: &mut fidl::encoding::Encoder<'_, D>,
1440 offset: usize,
1441 mut depth: fidl::encoding::Depth,
1442 ) -> fidl::Result<()> {
1443 encoder.debug_check_bounds::<Metadata>(offset);
1444 let max_ordinal: u64 = self.max_ordinal_present();
1446 encoder.write_num(max_ordinal, offset);
1447 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
1448 if max_ordinal == 0 {
1450 return Ok(());
1451 }
1452 depth.increment()?;
1453 let envelope_size = 8;
1454 let bytes_len = max_ordinal as usize * envelope_size;
1455 #[allow(unused_variables)]
1456 let offset = encoder.out_of_line_offset(bytes_len);
1457 let mut _prev_end_offset: usize = 0;
1458 if 1 > max_ordinal {
1459 return Ok(());
1460 }
1461
1462 let cur_offset: usize = (1 - 1) * envelope_size;
1465
1466 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1468
1469 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<PathEndpoints>, D>(
1474 self.paths.as_ref().map(<fidl::encoding::UnboundedVector<PathEndpoints> as fidl::encoding::ValueTypeMarker>::borrow),
1475 encoder, offset + cur_offset, depth
1476 )?;
1477
1478 _prev_end_offset = cur_offset + envelope_size;
1479
1480 Ok(())
1481 }
1482 }
1483
1484 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Metadata {
1485 #[inline(always)]
1486 fn new_empty() -> Self {
1487 Self::default()
1488 }
1489
1490 unsafe fn decode(
1491 &mut self,
1492 decoder: &mut fidl::encoding::Decoder<'_, D>,
1493 offset: usize,
1494 mut depth: fidl::encoding::Depth,
1495 ) -> fidl::Result<()> {
1496 decoder.debug_check_bounds::<Self>(offset);
1497 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
1498 None => return Err(fidl::Error::NotNullable),
1499 Some(len) => len,
1500 };
1501 if len == 0 {
1503 return Ok(());
1504 };
1505 depth.increment()?;
1506 let envelope_size = 8;
1507 let bytes_len = len * envelope_size;
1508 let offset = decoder.out_of_line_offset(bytes_len)?;
1509 let mut _next_ordinal_to_read = 0;
1511 let mut next_offset = offset;
1512 let end_offset = offset + bytes_len;
1513 _next_ordinal_to_read += 1;
1514 if next_offset >= end_offset {
1515 return Ok(());
1516 }
1517
1518 while _next_ordinal_to_read < 1 {
1520 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1521 _next_ordinal_to_read += 1;
1522 next_offset += envelope_size;
1523 }
1524
1525 let next_out_of_line = decoder.next_out_of_line();
1526 let handles_before = decoder.remaining_handles();
1527 if let Some((inlined, num_bytes, num_handles)) =
1528 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1529 {
1530 let member_inline_size = <fidl::encoding::UnboundedVector<PathEndpoints> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1531 if inlined != (member_inline_size <= 4) {
1532 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1533 }
1534 let inner_offset;
1535 let mut inner_depth = depth.clone();
1536 if inlined {
1537 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1538 inner_offset = next_offset;
1539 } else {
1540 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1541 inner_depth.increment()?;
1542 }
1543 let val_ref = self.paths.get_or_insert_with(|| {
1544 fidl::new_empty!(fidl::encoding::UnboundedVector<PathEndpoints>, D)
1545 });
1546 fidl::decode!(
1547 fidl::encoding::UnboundedVector<PathEndpoints>,
1548 D,
1549 val_ref,
1550 decoder,
1551 inner_offset,
1552 inner_depth
1553 )?;
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
1565 while next_offset < end_offset {
1567 _next_ordinal_to_read += 1;
1568 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1569 next_offset += envelope_size;
1570 }
1571
1572 Ok(())
1573 }
1574 }
1575
1576 impl Node {
1577 #[inline(always)]
1578 fn max_ordinal_present(&self) -> u64 {
1579 if let Some(_) = self.initial_peak_bandwidth_bps {
1580 return 5;
1581 }
1582 if let Some(_) = self.initial_avg_bandwidth_bps {
1583 return 4;
1584 }
1585 if let Some(_) = self.interconnect_name {
1586 return 3;
1587 }
1588 if let Some(_) = self.name {
1589 return 2;
1590 }
1591 if let Some(_) = self.id {
1592 return 1;
1593 }
1594 0
1595 }
1596 }
1597
1598 impl fidl::encoding::ValueTypeMarker for Node {
1599 type Borrowed<'a> = &'a Self;
1600 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1601 value
1602 }
1603 }
1604
1605 unsafe impl fidl::encoding::TypeMarker for Node {
1606 type Owned = Self;
1607
1608 #[inline(always)]
1609 fn inline_align(_context: fidl::encoding::Context) -> usize {
1610 8
1611 }
1612
1613 #[inline(always)]
1614 fn inline_size(_context: fidl::encoding::Context) -> usize {
1615 16
1616 }
1617 }
1618
1619 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Node, D> for &Node {
1620 unsafe fn encode(
1621 self,
1622 encoder: &mut fidl::encoding::Encoder<'_, D>,
1623 offset: usize,
1624 mut depth: fidl::encoding::Depth,
1625 ) -> fidl::Result<()> {
1626 encoder.debug_check_bounds::<Node>(offset);
1627 let max_ordinal: u64 = self.max_ordinal_present();
1629 encoder.write_num(max_ordinal, offset);
1630 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
1631 if max_ordinal == 0 {
1633 return Ok(());
1634 }
1635 depth.increment()?;
1636 let envelope_size = 8;
1637 let bytes_len = max_ordinal as usize * envelope_size;
1638 #[allow(unused_variables)]
1639 let offset = encoder.out_of_line_offset(bytes_len);
1640 let mut _prev_end_offset: usize = 0;
1641 if 1 > max_ordinal {
1642 return Ok(());
1643 }
1644
1645 let cur_offset: usize = (1 - 1) * envelope_size;
1648
1649 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1651
1652 fidl::encoding::encode_in_envelope_optional::<u32, D>(
1657 self.id.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
1658 encoder,
1659 offset + cur_offset,
1660 depth,
1661 )?;
1662
1663 _prev_end_offset = cur_offset + envelope_size;
1664 if 2 > max_ordinal {
1665 return Ok(());
1666 }
1667
1668 let cur_offset: usize = (2 - 1) * envelope_size;
1671
1672 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1674
1675 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<64>, D>(
1680 self.name.as_ref().map(
1681 <fidl::encoding::BoundedString<64> as fidl::encoding::ValueTypeMarker>::borrow,
1682 ),
1683 encoder,
1684 offset + cur_offset,
1685 depth,
1686 )?;
1687
1688 _prev_end_offset = cur_offset + envelope_size;
1689 if 3 > max_ordinal {
1690 return Ok(());
1691 }
1692
1693 let cur_offset: usize = (3 - 1) * envelope_size;
1696
1697 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1699
1700 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<64>, D>(
1705 self.interconnect_name.as_ref().map(
1706 <fidl::encoding::BoundedString<64> as fidl::encoding::ValueTypeMarker>::borrow,
1707 ),
1708 encoder,
1709 offset + cur_offset,
1710 depth,
1711 )?;
1712
1713 _prev_end_offset = cur_offset + envelope_size;
1714 if 4 > max_ordinal {
1715 return Ok(());
1716 }
1717
1718 let cur_offset: usize = (4 - 1) * envelope_size;
1721
1722 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1724
1725 fidl::encoding::encode_in_envelope_optional::<u64, D>(
1730 self.initial_avg_bandwidth_bps
1731 .as_ref()
1732 .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
1733 encoder,
1734 offset + cur_offset,
1735 depth,
1736 )?;
1737
1738 _prev_end_offset = cur_offset + envelope_size;
1739 if 5 > max_ordinal {
1740 return Ok(());
1741 }
1742
1743 let cur_offset: usize = (5 - 1) * envelope_size;
1746
1747 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1749
1750 fidl::encoding::encode_in_envelope_optional::<u64, D>(
1755 self.initial_peak_bandwidth_bps
1756 .as_ref()
1757 .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
1758 encoder,
1759 offset + cur_offset,
1760 depth,
1761 )?;
1762
1763 _prev_end_offset = cur_offset + envelope_size;
1764
1765 Ok(())
1766 }
1767 }
1768
1769 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Node {
1770 #[inline(always)]
1771 fn new_empty() -> Self {
1772 Self::default()
1773 }
1774
1775 unsafe fn decode(
1776 &mut self,
1777 decoder: &mut fidl::encoding::Decoder<'_, D>,
1778 offset: usize,
1779 mut depth: fidl::encoding::Depth,
1780 ) -> fidl::Result<()> {
1781 decoder.debug_check_bounds::<Self>(offset);
1782 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
1783 None => return Err(fidl::Error::NotNullable),
1784 Some(len) => len,
1785 };
1786 if len == 0 {
1788 return Ok(());
1789 };
1790 depth.increment()?;
1791 let envelope_size = 8;
1792 let bytes_len = len * envelope_size;
1793 let offset = decoder.out_of_line_offset(bytes_len)?;
1794 let mut _next_ordinal_to_read = 0;
1796 let mut next_offset = offset;
1797 let end_offset = offset + bytes_len;
1798 _next_ordinal_to_read += 1;
1799 if next_offset >= end_offset {
1800 return Ok(());
1801 }
1802
1803 while _next_ordinal_to_read < 1 {
1805 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1806 _next_ordinal_to_read += 1;
1807 next_offset += envelope_size;
1808 }
1809
1810 let next_out_of_line = decoder.next_out_of_line();
1811 let handles_before = decoder.remaining_handles();
1812 if let Some((inlined, num_bytes, num_handles)) =
1813 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1814 {
1815 let member_inline_size =
1816 <u32 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.id.get_or_insert_with(|| fidl::new_empty!(u32, D));
1830 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
1831 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1832 {
1833 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1834 }
1835 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1836 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1837 }
1838 }
1839
1840 next_offset += envelope_size;
1841 _next_ordinal_to_read += 1;
1842 if next_offset >= end_offset {
1843 return Ok(());
1844 }
1845
1846 while _next_ordinal_to_read < 2 {
1848 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1849 _next_ordinal_to_read += 1;
1850 next_offset += envelope_size;
1851 }
1852
1853 let next_out_of_line = decoder.next_out_of_line();
1854 let handles_before = decoder.remaining_handles();
1855 if let Some((inlined, num_bytes, num_handles)) =
1856 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1857 {
1858 let member_inline_size =
1859 <fidl::encoding::BoundedString<64> as fidl::encoding::TypeMarker>::inline_size(
1860 decoder.context,
1861 );
1862 if inlined != (member_inline_size <= 4) {
1863 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1864 }
1865 let inner_offset;
1866 let mut inner_depth = depth.clone();
1867 if inlined {
1868 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1869 inner_offset = next_offset;
1870 } else {
1871 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1872 inner_depth.increment()?;
1873 }
1874 let val_ref = self
1875 .name
1876 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<64>, D));
1877 fidl::decode!(
1878 fidl::encoding::BoundedString<64>,
1879 D,
1880 val_ref,
1881 decoder,
1882 inner_offset,
1883 inner_depth
1884 )?;
1885 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1886 {
1887 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1888 }
1889 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1890 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1891 }
1892 }
1893
1894 next_offset += envelope_size;
1895 _next_ordinal_to_read += 1;
1896 if next_offset >= end_offset {
1897 return Ok(());
1898 }
1899
1900 while _next_ordinal_to_read < 3 {
1902 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1903 _next_ordinal_to_read += 1;
1904 next_offset += envelope_size;
1905 }
1906
1907 let next_out_of_line = decoder.next_out_of_line();
1908 let handles_before = decoder.remaining_handles();
1909 if let Some((inlined, num_bytes, num_handles)) =
1910 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1911 {
1912 let member_inline_size =
1913 <fidl::encoding::BoundedString<64> as fidl::encoding::TypeMarker>::inline_size(
1914 decoder.context,
1915 );
1916 if inlined != (member_inline_size <= 4) {
1917 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1918 }
1919 let inner_offset;
1920 let mut inner_depth = depth.clone();
1921 if inlined {
1922 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1923 inner_offset = next_offset;
1924 } else {
1925 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1926 inner_depth.increment()?;
1927 }
1928 let val_ref = self
1929 .interconnect_name
1930 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<64>, D));
1931 fidl::decode!(
1932 fidl::encoding::BoundedString<64>,
1933 D,
1934 val_ref,
1935 decoder,
1936 inner_offset,
1937 inner_depth
1938 )?;
1939 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1940 {
1941 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1942 }
1943 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1944 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1945 }
1946 }
1947
1948 next_offset += envelope_size;
1949 _next_ordinal_to_read += 1;
1950 if next_offset >= end_offset {
1951 return Ok(());
1952 }
1953
1954 while _next_ordinal_to_read < 4 {
1956 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1957 _next_ordinal_to_read += 1;
1958 next_offset += envelope_size;
1959 }
1960
1961 let next_out_of_line = decoder.next_out_of_line();
1962 let handles_before = decoder.remaining_handles();
1963 if let Some((inlined, num_bytes, num_handles)) =
1964 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1965 {
1966 let member_inline_size =
1967 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1968 if inlined != (member_inline_size <= 4) {
1969 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1970 }
1971 let inner_offset;
1972 let mut inner_depth = depth.clone();
1973 if inlined {
1974 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1975 inner_offset = next_offset;
1976 } else {
1977 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1978 inner_depth.increment()?;
1979 }
1980 let val_ref =
1981 self.initial_avg_bandwidth_bps.get_or_insert_with(|| fidl::new_empty!(u64, D));
1982 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
1983 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1984 {
1985 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1986 }
1987 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1988 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1989 }
1990 }
1991
1992 next_offset += envelope_size;
1993 _next_ordinal_to_read += 1;
1994 if next_offset >= end_offset {
1995 return Ok(());
1996 }
1997
1998 while _next_ordinal_to_read < 5 {
2000 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2001 _next_ordinal_to_read += 1;
2002 next_offset += envelope_size;
2003 }
2004
2005 let next_out_of_line = decoder.next_out_of_line();
2006 let handles_before = decoder.remaining_handles();
2007 if let Some((inlined, num_bytes, num_handles)) =
2008 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2009 {
2010 let member_inline_size =
2011 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2012 if inlined != (member_inline_size <= 4) {
2013 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2014 }
2015 let inner_offset;
2016 let mut inner_depth = depth.clone();
2017 if inlined {
2018 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2019 inner_offset = next_offset;
2020 } else {
2021 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2022 inner_depth.increment()?;
2023 }
2024 let val_ref =
2025 self.initial_peak_bandwidth_bps.get_or_insert_with(|| fidl::new_empty!(u64, D));
2026 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
2027 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2028 {
2029 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2030 }
2031 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2032 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2033 }
2034 }
2035
2036 next_offset += envelope_size;
2037
2038 while next_offset < end_offset {
2040 _next_ordinal_to_read += 1;
2041 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2042 next_offset += envelope_size;
2043 }
2044
2045 Ok(())
2046 }
2047 }
2048
2049 impl NodeBandwidth {
2050 #[inline(always)]
2051 fn max_ordinal_present(&self) -> u64 {
2052 if let Some(_) = self.requests {
2053 return 2;
2054 }
2055 if let Some(_) = self.node_id {
2056 return 1;
2057 }
2058 0
2059 }
2060 }
2061
2062 impl fidl::encoding::ValueTypeMarker for NodeBandwidth {
2063 type Borrowed<'a> = &'a Self;
2064 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2065 value
2066 }
2067 }
2068
2069 unsafe impl fidl::encoding::TypeMarker for NodeBandwidth {
2070 type Owned = Self;
2071
2072 #[inline(always)]
2073 fn inline_align(_context: fidl::encoding::Context) -> usize {
2074 8
2075 }
2076
2077 #[inline(always)]
2078 fn inline_size(_context: fidl::encoding::Context) -> usize {
2079 16
2080 }
2081 }
2082
2083 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<NodeBandwidth, D>
2084 for &NodeBandwidth
2085 {
2086 unsafe fn encode(
2087 self,
2088 encoder: &mut fidl::encoding::Encoder<'_, D>,
2089 offset: usize,
2090 mut depth: fidl::encoding::Depth,
2091 ) -> fidl::Result<()> {
2092 encoder.debug_check_bounds::<NodeBandwidth>(offset);
2093 let max_ordinal: u64 = self.max_ordinal_present();
2095 encoder.write_num(max_ordinal, offset);
2096 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
2097 if max_ordinal == 0 {
2099 return Ok(());
2100 }
2101 depth.increment()?;
2102 let envelope_size = 8;
2103 let bytes_len = max_ordinal as usize * envelope_size;
2104 #[allow(unused_variables)]
2105 let offset = encoder.out_of_line_offset(bytes_len);
2106 let mut _prev_end_offset: usize = 0;
2107 if 1 > max_ordinal {
2108 return Ok(());
2109 }
2110
2111 let cur_offset: usize = (1 - 1) * envelope_size;
2114
2115 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2117
2118 fidl::encoding::encode_in_envelope_optional::<u32, D>(
2123 self.node_id.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
2124 encoder,
2125 offset + cur_offset,
2126 depth,
2127 )?;
2128
2129 _prev_end_offset = cur_offset + envelope_size;
2130 if 2 > max_ordinal {
2131 return Ok(());
2132 }
2133
2134 let cur_offset: usize = (2 - 1) * envelope_size;
2137
2138 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2140
2141 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<BandwidthRequest, 64>, D>(
2146 self.requests.as_ref().map(<fidl::encoding::Vector<BandwidthRequest, 64> as fidl::encoding::ValueTypeMarker>::borrow),
2147 encoder, offset + cur_offset, depth
2148 )?;
2149
2150 _prev_end_offset = cur_offset + envelope_size;
2151
2152 Ok(())
2153 }
2154 }
2155
2156 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for NodeBandwidth {
2157 #[inline(always)]
2158 fn new_empty() -> Self {
2159 Self::default()
2160 }
2161
2162 unsafe fn decode(
2163 &mut self,
2164 decoder: &mut fidl::encoding::Decoder<'_, D>,
2165 offset: usize,
2166 mut depth: fidl::encoding::Depth,
2167 ) -> fidl::Result<()> {
2168 decoder.debug_check_bounds::<Self>(offset);
2169 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
2170 None => return Err(fidl::Error::NotNullable),
2171 Some(len) => len,
2172 };
2173 if len == 0 {
2175 return Ok(());
2176 };
2177 depth.increment()?;
2178 let envelope_size = 8;
2179 let bytes_len = len * envelope_size;
2180 let offset = decoder.out_of_line_offset(bytes_len)?;
2181 let mut _next_ordinal_to_read = 0;
2183 let mut next_offset = offset;
2184 let end_offset = offset + bytes_len;
2185 _next_ordinal_to_read += 1;
2186 if next_offset >= end_offset {
2187 return Ok(());
2188 }
2189
2190 while _next_ordinal_to_read < 1 {
2192 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2193 _next_ordinal_to_read += 1;
2194 next_offset += envelope_size;
2195 }
2196
2197 let next_out_of_line = decoder.next_out_of_line();
2198 let handles_before = decoder.remaining_handles();
2199 if let Some((inlined, num_bytes, num_handles)) =
2200 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2201 {
2202 let member_inline_size =
2203 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2204 if inlined != (member_inline_size <= 4) {
2205 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2206 }
2207 let inner_offset;
2208 let mut inner_depth = depth.clone();
2209 if inlined {
2210 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2211 inner_offset = next_offset;
2212 } else {
2213 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2214 inner_depth.increment()?;
2215 }
2216 let val_ref = self.node_id.get_or_insert_with(|| fidl::new_empty!(u32, D));
2217 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
2218 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2219 {
2220 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2221 }
2222 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2223 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2224 }
2225 }
2226
2227 next_offset += envelope_size;
2228 _next_ordinal_to_read += 1;
2229 if next_offset >= end_offset {
2230 return Ok(());
2231 }
2232
2233 while _next_ordinal_to_read < 2 {
2235 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2236 _next_ordinal_to_read += 1;
2237 next_offset += envelope_size;
2238 }
2239
2240 let next_out_of_line = decoder.next_out_of_line();
2241 let handles_before = decoder.remaining_handles();
2242 if let Some((inlined, num_bytes, num_handles)) =
2243 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2244 {
2245 let member_inline_size = <fidl::encoding::Vector<BandwidthRequest, 64> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2246 if inlined != (member_inline_size <= 4) {
2247 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2248 }
2249 let inner_offset;
2250 let mut inner_depth = depth.clone();
2251 if inlined {
2252 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2253 inner_offset = next_offset;
2254 } else {
2255 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2256 inner_depth.increment()?;
2257 }
2258 let val_ref = self.requests.get_or_insert_with(
2259 || fidl::new_empty!(fidl::encoding::Vector<BandwidthRequest, 64>, D),
2260 );
2261 fidl::decode!(fidl::encoding::Vector<BandwidthRequest, 64>, D, val_ref, decoder, inner_offset, inner_depth)?;
2262 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2263 {
2264 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2265 }
2266 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2267 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2268 }
2269 }
2270
2271 next_offset += envelope_size;
2272
2273 while next_offset < end_offset {
2275 _next_ordinal_to_read += 1;
2276 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2277 next_offset += envelope_size;
2278 }
2279
2280 Ok(())
2281 }
2282 }
2283
2284 impl PathEndpoints {
2285 #[inline(always)]
2286 fn max_ordinal_present(&self) -> u64 {
2287 if let Some(_) = self.dst_node_id {
2288 return 4;
2289 }
2290 if let Some(_) = self.src_node_id {
2291 return 3;
2292 }
2293 if let Some(_) = self.id {
2294 return 2;
2295 }
2296 if let Some(_) = self.name {
2297 return 1;
2298 }
2299 0
2300 }
2301 }
2302
2303 impl fidl::encoding::ValueTypeMarker for PathEndpoints {
2304 type Borrowed<'a> = &'a Self;
2305 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2306 value
2307 }
2308 }
2309
2310 unsafe impl fidl::encoding::TypeMarker for PathEndpoints {
2311 type Owned = Self;
2312
2313 #[inline(always)]
2314 fn inline_align(_context: fidl::encoding::Context) -> usize {
2315 8
2316 }
2317
2318 #[inline(always)]
2319 fn inline_size(_context: fidl::encoding::Context) -> usize {
2320 16
2321 }
2322 }
2323
2324 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<PathEndpoints, D>
2325 for &PathEndpoints
2326 {
2327 unsafe fn encode(
2328 self,
2329 encoder: &mut fidl::encoding::Encoder<'_, D>,
2330 offset: usize,
2331 mut depth: fidl::encoding::Depth,
2332 ) -> fidl::Result<()> {
2333 encoder.debug_check_bounds::<PathEndpoints>(offset);
2334 let max_ordinal: u64 = self.max_ordinal_present();
2336 encoder.write_num(max_ordinal, offset);
2337 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
2338 if max_ordinal == 0 {
2340 return Ok(());
2341 }
2342 depth.increment()?;
2343 let envelope_size = 8;
2344 let bytes_len = max_ordinal as usize * envelope_size;
2345 #[allow(unused_variables)]
2346 let offset = encoder.out_of_line_offset(bytes_len);
2347 let mut _prev_end_offset: usize = 0;
2348 if 1 > max_ordinal {
2349 return Ok(());
2350 }
2351
2352 let cur_offset: usize = (1 - 1) * envelope_size;
2355
2356 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2358
2359 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<64>, D>(
2364 self.name.as_ref().map(
2365 <fidl::encoding::BoundedString<64> as fidl::encoding::ValueTypeMarker>::borrow,
2366 ),
2367 encoder,
2368 offset + cur_offset,
2369 depth,
2370 )?;
2371
2372 _prev_end_offset = cur_offset + envelope_size;
2373 if 2 > max_ordinal {
2374 return Ok(());
2375 }
2376
2377 let cur_offset: usize = (2 - 1) * envelope_size;
2380
2381 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2383
2384 fidl::encoding::encode_in_envelope_optional::<u32, D>(
2389 self.id.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
2390 encoder,
2391 offset + cur_offset,
2392 depth,
2393 )?;
2394
2395 _prev_end_offset = cur_offset + envelope_size;
2396 if 3 > max_ordinal {
2397 return Ok(());
2398 }
2399
2400 let cur_offset: usize = (3 - 1) * envelope_size;
2403
2404 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2406
2407 fidl::encoding::encode_in_envelope_optional::<u32, D>(
2412 self.src_node_id.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
2413 encoder,
2414 offset + cur_offset,
2415 depth,
2416 )?;
2417
2418 _prev_end_offset = cur_offset + envelope_size;
2419 if 4 > max_ordinal {
2420 return Ok(());
2421 }
2422
2423 let cur_offset: usize = (4 - 1) * envelope_size;
2426
2427 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2429
2430 fidl::encoding::encode_in_envelope_optional::<u32, D>(
2435 self.dst_node_id.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
2436 encoder,
2437 offset + cur_offset,
2438 depth,
2439 )?;
2440
2441 _prev_end_offset = cur_offset + envelope_size;
2442
2443 Ok(())
2444 }
2445 }
2446
2447 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for PathEndpoints {
2448 #[inline(always)]
2449 fn new_empty() -> Self {
2450 Self::default()
2451 }
2452
2453 unsafe fn decode(
2454 &mut self,
2455 decoder: &mut fidl::encoding::Decoder<'_, D>,
2456 offset: usize,
2457 mut depth: fidl::encoding::Depth,
2458 ) -> fidl::Result<()> {
2459 decoder.debug_check_bounds::<Self>(offset);
2460 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
2461 None => return Err(fidl::Error::NotNullable),
2462 Some(len) => len,
2463 };
2464 if len == 0 {
2466 return Ok(());
2467 };
2468 depth.increment()?;
2469 let envelope_size = 8;
2470 let bytes_len = len * envelope_size;
2471 let offset = decoder.out_of_line_offset(bytes_len)?;
2472 let mut _next_ordinal_to_read = 0;
2474 let mut next_offset = offset;
2475 let end_offset = offset + bytes_len;
2476 _next_ordinal_to_read += 1;
2477 if next_offset >= end_offset {
2478 return Ok(());
2479 }
2480
2481 while _next_ordinal_to_read < 1 {
2483 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2484 _next_ordinal_to_read += 1;
2485 next_offset += envelope_size;
2486 }
2487
2488 let next_out_of_line = decoder.next_out_of_line();
2489 let handles_before = decoder.remaining_handles();
2490 if let Some((inlined, num_bytes, num_handles)) =
2491 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2492 {
2493 let member_inline_size =
2494 <fidl::encoding::BoundedString<64> as fidl::encoding::TypeMarker>::inline_size(
2495 decoder.context,
2496 );
2497 if inlined != (member_inline_size <= 4) {
2498 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2499 }
2500 let inner_offset;
2501 let mut inner_depth = depth.clone();
2502 if inlined {
2503 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2504 inner_offset = next_offset;
2505 } else {
2506 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2507 inner_depth.increment()?;
2508 }
2509 let val_ref = self
2510 .name
2511 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<64>, D));
2512 fidl::decode!(
2513 fidl::encoding::BoundedString<64>,
2514 D,
2515 val_ref,
2516 decoder,
2517 inner_offset,
2518 inner_depth
2519 )?;
2520 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2521 {
2522 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2523 }
2524 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2525 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2526 }
2527 }
2528
2529 next_offset += envelope_size;
2530 _next_ordinal_to_read += 1;
2531 if next_offset >= end_offset {
2532 return Ok(());
2533 }
2534
2535 while _next_ordinal_to_read < 2 {
2537 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2538 _next_ordinal_to_read += 1;
2539 next_offset += envelope_size;
2540 }
2541
2542 let next_out_of_line = decoder.next_out_of_line();
2543 let handles_before = decoder.remaining_handles();
2544 if let Some((inlined, num_bytes, num_handles)) =
2545 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2546 {
2547 let member_inline_size =
2548 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2549 if inlined != (member_inline_size <= 4) {
2550 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2551 }
2552 let inner_offset;
2553 let mut inner_depth = depth.clone();
2554 if inlined {
2555 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2556 inner_offset = next_offset;
2557 } else {
2558 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2559 inner_depth.increment()?;
2560 }
2561 let val_ref = self.id.get_or_insert_with(|| fidl::new_empty!(u32, D));
2562 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
2563 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2564 {
2565 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2566 }
2567 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2568 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2569 }
2570 }
2571
2572 next_offset += envelope_size;
2573 _next_ordinal_to_read += 1;
2574 if next_offset >= end_offset {
2575 return Ok(());
2576 }
2577
2578 while _next_ordinal_to_read < 3 {
2580 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2581 _next_ordinal_to_read += 1;
2582 next_offset += envelope_size;
2583 }
2584
2585 let next_out_of_line = decoder.next_out_of_line();
2586 let handles_before = decoder.remaining_handles();
2587 if let Some((inlined, num_bytes, num_handles)) =
2588 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2589 {
2590 let member_inline_size =
2591 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2592 if inlined != (member_inline_size <= 4) {
2593 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2594 }
2595 let inner_offset;
2596 let mut inner_depth = depth.clone();
2597 if inlined {
2598 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2599 inner_offset = next_offset;
2600 } else {
2601 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2602 inner_depth.increment()?;
2603 }
2604 let val_ref = self.src_node_id.get_or_insert_with(|| fidl::new_empty!(u32, D));
2605 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
2606 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2607 {
2608 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2609 }
2610 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2611 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2612 }
2613 }
2614
2615 next_offset += envelope_size;
2616 _next_ordinal_to_read += 1;
2617 if next_offset >= end_offset {
2618 return Ok(());
2619 }
2620
2621 while _next_ordinal_to_read < 4 {
2623 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2624 _next_ordinal_to_read += 1;
2625 next_offset += envelope_size;
2626 }
2627
2628 let next_out_of_line = decoder.next_out_of_line();
2629 let handles_before = decoder.remaining_handles();
2630 if let Some((inlined, num_bytes, num_handles)) =
2631 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2632 {
2633 let member_inline_size =
2634 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2635 if inlined != (member_inline_size <= 4) {
2636 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2637 }
2638 let inner_offset;
2639 let mut inner_depth = depth.clone();
2640 if inlined {
2641 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2642 inner_offset = next_offset;
2643 } else {
2644 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2645 inner_depth.increment()?;
2646 }
2647 let val_ref = self.dst_node_id.get_or_insert_with(|| fidl::new_empty!(u32, D));
2648 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
2649 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2650 {
2651 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2652 }
2653 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2654 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2655 }
2656 }
2657
2658 next_offset += envelope_size;
2659
2660 while next_offset < end_offset {
2662 _next_ordinal_to_read += 1;
2663 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2664 next_offset += envelope_size;
2665 }
2666
2667 Ok(())
2668 }
2669 }
2670}