all functions established; needed to remove orphan functions
This commit is contained in:
@@ -1,7 +1,7 @@
|
|||||||
use std::time::Duration;
|
use std::time::Duration;
|
||||||
|
|
||||||
use crate::hardware::HardwareInfo;
|
use crate::hardware::HardwareInfo;
|
||||||
use crate::models::{HardwareDto, HeartbeatDto, IdResponse, MetricDto, RegistrationDto};
|
use crate::models::{HeartbeatDto, IdResponse, MetricDto, RegistrationDto};
|
||||||
use anyhow::Result;
|
use anyhow::Result;
|
||||||
use reqwest::{Client, StatusCode};
|
use reqwest::{Client, StatusCode};
|
||||||
use std::error::Error;
|
use std::error::Error;
|
||||||
|
@@ -19,7 +19,7 @@ pub async fn get_memory_info() -> Result<MemoryInfo> {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn get_memory_usage(sys: &mut System) -> f64 {
|
pub fn _get_memory_usage(sys: &mut System) -> f64 {
|
||||||
sys.refresh_memory();
|
sys.refresh_memory();
|
||||||
(sys.used_memory() as f64 / sys.total_memory() as f64) * 100.0
|
(sys.used_memory() as f64 / sys.total_memory() as f64) * 100.0
|
||||||
}
|
}
|
||||||
|
@@ -5,7 +5,7 @@ mod cpu;
|
|||||||
mod disk;
|
mod disk;
|
||||||
mod gpu;
|
mod gpu;
|
||||||
mod memory;
|
mod memory;
|
||||||
mod network;
|
pub(crate) mod network;
|
||||||
|
|
||||||
pub use cpu::get_cpu_info;
|
pub use cpu::get_cpu_info;
|
||||||
pub use disk::get_disk_info;
|
pub use disk::get_disk_info;
|
||||||
@@ -20,16 +20,19 @@ pub struct HardwareInfo {
|
|||||||
pub memory: memory::MemoryInfo,
|
pub memory: memory::MemoryInfo,
|
||||||
pub disk: disk::DiskInfo,
|
pub disk: disk::DiskInfo,
|
||||||
pub network: network::NetworkInfo,
|
pub network: network::NetworkInfo,
|
||||||
|
network_monitor: network::NetworkMonitor,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl HardwareInfo {
|
impl HardwareInfo {
|
||||||
pub async fn collect() -> anyhow::Result<Self, Box<dyn Error>> {
|
pub async fn collect() -> anyhow::Result<Self, Box<dyn Error>> {
|
||||||
|
let mut network_monitor = network::NetworkMonitor::new();
|
||||||
Ok(Self {
|
Ok(Self {
|
||||||
cpu: get_cpu_info().await?,
|
cpu: get_cpu_info().await?,
|
||||||
gpu: get_gpu_info().await?,
|
gpu: get_gpu_info().await?,
|
||||||
memory: get_memory_info().await?,
|
memory: get_memory_info().await?,
|
||||||
disk: get_disk_info().await?,
|
disk: get_disk_info().await?,
|
||||||
network: get_network_info().await?,
|
network: get_network_info(&mut network_monitor).await?,
|
||||||
|
network_monitor,
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -5,10 +5,11 @@ use std::time::Instant;
|
|||||||
#[derive(Debug)]
|
#[derive(Debug)]
|
||||||
pub struct NetworkInfo {
|
pub struct NetworkInfo {
|
||||||
pub interfaces: Option<Vec<String>>,
|
pub interfaces: Option<Vec<String>>,
|
||||||
pub rx_bytes: Option<f64>,
|
pub rx_rate: Option<f64>,
|
||||||
pub tx_bytes: Option<f64>,
|
pub tx_rate: Option<f64>,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[derive(Debug)]
|
||||||
pub struct NetworkMonitor {
|
pub struct NetworkMonitor {
|
||||||
prev_rx: u64,
|
prev_rx: u64,
|
||||||
prev_tx: u64,
|
prev_tx: u64,
|
||||||
@@ -24,7 +25,7 @@ impl NetworkMonitor {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn get_usage(&mut self) -> Result<(f64, f64), Box<dyn Error>> {
|
pub fn update_usage(&mut self) -> Result<(f64, f64), Box<dyn Error>> {
|
||||||
let (current_rx, current_tx) = get_network_bytes()?;
|
let (current_rx, current_tx) = get_network_bytes()?;
|
||||||
let elapsed = self.last_update.elapsed().as_secs_f64();
|
let elapsed = self.last_update.elapsed().as_secs_f64();
|
||||||
self.last_update = Instant::now();
|
self.last_update = Instant::now();
|
||||||
@@ -48,12 +49,12 @@ impl NetworkMonitor {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub async fn get_network_info() -> Result<NetworkInfo, Box<dyn Error>> {
|
pub async fn get_network_info(monitor: &mut NetworkMonitor) -> Result<NetworkInfo, Box<dyn Error>> {
|
||||||
let (rx, tx) = get_network_bytes()?;
|
let (rx_rate, tx_rate) = monitor.update_usage()?;
|
||||||
Ok(NetworkInfo {
|
Ok(NetworkInfo {
|
||||||
interfaces: Some(get_network_interfaces()),
|
interfaces: Some(get_network_interfaces()),
|
||||||
rx_bytes: Some(rx as f64),
|
rx_rate: Some(rx_rate as f64),
|
||||||
tx_bytes: Some(tx as f64),
|
tx_rate: Some(tx_rate as f64),
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -2,10 +2,12 @@ use std::error::Error;
|
|||||||
use std::time::Duration;
|
use std::time::Duration;
|
||||||
|
|
||||||
use crate::api;
|
use crate::api;
|
||||||
|
use crate::hardware::network::NetworkMonitor;
|
||||||
use crate::hardware::HardwareInfo;
|
use crate::hardware::HardwareInfo;
|
||||||
use crate::models::MetricDto;
|
use crate::models::MetricDto;
|
||||||
|
|
||||||
pub struct Collector {
|
pub struct Collector {
|
||||||
|
network_monitor: NetworkMonitor,
|
||||||
server_id: i32,
|
server_id: i32,
|
||||||
ip_address: String,
|
ip_address: String,
|
||||||
}
|
}
|
||||||
@@ -13,6 +15,7 @@ pub struct Collector {
|
|||||||
impl Collector {
|
impl Collector {
|
||||||
pub fn new(server_id: i32, ip_address: String) -> Self {
|
pub fn new(server_id: i32, ip_address: String) -> Self {
|
||||||
Self {
|
Self {
|
||||||
|
network_monitor: NetworkMonitor::new(),
|
||||||
server_id,
|
server_id,
|
||||||
ip_address,
|
ip_address,
|
||||||
}
|
}
|
||||||
@@ -28,6 +31,8 @@ impl Collector {
|
|||||||
|
|
||||||
pub async fn collect(&mut self) -> Result<MetricDto, Box<dyn Error>> {
|
pub async fn collect(&mut self) -> Result<MetricDto, Box<dyn Error>> {
|
||||||
let hardware = HardwareInfo::collect().await?;
|
let hardware = HardwareInfo::collect().await?;
|
||||||
|
// Collect network usage
|
||||||
|
let (_, _) = self.network_monitor.update_usage().unwrap_or((0.0, 0.0));
|
||||||
|
|
||||||
Ok(MetricDto {
|
Ok(MetricDto {
|
||||||
server_id: self.server_id,
|
server_id: self.server_id,
|
||||||
@@ -43,8 +48,8 @@ impl Collector {
|
|||||||
disk_size: hardware.disk.total.unwrap_or_default(),
|
disk_size: hardware.disk.total.unwrap_or_default(),
|
||||||
disk_usage: hardware.disk.used.unwrap_or_default(),
|
disk_usage: hardware.disk.used.unwrap_or_default(),
|
||||||
disk_temp: 0.0, // not supported
|
disk_temp: 0.0, // not supported
|
||||||
net_rx: hardware.network.rx_bytes.unwrap_or_default(),
|
net_rx: hardware.network.rx_rate.unwrap_or_default(),
|
||||||
net_tx: hardware.network.tx_bytes.unwrap_or_default(),
|
net_tx: hardware.network.tx_rate.unwrap_or_default(),
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -1,5 +1,4 @@
|
|||||||
use serde::{Deserialize, Serialize};
|
use serde::{Deserialize, Serialize};
|
||||||
use tokio::time::Instant;
|
|
||||||
|
|
||||||
// Data structures matching the C# DTOs
|
// Data structures matching the C# DTOs
|
||||||
#[derive(Serialize, Debug)]
|
#[derive(Serialize, Debug)]
|
||||||
|
Reference in New Issue
Block a user