int prepare_files_taskqueue() { if (is_no_task()) { LOG_STRING("No task in the task queue."); return -1; } TaskArray::iterator it = tasklist.begin(); TaskPtr p = NULL; for(; it != tasklist.end(); ++it) { p= *it; //if (0 != download_task_files(p)) //{ // return -2; //} char lpath[512]; sprintf(lpath, "%s\\%s", document_root, p->subdir); //::CreateDirectory(lpath, NULL); mg_mkdir(lpath, 0); } // g_tqs = TQS_READY; return 0; }
void Executor::executor_func(void * arg) { Executor *executor=(Executor*)arg; executor->mLog.msg("Thread executor id %llu is now alive and waiting ...\n",executor->id().value); TaskArray jobArray; while(executor->mIsRunningInternal.test_and_set()) { jobArray.clear(); executor->queue()->get(jobArray,1,true); if (!jobArray.empty()) { executor->mJobTimer.restart(); auto current = jobArray.begin(); while (current != jobArray.end()) { executor->mStats.jobsExecuted++; TaskResult::Result result=current->execute(executor->id(),InterruptPoint(&executor->mIsRunningExternal)); if(result==TaskResult::Skipped) executor->mStats.jobsSkipped++; else if (result==TaskResult::Success) executor->mStats.jobsSucesfullyExecuted++; ++current; } executor->mStats.busyMilliseconds+=executor->mJobTimer.elapsedTimeMilliseconds(); } } executor->mLog.msg("Thread executor %llu is terminating ...\n",executor->id().value); }
int is_task_already_exist(TaskPtr t) { TaskArray::iterator it = tasklist.begin(); for(; it != tasklist.end(); ++it) { TaskPtr p = *it; if (t->id == p->id) { return 1; } } return 0; }
int all_tasks_to_string( char *buffer ) { if (NULL == buffer) { LOG_STRING("Passing NULL to all_tasks_to_string!!"); return -1; } if (tasklist.empty()) { LOG_STRING("Tasklist is empty!!"); return -2; } UString tmp = ""; char buf[1024]; TaskPtr p; int s = 0; TaskArray::iterator it = tasklist.begin(); tmp += "<Tasks>"; for(; it != tasklist.end(); ++it) { p= *it; s = (int)p->ts; sprintf(buf, "<task>" "<id>%d</id>" "<name>%s</name>" "<sid>%d</sid>" "<subdir>%s</subdir>" "<status>%s</status>" "</task>", p->id, p->name, p->sid, p->subdir, TaskStateText[s]); tmp += buf; } tmp += "</Tasks>"; sprintf(buffer, "%s", tmp.c_str()); return 0; }
void cleanup_task() { TaskPtr t; while(!qu.empty()) { t=qu.front(); qu.pop(); delete t; } TaskArray::iterator it = qu_back.begin(); for(; it != qu_back.end(); ++it) { t= *it; delete t; } qu_back.clear(); tasklist.clear(); }