1#[derive(Debug, thiserror::Error)]
6pub enum EggressError {
7 #[error("config error: {0}")]
9 Config(String),
10
11 #[error("runtime error: {0}")]
13 Runtime(String),
14
15 #[error("startup error: {0}")]
17 Startup(String),
18
19 #[error("reload error: {0}")]
21 Reload(String),
22
23 #[error("shutdown error: {0}")]
25 Shutdown(String),
26
27 #[error("unsupported feature: {feature}: {message}")]
29 UnsupportedFeature {
30 feature: String,
32 message: String,
34 },
35
36 #[error("internal error: {0}")]
38 Internal(String),
39}
40
41impl EggressError {
42 pub fn category(&self) -> &'static str {
44 match self {
45 EggressError::Config(_) => "config",
46 EggressError::Runtime(_) => "runtime",
47 EggressError::Startup(_) => "startup",
48 EggressError::Reload(_) => "reload",
49 EggressError::Shutdown(_) => "shutdown",
50 EggressError::UnsupportedFeature { .. } => "unsupported_feature",
51 EggressError::Internal(_) => "internal",
52 }
53 }
54}