using System.Collections.Generic; using System.Threading.Tasks; using WIDESEAWCS_S7Simulator.Core.Entities; using WIDESEAWCS_S7Simulator.Core.Enums; namespace WIDESEAWCS_S7Simulator.Core.Interfaces { /// /// 仿真器实例管理器接口 /// 管理多个S7服务器实例的生命周期 /// public interface ISimulatorInstanceManager { /// /// 实例状态变化事件 /// event EventHandler? InstanceStateChanged; /// /// 获取所有实例 /// /// 实例列表 IReadOnlyList GetAllInstances(); /// /// 根据ID获取实例 /// /// 实例ID /// 实例,不存在则返回null IS7ServerInstance? GetInstance(string instanceId); /// /// 检查实例是否存在 /// /// 实例ID /// 是否存在 bool InstanceExists(string instanceId); /// /// 创建新实例 /// /// 实例配置 /// 创建的实例 Task CreateInstanceAsync(InstanceConfig config); /// /// 启动实例 /// /// 实例ID /// 是否成功 Task StartInstanceAsync(string instanceId); /// /// 停止实例 /// /// 实例ID Task StopInstanceAsync(string instanceId); /// /// 重启实例 /// /// 实例ID /// 是否成功 Task RestartInstanceAsync(string instanceId); /// /// 删除实例 /// /// 实例ID /// 是否删除配置文件 Task DeleteInstanceAsync(string instanceId, bool deleteConfig = true); /// /// 获取实例状态 /// /// 实例ID /// 实例状态,不存在则返回null InstanceState? GetInstanceState(string instanceId); /// /// 获取所有实例状态 /// /// 实例状态列表 IReadOnlyList GetAllInstanceStates(); /// /// 加载所有已保存的实例 /// /// 是否自动启动标记为AutoStart的实例 Task LoadSavedInstancesAsync(bool autoStart = true); /// /// 停止所有实例 /// Task StopAllInstancesAsync(); /// /// 获取运行中的实例数量 /// int GetRunningInstanceCount(); /// /// 获取实例总数 /// int GetTotalInstanceCount(); } /// /// 实例状态变化事件参数 /// public class InstanceStateChangedEventArgs : EventArgs { /// /// 实例ID /// public string InstanceId { get; set; } = string.Empty; /// /// 旧状态 /// public InstanceStatus OldStatus { get; set; } /// /// 新状态 /// public InstanceStatus NewStatus { get; set; } /// /// 实例状态 /// public InstanceState InstanceState { get; set; } = new(); } }