use std::collections::HashMap; use serde::{Deserialize, Serialize}; #[derive(Clone, Debug, Default, Serialize, Deserialize)] pub struct NodeCommon { pub addr: String, #[serde(skip_serializing_if = "Option::is_none")] pub error: Option, } #[derive(Debug, Default, Serialize, Deserialize)] pub struct Cpu { pub vendor_id: String, pub family: String, pub model: String, pub stepping: i32, pub physical_id: String, pub model_name: String, pub mhz: f64, pub cache_size: i32, pub flags: Vec, pub microcode: String, pub cores: u64, } #[derive(Debug, Default, Serialize, Deserialize)] pub struct CpuFreqStats { name: String, cpuinfo_current_frequency: Option, cpuinfo_minimum_frequency: Option, cpuinfo_maximum_frequency: Option, cpuinfo_transition_latency: Option, scaling_current_frequency: Option, scaling_minimum_frequency: Option, scaling_maximum_frequency: Option, available_governors: String, driver: String, governor: String, related_cpus: String, set_speed: String, } #[derive(Debug, Default, Serialize, Deserialize)] pub struct Cpus { node_common: NodeCommon, cpus: Vec, cpu_freq_stats: Vec, } pub fn get_cpus() -> Cpus { // todo Cpus::default() } #[derive(Debug, Default, Serialize, Deserialize)] pub struct Partition { pub error: String, device: String, model: String, revision: String, mountpoint: String, fs_type: String, mount_options: String, space_total: u64, space_free: u64, inode_total: u64, inode_free: u64, } #[derive(Debug, Default, Serialize, Deserialize)] pub struct Partitions { node_common: NodeCommon, partitions: Vec, } pub fn get_partitions() -> Partitions { Partitions::default() } #[derive(Debug, Default, Serialize, Deserialize)] pub struct OsInfo { node_common: NodeCommon, } pub fn get_os_info() -> OsInfo { OsInfo::default() } #[derive(Debug, Default, Serialize, Deserialize)] pub struct ProcInfo { node_common: NodeCommon, pid: i32, is_background: bool, cpu_percent: f64, children_pids: Vec, cmd_line: String, num_connections: usize, create_time: u64, cwd: String, exec_path: String, gids: Vec, // io_counters: is_running: bool, // mem_info: // mem_maps: mem_percent: f32, name: String, nice: i32, //num_ctx_switches: num_fds: i32, num_threads: i32, // page_faults: ppid: i32, status: String, tgid: i32, uids: Vec, username: String, } pub fn get_proc_info(_addr: &str) -> ProcInfo { ProcInfo::default() } #[derive(Debug, Default, Serialize, Deserialize)] pub struct SysService { name: String, status: String, } #[derive(Debug, Default, Serialize, Deserialize)] pub struct SysServices { node_common: NodeCommon, services: Vec, } pub fn get_sys_services(_add: &str) -> SysServices { SysServices::default() } #[derive(Debug, Default, Serialize, Deserialize)] pub struct SysConfig { node_common: NodeCommon, config: HashMap, } pub fn get_sys_config(_addr: &str) -> SysConfig { SysConfig::default() } #[derive(Debug, Default, Serialize, Deserialize)] pub struct SysErrors { node_common: NodeCommon, errors: Vec, } pub fn get_sys_errors(_add: &str) -> SysErrors { SysErrors::default() } #[derive(Clone, Debug, Default, Serialize, Deserialize)] pub struct MemInfo { node_common: NodeCommon, #[serde(skip_serializing_if = "Option::is_none")] total: Option, #[serde(skip_serializing_if = "Option::is_none")] used: Option, #[serde(skip_serializing_if = "Option::is_none")] free: Option, #[serde(skip_serializing_if = "Option::is_none")] available: Option, #[serde(skip_serializing_if = "Option::is_none")] shared: Option, #[serde(skip_serializing_if = "Option::is_none")] cache: Option, #[serde(skip_serializing_if = "Option::is_none")] buffers: Option, #[serde(rename = "swap_space_total", skip_serializing_if = "Option::is_none")] swap_space_total: Option, #[serde(rename = "swap_space_free", skip_serializing_if = "Option::is_none")] swap_space_free: Option, #[serde(skip_serializing_if = "Option::is_none")] limit: Option, } pub fn get_mem_info(_addr: &str) -> MemInfo { MemInfo::default() }