Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Cosmetics.
[simgrid.git] / src / kernel / actor / ActorImpl.cpp
index a599e87..1d2d122 100644 (file)
@@ -37,17 +37,6 @@ smx_actor_t SIMIX_process_self()
   return (self_context != nullptr) ? self_context->get_actor() : nullptr;
 }
 
-/**
- * @brief Returns whether a process has pending asynchronous communications.
- * @return true if there are asynchronous communications in this process
- * @deprecated
- */
-int SIMIX_process_has_pending_comms(smx_actor_t process)
-{
-
-  return process->comms.size() > 0;
-}
-
 namespace simgrid {
 namespace kernel {
 namespace actor {
@@ -109,7 +98,7 @@ ActorImplPtr ActorImpl::attach(const std::string& name, void* data, s4u::Host* h
     actor->set_properties(*properties);
 
   /* Add the process to it's host process list */
-  host->pimpl_->process_list_.push_back(*actor);
+  host->pimpl_->add_actor(actor);
 
   /* Now insert it in the global process list and in the process to run list */
   simix_global->process_list[actor->get_pid()] = actor;
@@ -182,8 +171,8 @@ void ActorImpl::cleanup()
   simix_global->mutex.lock();
 
   simix_global->process_list.erase(pid_);
-  if (host_ && host_process_list_hook.is_linked())
-    simgrid::xbt::intrusive_erase(host_->pimpl_->process_list_, *this);
+  if (host_ && host_actor_list_hook.is_linked())
+    host_->pimpl_->remove_actor(this);
   if (not smx_destroy_list_hook.is_linked()) {
 #if SIMGRID_HAVE_MC
     xbt_dynar_push_as(simix_global->dead_actors_vector, ActorImpl*, this);
@@ -233,6 +222,7 @@ void ActorImpl::exit()
 
 void ActorImpl::kill(ActorImpl* actor)
 {
+  xbt_assert(actor != simix_global->maestro_process, "Killing maestro is a rather bad idea");
   if (actor->finished_) {
     XBT_DEBUG("Ignoring request to kill actor %s@%s that is already dead", actor->get_cname(),
               actor->host_->get_cname());
@@ -287,7 +277,6 @@ void ActorImpl::yield()
 
   if (context_->iwannadie) {
     XBT_DEBUG("Actor %s@%s is dead", get_cname(), host_->get_cname());
-    // throw simgrid::kernel::context::ForcefulKillException(); Does not seem to properly kill the actor
     context_->stop();
     THROW_IMPOSSIBLE;
   }
@@ -454,9 +443,9 @@ void ActorImpl::simcall_answer()
 
 void ActorImpl::set_host(s4u::Host* dest)
 {
-  xbt::intrusive_erase(host_->pimpl_->process_list_, *this);
+  host_->pimpl_->remove_actor(this);
   host_ = dest;
-  dest->pimpl_->process_list_.push_back(*this);
+  dest->pimpl_->add_actor(this);
 }
 
 ActorImplPtr ActorImpl::init(const std::string& name, s4u::Host* host)
@@ -488,7 +477,7 @@ ActorImpl* ActorImpl::start(const simix::ActorCode& code)
   XBT_DEBUG("Start context '%s'", get_cname());
 
   /* Add the actor to its host's actor list */
-  host_->pimpl_->process_list_.push_back(*this);
+  host_->pimpl_->add_actor(this);
   simix_global->process_list[pid_] = this;
 
   /* Now insert it in the global actor list and in the actor to run list */
@@ -540,18 +529,6 @@ void create_maestro(const std::function<void()>& code)
 } // namespace kernel
 } // namespace simgrid
 
-void SIMIX_process_detach() // deprecated v3.25
-{
-  simgrid::kernel::actor::ActorImpl::detach();
-}
-
-smx_actor_t SIMIX_process_attach(const char* name, void* data, const char* hostname,
-                                 std::unordered_map<std::string, std::string>* properties,
-                                 smx_actor_t /*parent_process*/) // deprecated 3.25
-{
-  return simgrid::kernel::actor::ActorImpl::attach(name, data, sg_host_by_name(hostname), properties).get();
-}
-
 int SIMIX_process_count()
 {
   return simix_global->process_list.size();
@@ -576,12 +553,7 @@ void SIMIX_process_self_set_data(void* data)
    by exceptions and logging events */
 const char* SIMIX_process_self_get_name()
 {
-
-  smx_actor_t process = SIMIX_process_self();
-  if (process == nullptr || process == simix_global->maestro_process)
-    return "maestro";
-
-  return process->get_cname();
+  return SIMIX_is_maestro() ? "maestro" : SIMIX_process_self()->get_cname();
 }
 
 /**
@@ -592,14 +564,6 @@ const char* SIMIX_process_self_get_name()
  * @param self the current process
  */
 
-/** @brief Returns the list of processes to run.
- * @deprecated
- */
-const std::vector<smx_actor_t>& simgrid::simix::process_get_runnable()
-{
-  return simix_global->actors_to_run;
-}
-
 /** @brief Returns the process from PID. */
 smx_actor_t SIMIX_process_from_PID(aid_t PID)
 {
@@ -613,19 +577,6 @@ smx_actor_t SIMIX_process_from_PID(aid_t PID)
   return item->second;
 }
 
-void SIMIX_process_on_exit(smx_actor_t actor, int_f_pvoid_pvoid_t fun, void* data)
-{
-  SIMIX_process_on_exit(actor, [fun, data](bool failed) {
-    intptr_t status = failed ? SMX_EXIT_FAILURE : SMX_EXIT_SUCCESS;
-    fun(reinterpret_cast<void*>(status), data);
-  });
-}
-
-void SIMIX_process_on_exit(smx_actor_t actor, const std::function<void(int, void*)>& fun, void* data)
-{
-  SIMIX_process_on_exit(actor, [fun, data](bool failed) { fun(failed ? SMX_EXIT_FAILURE : SMX_EXIT_SUCCESS, data); });
-}
-
 void SIMIX_process_on_exit(smx_actor_t actor, const std::function<void(bool /*failed*/)>& fun)
 {
   xbt_assert(actor, "current process not found: are you in maestro context ?");