use crate::stats::ring_buffer::RingBuffer;
use std::collections::HashMap;
use std::sync::{Arc, Mutex};
pub struct TargetState {
pub display_name: String,
pub resolved_addr: String,
pub buffer: RingBuffer,
pub seq: u64,
pub last_rtt_us: Option<u64>,
pub last_ip: Option<String>,
}
impl TargetState {
pub fn new(display_name: &str, resolved_addr: &str, window: usize) -> Self {
Self {
display_name: display_name.to_string(),
resolved_addr: resolved_addr.to_string(),
buffer: RingBuffer::new(window),
seq: 0,
last_rtt_us: None,
last_ip: None,
}
}
pub fn new_hop(window: usize) -> Self {
Self {
display_name: String::new(),
resolved_addr: String::new(),
buffer: RingBuffer::new(window),
seq: 0,
last_rtt_us: None,
last_ip: None,
}
}
}
pub type AppState = Arc<Mutex<HashMap<String, TargetState>>>;
pub fn new_app_state() -> AppState {
Arc::new(Mutex::new(HashMap::new()))
}