Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Sanitize the prototype of Actor::on_exit() callbacks
[simgrid.git] / src / simix / ActorImpl.cpp
index f456507..2a664f4 100644 (file)
@@ -164,7 +164,7 @@ void ActorImpl::exit()
 
   // Forcefully kill the actor if its host is turned off. Not a HostFailureException because you should not survive that
   if (not host_->is_on())
-    this->throw_exception(std::make_exception_ptr(simgrid::kernel::context::StopRequest("host failed")));
+    this->throw_exception(std::make_exception_ptr(ForcefulKillException("host failed")));
 
   /* destroy the blocking synchro if any */
   if (waiting_synchro != nullptr) {
@@ -273,14 +273,15 @@ void ActorImpl::yield()
   if (context_->iwannadie) {
 
     XBT_DEBUG("Actor %s@%s is dead", get_cname(), host_->get_cname());
-    // throw simgrid::kernel::context::StopRequest(); Does not seem to properly kill the actor
+    // throw simgrid::kernel::context::ForcefulKillException(); Does not seem to properly kill the actor
     context_->stop();
     THROW_IMPOSSIBLE;
   }
 
   if (suspended_) {
     XBT_DEBUG("Hey! I'm suspended.");
-    xbt_assert(exception_ != nullptr, "Gasp! This exception may be lost by subsequent calls.");
+
+    xbt_assert(exception_ == nullptr, "Gasp! This exception may be lost by subsequent calls.");
     suspended_ = false;
     suspend(this);
   }
@@ -688,7 +689,7 @@ void SIMIX_process_on_exit(smx_actor_t actor, int_f_pvoid_pvoid_t fun, void* dat
   SIMIX_process_on_exit(actor, [fun](int a, void* b) { fun((void*)(intptr_t)a, b); }, data);
 }
 
-void SIMIX_process_on_exit(smx_actor_t actor, std::function<void(int, void*)> fun, void* data)
+void SIMIX_process_on_exit(smx_actor_t actor, std::function<void(bool, void*)> fun, void* data)
 {
   xbt_assert(actor, "current process not found: are you in maestro context ?");