diff options
author | Clement Tsang <34804052+ClementTsang@users.noreply.github.com> | 2023-06-11 05:35:16 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-06-11 01:35:16 -0400 |
commit | 2a354f772f827ae81086af058b23fd9c31b61746 (patch) | |
tree | 08f711a3f33baed08211414d58412d7865919815 /src/app/data_harvester | |
parent | 2ba7394ac203988e56eaecc508bb5c75d93295d3 (diff) |
other: remaining changes needed to get android to build (#1199)
* other: remaining changes needed to get android to build
* update changelog
* simplify disk os-specific code
Diffstat (limited to 'src/app/data_harvester')
-rw-r--r-- | src/app/data_harvester/disks.rs | 4 | ||||
-rw-r--r-- | src/app/data_harvester/disks/freebsd.rs | 9 | ||||
-rw-r--r-- | src/app/data_harvester/disks/other.rs | 53 | ||||
-rw-r--r-- | src/app/data_harvester/disks/unix.rs | 8 | ||||
-rw-r--r-- | src/app/data_harvester/disks/windows.rs | 19 |
5 files changed, 75 insertions, 18 deletions
diff --git a/src/app/data_harvester/disks.rs b/src/app/data_harvester/disks.rs index 6f98d3f2..ddb07073 100644 --- a/src/app/data_harvester/disks.rs +++ b/src/app/data_harvester/disks.rs @@ -18,8 +18,10 @@ cfg_if! { } else if #[cfg(target_os = "macos")] { mod unix; pub(crate) use self::unix::*; + } else { + mod other; + pub(crate) use self::other::*; } - // TODO: Add dummy impls here for other OSes? } #[derive(Debug, Clone, Default)] diff --git a/src/app/data_harvester/disks/freebsd.rs b/src/app/data_harvester/disks/freebsd.rs index 5755fc75..aa127ef6 100644 --- a/src/app/data_harvester/disks/freebsd.rs +++ b/src/app/data_harvester/disks/freebsd.rs @@ -5,7 +5,8 @@ use std::io; use serde::Deserialize; use super::{keep_disk_entry, DiskHarvest, IoHarvest}; -use crate::{app::Filter, data_harvester::deserialize_xo, utils::error}; + +use crate::{app::data_harvester::DataCollector, data_harvester::deserialize_xo, utils::error}; #[derive(Deserialize, Debug, Default)] #[serde(rename_all = "kebab-case")] @@ -35,9 +36,9 @@ pub fn get_io_usage() -> error::Result<IoHarvest> { Ok(io_harvest) } -pub fn get_disk_usage( - disk_filter: &Option<Filter>, mount_filter: &Option<Filter>, -) -> error::Result<Vec<DiskHarvest>> { +pub fn get_disk_usage(collector: &DataCollector) -> error::Result<Vec<DiskHarvest>> { + let disk_filter = &collector.filters.disk_filter; + let mount_filter = &collector.filters.mount_filter; let vec_disks: Vec<DiskHarvest> = get_disk_info().map(|storage_system_information| { storage_system_information .filesystem diff --git a/src/app/data_harvester/disks/other.rs b/src/app/data_harvester/disks/other.rs new file mode 100644 index 00000000..2cd1e2e3 --- /dev/null +++ b/src/app/data_harvester/disks/other.rs @@ -0,0 +1,53 @@ +//! Fallback disk info using sysinfo. + +use sysinfo::{DiskExt, System, SystemExt}; + +use crate::app::data_harvester::DataCollector; + +use super::{keep_disk_entry, DiskHarvest}; + +pub(crate) fn get_disk_usage(collector: &DataCollector) -> anyhow::Result<Vec<DiskHarvest>> { + let disks = collector.sys.disks(); + let disk_filter = &collector.filters.disk_filter; + let mount_filter = &collector.filters.mount_filter; + + Ok(disks + .iter() + .filter_map(|disk| { + let name = { + let name = disk.name(); + + if name.is_empty() { + "No Name".to_string() + } else { + name.to_os_string() + .into_string() + .unwrap_or_else(|_| "Name Unavailable".to_string()) + } + }; + + let mount_point = disk + .mount_point() + .as_os_str() + .to_os_string() + .into_string() + .unwrap_or_else(|_| "Mount Unavailable".to_string()); + + if keep_disk_entry(&name, &mount_point, disk_filter, mount_filter) { + let free_space = disk.available_space(); + let total_space = disk.total_space(); + let used_space = total_space - free_space; + + Some(DiskHarvest { + name, + mount_point, + free_space: Some(free_space), + used_space: Some(used_space), + total_space: Some(total_space), + }) + } else { + None + } + }) + .collect()) +} diff --git a/src/app/data_harvester/disks/unix.rs b/src/app/data_harvester/disks/unix.rs index 93668b7c..e8ebaeeb 100644 --- a/src/app/data_harvester/disks/unix.rs +++ b/src/app/data_harvester/disks/unix.rs @@ -25,12 +25,12 @@ cfg_if::cfg_if! { } use super::{keep_disk_entry, DiskHarvest}; -use crate::app::Filter; +use crate::app::data_harvester::DataCollector; /// Returns the disk usage of the mounted (and for now, physical) disks. -pub fn get_disk_usage( - disk_filter: &Option<Filter>, mount_filter: &Option<Filter>, -) -> anyhow::Result<Vec<DiskHarvest>> { +pub fn get_disk_usage(collector: &DataCollector) -> anyhow::Result<Vec<DiskHarvest>> { + let disk_filter = &collector.filters.disk_filter; + let mount_filter = &collector.filters.mount_filter; let mut vec_disks: Vec<DiskHarvest> = Vec::new(); for partition in physical_partitions()? { diff --git a/src/app/data_harvester/disks/windows.rs b/src/app/data_harvester/disks/windows.rs index b5708494..2dfd59dc 100644 --- a/src/app/data_harvester/disks/windows.rs +++ b/src/app/data_harvester/disks/windows.rs @@ -1,11 +1,11 @@ //! Disk stats via sysinfo. use itertools::Itertools; -use sysinfo::{DiskExt, System, SystemExt}; +use sysinfo::{DiskExt, SystemExt}; use super::{keep_disk_entry, DiskHarvest}; -use crate::app::data_harvester::disks::IoCounters; -use crate::app::filter::Filter; + +use crate::app::data_harvester::{disks::IoCounters, DataCollector}; mod bindings; use bindings::*; @@ -26,11 +26,12 @@ pub(crate) fn io_stats() -> anyhow::Result<Vec<anyhow::Result<IoCounters>>> { .collect::<Vec<_>>()) } -pub(crate) fn get_disk_usage( - sys: &System, disk_filter: &Option<Filter>, mount_filter: &Option<Filter>, -) -> Vec<DiskHarvest> { - let disks = sys.disks(); - disks +pub(crate) fn get_disk_usage(collector: &DataCollector) -> anyhow::Result<Vec<DiskHarvest>> { + let disks = collector.sys.disks(); + let disk_filter = &collector.filters.disk_filter; + let mount_filter = &collector.filters.mount_filter; + + Ok(disks .iter() .filter_map(|disk| { let name = { @@ -71,5 +72,5 @@ pub(crate) fn get_disk_usage( None } }) - .collect() + .collect()) } |