}
}
-bool communicator::recv(message*& msg, m_host_t& from, double timeout)
-{
- XBT_DEBUG("waiting for a message to come");
- bool recvd = received.pop(msg, from, timeout);
- if (recvd)
- XBT_DEBUG("received %s from %s",
- msg->to_string().c_str(), MSG_host_get_name(from));
- return recvd;
-}
-
void communicator::receiver()
{
xbt_dynar_t comms = xbt_dynar_new(sizeof(msg_comm_t), NULL);
// Try to get a message. Returns true on success.
// Parameter "timeout" may be 0 for non-blocking operation, -1 for
// infinite waiting, or any positive timeout.
- bool recv(message*& msg, m_host_t& from, double timeout);
+ bool recv(message*& msg, m_host_t& from, double timeout) {
+ return received.pop(msg, from, timeout);
+ }
private:
// Myself
#include <sstream>
+#include <xbt/log.h>
+
+XBT_LOG_EXTERNAL_DEFAULT_CATEGORY(comm);
+
+#include "misc.h"
#include "messages.h"
mutex.acquire();
while (queue.empty() && (!deadline || deadline > MSG_get_clock())) {
xbt_ex_t e;
+ XBT_DEBUG("waiting for a message to come");
TRY {
if (deadline)
cond.timedwait(mutex, deadline - MSG_get_clock());
from = MSG_task_get_source(task);
MSG_task_destroy(task);
+ XBT_DEBUG("received %s from %s",
+ msg->to_string().c_str(), MSG_host_get_name(from));
+
return true;
}