X-Git-Url: http://bilbo.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/24eff0b164b2560dd2a6237573213fbc944cde64..d9c1e4df4ecfc39d84e55527fa05e9bd19f70c6c:/include/simgrid/s4u/Activity.hpp diff --git a/include/simgrid/s4u/Activity.hpp b/include/simgrid/s4u/Activity.hpp index 1f8a7ca747..b66268ef3b 100644 --- a/include/simgrid/s4u/Activity.hpp +++ b/include/simgrid/s4u/Activity.hpp @@ -104,17 +104,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_veto() const = 0; - virtual void fire_on_suspend() const = 0; - virtual void fire_on_resume() 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; @@ -125,6 +126,7 @@ public: if (vetoed_activities_ != nullptr) vetoed_activities_->insert(this); fire_on_veto(); + fire_on_this_veto(); } } @@ -233,30 +235,63 @@ 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_veto; inline static xbt::signal on_suspend; + xbt::signal on_this_suspend; inline static xbt::signal on_resume; + xbt::signal on_this_resume; + 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: - /*! Add a callback fired when the activity completes (either normally, cancelled or failed) */ + /*! \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); } - static void on_this_completion_cb(const std::function& cb) { on_this_completion.connect(cb); } - /*! Add a callback fired each time that the activity fails to start because of a veto (e.g., unsolved dependency or no - * resource assigned) */ - static void on_veto_cb(const std::function& cb) { on_veto.connect(cb); } - /*! Add a callback fired when the activity is suspended */ + /*! Add a callback fired when this specific activity completes (either normally, cancelled or failed) */ + void on_this_completion_cb(const std::function& cb) { on_this_completion.connect(cb); } + /*! \static Add a callback fired when any activity is suspended */ static void on_suspend_cb(const std::function& cb) { on_suspend.connect(cb); } - /*! Add a callback fired when the activity is resumed after being suspended */ + /*! Add a callback fired when this specific activity is suspended */ + void on_this_suspend_cb(const std::function& cb) { on_this_suspend.connect(cb); } + /*! \static Add a callback fired when any activity is resumed after being suspended */ static void on_resume_cb(const std::function& cb) { on_resume.connect(cb); } + /*! Add a callback fired when this specific activity is resumed after being suspended */ + void on_this_resume_cb(const std::function& cb) { on_this_resume.connect(cb); } + /*! \static Add a callback fired each time that any activity fails to start because of a veto (e.g., unsolved + * dependency or no resource assigned) */ + static void on_veto_cb(const std::function& cb) { on_veto.connect(cb); } + /*! Add a callback fired each time that this specific activity fails to start because of a veto (e.g., unsolved + * dependency or no resource assigned) */ + void on_this_veto_cb(const std::function& cb) { on_this_veto.connect(cb); } - XBT_ATTRIB_DEPRECATED_v337("Please use on_suspend_cb() instead") static void on_suspended_cb( - const std::function& cb) { on_suspend.connect(cb); } - XBT_ATTRIB_DEPRECATED_v337("Please use on_resume_cb() instead") static void on_resumed_cb( - const std::function& cb) { on_resume.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); + } + XBT_ATTRIB_DEPRECATED_v338("Please use on_resume_cb() instead") static void on_resumed_cb( + const std::function& cb) + { + on_resume.connect(cb); + } AnyActivity* add_successor(ActivityPtr a) { @@ -285,20 +320,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();