X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/f3b7e5f4b4d7c87ee3e8827313ec966ea8fc8387..acfd3860433a79c8620f7976ba1764d04253675b:/include/simgrid/s4u/Exec.hpp diff --git a/include/simgrid/s4u/Exec.hpp b/include/simgrid/s4u/Exec.hpp index b15ed1b7d9..a5d1079494 100644 --- a/include/simgrid/s4u/Exec.hpp +++ b/include/simgrid/s4u/Exec.hpp @@ -1,4 +1,4 @@ -/* Copyright (c) 2017-2020. The SimGrid Team. All rights reserved. */ +/* Copyright (c) 2017-2021. The SimGrid Team. All rights reserved. */ /* This program is free software; you can redistribute it and/or modify it * under the terms of the license (GNU LGPL) which comes with this package. */ @@ -30,25 +30,31 @@ namespace s4u { * @endrst */ class XBT_PUBLIC Exec : public Activity_T { + friend kernel::activity::ExecImpl; double priority_ = 1.0; double bound_ = 0.0; - double timeout_ = 0.0; + double timeout_ = -1.0; // Infinite timeout by default std::vector flops_amounts_; std::vector bytes_amounts_; std::vector hosts_; bool parallel_ = false; + double start_time_ = -1.0; + double finish_time_ = -1.0; + +protected: + explicit Exec(kernel::activity::ExecImplPtr pimpl); public: - Exec(); ~Exec() override = default; #ifndef DOXYGEN Exec(Exec const&) = delete; Exec& operator=(Exec const&) = delete; #endif - static xbt::signal on_start; - static xbt::signal on_completion; + static xbt::signal on_start; + static xbt::signal on_completion; + static ExecPtr init(); Exec* start() override; /** @brief On sequential executions, returns the amount of flops that remain to be done; This cannot be used on * parallel executions. */ @@ -76,10 +82,12 @@ public: Exec* cancel() override; Host* get_host() const; unsigned int get_host_number() const; - double get_start_time() const; - double get_finish_time() 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_cost() const; bool is_parallel() const { return parallel_; } + bool is_assigned() const override { return not hosts_.empty(); } }; } // namespace s4u