fix windows build.
Gate Linux-specific imports and fields to avoid Windows dead-code/unused warnings. Ensure Linux-only proc CPU tracker is not referenced on non-Linux builds.
This commit is contained in:
parent
2e8cc24e81
commit
3ad1d52fe2
@ -4,6 +4,7 @@ use crate::gpu::collect_all_gpus;
|
|||||||
use crate::state::AppState;
|
use crate::state::AppState;
|
||||||
use crate::types::{DiskInfo, Metrics, NetworkInfo, ProcessInfo, ProcessesPayload};
|
use crate::types::{DiskInfo, Metrics, NetworkInfo, ProcessInfo, ProcessesPayload};
|
||||||
use once_cell::sync::OnceCell;
|
use once_cell::sync::OnceCell;
|
||||||
|
#[cfg(target_os = "linux")]
|
||||||
use std::collections::HashMap;
|
use std::collections::HashMap;
|
||||||
#[cfg(target_os = "linux")]
|
#[cfg(target_os = "linux")]
|
||||||
use std::fs;
|
use std::fs;
|
||||||
@ -260,12 +261,20 @@ pub async fn collect_processes_top_k(state: &AppState, k: usize) -> ProcessesPay
|
|||||||
|
|
||||||
// Compute deltas vs last sample
|
// Compute deltas vs last sample
|
||||||
let (last_total, mut last_map) = {
|
let (last_total, mut last_map) = {
|
||||||
|
#[cfg(target_os = "linux")]
|
||||||
|
{
|
||||||
let mut t = state.proc_cpu.lock().await;
|
let mut t = state.proc_cpu.lock().await;
|
||||||
let lt = t.last_total;
|
let lt = t.last_total;
|
||||||
let lm = std::mem::take(&mut t.last_per_pid);
|
let lm = std::mem::take(&mut t.last_per_pid);
|
||||||
t.last_total = total_now;
|
t.last_total = total_now;
|
||||||
t.last_per_pid = current.clone();
|
t.last_per_pid = current.clone();
|
||||||
(lt, lm)
|
(lt, lm)
|
||||||
|
}
|
||||||
|
#[cfg(not(target_os = "linux"))]
|
||||||
|
{
|
||||||
|
let _: u64 = total_now; // silence unused warning
|
||||||
|
(0u64, HashMap::new())
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
// On first run or if total delta is tiny, report zeros
|
// On first run or if total delta is tiny, report zeros
|
||||||
|
|||||||
@ -1,5 +1,6 @@
|
|||||||
//! Shared agent state: sysinfo handles and hot JSON cache.
|
//! Shared agent state: sysinfo handles and hot JSON cache.
|
||||||
|
|
||||||
|
#[cfg(target_os = "linux")]
|
||||||
use std::collections::HashMap;
|
use std::collections::HashMap;
|
||||||
use std::sync::atomic::AtomicUsize;
|
use std::sync::atomic::AtomicUsize;
|
||||||
use std::sync::Arc;
|
use std::sync::Arc;
|
||||||
@ -11,6 +12,7 @@ pub type SharedComponents = Arc<Mutex<Components>>;
|
|||||||
pub type SharedDisks = Arc<Mutex<Disks>>;
|
pub type SharedDisks = Arc<Mutex<Disks>>;
|
||||||
pub type SharedNetworks = Arc<Mutex<Networks>>;
|
pub type SharedNetworks = Arc<Mutex<Networks>>;
|
||||||
|
|
||||||
|
#[cfg(target_os = "linux")]
|
||||||
#[derive(Default)]
|
#[derive(Default)]
|
||||||
pub struct ProcCpuTracker {
|
pub struct ProcCpuTracker {
|
||||||
pub last_total: u64,
|
pub last_total: u64,
|
||||||
@ -25,6 +27,7 @@ pub struct AppState {
|
|||||||
pub networks: SharedNetworks,
|
pub networks: SharedNetworks,
|
||||||
|
|
||||||
// For correct per-process CPU% using /proc deltas (Linux only path uses this tracker)
|
// For correct per-process CPU% using /proc deltas (Linux only path uses this tracker)
|
||||||
|
#[cfg(target_os = "linux")]
|
||||||
pub proc_cpu: Arc<Mutex<ProcCpuTracker>>,
|
pub proc_cpu: Arc<Mutex<ProcCpuTracker>>,
|
||||||
|
|
||||||
// Connection tracking (to allow future idle sleeps if desired)
|
// Connection tracking (to allow future idle sleeps if desired)
|
||||||
@ -45,6 +48,7 @@ impl AppState {
|
|||||||
components: Arc::new(Mutex::new(components)),
|
components: Arc::new(Mutex::new(components)),
|
||||||
disks: Arc::new(Mutex::new(disks)),
|
disks: Arc::new(Mutex::new(disks)),
|
||||||
networks: Arc::new(Mutex::new(networks)),
|
networks: Arc::new(Mutex::new(networks)),
|
||||||
|
#[cfg(target_os = "linux")]
|
||||||
proc_cpu: Arc::new(Mutex::new(ProcCpuTracker::default())),
|
proc_cpu: Arc::new(Mutex::new(ProcCpuTracker::default())),
|
||||||
client_count: Arc::new(AtomicUsize::new(0)),
|
client_count: Arc::new(AtomicUsize::new(0)),
|
||||||
auth_token: std::env::var("SOCKTOP_TOKEN")
|
auth_token: std::env::var("SOCKTOP_TOKEN")
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user