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();
}
}