10 #ifndef WRENCH_BATCHSCHEDULER_H
11 #define WRENCH_BATCHSCHEDULER_H
14 #include "wrench/services/compute/batch/BatchJob.h"
22 class BatchComputeService;
27 class BatchScheduler {
34 virtual ~BatchScheduler() =
default;
40 explicit BatchScheduler(BatchComputeService *cs) : cs(cs) {};
49 virtual void init() = 0;
54 virtual void launch() = 0;
59 virtual void shutdown() = 0;
64 virtual void processQueuedJobs() = 0;
71 virtual void processJobSubmission(std::shared_ptr<BatchJob> batch_job) = 0;
78 virtual void processJobFailure(std::shared_ptr<BatchJob> batch_job) = 0;
85 virtual void processJobCompletion(std::shared_ptr<BatchJob> batch_job) = 0;
92 virtual void processJobTermination(std::shared_ptr<BatchJob> batch_job) = 0;
107 virtual std::map<std::string, double> getStartTimeEstimates(std::set<std::tuple<std::string, unsigned long, unsigned long, double>> set_of_jobs) = 0;
113 BatchComputeService *cs;
123 #endif //WRENCH_BATCHSCHEDULER_H