rsiot/components/cmp_system_info/
system_info.rs

1use std::collections::HashMap;
2
3/// Системная информация
4#[derive(Debug, Default)]
5pub struct SystemInfo {
6    /// Returns the system hostname based off DNS.
7    pub host_name: String,
8
9    /// Returns the system long os version (e.g “MacOS 11.2 BigSur”).
10    pub os_version: String,
11
12    /// Информация о сетевых подключениях
13    pub networks: HashMap<String, SystemInfoNetwork>,
14
15    /// Returns CPU’s usage.
16    pub cpu_usage: Vec<f32>,
17
18    /// Temperature of components
19    pub temperatures: HashMap<String, f32>,
20
21    /// Информация о памяти
22    pub memory: SystemInfoMemory,
23
24    /// Информация о дисках
25    pub disks: HashMap<String, SystemInfoDisk>,
26}
27
28/// Информация о сетевом подключении
29#[derive(Debug, Default)]
30pub struct SystemInfoNetwork {
31    /// Name of network interface
32    pub name: String,
33
34    /// MAC address for network interface
35    pub mac_address: String,
36}
37
38/// Информация о потребленной памяти
39#[derive(Debug, Default)]
40pub struct SystemInfoMemory {
41    /// Доступный размер оперативной памяти, \[MB\]
42    pub total_memory_mb: f32,
43
44    /// Используемый размер оперативной памяти, \[MB\]
45    pub used_memory_mb: f32,
46
47    /// Общий размер swap, \[MB\]
48    pub total_swap_mb: f32,
49
50    /// Используемый размер swap, \[MB\]
51    pub used_swap_mb: f32,
52}
53
54/// Информация о диске
55#[derive(Debug, Default)]
56pub struct SystemInfoDisk {
57    /// Название
58    pub name: String,
59
60    /// Занятое пространство, \[GB\]
61    pub used_space_gb: f32,
62
63    /// Общее пространство, \[GB\]
64    pub total_space_gb: f32,
65}