Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
start to untangle the MSG actor creation mess
[simgrid.git] / include / simgrid / s4u / Actor.hpp
index 40db256..56567c4 100644 (file)
@@ -18,6 +18,7 @@
 
 #include <boost/intrusive_ptr.hpp>
 
+#include <xbt/Extendable.hpp>
 #include <xbt/base.h>
 #include <xbt/functional.hpp>
 #include <xbt/string.hpp>
@@ -131,9 +132,12 @@ namespace s4u {
  */
 
 /** @brief Simulation Agent */
-XBT_PUBLIC_CLASS Actor {
+XBT_PUBLIC_CLASS Actor : public simgrid::xbt::Extendable<Actor>
+{
+
   friend Mailbox;
   friend simgrid::simix::ActorImpl;
+  friend simgrid::kernel::activity::MailboxImpl;
   simix::ActorImpl* pimpl_ = nullptr;
 
   /** Wrap a (possibly non-copyable) single-use task into a `std::function` */
@@ -176,12 +180,7 @@ public:
    *
    *  If the actor is restarted, the actor has a fresh copy of the function.
    */
-  static ActorPtr createActor(const char* name, s4u::Host *host, double killTime, std::function<void()> code);
-
-  static ActorPtr createActor(const char* name, s4u::Host *host, std::function<void()> code)
-  {
-    return createActor(name, host, -1.0, std::move(code));
-  }
+  static ActorPtr createActor(const char* name, s4u::Host* host, std::function<void()> code);
 
   /** Create an actor using code
    *
@@ -201,14 +200,7 @@ public:
 
   // Create actor from function name:
 
-  static ActorPtr createActor(const char* name, s4u::Host *host, double killTime,
-    const char* function, std::vector<std::string> args);
-
-  static ActorPtr createActor(const char* name, s4u::Host *host, const char* function,
-      std::vector<std::string> args)
-  {
-    return createActor(name, host, -1.0, function, std::move(args));
-  }
+  static ActorPtr createActor(const char* name, s4u::Host* host, const char* function, std::vector<std::string> args);
 
   // ***** Methods *****