X-Git-Url: http://bilbo.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/dd49f9d0ff63334f76e12446cd8076edef85c508..d4b2983abdd669bb8588fd8d455276d47266c51f:/include/simgrid/s4u/Activity.hpp?ds=sidebyside diff --git a/include/simgrid/s4u/Activity.hpp b/include/simgrid/s4u/Activity.hpp index fb157dd8b6..2460a5e96e 100644 --- a/include/simgrid/s4u/Activity.hpp +++ b/include/simgrid/s4u/Activity.hpp @@ -105,9 +105,13 @@ protected: Activity* set_remaining(double remains); virtual void fire_on_completion() const = 0; - virtual void fire_on_veto() 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; public: XBT_ATTRIB_DEPRECATED_v334("All start() are vetoable now. Please use start() ") void vetoable_start() @@ -124,6 +128,7 @@ public: if (vetoed_activities_ != nullptr) vetoed_activities_->insert(this); fire_on_veto(); + fire_on_this_veto(); } } @@ -134,6 +139,7 @@ public: ActivityPtr keepalive(this); state_ = state; fire_on_completion(); + fire_on_this_completion(); if (state == State::FINISHED) release_dependencies(); } @@ -233,27 +239,39 @@ template class Activity_T : public Activity { protected: inline static xbt::signal on_completion; - inline static xbt::signal on_veto; + xbt::signal on_this_completion; 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; public: - /*! Add a callback fired when the activity completes (either normally, cancelled or failed) */ + /*! \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 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( + 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_v337("Please use on_resume_cb() instead") static void on_resumed_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) { Activity::add_successor(a);