1use serde::{Serialize, Deserialize};
2
3#[derive(Deserialize, Serialize, Debug)]
5#[serde(rename_all = "camelCase")]
6pub struct DiskUsage {
7 pub name: String,
9 pub used: u64,
11 pub total: u64,
13}
14
15#[derive(Deserialize, Serialize, Debug)]
17#[serde(rename_all = "camelCase")]
18pub struct Process {
19 pub pid: i32,
21 pub cpu: f64,
23
24}
25
26#[derive(Deserialize, Serialize, Debug)]
28#[serde(rename_all = "camelCase")]
29pub struct GraphicsProcessUtilization {
30 pub pid: u32,
32 pub gpu: u32,
34 pub memory: u32,
36 pub encoder: u32,
38 pub decoder: u32
40}
41
42#[derive(Deserialize, Serialize, Debug)]
44#[serde(rename_all = "camelCase")]
45pub struct GraphicsUsage {
46 pub id: String,
48 pub memory_usage: u32,
50 pub memory_used: u64,
52 pub encoder: u32,
54 pub decoder: u32,
56 pub gpu: u32,
58 pub temperature: u32,
60 pub processes: Vec<GraphicsProcessUtilization>
62}
63
64#[derive(Deserialize, Serialize, Debug)]
66#[serde(rename_all = "camelCase")]
67pub struct SystemStatus {
68 pub memory: i32,
70 pub cpu: i32,
72}
73
74#[derive(Deserialize, Serialize, Debug)]
76#[serde(rename_all = "camelCase")]
77pub struct SystemInfo {
78 pub os_name: String,
80 pub kernel_version: String,
82 pub os_version: String,
84 pub hostname: String,
86 pub distribution: String,
88 pub memory: u64,
90 pub processor: Processor,
92 pub total_processors: usize,
94 pub graphics: Vec<GraphicCard>,
96 pub disks: Vec<Disk>,
98 pub cameras: Vec<Camera>,
100 pub nvidia: Option<NvidiaInfo>,
102 pub vaapi: bool,
104 pub model: Option<String>
106}
107
108#[derive(Deserialize, Serialize, Debug)]
110#[serde(rename_all = "camelCase")]
111pub struct Processor {
112 pub frequency: u64,
114 pub vendor: String,
116 pub brand: String
118}
119
120#[derive(Deserialize, Serialize, Debug)]
122#[serde(rename_all = "camelCase")]
123pub struct GraphicCard {
124 pub id: String,
126 pub name: String,
128 pub brand: String,
130 pub memory: u64,
132 pub temperature: u32
134}
135
136#[derive(Deserialize, Serialize, Debug)]
138#[serde(rename_all = "camelCase")]
139pub struct Disk {
140 pub name: String,
142 pub fs: String,
144 pub storage_type: String,
146 pub mount_point: String,
148 pub available: u64,
150 pub size: u64
152}
153
154#[derive(Debug, Serialize, Deserialize)]
156#[serde(rename_all = "camelCase")]
157pub struct Camera {
158 pub name: String,
160 pub path: String
162}
163
164#[derive(Debug, Serialize, Deserialize)]
166#[serde(rename_all = "camelCase")]
167pub struct NvidiaInfo {
168 pub driver_version: String,
170 pub nvml_version: String,
172 pub cuda_version: i32,
174}