1#![warn(clippy::all)]
4#![allow(unused_parens, unused_mut, unused_imports, nonstandard_style)]
5
6use bitflags::bitflags;
7use fidl::encoding::{MessageBufFor, ProxyChannelBox, ResourceDialect};
8use futures::future::{self, MaybeDone, TryFutureExt};
9use zx_status;
10
11#[derive(Clone, Debug, PartialEq, PartialOrd)]
12pub struct Peer {
13 pub addr: [u8; 6],
14 pub max_tp: u16,
15 pub max_probability: u16,
16 pub basic_highest: u16,
17 pub basic_max_probability: u16,
18 pub probes: u64,
19 pub entries: Vec<StatsEntry>,
20}
21
22impl fidl::Persistable for Peer {}
23
24#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
25pub struct Peers {
26 pub addrs: Vec<[u8; 6]>,
27}
28
29impl fidl::Persistable for Peers {}
30
31#[derive(Clone, Debug, PartialEq, PartialOrd)]
32pub struct StatsEntry {
33 pub tx_vector_idx: u16,
34 pub tx_vec_desc: String,
35 pub success_cur: u64,
36 pub attempts_cur: u64,
37 pub probability: f32,
38 pub cur_tp: f32,
39 pub success_total: u64,
40 pub attempts_total: u64,
41 pub probes_total: u64,
42 pub probe_cycles_skipped: u8,
43}
44
45impl fidl::Persistable for StatsEntry {}
46
47mod internal {
48 use super::*;
49
50 impl fidl::encoding::ValueTypeMarker for Peer {
51 type Borrowed<'a> = &'a Self;
52 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
53 value
54 }
55 }
56
57 unsafe impl fidl::encoding::TypeMarker for Peer {
58 type Owned = Self;
59
60 #[inline(always)]
61 fn inline_align(_context: fidl::encoding::Context) -> usize {
62 8
63 }
64
65 #[inline(always)]
66 fn inline_size(_context: fidl::encoding::Context) -> usize {
67 40
68 }
69 }
70
71 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Peer, D> for &Peer {
72 #[inline]
73 unsafe fn encode(
74 self,
75 encoder: &mut fidl::encoding::Encoder<'_, D>,
76 offset: usize,
77 _depth: fidl::encoding::Depth,
78 ) -> fidl::Result<()> {
79 encoder.debug_check_bounds::<Peer>(offset);
80 fidl::encoding::Encode::<Peer, D>::encode(
82 (
83 <fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow(&self.addr),
84 <u16 as fidl::encoding::ValueTypeMarker>::borrow(&self.max_tp),
85 <u16 as fidl::encoding::ValueTypeMarker>::borrow(&self.max_probability),
86 <u16 as fidl::encoding::ValueTypeMarker>::borrow(&self.basic_highest),
87 <u16 as fidl::encoding::ValueTypeMarker>::borrow(&self.basic_max_probability),
88 <u64 as fidl::encoding::ValueTypeMarker>::borrow(&self.probes),
89 <fidl::encoding::UnboundedVector<StatsEntry> as fidl::encoding::ValueTypeMarker>::borrow(&self.entries),
90 ),
91 encoder, offset, _depth
92 )
93 }
94 }
95 unsafe impl<
96 D: fidl::encoding::ResourceDialect,
97 T0: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
98 T1: fidl::encoding::Encode<u16, D>,
99 T2: fidl::encoding::Encode<u16, D>,
100 T3: fidl::encoding::Encode<u16, D>,
101 T4: fidl::encoding::Encode<u16, D>,
102 T5: fidl::encoding::Encode<u64, D>,
103 T6: fidl::encoding::Encode<fidl::encoding::UnboundedVector<StatsEntry>, D>,
104 > fidl::encoding::Encode<Peer, D> for (T0, T1, T2, T3, T4, T5, T6)
105 {
106 #[inline]
107 unsafe fn encode(
108 self,
109 encoder: &mut fidl::encoding::Encoder<'_, D>,
110 offset: usize,
111 depth: fidl::encoding::Depth,
112 ) -> fidl::Result<()> {
113 encoder.debug_check_bounds::<Peer>(offset);
114 unsafe {
117 let ptr = encoder.buf.as_mut_ptr().add(offset).offset(8);
118 (ptr as *mut u64).write_unaligned(0);
119 }
120 self.0.encode(encoder, offset + 0, depth)?;
122 self.1.encode(encoder, offset + 6, depth)?;
123 self.2.encode(encoder, offset + 8, depth)?;
124 self.3.encode(encoder, offset + 10, depth)?;
125 self.4.encode(encoder, offset + 12, depth)?;
126 self.5.encode(encoder, offset + 16, depth)?;
127 self.6.encode(encoder, offset + 24, depth)?;
128 Ok(())
129 }
130 }
131
132 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Peer {
133 #[inline(always)]
134 fn new_empty() -> Self {
135 Self {
136 addr: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D),
137 max_tp: fidl::new_empty!(u16, D),
138 max_probability: fidl::new_empty!(u16, D),
139 basic_highest: fidl::new_empty!(u16, D),
140 basic_max_probability: fidl::new_empty!(u16, D),
141 probes: fidl::new_empty!(u64, D),
142 entries: fidl::new_empty!(fidl::encoding::UnboundedVector<StatsEntry>, D),
143 }
144 }
145
146 #[inline]
147 unsafe fn decode(
148 &mut self,
149 decoder: &mut fidl::encoding::Decoder<'_, D>,
150 offset: usize,
151 _depth: fidl::encoding::Depth,
152 ) -> fidl::Result<()> {
153 decoder.debug_check_bounds::<Self>(offset);
154 let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(8) };
156 let padval = unsafe { (ptr as *const u64).read_unaligned() };
157 let mask = 0xffff000000000000u64;
158 let maskedval = padval & mask;
159 if maskedval != 0 {
160 return Err(fidl::Error::NonZeroPadding {
161 padding_start: offset + 8 + ((mask as u64).trailing_zeros() / 8) as usize,
162 });
163 }
164 fidl::decode!(fidl::encoding::Array<u8, 6>, D, &mut self.addr, decoder, offset + 0, _depth)?;
165 fidl::decode!(u16, D, &mut self.max_tp, decoder, offset + 6, _depth)?;
166 fidl::decode!(u16, D, &mut self.max_probability, decoder, offset + 8, _depth)?;
167 fidl::decode!(u16, D, &mut self.basic_highest, decoder, offset + 10, _depth)?;
168 fidl::decode!(u16, D, &mut self.basic_max_probability, decoder, offset + 12, _depth)?;
169 fidl::decode!(u64, D, &mut self.probes, decoder, offset + 16, _depth)?;
170 fidl::decode!(
171 fidl::encoding::UnboundedVector<StatsEntry>,
172 D,
173 &mut self.entries,
174 decoder,
175 offset + 24,
176 _depth
177 )?;
178 Ok(())
179 }
180 }
181
182 impl fidl::encoding::ValueTypeMarker for Peers {
183 type Borrowed<'a> = &'a Self;
184 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
185 value
186 }
187 }
188
189 unsafe impl fidl::encoding::TypeMarker for Peers {
190 type Owned = Self;
191
192 #[inline(always)]
193 fn inline_align(_context: fidl::encoding::Context) -> usize {
194 8
195 }
196
197 #[inline(always)]
198 fn inline_size(_context: fidl::encoding::Context) -> usize {
199 16
200 }
201 }
202
203 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Peers, D> for &Peers {
204 #[inline]
205 unsafe fn encode(
206 self,
207 encoder: &mut fidl::encoding::Encoder<'_, D>,
208 offset: usize,
209 _depth: fidl::encoding::Depth,
210 ) -> fidl::Result<()> {
211 encoder.debug_check_bounds::<Peers>(offset);
212 fidl::encoding::Encode::<Peers, D>::encode(
214 (
215 <fidl::encoding::UnboundedVector<fidl::encoding::Array<u8, 6>> as fidl::encoding::ValueTypeMarker>::borrow(&self.addrs),
216 ),
217 encoder, offset, _depth
218 )
219 }
220 }
221 unsafe impl<
222 D: fidl::encoding::ResourceDialect,
223 T0: fidl::encoding::Encode<fidl::encoding::UnboundedVector<fidl::encoding::Array<u8, 6>>, D>,
224 > fidl::encoding::Encode<Peers, D> for (T0,)
225 {
226 #[inline]
227 unsafe fn encode(
228 self,
229 encoder: &mut fidl::encoding::Encoder<'_, D>,
230 offset: usize,
231 depth: fidl::encoding::Depth,
232 ) -> fidl::Result<()> {
233 encoder.debug_check_bounds::<Peers>(offset);
234 self.0.encode(encoder, offset + 0, depth)?;
238 Ok(())
239 }
240 }
241
242 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Peers {
243 #[inline(always)]
244 fn new_empty() -> Self {
245 Self {
246 addrs: fidl::new_empty!(
247 fidl::encoding::UnboundedVector<fidl::encoding::Array<u8, 6>>,
248 D
249 ),
250 }
251 }
252
253 #[inline]
254 unsafe fn decode(
255 &mut self,
256 decoder: &mut fidl::encoding::Decoder<'_, D>,
257 offset: usize,
258 _depth: fidl::encoding::Depth,
259 ) -> fidl::Result<()> {
260 decoder.debug_check_bounds::<Self>(offset);
261 fidl::decode!(
263 fidl::encoding::UnboundedVector<fidl::encoding::Array<u8, 6>>,
264 D,
265 &mut self.addrs,
266 decoder,
267 offset + 0,
268 _depth
269 )?;
270 Ok(())
271 }
272 }
273
274 impl fidl::encoding::ValueTypeMarker for StatsEntry {
275 type Borrowed<'a> = &'a Self;
276 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
277 value
278 }
279 }
280
281 unsafe impl fidl::encoding::TypeMarker for StatsEntry {
282 type Owned = Self;
283
284 #[inline(always)]
285 fn inline_align(_context: fidl::encoding::Context) -> usize {
286 8
287 }
288
289 #[inline(always)]
290 fn inline_size(_context: fidl::encoding::Context) -> usize {
291 80
292 }
293 }
294
295 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<StatsEntry, D>
296 for &StatsEntry
297 {
298 #[inline]
299 unsafe fn encode(
300 self,
301 encoder: &mut fidl::encoding::Encoder<'_, D>,
302 offset: usize,
303 _depth: fidl::encoding::Depth,
304 ) -> fidl::Result<()> {
305 encoder.debug_check_bounds::<StatsEntry>(offset);
306 fidl::encoding::Encode::<StatsEntry, D>::encode(
308 (
309 <u16 as fidl::encoding::ValueTypeMarker>::borrow(&self.tx_vector_idx),
310 <fidl::encoding::UnboundedString as fidl::encoding::ValueTypeMarker>::borrow(
311 &self.tx_vec_desc,
312 ),
313 <u64 as fidl::encoding::ValueTypeMarker>::borrow(&self.success_cur),
314 <u64 as fidl::encoding::ValueTypeMarker>::borrow(&self.attempts_cur),
315 <f32 as fidl::encoding::ValueTypeMarker>::borrow(&self.probability),
316 <f32 as fidl::encoding::ValueTypeMarker>::borrow(&self.cur_tp),
317 <u64 as fidl::encoding::ValueTypeMarker>::borrow(&self.success_total),
318 <u64 as fidl::encoding::ValueTypeMarker>::borrow(&self.attempts_total),
319 <u64 as fidl::encoding::ValueTypeMarker>::borrow(&self.probes_total),
320 <u8 as fidl::encoding::ValueTypeMarker>::borrow(&self.probe_cycles_skipped),
321 ),
322 encoder,
323 offset,
324 _depth,
325 )
326 }
327 }
328 unsafe impl<
329 D: fidl::encoding::ResourceDialect,
330 T0: fidl::encoding::Encode<u16, D>,
331 T1: fidl::encoding::Encode<fidl::encoding::UnboundedString, D>,
332 T2: fidl::encoding::Encode<u64, D>,
333 T3: fidl::encoding::Encode<u64, D>,
334 T4: fidl::encoding::Encode<f32, D>,
335 T5: fidl::encoding::Encode<f32, D>,
336 T6: fidl::encoding::Encode<u64, D>,
337 T7: fidl::encoding::Encode<u64, D>,
338 T8: fidl::encoding::Encode<u64, D>,
339 T9: fidl::encoding::Encode<u8, D>,
340 > fidl::encoding::Encode<StatsEntry, D> for (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9)
341 {
342 #[inline]
343 unsafe fn encode(
344 self,
345 encoder: &mut fidl::encoding::Encoder<'_, D>,
346 offset: usize,
347 depth: fidl::encoding::Depth,
348 ) -> fidl::Result<()> {
349 encoder.debug_check_bounds::<StatsEntry>(offset);
350 unsafe {
353 let ptr = encoder.buf.as_mut_ptr().add(offset).offset(0);
354 (ptr as *mut u64).write_unaligned(0);
355 }
356 unsafe {
357 let ptr = encoder.buf.as_mut_ptr().add(offset).offset(72);
358 (ptr as *mut u64).write_unaligned(0);
359 }
360 self.0.encode(encoder, offset + 0, depth)?;
362 self.1.encode(encoder, offset + 8, depth)?;
363 self.2.encode(encoder, offset + 24, depth)?;
364 self.3.encode(encoder, offset + 32, depth)?;
365 self.4.encode(encoder, offset + 40, depth)?;
366 self.5.encode(encoder, offset + 44, depth)?;
367 self.6.encode(encoder, offset + 48, depth)?;
368 self.7.encode(encoder, offset + 56, depth)?;
369 self.8.encode(encoder, offset + 64, depth)?;
370 self.9.encode(encoder, offset + 72, depth)?;
371 Ok(())
372 }
373 }
374
375 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for StatsEntry {
376 #[inline(always)]
377 fn new_empty() -> Self {
378 Self {
379 tx_vector_idx: fidl::new_empty!(u16, D),
380 tx_vec_desc: fidl::new_empty!(fidl::encoding::UnboundedString, D),
381 success_cur: fidl::new_empty!(u64, D),
382 attempts_cur: fidl::new_empty!(u64, D),
383 probability: fidl::new_empty!(f32, D),
384 cur_tp: fidl::new_empty!(f32, D),
385 success_total: fidl::new_empty!(u64, D),
386 attempts_total: fidl::new_empty!(u64, D),
387 probes_total: fidl::new_empty!(u64, D),
388 probe_cycles_skipped: fidl::new_empty!(u8, D),
389 }
390 }
391
392 #[inline]
393 unsafe fn decode(
394 &mut self,
395 decoder: &mut fidl::encoding::Decoder<'_, D>,
396 offset: usize,
397 _depth: fidl::encoding::Depth,
398 ) -> fidl::Result<()> {
399 decoder.debug_check_bounds::<Self>(offset);
400 let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(0) };
402 let padval = unsafe { (ptr as *const u64).read_unaligned() };
403 let mask = 0xffffffffffff0000u64;
404 let maskedval = padval & mask;
405 if maskedval != 0 {
406 return Err(fidl::Error::NonZeroPadding {
407 padding_start: offset + 0 + ((mask as u64).trailing_zeros() / 8) as usize,
408 });
409 }
410 let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(72) };
411 let padval = unsafe { (ptr as *const u64).read_unaligned() };
412 let mask = 0xffffffffffffff00u64;
413 let maskedval = padval & mask;
414 if maskedval != 0 {
415 return Err(fidl::Error::NonZeroPadding {
416 padding_start: offset + 72 + ((mask as u64).trailing_zeros() / 8) as usize,
417 });
418 }
419 fidl::decode!(u16, D, &mut self.tx_vector_idx, decoder, offset + 0, _depth)?;
420 fidl::decode!(
421 fidl::encoding::UnboundedString,
422 D,
423 &mut self.tx_vec_desc,
424 decoder,
425 offset + 8,
426 _depth
427 )?;
428 fidl::decode!(u64, D, &mut self.success_cur, decoder, offset + 24, _depth)?;
429 fidl::decode!(u64, D, &mut self.attempts_cur, decoder, offset + 32, _depth)?;
430 fidl::decode!(f32, D, &mut self.probability, decoder, offset + 40, _depth)?;
431 fidl::decode!(f32, D, &mut self.cur_tp, decoder, offset + 44, _depth)?;
432 fidl::decode!(u64, D, &mut self.success_total, decoder, offset + 48, _depth)?;
433 fidl::decode!(u64, D, &mut self.attempts_total, decoder, offset + 56, _depth)?;
434 fidl::decode!(u64, D, &mut self.probes_total, decoder, offset + 64, _depth)?;
435 fidl::decode!(u8, D, &mut self.probe_cycles_skipped, decoder, offset + 72, _depth)?;
436 Ok(())
437 }
438 }
439}