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
-#endif
/** Signal indicating that an actor terminated its code.
* @beginrst
/** Start a previously initialized actor */
ActorPtr start(const std::function<void()>& code);
+ template <class F> ActorPtr start(F code) { return start(std::function<void()>(std::move(code))); }
+
+ template <class F, class... Args,
+ // This constructor is enabled only if the call code(args...) is valid:
+#ifndef DOXYGEN /* breathe seem to choke on function signatures in template parameter, see breathe#611 */
+ typename = typename std::result_of_t<F(Args...)>
+#endif
+ >
+ ActorPtr start(F code, Args... args)
+ {
+ return start(std::bind(std::move(code), std::move(args)...));
+ }
+
+ ActorPtr start(const std::function<void()>& code, std::vector<std::string> args);
+
/** Create an actor from a callable thing. */
template <class F> static ActorPtr create(const std::string& name, s4u::Host* host, F code)
{
* 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 */
/** @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
}