Skip to main content

ruvector_dag/qudag/
network.rs

1//! Network Configuration and Status
2
3#[derive(Debug, Clone)]
4pub struct NetworkConfig {
5    pub endpoints: Vec<String>,
6    pub min_peers: usize,
7    pub max_peers: usize,
8    pub heartbeat_interval_ms: u64,
9}
10
11impl Default for NetworkConfig {
12    fn default() -> Self {
13        Self {
14            endpoints: vec!["https://qudag.network:8443".to_string()],
15            min_peers: 3,
16            max_peers: 50,
17            heartbeat_interval_ms: 30000,
18        }
19    }
20}
21
22#[derive(Debug, Clone)]
23pub struct NetworkStatus {
24    pub connected: bool,
25    pub peer_count: usize,
26    pub latest_round: u64,
27    pub sync_status: SyncStatus,
28    pub network_version: String,
29}
30
31#[derive(Debug, Clone, Copy, PartialEq)]
32pub enum SyncStatus {
33    Synced,
34    Syncing,
35    Behind,
36    Disconnected,
37}
38
39impl std::fmt::Display for SyncStatus {
40    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
41        match self {
42            SyncStatus::Synced => write!(f, "synced"),
43            SyncStatus::Syncing => write!(f, "syncing"),
44            SyncStatus::Behind => write!(f, "behind"),
45            SyncStatus::Disconnected => write!(f, "disconnected"),
46        }
47    }
48}