X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/32892d0df7206a7c14ace5a13f985df1e0a9249a..2b4f2809ce5c54961bcae43131fcab00dd161a3d:/src/msg/msg_gos.cpp diff --git a/src/msg/msg_gos.cpp b/src/msg/msg_gos.cpp index 9b434b404b..3c8121b2d3 100644 --- a/src/msg/msg_gos.cpp +++ b/src/msg/msg_gos.cpp @@ -78,21 +78,15 @@ msg_error_t MSG_parallel_task_execute_with_timeout(msg_task_t task, double timeo simdata->setNotUsed(); XBT_DEBUG("Execution task '%s' finished in state %d", task->name, (int)comp_state); - } - catch (xbt_ex& e) { - switch (e.category) { - case cancel_error: + } catch (simgrid::HostFailureException& e) { + status = MSG_HOST_FAILURE; + } catch (simgrid::TimeoutError& e) { + status = MSG_TIMEOUT; + } catch (xbt_ex& e) { + if (e.category == cancel_error) status = MSG_TASK_CANCELED; - break; - case host_error: - status = MSG_HOST_FAILURE; - break; - case timeout_error: - status = MSG_TIMEOUT; - break; - default: + else throw; - } } /* action ended, set comm and compute = nullptr, the actions is already destroyed in the main function */ @@ -117,8 +111,9 @@ msg_error_t MSG_process_sleep(double nb_sec) try { simgrid::s4u::this_actor::sleep_for(nb_sec); - } - catch(xbt_ex& e) { + } catch (simgrid::HostFailureException& e) { + status = MSG_HOST_FAILURE; + } catch (xbt_ex& e) { if (e.category == cancel_error) { XBT_DEBUG("According to the JAVA API, a sleep call should only deal with HostFailureException, I'm lost."); // adsein: MSG_TASK_CANCELED is assigned when someone kills the process that made the sleep, this is not @@ -280,19 +275,18 @@ msg_error_t MSG_task_receive_ext_bounded(msg_task_t * task, const char *alias, d timeout, rate); XBT_DEBUG("Got task %s from %s", (*task)->name, mailbox->get_cname()); (*task)->simdata->setNotUsed(); - } - catch (xbt_ex& e) { + } catch (simgrid::HostFailureException& e) { + ret = MSG_HOST_FAILURE; + } catch (simgrid::TimeoutError& e) { + ret = MSG_TIMEOUT; + } catch (xbt_ex& e) { switch (e.category) { - case host_error: case cancel_error: ret = MSG_HOST_FAILURE; break; case network_error: ret = MSG_TRANSFER_FAILURE; break; - case timeout_error: - ret = MSG_TIMEOUT; - break; default: throw; } @@ -484,19 +478,16 @@ int MSG_comm_test(msg_comm_t comm) /* I am the receiver */ (*comm->task_received)->simdata->setNotUsed(); } + } catch (simgrid::TimeoutError& e) { + comm->status = MSG_TIMEOUT; + finished = true; } catch (xbt_ex& e) { - switch (e.category) { - case network_error: - comm->status = MSG_TRANSFER_FAILURE; - finished = true; - break; - case timeout_error: - comm->status = MSG_TIMEOUT; - finished = true; - break; - default: - throw; + if (e.category == network_error) { + comm->status = MSG_TRANSFER_FAILURE; + finished = true; + } else { + throw; } } @@ -526,6 +517,9 @@ int MSG_comm_testany(xbt_dynar_t comms) msg_error_t status = MSG_OK; try { finished_index = simcall_comm_testany(s_comms.data(), s_comms.size()); + } catch (simgrid::TimeoutError& e) { + finished_index = e.value; + status = MSG_TIMEOUT; } catch (xbt_ex& e) { switch (e.category) { @@ -533,10 +527,6 @@ int MSG_comm_testany(xbt_dynar_t comms) finished_index = e.value; status = MSG_TRANSFER_FAILURE; break; - case timeout_error: - finished_index = e.value; - status = MSG_TIMEOUT; - break; default: throw; } @@ -585,18 +575,14 @@ msg_error_t MSG_comm_wait(msg_comm_t comm, double timeout) } /* FIXME: these functions are not traceable */ + } catch (simgrid::TimeoutError& e) { + comm->status = MSG_TIMEOUT; } catch (xbt_ex& e) { - switch (e.category) { - case network_error: + if (e.category == network_error) comm->status = MSG_TRANSFER_FAILURE; - break; - case timeout_error: - comm->status = MSG_TIMEOUT; - break; - default: + else throw; - } } return comm->status; @@ -639,19 +625,16 @@ int MSG_comm_waitany(xbt_dynar_t comms) msg_error_t status = MSG_OK; try { finished_index = simcall_comm_waitany(s_comms, -1); + } catch (simgrid::TimeoutError& e) { + finished_index = e.value; + status = MSG_TIMEOUT; } catch(xbt_ex& e) { - switch (e.category) { - case network_error: - finished_index = e.value; - status = MSG_TRANSFER_FAILURE; - break; - case timeout_error: - finished_index = e.value; - status = MSG_TIMEOUT; - break; - default: - throw; + if (e.category == network_error) { + finished_index = e.value; + status = MSG_TRANSFER_FAILURE; + } else { + throw; } } @@ -798,6 +781,8 @@ msg_error_t MSG_task_send_with_timeout(msg_task_t task, const char *alias, doubl simcall_set_category(comm, task->category); t_simdata->comm = boost::static_pointer_cast(comm); simcall_comm_wait(comm, timeout); + } catch (simgrid::TimeoutError& e) { + ret = MSG_TIMEOUT; } catch (xbt_ex& e) { switch (e.category) { @@ -807,9 +792,6 @@ msg_error_t MSG_task_send_with_timeout(msg_task_t task, const char *alias, doubl case network_error: ret = MSG_TRANSFER_FAILURE; break; - case timeout_error: - ret = MSG_TIMEOUT; - break; default: throw; }