public bool isMatched(ref TKAlarm alarm) { lock (AllFilters.SyncRoot) { if (AllFilters.Count == 0) { return(true); } if (AllFilters.Count == 1) { FilterEx f = (FilterEx)AllFilters[AllFilters.GetKey(0)]; m_filterAllSee = f; return(f.isMatched(ref alarm)); } bool bMatched = false; foreach (DictionaryEntry de in AllFilters) { bMatched = ((FilterEx)AllFilters[de.Key]).isMatched(ref alarm); if (bMatched) { return(true); } } } return(false); // 不能直接返回false,可能未做任何比较 }
private void _processAlarm(ArrayList alarms) { lock (alarms.SyncRoot) { if (alarms.Count == 0) { return; } for (int i = 0; i < alarms.Count; ++i) { TKAlarm alarm = (TKAlarm)alarms[i]; CommandMsgV2 msg = alarm.ConvertToMsg(); m_Communicator.enqueueDelayedMessages(msg); Thread.Sleep(0); if (Interlocked.Read(ref m_Run) == 0) { break; } } } }
/// <summary> /// 向待发送队列中插入一条告警, 如果前一报文是告警,则增加到其AlarmList当中,否则新建一个CommandMsg /// 如此实现告警发生、恢复事件与告警改变事件的串行化 /// </summary> /// <param name="alarm"></param> public void FillAlarm(TKAlarm alarm) { if (AlarmFilter != "") { if (AlarmFilter.IndexOf(alarm.BusinessType) == -1) { return; } } lock (m_Messages) { CommandMsgV2 alarm_msg = null; if (m_Messages.Count == 0 || m_Messages[m_Messages.Count - 1].TK_CommandType != Constants.TK_CommandType.ALARM_REPORT) { alarm_msg = new CommandMsgV2(); alarm_msg.TK_CommandType = Constants.TK_CommandType.ALARM_REPORT; alarm_msg.SetValue("ClientID", ClientID); alarm_msg.SetValue("AlarmList", new ArrayList()); m_Messages.Add(alarm_msg); } else { alarm_msg = m_Messages[m_Messages.Count - 1]; } ArrayList t = alarm_msg.GetValue("AlarmList") as ArrayList; t.Add(new TKAlarm(alarm)); } }
/// <summary> /// 向待发送队列中插入一组告警 /// </summary> /// <param name="alarmlist"></param> public void FillAlarm(ArrayList alarmlist) { foreach (object obj in alarmlist) { TKAlarm alarm = (TKAlarm)obj; FillAlarm(alarm); } }
public bool isMatched(ref TKAlarm alarm) { bool bMatched = false; if (BSCes.Count > 0) { foreach (object o in BSCes) { bMatched |= isStringMatched(alarm.NeName, (string)o); if (bMatched) { break; } } if (!bMatched) { return(false); } } bMatched = false; if (Redefinition.Count != 0) { foreach (object o in Redefinition) { bMatched |= isStringMatched(alarm.Redefinition, (string)o); if (bMatched) { break; } } if (!bMatched) { return(false); } } bMatched = false; try { DateTime t = Convert.ToDateTime(alarm.OccurTime); bMatched = (t >= StartTime && t <= EndTime); if (!bMatched) { return(false); } } catch { return(false); } alarm.ProjectEndTime = this.EndTime.ToString(); alarm.ProjectInfo = this.AddInfo; return(true); }
protected void AdapterAlarmReport(TKAlarm alarm) { try { CommandMsgV2 msg = alarm.ConvertToMsg(); m_CommClient.PostCommand(msg); } catch (Exception ex) { SendLog(ex.ToString()); } }
public TKAlarm(TKAlarm alm) { try { alm.SyncRoot.AcquireReaderLock(-1); TKSn = alm.TKSn; ManuSn = alm.ManuSn; City = alm.City; Manufacturer = alm.Manufacturer; BusinessType = alm.BusinessType; NeName = alm.NeName; NeType = alm.NeType; ObjName = alm.ObjName; ObjType = alm.ObjType; AlarmName = alm.AlarmName; Redefinition = alm.Redefinition; Category = alm.Category; Severity = alm.Severity; OccurTime = alm.OccurTime; AckTimeLV1 = alm.AckTimeLV1; AckAgainTimeLV1 = alm.AckAgainTimeLV1; AckTimeLV2 = alm.AckTimeLV2; AckAgainTimeLV2 = alm.AckAgainTimeLV2; ClearTime = alm.ClearTime; Location = alm.Location; OperatorLV11 = alm.OperatorLV11; OperatorLV12 = alm.OperatorLV12; OperatorLV21 = alm.OperatorLV21; OperatorLV22 = alm.OperatorLV22; ProjectInfo = alm.ProjectInfo; OrderOperatorLV1 = alm.OrderOperatorLV1; OrderIDLV1 = alm.OrderIDLV1; OrderTimeLV1 = alm.OrderTimeLV1; OrderOperatorLV2 = alm.OrderOperatorLV2; OrderIDLV2 = alm.OrderIDLV2; OrderTimeLV2 = alm.OrderTimeLV2; OMCName = alm.OMCName; Reserved2 = alm.Reserved2; Reserved3 = alm.Reserved3; ProjectTimeOut = alm.ProjectTimeOut; ProjectEndTime = alm.ProjectEndTime; ReceiveTime = alm.ReceiveTime; } finally { alm.SyncRoot.ReleaseReaderLock(); } }
public TKAlarm(TKAlarm alm) { TKSn = alm.TKSn; ManuSn = alm.ManuSn; City = alm.City; Manufacturer = alm.Manufacturer; BusinessType = alm.BusinessType; NeName = alm.NeName; NeType = alm.NeType; ObjName = alm.ObjName; ObjType = alm.ObjType; AlarmName = alm.AlarmName; Redefinition = alm.Redefinition; Severity = alm.Severity; OccurTime = alm.OccurTime; AckTimeLV1 = alm.AckTimeLV1; AckAgainTimeLV1 = alm.AckAgainTimeLV1; AckTimeLV2 = alm.AckTimeLV2; AckAgainTimeLV2 = alm.AckAgainTimeLV2; ClearTime = alm.ClearTime; Location = alm.Location; OperatorLV11 = alm.OperatorLV11; OperatorLV12 = alm.OperatorLV12; OperatorLV21 = alm.OperatorLV21; OperatorLV22 = alm.OperatorLV22; ProjectInfo = alm.ProjectInfo; ProjectBool = alm.ProjectBool; OrderOperatorLV1 = alm.OrderOperatorLV1; OrderIDLV1 = alm.OrderIDLV1; OrderTimeLV1 = alm.OrderTimeLV1; OrderOperatorLV2 = alm.OrderOperatorLV2; OrderIDLV2 = alm.OrderIDLV2; OrderTimeLV2 = alm.OrderTimeLV2; OMCName = alm.OMCName; Reserved2 = alm.Reserved2; Reserved3 = alm.Reserved3; ReceiveTime = alm.ReceiveTime; }
public TKAlarm ConvertNMToTKAlarm(NMAlarm a) { TKAlarm tkalarm = new TKAlarm(); tkalarm.OMCName = NMAlarm.OMCName; tkalarm.Manufacturer = NMAlarm.Manufacturer; tkalarm.BusinessType = NMAlarm.BusinessType; tkalarm.NeName = a.SourceOMC; tkalarm.ObjName = a.Object; tkalarm.AlarmName = tkalarm.Redefinition = a.AlarmName; tkalarm.OccurTime = a.OccurTime; tkalarm.Reserved2 = a.LastOccurTime; tkalarm.ClearTime = a.ClearTime; tkalarm.Location = tkalarm.NeName + "//" + tkalarm.ObjName; if (a.Detail.Length > 120) { tkalarm.Reserved3 = a.Detail.Substring(0, 120); } else { tkalarm.Reserved3 = a.Detail; } tkalarm.Severity = a.Severity; if (a.TKSn == "") { a.TKSn = AllocateTKSN().ToString(); } tkalarm.TKSn = a.TKSn; return(tkalarm); }
virtual protected void _checkResumeConsistency(string omcName, string omcConn) { // A - B string q = "select * from " + ResumeTable + " where OMCName='" + omcName + "'"; q += " and TKSn not in (select TKSn from " + UniteResumeTable + " where OMCName='" + omcName + "')"; q += " and TKSn not in (select TKSn from " + UniteGarbageTable + " where OMCName='" + omcName + "')"; DataSet ds = new DataSet(); try { SqlHelper.FillDataset(Connstr, CommandType.Text, q, ds, new string[] { "temp" }); ClearNMAlarm(omcName, Constants.MO_SYSDB, Constants.TKALM_SYSDBALM, DateTime.Now); } catch (Exception ex) { RaiseNMAlarm(omcName, Constants.MO_SYSDB, Constants.TKALM_SYSDBALM, ex.Message, DateTime.Now); SendLog(ex.ToString()); } List <TKAlarm> pending = new List <TKAlarm>(); foreach (DataRow r in ds.Tables["temp"].Rows) { T sourcealarm_r = new T(); sourcealarm_r.BuildFromDB(r); TKAlarm tkalarm = ConvertToTKAlarm(sourcealarm_r); tkalarm.ClearTime = ""; TKAlarm tkalarm_r = ConvertToTKAlarm(sourcealarm_r); pending.Add(tkalarm); pending.Add(tkalarm_r); } #region (B-A)的操作暂时不做 /*q = "select * from resumealarm where manufacturer='" + Manufacturer + "' and OMCName='" + omcName + "'"; * q += " and TKSn not in (select TKSn from " + ResumeTable + " where OMCName='" + omcName + "')"; * * ds.Tables.Clear(); * try * { * SqlHelper.FillDataset(Connstr, CommandType.Text, q, ds, new string[] { "temp" }); * } * catch (Exception ex) * { * SendLog(ex.ToString()); * } * * foreach (DataRow r in ds.Tables["temp"].Rows) * { * T sourcealarm_r = new T(); * sourcealarm_r.ActiveTable = ActiveTable; * sourcealarm_r.ResumeTable = ResumeTable; * sourcealarm_r.ConvertToAlarm(r, omcName); * * AlarmTimeStamp<T> stamp = new AlarmTimeStamp<T>(); * stamp.Alarm = sourcealarm_r; * stamp.TimeStamp = System.DateTime.Now; * stamp.OMCName = omcName; * stamp.OMCConn = omcConn; * * lock (PendingClearForcely) * PendingClearForcely.Add(stamp); * }*/ #endregion SendAlarms(pending); }
virtual protected void _checkActiveConsistency(string omcName, string omcConn) { // A - B string q = "select * from " + ActiveTable + " where OMCName='" + omcName + "'"; q += " and TKSn not in (select TKSn from " + UniteActiveTable + " where OMCName='" + omcName + "')"; // OMCName也是全局唯一,不追加使用Manufacturer DataSet ds = new DataSet(); try { SqlHelper.FillDataset(Connstr, CommandType.Text, q, ds, new string[] { "temp" }); ClearNMAlarm(omcName, Constants.MO_SYSDB, Constants.TKALM_SYSDBALM, DateTime.Now); } catch (SqlException ex) { RaiseNMAlarm(omcName, Constants.MO_SYSDB, Constants.TKALM_SYSDBALM, ex.Message, DateTime.Now); SendLog(ex.ToString()); } List <TKAlarm> pending = new List <TKAlarm>(); foreach (DataRow r in ds.Tables["temp"].Rows) { T sourcealarm = new T(); sourcealarm.ActiveTable = ActiveTable; sourcealarm.ResumeTable = ResumeTable; sourcealarm.BuildFromDB(r); TKAlarm tkalarm = ConvertToTKAlarm(sourcealarm); pending.Add(tkalarm); if (PendingRunFlag == 0) { return; } } // (B-A) q = "select * from " + UniteActiveTable + " where OMCName='" + omcName + "'"; q += " and TKSn not in (select TKSn from " + ActiveTable + " where OMCName='" + omcName + "')"; ds.Tables.Clear(); try { SqlHelper.FillDataset(Connstr, CommandType.Text, q, ds, new string[] { "temp" }); ClearNMAlarm(omcName, Constants.MO_SYSDB, Constants.TKALM_SYSDBALM, DateTime.Now); } catch (Exception ex) { RaiseNMAlarm(omcName, Constants.MO_SYSDB, Constants.TKALM_SYSDBALM, ex.Message, DateTime.Now); SendLog(ex.ToString()); } foreach (DataRow r in ds.Tables["temp"].Rows) { int tksn = Convert.ToInt32(r["TKSn"]); q = "select * from " + ResumeTable + " where tksn=" + tksn; try { DataSet temp = new DataSet(); SqlHelper.FillDataset(Connstr, CommandType.Text, q, temp, new string[] { "temp" }); ClearNMAlarm(omcName, Constants.MO_SYSDB, Constants.TKALM_SYSDBALM, DateTime.Now); if (temp.Tables["temp"].Rows.Count == 0) { // 作为垃圾告警处理 TKAlarm tkalarm_garbage = new TKAlarm(); tkalarm_garbage.ConvertFromDB(r); tkalarm_garbage.ClearTime = Constants.GARBAGE_CLEARTIME; SendAlarm(tkalarm_garbage); } else { T sourcealarm_r = new T(); sourcealarm_r.ActiveTable = ActiveTable; sourcealarm_r.ResumeTable = ResumeTable; sourcealarm_r.BuildFromDB(temp.Tables["temp"].Rows[0]); TKAlarm alarm = ConvertToTKAlarm(sourcealarm_r); pending.Add(alarm); } } catch (SqlException ex) { RaiseNMAlarm(omcName, Constants.MO_SYSDB, Constants.TKALM_SYSDBALM, ex.Message, DateTime.Now); SendLog(ex.ToString()); } if (PendingRunFlag == 0) { return; } } SendAlarms(pending); }
/// <summary> /// 更新界面状态 /// </summary> /// <param name="sourceomc"></param> /// <param name="obj"></param> /// <param name="name"></param> /// <param name="detail"></param> /// <param name="occurtime"></param> /// <returns></returns> public bool RaiseNMAlarm(string sourceomc, string obj, string name, string detail, DateTime occurtime) { TKAlarm tkalarm = null; try { lock (m_NMAlarms) { if (!m_NMAlarms.ContainsKey(sourceomc)) { return(false); } if (!m_NMAlarms[sourceomc].ContainsKey(obj)) { return(false); } if (!m_NMAlarms[sourceomc][obj].ContainsKey(name)) { return(false); } NMAlarm a = m_NMAlarms[sourceomc][obj][name]; if (a.TKSn != "" && a.ClearTime == "") { a.LastOccurTime = occurtime.ToString(); return(false); // 告警已经发生过,尚未恢复 } a.SourceOMC = sourceomc; a.Object = obj; a.AlarmName = name; a.OccurTime = occurtime.ToString(); a.LastOccurTime = occurtime.ToString(); a.ClearTime = ""; a.Detail = detail; a.TKSn = ""; a.ActiveTable = UniteTKActiveTable; a.ResumeTable = UniteTKResumeTable; tkalarm = ConvertNMToTKAlarm(a); try { TempStorageHelper.Instance().Store <NMAlarm>(Convert.ToInt64(a.TKSn), a); SqlHelper.ExecuteNonQuery(Connstr, CommandType.Text, a.GetSql()); TempStorageHelper.Instance().Clear <NMAlarm>(Convert.ToInt64(a.TKSn)); } catch (Exception ex) { // 存储网管告警出异常不再发出告警 // 不继续抛出告警, 允许继续往服务器发送告警 SendLog(ex.ToString()); } } try { if (tkalarm != null) { SendAlarm(tkalarm); } } catch (Exception ex) { // 向服务器发送告警失败,只记录日志,不影响程序运行 SendLog(ex.ToString()); return(false); } } catch (Exception ex) { SendLog(ex.ToString()); return(false); } return(true); }
protected void SendAlarm(TKAlarm alarm) { AdapterAlarmReport(alarm); }
/// <summary> /// 清楚告警,此处没用到 /// </summary> /// <param name="sourceomc"></param> /// <param name="obj"></param> /// <param name="name"></param> /// <param name="cleartime"></param> /// <returns></returns> public bool ClearNMAlarm(string sourceomc, string obj, string name, DateTime cleartime) { try { TKAlarm tkalarm = null; lock (m_NMAlarms) { if (!m_NMAlarms.ContainsKey(sourceomc)) { return(false); } if (!m_NMAlarms[sourceomc].ContainsKey(obj)) { return(false); } if (!m_NMAlarms[sourceomc][obj].ContainsKey(name)) { return(false); } NMAlarm a = m_NMAlarms[sourceomc][obj][name]; if (a.TKSn == "" || a.ClearTime != "") { return(false); //告警已经恢复,恢复动作无效 } a.ClearTime = cleartime.ToString(); a.ActiveTable = UniteTKActiveTable; a.ResumeTable = UniteTKResumeTable; tkalarm = ConvertNMToTKAlarm(a); try { SqlHelper.ExecuteNonQuery(Connstr, CommandType.Text, a.GetSql()); } catch (Exception ex) { // 存储网管告警出异常不再发出告警 // 不继续抛出告警, 允许继续往服务器发送告警 SendLog(ex.ToString()); } } try { if (tkalarm != null) { SendAlarm(tkalarm); } } catch (Exception ex) { SendLog(ex.ToString()); return(false); } } catch (Exception ex) { SendLog(ex.ToString()); return(false); } return(true); }