-/**
- * gras_msg_recv:
- *
- * receive the next message on the given socket (which should be dropped
- * when the function returns an error)
- */
-gras_error_t
-gras_msg_recv(gras_socket_t *sock,
- gras_msgtype_t **msgtype,
- void **payload) {
-
- gras_error_t errcode;
- static gras_datadesc_type_t *string_type=NULL;
- char header[6];
- int cpt;
- int r_arch;
- char *msg_name;
-
- if (!string_type)
- TRY(gras_datadesc_by_name("string", &string_type));
-
- TRY(gras_trp_chunk_recv(sock, header, 6));
- for (cpt=0; cpt<4; cpt++)
- if (header[cpt] != GRAS_header[cpt])
- RAISE0(mismatch_error,"Incoming bytes do not look like a GRAS message");
- if (header[4] != GRAS_header[4])
- RAISE2(mismatch_error,"GRAS protocol mismatch (got %d, use %d)",
- (int)header[4], (int)GRAS_header[4]);
- r_arch = (int)header[5];
-
- 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));
-
- return no_error;
+/** @brief retrive an existing message type from its name and version. */
+gras_msgtype_t gras_msgtype_by_id(int id) {
+ return (gras_msgtype_t)xbt_set_get_by_id(_gras_msgtype_set, id);