evmlib/
quoting_metrics.rs1use crate::common::U256;
10use serde::{Deserialize, Serialize};
11use std::fmt::{Debug, Formatter, Result as FmtResult};
12
13#[derive(Clone, Eq, PartialEq, PartialOrd, Ord, Hash, Serialize, Deserialize)]
15pub struct QuotingMetrics {
16 pub data_type: u32,
18 pub data_size: usize,
20 pub close_records_stored: usize,
22 pub records_per_type: Vec<(u32, u32)>,
24 pub received_payment_count: usize,
26 pub live_time: u64,
28 pub network_density: Option<[u8; 32]>,
31 pub network_size: Option<u64>,
33}
34
35impl Debug for QuotingMetrics {
36 fn fmt(&self, formatter: &mut Formatter) -> FmtResult {
37 let density_u256 = self.network_density.map(U256::from_be_bytes);
38
39 write!(
40 formatter,
41 "QuotingMetrics {{ data_type: {}, data_size: {}, close_records_stored: {}, records_per_type {:?}, received_payment_count: {}, live_time: {}, network_density: {density_u256:?}, network_size: {:?} }}",
42 self.data_type,
43 self.data_size,
44 self.close_records_stored,
45 self.records_per_type,
46 self.received_payment_count,
47 self.live_time,
48 self.network_size
49 )
50 }
51}
52
53impl QuotingMetrics {
54 pub fn to_bytes(&self) -> Vec<u8> {
59 let mut bytes = Vec::new();
60
61 bytes.extend_from_slice(&self.data_type.to_le_bytes());
62 bytes.extend_from_slice(&(self.data_size as u64).to_le_bytes());
63 bytes.extend_from_slice(&(self.close_records_stored as u64).to_le_bytes());
64 bytes.extend_from_slice(&(self.records_per_type.len() as u32).to_le_bytes());
65 for (dtype, count) in &self.records_per_type {
66 bytes.extend_from_slice(&dtype.to_le_bytes());
67 bytes.extend_from_slice(&count.to_le_bytes());
68 }
69 bytes.extend_from_slice(&(self.received_payment_count as u64).to_le_bytes());
70 bytes.extend_from_slice(&self.live_time.to_le_bytes());
71 if let Some(density) = &self.network_density {
72 bytes.push(1); bytes.extend_from_slice(density);
74 } else {
75 bytes.push(0); }
77 if let Some(size) = self.network_size {
78 bytes.push(1); bytes.extend_from_slice(&size.to_le_bytes());
80 } else {
81 bytes.push(0); }
83
84 bytes
85 }
86}