public override void OnEvent(DeviceEvents deviceEvents) { base.OnEvent(deviceEvents); foreach (DeviceEvent deviceEvent in deviceEvents.services) { if (deviceEvent.eventType == "start_scan") { ScanSubdeviceNotify scanSubdeviceNotify = JsonUtil.ConvertDicToObject <ScanSubdeviceNotify>( deviceEvent.paras); if (subDevDiscoveryListener != null) { subDevDiscoveryListener.OnScan(scanSubdeviceNotify); } } else if (deviceEvent.eventType == "add_sub_device_notify") { SubDevicesInfo subDevicesInfo = JsonUtil.ConvertDicToObject <SubDevicesInfo>( deviceEvent.paras); OnAddSubDevices(subDevicesInfo); } else if (deviceEvent.eventType == "delete_sub_device_notify") { SubDevicesInfo subDevicesInfo = JsonUtil.ConvertDicToObject <SubDevicesInfo>( deviceEvent.paras); OnDeleteSubDevices(subDevicesInfo); } } }
private int RmvSubDeviceToFile(SubDevicesInfo subDevicesInfo) { try { string content = ReadJsonFile(); SubDevInfo subDevInfo = JsonUtil.ConvertJsonStringToObject <SubDevInfo>(content); if (subDevInfo.subdevices == null) { return(0); } foreach (DeviceInfo dev in subDevicesInfo.devices) { subDevInfo.subdevices.Remove(dev.nodeId); subDevInfo.version = subDevicesInfo.version; } File.WriteAllText(path, JsonUtil.ConvertObjectToJsonString(subDevInfo)); } catch (Exception ex) { Log.Error("remove sub device fail in json file"); return(-1); } return(0); }
/// <summary> /// 删除子设备处理回调,子类可以重写此接口进行扩展 /// </summary> /// <param name="subDevicesInfo">子设备信息</param> /// <returns>处理结果,0表示成功</returns> public virtual int OnDeleteSubDevices(SubDevicesInfo subDevicesInfo) { if (subDevicesPersistence != null) { return(subDevicesPersistence.DeleteSubDevices(subDevicesInfo)); } return(-1); }
/// <summary> /// 添加子设备处理回调,子类可以重写此接口进行扩展 /// </summary> /// <param name="subDevicesInfo">子设备信息</param> /// <returns>处理结果,0表示成功</returns> public int OnAddSubDevices(SubDevicesInfo subDevicesInfo) { if (subDevicesPersistence != null) { return(subDevicesPersistence.AddSubDevices(subDevicesInfo)); } return(-1); }
public int DeleteSubDevices(SubDevicesInfo subDevicesInfo) { mutex.WaitOne(); try { if (subDevicesInfo.version > 0 && subDevicesInfo.version <= subDevInfoCache.version) { Log.Info("version too low: " + subDevicesInfo.version); return(-1); } if (subDevInfoCache.subdevices == null) { return(-1); } if (RmvSubDeviceToFile(subDevicesInfo) != 0) { Log.Info("remove from file fail "); return(-1); } foreach (DeviceInfo dev in subDevicesInfo.devices) { subDevInfoCache.subdevices.Remove(dev.nodeId); Log.Info("rmv subdev :" + dev.nodeId); } subDevInfoCache.version = subDevicesInfo.version; Log.Info("local version update to " + subDevicesInfo.version); } finally { // 释放锁 mutex.ReleaseMutex(); } return(0); }
public int AddSubDevices(SubDevicesInfo subDevicesInfo) { mutex.WaitOne(); try { if (subDevicesInfo.version > 0 && subDevicesInfo.version <= subDevInfoCache.version) { Log.Info("version too low: " + subDevicesInfo.version); return(-1); } if (AddSubDeviceToFile(subDevicesInfo) != 0) { Log.Info("write file fail "); return(-1); } if (subDevInfoCache.subdevices == null) { subDevInfoCache.subdevices = new Dictionary <string, DeviceInfo>(); } foreach (DeviceInfo dev in subDevicesInfo.devices) { subDevInfoCache.subdevices.Add(dev.nodeId, dev); Log.Info("add subdev: " + dev.nodeId); } subDevInfoCache.version = subDevicesInfo.version; Log.Info("version update to " + subDevInfoCache.version); } finally { // 释放锁 mutex.ReleaseMutex(); } return(0); }
public override int OnDeleteSubDevices(SubDevicesInfo subDevicesInfo) { foreach (DeviceInfo subdevice in subDevicesInfo.devices) { if (nodeIdToSesseionDic.ContainsKey(subdevice.nodeId)) { Session session = nodeIdToSesseionDic[subdevice.nodeId]; if (session.channel != null) { session.channel.CloseAsync(); channelIdToSessionDic.Remove(session.channel.Id.AsLongText()); nodeIdToSesseionDic.Remove(session.nodeId); } } } return(base.OnDeleteSubDevices(subDevicesInfo)); }