static DWORD StartSevenGameService(LPDWORD param) { SFBreakPad exceptionHandler; exceptionHandler.Install(); TCHAR szFilePath[MAX_PATH] = { 0, }; GetModuleFileName(NULL, szFilePath, MAX_PATH); TCHAR* szPath = SFUtil::ExtractPathInfo(szFilePath, SFUtil::PATH_DIR); SetCurrentDirectory(szPath); SFLogicEntry* pLogicEntry = new SFLogicEntry(); pLogicEntry->AddGameMode(GAMEMODE_TRAINING, new SGTraining(GAMEMODE_TRAINING)); pLogicEntry->AddGameMode(GAMEMODE_BATTLE, new SGBattle(GAMEMODE_BATTLE)); ///////////////////////////////////////////////////////////////////// SFEngine::GetInstance()->Intialize(pLogicEntry, new SFPacketProtocol<SevenGameProtocol>); SFEngine::GetInstance()->AddTimer(0, 500, 1000); SFEngine::GetInstance()->Start(); google::FlushLogFiles(google::GLOG_INFO); #ifdef _DEBUG getchar(); #else WaitForSingleObject(SFServiceController::killServiceEvent, INFINITE); #endif SFEngine::GetInstance()->ShutDown(); return 0; }
DWORD WINAPI ServiceWorkerThread(LPVOID lpParam) { TCHAR szFilePath[MAX_PATH] = { 0, }; GetModuleFileName(NULL, szFilePath, MAX_PATH); TCHAR* szPath = SFUtil::ExtractPathInfo(szFilePath, SFUtil::PATH_DIR); SetCurrentDirectory(szPath); SFLogicEntry* pLogicEntry = new SFLogicEntry(); pLogicEntry->AddGameMode(GAMEMODE_TRAINING, new SGTraining(GAMEMODE_TRAINING)); pLogicEntry->AddGameMode(GAMEMODE_BATTLE, new SGBattle(GAMEMODE_BATTLE)); ///////////////////////////////////////////////////////////////////// SFEngine::GetInstance()->Intialize(pLogicEntry); SFEngine::GetInstance()->AddPacketProtocol(0, new SFPacketProtocol<SevenGameProtocol>); SFEngine::GetInstance()->AddTimer(0, 500, 1000); SFEngine::GetInstance()->Start(0); google::FlushLogFiles(google::GLOG_INFO); #ifdef _DEBUG getchar(); #else while (WaitForSingleObject(g_ServiceStopEvent, 0) != WAIT_OBJECT_0) { Sleep(3000); } #endif SFEngine::GetInstance()->ShutDown(); return ERROR_SUCCESS; }