-int MC_protocol_send(int socket, const 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;
-}
-