/** Retrieve a reference to myself */
static Actor* self();
- /** Fired when a new actor has been created **/
+#ifndef DOXYGEN
static xbt::signal<void(Actor&)> on_creation;
- /** Signal to others that an actor has been suspended**/
static xbt::signal<void(Actor const&)> on_suspend;
- /** Signal to others that an actor has been resumed **/
static xbt::signal<void(Actor const&)> on_resume;
- /** Signal to others that an actor is sleeping **/
static xbt::signal<void(Actor const&)> on_sleep;
- /** Signal to others that an actor wakes up for a sleep **/
static xbt::signal<void(Actor const&)> on_wake_up;
- /** Signal to others that an actor is has been migrated to another host **/
static xbt::signal<void(const Actor&, const Host& previous_location)> on_host_change;
-#ifndef DOXYGEN
- static xbt::signal<void(Actor const&)> on_migration_start; // XBT_ATTRIB_DEPRECATED_v329
- static xbt::signal<void(Actor const&)> on_migration_end; // XBT_ATTRIB_DEPRECATED_v329
+ static xbt::signal<void(Actor const&)> on_termination;
+ static xbt::signal<void(Actor const&)> on_destruction;
#endif
- /** Signal indicating that an actor terminated its code.
+public:
+ /** Add a callback fired when a new actor has been created **/
+ static void on_creation_cb(const std::function<void(Actor&)>& cb) { on_creation.connect(cb); }
+ /** Add a callback fired when an actor has been suspended**/
+ static void on_suspend_cb(const std::function<void(Actor const&)> cb) { on_suspend.connect(cb); }
+ /** Add a callback fired when an actor has been resumed **/
+ static void on_resume_cb(const std::function<void(Actor const&)>& cb) { on_resume.connect(cb); }
+ /** Add a callback fired when an actor starts sleeping **/
+ static void on_sleep_cb(const std::function<void(Actor const&)>& cb) { on_sleep.connect(cb); }
+ /** Add a callback fired when an actor wakes up from a sleep **/
+ static void on_wake_up_cb(const std::function<void(Actor const&)>& cb) { on_wake_up.connect(cb); }
+ /** Add a callback fired when an actor is has been migrated to another host **/
+ static void on_host_change_cb(const std::function<void(const Actor&, const Host& previous_location)>& cb)
+ {
+ on_host_change.connect(cb);
+ }
+
+ /** Add a callback fired when an actor terminates its code.
* @beginrst
* The actor may continue to exist if it is still referenced in the simulation, but it's not active anymore.
* If you want to free extra data when the actor's destructor is called, use :cpp:var:`Actor::on_destruction`.
* If you want to register to the termination of a given actor, use :cpp:func:`this_actor::on_exit()` instead.
* @endrst
*/
- static xbt::signal<void(Actor const&)> on_termination;
- /** Signal indicating that an actor is about to disappear (its destructor was called).
+ static void on_termination_cb(const std::function<void(Actor const&)>& cb) { on_termination.connect(cb); }
+ /** Add a callback fired when an actor is about to disappear (its destructor was called).
* This signal is fired for any destructed actor, which is mostly useful when designing plugins and extensions.
* If you want to react to the end of the actor's code, use Actor::on_termination instead.
* If you want to register to the termination of a given actor, use this_actor::on_exit() instead.*/
- static xbt::signal<void(Actor const&)> on_destruction;
+ static void on_destruction_cb(const std::function<void(Actor const&)>& cb) { on_destruction.connect(cb); }
/** Create an actor from a std::function<void()>.
* If the actor is restarted, it gets a fresh copy of the function. */
/** Returns whether or not this actor has been daemonized or not **/
bool is_daemon() const;
+ static bool is_maestro();
/** Retrieves the name of that actor as a C++ string */
const simgrid::xbt::string& get_name() const;
* to take care of this yourself (only you knows which ones should be migrated).
*/
void set_host(Host* new_host);
-#ifndef DOXYGEN
- XBT_ATTRIB_DEPRECATED_v329("Please use set_host() instead") void migrate(Host* new_host) { set_host(new_host); }
-#endif
/** Ask the actor to die.
*
XBT_PUBLIC void parallel_execute(const std::vector<s4u::Host*>& hosts, const std::vector<double>& flops_amounts,
const std::vector<double>& bytes_amounts);
-XBT_ATTRIB_DEPRECATED_v329("Please use exec_init(...)->wait_for(timeout)") XBT_PUBLIC
- void parallel_execute(const std::vector<s4u::Host*>& hosts, const std::vector<double>& flops_amounts,
- const std::vector<double>& bytes_amounts, double timeout);
-
/** Initialize a sequential execution that must then be started manually */
XBT_PUBLIC ExecPtr exec_init(double flops_amounts);
/** Initialize a parallel execution that must then be started manually */
XBT_PUBLIC void yield();
/** @brief kill the current actor. */
-XBT_PUBLIC void exit();
+XBT_ATTRIB_NORETURN XBT_PUBLIC void exit();
/** @brief Add a function to the list of "on_exit" functions of the current actor.
*
/** @brief Migrate the current actor to a new host. */
XBT_PUBLIC void set_host(Host* new_host);
-#ifndef DOXYGEN
-XBT_ATTRIB_DEPRECATED_v329("Please use set_host() instead") XBT_PUBLIC void migrate(Host* new_host);
-#endif
}