X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/54f9d48567e65bd17b9ad3544b5aad57bef54463..a769d0bfd8cf7d4e8f9ae4dfbcf69d8a851508da:/include/simgrid/s4u/Actor.hpp diff --git a/include/simgrid/s4u/Actor.hpp b/include/simgrid/s4u/Actor.hpp index 905189049b..1ccfd6afe2 100644 --- a/include/simgrid/s4u/Actor.hpp +++ b/include/simgrid/s4u/Actor.hpp @@ -120,11 +120,11 @@ namespace s4u { */ /** @brief Simulation Agent */ -class XBT_PUBLIC Actor : public simgrid::xbt::Extendable { - friend simgrid::s4u::Exec; - friend simgrid::s4u::Mailbox; - friend simgrid::kernel::actor::ActorImpl; - friend simgrid::kernel::activity::MailboxImpl; +class XBT_PUBLIC Actor : public xbt::Extendable { + friend Exec; + friend Mailbox; + friend kernel::actor::ActorImpl; + friend kernel::activity::MailboxImpl; kernel::actor::ActorImpl* const pimpl_; @@ -145,38 +145,39 @@ public: static ActorPtr self(); /** Signal to others that a new actor has been created **/ - static simgrid::xbt::signal on_creation; + static xbt::signal on_creation; /** Signal to others that an actor has been suspended**/ - static simgrid::xbt::signal on_suspend; + static xbt::signal on_suspend; /** Signal to others that an actor has been resumed **/ - static simgrid::xbt::signal on_resume; + static xbt::signal on_resume; /** Signal to others that an actor is sleeping **/ - static simgrid::xbt::signal on_sleep; + static xbt::signal on_sleep; /** Signal to others that an actor wakes up for a sleep **/ - static simgrid::xbt::signal on_wake_up; + static xbt::signal on_wake_up; /** Signal to others that an actor is going to migrated to another host**/ - static simgrid::xbt::signal on_migration_start; + static xbt::signal on_migration_start; /** Signal to others that an actor is has been migrated to another host **/ - static simgrid::xbt::signal on_migration_end; + static xbt::signal on_migration_end; /** Signal indicating that an actor is about to disappear. - * This signal is fired for any dying actor, which is mostly useful when - * designing plugins and extensions. If you want to register to the - * termination of a given actor, use this_actor::on_exit() instead.*/ - static simgrid::xbt::signal on_destruction; + * This signal is fired for any dying actor, which is mostly useful when designing plugins and extensions. If you + * want to register to the termination of a given actor, use this_actor::on_exit() instead.*/ + static xbt::signal on_destruction; /** Create an actor from a std::function * * If the actor is restarted, the actor has a fresh copy of the function. */ - static ActorPtr create(std::string name, s4u::Host* host, std::function code); + static ActorPtr create(const std::string& name, s4u::Host* host, const std::function& code); + static ActorPtr init(const std::string& name, s4u::Host* host); + ActorPtr start(const std::function& code); /** Create an actor from a std::function * * If the actor is restarted, the actor has a fresh copy of the function. */ - template static ActorPtr create(std::string name, s4u::Host* host, F code) + template static ActorPtr create(const std::string& name, s4u::Host* host, F code) { - return create(std::move(name), host, std::function(std::move(code))); + return create(name, host, std::function(std::move(code))); } /** Create an actor using a callable thing and its arguments. @@ -185,13 +186,14 @@ public: template ::type> - static ActorPtr create(std::string name, s4u::Host* host, F code, Args... args) + static ActorPtr create(const std::string& name, s4u::Host* host, F code, Args... args) { - return create(std::move(name), host, std::bind(std::move(code), std::move(args)...)); + return create(name, host, std::bind(std::move(code), std::move(args)...)); } // Create actor from function name: - static ActorPtr create(std::string name, s4u::Host* host, const std::string& function, std::vector args); + static ActorPtr create(const std::string& name, s4u::Host* host, const std::string& function, + std::vector args); // ***** Methods ***** /** This actor will be automatically terminated when the last non-daemon actor finishes **/ @@ -205,7 +207,7 @@ public: /** Retrieves the name of that actor as a C string */ const char* get_cname() const; /** Retrieves the host on which that actor is running */ - s4u::Host* get_host(); + Host* get_host(); /** Retrieves the actor ID of that actor */ aid_t get_pid() const; /** Retrieves the actor ID of that actor's creator */ @@ -234,7 +236,7 @@ public: * It will be set to true if the actor was killed or failed because of an exception, * while it will remain to false if the actor terminated gracefully. */ - void on_exit(std::function fun); + void on_exit(const std::function& fun); /** Sets the time at which that actor should be killed */ void set_kill_time(double time); @@ -290,24 +292,24 @@ public: std::unordered_map* get_properties(); // FIXME: do not export the map, but only the keys or something const char* get_property(const std::string& key); - void set_property(const std::string& key, std::string value); + void set_property(const std::string& key, const std::string& value); #ifndef DOXYGEN - XBT_ATTRIB_DEPRECATED_v325("Please use Actor::on_exit(fun) instead") void on_exit(std::function fun, - void* data); + XBT_ATTRIB_DEPRECATED_v325("Please use Actor::on_exit(fun) instead") void on_exit( + const std::function& fun, void* data); XBT_ATTRIB_DEPRECATED_v325("Please use Actor::by_pid(pid).kill() instead") static void kill(aid_t pid); /** @deprecated See Actor::create() */ - XBT_ATTRIB_DEPRECATED_v323("Please use Actor::create()") static ActorPtr createActor( - const char* name, s4u::Host* host, std::function code) + XBT_ATTRIB_DEPRECATED_v323("Please use Actor::create()") static ActorPtr + createActor(const char* name, s4u::Host* host, const std::function& code) { return create(name, host, code); } /** @deprecated See Actor::create() */ - XBT_ATTRIB_DEPRECATED_v323("Please use Actor::create()") static ActorPtr createActor( - const char* name, s4u::Host* host, std::function*)> code, - std::vector* args) + XBT_ATTRIB_DEPRECATED_v323("Please use Actor::create()") static ActorPtr + createActor(const char* name, s4u::Host* host, const std::function*)>& code, + std::vector* args) { return create(name, host, code, args); } @@ -541,7 +543,7 @@ XBT_PUBLIC void exit(); * while it will remain to false if the actor terminated gracefully. */ -XBT_PUBLIC void on_exit(std::function fun); +XBT_PUBLIC void on_exit(const std::function& fun); /** @brief Migrate the current actor to a new host. */ XBT_PUBLIC void migrate(Host* new_host); @@ -550,7 +552,7 @@ XBT_PUBLIC void migrate(Host* new_host); #ifndef DOXYGEN XBT_ATTRIB_DEPRECATED_v325("Please use std::function for first parameter.") XBT_PUBLIC - void on_exit(std::function fun, void* data); + void on_exit(const std::function& fun, void* data); /** @deprecated Please use std::function for first parameter */ XBT_ATTRIB_DEPRECATED_v323("Please use std::function for first parameter.") XBT_PUBLIC