simple_server_status 0.2.4

Simple cpu, ram, net, and tcp status for Linux servers
Documentation
use std::fs::File;
use std::io;
use std::io::{BufRead, BufReader};

#[derive(Debug, Default)]
pub struct ConntrackStatus {
    count: Option<usize>,
}

impl ConntrackStatus {
    pub fn update(&mut self) -> io::Result<()> {
        self.count = None;
        self.count = Some(Self::sample()?);
        Ok(())
    }

    fn sample() -> io::Result<usize> {
        let proc_stat = File::open("/proc/net/nf_conntrack")?;
        let reader = BufReader::new(proc_stat);
        let mut ret = 0usize;
        for line in reader.lines() {
            line?;
            ret = ret.saturating_add(1);
        }
        Ok(ret)
    }

    pub fn sessions(&self) -> Option<usize> {
        self.count
    }
}

#[cfg(test)]
mod tests {
    use crate::SimpleServerStatus;

    #[test]
    fn conntrack() {
        let mut status = SimpleServerStatus::default();

        assert_eq!(status.conntrack_sessions(), None);

        status.update().unwrap();

        let connections = status.conntrack_sessions().unwrap();
        println!("conntrack_sessions: {}", connections);
    }
}