X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/6a8d5cf4199454b5f811043c207d195107743e72..0af2746ea094442ef04e3f0fab84710cdd43b50b:/src/msg/msg_gos.cpp diff --git a/src/msg/msg_gos.cpp b/src/msg/msg_gos.cpp index 84d1c06fc2..97781b9468 100644 --- a/src/msg/msg_gos.cpp +++ b/src/msg/msg_gos.cpp @@ -3,7 +3,7 @@ /* This program is free software; you can redistribute it and/or modify it * under the terms of the license (GNU LGPL) which comes with this package. */ -#include +#include "simgrid/Exception.hpp" #include "simgrid/s4u/Mailbox.hpp" #include "src/instr/instr_private.hpp" @@ -78,18 +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) { + } catch (simgrid::HostFailureException& e) { + status = MSG_HOST_FAILURE; + } catch (simgrid::TimeoutError& e) { + status = MSG_TIMEOUT; + } catch (xbt_ex& e) { switch (e.category) { case cancel_error: status = MSG_TASK_CANCELED; break; - case host_error: - status = MSG_HOST_FAILURE; - break; - case timeout_error: - status = MSG_TIMEOUT; - break; default: throw; } @@ -117,8 +114,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 +278,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,6 +481,9 @@ 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) { @@ -491,10 +491,6 @@ int MSG_comm_test(msg_comm_t comm) comm->status = MSG_TRANSFER_FAILURE; finished = true; break; - case timeout_error: - comm->status = MSG_TIMEOUT; - finished = true; - break; default: throw; } @@ -526,6 +522,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 +532,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,15 +580,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: comm->status = MSG_TRANSFER_FAILURE; break; - case timeout_error: - comm->status = MSG_TIMEOUT; - break; default: throw; } @@ -639,6 +633,9 @@ 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) { @@ -646,10 +643,6 @@ int MSG_comm_waitany(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; } @@ -798,6 +791,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 +802,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; }