using System.Diagnostics;

namespace SHH.ProcessLaunchers
{
    /// <summary>
    /// 资源哨兵接口 (策略模式)
    /// </summary>
    public interface IResourceGuard
    {
        /// <summary>
        /// 哨兵名称 (如 MemoryGuard)
        /// </summary>
        string Name { get; }

        /// <summary>
        /// 执行健康检查
        /// </summary>
        /// <param name="process">正在运行的进程对象</param>
        /// <param name="reason">[输出] 如果异常，返回详细原因描述</param>
        /// <returns>检查结果 (Normal/Warning/Critical)</returns>
        GuardResult Check(Process process, out string reason);

        /// <summary>
        /// 人工复位/标记已处置
        /// <para>用户在 UI 点击“已处置”后调用，用于清除内部的报警锁定状态 (Latch)</para>
        /// </summary>
        void Reset();
    }
}