static void RunJobs(void) { CronFile *file; CronLine *line; for (file = FileBase; file; file = file->cf_Next) { if (file->cf_Ready) { file->cf_Ready = 0; for (line = file->cf_LineBase; line; line = line->cl_Next) { if (line->cl_Pid < 0) { RunJob(file->cf_User, line); crondlog("\010USER %s pid %3d cmd %s\n", file->cf_User, line->cl_Pid, line->cl_Shell); if (line->cl_Pid < 0) { file->cf_Ready = 1; } else if (line->cl_Pid > 0) { file->cf_Running = 1; } } } } } }
static void RunJobs(void) { CronFile *file; CronLine *line; for (file = FileBase; file; file = file->cf_Next) { if (!file->cf_Ready) continue; file->cf_Ready = 0; for (line = file->cf_LineBase; line; line = line->cl_Next) { if (line->cl_Pid >= 0) continue; RunJob(file->cf_User, line); crondlog(LVL8 "USER %s pid %3d cmd %s", file->cf_User, (int)line->cl_Pid, line->cl_Shell); if (line->cl_Pid < 0) { file->cf_Ready = 1; } else if (line->cl_Pid > 0) { file->cf_Running = 1; } } } }
void RunJobs(void) { CronFile *file; CronLine *line; for (file = FileBase; file; file = file->cf_Next) { if (file->cf_Ready) { file->cf_Ready = 0; for (line = file->cf_LineBase; line; line = line->cl_Next) { if (line->cl_Pid == -1) { RunJob(file, line); printlogf(LOG_INFO, "FILE %s/%s USER %s PID %3d %s\n", file->cf_DPath, file->cf_FileName, file->cf_UserName, line->cl_Pid, line->cl_Description ); if (line->cl_Pid < 0) /* QUESTION how could this happen? RunJob will leave cl_Pid set to 0 or the actual pid */ file->cf_Ready = 1; else if (line->cl_Pid > 0) file->cf_Running = 1; } } } } }
//static method void RequestHandler::dispatchClientRequest(int clientfd) { ssize_t n; char line[4096]={0}; char *requestData = NULL; //while( (n=read(clientfd,line,4096))>0 ) if( (n=read(clientfd,line,4096))>0 ) { cout<<"[DEBUG] recv:"<<line<<endl; line[n]=0; if(line[n-1] == 0x0a || line[n-1] == 0x0d) { line[n-1] = 0; } //requestData = (char*)malloc(strlen(line)+1); requestData = (char*)malloc(strlen(line)+1); memset(requestData,0,strlen(line)+1); strncpy(requestData,line,strlen(line)); /* dispatch job depends on requestData */ if( strcasestr(requestData,"sql=")) { char *sql = requestData + strlen("sql="); RunJob(clientfd,m_QueryDBJob,sql); } else if(strcasestr(requestData,"file=")) { char *file = requestData + strlen("file="); RunJob(clientfd,m_GetFileJob,file); } else { Logger("request data format error!\n"); write(clientfd,"request data format error!\n",27); close(clientfd); } } if(n == 0) { Logger("client disconnect\n"); } }
void JobManager::Update() { if (m_threads.empty()) { RunJob(); } Job* finished_job; while (m_finished_jobs.dequeue(&finished_job)) { if (finished_job->m_onCompleteCB != nullptr) { finished_job->m_onCompleteCB(finished_job->arg); } delete finished_job; } }
/*>BOOL RunNextJob(char *queueDir, int verbose) -------------------------------------------- *//** \param[in] queueDir The queue directory \param[in] verbose Verbosty level \return Were there any jobs to run? Find the next job in the queue and run it - 16.10.15 Original By: ACRM */ BOOL RunNextJob(char *queueDir, int verbose) { BOOL retVal = FALSE; int nJobs, jobID; /* List the directory */ nJobs = FindJobs(queueDir, JOB_OLDEST, &jobID); if(nJobs) { /* Run the job */ RunJob(queueDir, jobID, verbose); retVal = TRUE; } else if(verbose >= 2) { Message(PROGNAME, MSG_INFO, "No jobs waiting"); } return(retVal); }
bool MiniLoop::DeferOrRunPendingJob(PendingJob pending_job) { Job* job = pending_job.job; RunJob(job); return true; }