// CPUScheduler.h     Dave Reed   
//
// CPUScheduler class
///////////////////////////////////////////////////////////////////////////////

#ifndef _CPU_SCHEDULER_
#define _CPU_SCHEDULER_

#include <string>
#include <queue>
#include "Job.h"
using namespace std;

class CPUScheduler 
{
  public:
    CPUScheduler(string filename, int delay, int slice);  // CONSTRUCTOR
    bool jobsRemaining() const;                // RETURNS TRUE IF JOBS IN EITHER QUEUE 
    void execute();                            // EXECUTES CURRENT JOB, UPDATES QUEUES
  private:
    queue<Job> readyQueue;                     // JOBS READY TO EXECUTE 
    int timeSlice, loadDelay;                  // LENGTHS OF TIME SLICE, LOADING
    int sliceTimeRemaining, loadTimeRemaining; // TIME REMAINING IN JOB SLICE, LOADING                      
    int currentTime, turnaroundTotal, waitTotal, totalJobs, wastedTime;  // STATS
};

#endif
