Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
added circle placement for ns3 wifi nodes
[simgrid.git] / include / simgrid / s4u / Actor.hpp
index 4f271670979f674ffcc2ebbc5b05dff61812d9cc..b72b576f1cc931d6587e4eee02d383acd0f791a9 100644 (file)
@@ -10,7 +10,6 @@
 
 #include <simgrid/chrono.hpp>
 #include <xbt/Extendable.hpp>
-#include <xbt/functional.hpp>
 #include <xbt/signal.hpp>
 #include <xbt/string.hpp>
 
@@ -26,7 +25,7 @@ namespace s4u {
 
 /** An actor is an independent stream of execution in your distributed application.
  *
- * \beginrst
+ * \rst
  * It is located on a (simulated) :cpp:class:`host <simgrid::s4u::Host>`, but can interact
  * with the whole simulated platform.
  *
@@ -50,7 +49,7 @@ class XBT_PUBLIC Actor : public xbt::Extendable<Actor> {
   kernel::actor::ActorImpl* const pimpl_;
 #endif
 
-  explicit Actor(smx_actor_t pimpl) : pimpl_(pimpl) {}
+  explicit Actor(kernel::actor::ActorImpl* pimpl) : pimpl_(pimpl) {}
 
 public:
 #ifndef DOXYGEN
@@ -63,7 +62,7 @@ public:
   friend XBT_PUBLIC void intrusive_ptr_release(const Actor* actor);
 #endif
   /** Retrieve the amount of references on that object. Useful to debug the automatic refcounting */
-  int get_refcount();
+  int get_refcount() const;
 
   // ***** Actor creation *****
   /** Retrieve a reference to myself */
@@ -105,8 +104,9 @@ public:
   static ActorPtr create(const std::string& name, s4u::Host* host, const std::function<void()>& code);
   /** Create an actor, but don't start it yet.
    *
-   * This is usefull to set some properties or extension before actually starting it */
+   * This is useful to set some properties or extension before actually starting it */
   static ActorPtr init(const std::string& name, s4u::Host* host);
+  ActorPtr set_stacksize(unsigned stacksize);
   /** Start a previously initialized actor */
   ActorPtr start(const std::function<void()>& code);
 
@@ -156,7 +156,7 @@ public:
   void resume();
 
   /** Returns true if the actor is suspended. */
-  bool is_suspended();
+  bool is_suspended() const;
 
   /** If set to true, the actor will automatically restart when its host reboots */
   void set_auto_restart(bool autorestart);
@@ -177,7 +177,7 @@ public:
   /** Sets the time at which that actor should be killed */
   void set_kill_time(double time);
   /** Retrieves the time at which that actor will be killed (or -1 if not set) */
-  double get_kill_time();
+  double get_kill_time() const;
 
   /** @brief Moves the actor to another host
    *
@@ -292,17 +292,18 @@ XBT_PUBLIC void execute(double flop, double priority);
  * vector means that `host0` should compute 1000 flops while `host1` will compute 2000 flops. A matrix of
  * communications' sizes of ``[0, 1, 2, 3]`` specifies the following data exchanges:
  *
- *   +-----------+-------+------+
- *   |from \\ to | host0 | host1|
- *   +===========+=======+======+
- *   |host0      |   0   |  1   |
- *   +-----------+-------+------+
- *   |host1      |   2   |  3   |
- *   +-----------+-------+------+
+ * - from host0: [ to host0:  0 bytes; to host1: 1 byte ]
+ *
+ * - from host1: [ to host0: 2 bytes; to host1: 3 bytes ]
+ *
+ * Or, in other words:
  *
  * - From host0 to host0: 0 bytes are exchanged
+ *
  * - From host0 to host1: 1 byte is exchanged
+ *
  * - From host1 to host0: 2 bytes are exchanged
+ *
  * - From host1 to host1: 3 bytes are exchanged
  *
  * In a parallel execution, all parts (all executions on each hosts, all communications) progress exactly at the
@@ -352,9 +353,6 @@ XBT_PUBLIC void suspend();
 /** @brief Yield the current actor. */
 XBT_PUBLIC void yield();
 
-/** @brief Resume the current actor, that was suspend()ed previously. */
-XBT_PUBLIC void resume();
-
 /** @brief kill the current actor. */
 XBT_PUBLIC void exit();
 
@@ -368,7 +366,7 @@ XBT_PUBLIC void exit();
  * blocking functions forbidden in this setting, but also modifications to the global state.
  *
  * The parameter of on_exit's callbacks denotes whether or not the actor's execution failed.
- * It will be set to true if the actor was killed or failed because of an exception,
+ * It will be set to true if the actor was killed or failed because of an exception or if the simulation deadlocked,
  * while it will remain to false if the actor terminated gracefully.
  */