Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
mv link map to the engine
[simgrid.git] / include / simgrid / s4u / Actor.hpp
index a91b18b..b8e4288 100644 (file)
@@ -6,6 +6,7 @@
 #ifndef SIMGRID_S4U_ACTOR_HPP
 #define SIMGRID_S4U_ACTOR_HPP
 
+#include <functional>
 #include <simgrid/chrono.hpp>
 #include <xbt/Extendable.hpp>
 #include <xbt/functional.hpp>
@@ -152,6 +153,18 @@ public:
 
   /** Signal to others that a new actor has been created **/
   static simgrid::xbt::signal<void(simgrid::s4u::ActorPtr)> on_creation;
+  /** Signal to others that an actor has been suspended**/
+  static simgrid::xbt::signal<void(simgrid::s4u::ActorPtr)> on_suspend;
+  /** Signal to others that an actor has been resumed **/
+  static simgrid::xbt::signal<void(simgrid::s4u::ActorPtr)> on_resume;
+  /** Signal to others that an actor is sleeping **/
+  static simgrid::xbt::signal<void(simgrid::s4u::ActorPtr)> on_sleep;
+  /** Signal to others that an actor wakes up for a sleep **/
+  static simgrid::xbt::signal<void(simgrid::s4u::ActorPtr)> on_wake_up;
+  /** Signal to others that an actor is going to migrated to another host**/
+  static simgrid::xbt::signal<void(simgrid::s4u::ActorPtr)> on_migration_start;
+  /** Signal to others that an actor is has been migrated to another host **/
+  static simgrid::xbt::signal<void(simgrid::s4u::ActorPtr)> on_migration_end;
   /** Signal indicating that the given actor is about to disappear */
   static simgrid::xbt::signal<void(simgrid::s4u::ActorPtr)> on_destruction;
 
@@ -224,7 +237,7 @@ public:
   /** Add a function to the list of "on_exit" functions for the current actor. The on_exit functions are the functions
    * executed when your actor is killed. You should use them to free the data used by your actor.
    */
-  void on_exit(int_f_pvoid_pvoid_t fun, void* data);
+  void on_exit(std::function<void(int, void*)> fun, void* data);
 
   /** Sets the time at which that actor should be killed */
   void set_kill_time(double time);
@@ -303,9 +316,11 @@ public:
   {
     set_auto_restart(a);
   }
+  XBT_ATTRIB_DEPRECATED_v323("Please use a std::function<void(int, void*)> for first parameter.") void on_exit(
+      int_f_pvoid_pvoid_t fun, void* data);
   XBT_ATTRIB_DEPRECATED_v323("Please use Actor::on_exit()") void onExit(int_f_pvoid_pvoid_t fun, void* data)
   {
-    on_exit(fun, data);
+    on_exit([fun](int a, void* b) { fun((void*)(intptr_t)a, b); }, data);
   }
   XBT_ATTRIB_DEPRECATED_v323("Please use Actor::set_kill_time()") void setKillTime(double time) { set_kill_time(time); }
   XBT_ATTRIB_DEPRECATED_v323("Please use Actor::get_kill_time()") double getKillTime() { return get_kill_time(); }
@@ -395,7 +410,9 @@ XBT_PUBLIC bool is_suspended();
 XBT_PUBLIC void kill();
 
 /** @brief Add a function to the list of "on_exit" functions. */
-XBT_PUBLIC void on_exit(int_f_pvoid_pvoid_t fun, void* data);
+XBT_ATTRIB_DEPRECATED_v323("Please use std::function<void(int, void*)> for first parameter.") XBT_PUBLIC
+    void on_exit(int_f_pvoid_pvoid_t fun, void* data);
+XBT_PUBLIC void on_exit(std::function<void(int, void*)> fun, void* data);
 
 /** @brief Migrate the actor to a new host. */
 XBT_PUBLIC void migrate(Host* new_host);