X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/e7dbf98c9905d9281223f93d53b0038cc6ea9a1e..1a163867e88aadbc98da14c686a06ad2920e825d:/include/simgrid/s4u/Host.hpp diff --git a/include/simgrid/s4u/Host.hpp b/include/simgrid/s4u/Host.hpp index a06ef845e2..dacce60bf4 100644 --- a/include/simgrid/s4u/Host.hpp +++ b/include/simgrid/s4u/Host.hpp @@ -7,6 +7,7 @@ #define SIMGRID_S4U_HOST_HPP #include +#include #include #include @@ -46,6 +47,9 @@ class XBT_PUBLIC Host : public xbt::Extendable { kernel::resource::CpuImpl* pimpl_cpu_ = nullptr; kernel::routing::NetPoint* pimpl_netpoint_ = nullptr; +#ifndef DOXYGEN + friend kernel::resource::CpuAction; // signal exec_state_changed +#endif public: explicit Host(kernel::resource::HostImpl* pimpl) : pimpl_(pimpl) {} @@ -56,20 +60,47 @@ protected: static xbt::signal on_creation; static xbt::signal on_destruction; + xbt::signal on_this_destruction; + static xbt::signal on_exec_state_change; public: static xbt::signal on_speed_change; + xbt::signal on_this_speed_change; static xbt::signal on_state_change; + xbt::signal on_this_state_change; + #endif /** Add a callback fired on each newly created host */ static void on_creation_cb(const std::function& cb) { on_creation.connect(cb); } - /** Add a callback fired when the machine is turned on or off (called AFTER the change) */ + /** Add a callback fired when any machine is turned on or off (called AFTER the change) */ static void on_state_change_cb(const std::function& cb) { on_state_change.connect(cb); } - /** Add a callback fired when the speed of the machine is changed (called AFTER the change) + /** Add a callback fired when this specific machine is turned on or off (called AFTER the change) */ + void on_this_state_change_cb(const std::function& cb) + { + on_this_state_change.connect(cb); + } + /** Add a callback fired when the speed of any machine is changed (called AFTER the change) * (either because of a pstate switch or because of an external load event coming from the profile) */ static void on_speed_change_cb(const std::function& cb) { on_speed_change.connect(cb); } - /** Add a callback fired just before destructing a host */ + /** Add a callback fired when the speed of this specific machine is changed (called AFTER the change) + * (either because of a pstate switch or because of an external load event coming from the profile) */ + void on_this_speed_change_cb(const std::function& cb) + { + on_this_speed_change.connect(cb); + } + /** Add a callback fired just before destructing any host */ static void on_destruction_cb(const std::function& cb) { on_destruction.connect(cb); } + /** Add a callback fired just before destructing this specific host */ + void on_this_destruction_cb(const std::function& cb) + { + on_this_destruction.connect(cb); + } + /** Add a callback fired when the state of any exec activity changes */ + static void on_exec_state_change_cb( + const std::function& cb) + { + on_exec_state_change.connect(cb); + } virtual void destroy(); #ifndef DOXYGEN