/** * @brief * Get the next job from the cursor * * @param[in] conn - Connection handle * @param[in] st - The cursor state * @param[out] obj - Job information is loaded into this object * * @return Error code * @retval -1 - Failure * @retval 0 - Success * */ int pg_db_next_job(pbs_db_conn_t *conn, void *st, pbs_db_obj_info_t *obj) { pg_query_state_t *state = (pg_query_state_t *) st; return load_job(state->res, obj->pbs_db_un.pbs_db_job, state->row); }
void Jobserver::run() { Processmanager pm; pm.init_num_process(2); pm.start(); long jobscount=30; string is_worker_ready; int i=1; while (true){ //collect Jobs jobscount=30*(i++); if (i>100){ cout<<"Jobserver stop"<<endl; exit(0); } pm.set_jobs_count(jobscount); pm.adjust_proc_num(); m_recv->recv(is_worker_ready); if (is_worker_ready=="OK"){ //publish job load_job(); m_send->send(&rec,sizeof(struct REC)); cout<<"Jobserver:publish job-"<<rec.billtype <<"-"<<rec.recid<<endl; } } }
/** * @brief * Load job data from the database * * @param[in] conn - Connection handle * @param[in/out]obj - Load job information into this object where * jobid = obj->pbs_db_un.pbs_db_job->ji_jobid * * @return Error code * @retval -1 - Failure * @retval 0 - Success * @retval 1 - Success but no rows loaded * */ int pg_db_load_job(pbs_db_conn_t *conn, pbs_db_obj_info_t *obj) { PGresult *res; int rc; pbs_db_job_info_t *pj = obj->pbs_db_un.pbs_db_job; SET_PARAM_STR(conn, pj->ji_jobid, 0); if ((rc = pg_db_query(conn, STMT_SELECT_JOB, 1, &res)) != 0) return rc; rc = load_job(res, pj, 0); PQclear(res); return rc; }
/* * Load all jobs and print information about each job */ void load_and_print_jobs (char * user) { int error_code = SLURM_SUCCESS, i; uint32_t array_id = NO_VAL; job_info_msg_t * job_buffer_ptr = NULL; job_info_t *job_ptr = NULL; char *end_ptr = NULL; error_code = (int) load_job(&job_buffer_ptr, 0); if (error_code) { slurm_perror ("slurm_load_jobs error"); return; } printf("# jobid|jobstate|username|queue|requestedcores|mainnode|submittime|starttime\n"); for (i = 0, job_ptr = job_buffer_ptr->job_array; i < job_buffer_ptr->record_count; i++, job_ptr++) { if ((array_id != NO_VAL) && (array_id != job_ptr->array_task_id)) { continue; } print_job(job_ptr, user); } }
void Job::load(FILE *file){ load_job(file); }