1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
// Copyright (C) 2026 Raimo Geisel
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program. If not, see <https://www.gnu.org/licenses/>.
//! System-metric data modules.
//!
//! Each sub-module owns one strongly-typed state struct and a free
//! `refresh()` function that updates it. The constant [`HISTORY_LEN`] and
//! the helper [`push_history`] are shared across all sub-modules.
pub use CpuState;
pub use DiskState;
pub use MemState;
pub use NetState;
pub use ProcessEntry;
pub use GpuEntry;
/// Number of samples retained in each rolling history buffer.
///
/// At the default 1 Hz tick rate this corresponds to ~60 seconds of history.
pub const HISTORY_LEN: usize = 60;
/// Appends `value` to `history`, evicting the oldest sample when the buffer
/// has reached [`HISTORY_LEN`] entries.