Modified errors in data_collection portion to use the newer error type added earlier on.
This commit is contained in:
parent
a5306c6692
commit
266c281024
6
TODO.md
6
TODO.md
|
@ -12,12 +12,14 @@
|
||||||
|
|
||||||
* ~~FIX PROCESSES AHHHHHH~~
|
* ~~FIX PROCESSES AHHHHHH~~
|
||||||
|
|
||||||
* Scrolling in at least processes
|
~~* Scrolling in at least processes~~
|
||||||
|
|
||||||
* Keybindings
|
* Keybindings
|
||||||
|
|
||||||
## After making public
|
## After making public
|
||||||
|
|
||||||
|
* Tests
|
||||||
|
|
||||||
* Mouse + key events conflict? Make it so that some events don't clog up the loop if they are not valid keys!
|
* Mouse + key events conflict? Make it so that some events don't clog up the loop if they are not valid keys!
|
||||||
|
|
||||||
* Header should be clear on current sorting direction!
|
* Header should be clear on current sorting direction!
|
||||||
|
@ -28,7 +30,7 @@
|
||||||
|
|
||||||
* ~~Add custom error because it's really messy~~ Done, but need to implement across rest of app!
|
* ~~Add custom error because it's really messy~~ Done, but need to implement across rest of app!
|
||||||
|
|
||||||
* Remove any ``unwrap()``, ensure no crashing!
|
* Remove any ``unwrap()``, ensure no crashing! Might have to use this: <https://doc.rust-lang.org/std/panic/fn.catch_unwind.html>
|
||||||
|
|
||||||
* Scrolling event in lists
|
* Scrolling event in lists
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,8 @@
|
||||||
pub mod data_collection;
|
pub mod data_collection;
|
||||||
use data_collection::{processes, temperature};
|
use data_collection::{processes, temperature};
|
||||||
|
|
||||||
|
mod process_killer;
|
||||||
|
|
||||||
#[allow(dead_code)]
|
#[allow(dead_code)]
|
||||||
// Probably only use the list elements...
|
// Probably only use the list elements...
|
||||||
pub enum ApplicationPosition {
|
pub enum ApplicationPosition {
|
||||||
|
|
|
@ -10,13 +10,13 @@ pub mod network;
|
||||||
pub mod processes;
|
pub mod processes;
|
||||||
pub mod temperature;
|
pub mod temperature;
|
||||||
|
|
||||||
fn set_if_valid<T : std::clone::Clone>(result : &Result<T, heim::Error>, value_to_set : &mut T) {
|
fn set_if_valid<T : std::clone::Clone>(result : &Result<T, crate::utils::error::RustopError>, value_to_set : &mut T) {
|
||||||
if let Ok(result) = result {
|
if let Ok(result) = result {
|
||||||
*value_to_set = (*result).clone();
|
*value_to_set = (*result).clone();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn push_if_valid<T : std::clone::Clone>(result : &Result<T, heim::Error>, vector_to_push : &mut Vec<T>) {
|
fn push_if_valid<T : std::clone::Clone>(result : &Result<T, crate::utils::error::RustopError>, vector_to_push : &mut Vec<T>) {
|
||||||
if let Ok(result) = result {
|
if let Ok(result) = result {
|
||||||
vector_to_push.push(result.clone());
|
vector_to_push.push(result.clone());
|
||||||
}
|
}
|
||||||
|
|
|
@ -13,7 +13,7 @@ pub struct CPUPackage {
|
||||||
pub instant : Instant,
|
pub instant : Instant,
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn get_cpu_data_list(sys : &System) -> Result<CPUPackage, heim::Error> {
|
pub fn get_cpu_data_list(sys : &System) -> crate::utils::error::Result<CPUPackage> {
|
||||||
let cpu_data = sys.get_processor_list();
|
let cpu_data = sys.get_processor_list();
|
||||||
let mut cpu_vec = Vec::new();
|
let mut cpu_vec = Vec::new();
|
||||||
|
|
||||||
|
|
|
@ -23,8 +23,7 @@ pub struct IOPackage {
|
||||||
pub instant : Instant,
|
pub instant : Instant,
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO: This is total --- we have to change the calculation to PER SECOND!
|
pub async fn get_io_usage_list(get_physical : bool) -> crate::utils::error::Result<IOPackage> {
|
||||||
pub async fn get_io_usage_list(get_physical : bool) -> Result<IOPackage, heim::Error> {
|
|
||||||
let mut io_hash : std::collections::HashMap<String, IOData> = std::collections::HashMap::new();
|
let mut io_hash : std::collections::HashMap<String, IOData> = std::collections::HashMap::new();
|
||||||
if get_physical {
|
if get_physical {
|
||||||
let mut physical_counter_stream = heim::disk::io_counters_physical();
|
let mut physical_counter_stream = heim::disk::io_counters_physical();
|
||||||
|
@ -63,7 +62,7 @@ pub async fn get_io_usage_list(get_physical : bool) -> Result<IOPackage, heim::E
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
pub async fn get_disk_usage_list() -> Result<Vec<DiskData>, heim::Error> {
|
pub async fn get_disk_usage_list() -> crate::utils::error::Result<Vec<DiskData>> {
|
||||||
let mut vec_disks : Vec<DiskData> = Vec::new();
|
let mut vec_disks : Vec<DiskData> = Vec::new();
|
||||||
let mut partitions_stream = heim::disk::partitions_physical();
|
let mut partitions_stream = heim::disk::partitions_physical();
|
||||||
|
|
||||||
|
|
|
@ -8,7 +8,7 @@ pub struct MemData {
|
||||||
pub instant : Instant,
|
pub instant : Instant,
|
||||||
}
|
}
|
||||||
|
|
||||||
pub async fn get_mem_data_list() -> Result<MemData, heim::Error> {
|
pub async fn get_mem_data_list() -> crate::utils::error::Result<MemData> {
|
||||||
let memory = heim::memory::memory().await?;
|
let memory = heim::memory::memory().await?;
|
||||||
|
|
||||||
Ok(MemData {
|
Ok(MemData {
|
||||||
|
@ -18,7 +18,7 @@ pub async fn get_mem_data_list() -> Result<MemData, heim::Error> {
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
pub async fn get_swap_data_list() -> Result<MemData, heim::Error> {
|
pub async fn get_swap_data_list() -> crate::utils::error::Result<MemData> {
|
||||||
let memory = heim::memory::swap().await?;
|
let memory = heim::memory::swap().await?;
|
||||||
|
|
||||||
Ok(MemData {
|
Ok(MemData {
|
||||||
|
|
|
@ -11,7 +11,7 @@ pub struct NetworkData {
|
||||||
pub instant : Instant,
|
pub instant : Instant,
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn get_network_data(sys : &System) -> Result<NetworkData, heim::Error> {
|
pub fn get_network_data(sys : &System) -> crate::utils::error::Result<NetworkData> {
|
||||||
let network_data = sys.get_network();
|
let network_data = sys.get_network();
|
||||||
Ok(NetworkData {
|
Ok(NetworkData {
|
||||||
rx : network_data.get_income(),
|
rx : network_data.get_income(),
|
||||||
|
|
|
@ -171,16 +171,13 @@ fn convert_ps(process : &str, cpu_usage_percentage : f64, prev_pid_stats : &mut
|
||||||
|
|
||||||
pub async fn get_sorted_processes_list(
|
pub async fn get_sorted_processes_list(
|
||||||
prev_idle : &mut f64, prev_non_idle : &mut f64, prev_pid_stats : &mut std::collections::HashMap<String, f64>,
|
prev_idle : &mut f64, prev_non_idle : &mut f64, prev_pid_stats : &mut std::collections::HashMap<String, f64>,
|
||||||
) -> Result<Vec<ProcessData>, heim::Error> {
|
) -> crate::utils::error::Result<Vec<ProcessData>> {
|
||||||
let mut process_vector : Vec<ProcessData> = Vec::new();
|
let mut process_vector : Vec<ProcessData> = Vec::new();
|
||||||
|
|
||||||
if cfg!(target_os = "linux") {
|
if cfg!(target_os = "linux") {
|
||||||
// Linux specific - this is a massive pain... ugh.
|
// Linux specific - this is a massive pain... ugh.
|
||||||
|
|
||||||
let ps_result = Command::new("ps")
|
let ps_result = Command::new("ps").args(&["-axo", "pid:10,comm:50,%mem:5", "--noheader"]).output()?;
|
||||||
.args(&["-axo", "pid:10,comm:50,%mem:5", "--noheader"])
|
|
||||||
.output()
|
|
||||||
.expect("Failed to execute.");
|
|
||||||
let ps_stdout = String::from_utf8_lossy(&ps_result.stdout);
|
let ps_stdout = String::from_utf8_lossy(&ps_result.stdout);
|
||||||
let split_string = ps_stdout.split('\n');
|
let split_string = ps_stdout.split('\n');
|
||||||
let cpu_usage = vangelis_cpu_usage_calculation(prev_idle, prev_non_idle).unwrap(); // TODO: FIX THIS ERROR CHECKING
|
let cpu_usage = vangelis_cpu_usage_calculation(prev_idle, prev_non_idle).unwrap(); // TODO: FIX THIS ERROR CHECKING
|
||||||
|
|
|
@ -19,7 +19,7 @@ impl Default for TemperatureType {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub async fn get_temperature_data(temp_type : &TemperatureType) -> Result<Vec<TempData>, heim::Error> {
|
pub async fn get_temperature_data(temp_type : &TemperatureType) -> crate::utils::error::Result<Vec<TempData>> {
|
||||||
let mut temperature_vec : Vec<TempData> = Vec::new();
|
let mut temperature_vec : Vec<TempData> = Vec::new();
|
||||||
|
|
||||||
let mut sensor_data = heim::sensors::temperatures();
|
let mut sensor_data = heim::sensors::temperatures();
|
||||||
|
|
|
@ -0,0 +1,24 @@
|
||||||
|
/// This file is meant to house (OS specific) implementations on how to kill processes.
|
||||||
|
use std::process::Command;
|
||||||
|
|
||||||
|
/// Kills a process, given a PID.
|
||||||
|
pub fn kill_process_given_pid(pid : i64) -> crate::utils::error::Result<()> {
|
||||||
|
if cfg!(target_os = "linux") {
|
||||||
|
// Linux
|
||||||
|
Command::new("kill").arg(pid.to_string()).output()?;
|
||||||
|
}
|
||||||
|
else if cfg!(target_os = "windows") {
|
||||||
|
// Windows
|
||||||
|
debug!("Sorry, Windows support is not implemented yet!");
|
||||||
|
}
|
||||||
|
else if cfg!(target_os = "macos") {
|
||||||
|
// TODO: macOS
|
||||||
|
debug!("Sorry, macOS support is not implemented yet!");
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
// TODO: Others?
|
||||||
|
debug!("Sorry, other support this is not implemented yet!");
|
||||||
|
}
|
||||||
|
|
||||||
|
Ok(())
|
||||||
|
}
|
|
@ -226,10 +226,10 @@ pub fn draw_data<B : tui::backend::Backend>(terminal : &mut Terminal<B>, app_sta
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
debug!(
|
/*debug!(
|
||||||
"START POSN: {}, PREV POSN: {}, CURRENT SELECTED POSN: {}, NUM ROWS: {}",
|
"START POSN: {}, PREV POSN: {}, CURRENT SELECTED POSN: {}, NUM ROWS: {}",
|
||||||
start_position, app_state.previous_process_position, app_state.currently_selected_process_position, num_rows
|
start_position, app_state.previous_process_position, app_state.currently_selected_process_position, num_rows
|
||||||
);
|
);*/
|
||||||
|
|
||||||
let sliced_vec : Vec<Vec<String>> = (&canvas_data.process_data[start_position as usize..]).to_vec();
|
let sliced_vec : Vec<Vec<String>> = (&canvas_data.process_data[start_position as usize..]).to_vec();
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue