Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
DONE is not an expected state for Raw activities
authorFrederic Suter <frederic.suter@cc.in2p3.fr>
Tue, 2 Apr 2019 15:38:28 +0000 (17:38 +0200)
committerFrederic Suter <frederic.suter@cc.in2p3.fr>
Tue, 2 Apr 2019 15:38:28 +0000 (17:38 +0200)
src/kernel/activity/SynchroRaw.cpp

index 8d8ede0..3b56ef8 100644 (file)
@@ -69,24 +69,14 @@ void RawImpl::finish()
   smx_simcall_t simcall = simcalls_.front();
   simcalls_.pop_front();
 
   smx_simcall_t simcall = simcalls_.front();
   simcalls_.pop_front();
 
-  switch (state_) {
-    case SIMIX_DONE:
-      /* do nothing, synchro done */
-      XBT_DEBUG("RawImpl::finish(): execution successful");
-      break;
-
-    case SIMIX_FAILED:
-      XBT_DEBUG("RawImpl::finish(): host '%s' failed", simcall->issuer->get_host()->get_cname());
-      simcall->issuer->context_->iwannadie = true;
-      simcall->issuer->exception_ =
-          std::make_exception_ptr(simgrid::HostFailureException(XBT_THROW_POINT, "Host failed"));
-      break;
-    case SIMIX_SRC_TIMEOUT:
-      simcall->issuer->exception_ =
-          std::make_exception_ptr(simgrid::TimeoutError(XBT_THROW_POINT, "Synchronization timeout"));
-      break;
-    default:
-      xbt_die("Internal error in RawImpl::finish() unexpected synchro state %d", static_cast<int>(state_));
+  if (state_ == SIMIX_FAILED) {
+    XBT_DEBUG("RawImpl::finish(): host '%s' failed", simcall->issuer->get_host()->get_cname());
+    simcall->issuer->context_->iwannadie = true;
+    simcall->issuer->exception_ = std::make_exception_ptr(HostFailureException(XBT_THROW_POINT, "Host failed"));
+  } else if (state_ == SIMIX_SRC_TIMEOUT) {
+    simcall->issuer->exception_ = std::make_exception_ptr(TimeoutError(XBT_THROW_POINT, "Synchronization timeout"));
+  } else {
+    xbt_die("Internal error in RawImpl::finish() unexpected synchro state %d", static_cast<int>(state_));
   }
 
   switch (simcall->call) {
   }
 
   switch (simcall->call) {