-
- TRY(gras_datadesc_recv(sock, string_type, r_arch,(void**) &msg_name));
- TRY(gras_set_get_by_name(_gras_msgtype_set,
- msg_name,(gras_set_elm_t**)msgtype));
- TRY(gras_datadesc_recv(sock, (*msgtype)->ctn_type, r_arch, payload));
+ DEBUG2("Handle an incoming message using protocol %d (remote is %s)",
+ (int)header[4],gras_datadesc_arch_name(r_arch));
+
+ TRY(gras_datadesc_recv(sock, string_type, r_arch, &msg_name));
+ errcode = xbt_set_get_by_name(_gras_msgtype_set,
+ msg_name,(xbt_set_elm_t*)msgtype);
+ if (errcode != no_error)
+ RAISE2(errcode,
+ "Got error %s while retrieving the type associated to messages '%s'",
+ xbt_error_name(errcode),msg_name);
+ /* FIXME: Survive unknown messages */
+ free(msg_name);
+
+ *payload_size=gras_datadesc_size((*msgtype)->ctn_type);
+ xbt_assert2(*payload_size > 0,
+ "%s %s",
+ "Dynamic array as payload is forbided for now (FIXME?).",
+ "Reference to dynamic array is allowed.");
+ *payload = xbt_malloc(*payload_size);
+ TRY(gras_datadesc_recv(sock, (*msgtype)->ctn_type, r_arch, *payload));