X-Git-Url: https://bilbo.iut-bm.univ-fcomte.fr/and/gitweb/loba.git/blobdiff_plain/799e14e4362fc824b087ff366f50e7231371145a..4ed2ded99f037e413c9008a324c85f8f95611bb5:/communicator.cpp?ds=inline diff --git a/communicator.cpp b/communicator.cpp index 1da6def..1bf16cd 100644 --- a/communicator.cpp +++ b/communicator.cpp @@ -137,20 +137,12 @@ void communicator::flush(bool wait) std::copy(sent_comm.begin(), sent_comm.end(), comms); MSG_comm_waitall(comms, sent_comm.size(), -1.0); if (!MSG_WAIT_DESTROYS_COMMS) - std::for_each(sent_comm.begin(), sent_comm.end(), MSG_comm_destroy); + std::for_each(sent_comm.begin(), sent_comm.end(), + comm_check_n_destroy); sent_comm.clear(); } } -bool communicator::comm_test_n_destroy(msg_comm_t comm) -{ - if (MSG_comm_test(comm)) { - MSG_comm_destroy(comm); - return true; - } else - return false; -} - int communicator::receiver_wrapper(int, char* []) { communicator* comm; @@ -168,7 +160,7 @@ int communicator::receiver_wrapper(int, char* []) void communicator::receiver1(msg_comm_t& comm, m_task_t& task, const char* mbox) { - MSG_comm_destroy(comm); + comm_check_n_destroy(comm); if (strcmp(MSG_task_get_name(task), "finalize")) { XBT_DEBUG("received message on %s", mbox); xbt_mutex_acquire(receiver_mutex); @@ -215,6 +207,21 @@ void communicator::receiver() xbt_dynar_free(&comms); } +void communicator::comm_check_n_destroy(msg_comm_t comm) +{ + xbt_assert(MSG_comm_get_status(comm) == MSG_OK); + MSG_comm_destroy(comm); +} + +bool communicator::comm_test_n_destroy(msg_comm_t comm) +{ + if (MSG_comm_test(comm)) { + comm_check_n_destroy(comm); + return true; + } else + return false; +} + // Local variables: // mode: c++ // End: