use tokio::time::Instant;

use super::PeerKeyLocation;

#[derive(Clone, Debug)]
pub struct Connection {
    pub(crate) location: PeerKeyLocation,
    /// Timestamp when this connection was established.
    /// Used to calculate connection duration for disconnect events.
    pub(crate) connected_at: Instant,
}

impl Connection {
    /// Creates a new connection with the current timestamp.
    pub fn new(location: PeerKeyLocation) -> Self {
        Self {
            location,
            connected_at: Instant::now(),
        }
    }

    /// Returns the duration since the connection was established in milliseconds.
    pub fn duration_ms(&self) -> u64 {
        self.connected_at.elapsed().as_millis() as u64
    }
}
