using System; namespace SHH.ProcessLaunchers { /// /// 进程输出事件参数 (StdOut/StdErr) /// public class ProcessOutputEventArgs : EventArgs { /// 进程唯一标识 (ID) public string ProcessId { get; set; } = string.Empty; /// 来源进程名称 public string ProcessName { get; set; } = string.Empty; /// 输出内容 public string Content { get; set; } = string.Empty; /// 是否为错误流 (StdErr) public bool IsError { get; set; } } /// /// 进程状态变更事件参数 /// public class ProcessStateEventArgs : EventArgs { /// 进程唯一标识 (ID) public string ProcessId { get; set; } = string.Empty; /// 来源进程名称 public string ProcessName { get; set; } = string.Empty; /// 变更后的新状态 public ProcessStatus State { get; set; } } /// /// 进程生命周期状态枚举 /// public enum ProcessStatus { /// 已停止 (初始状态或用户手动停止) Stopped, /// 启动中 (正在初始化进程对象) Starting, /// 运行中 (PID 已存在) Running, /// 等待重启 (崩溃后的短暂停留,默认3秒) PendingRestart, /// 熔断冷却中 (连续失败多次后的长时间等待,默认30分钟) CoolingDown } /// /// 资源哨兵检查结果枚举 /// public enum GuardResult { /// 一切正常 Normal, /// 警告 (有点问题,建议记录日志或发邮件,但不杀进程) Warning, /// 严重故障 (必须立即重启进程以保护系统) Critical } /// /// 操作归因:定义是谁/什么触发了这个动作 /// 用于后续分析是人为操作还是系统自愈 /// public enum LogTrigger { /// /// 用户手动干预 (UI点击、API调用) /// 优先级:最高。通常视为预期内操作。 /// User, /// /// 启动器自愈行为 (崩溃重启、初始化启动、熔断恢复) /// 优先级:高。代表系统正在尝试维持服务。 /// System, /// /// 资源哨兵触发 (内存/CPU超限) /// 优先级:紧急。代表出现了亚健康状态或强制管控。 /// ResourceGuard, /// /// 定时任务/计划调度 /// 优先级:中。代表按计划执行的任务。 /// Scheduler } /// /// 核心动作类型 /// 定义进程生命周期中发生了什么具体的事件 /// public enum LogAction { /// 启动进程 Start, /// 停止进程 Stop, /// 重启进程 Restart, /// 侦测到意外退出 Crash, /// 标准输出流 (StdOut) - 通常是程序打印的普通日志 Output, /// 标准错误流 (StdErr) - 程序打印的异常或错误 Error, /// 触发熔断保护 (停止重试) CircuitBreak, /// 资源检查警告 (如内存超限报警,但不重启) ResourceCheck } }