fpmas 1.6
scheduler.h
Go to the documentation of this file.
1#ifndef FPMAS_SCHEDULER_API_H
2#define FPMAS_SCHEDULER_API_H
3
8#include <list>
9
11
12namespace fpmas { namespace api { namespace scheduler {
16 typedef unsigned long Period;
24 typedef float Date;
25
29 typedef unsigned long TimeStep;
33 typedef float SubTimeStep;
34
38 typedef size_t JID;
39
54
72
76 class Task {
77 public:
81 virtual void run() = 0;
82
96 virtual void setJobPos(JID job_id, std::list<Task*>::iterator pos) = 0;
97
106 virtual std::list<Task*>::iterator getJobPos(JID job_id) const = 0;
107
108 virtual ~Task() {}
109 };
110
116 template<typename T>
117 class NodeTask : public Task {
118 public:
126 };
127
135 class Job {
136 public:
140 typedef std::list<Task*>::const_iterator TaskIterator;
141
145 virtual JID id() const = 0;
151 virtual void add(Task& task) = 0;
157 virtual void remove(Task& task) = 0;
163 virtual std::vector<Task*> tasks() const = 0;
169 virtual TaskIterator begin() const = 0;
175 virtual TaskIterator end() const = 0;
176
185 virtual void setBeginTask(Task& task) = 0;
191 virtual Task& getBeginTask() const = 0;
192
201 virtual void setEndTask(Task& task) = 0;
207 virtual Task& getEndTask() const = 0;
208
209 virtual ~Job() {}
210 };
211
215 typedef std::vector<std::reference_wrapper<const Job>> JobList;
216
223 class Epoch {
224 public:
225
229 typedef std::vector<const Job*>::const_iterator JobIterator;
230
244 virtual void submit(const Job& job, SubTimeStep sub_time_step) = 0;
245
259 virtual void submit(JobList job_list, SubTimeStep sub_time_step) = 0;
260
266 virtual const std::vector<const Job*>& jobs() const = 0;
267
273 virtual JobIterator begin() const = 0;
279 virtual JobIterator end() const = 0;
285 virtual size_t jobCount() = 0;
286
290 virtual void clear() = 0;
291 virtual ~Epoch() {};
292 };
293
302 class Scheduler {
303 public:
310 virtual void schedule(Date date, const Job& job) = 0;
322 virtual void schedule(Date date, Period period, const Job& job) = 0;
323
337 virtual void schedule(Date date, Date end, Period period, const Job& job) = 0;
338
346 virtual void schedule(Date date, JobList job) = 0;
347
359 virtual void schedule(Date date, Period period, JobList job) = 0;
373 virtual void schedule(Date date, Date end, Period period, JobList job) = 0;
374
388 virtual void build(TimeStep step, Epoch& epoch) const = 0;
389
390 virtual ~Scheduler() {}
391 };
392}}}
393#endif
Definition: distributed_node.h:28
Definition: scheduler.h:223
std::vector< constJob * >::const_iterator JobIterator
Definition: scheduler.h:229
virtual void submit(JobList job_list, SubTimeStep sub_time_step)=0
virtual size_t jobCount()=0
virtual const std::vector< const Job * > & jobs() const =0
virtual JobIterator end() const =0
virtual JobIterator begin() const =0
virtual void submit(const Job &job, SubTimeStep sub_time_step)=0
Definition: scheduler.h:135
virtual JID id() const =0
virtual void remove(Task &task)=0
virtual TaskIterator end() const =0
virtual Task & getEndTask() const =0
virtual void setBeginTask(Task &task)=0
virtual void add(Task &task)=0
virtual Task & getBeginTask() const =0
virtual void setEndTask(Task &task)=0
std::list< Task * >::const_iterator TaskIterator
Definition: scheduler.h:140
virtual TaskIterator begin() const =0
virtual std::vector< Task * > tasks() const =0
Definition: scheduler.h:117
virtual api::graph::DistributedNode< T > * node()=0
Definition: scheduler.h:302
virtual void schedule(Date date, const Job &job)=0
virtual void schedule(Date date, Date end, Period period, JobList job)=0
virtual void schedule(Date date, Date end, Period period, const Job &job)=0
virtual void schedule(Date date, Period period, const Job &job)=0
virtual void build(TimeStep step, Epoch &epoch) const =0
virtual void schedule(Date date, JobList job)=0
virtual void schedule(Date date, Period period, JobList job)=0
Definition: scheduler.h:76
virtual std::list< Task * >::iterator getJobPos(JID job_id) const =0
virtual void setJobPos(JID job_id, std::list< Task * >::iterator pos)=0
float Date
Definition: scheduler.h:24
std::vector< std::reference_wrapper< const Job > > JobList
Definition: scheduler.h:215
TimeStep time_step(Date date)
Definition: scheduler.cpp:4
SubTimeStep sub_time_step(Date date)
Definition: scheduler.cpp:8
Date sub_step_end(TimeStep step)
Definition: scheduler.cpp:13
float SubTimeStep
Definition: scheduler.h:33
unsigned long Period
Definition: scheduler.h:16
size_t JID
Definition: scheduler.h:38
unsigned long TimeStep
Definition: scheduler.h:29
Definition: fpmas.cpp:3