void Puzzle::Run(const std::string& in_fileName, unsigned int in_runtime, const std::string& in_saveFilename) { m_saveFileName = in_saveFilename; m_randEngine.seed(rand()); unsigned int workerCount; Setup(in_fileName, m_populationSize, workerCount); CreateWorkers(workerCount); boost::chrono::seconds runTimeSeconds(in_runtime); boost::thread deleteThread = boost::thread(boost::bind(&Puzzle::DestroyerThread, this)); boost::thread mainThread = boost::thread(boost::bind(&Puzzle::WorkerGenerator, this)); boost::this_thread::sleep_for(runTimeSeconds); mainThread.interrupt(); mainThread.join(); deleteThread.interrupt(); deleteThread.join(); std::cout << "BEST CREATURE:" << std::endl << (*m_polulation)[0]->ToString(); }
CAsyncIOInit() { ASockIOInit(); ZION_ASSERT(!m_workers); ZION_ASSERT(!m_iopool); m_workers = CreateWorkers(1); m_iopool = AllocIoBufferPool(1024, 1024, 0, 0); }
CServerApp::CServerApp(_U32 nIOThreadCount) { m_hIOWorkers = CreateWorkers(nIOThreadCount); sock_addr(&m_saRPC, 0, 0); sock_addr(&m_saListen, 0, 0); }
CServerTaskManager::CServerTaskManager() { m_hWorkers = CreateWorkers(0); }
int main(int argc, char **argv) { llLogger *mesg = _llLogger(); llUtils *utils = _llUtils(); llCommands *batch = new llCommands(); //Oblivion std-values: _llUtils()->SetValue("_gamemode", "Oblivion"); _llUtils()->SetValue("_mindistance", "256"); _llUtils()->SetValue("_cellsize_x", "4096"); _llUtils()->SetValue("_cellsize_y", "4096"); _llUtils()->SetValue("_quadsize_x", "131072"); _llUtils()->SetValue("_quadsize_y", "131072"); _llUtils()->SetValue("_quad_levels", "1"); _llUtils()->SetValue("_dds_tool", "s3tc.exe"); _llUtils()->SetValue("_worldspaceid", "60"); _llUtils()->SetValue("_worldspace", "Tamriel"); _llUtils()->SetValue("_density_threshold", "95"); std::cout << "Landscape LOD generator" << std::endl; std::cout << "Written by gruftikus@github" << std::endl; std::cout << "V5.14, 23.12.2015" << std::endl; std::cout << "***********************" << std::endl; char *list_string = NULL; //****************** //read the arguments //****************** if (_stricmp(argv[argc-1], "-h") == 0 || _stricmp(argv[argc-1], "--help") == 0) { usage(); DumpExit(); } char *batchname = NULL; //check if last option is a filename int has_eq=0, has_dot=0; if (argc > 1) { for (unsigned int i=0; i<strlen(argv[argc-1]); i++) { if (argv[argc-1][i] == '.') has_dot++; if (argv[argc-1][i] == '=') has_eq++; } } if (has_dot && !has_eq) batchname = argv[argc-1]; char *section = NULL; int num = argc; if (batchname) num--; for (int i=1; i<num; i++) { if (strcmp(argv[i],"-f")==0) { //flagliste holen char *ptr; char *saveptr1 = NULL; ptr = strtok_int(argv[i+1], ',', &saveptr1); while(ptr != NULL) { char *my_flag_list=new char[strlen(ptr)+2]; strcpy_s(my_flag_list,strlen(ptr)+1,ptr); ptr = strtok_int(NULL, ',', &saveptr1); utils->AddFlag(my_flag_list); mesg->WriteNextLine(-LOG_INFO, "Flag: %s", my_flag_list); } i++; } else if (strcmp(argv[i],"-l")==0) { list_string = argv[i+1]; mesg->WriteNextLine(-LOG_INFO, "Mod list: %s", list_string); i++; } else if (strcmp(argv[i],"-w")==0) { utils->SetValue("_worldspace", argv[i+1]); mesg->WriteNextLine(-LOG_INFO, "Worldspace: %s", utils->GetValue("_worldspace")); } else if (argv[i][0] != '[') { char *my_flag_list = new char[strlen(argv[i])+2]; strcpy_s(my_flag_list, strlen(argv[i])+1, argv[i]); utils->AddFlag(my_flag_list); mesg->WriteNextLine(LOG_INFO, "Flag: %s", my_flag_list); } else section = argv[i]; } if (batchname) mesg->WriteNextLine(-LOG_INFO, "Batchfile: %s", batchname); else mesg->WriteNextLine(-LOG_INFO, "No batchfile, will read from stdin (type @end for compilation)"); if (!section) section = "[tes4ll]"; mesg->Dump(); CreateWorkers(batch); mesg->Dump(); if (list_string) _llUtils()->SetValue("_modlist", list_string); //TES-specific stuff: batch->RegisterWorker(new llParseModList()); batch->RegisterWorker(new llExportMeshToNif()); batch->RegisterWorker(new llExportBS()); batch->RegisterWorker(new llImportMapFromModlist()); batch->RegisterWorker(new TES4qLOD()); batch->RegisterWorker(new llBsaIterator()); batch->RegisterWorker(new llReadLodSettings()); //****************** //open the batch //****************** if (batchname && _stricmp(batchname, "stdin") != 0) { if (!batch->Open(batchname, section)) DumpExit(); batch->ReadCache(); batch->CompileScript(0); } else { batch->ReadStdin(section); batch->ReadCache(); batch->CompileScript(0); } return batch->Loop(); }
DWORD main(int argc, char **argv) { HANDLE hCompletionPort; BOOL fNeedHelp = FALSE; WCHAR wzzDrop[1024] = L"build\0nmake\0"; GetSystemTimeAsFileTime((FILETIME *)&s_llStartTime); StringCchPrintfA(s_szPipe, ARRAYSIZE(s_szPipe), "%s.%d", TBLOG_PIPE_NAME, GetCurrentProcessId()); int arg = 1; for (; arg < argc && (argv[arg][0] == '-' || argv[arg][0] == '/'); arg++) { CHAR *argn = argv[arg] + 1; CHAR *argp = argn; while (*argp && *argp != ':' && *argp != '=') { argp++; } if (*argp == ':' || *argp == '=') { *argp++ = '\0'; } switch (argn[0]) { case 'd': // Drop Processes case 'D': if (*argp) { PWCHAR pwz = wzzDrop; while (*argp) { if (*argp == ';') { *pwz++ = '\0'; } else { *pwz++ = *argp++; } } *pwz++ = '\0'; *pwz = '\0'; } case 'o': // Output file. case 'O': StringCchCopyA(s_szLogFile, ARRAYSIZE(s_szLogFile), argp); break; case 'v': // Verbose case 'V': s_fVerbose = TRUE; break; case '?': // Help. fNeedHelp = TRUE; break; default: fNeedHelp = TRUE; printf("TRACEBLD: Bad argument: %s:%s\n", argn, argp); break; } } if (arg >= argc) { fNeedHelp = TRUE; } if (fNeedHelp) { printf("Usage:\n" " tracebld [options] command {command arguments}\n" "Options:\n" " /o:file Log all events to the output files.\n" " /? Display this help message.\n" "Summary:\n" " Runs the build commands and figures out which files have dependencies..\n" "\n"); exit(9001); } // Create the completion port. hCompletionPort = CreateIoCompletionPort(INVALID_HANDLE_VALUE, NULL, NULL, 0); if (hCompletionPort == NULL) { MyErrExit("CreateIoCompletionPort"); } // Create completion port worker threads. // CreateWorkers(hCompletionPort); CreatePipeConnection(hCompletionPort, 0); printf("TRACEBLD: Ready for clients. Press Ctrl-C to stop.\n"); /////////////////////////////////////////////////////////// Validate DLLs. // CHAR szTmpPath[MAX_PATH]; CHAR szExePath[MAX_PATH]; CHAR szDllPath[MAX_PATH]; PCHAR pszFilePart = NULL; if (!GetModuleFileNameA(NULL, szTmpPath, ARRAYSIZE(szTmpPath))) { printf("TRACEBLD: Couldn't retreive exe name.\n"); return 9002; } if (!GetFullPathNameA(szTmpPath, ARRAYSIZE(szExePath), szExePath, &pszFilePart) || pszFilePart == NULL) { printf("TRACEBLD: Error: %s is not a valid path name..\n", szTmpPath); return 9002; } StringCchCopyA(pszFilePart, szExePath + ARRAYSIZE(szExePath) - pszFilePart, "trcbld" DETOURS_STRINGIFY(DETOURS_BITS) ".dll"); StringCchCopyA(szDllPath, ARRAYSIZE(szDllPath), szExePath); ////////////////////////////////////////////////////////////////////////// STARTUPINFOA si; PROCESS_INFORMATION pi; CHAR szCommand[2048]; CHAR szExe[MAX_PATH]; CHAR szFullExe[MAX_PATH] = "\0"; PCHAR pszFileExe = NULL; ZeroMemory(&si, sizeof(si)); ZeroMemory(&pi, sizeof(pi)); si.cb = sizeof(si); szCommand[0] = L'\0'; StringCchCopyA(szExe, sizeof(szExe), argv[arg]); for (; arg < argc; arg++) { if (strchr(argv[arg], ' ') != NULL || strchr(argv[arg], '\t') != NULL) { StringCchCatA(szCommand, sizeof(szCommand), "\""); StringCchCatA(szCommand, sizeof(szCommand), argv[arg]); StringCchCatA(szCommand, sizeof(szCommand), "\""); } else { StringCchCatA(szCommand, sizeof(szCommand), argv[arg]); } if (arg + 1 < argc) { StringCchCatA(szCommand, sizeof(szCommand), " "); } } printf("TRACEBLD: Starting: `%s'\n", szCommand); printf("TRACEBLD: with `%s'\n", szDllPath); fflush(stdout); DWORD dwFlags = CREATE_DEFAULT_ERROR_MODE | CREATE_SUSPENDED; SetLastError(0); SearchPathA(NULL, szExe, ".exe", ARRAYSIZE(szFullExe), szFullExe, &pszFileExe); if (!DetourCreateProcessWithDllExA(szFullExe[0] ? szFullExe : NULL, szCommand, NULL, NULL, TRUE, dwFlags, NULL, NULL, &si, &pi, szDllPath, NULL)) { printf("TRACEBLD: DetourCreateProcessWithDllEx failed: %d\n", GetLastError()); ExitProcess(9007); } ZeroMemory(&s_Payload, sizeof(s_Payload)); s_Payload.nParentProcessId = GetCurrentProcessId(); s_Payload.nTraceProcessId = GetCurrentProcessId(); s_Payload.nGeneology = 1; s_Payload.rGeneology[0] = 0; StringCchCopyW(s_Payload.wzStdin, ARRAYSIZE(s_Payload.wzStdin), L"\\\\.\\CONIN$"); StringCchCopyW(s_Payload.wzStdout, ARRAYSIZE(s_Payload.wzStdout), L"\\\\.\\CONOUT$"); StringCchCopyW(s_Payload.wzStderr, ARRAYSIZE(s_Payload.wzStderr), L"\\\\.\\CONOUT$"); StringCchCopyW(s_Payload.wzParents, ARRAYSIZE(s_Payload.wzParents), L""); CopyEnvironment(s_Payload.wzzDrop, wzzDrop); LPWCH pwStrings = GetEnvironmentStringsW(); CopyEnvironment(s_Payload.wzzEnvironment, pwStrings); FreeEnvironmentStringsW(pwStrings); if (!DetourCopyPayloadToProcess(pi.hProcess, s_guidTrace, &s_Payload, sizeof(s_Payload))) { printf("TRACEBLD: DetourCopyPayloadToProcess failed: %d\n", GetLastError()); ExitProcess(9008); } ResumeThread(pi.hThread); WaitForSingleObject(pi.hProcess, INFINITE); DWORD dwResult = 0; if (!GetExitCodeProcess(pi.hProcess, &dwResult)) { printf("TRACEBLD: GetExitCodeProcess failed: %d\n", GetLastError()); return 9008; } printf("TRACEBLD: %d processes.\n", s_nTotalClients); return dwResult; }
void WorkInit() { /* Init logs */ LogInit(); if (payguide::working) LogWrite(LOGMSG_WARNING, "Initializing payuguide server... "); else LogWrite(LOGMSG_WARNING, "Restarting payuguide server... "); /* Load config file */ LogWrite(LOGMSG_SYSTEM, "Loading configuration file from /etc/payguide.cfg"); if (ReloadConfigValues("/etc/payguide.cfg")!=0) LogWrite(LOGMSG_WARNING, "Can't load /etc/payguide.cfg - using default values instead."); else LogWrite(LOGMSG_SYSTEM, "Configuration file /etc/payguide.cfg loaded."); if (pc_init_result==-1) { if (payguide::bind_interface!="all" && payguide::bind_interface!="ALL") pc_init_result=PCInit(payguide::pc_port, 100, payguide::bind_interface.c_str(), payguide::users_filename.c_str(), payguide::package_timeout); else pc_init_result=PCInit(payguide::pc_port, 100, NULL, payguide::users_filename.c_str(), payguide::package_timeout); } /* Loading pay modules from *.so files */ LogWrite(LOGMSG_SYSTEM, "Loading pay modules (*.so files)"); payguide::modules_list = LoadModules(payguide::modules_path.c_str()); LogWrite(LOGMSG_SYSTEM, "Pay modules loaded."); /* Loading default module */ payguide::null_pay_sys=GetPaySysBySoName("libnull.so"); if (payguide::null_pay_sys==NULL) { LogWrite(LOGMSG_CRITICAL, "Critical error - can't load NULL pay system (libnull.so)"); // std::cout << "Critical error - can't load NULL pay system (libnull.so)" << std::endl; payguide::quit=true; payguide::working=false; RemoveLockFile(); exit(1); } /* Loading operators */ LogWrite(LOGMSG_SYSTEM, "Loading operators..."); payguide::operators_list = LoadOperators(payguide::operators_path.c_str()); LogWrite(LOGMSG_SYSTEM, "Operators loaded."); /* Creating thread_min workers */ { char logmsg[256]; snprintf(logmsg, 255, "Creating %i threads...",payguide::thread_min);LogWrite(LOGMSG_SYSTEM,logmsg); } sem_wait(&payguide::free_workers_lock); payguide::workers_list = CreateWorkers(payguide::thread_min); payguide::working_workers=0; LogWrite(LOGMSG_SYSTEM, "Threads created."); /* Free worker is a first worker in list */ payguide::workers_list->ResetCursor(); payguide::free_worker=payguide::workers_list->GetNext(); sem_post(&payguide::free_workers_lock); /* Init MySQL database */ if (0==DBInit(&payguide::db_host, &payguide::db_name, &payguide::db_user, &payguide::db_password)) LogWrite(LOGMSG_SYSTEM, "Connection to MySQL database established."); else LogWrite(LOGMSG_ERROR, "Connection to MySQL database failed."); LoadAllInitSO(payguide::modules_init_path.c_str()); return; }