Esempio n. 1
0
        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,可能未做任何比较
        }
Esempio n. 2
0
        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;
                    }
                }
            }
        }
Esempio n. 3
0
        /// <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));
            }
        }
Esempio n. 4
0
 /// <summary>
 /// 向待发送队列中插入一组告警
 /// </summary>
 /// <param name="alarmlist"></param>
 public void FillAlarm(ArrayList alarmlist)
 {
     foreach (object obj in alarmlist)
     {
         TKAlarm alarm = (TKAlarm)obj;
         FillAlarm(alarm);
     }
 }
Esempio n. 5
0
        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);
        }
Esempio n. 6
0
 protected void AdapterAlarmReport(TKAlarm alarm)
 {
     try
     {
         CommandMsgV2 msg = alarm.ConvertToMsg();
         m_CommClient.PostCommand(msg);
     }
     catch (Exception ex)
     {
         SendLog(ex.ToString());
     }
 }
Esempio n. 7
0
 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();
     }
 }
Esempio n. 8
0
 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;
 }
Esempio n. 9
0
        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);
        }
Esempio n. 10
0
        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);
        }
Esempio n. 11
0
        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);
        }
Esempio n. 12
0
        /// <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);
        }
Esempio n. 13
0
 protected void SendAlarm(TKAlarm alarm)
 {
     AdapterAlarmReport(alarm);
 }
Esempio n. 14
0
        /// <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);
        }