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 OnDeviceActiveChanged; /// /// 设备运行改变事件 /// public event EventHandler OnDeviceConnectChanged; /// /// 触发设备状态改变事件 /// /// 事件发送者 /// 设备状态改变事件参数 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; OnDeviceActiveChanged?.Invoke(sender, e); } } } /// /// 触发设备状态改变事件 /// /// 事件发送者 /// 设备状态改变事件参数 public void RaiseDeviceConnectChanged(object sender, DeviceConnectChangedEventArgs e) { OnDeviceConnectChanged?.Invoke(sender, e); } #endregion #region 变量事件 /// /// 变量值改变事件 /// 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 }