X-Git-Url: http://bilbo.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/39c935d6d5ee86d153f6f7e6a10d723ae7c57f6f..49e9f443f655fd07cc8ed1e4ad6ce329ded0fdc3:/src/mc/remote/Channel.cpp?ds=sidebyside diff --git a/src/mc/remote/Channel.cpp b/src/mc/remote/Channel.cpp index be28998d61..57f8942a4c 100644 --- a/src/mc/remote/Channel.cpp +++ b/src/mc/remote/Channel.cpp @@ -1,4 +1,4 @@ -/* Copyright (c) 2015-2021. The SimGrid Team. +/* Copyright (c) 2015-2023. The SimGrid Team. * All rights reserved. */ /* This program is free software; you can redistribute it and/or modify it @@ -8,14 +8,14 @@ #include #include -#include +#include #include #include +#include XBT_LOG_NEW_DEFAULT_SUBCATEGORY(mc_Channel, mc, "MC interprocess communication"); -namespace simgrid { -namespace mc { +namespace simgrid::mc { Channel::~Channel() { @@ -26,20 +26,34 @@ Channel::~Channel() /** @brief Send a message; returns 0 on success or errno on failure */ int Channel::send(const void* message, size_t size) const { - XBT_DEBUG("Send %s", MC_message_type_name(*(MessageType*)message)); while (::send(this->socket_, message, size, 0) == -1) { - if (errno != EINTR) + if (errno != EINTR) { + XBT_ERROR("Channel::send failure: %s", strerror(errno)); return errno; + } + } + + if (is_valid_MessageType(*static_cast(message))) { + XBT_DEBUG("Sending %s (%zu bytes sent)", to_c_str(*static_cast(message)), size); + } else { + XBT_DEBUG("Sending bytes directly (from address %p) (%zu bytes sent)", message, size); } + return 0; } -ssize_t Channel::receive(void* message, size_t size, bool block) const +ssize_t Channel::receive(void* message, size_t size) const { - ssize_t res = recv(this->socket_, message, size, block ? 0 : MSG_DONTWAIT); - if (res != -1) - XBT_DEBUG("Receive %s", MC_message_type_name(*(MessageType*)message)); + ssize_t res = recv(this->socket_, message, size, 0); + if (res != -1) { + if (is_valid_MessageType(*static_cast(message))) { + XBT_DEBUG("Receive %s (requested %zu; received %zd)", to_c_str(*static_cast(message)), size, res); + } else { + XBT_DEBUG("Receive %zd bytes", res); + } + } else { + XBT_ERROR("Channel::receive failure: %s", strerror(errno)); + } return res; } -} -} +} // namespace simgrid::mc