friend Comm;
friend Exec;
friend Io;
+#ifndef DOXYGEN
+ friend std::vector<ActivityPtr> create_DAG_from_dot(const std::string& filename);
+#endif
public:
// enum class State { ... }
virtual bool is_assigned() const = 0;
virtual bool dependencies_solved() const { return dependencies_.empty(); }
+ virtual unsigned long is_waited_by() const { return successors_.size(); }
+ const std::set<ActivityPtr>& get_dependencies() const { return dependencies_; }
+ const std::vector<ActivityPtr>& get_successors() const { return successors_; }
protected:
Activity() = default;
* It is forbidden to change the amount of work once the Activity is started */
Activity* set_remaining(double remains);
+ double get_start_time() const;
+ double get_finish_time() const;
+ void mark() { marked_ = true; }
+ bool is_marked() const { return marked_; }
+
/** Returns the internal implementation of this Activity */
kernel::activity::ActivityImpl* get_impl() const { return pimpl_.get(); }
Activity::State state_ = Activity::State::INITED;
double remains_ = 0;
bool suspended_ = false;
+ bool marked_ = false;
std::vector<ActivityPtr> successors_;
std::set<ActivityPtr> dependencies_;
std::atomic_int_fast32_t refcount_{0};