X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/40334ce6fe520b2fa7d1e240716e4f34a5fdc74e..fd9d52c0c7a9c96221fff2013cdeef05b6e979e2:/src/mc/mc_protocol.cpp diff --git a/src/mc/mc_protocol.cpp b/src/mc/mc_protocol.cpp index 01c4f9dd40..b420e4448b 100644 --- a/src/mc/mc_protocol.cpp +++ b/src/mc/mc_protocol.cpp @@ -6,87 +6,24 @@ #include #include +#include // perror +#include // std::size_t #include #include #include -#include "mc_protocol.h" -#include "mc_client.h" - -extern "C" { +#include "src/mc/mc_protocol.h" +#include "src/mc/Client.hpp" XBT_LOG_NEW_DEFAULT_SUBCATEGORY(mc_protocol, mc, "Generic MC protocol logic"); -int MC_protocol_send(int socket, void* message, size_t size) -{ - XBT_DEBUG("Protocol [%s] send %s", - MC_mode_name(mc_mode), - MC_message_type_name(*(e_mc_message_type*) message)); - - while (send(socket, message, size, 0) == -1) { - if (errno == EINTR) - continue; - else - return errno; - } - return 0; -} - -int MC_protocol_send_simple_message(int socket, e_mc_message_type type) -{ - s_mc_message_t message; - message.type = type; - return MC_protocol_send(socket, &message, sizeof(message)); -} - -int MC_protocol_hello(int socket) -{ - int e; - if ((e = MC_protocol_send_simple_message(socket, MC_MESSAGE_HELLO)) != 0) { - XBT_ERROR("Could not send HELLO message"); - return 1; - } - - s_mc_message_t message; - message.type = MC_MESSAGE_NONE; - - ssize_t s; - while ((s = MC_receive_message(socket, &message, sizeof(message), 0)) == -1) { - if (errno == EINTR) - continue; - else { - XBT_ERROR("Could not receive HELLO message"); - return 2; - } - } - if ((size_t) s < sizeof(message) || message.type != MC_MESSAGE_HELLO) { - XBT_ERROR("Did not receive suitable HELLO message. Who are you?"); - return 3; - } - - return 0; -} - -ssize_t MC_receive_message(int socket, void* message, size_t size, int options) -{ - int res = recv(socket, message, size, options); - if (res != -1) { - XBT_DEBUG("Protocol [%s] received %s", - MC_mode_name(mc_mode), - MC_message_type_name(*(e_mc_message_type*) message)); - } - return res; -} - const char* MC_message_type_name(e_mc_message_type type) { switch(type) { case MC_MESSAGE_NONE: return "NONE"; - case MC_MESSAGE_HELLO: - return "HELLO"; case MC_MESSAGE_CONTINUE: return "CONTINUE"; case MC_MESSAGE_IGNORE_HEAP: @@ -113,19 +50,3 @@ const char* MC_message_type_name(e_mc_message_type type) return "?"; } } - -const char* MC_mode_name(e_mc_mode_t mode) -{ - switch(mode) { - case MC_MODE_NONE: - return "NONE"; - case MC_MODE_CLIENT: - return "CLIENT"; - case MC_MODE_SERVER: - return "SERVER"; - default: - return "?"; - } -} - -}