예제 #1
0
 public FiberTl1Wrapper(string ipaddress, int port, string username, string password, int interval, string connstr,
                        int telnetTimeout, Encoding omcEncoding, EventWaitHandle handle, ManuCommandsBuilder commBuilder,
                        WatchDog.IWatchDog dog)
     : base(ipaddress, port, username, password, interval, connstr, telnetTimeout, omcEncoding,
            handle, commBuilder, dog)
 {
 }
예제 #2
0
        protected void Init()
        {
            SQLUtil.s_conn = m_Connstr;
            m_omc          = SQLUtil.GetOMCInfo(m_Connstr, m_SvrID);
            m_condition    = string.Format("where city='{0}' and manufacturer='{1}' and omcName='{2}'",
                                           m_omc.Omc.City, m_omc.Omc.Manufacturer, m_omc.Omc.OmcName);
            InitCommandBuilder();//对bell,实际调用的是HGU_Bell_Adapter.InitCommandBuilder
            m_tasks           = new Queue <Task>();
            m_oltOfflineTasks = new Queue <Task>();

            WatchDog.WatchDogFactory.Instance().CreateWatchDogsFromFile("watchdog.xml");
            m_dog = WatchDog.WatchDogFactory.Instance().GetWatchDog(Name, Name);

            m_loginStr       = m_commBuilder.GetLoginStr(m_omc.User, m_omc.Pwd);
            m_logoutStr      = m_commBuilder.GetLogoutStr(m_omc.User);
            m_idleHandles[0] = new AutoResetEvent(false);
            m_idleHandles[1] = new AutoResetEvent(false);

            m_idleHandles[2] = new AutoResetEvent(false);
            m_idleHandles[3] = new AutoResetEvent(false);

            InitTl1Client();//对bell而言,实际调用的是HGU_Bell_Adapter.InitTl1Client

            SubscribeTl1(m_tl1Clients[0]);
            SubscribeTl1(m_tl1Clients[1]);

            SubscribeTl1(m_tl1Clients[2]);
            SubscribeTl1(m_tl1Clients[3]);
        }
예제 #3
0
 private void DoWork(WatchDog.IWatchDog dog)
 {
     GetReplyBossMsg("vTaskReplyBossMsg", ReplyType.NormalTask);
     GetReplyBossMsg("vRollbackTaskReplyBossMsg", ReplyType.RollbackTask);
     GetReplyBossMsg("vNetDelayReplyBossMsg", ReplyType.NetInterrupt);
     if (dog != null)
     {
         dog.Feed();
     }
 }
