X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/d4b2983abdd669bb8588fd8d455276d47266c51f..6c16c61daeab4491da3abfba8e1b657308f8dfd4:/include/simgrid/s4u/Activity.hpp diff --git a/include/simgrid/s4u/Activity.hpp b/include/simgrid/s4u/Activity.hpp index 2460a5e96e..9973a00854 100644 --- a/include/simgrid/s4u/Activity.hpp +++ b/include/simgrid/s4u/Activity.hpp @@ -34,6 +34,7 @@ namespace s4u { */ class XBT_PUBLIC Activity : public xbt::Extendable { #ifndef DOXYGEN + friend ActivitySet; friend Comm; friend Exec; friend Io; @@ -104,20 +105,18 @@ protected: * It is forbidden to change the amount of work once the Activity is started */ Activity* set_remaining(double remains); - virtual void fire_on_completion() const = 0; + virtual void fire_on_start() const = 0; + virtual void fire_on_this_start() const = 0; + virtual void fire_on_completion() const = 0; virtual void fire_on_this_completion() const = 0; - virtual void fire_on_suspend() const = 0; - virtual void fire_on_this_suspend() const = 0; - virtual void fire_on_resume() const = 0; - virtual void fire_on_this_resume() const = 0; - virtual void fire_on_veto() const = 0; - virtual void fire_on_this_veto() const = 0; + virtual void fire_on_suspend() const = 0; + virtual void fire_on_this_suspend() const = 0; + virtual void fire_on_resume() const = 0; + virtual void fire_on_this_resume() const = 0; + virtual void fire_on_veto() = 0; + virtual void fire_on_this_veto() = 0; public: - XBT_ATTRIB_DEPRECATED_v334("All start() are vetoable now. Please use start() ") void vetoable_start() - { - start(); - } void start() { state_ = State::STARTING; @@ -237,7 +236,8 @@ template class Activity_T : public Activity { std::string name_ = "unnamed"; std::string tracing_category_ = ""; -protected: + inline static xbt::signal on_start; + xbt::signal on_this_start; inline static xbt::signal on_completion; xbt::signal on_this_completion; inline static xbt::signal on_suspend; @@ -247,7 +247,23 @@ protected: inline static xbt::signal on_veto; xbt::signal on_this_veto; +protected: + void fire_on_start() const override { on_start(static_cast(*this)); } + void fire_on_this_start() const override { on_this_start(static_cast(*this)); } + void fire_on_completion() const override { on_completion(static_cast(*this)); } + void fire_on_this_completion() const override { on_this_completion(static_cast(*this)); } + void fire_on_suspend() const override { on_suspend(static_cast(*this)); } + void fire_on_this_suspend() const override { on_this_suspend(static_cast(*this)); } + void fire_on_resume() const override { on_resume(static_cast(*this)); } + void fire_on_this_resume() const override { on_this_resume(static_cast(*this)); } + void fire_on_veto() override { on_veto(static_cast(*this)); } + void fire_on_this_veto() override { on_this_veto(static_cast(*this)); } + public: + /*! \static Add a callback fired when any activity starts (no veto) */ + static void on_start_cb(const std::function& cb) { on_start.connect(cb); } + /*! Add a callback fired when this specific activity starts (no veto) */ + void on_this_start_cb(const std::function& cb) { on_this_start.connect(cb); } /*! \static Add a callback fired when any activity completes (either normally, cancelled or failed) */ static void on_completion_cb(const std::function& cb) { on_completion.connect(cb); } /*! Add a callback fired when this specific activity completes (either normally, cancelled or failed) */ @@ -268,9 +284,15 @@ public: void on_this_veto_cb(const std::function& cb) { on_this_veto.connect(cb); } XBT_ATTRIB_DEPRECATED_v338("Please use on_suspend_cb() instead") static void on_suspended_cb( - const std::function& cb) { on_suspend.connect(cb); } + const std::function& cb) + { + on_suspend.connect(cb); + } XBT_ATTRIB_DEPRECATED_v338("Please use on_resume_cb() instead") static void on_resumed_cb( - const std::function& cb) { on_resume.connect(cb); } + const std::function& cb) + { + on_resume.connect(cb); + } AnyActivity* add_successor(ActivityPtr a) { @@ -299,20 +321,6 @@ public: } const std::string& get_tracing_category() const { return tracing_category_; } - XBT_ATTRIB_DEPRECATED_v334("Please use Activity::set_data()") AnyActivity* set_user_data(void* data) - { - set_data(data); - return static_cast(this); - } - - XBT_ATTRIB_DEPRECATED_v334("Please use Activity::get_data<>()") void* get_user_data() const - { - return get_data(); - } - XBT_ATTRIB_DEPRECATED_v334("All start() are vetoable now. Please use start() ") AnyActivity* vetoable_start() - { - return start(); - } AnyActivity* start() { Activity::start();