Beispiel #1
0
        void MonitorSelectTimer_Function(object sender, EventArgs e)
        {
            Monitoring_Select_Timer_.Enabled = false;

            if (CheckerINIManager.Instance.MonitorSeq_ > 0)
            {
                Int32 Result       = 0;
                Int32 ChannelSeq   = 0;
                Int32 AuthoritySeq = 0;
                Int32 Mode         = 0;
                Int32 CrawlerSeq   = 0;

                CheckerDBInterface.UpdateCrawlerMonitorInfo(CheckerAppManager.Instance.DB(), CheckerINIManager.Instance.MonitorSeq_
                                                            , UTIL.CLIENTIP, CheckerINIManager.Instance.ListenCrawlerPort_, "OK", ref Result, ref ChannelSeq, ref AuthoritySeq
                                                            , ref Mode, ref CrawlerSeq);

                if (Result > 0 && ChannelSeq > 0 && AuthoritySeq > 0 && Mode > 0 && CrawlerSeq > 0)
                {
                    SetInfo();
                    StartChecker(AuthoritySeq, ChannelSeq, CrawlerSeq, Mode);
                    return;
                }
                else
                {
                    SetInfo();
                    CheckerAppManager.Instance.CHECKER_STATE_ = CHECKER_STATE.WAIT_MONITOR_TABLE_SET;
                }
            }

            LastSelectCheckTime_             = Environment.TickCount;
            Monitoring_Select_Timer_.Enabled = true;
        }
Beispiel #2
0
        void ConnectDBAndGetCrawlerInfo()
        {
            bool bResult = ConnectDB();

            if (bResult == true)
            {
                if (CheckerINIManager.Instance.MonitorSeq_ > 0)
                {
                    Int32 Result       = 0;
                    Int32 ChannelSeq   = 0;
                    Int32 AuthoritySeq = 0;
                    Int32 Mode         = 0;
                    Int32 CrawlerSeq   = 0;

                    CheckerDBInterface.UpdateCrawlerMonitorInfo(CheckerAppManager.Instance.DB(), CheckerINIManager.Instance.MonitorSeq_
                                                                , UTIL.CLIENTIP, CheckerINIManager.Instance.ListenCrawlerPort_, "OK", ref Result, ref ChannelSeq, ref AuthoritySeq
                                                                , ref Mode, ref CrawlerSeq);

                    if (Result > 0 && ChannelSeq > 0 && AuthoritySeq > 0 && Mode > 0 && CrawlerSeq > 0)
                    {
                        StartChecker(AuthoritySeq, ChannelSeq, CrawlerSeq, Mode);
                    }
                    else
                    {
                        SetInfo();
                        CheckerAppManager.Instance.CHECKER_STATE_ = CHECKER_STATE.WAIT_MONITOR_TABLE_SET;
                        InitMonitorCheckTimer();// 이제 매니저에서 제대로 등록되기만을 기다리면 된다.
                    }
                }
                else
                {
                    Int32 MonitorSeq = 0;
                    CheckerDBInterface.InsertCrawlerMonitorInfo(CheckerAppManager.Instance.DB(), UTIL.CLIENTIP
                                                                , CheckerINIManager.Instance.ListenCrawlerPort_, ref MonitorSeq);

                    if (MonitorSeq > 0)
                    {
                        CheckerINIManager.Instance.UpdateMonitorSeq(CheckerINIPath_, MonitorSeq);
                        CheckerAppManager.Instance.CHECKER_STATE_ = CHECKER_STATE.WAIT_MONITOR_TABLE_SET;
                        InitMonitorCheckTimer();// 이제 매니저에서 제대로 등록되기만을 기다리면 된다.
                    }
                    else
                    {
                        // 에러남 표시하고 아무것도 하지말자
                        CheckerAppManager.Instance.CHECKER_STATE_ = CHECKER_STATE.ERROR;
                        CheckerAppManager.Instance.ErrorString_   = "DB에 모니터링 Insert 중에 문제가 발생함";
                    }
                }
            }
        }
Beispiel #3
0
        void StateUpdateTimer_Function(object sender, EventArgs e)
        {
            State_Update_Timer_.Enabled = false;

            Int32 Result       = 0;
            Int32 ChannelSeq   = 0;
            Int32 AuthoritySeq = 0;
            Int32 Mode         = 0;
            Int32 CrawlerSeq   = 0;

            CheckerDBInterface.UpdateCrawlerMonitorInfo(CheckerAppManager.Instance.DB()
                                                        , CheckerINIManager.Instance.MonitorSeq_, UTIL.CLIENTIP, CheckerINIManager.Instance.ListenCrawlerPort_
                                                        , "OK", ref Result, ref ChannelSeq, ref AuthoritySeq, ref Mode, ref CrawlerSeq);

            LastCheckUpdateTime_ = Environment.TickCount;

            State_Update_Timer_.Enabled = true;
        }
Beispiel #4
0
        bool CheckAndRunProgram()
        {
            LastCheckTime_ = Environment.TickCount;

            if (CheckProcessID_ < 0)
            {// 자신이 실행한 프로세스 아이디가 없는경우.
                return(RestartCrawler());
            }
            else
            {// 자신이 실행한 프로세스 아이디가 있는경우. 1분이상 heartbeat 이 오지 않았다면, 끊겼거나 문제가 생겼을것이다. kill 하고 재시작 하자.
                // HeartBeat 패킷이 너무 늦고 있다. 재시작 하자.
                if (LastCheckTime_ - HeartBeatTime_ > 1000 * 60)
                {
                    NewLogManager2.Instance.Log("HeartBeat 패킷이 오지않음 다시 시작한다.");
                    CheckerDBInterface.InsertCrawlerRestartLog(CheckerAppManager.Instance.DB(), "HeartBeat 패킷이 오지않음 다시 시작한다"
                                                               , CheckerAppManager.Instance.CrawlerSeq_, CheckerINIManager.Instance.MonitorSeq_, CheckerAppManager.Instance.ChannelSeq_
                                                               , CheckerAppManager.Instance.AuthoritySeq_, "--");
                    return(RestartCrawler());
                }
            }

            return(true);
        }