예제 #4
0
        virtual protected void _OMCDBRetriever(object para)
        {
            string omcName = para as string;
            string omcConn = "";

            lock (m_OMCAddresses)
            {
                if (m_OMCAddresses.ContainsKey(omcName))
                {
                    omcConn = m_OMCAddresses[omcName];
                }
                else
                {
                    return;
                }
            }

            try
            {
                m_StopPrivilege.AcquireReaderLock(-1);

                WatchDog.IWatchDog dog = WatchDog.WatchDogFactory.Instance().GetWatchDog(Name, omcName);

                try
                {
                    SendStateChange(omcName, "运行");
                }
                catch { }

                SendLog("正在检查:" + Name + "的" + omcName + "的告警数据一致性...");

                try
                {
                    /// 检查活动告警的一致性
                    _checkActiveConsistency(omcName, omcConn);
                    if (dog != null)
                    {
                        dog.Feed();
                    }

                    /// 检查TK网管活动告警的一致性
                    _checkNMActiveConsistency(omcName, omcConn);

                    /// 检查历史告警的一致性
                    _checkResumeConsistency(omcName, omcConn);
                    if (dog != null)
                    {
                        dog.Feed();
                    }

                    /// 清除所有网管告警
                    ClearNMAlarm(omcName, Constants.MO_PROCESS, Constants.TKALM_PROCESSALM, DateTime.Now);
                }
                catch (Exception ex)
                {
                    RaiseNMAlarm(omcName, Constants.MO_PROCESS, Constants.TKALM_PROCESSALM, ex.Message, DateTime.Now);
                    SendLog(ex.ToString());
                }
                finally
                {
                    SendLog("检查完毕:" + Name + "的" + omcName + "的告警数据一致性.");
                }

                while (PendingRunFlag == 1)
                {
                    try
                    {
                        //AdapterStateReport(AdapterStatus.Working, null);

                        SendLog("开始获取" + omcName + "的新增告警");
                        _getNewActiveAlarms(omcName, omcConn);
                        if (dog != null)
                        {
                            dog.Feed();
                        }

                        if (PendingRunFlag == 0)
                        {
                            ClearNMAlarm(omcName, Constants.MO_PROCESS, Constants.TKALM_PROCESSALM, DateTime.Now);
                            break;
                        }
                        else
                        {
                            Thread.Sleep(0);
                        }

                        SendLog("开始检查" + omcName + "的活动告警状态");
                        _clearStalledActiveAlarms(omcName, omcConn);
                        if (dog != null)
                        {
                            dog.Feed();
                        }

                        if (PendingRunFlag == 0)
                        {
                            ClearNMAlarm(omcName, Constants.MO_PROCESS, Constants.TKALM_PROCESSALM, DateTime.Now);
                            break;
                        }
                        else
                        {
                            Thread.Sleep(0);
                        }

                        SendLog("开始获取" + omcName + "的瞬断告警");
                        _fetchTransientAlarms(omcName, omcConn);
                        if (dog != null)
                        {
                            dog.Feed();
                        }

                        if (PendingRunFlag == 0)
                        {
                            ClearNMAlarm(omcName, Constants.MO_PROCESS, Constants.TKALM_PROCESSALM, DateTime.Now);
                            break;
                        }
                    }
                    catch (Exception ex)
                    {
                        RaiseNMAlarm(omcName, Constants.MO_PROCESS, Constants.TKALM_PROCESSALM, ex.Message, DateTime.Now);
                        SendLog(ex.ToString());
                    }

                    //AdapterStateReport(AdapterStatus.Running, null);

                    int i = m_Interval % 1000;
                    for (; i < m_Interval; i += 1000)
                    {
                        if (Interlocked.Read(ref m_PendingRun) == 0)
                        {
                            break;
                        }
                        Thread.Sleep(1000);

                        try
                        {
                            if (i % 60 == 0)
                            {
                                if (dog != null)
                                {
                                    dog.Feed();
                                }
                            }
                        }
                        catch { }
                    }
                }
            }
            finally
            {
                m_StopPrivilege.ReleaseReaderLock();

                try
                {
                    SendStateChange(omcName, "停止");
                }
                catch { }
            }
        }
예제 #5
0
        protected override void _OMCDBRetriever(object para)
        {
            omcName = para as string;
            string omcConn = "";

            lock (m_OMCAddresses)
            {
                if (m_OMCAddresses.ContainsKey(omcName))
                {
                    omcConn = m_OMCAddresses[omcName];
                }
                else
                {
                    return;
                }
            }

            try
            {
                m_StopPrivilege.AcquireReaderLock(-1);
                WatchDog.IWatchDog dog = WatchDog.WatchDogFactory.Instance().GetWatchDog(Name, omcName);

                while (PendingRunFlag == 1)
                {
                    try
                    {
                        DoWork(dog);
                        if (dog != null)
                        {
                            dog.Feed();
                        }
                        if (PendingRunFlag == 0)
                        {
                            ClearNMAlarm(omcName, Constants.MO_PROCESS, Constants.TKALM_PROCESSALM, DateTime.Now);
                            break;
                        }
                        else
                        {
                            Thread.Sleep(0);
                        }
                    }
                    catch (Exception ex)
                    {
                        RaiseNMAlarm(omcName, Constants.MO_PROCESS, Constants.TKALM_PROCESSALM, ex.Message, DateTime.Now);
                        SendLog(ex.ToString());
                    }

                    int i = m_Interval % 1000;
                    for (; i < m_Interval; i += 1000)
                    {
                        if (Interlocked.Read(ref m_PendingRun) == 0)
                        {
                            break;
                        }
                        Thread.Sleep(1000);
                    }
                }
            }
            finally
            {
                m_StopPrivilege.ReleaseReaderLock();
            }
        }