コード例 #1
0
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();
}
コード例 #2
0
		CAsyncIOInit()
		{
			ASockIOInit();
			ZION_ASSERT(!m_workers);
			ZION_ASSERT(!m_iopool);
			m_workers = CreateWorkers(1);
			m_iopool = AllocIoBufferPool(1024, 1024, 0, 0);
		}
コード例 #3
0
ファイル: ServerApp.cpp プロジェクト: luozhishen/gameengine
	CServerApp::CServerApp(_U32 nIOThreadCount)
	{
		m_hIOWorkers = CreateWorkers(nIOThreadCount);
		sock_addr(&m_saRPC, 0, 0);
		sock_addr(&m_saListen, 0, 0);
	}
コード例 #4
0
ファイル: ServerApp.cpp プロジェクト: luozhishen/gameengine
	CServerTaskManager::CServerTaskManager()
	{
		m_hWorkers = CreateWorkers(0);
	}
コード例 #5
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();
}
コード例 #6
0
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;
}
コード例 #7
0
ファイル: main.cpp プロジェクト: s-alexander/UPGM
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;
}