X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/9a51b791dab55275bffc183f8dfe9c26b6feaa57..7369715466314d1ab38ee29586b632717c98fcad:/include/simgrid/s4u/Exec.hpp diff --git a/include/simgrid/s4u/Exec.hpp b/include/simgrid/s4u/Exec.hpp index 0ae3e326e8..c6b3898288 100644 --- a/include/simgrid/s4u/Exec.hpp +++ b/include/simgrid/s4u/Exec.hpp @@ -30,20 +30,17 @@ namespace s4u { * @endrst */ class XBT_PUBLIC Exec : public Activity_T { +#ifndef DOXYGEN friend kernel::activity::ExecImpl; - double priority_ = 1.0; - double bound_ = 0.0; - double timeout_ = -1.0; // Infinite timeout by default - std::vector flops_amounts_; - std::vector bytes_amounts_; - std::vector hosts_; +#endif + bool parallel_ = false; - double start_time_ = -1.0; - double finish_time_ = -1.0; protected: explicit Exec(kernel::activity::ExecImplPtr pimpl); + void complete(Activity::State state) override; + public: #ifndef DOXYGEN Exec(Exec const&) = delete; @@ -54,6 +51,20 @@ public: static ExecPtr init(); Exec* start() override; + + /*! take a vector of s4u::ExecPtr and return when one of them is finished. + * The return value is the rank of the first finished ExecPtr. */ + static ssize_t wait_any(const std::vector& execs) { return wait_any_for(execs, -1); } + /*! Same as wait_any, but with a timeout. If the timeout occurs, parameter last is returned.*/ + static ssize_t wait_any_for(const std::vector& execs, double timeout); + +#ifndef DOXYGEN + XBT_ATTRIB_DEPRECATED_v332("Please use a plain vector for parameter") + static int wait_any(std::vector* execs) { return static_cast(wait_any_for(*execs, -1)); } + XBT_ATTRIB_DEPRECATED_v332("Please use a plain vector for first parameter") + static int wait_any_for(std::vector* execs, double timeout) { return static_cast(wait_any_for(*execs, timeout)); } +#endif + /** @brief On sequential executions, returns the amount of flops that remain to be done; This cannot be used on * parallel executions. */ double get_remaining() const override; @@ -65,27 +76,16 @@ public: ExecPtr set_flops_amounts(const std::vector& flops_amounts); ExecPtr set_bytes_amounts(const std::vector& bytes_amounts); - Exec* wait() override; - Exec* wait_for(double timeout) override; - /*! take a vector of s4u::ExecPtr and return when one of them is finished. - * The return value is the rank of the first finished ExecPtr. */ - static int wait_any(std::vector* execs) { return wait_any_for(execs, -1); } - /*! Same as wait_any, but with a timeout. If the timeout occurs, parameter last is returned.*/ - static int wait_any_for(std::vector* execs, double timeout); - ExecPtr set_bound(double bound); ExecPtr set_priority(double priority); - XBT_ATTRIB_DEPRECATED_v329("Please use exec_init(...)->wait_for(timeout)") ExecPtr set_timeout(double timeout); - Exec* cancel() override; Host* get_host() const; unsigned int get_host_number() const; - double get_start_time() const { return start_time_; } - double get_finish_time() const { return finish_time_; } - void set_finish_time(double finish_time) { finish_time_ = finish_time; } + double get_start_time() const; + double get_finish_time() const; double get_cost() const; bool is_parallel() const { return parallel_; } - bool is_assigned() const override { return not hosts_.empty(); } + bool is_assigned() const override; }; } // namespace s4u