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; }
int _tmain(int argc, _TCHAR* argv[]) { //예외 핸들러 등록 SFBreakPad exceptionHandler; exceptionHandler.Install(); //파라메터가 존재할 경우 서비스 등록 및 삭제 루틴을 실행한다. if (argc == 2) { ControlService(argc, argv); return 0; } #ifdef _DEBUG ServiceWorkerThread(NULL); #else //서비스 메인 등록 SERVICE_TABLE_ENTRY ServiceTable[] = { { argv[0], (LPSERVICE_MAIN_FUNCTION)ServiceMain }, { NULL, NULL } }; if (StartServiceCtrlDispatcher(ServiceTable) == FALSE) { return 0; } #endif return 0; }
int _tmain(int argc, _TCHAR* argv[]) { SFBreakPad exceptionHandler; exceptionHandler.Install(); EchoLogicEntry* pLogicEntry = new EchoLogicEntry(); auto errorCode = SFEngine::GetInstance()->Intialize(pLogicEntry); if (errorCode != NET_ERROR_CODE::SUCCESS) { return 0; } SFEngine::GetInstance()->AddPacketProtocol(0, new SFPacketProtocol<SFEchoProtocol>); SFEngine::GetInstance()->Start(0); getchar(); SFEngine::GetInstance()->ShutDown(); return 0; }