postfix_log_parser/events/
master.rs1use crate::events::base::BaseEvent;
7use serde::{Deserialize, Serialize};
8
9#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
11pub enum MasterEvent {
12 DaemonLifecycle {
14 base: BaseEvent,
15 lifecycle: MasterLifecycleEvent,
16 },
17 ProcessWarning {
19 base: BaseEvent,
20 warning: MasterProcessWarning,
21 },
22 ServiceLimit {
24 base: BaseEvent,
25 limit: MasterServiceLimit,
26 },
27 ConfigurationWarning {
29 base: BaseEvent,
30 warning: MasterConfigWarning,
31 },
32}
33
34#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
36pub enum MasterLifecycleEvent {
37 Started {
39 version: String,
40 configuration: String,
41 },
42 Reload {
44 version: String,
45 configuration: String,
46 },
47}
48
49#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
51pub enum MasterProcessWarning {
52 ProcessKilled {
54 service: String,
55 process_path: String,
56 pid: u32,
57 signal: u8,
58 },
59 BadCommandStartup { service: String },
61}
62
63#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
65pub enum MasterServiceLimit {
66 ProcessLimitReached {
68 service: String,
69 service_address: String,
70 limit: u32,
71 },
72}
73
74#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
76pub enum MasterConfigWarning {
77 ProcessCountSuggestion,
79 StressConfigReference { url: String },
81}
82
83impl MasterEvent {
84 pub fn base(&self) -> &BaseEvent {
86 match self {
87 MasterEvent::DaemonLifecycle { base, .. } => base,
88 MasterEvent::ProcessWarning { base, .. } => base,
89 MasterEvent::ServiceLimit { base, .. } => base,
90 MasterEvent::ConfigurationWarning { base, .. } => base,
91 }
92 }
93
94 pub fn base_mut(&mut self) -> &mut BaseEvent {
96 match self {
97 MasterEvent::DaemonLifecycle { base, .. } => base,
98 MasterEvent::ProcessWarning { base, .. } => base,
99 MasterEvent::ServiceLimit { base, .. } => base,
100 MasterEvent::ConfigurationWarning { base, .. } => base,
101 }
102 }
103
104 pub fn event_type(&self) -> &'static str {
106 match self {
107 MasterEvent::DaemonLifecycle { lifecycle, .. } => match lifecycle {
108 MasterLifecycleEvent::Started { .. } => "daemon_started",
109 MasterLifecycleEvent::Reload { .. } => "daemon_reload",
110 },
111 MasterEvent::ProcessWarning { warning, .. } => match warning {
112 MasterProcessWarning::ProcessKilled { .. } => "process_killed",
113 MasterProcessWarning::BadCommandStartup { .. } => "bad_command_startup",
114 },
115 MasterEvent::ServiceLimit { .. } => "service_limit_reached",
116 MasterEvent::ConfigurationWarning { warning, .. } => match warning {
117 MasterConfigWarning::ProcessCountSuggestion => "process_count_suggestion",
118 MasterConfigWarning::StressConfigReference { .. } => "stress_config_reference",
119 },
120 }
121 }
122}