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
}
}