using System; using DMS.Application.Events; using DMS.Application.Interfaces; using DMS.Core.Events; namespace DMS.Application.Services; /// /// 事件服务实现类,用于统一管理应用程序中的各种事件 /// public class EventService : IEventService { private readonly IAppDataStorageService _appDataStorageService; public EventService(IAppDataStorageService appDataStorageService) { _appDataStorageService = appDataStorageService; } #region 设备事件 /// /// 设备状态改变事件(统一事件,处理激活状态和连接状态变化) /// public event EventHandler OnDeviceStateChanged; /// /// 设备添加事件 /// public event EventHandler OnDeviceChanged; /// /// 触发设备状态改变事件 /// /// 事件发送者 /// 设备状态改变事件参数 public void RaiseDeviceActiveChanged(object sender, DeviceActiveChangedEventArgs e) { if (_appDataStorageService.Devices.TryGetValue(e.DeviceId, out var device)) { if (device.IsActive != e.NewStatus) { device.IsActive = e.NewStatus; // 转发到统一的设备状态事件 var unifiedEvent = new DeviceStateChangedEventArgs(e.DeviceId, e.DeviceName, e.NewStatus, Core.Enums.DeviceStateType.Active); OnDeviceStateChanged?.Invoke(sender, unifiedEvent); } } } /// /// 触发设备连接状态改变事件 /// /// 事件发送者 /// 设备状态改变事件参数 public void RaiseDeviceConnectChanged(object sender, DeviceConnectChangedEventArgs e) { // 转发到统一的设备状态事件 var unifiedEvent = new DeviceStateChangedEventArgs(e.DeviceId, e.DeviceName, e.NewStatus, Core.Enums.DeviceStateType.Connection); OnDeviceStateChanged?.Invoke(sender, unifiedEvent); } /// /// 触发设备状态改变事件(统一事件) /// /// 事件发送者 /// 设备状态改变事件参数 public void RaiseDeviceStateChanged(object sender, DeviceStateChangedEventArgs e) { OnDeviceStateChanged?.Invoke(sender, e); } /// /// 触发设备添加事件 /// /// 事件发送者 /// 设备变更事件参数 public void RaiseDeviceChanged(object sender, DeviceChangedEventArgs e) { OnDeviceChanged?.Invoke(sender, e); } #endregion #region 变量表事件 /// /// 变量表改变事件 /// public event EventHandler OnVariableTableChanged; /// /// 触发变量表改变事件 /// /// 事件发送者 /// 变量表改变事件参数 public void RaiseVariableTableChanged(object sender, VariableTableChangedEventArgs e) { OnVariableTableChanged?.Invoke(sender, e); } /// /// 变量值改变事件 /// public event EventHandler OnVariableChanged; /// /// 触发变量值改变事件 /// /// 事件发送者 /// 变量值改变事件参数 public void RaiseVariableChanged(object sender, VariableChangedEventArgs e) { OnVariableChanged?.Invoke(sender, e); } /// /// 变量启停改变事件 /// public event EventHandler OnVariableActiveChanged; public void RaiseVariableActiveChanged(object sender, VariablesActiveChangedEventArgs e) { OnVariableActiveChanged?.Invoke(sender, e); } /// /// 变量值改变事件 /// public event EventHandler OnVariableValueChanged; /// /// 触发变量值改变事件 /// /// 事件发送者 /// 变量值改变事件参数 public void RaiseVariableValueChanged(object sender, VariableValueChangedEventArgs e) { OnVariableValueChanged?.Invoke(sender, e); } #endregion #region MQTT事件 /// /// MQTT连接状态改变事件 /// public event EventHandler MqttConnectionChanged; /// /// 触发MQTT连接状态改变事件 /// /// 事件发送者 /// MQTT连接状态改变事件参数 public void RaiseMqttConnectionChanged(object sender, MqttConnectionChangedEventArgs e) { MqttConnectionChanged?.Invoke(sender, e); } #endregion }