Skip to main content

Mountain/IPC/Common/HealthStatus/
HealthIssue.rs

1
2//! Tagged health issue. Each variant carries a free-form description
3//! string; `Severity` and `Description` accessors normalise the
4//! tag→severity mapping in one place so the recalculation logic in
5//! `HealthMonitor::Struct` stays a pure aggregation.
6
7use serde::{Deserialize, Serialize};
8
9use crate::IPC::Common::HealthStatus::SeverityLevel;
10
11#[derive(Debug, Clone, PartialEq, Eq, Hash, Serialize, Deserialize)]
12pub enum Enum {
13	HighLatency(String),
14
15	MemoryPressure(String),
16
17	ConnectionLoss(String),
18
19	QueueOverflow(String),
20
21	SecurityViolation(String),
22
23	PerformanceDegradation(String),
24
25	Custom(String),
26}
27
28impl Enum {
29	pub fn Severity(&self) -> SeverityLevel::Enum {
30		match self {
31			Enum::HighLatency(_) => SeverityLevel::Enum::Medium,
32
33			Enum::MemoryPressure(_) => SeverityLevel::Enum::Medium,
34
35			Enum::ConnectionLoss(_) => SeverityLevel::Enum::High,
36
37			Enum::QueueOverflow(_) => SeverityLevel::Enum::High,
38
39			Enum::SecurityViolation(_) => SeverityLevel::Enum::Critical,
40
41			Enum::PerformanceDegradation(_) => SeverityLevel::Enum::Medium,
42
43			Enum::Custom(_) => SeverityLevel::Enum::Low,
44		}
45	}
46
47	pub fn Description(&self) -> &str {
48		match self {
49			Enum::HighLatency(D)
50			| Enum::MemoryPressure(D)
51			| Enum::ConnectionLoss(D)
52			| Enum::QueueOverflow(D)
53			| Enum::SecurityViolation(D)
54			| Enum::PerformanceDegradation(D)
55			| Enum::Custom(D) => D,
56		}
57	}
58}