Esempio n. 1
0
void JobQueue::process_jobs(void)
{
    Uint32 j;
    Job *job;
    Uint32 max_num = active_jobs.size();
    
    if(0 == max_num){
        Job *job = get_next_job();
        if(job) {
            active_jobs.push_back(job);
            max_num = 1;
        }
    }
    for(j=0; j<max_num; ++j){
        job = active_jobs[j];
        job->process();
        if (job->is_finished){
            finish_job(job);
            Job *new_job = get_next_job();
            if(new_job){
                active_jobs[j] = new_job;
            }else{
                active_jobs.erase(active_jobs.begin() + j);
                max_num = active_jobs.size();
                --j;
            }
            delete job;
        }
    }
}
Esempio n. 2
0
// Executes the jobs in a queue.  saves and restores Trick::Executive::curr_job
int Trick::ScheduledJobQueue::execute_all_jobs() {
    Trick::JobData * curr_job ;
    int ret ;

    reset_curr_index() ;
    while ( (curr_job = get_next_job()) != NULL ) {
        ret = curr_job->call() ;
        if ( ret != 0 ) {
            return ret ;
        }
    }
    /* return 0 if there are no errors. */
    return 0 ;
}
Esempio n. 3
0
int Trick::ScheduledJobQueue::write_non_sched_queue( FILE * fp ) {

    Trick::JobData * curr_job ;
    unsigned int save_index ;

    save_index = get_curr_index() ;
    reset_curr_index() ;
    while ( (curr_job = get_next_job()) != NULL ) {
        if ( curr_job->job_class_name.compare("instrumentation") ) {
            /* for each non instrumentation job write the job information to the open file pointer "fp" */
            fprintf(fp, "%7d | %3d |%-25s| %-5d |          |          |          | %5.02f | %s\n",
                    !curr_job->disabled, curr_job->thread, curr_job->job_class_name.c_str(), curr_job->phase,
                    curr_job->frame_id, curr_job->name.c_str());
        }
    }

    set_curr_index(save_index) ;
    return(0) ;
}