#include <xbt/Extendable.hpp>
#include <atomic>
+#include <deque>
#include <map>
#include <memory>
#include <set>
Task* task_;
};
+class XBT_PUBLIC Token : public xbt::Extendable<Token> {};
+
class Task {
std::set<Task*> successors_ = {};
std::map<Task*, unsigned int> predecessors_ = {};
protected:
std::string name_;
double amount_;
+ std::shared_ptr<Token> token_ = nullptr;
+ std::deque<std::map<TaskPtr, std::shared_ptr<Token>>> tokens_received_;
int queued_execs_ = 0;
int count_ = 0;
bool working_ = false;
+ s4u::ActivityPtr previous_activity_;
s4u::ActivityPtr current_activity_;
xbt::signal<void(Task*)> on_this_start_;
xbt::signal<void(Task*)> on_this_end_;
void enqueue_execs(int n);
void set_amount(double amount);
double get_amount() const { return amount_; }
+ void set_token(std::shared_ptr<Token> token);
+ std::shared_ptr<Token> get_next_token_from(TaskPtr t);
void add_successor(TaskPtr t);
void remove_successor(TaskPtr t);
void remove_all_successors();
IoTaskPtr set_disk(s4u::Disk* disk);
s4u::Disk* get_disk() const { return disk_; }
IoTaskPtr set_bytes(double bytes);
- double get_bytes() { return get_amount(); }
+ double get_bytes() const { return get_amount(); }
IoTaskPtr set_op_type(s4u::Io::OpType type);
- s4u::Io::OpType get_op_type() { return type_; }
+ s4u::Io::OpType get_op_type() const { return type_; }
};
} // namespace simgrid::plugins
#endif