From 8c2e8da2b0252444b087a15134b51d2acbafcbf6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E1=B4=80=E1=B4=8D=E1=B4=9B=E1=B4=8F=E1=B4=80=E1=B4=87?= =?UTF-8?q?=CA=80?= Date: Tue, 9 Dec 2025 12:39:49 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E8=8E=B7=E5=8F=96=E7=A3=81=E7=9B=98?= =?UTF-8?q?=E7=A9=BA=E9=97=B4=E6=97=B6=E7=AD=9B=E9=80=89=20SSD/HDD=20?= =?UTF-8?q?=E5=B9=B6=E6=A0=B9=E6=8D=AE=20name=20=E5=8E=BB=E9=87=8D?= =?UTF-8?q?=EF=BC=8C=E9=98=B2=E6=AD=A2=E9=87=8D=E5=A4=8D=E8=AE=A1=E7=AE=97?= =?UTF-8?q?=20(#563)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- crates/bili_sync/src/api/routes/ws/mod.rs | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/crates/bili_sync/src/api/routes/ws/mod.rs b/crates/bili_sync/src/api/routes/ws/mod.rs index 2e5b9ef..53e9780 100644 --- a/crates/bili_sync/src/api/routes/ws/mod.rs +++ b/crates/bili_sync/src/api/routes/ws/mod.rs @@ -11,12 +11,13 @@ use axum::{Extension, Router}; use dashmap::DashMap; use futures::stream::{SplitSink, SplitStream}; use futures::{SinkExt, StreamExt, future}; +use itertools::Itertools; pub use log_helper::{LogHelper, MAX_HISTORY_LOGS}; use parking_lot::RwLock; use serde::{Deserialize, Serialize}; use sysinfo::{ - CpuRefreshKind, DiskRefreshKind, Disks, MemoryRefreshKind, Pid, ProcessRefreshKind, ProcessesToUpdate, System, - get_current_pid, + CpuRefreshKind, DiskKind, DiskRefreshKind, Disks, MemoryRefreshKind, Pid, ProcessRefreshKind, ProcessesToUpdate, + System, get_current_pid, }; use tokio::sync::mpsc; use tokio::{pin, select}; @@ -245,14 +246,23 @@ impl WebSocketHandler { Some(p) => p, None => continue, }; + let (available, total) = disks + .iter() + .filter(|d| !matches!(d.kind(), DiskKind::Unknown(_))) + .unique_by(|d| d.name()) + .fold((0, 0), |(mut available, mut total), d| { + available += d.available_space(); + total += d.total_space(); + (available, total) + }); let sys_info = SysInfo { total_memory: system.total_memory(), used_memory: system.used_memory(), process_memory: process.memory(), used_cpu: system.global_cpu_usage(), process_cpu: process.cpu_usage() / system.cpus().len() as f32, - total_disk: disks.iter().map(|d| d.total_space()).sum(), - available_disk: disks.iter().map(|d| d.available_space()).sum(), + total_disk: total, + available_disk: available, }; if tx.blocking_send(sys_info).is_err() { break; @@ -316,6 +326,6 @@ impl SysInfoExt for System { impl SysInfoExt for Disks { fn refresh_needed(&mut self, _self_pid: Pid) { - self.refresh_specifics(false, DiskRefreshKind::nothing().with_storage()); + self.refresh_specifics(true, DiskRefreshKind::nothing().with_storage().with_kind()); } }