fix windows build.
Some checks failed
CI / build (ubuntu-latest) (push) Has been cancelled
CI / build (windows-latest) (push) Has been cancelled

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:
jasonwitty 2025-08-16 17:42:18 -07:00
parent 2e8cc24e81
commit 3ad1d52fe2
2 changed files with 19 additions and 6 deletions

View File

@ -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

View File

@ -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")