1#![warn(clippy::all)]
4#![allow(unused_parens, unused_mut, unused_imports, nonstandard_style)]
5
6use bitflags::bitflags;
7use fidl::encoding::{MessageBufFor, ProxyChannelBox, ResourceDialect};
8use futures::future::{self, MaybeDone, TryFutureExt};
9use zx_status;
10
11pub const EDGES_MAX: u32 = 64;
13
14pub const NAME_MAX_LENGTH: u32 = 64;
16
17#[derive(Clone, Debug, PartialEq)]
18pub struct DeviceSetNodesBandwidthRequest {
19 pub nodes: Vec<NodeBandwidth>,
20}
21
22impl fidl::Persistable for DeviceSetNodesBandwidthRequest {}
23
24#[derive(Clone, Debug, PartialEq)]
25pub struct DeviceGetNodeGraphResponse {
26 pub nodes: Vec<Node>,
27 pub edges: Vec<Edge>,
28}
29
30impl fidl::Persistable for DeviceGetNodeGraphResponse {}
31
32#[derive(Clone, Debug, PartialEq)]
33pub struct DeviceGetPathEndpointsResponse {
34 pub paths: Vec<PathEndpoints>,
37}
38
39impl fidl::Persistable for DeviceGetPathEndpointsResponse {}
40
41#[derive(Clone, Debug, Default, PartialEq)]
42pub struct BandwidthRequest {
43 pub average_bandwidth_bps: Option<u64>,
44 pub peak_bandwidth_bps: Option<u64>,
45 #[doc(hidden)]
46 pub __source_breaking: fidl::marker::SourceBreaking,
47}
48
49impl fidl::Persistable for BandwidthRequest {}
50
51#[derive(Clone, Debug, Default, PartialEq)]
52pub struct Edge {
53 pub src_node_id: Option<u32>,
55 pub dst_node_id: Option<u32>,
57 pub weight: Option<u32>,
63 #[doc(hidden)]
64 pub __source_breaking: fidl::marker::SourceBreaking,
65}
66
67impl fidl::Persistable for Edge {}
68
69#[derive(Clone, Debug, Default, PartialEq)]
70pub struct Node {
71 pub id: Option<u32>,
73 pub name: Option<String>,
75 pub interconnect_name: Option<String>,
77 pub initial_avg_bandwidth_bps: Option<u64>,
79 pub initial_peak_bandwidth_bps: Option<u64>,
81 #[doc(hidden)]
82 pub __source_breaking: fidl::marker::SourceBreaking,
83}
84
85impl fidl::Persistable for Node {}
86
87#[derive(Clone, Debug, Default, PartialEq)]
88pub struct NodeBandwidth {
89 pub node_id: Option<u32>,
91 pub requests: Option<Vec<BandwidthRequest>>,
93 #[doc(hidden)]
94 pub __source_breaking: fidl::marker::SourceBreaking,
95}
96
97impl fidl::Persistable for NodeBandwidth {}
98
99#[derive(Clone, Debug, Default, PartialEq)]
100pub struct PathEndpoints {
101 pub name: Option<String>,
103 pub id: Option<u32>,
105 pub src_node_id: Option<u32>,
107 pub dst_node_id: Option<u32>,
109 #[doc(hidden)]
110 pub __source_breaking: fidl::marker::SourceBreaking,
111}
112
113impl fidl::Persistable for PathEndpoints {}
114
115pub mod device_ordinals {
116 pub const SET_NODES_BANDWIDTH: u64 = 0x3bb98f59dd645c14;
117 pub const GET_NODE_GRAPH: u64 = 0x2f676c9ef41b8306;
118 pub const GET_PATH_ENDPOINTS: u64 = 0x656ae602a096765b;
119}
120
121pub mod path_ordinals {
122 pub const SET_BANDWIDTH: u64 = 0xd366c6e86f69d1d;
123}
124
125mod internal {
126 use super::*;
127
128 impl fidl::encoding::ValueTypeMarker for DeviceSetNodesBandwidthRequest {
129 type Borrowed<'a> = &'a Self;
130 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
131 value
132 }
133 }
134
135 unsafe impl fidl::encoding::TypeMarker for DeviceSetNodesBandwidthRequest {
136 type Owned = Self;
137
138 #[inline(always)]
139 fn inline_align(_context: fidl::encoding::Context) -> usize {
140 8
141 }
142
143 #[inline(always)]
144 fn inline_size(_context: fidl::encoding::Context) -> usize {
145 16
146 }
147 }
148
149 unsafe impl<D: fidl::encoding::ResourceDialect>
150 fidl::encoding::Encode<DeviceSetNodesBandwidthRequest, D>
151 for &DeviceSetNodesBandwidthRequest
152 {
153 #[inline]
154 unsafe fn encode(
155 self,
156 encoder: &mut fidl::encoding::Encoder<'_, D>,
157 offset: usize,
158 _depth: fidl::encoding::Depth,
159 ) -> fidl::Result<()> {
160 encoder.debug_check_bounds::<DeviceSetNodesBandwidthRequest>(offset);
161 fidl::encoding::Encode::<DeviceSetNodesBandwidthRequest, D>::encode(
163 (
164 <fidl::encoding::UnboundedVector<NodeBandwidth> as fidl::encoding::ValueTypeMarker>::borrow(&self.nodes),
165 ),
166 encoder, offset, _depth
167 )
168 }
169 }
170 unsafe impl<
171 D: fidl::encoding::ResourceDialect,
172 T0: fidl::encoding::Encode<fidl::encoding::UnboundedVector<NodeBandwidth>, D>,
173 > fidl::encoding::Encode<DeviceSetNodesBandwidthRequest, D> for (T0,)
174 {
175 #[inline]
176 unsafe fn encode(
177 self,
178 encoder: &mut fidl::encoding::Encoder<'_, D>,
179 offset: usize,
180 depth: fidl::encoding::Depth,
181 ) -> fidl::Result<()> {
182 encoder.debug_check_bounds::<DeviceSetNodesBandwidthRequest>(offset);
183 self.0.encode(encoder, offset + 0, depth)?;
187 Ok(())
188 }
189 }
190
191 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
192 for DeviceSetNodesBandwidthRequest
193 {
194 #[inline(always)]
195 fn new_empty() -> Self {
196 Self { nodes: fidl::new_empty!(fidl::encoding::UnboundedVector<NodeBandwidth>, D) }
197 }
198
199 #[inline]
200 unsafe fn decode(
201 &mut self,
202 decoder: &mut fidl::encoding::Decoder<'_, D>,
203 offset: usize,
204 _depth: fidl::encoding::Depth,
205 ) -> fidl::Result<()> {
206 decoder.debug_check_bounds::<Self>(offset);
207 fidl::decode!(
209 fidl::encoding::UnboundedVector<NodeBandwidth>,
210 D,
211 &mut self.nodes,
212 decoder,
213 offset + 0,
214 _depth
215 )?;
216 Ok(())
217 }
218 }
219
220 impl fidl::encoding::ValueTypeMarker for DeviceGetNodeGraphResponse {
221 type Borrowed<'a> = &'a Self;
222 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
223 value
224 }
225 }
226
227 unsafe impl fidl::encoding::TypeMarker for DeviceGetNodeGraphResponse {
228 type Owned = Self;
229
230 #[inline(always)]
231 fn inline_align(_context: fidl::encoding::Context) -> usize {
232 8
233 }
234
235 #[inline(always)]
236 fn inline_size(_context: fidl::encoding::Context) -> usize {
237 32
238 }
239 }
240
241 unsafe impl<D: fidl::encoding::ResourceDialect>
242 fidl::encoding::Encode<DeviceGetNodeGraphResponse, D> for &DeviceGetNodeGraphResponse
243 {
244 #[inline]
245 unsafe fn encode(
246 self,
247 encoder: &mut fidl::encoding::Encoder<'_, D>,
248 offset: usize,
249 _depth: fidl::encoding::Depth,
250 ) -> fidl::Result<()> {
251 encoder.debug_check_bounds::<DeviceGetNodeGraphResponse>(offset);
252 fidl::encoding::Encode::<DeviceGetNodeGraphResponse, D>::encode(
254 (
255 <fidl::encoding::UnboundedVector<Node> as fidl::encoding::ValueTypeMarker>::borrow(&self.nodes),
256 <fidl::encoding::UnboundedVector<Edge> as fidl::encoding::ValueTypeMarker>::borrow(&self.edges),
257 ),
258 encoder, offset, _depth
259 )
260 }
261 }
262 unsafe impl<
263 D: fidl::encoding::ResourceDialect,
264 T0: fidl::encoding::Encode<fidl::encoding::UnboundedVector<Node>, D>,
265 T1: fidl::encoding::Encode<fidl::encoding::UnboundedVector<Edge>, D>,
266 > fidl::encoding::Encode<DeviceGetNodeGraphResponse, D> for (T0, T1)
267 {
268 #[inline]
269 unsafe fn encode(
270 self,
271 encoder: &mut fidl::encoding::Encoder<'_, D>,
272 offset: usize,
273 depth: fidl::encoding::Depth,
274 ) -> fidl::Result<()> {
275 encoder.debug_check_bounds::<DeviceGetNodeGraphResponse>(offset);
276 self.0.encode(encoder, offset + 0, depth)?;
280 self.1.encode(encoder, offset + 16, depth)?;
281 Ok(())
282 }
283 }
284
285 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
286 for DeviceGetNodeGraphResponse
287 {
288 #[inline(always)]
289 fn new_empty() -> Self {
290 Self {
291 nodes: fidl::new_empty!(fidl::encoding::UnboundedVector<Node>, D),
292 edges: fidl::new_empty!(fidl::encoding::UnboundedVector<Edge>, D),
293 }
294 }
295
296 #[inline]
297 unsafe fn decode(
298 &mut self,
299 decoder: &mut fidl::encoding::Decoder<'_, D>,
300 offset: usize,
301 _depth: fidl::encoding::Depth,
302 ) -> fidl::Result<()> {
303 decoder.debug_check_bounds::<Self>(offset);
304 fidl::decode!(
306 fidl::encoding::UnboundedVector<Node>,
307 D,
308 &mut self.nodes,
309 decoder,
310 offset + 0,
311 _depth
312 )?;
313 fidl::decode!(
314 fidl::encoding::UnboundedVector<Edge>,
315 D,
316 &mut self.edges,
317 decoder,
318 offset + 16,
319 _depth
320 )?;
321 Ok(())
322 }
323 }
324
325 impl fidl::encoding::ValueTypeMarker for DeviceGetPathEndpointsResponse {
326 type Borrowed<'a> = &'a Self;
327 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
328 value
329 }
330 }
331
332 unsafe impl fidl::encoding::TypeMarker for DeviceGetPathEndpointsResponse {
333 type Owned = Self;
334
335 #[inline(always)]
336 fn inline_align(_context: fidl::encoding::Context) -> usize {
337 8
338 }
339
340 #[inline(always)]
341 fn inline_size(_context: fidl::encoding::Context) -> usize {
342 16
343 }
344 }
345
346 unsafe impl<D: fidl::encoding::ResourceDialect>
347 fidl::encoding::Encode<DeviceGetPathEndpointsResponse, D>
348 for &DeviceGetPathEndpointsResponse
349 {
350 #[inline]
351 unsafe fn encode(
352 self,
353 encoder: &mut fidl::encoding::Encoder<'_, D>,
354 offset: usize,
355 _depth: fidl::encoding::Depth,
356 ) -> fidl::Result<()> {
357 encoder.debug_check_bounds::<DeviceGetPathEndpointsResponse>(offset);
358 fidl::encoding::Encode::<DeviceGetPathEndpointsResponse, D>::encode(
360 (
361 <fidl::encoding::UnboundedVector<PathEndpoints> as fidl::encoding::ValueTypeMarker>::borrow(&self.paths),
362 ),
363 encoder, offset, _depth
364 )
365 }
366 }
367 unsafe impl<
368 D: fidl::encoding::ResourceDialect,
369 T0: fidl::encoding::Encode<fidl::encoding::UnboundedVector<PathEndpoints>, D>,
370 > fidl::encoding::Encode<DeviceGetPathEndpointsResponse, D> for (T0,)
371 {
372 #[inline]
373 unsafe fn encode(
374 self,
375 encoder: &mut fidl::encoding::Encoder<'_, D>,
376 offset: usize,
377 depth: fidl::encoding::Depth,
378 ) -> fidl::Result<()> {
379 encoder.debug_check_bounds::<DeviceGetPathEndpointsResponse>(offset);
380 self.0.encode(encoder, offset + 0, depth)?;
384 Ok(())
385 }
386 }
387
388 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
389 for DeviceGetPathEndpointsResponse
390 {
391 #[inline(always)]
392 fn new_empty() -> Self {
393 Self { paths: fidl::new_empty!(fidl::encoding::UnboundedVector<PathEndpoints>, D) }
394 }
395
396 #[inline]
397 unsafe fn decode(
398 &mut self,
399 decoder: &mut fidl::encoding::Decoder<'_, D>,
400 offset: usize,
401 _depth: fidl::encoding::Depth,
402 ) -> fidl::Result<()> {
403 decoder.debug_check_bounds::<Self>(offset);
404 fidl::decode!(
406 fidl::encoding::UnboundedVector<PathEndpoints>,
407 D,
408 &mut self.paths,
409 decoder,
410 offset + 0,
411 _depth
412 )?;
413 Ok(())
414 }
415 }
416
417 impl BandwidthRequest {
418 #[inline(always)]
419 fn max_ordinal_present(&self) -> u64 {
420 if let Some(_) = self.peak_bandwidth_bps {
421 return 2;
422 }
423 if let Some(_) = self.average_bandwidth_bps {
424 return 1;
425 }
426 0
427 }
428 }
429
430 impl fidl::encoding::ValueTypeMarker for BandwidthRequest {
431 type Borrowed<'a> = &'a Self;
432 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
433 value
434 }
435 }
436
437 unsafe impl fidl::encoding::TypeMarker for BandwidthRequest {
438 type Owned = Self;
439
440 #[inline(always)]
441 fn inline_align(_context: fidl::encoding::Context) -> usize {
442 8
443 }
444
445 #[inline(always)]
446 fn inline_size(_context: fidl::encoding::Context) -> usize {
447 16
448 }
449 }
450
451 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<BandwidthRequest, D>
452 for &BandwidthRequest
453 {
454 unsafe fn encode(
455 self,
456 encoder: &mut fidl::encoding::Encoder<'_, D>,
457 offset: usize,
458 mut depth: fidl::encoding::Depth,
459 ) -> fidl::Result<()> {
460 encoder.debug_check_bounds::<BandwidthRequest>(offset);
461 let max_ordinal: u64 = self.max_ordinal_present();
463 encoder.write_num(max_ordinal, offset);
464 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
465 if max_ordinal == 0 {
467 return Ok(());
468 }
469 depth.increment()?;
470 let envelope_size = 8;
471 let bytes_len = max_ordinal as usize * envelope_size;
472 #[allow(unused_variables)]
473 let offset = encoder.out_of_line_offset(bytes_len);
474 let mut _prev_end_offset: usize = 0;
475 if 1 > max_ordinal {
476 return Ok(());
477 }
478
479 let cur_offset: usize = (1 - 1) * envelope_size;
482
483 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
485
486 fidl::encoding::encode_in_envelope_optional::<u64, D>(
491 self.average_bandwidth_bps
492 .as_ref()
493 .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
494 encoder,
495 offset + cur_offset,
496 depth,
497 )?;
498
499 _prev_end_offset = cur_offset + envelope_size;
500 if 2 > max_ordinal {
501 return Ok(());
502 }
503
504 let cur_offset: usize = (2 - 1) * envelope_size;
507
508 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
510
511 fidl::encoding::encode_in_envelope_optional::<u64, D>(
516 self.peak_bandwidth_bps
517 .as_ref()
518 .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
519 encoder,
520 offset + cur_offset,
521 depth,
522 )?;
523
524 _prev_end_offset = cur_offset + envelope_size;
525
526 Ok(())
527 }
528 }
529
530 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for BandwidthRequest {
531 #[inline(always)]
532 fn new_empty() -> Self {
533 Self::default()
534 }
535
536 unsafe fn decode(
537 &mut self,
538 decoder: &mut fidl::encoding::Decoder<'_, D>,
539 offset: usize,
540 mut depth: fidl::encoding::Depth,
541 ) -> fidl::Result<()> {
542 decoder.debug_check_bounds::<Self>(offset);
543 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
544 None => return Err(fidl::Error::NotNullable),
545 Some(len) => len,
546 };
547 if len == 0 {
549 return Ok(());
550 };
551 depth.increment()?;
552 let envelope_size = 8;
553 let bytes_len = len * envelope_size;
554 let offset = decoder.out_of_line_offset(bytes_len)?;
555 let mut _next_ordinal_to_read = 0;
557 let mut next_offset = offset;
558 let end_offset = offset + bytes_len;
559 _next_ordinal_to_read += 1;
560 if next_offset >= end_offset {
561 return Ok(());
562 }
563
564 while _next_ordinal_to_read < 1 {
566 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
567 _next_ordinal_to_read += 1;
568 next_offset += envelope_size;
569 }
570
571 let next_out_of_line = decoder.next_out_of_line();
572 let handles_before = decoder.remaining_handles();
573 if let Some((inlined, num_bytes, num_handles)) =
574 fidl::encoding::decode_envelope_header(decoder, next_offset)?
575 {
576 let member_inline_size =
577 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
578 if inlined != (member_inline_size <= 4) {
579 return Err(fidl::Error::InvalidInlineBitInEnvelope);
580 }
581 let inner_offset;
582 let mut inner_depth = depth.clone();
583 if inlined {
584 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
585 inner_offset = next_offset;
586 } else {
587 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
588 inner_depth.increment()?;
589 }
590 let val_ref =
591 self.average_bandwidth_bps.get_or_insert_with(|| fidl::new_empty!(u64, D));
592 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
593 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
594 {
595 return Err(fidl::Error::InvalidNumBytesInEnvelope);
596 }
597 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
598 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
599 }
600 }
601
602 next_offset += envelope_size;
603 _next_ordinal_to_read += 1;
604 if next_offset >= end_offset {
605 return Ok(());
606 }
607
608 while _next_ordinal_to_read < 2 {
610 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
611 _next_ordinal_to_read += 1;
612 next_offset += envelope_size;
613 }
614
615 let next_out_of_line = decoder.next_out_of_line();
616 let handles_before = decoder.remaining_handles();
617 if let Some((inlined, num_bytes, num_handles)) =
618 fidl::encoding::decode_envelope_header(decoder, next_offset)?
619 {
620 let member_inline_size =
621 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
622 if inlined != (member_inline_size <= 4) {
623 return Err(fidl::Error::InvalidInlineBitInEnvelope);
624 }
625 let inner_offset;
626 let mut inner_depth = depth.clone();
627 if inlined {
628 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
629 inner_offset = next_offset;
630 } else {
631 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
632 inner_depth.increment()?;
633 }
634 let val_ref =
635 self.peak_bandwidth_bps.get_or_insert_with(|| fidl::new_empty!(u64, D));
636 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
637 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
638 {
639 return Err(fidl::Error::InvalidNumBytesInEnvelope);
640 }
641 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
642 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
643 }
644 }
645
646 next_offset += envelope_size;
647
648 while next_offset < end_offset {
650 _next_ordinal_to_read += 1;
651 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
652 next_offset += envelope_size;
653 }
654
655 Ok(())
656 }
657 }
658
659 impl Edge {
660 #[inline(always)]
661 fn max_ordinal_present(&self) -> u64 {
662 if let Some(_) = self.weight {
663 return 3;
664 }
665 if let Some(_) = self.dst_node_id {
666 return 2;
667 }
668 if let Some(_) = self.src_node_id {
669 return 1;
670 }
671 0
672 }
673 }
674
675 impl fidl::encoding::ValueTypeMarker for Edge {
676 type Borrowed<'a> = &'a Self;
677 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
678 value
679 }
680 }
681
682 unsafe impl fidl::encoding::TypeMarker for Edge {
683 type Owned = Self;
684
685 #[inline(always)]
686 fn inline_align(_context: fidl::encoding::Context) -> usize {
687 8
688 }
689
690 #[inline(always)]
691 fn inline_size(_context: fidl::encoding::Context) -> usize {
692 16
693 }
694 }
695
696 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Edge, D> for &Edge {
697 unsafe fn encode(
698 self,
699 encoder: &mut fidl::encoding::Encoder<'_, D>,
700 offset: usize,
701 mut depth: fidl::encoding::Depth,
702 ) -> fidl::Result<()> {
703 encoder.debug_check_bounds::<Edge>(offset);
704 let max_ordinal: u64 = self.max_ordinal_present();
706 encoder.write_num(max_ordinal, offset);
707 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
708 if max_ordinal == 0 {
710 return Ok(());
711 }
712 depth.increment()?;
713 let envelope_size = 8;
714 let bytes_len = max_ordinal as usize * envelope_size;
715 #[allow(unused_variables)]
716 let offset = encoder.out_of_line_offset(bytes_len);
717 let mut _prev_end_offset: usize = 0;
718 if 1 > max_ordinal {
719 return Ok(());
720 }
721
722 let cur_offset: usize = (1 - 1) * envelope_size;
725
726 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
728
729 fidl::encoding::encode_in_envelope_optional::<u32, D>(
734 self.src_node_id.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
735 encoder,
736 offset + cur_offset,
737 depth,
738 )?;
739
740 _prev_end_offset = cur_offset + envelope_size;
741 if 2 > max_ordinal {
742 return Ok(());
743 }
744
745 let cur_offset: usize = (2 - 1) * envelope_size;
748
749 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
751
752 fidl::encoding::encode_in_envelope_optional::<u32, D>(
757 self.dst_node_id.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
758 encoder,
759 offset + cur_offset,
760 depth,
761 )?;
762
763 _prev_end_offset = cur_offset + envelope_size;
764 if 3 > max_ordinal {
765 return Ok(());
766 }
767
768 let cur_offset: usize = (3 - 1) * envelope_size;
771
772 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
774
775 fidl::encoding::encode_in_envelope_optional::<u32, D>(
780 self.weight.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
781 encoder,
782 offset + cur_offset,
783 depth,
784 )?;
785
786 _prev_end_offset = cur_offset + envelope_size;
787
788 Ok(())
789 }
790 }
791
792 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Edge {
793 #[inline(always)]
794 fn new_empty() -> Self {
795 Self::default()
796 }
797
798 unsafe fn decode(
799 &mut self,
800 decoder: &mut fidl::encoding::Decoder<'_, D>,
801 offset: usize,
802 mut depth: fidl::encoding::Depth,
803 ) -> fidl::Result<()> {
804 decoder.debug_check_bounds::<Self>(offset);
805 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
806 None => return Err(fidl::Error::NotNullable),
807 Some(len) => len,
808 };
809 if len == 0 {
811 return Ok(());
812 };
813 depth.increment()?;
814 let envelope_size = 8;
815 let bytes_len = len * envelope_size;
816 let offset = decoder.out_of_line_offset(bytes_len)?;
817 let mut _next_ordinal_to_read = 0;
819 let mut next_offset = offset;
820 let end_offset = offset + bytes_len;
821 _next_ordinal_to_read += 1;
822 if next_offset >= end_offset {
823 return Ok(());
824 }
825
826 while _next_ordinal_to_read < 1 {
828 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
829 _next_ordinal_to_read += 1;
830 next_offset += envelope_size;
831 }
832
833 let next_out_of_line = decoder.next_out_of_line();
834 let handles_before = decoder.remaining_handles();
835 if let Some((inlined, num_bytes, num_handles)) =
836 fidl::encoding::decode_envelope_header(decoder, next_offset)?
837 {
838 let member_inline_size =
839 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
840 if inlined != (member_inline_size <= 4) {
841 return Err(fidl::Error::InvalidInlineBitInEnvelope);
842 }
843 let inner_offset;
844 let mut inner_depth = depth.clone();
845 if inlined {
846 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
847 inner_offset = next_offset;
848 } else {
849 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
850 inner_depth.increment()?;
851 }
852 let val_ref = self.src_node_id.get_or_insert_with(|| fidl::new_empty!(u32, D));
853 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
854 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
855 {
856 return Err(fidl::Error::InvalidNumBytesInEnvelope);
857 }
858 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
859 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
860 }
861 }
862
863 next_offset += envelope_size;
864 _next_ordinal_to_read += 1;
865 if next_offset >= end_offset {
866 return Ok(());
867 }
868
869 while _next_ordinal_to_read < 2 {
871 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
872 _next_ordinal_to_read += 1;
873 next_offset += envelope_size;
874 }
875
876 let next_out_of_line = decoder.next_out_of_line();
877 let handles_before = decoder.remaining_handles();
878 if let Some((inlined, num_bytes, num_handles)) =
879 fidl::encoding::decode_envelope_header(decoder, next_offset)?
880 {
881 let member_inline_size =
882 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
883 if inlined != (member_inline_size <= 4) {
884 return Err(fidl::Error::InvalidInlineBitInEnvelope);
885 }
886 let inner_offset;
887 let mut inner_depth = depth.clone();
888 if inlined {
889 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
890 inner_offset = next_offset;
891 } else {
892 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
893 inner_depth.increment()?;
894 }
895 let val_ref = self.dst_node_id.get_or_insert_with(|| fidl::new_empty!(u32, D));
896 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
897 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
898 {
899 return Err(fidl::Error::InvalidNumBytesInEnvelope);
900 }
901 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
902 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
903 }
904 }
905
906 next_offset += envelope_size;
907 _next_ordinal_to_read += 1;
908 if next_offset >= end_offset {
909 return Ok(());
910 }
911
912 while _next_ordinal_to_read < 3 {
914 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
915 _next_ordinal_to_read += 1;
916 next_offset += envelope_size;
917 }
918
919 let next_out_of_line = decoder.next_out_of_line();
920 let handles_before = decoder.remaining_handles();
921 if let Some((inlined, num_bytes, num_handles)) =
922 fidl::encoding::decode_envelope_header(decoder, next_offset)?
923 {
924 let member_inline_size =
925 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
926 if inlined != (member_inline_size <= 4) {
927 return Err(fidl::Error::InvalidInlineBitInEnvelope);
928 }
929 let inner_offset;
930 let mut inner_depth = depth.clone();
931 if inlined {
932 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
933 inner_offset = next_offset;
934 } else {
935 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
936 inner_depth.increment()?;
937 }
938 let val_ref = self.weight.get_or_insert_with(|| fidl::new_empty!(u32, D));
939 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
940 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
941 {
942 return Err(fidl::Error::InvalidNumBytesInEnvelope);
943 }
944 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
945 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
946 }
947 }
948
949 next_offset += envelope_size;
950
951 while next_offset < end_offset {
953 _next_ordinal_to_read += 1;
954 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
955 next_offset += envelope_size;
956 }
957
958 Ok(())
959 }
960 }
961
962 impl Node {
963 #[inline(always)]
964 fn max_ordinal_present(&self) -> u64 {
965 if let Some(_) = self.initial_peak_bandwidth_bps {
966 return 5;
967 }
968 if let Some(_) = self.initial_avg_bandwidth_bps {
969 return 4;
970 }
971 if let Some(_) = self.interconnect_name {
972 return 3;
973 }
974 if let Some(_) = self.name {
975 return 2;
976 }
977 if let Some(_) = self.id {
978 return 1;
979 }
980 0
981 }
982 }
983
984 impl fidl::encoding::ValueTypeMarker for Node {
985 type Borrowed<'a> = &'a Self;
986 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
987 value
988 }
989 }
990
991 unsafe impl fidl::encoding::TypeMarker for Node {
992 type Owned = Self;
993
994 #[inline(always)]
995 fn inline_align(_context: fidl::encoding::Context) -> usize {
996 8
997 }
998
999 #[inline(always)]
1000 fn inline_size(_context: fidl::encoding::Context) -> usize {
1001 16
1002 }
1003 }
1004
1005 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Node, D> for &Node {
1006 unsafe fn encode(
1007 self,
1008 encoder: &mut fidl::encoding::Encoder<'_, D>,
1009 offset: usize,
1010 mut depth: fidl::encoding::Depth,
1011 ) -> fidl::Result<()> {
1012 encoder.debug_check_bounds::<Node>(offset);
1013 let max_ordinal: u64 = self.max_ordinal_present();
1015 encoder.write_num(max_ordinal, offset);
1016 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
1017 if max_ordinal == 0 {
1019 return Ok(());
1020 }
1021 depth.increment()?;
1022 let envelope_size = 8;
1023 let bytes_len = max_ordinal as usize * envelope_size;
1024 #[allow(unused_variables)]
1025 let offset = encoder.out_of_line_offset(bytes_len);
1026 let mut _prev_end_offset: usize = 0;
1027 if 1 > max_ordinal {
1028 return Ok(());
1029 }
1030
1031 let cur_offset: usize = (1 - 1) * envelope_size;
1034
1035 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1037
1038 fidl::encoding::encode_in_envelope_optional::<u32, D>(
1043 self.id.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
1044 encoder,
1045 offset + cur_offset,
1046 depth,
1047 )?;
1048
1049 _prev_end_offset = cur_offset + envelope_size;
1050 if 2 > max_ordinal {
1051 return Ok(());
1052 }
1053
1054 let cur_offset: usize = (2 - 1) * envelope_size;
1057
1058 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1060
1061 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<64>, D>(
1066 self.name.as_ref().map(
1067 <fidl::encoding::BoundedString<64> as fidl::encoding::ValueTypeMarker>::borrow,
1068 ),
1069 encoder,
1070 offset + cur_offset,
1071 depth,
1072 )?;
1073
1074 _prev_end_offset = cur_offset + envelope_size;
1075 if 3 > max_ordinal {
1076 return Ok(());
1077 }
1078
1079 let cur_offset: usize = (3 - 1) * envelope_size;
1082
1083 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1085
1086 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<64>, D>(
1091 self.interconnect_name.as_ref().map(
1092 <fidl::encoding::BoundedString<64> as fidl::encoding::ValueTypeMarker>::borrow,
1093 ),
1094 encoder,
1095 offset + cur_offset,
1096 depth,
1097 )?;
1098
1099 _prev_end_offset = cur_offset + envelope_size;
1100 if 4 > max_ordinal {
1101 return Ok(());
1102 }
1103
1104 let cur_offset: usize = (4 - 1) * envelope_size;
1107
1108 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1110
1111 fidl::encoding::encode_in_envelope_optional::<u64, D>(
1116 self.initial_avg_bandwidth_bps
1117 .as_ref()
1118 .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
1119 encoder,
1120 offset + cur_offset,
1121 depth,
1122 )?;
1123
1124 _prev_end_offset = cur_offset + envelope_size;
1125 if 5 > max_ordinal {
1126 return Ok(());
1127 }
1128
1129 let cur_offset: usize = (5 - 1) * envelope_size;
1132
1133 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1135
1136 fidl::encoding::encode_in_envelope_optional::<u64, D>(
1141 self.initial_peak_bandwidth_bps
1142 .as_ref()
1143 .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
1144 encoder,
1145 offset + cur_offset,
1146 depth,
1147 )?;
1148
1149 _prev_end_offset = cur_offset + envelope_size;
1150
1151 Ok(())
1152 }
1153 }
1154
1155 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Node {
1156 #[inline(always)]
1157 fn new_empty() -> Self {
1158 Self::default()
1159 }
1160
1161 unsafe fn decode(
1162 &mut self,
1163 decoder: &mut fidl::encoding::Decoder<'_, D>,
1164 offset: usize,
1165 mut depth: fidl::encoding::Depth,
1166 ) -> fidl::Result<()> {
1167 decoder.debug_check_bounds::<Self>(offset);
1168 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
1169 None => return Err(fidl::Error::NotNullable),
1170 Some(len) => len,
1171 };
1172 if len == 0 {
1174 return Ok(());
1175 };
1176 depth.increment()?;
1177 let envelope_size = 8;
1178 let bytes_len = len * envelope_size;
1179 let offset = decoder.out_of_line_offset(bytes_len)?;
1180 let mut _next_ordinal_to_read = 0;
1182 let mut next_offset = offset;
1183 let end_offset = offset + bytes_len;
1184 _next_ordinal_to_read += 1;
1185 if next_offset >= end_offset {
1186 return Ok(());
1187 }
1188
1189 while _next_ordinal_to_read < 1 {
1191 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1192 _next_ordinal_to_read += 1;
1193 next_offset += envelope_size;
1194 }
1195
1196 let next_out_of_line = decoder.next_out_of_line();
1197 let handles_before = decoder.remaining_handles();
1198 if let Some((inlined, num_bytes, num_handles)) =
1199 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1200 {
1201 let member_inline_size =
1202 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1203 if inlined != (member_inline_size <= 4) {
1204 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1205 }
1206 let inner_offset;
1207 let mut inner_depth = depth.clone();
1208 if inlined {
1209 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1210 inner_offset = next_offset;
1211 } else {
1212 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1213 inner_depth.increment()?;
1214 }
1215 let val_ref = self.id.get_or_insert_with(|| fidl::new_empty!(u32, D));
1216 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
1217 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1218 {
1219 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1220 }
1221 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1222 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1223 }
1224 }
1225
1226 next_offset += envelope_size;
1227 _next_ordinal_to_read += 1;
1228 if next_offset >= end_offset {
1229 return Ok(());
1230 }
1231
1232 while _next_ordinal_to_read < 2 {
1234 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1235 _next_ordinal_to_read += 1;
1236 next_offset += envelope_size;
1237 }
1238
1239 let next_out_of_line = decoder.next_out_of_line();
1240 let handles_before = decoder.remaining_handles();
1241 if let Some((inlined, num_bytes, num_handles)) =
1242 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1243 {
1244 let member_inline_size =
1245 <fidl::encoding::BoundedString<64> as fidl::encoding::TypeMarker>::inline_size(
1246 decoder.context,
1247 );
1248 if inlined != (member_inline_size <= 4) {
1249 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1250 }
1251 let inner_offset;
1252 let mut inner_depth = depth.clone();
1253 if inlined {
1254 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1255 inner_offset = next_offset;
1256 } else {
1257 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1258 inner_depth.increment()?;
1259 }
1260 let val_ref = self
1261 .name
1262 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<64>, D));
1263 fidl::decode!(
1264 fidl::encoding::BoundedString<64>,
1265 D,
1266 val_ref,
1267 decoder,
1268 inner_offset,
1269 inner_depth
1270 )?;
1271 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1272 {
1273 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1274 }
1275 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1276 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1277 }
1278 }
1279
1280 next_offset += envelope_size;
1281 _next_ordinal_to_read += 1;
1282 if next_offset >= end_offset {
1283 return Ok(());
1284 }
1285
1286 while _next_ordinal_to_read < 3 {
1288 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1289 _next_ordinal_to_read += 1;
1290 next_offset += envelope_size;
1291 }
1292
1293 let next_out_of_line = decoder.next_out_of_line();
1294 let handles_before = decoder.remaining_handles();
1295 if let Some((inlined, num_bytes, num_handles)) =
1296 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1297 {
1298 let member_inline_size =
1299 <fidl::encoding::BoundedString<64> as fidl::encoding::TypeMarker>::inline_size(
1300 decoder.context,
1301 );
1302 if inlined != (member_inline_size <= 4) {
1303 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1304 }
1305 let inner_offset;
1306 let mut inner_depth = depth.clone();
1307 if inlined {
1308 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1309 inner_offset = next_offset;
1310 } else {
1311 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1312 inner_depth.increment()?;
1313 }
1314 let val_ref = self
1315 .interconnect_name
1316 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<64>, D));
1317 fidl::decode!(
1318 fidl::encoding::BoundedString<64>,
1319 D,
1320 val_ref,
1321 decoder,
1322 inner_offset,
1323 inner_depth
1324 )?;
1325 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1326 {
1327 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1328 }
1329 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1330 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1331 }
1332 }
1333
1334 next_offset += envelope_size;
1335 _next_ordinal_to_read += 1;
1336 if next_offset >= end_offset {
1337 return Ok(());
1338 }
1339
1340 while _next_ordinal_to_read < 4 {
1342 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1343 _next_ordinal_to_read += 1;
1344 next_offset += envelope_size;
1345 }
1346
1347 let next_out_of_line = decoder.next_out_of_line();
1348 let handles_before = decoder.remaining_handles();
1349 if let Some((inlined, num_bytes, num_handles)) =
1350 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1351 {
1352 let member_inline_size =
1353 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1354 if inlined != (member_inline_size <= 4) {
1355 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1356 }
1357 let inner_offset;
1358 let mut inner_depth = depth.clone();
1359 if inlined {
1360 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1361 inner_offset = next_offset;
1362 } else {
1363 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1364 inner_depth.increment()?;
1365 }
1366 let val_ref =
1367 self.initial_avg_bandwidth_bps.get_or_insert_with(|| fidl::new_empty!(u64, D));
1368 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
1369 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1370 {
1371 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1372 }
1373 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1374 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1375 }
1376 }
1377
1378 next_offset += envelope_size;
1379 _next_ordinal_to_read += 1;
1380 if next_offset >= end_offset {
1381 return Ok(());
1382 }
1383
1384 while _next_ordinal_to_read < 5 {
1386 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1387 _next_ordinal_to_read += 1;
1388 next_offset += envelope_size;
1389 }
1390
1391 let next_out_of_line = decoder.next_out_of_line();
1392 let handles_before = decoder.remaining_handles();
1393 if let Some((inlined, num_bytes, num_handles)) =
1394 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1395 {
1396 let member_inline_size =
1397 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1398 if inlined != (member_inline_size <= 4) {
1399 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1400 }
1401 let inner_offset;
1402 let mut inner_depth = depth.clone();
1403 if inlined {
1404 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1405 inner_offset = next_offset;
1406 } else {
1407 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1408 inner_depth.increment()?;
1409 }
1410 let val_ref =
1411 self.initial_peak_bandwidth_bps.get_or_insert_with(|| fidl::new_empty!(u64, D));
1412 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
1413 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1414 {
1415 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1416 }
1417 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1418 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1419 }
1420 }
1421
1422 next_offset += envelope_size;
1423
1424 while next_offset < end_offset {
1426 _next_ordinal_to_read += 1;
1427 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1428 next_offset += envelope_size;
1429 }
1430
1431 Ok(())
1432 }
1433 }
1434
1435 impl NodeBandwidth {
1436 #[inline(always)]
1437 fn max_ordinal_present(&self) -> u64 {
1438 if let Some(_) = self.requests {
1439 return 2;
1440 }
1441 if let Some(_) = self.node_id {
1442 return 1;
1443 }
1444 0
1445 }
1446 }
1447
1448 impl fidl::encoding::ValueTypeMarker for NodeBandwidth {
1449 type Borrowed<'a> = &'a Self;
1450 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1451 value
1452 }
1453 }
1454
1455 unsafe impl fidl::encoding::TypeMarker for NodeBandwidth {
1456 type Owned = Self;
1457
1458 #[inline(always)]
1459 fn inline_align(_context: fidl::encoding::Context) -> usize {
1460 8
1461 }
1462
1463 #[inline(always)]
1464 fn inline_size(_context: fidl::encoding::Context) -> usize {
1465 16
1466 }
1467 }
1468
1469 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<NodeBandwidth, D>
1470 for &NodeBandwidth
1471 {
1472 unsafe fn encode(
1473 self,
1474 encoder: &mut fidl::encoding::Encoder<'_, D>,
1475 offset: usize,
1476 mut depth: fidl::encoding::Depth,
1477 ) -> fidl::Result<()> {
1478 encoder.debug_check_bounds::<NodeBandwidth>(offset);
1479 let max_ordinal: u64 = self.max_ordinal_present();
1481 encoder.write_num(max_ordinal, offset);
1482 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
1483 if max_ordinal == 0 {
1485 return Ok(());
1486 }
1487 depth.increment()?;
1488 let envelope_size = 8;
1489 let bytes_len = max_ordinal as usize * envelope_size;
1490 #[allow(unused_variables)]
1491 let offset = encoder.out_of_line_offset(bytes_len);
1492 let mut _prev_end_offset: usize = 0;
1493 if 1 > max_ordinal {
1494 return Ok(());
1495 }
1496
1497 let cur_offset: usize = (1 - 1) * envelope_size;
1500
1501 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1503
1504 fidl::encoding::encode_in_envelope_optional::<u32, D>(
1509 self.node_id.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
1510 encoder,
1511 offset + cur_offset,
1512 depth,
1513 )?;
1514
1515 _prev_end_offset = cur_offset + envelope_size;
1516 if 2 > max_ordinal {
1517 return Ok(());
1518 }
1519
1520 let cur_offset: usize = (2 - 1) * envelope_size;
1523
1524 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1526
1527 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<BandwidthRequest, 64>, D>(
1532 self.requests.as_ref().map(<fidl::encoding::Vector<BandwidthRequest, 64> as fidl::encoding::ValueTypeMarker>::borrow),
1533 encoder, offset + cur_offset, depth
1534 )?;
1535
1536 _prev_end_offset = cur_offset + envelope_size;
1537
1538 Ok(())
1539 }
1540 }
1541
1542 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for NodeBandwidth {
1543 #[inline(always)]
1544 fn new_empty() -> Self {
1545 Self::default()
1546 }
1547
1548 unsafe fn decode(
1549 &mut self,
1550 decoder: &mut fidl::encoding::Decoder<'_, D>,
1551 offset: usize,
1552 mut depth: fidl::encoding::Depth,
1553 ) -> fidl::Result<()> {
1554 decoder.debug_check_bounds::<Self>(offset);
1555 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
1556 None => return Err(fidl::Error::NotNullable),
1557 Some(len) => len,
1558 };
1559 if len == 0 {
1561 return Ok(());
1562 };
1563 depth.increment()?;
1564 let envelope_size = 8;
1565 let bytes_len = len * envelope_size;
1566 let offset = decoder.out_of_line_offset(bytes_len)?;
1567 let mut _next_ordinal_to_read = 0;
1569 let mut next_offset = offset;
1570 let end_offset = offset + bytes_len;
1571 _next_ordinal_to_read += 1;
1572 if next_offset >= end_offset {
1573 return Ok(());
1574 }
1575
1576 while _next_ordinal_to_read < 1 {
1578 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1579 _next_ordinal_to_read += 1;
1580 next_offset += envelope_size;
1581 }
1582
1583 let next_out_of_line = decoder.next_out_of_line();
1584 let handles_before = decoder.remaining_handles();
1585 if let Some((inlined, num_bytes, num_handles)) =
1586 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1587 {
1588 let member_inline_size =
1589 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1590 if inlined != (member_inline_size <= 4) {
1591 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1592 }
1593 let inner_offset;
1594 let mut inner_depth = depth.clone();
1595 if inlined {
1596 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1597 inner_offset = next_offset;
1598 } else {
1599 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1600 inner_depth.increment()?;
1601 }
1602 let val_ref = self.node_id.get_or_insert_with(|| fidl::new_empty!(u32, D));
1603 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
1604 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1605 {
1606 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1607 }
1608 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1609 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1610 }
1611 }
1612
1613 next_offset += envelope_size;
1614 _next_ordinal_to_read += 1;
1615 if next_offset >= end_offset {
1616 return Ok(());
1617 }
1618
1619 while _next_ordinal_to_read < 2 {
1621 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1622 _next_ordinal_to_read += 1;
1623 next_offset += envelope_size;
1624 }
1625
1626 let next_out_of_line = decoder.next_out_of_line();
1627 let handles_before = decoder.remaining_handles();
1628 if let Some((inlined, num_bytes, num_handles)) =
1629 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1630 {
1631 let member_inline_size = <fidl::encoding::Vector<BandwidthRequest, 64> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1632 if inlined != (member_inline_size <= 4) {
1633 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1634 }
1635 let inner_offset;
1636 let mut inner_depth = depth.clone();
1637 if inlined {
1638 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1639 inner_offset = next_offset;
1640 } else {
1641 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1642 inner_depth.increment()?;
1643 }
1644 let val_ref = self.requests.get_or_insert_with(
1645 || fidl::new_empty!(fidl::encoding::Vector<BandwidthRequest, 64>, D),
1646 );
1647 fidl::decode!(fidl::encoding::Vector<BandwidthRequest, 64>, D, val_ref, decoder, inner_offset, inner_depth)?;
1648 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1649 {
1650 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1651 }
1652 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1653 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1654 }
1655 }
1656
1657 next_offset += envelope_size;
1658
1659 while next_offset < end_offset {
1661 _next_ordinal_to_read += 1;
1662 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1663 next_offset += envelope_size;
1664 }
1665
1666 Ok(())
1667 }
1668 }
1669
1670 impl PathEndpoints {
1671 #[inline(always)]
1672 fn max_ordinal_present(&self) -> u64 {
1673 if let Some(_) = self.dst_node_id {
1674 return 4;
1675 }
1676 if let Some(_) = self.src_node_id {
1677 return 3;
1678 }
1679 if let Some(_) = self.id {
1680 return 2;
1681 }
1682 if let Some(_) = self.name {
1683 return 1;
1684 }
1685 0
1686 }
1687 }
1688
1689 impl fidl::encoding::ValueTypeMarker for PathEndpoints {
1690 type Borrowed<'a> = &'a Self;
1691 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1692 value
1693 }
1694 }
1695
1696 unsafe impl fidl::encoding::TypeMarker for PathEndpoints {
1697 type Owned = Self;
1698
1699 #[inline(always)]
1700 fn inline_align(_context: fidl::encoding::Context) -> usize {
1701 8
1702 }
1703
1704 #[inline(always)]
1705 fn inline_size(_context: fidl::encoding::Context) -> usize {
1706 16
1707 }
1708 }
1709
1710 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<PathEndpoints, D>
1711 for &PathEndpoints
1712 {
1713 unsafe fn encode(
1714 self,
1715 encoder: &mut fidl::encoding::Encoder<'_, D>,
1716 offset: usize,
1717 mut depth: fidl::encoding::Depth,
1718 ) -> fidl::Result<()> {
1719 encoder.debug_check_bounds::<PathEndpoints>(offset);
1720 let max_ordinal: u64 = self.max_ordinal_present();
1722 encoder.write_num(max_ordinal, offset);
1723 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
1724 if max_ordinal == 0 {
1726 return Ok(());
1727 }
1728 depth.increment()?;
1729 let envelope_size = 8;
1730 let bytes_len = max_ordinal as usize * envelope_size;
1731 #[allow(unused_variables)]
1732 let offset = encoder.out_of_line_offset(bytes_len);
1733 let mut _prev_end_offset: usize = 0;
1734 if 1 > max_ordinal {
1735 return Ok(());
1736 }
1737
1738 let cur_offset: usize = (1 - 1) * envelope_size;
1741
1742 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1744
1745 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<64>, D>(
1750 self.name.as_ref().map(
1751 <fidl::encoding::BoundedString<64> as fidl::encoding::ValueTypeMarker>::borrow,
1752 ),
1753 encoder,
1754 offset + cur_offset,
1755 depth,
1756 )?;
1757
1758 _prev_end_offset = cur_offset + envelope_size;
1759 if 2 > max_ordinal {
1760 return Ok(());
1761 }
1762
1763 let cur_offset: usize = (2 - 1) * envelope_size;
1766
1767 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1769
1770 fidl::encoding::encode_in_envelope_optional::<u32, D>(
1775 self.id.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
1776 encoder,
1777 offset + cur_offset,
1778 depth,
1779 )?;
1780
1781 _prev_end_offset = cur_offset + envelope_size;
1782 if 3 > max_ordinal {
1783 return Ok(());
1784 }
1785
1786 let cur_offset: usize = (3 - 1) * envelope_size;
1789
1790 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1792
1793 fidl::encoding::encode_in_envelope_optional::<u32, D>(
1798 self.src_node_id.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
1799 encoder,
1800 offset + cur_offset,
1801 depth,
1802 )?;
1803
1804 _prev_end_offset = cur_offset + envelope_size;
1805 if 4 > max_ordinal {
1806 return Ok(());
1807 }
1808
1809 let cur_offset: usize = (4 - 1) * envelope_size;
1812
1813 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1815
1816 fidl::encoding::encode_in_envelope_optional::<u32, D>(
1821 self.dst_node_id.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
1822 encoder,
1823 offset + cur_offset,
1824 depth,
1825 )?;
1826
1827 _prev_end_offset = cur_offset + envelope_size;
1828
1829 Ok(())
1830 }
1831 }
1832
1833 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for PathEndpoints {
1834 #[inline(always)]
1835 fn new_empty() -> Self {
1836 Self::default()
1837 }
1838
1839 unsafe fn decode(
1840 &mut self,
1841 decoder: &mut fidl::encoding::Decoder<'_, D>,
1842 offset: usize,
1843 mut depth: fidl::encoding::Depth,
1844 ) -> fidl::Result<()> {
1845 decoder.debug_check_bounds::<Self>(offset);
1846 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
1847 None => return Err(fidl::Error::NotNullable),
1848 Some(len) => len,
1849 };
1850 if len == 0 {
1852 return Ok(());
1853 };
1854 depth.increment()?;
1855 let envelope_size = 8;
1856 let bytes_len = len * envelope_size;
1857 let offset = decoder.out_of_line_offset(bytes_len)?;
1858 let mut _next_ordinal_to_read = 0;
1860 let mut next_offset = offset;
1861 let end_offset = offset + bytes_len;
1862 _next_ordinal_to_read += 1;
1863 if next_offset >= end_offset {
1864 return Ok(());
1865 }
1866
1867 while _next_ordinal_to_read < 1 {
1869 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1870 _next_ordinal_to_read += 1;
1871 next_offset += envelope_size;
1872 }
1873
1874 let next_out_of_line = decoder.next_out_of_line();
1875 let handles_before = decoder.remaining_handles();
1876 if let Some((inlined, num_bytes, num_handles)) =
1877 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1878 {
1879 let member_inline_size =
1880 <fidl::encoding::BoundedString<64> as fidl::encoding::TypeMarker>::inline_size(
1881 decoder.context,
1882 );
1883 if inlined != (member_inline_size <= 4) {
1884 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1885 }
1886 let inner_offset;
1887 let mut inner_depth = depth.clone();
1888 if inlined {
1889 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1890 inner_offset = next_offset;
1891 } else {
1892 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1893 inner_depth.increment()?;
1894 }
1895 let val_ref = self
1896 .name
1897 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<64>, D));
1898 fidl::decode!(
1899 fidl::encoding::BoundedString<64>,
1900 D,
1901 val_ref,
1902 decoder,
1903 inner_offset,
1904 inner_depth
1905 )?;
1906 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1907 {
1908 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1909 }
1910 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1911 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1912 }
1913 }
1914
1915 next_offset += envelope_size;
1916 _next_ordinal_to_read += 1;
1917 if next_offset >= end_offset {
1918 return Ok(());
1919 }
1920
1921 while _next_ordinal_to_read < 2 {
1923 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1924 _next_ordinal_to_read += 1;
1925 next_offset += envelope_size;
1926 }
1927
1928 let next_out_of_line = decoder.next_out_of_line();
1929 let handles_before = decoder.remaining_handles();
1930 if let Some((inlined, num_bytes, num_handles)) =
1931 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1932 {
1933 let member_inline_size =
1934 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1935 if inlined != (member_inline_size <= 4) {
1936 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1937 }
1938 let inner_offset;
1939 let mut inner_depth = depth.clone();
1940 if inlined {
1941 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1942 inner_offset = next_offset;
1943 } else {
1944 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1945 inner_depth.increment()?;
1946 }
1947 let val_ref = self.id.get_or_insert_with(|| fidl::new_empty!(u32, D));
1948 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
1949 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1950 {
1951 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1952 }
1953 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1954 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1955 }
1956 }
1957
1958 next_offset += envelope_size;
1959 _next_ordinal_to_read += 1;
1960 if next_offset >= end_offset {
1961 return Ok(());
1962 }
1963
1964 while _next_ordinal_to_read < 3 {
1966 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1967 _next_ordinal_to_read += 1;
1968 next_offset += envelope_size;
1969 }
1970
1971 let next_out_of_line = decoder.next_out_of_line();
1972 let handles_before = decoder.remaining_handles();
1973 if let Some((inlined, num_bytes, num_handles)) =
1974 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1975 {
1976 let member_inline_size =
1977 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1978 if inlined != (member_inline_size <= 4) {
1979 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1980 }
1981 let inner_offset;
1982 let mut inner_depth = depth.clone();
1983 if inlined {
1984 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1985 inner_offset = next_offset;
1986 } else {
1987 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1988 inner_depth.increment()?;
1989 }
1990 let val_ref = self.src_node_id.get_or_insert_with(|| fidl::new_empty!(u32, D));
1991 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
1992 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1993 {
1994 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1995 }
1996 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1997 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1998 }
1999 }
2000
2001 next_offset += envelope_size;
2002 _next_ordinal_to_read += 1;
2003 if next_offset >= end_offset {
2004 return Ok(());
2005 }
2006
2007 while _next_ordinal_to_read < 4 {
2009 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2010 _next_ordinal_to_read += 1;
2011 next_offset += envelope_size;
2012 }
2013
2014 let next_out_of_line = decoder.next_out_of_line();
2015 let handles_before = decoder.remaining_handles();
2016 if let Some((inlined, num_bytes, num_handles)) =
2017 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2018 {
2019 let member_inline_size =
2020 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2021 if inlined != (member_inline_size <= 4) {
2022 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2023 }
2024 let inner_offset;
2025 let mut inner_depth = depth.clone();
2026 if inlined {
2027 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2028 inner_offset = next_offset;
2029 } else {
2030 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2031 inner_depth.increment()?;
2032 }
2033 let val_ref = self.dst_node_id.get_or_insert_with(|| fidl::new_empty!(u32, D));
2034 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
2035 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2036 {
2037 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2038 }
2039 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2040 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2041 }
2042 }
2043
2044 next_offset += envelope_size;
2045
2046 while next_offset < end_offset {
2048 _next_ordinal_to_read += 1;
2049 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2050 next_offset += envelope_size;
2051 }
2052
2053 Ok(())
2054 }
2055 }
2056}