diff options
author | Clement Tsang <34804052+ClementTsang@users.noreply.github.com> | 2023-06-10 01:44:15 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-06-10 01:44:15 -0400 |
commit | 13a8e5bf0e0453a03e94cdc05cbbfd8503efa915 (patch) | |
tree | 3286c2afeca9979d6a4c61dbcfe4a2bd94b1285c /src/app/data_harvester/processes/freebsd.rs | |
parent | 6b421b48eaf0edfece3d9a8ad663d529e84c5a9b (diff) |
refactor: redo how we do get processes between different OSes (#1197)
* refactor: redo how we do some processes between different OSes
* cleanup
* more cleanup
* windows
* freebsd
* clean up linux more, fix broken FreeBSD import
* some more cleanup to remove some big imports
Diffstat (limited to 'src/app/data_harvester/processes/freebsd.rs')
-rw-r--r-- | src/app/data_harvester/processes/freebsd.rs | 59 |
1 files changed, 28 insertions, 31 deletions
diff --git a/src/app/data_harvester/processes/freebsd.rs b/src/app/data_harvester/processes/freebsd.rs index 43c373e0..0d92d873 100644 --- a/src/app/data_harvester/processes/freebsd.rs +++ b/src/app/data_harvester/processes/freebsd.rs @@ -1,14 +1,13 @@ //! Process data collection for FreeBSD. Uses sysinfo. use std::io; +use std::process::Command; use hashbrown::HashMap; use serde::{Deserialize, Deserializer}; -use sysinfo::System; -use super::ProcessHarvest; -use crate::data_harvester::deserialize_xo; -use crate::data_harvester::processes::UserTable; +use crate::data_harvester::{deserialize_xo, processes::UnixProcessExt}; +use crate::Pid; #[derive(Deserialize, Debug, Default)] #[serde(rename_all = "kebab-case")] @@ -25,36 +24,34 @@ struct ProcessRow { percent_cpu: f64, } -pub fn get_process_data( - sys: &System, use_current_cpu_total: bool, unnormalized_cpu: bool, total_memory: u64, - user_table: &mut UserTable, -) -> crate::utils::error::Result<Vec<ProcessHarvest>> { - super::macos_freebsd::get_process_data( - sys, - use_current_cpu_total, - unnormalized_cpu, - total_memory, - user_table, - get_freebsd_process_cpu_usage, - ) -} +pub(crate) struct FreeBSDProcessExt; -fn get_freebsd_process_cpu_usage(pids: &[i32]) -> io::Result<HashMap<i32, f64>> { - if pids.is_empty() { - return Ok(HashMap::new()); +impl UnixProcessExt for FreeBSDProcessExt { + #[inline] + fn has_backup_proc_cpu_fn() -> bool { + true } - let output = std::process::Command::new("ps") - .args(["--libxo", "json", "-o", "pid,pcpu", "-p"]) - .args(pids.iter().map(i32::to_string)) - .output()?; - deserialize_xo("process-information", &output.stdout).map(|process_info: ProcessInformation| { - process_info - .process - .into_iter() - .map(|row| (row.pid, row.percent_cpu)) - .collect() - }) + fn backup_proc_cpu(pids: &[Pid]) -> io::Result<HashMap<Pid, f64>> { + if pids.is_empty() { + return Ok(HashMap::new()); + } + + let output = Command::new("ps") + .args(["--libxo", "json", "-o", "pid,pcpu", "-p"]) + .args(pids.iter().map(i32::to_string)) + .output()?; + + deserialize_xo("process-information", &output.stdout).map( + |process_info: ProcessInformation| { + process_info + .process + .into_iter() + .map(|row| (row.pid, row.percent_cpu)) + .collect() + }, + ) + } } fn pid<'de, D>(deserializer: D) -> Result<i32, D::Error> |