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