8#include <unordered_map>
13namespace fpmas {
namespace scheduler {
32 template<
typename TaskInterface>
37 std::list<fpmas::api::scheduler::Task*>::iterator
46 std::list<fpmas::api::scheduler::Task*>::iterator pos
48 job_pos[job_id] = pos;
54 std::list<api::scheduler::Task*>::iterator
getJobPos(
JID job_id)
const override {
55 return job_pos.find(job_id)->second;
69 void run()
override {};
80 std::function<void()> fct;
92 template<
typename Lambda_t>
142 std::function<void()> fct;
155 template<
typename Lambda_t>
158 Lambda_t&& lambda_fct)
174 std::list<api::scheduler::Task*> _tasks;
190 Job(std::initializer_list<std::reference_wrapper<api::scheduler::Task>>
tasks);
199 std::initializer_list<std::reference_wrapper<api::scheduler::Task>>
tasks);
209 std::initializer_list<std::reference_wrapper<api::scheduler::Task>>
tasks,
218 std::initializer_list<std::reference_wrapper<api::scheduler::Task>>
tasks,
221 JID id()
const override;
224 std::vector<api::scheduler::Task*>
tasks()
const override;
240 std::vector<const api::scheduler::Job*> _jobs;
241 std::vector<SubTimeStep> job_ordering;
246 const std::vector<const api::scheduler::Job*>&
jobs()
const override;
251 void clear()
override;
261 struct SchedulerItem {
266 : sub_step(sub_step), job_list(job_list) {}
269 std::unordered_map<TimeStep, std::vector<SchedulerItem>> unique_jobs;
270 std::map<TimeStep, std::vector<std::pair<Period, SchedulerItem>>>
272 std::map<TimeStep, std::vector<std::tuple<Date, Period, SchedulerItem>>>
273 limited_recurring_jobs;
274 void resizeCycle(
size_t new_size);
Definition: distributed_node.h:28
Definition: scheduler.h:223
std::vector< constJob * >::const_iterator JobIterator
Definition: scheduler.h:229
Definition: scheduler.h:135
std::list< Task * >::const_iterator TaskIterator
Definition: scheduler.h:140
Definition: scheduler.h:302
Definition: scheduler.h:76
Definition: scheduler.h:238
const std::vector< const api::scheduler::Job * > & jobs() const override
Definition: scheduler.cpp:97
JobIterator end() const override
Definition: scheduler.cpp:105
size_t jobCount() override
Definition: scheduler.cpp:109
JobIterator begin() const override
Definition: scheduler.cpp:101
void submit(const api::scheduler::Job &, api::scheduler::SubTimeStep sub_time_step) override
Definition: scheduler.cpp:74
void clear() override
Definition: scheduler.cpp:113
Definition: scheduler.h:169
JID id() const override
Definition: scheduler.cpp:36
Job()
Definition: scheduler.h:184
std::vector< api::scheduler::Task * > tasks() const override
Definition: scheduler.cpp:46
void add(api::scheduler::Task &) override
Definition: scheduler.cpp:38
api::scheduler::Task & getEndTask() const override
Definition: scheduler.cpp:62
TaskIterator end() const override
Definition: scheduler.cpp:70
api::scheduler::Task & getBeginTask() const override
Definition: scheduler.cpp:54
void remove(api::scheduler::Task &) override
Definition: scheduler.cpp:42
void setEndTask(api::scheduler::Task &) override
Definition: scheduler.cpp:58
TaskIterator begin() const override
Definition: scheduler.cpp:66
void setBeginTask(api::scheduler::Task &) override
Definition: scheduler.cpp:50
Definition: scheduler.h:140
LambdaTask(api::graph::DistributedNode< T > *node, Lambda_t &&lambda_fct)
Definition: scheduler.h:156
void run() override
Definition: scheduler.h:161
Definition: scheduler.h:115
api::graph::DistributedNode< T > * node() override
Definition: scheduler.h:129
NodeTask(api::graph::DistributedNode< T > *node)
Definition: scheduler.h:125
Definition: scheduler.h:259
void build(api::scheduler::TimeStep step, fpmas::api::scheduler::Epoch &) const override
Definition: scheduler.cpp:171
void schedule(api::scheduler::Date date, const api::scheduler::Job &) override
Definition: scheduler.cpp:118
Definition: scheduler.h:33
std::list< api::scheduler::Task * >::iterator getJobPos(JID job_id) const override
Definition: scheduler.h:54
void setJobPos(JID job_id, std::list< fpmas::api::scheduler::Task * >::iterator pos) override
Definition: scheduler.h:44
Definition: scheduler.h:64
void run() override
Definition: scheduler.h:69
Definition: scheduler.h:78
LambdaTask(Lambda_t &&lambda_fct)
Definition: scheduler.h:93
void run() override
Definition: scheduler.h:96
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
TaskBase< api::scheduler::Task > Task
Definition: scheduler.h:107