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; }
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 중에 문제가 발생함"; } } } }
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; }
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); }