-use sysinfo::{ ProcessExt, SystemExt };\r
\r
use std::{ fs, time::SystemTime };\r
-\r
+use sysinfo::{ ProcessExt, SystemExt };\r
use chrono::{ DateTime, offset::Local };\r
\r
#[cfg(target_os = "linux")]\r
\r
#[derive(Clone, Debug)]\r
pub struct ValheimExe {\r
- memory: u64, // [kB].\r
+ memory: u64, // [B].\r
load_average_5min: f64, // [%].\r
uptime: u64, // [s].\r
world_size: u64, // [B].\r
\r
impl ValheimExe {\r
pub fn format_memory(&self) -> String {\r
- format_byte_size(self.memory * 1024, 2)\r
+ format_byte_size(self.memory, 2)\r
}\r
\r
pub fn format_load_average(&self) -> String {\r
}\r
\r
pub fn format_active_players(&self) -> String {\r
+ /* Commented because the player list isn't correct (the number is).\r
if self.active_players.len() == 0 {\r
String::from("<none>")\r
} else {\r
self.active_players.join(", ")\r
- }\r
+ }*/\r
+ self.active_players.len().to_string()\r
}\r
\r
pub fn format_last_backup(&self) -> String {\r
}\r
\r
const VALHEIM_PROCESS_NAME: &str = "valheim_server";\r
+\r
+#[cfg(target_os = "linux")]\r
const STRING_BEFORE_CHARACTER_NAME: &str = "Got character ZDOID from";\r
+\r
+#[cfg(target_os = "linux")]\r
const STRING_BEFORE_NB_OF_CONNECTIONS: &str = "Connections";\r
\r
+// It doesn't work for the moment, it only scan the connection event and do not treat disconnections.\r
#[cfg(target_os = "linux")]\r
fn get_active_players() -> Vec<String> {\r
let mut journal =\r
pub fn get_valheim_executable_information(world_path: &str, backup_path: &str) -> Option<ValheimExe> {\r
let mut system = sysinfo::System::new_all();\r
system.refresh_system();\r
- let processes = system.get_process_by_name(VALHEIM_PROCESS_NAME);\r
+ let mut processes = system.processes_by_name(VALHEIM_PROCESS_NAME);\r
\r
- if processes.len() >= 1 {\r
- let process = processes.first().unwrap();\r
+ if let Some(process) = processes.next() {\r
\r
let world_size = match std::fs::metadata(world_path) { Ok(f) => f.len(), Err(_) => 0u64 };\r
\r
Some(\r
ValheimExe {\r
memory: process.memory(),\r
- load_average_5min: system.get_load_average().five / system.get_processors().len() as f64 * 100.,\r
+ load_average_5min: system.load_average().five / system.cpus().len() as f64 * 100.,\r
uptime: std::time::SystemTime::now().duration_since(std::time::UNIX_EPOCH).unwrap().as_secs() - process.start_time(),\r
world_size,\r
active_players: get_active_players(),\r