Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Remove extern "C" from cpp files.
[simgrid.git] / src / s4u / s4u_actor.cpp
index e8b3fdf..6a9fd4d 100644 (file)
@@ -36,7 +36,7 @@ ActorPtr Actor::self()
 
 ActorPtr Actor::createActor(const char* name, s4u::Host* host, std::function<void()> code)
 {
-  simgrid::simix::ActorImpl* actor = simcall_process_create(name, std::move(code), nullptr, host, nullptr);
+  simgrid::kernel::actor::ActorImpl* actor = simcall_process_create(name, std::move(code), nullptr, host, nullptr);
   return actor->iface();
 }
 
@@ -44,7 +44,7 @@ ActorPtr Actor::createActor(const char* name, s4u::Host* host, const char* funct
 {
   simgrid::simix::ActorCodeFactory& factory = SIMIX_get_actor_code_factory(function);
   simgrid::simix::ActorCode code = factory(std::move(args));
-  simgrid::simix::ActorImpl* actor          = simcall_process_create(name, std::move(code), nullptr, host, nullptr);
+  simgrid::kernel::actor::ActorImpl* actor  = simcall_process_create(name, std::move(code), nullptr, host, nullptr);
   return actor->iface();
 }
 
@@ -119,8 +119,7 @@ void Actor::migrate(Host* new_host)
 
   if (TRACE_actor_is_enabled()) {
     // create new container on the new_host location
-    new simgrid::instr::Container(instr_pid(this), "ACTOR", simgrid::instr::Container::byName(new_host->getName()));
-
+    simgrid::instr::Container::byName(new_host->getName())->createChild(instr_pid(this), "ACTOR");
     // end link
     link->endEvent(simgrid::instr::Container::byName(instr_pid(this)), "M", key);
   }
@@ -396,12 +395,13 @@ void migrate(Host* new_host)
 {
   SIMIX_process_self()->iface()->migrate(new_host);
 }
+
 } // namespace this_actor
 } // namespace s4u
 } // namespace simgrid
 
 /* **************************** Public C interface *************************** */
-SG_BEGIN_DECL()
+
 /** \ingroup m_actor_management
  * \brief Returns the process ID of \a actor.
  *
@@ -519,7 +519,7 @@ void sg_actor_daemonize(sg_actor_t actor)
   actor->daemonize();
 }
 
-/** \ingroup m_process_management
+/** \ingroup m_actor_management
  * \brief Migrates an actor to another location.
  *
  * This function changes the value of the #sg_host_t on  which \a actor is running.
@@ -529,4 +529,29 @@ void sg_actor_migrate(sg_actor_t process, sg_host_t host)
   process->migrate(host);
 }
 
-SG_END_DECL()
+/** \ingroup m_actor_management
+* \brief Wait for the completion of a #sg_actor_t.
+*
+* \param actor the actor to wait for
+* \param timeout wait until the actor is over, or the timeout expires
+*/
+void sg_actor_join(sg_actor_t actor, double timeout)
+{
+  actor->join(timeout);
+}
+
+void sg_actor_kill(sg_actor_t actor)
+{
+  actor->kill();
+}
+
+/** \ingroup m_actor_management
+ * \brief Set the kill time of an actor.
+ *
+ * \param actor an actor
+ * \param kill_time the time when the actor is killed.
+ */
+void sg_actor_set_kill_time(sg_actor_t actor, double kill_time)
+{
+  actor->setKillTime(kill_time);
+}