'Process::memory' returns bytes now.
[minecraft_web.git] / backend / src / minecraft_controller.rs
index 54143e8..690f3d9 100644 (file)
@@ -4,17 +4,18 @@ use chrono::{ DateTime, offset::Local };
 \r
 #[derive(Clone, Debug)]\r
 pub struct MinecraftExe {\r
-    memory: u64, // [kB].\r
+    memory: u64, // [B].\r
     load_average_5min: f64, // [%].\r
     uptime: u64, // [s].\r
     world_size: u64, // [B].\r
     active_players: Vec<String>,\r
+    version: String,\r
     last_backup: Option<SystemTime>,\r
 }\r
 \r
 impl MinecraftExe {\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
@@ -40,6 +41,10 @@ impl MinecraftExe {
         }\r
     }\r
 \r
+    pub fn format_version(&self) -> String {\r
+        self.version.clone()\r
+    }\r
+\r
     pub fn format_last_backup(&self) -> String {\r
         match self.last_backup {\r
             Some(t) => {\r
@@ -72,7 +77,7 @@ fn format_byte_size(bytes: u64, precision: usize) -> String {
 const MINECRAFT_PROCESS_NAME: &str = "java";\r
 \r
 struct StatusFromRcon {\r
-    players: Vec<String>,\r
+    players: Vec<String>\r
 }\r
 \r
 fn get_status_from_rcon(rcon_password: &str) -> StatusFromRcon {\r
@@ -140,11 +145,13 @@ pub fn get_minecraft_executable_information(world_path: &str, backup_path: &str,
 \r
         Some(\r
             MinecraftExe {\r
-                memory: process.memory() / 3, // Because the Java garbage collector ZGC reports three times more the real memory usage: https://stackoverflow.com/a/62934057/212675\r
-                load_average_5min: system.load_average().five / system.processors().len() as f64 * 100.,\r
+                // 'memory' was divided by 3 but it not necessary any more (the Java garbage collector ZGC reports three times more the real memory usage: https://stackoverflow.com/a/62934057/212675).\r
+                memory: process.memory(),\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: status_from_rcon.players,\r
+                version: process.cmd()[process.cmd().len() - 2].clone(), // TODO: Extract the version from the .jar filename.\r
                 last_backup: get_last_backup_datetime(backup_path)\r
             }\r
         )\r