X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/cc01c6a871dbbfd0cc84e26eb9f94aeb539e613e..dbb6a5398ebdb917f1de3acc0d16cd83cd23de71:/examples/gras/p2p/chord/chord.c diff --git a/examples/gras/p2p/chord/chord.c b/examples/gras/p2p/chord/chord.c index debf98fbbe..528db0cec0 100644 --- a/examples/gras/p2p/chord/chord.c +++ b/examples/gras/p2p/chord/chord.c @@ -23,7 +23,7 @@ typedef enum msg_typus { STD, } msg_typus; -/*GRAS_DEFINE_TYPE(s_pbio, +/*XBT_DEFINE_TYPE(s_pbio, struct s_pbio{ msg_typus type; int dest; @@ -32,14 +32,14 @@ typedef enum msg_typus { ); typedef struct s_pbio pbio_t;*/ -/*GRAS_DEFINE_TYPE(s_ping,*/ +/*XBT_DEFINE_TYPE(s_ping,*/ struct s_ping { int id; }; /*);*/ typedef struct s_ping ping_t; -/*GRAS_DEFINE_TYPE(s_pong,*/ +/*XBT_DEFINE_TYPE(s_pong,*/ struct s_pong { int id; int failed; @@ -47,17 +47,17 @@ struct s_pong { /*);*/ typedef struct s_pong pong_t; -GRAS_DEFINE_TYPE(s_notify, struct s_notify { +XBT_DEFINE_TYPE(s_notify, struct s_notify { int id; char host[1024]; int port;};); typedef struct s_notify notify_t; -GRAS_DEFINE_TYPE(s_get_suc, struct s_get_suc { +XBT_DEFINE_TYPE(s_get_suc, struct s_get_suc { int id;};); typedef struct s_get_suc get_suc_t; -GRAS_DEFINE_TYPE(s_rep_suc, struct s_rep_suc { +XBT_DEFINE_TYPE(s_rep_suc, struct s_rep_suc { int id; char host[1024]; int port;};); typedef struct s_rep_suc rep_suc_t; @@ -72,17 +72,17 @@ typedef struct finger_elem { static void register_messages() { -/* gras_msgtype_declare("chord",gras_datadesc_by_symbol(s_pbio));*/ +/* gras_msgtype_declare("chord",xbt_datadesc_by_symbol(s_pbio));*/ gras_msgtype_declare("chord_get_suc", - gras_datadesc_by_symbol(s_get_suc)); + xbt_datadesc_by_symbol(s_get_suc)); gras_msgtype_declare("chord_rep_suc", - gras_datadesc_by_symbol(s_rep_suc)); - gras_msgtype_declare("chord_notify", gras_datadesc_by_symbol(s_notify)); + xbt_datadesc_by_symbol(s_rep_suc)); + gras_msgtype_declare("chord_notify", xbt_datadesc_by_symbol(s_notify)); } /* Global private data */ typedef struct { - gras_socket_t sock; /* server socket on which I'm listening */ + xbt_socket_t sock; /* server socket on which I'm listening */ int id; /* my id number */ char host[1024]; /* my host name */ int port; /* port on which I'm listening FIXME */ @@ -97,13 +97,13 @@ typedef struct { int node(int argc, char **argv); -/*static int node_cb_chord_handler(gras_socket_t expeditor,void *payload_data){ +/*static int node_cb_chord_handler(xbt_socket_t expeditor,void *payload_data){ xbt_ex_t e; pbio_t pbio_i=*(pbio_t*)payload_data; node_data_t *globals=(node_data_t*)gras_userdata_get(); - INFO4(">>> %d : received %d message from %s to %d <<<",globals->id,pbio_i.type,gras_socket_peer_name(expeditor),pbio_i.dest); + XBT_INFO(">>> %d : received %d message from %s to %d <<<",globals->id,pbio_i.type,xbt_socket_peer_name(expeditor),pbio_i.dest); @@ -112,28 +112,27 @@ int node(int argc, char **argv); static int node_cb_get_suc_handler(gras_msg_cb_ctx_t ctx, void *payload_data) { - gras_socket_t expeditor = gras_msg_cb_ctx_from(ctx); - xbt_ex_t e; + xbt_socket_t expeditor = gras_msg_cb_ctx_from(ctx); get_suc_t incoming = *(get_suc_t *) payload_data; rep_suc_t outgoing; node_data_t *globals = (node_data_t *) gras_userdata_get(); - INFO2("Received a get_successor message from %s for %d", - gras_socket_peer_name(expeditor), incoming.id); + XBT_INFO("Received a get_successor message from %s for %d", + xbt_socket_peer_name(expeditor), incoming.id); if ((globals->id == globals->finger[0].id) || (incoming.id > globals->id && incoming.id <= globals->finger[0].id)) { outgoing.id = globals->finger[0].id; snprintf(outgoing.host, 1024, globals->finger[0].host); outgoing.port = globals->finger[0].port; - INFO0("My successor is his successor!"); + XBT_INFO("My successor is his successor!"); } else { - gras_socket_t temp_sock; + xbt_socket_t temp_sock; int contact = closest_preceding_node(incoming.id); if (contact == -1) { outgoing.id = globals->finger[0].id; snprintf(outgoing.host, 1024, globals->finger[0].host); outgoing.port = globals->finger[0].port; - INFO0("My successor is his successor!"); + XBT_INFO("My successor is his successor!"); } else { get_suc_t asking; asking.id = incoming.id; @@ -141,14 +140,14 @@ static int node_cb_get_suc_handler(gras_msg_cb_ctx_t ctx, temp_sock = gras_socket_client(globals->finger[contact].host, globals->finger[contact].port); } - CATCH(e) { - RETHROW0("Unable to connect!: %s"); + CATCH_ANONYMOUS { + RETHROWF("Unable to connect!: %s"); } TRY { gras_msg_send(temp_sock, "chord_get_suc", &asking); } - CATCH(e) { - RETHROW0("Unable to ask!: %s"); + CATCH_ANONYMOUS { + RETHROWF("Unable to ask!: %s"); } gras_msg_wait(10., "chord_rep_suc", &temp_sock, &outgoing); } @@ -156,11 +155,11 @@ static int node_cb_get_suc_handler(gras_msg_cb_ctx_t ctx, TRY { gras_msg_send(expeditor, "chord_rep_suc", &outgoing); - INFO0("Successor information sent!"); + XBT_INFO("Successor information sent!"); } - CATCH(e) { - RETHROW2("%s:Timeout sending successor information to %s: %s", - globals->host, gras_socket_peer_name(expeditor)); + CATCH_ANONYMOUS { + RETHROWF("%s:Timeout sending successor information to %s: %s", + globals->host, xbt_socket_peer_name(expeditor)); } gras_socket_close(expeditor); return 0; @@ -182,18 +181,18 @@ static int closest_preceding_node(int id) static int node_cb_notify_handler(gras_msg_cb_ctx_t ctx, void *payload_data) { - gras_socket_t expeditor = gras_msg_cb_ctx_from(ctx); + xbt_socket_t expeditor = gras_msg_cb_ctx_from(ctx); /*xbt_ex_t e; */ notify_t incoming = *(notify_t *) payload_data; node_data_t *globals = (node_data_t *) gras_userdata_get(); - INFO2("Received a notifying message from %s as %d", - gras_socket_peer_name(expeditor), incoming.id); + XBT_INFO("Received a notifying message from %s as %d", + xbt_socket_peer_name(expeditor), incoming.id); if (globals->pre_id == -1 || (incoming.id > globals->pre_id && incoming.id < globals->id)) { globals->pre_id = incoming.id; snprintf(globals->pre_host, 1024, incoming.host); globals->pre_port = incoming.port; - INFO0("Set as my new predecessor!"); + XBT_INFO("Set as my new predecessor!"); } return 0; } @@ -201,36 +200,38 @@ static int node_cb_notify_handler(gras_msg_cb_ctx_t ctx, static void fix_fingers() { get_suc_t get_suc_msg; - xbt_ex_t e; - gras_socket_t temp_sock = NULL; - gras_socket_t temp_sock2 = NULL; + xbt_socket_t temp_sock = NULL; + xbt_socket_t temp_sock2 = NULL; rep_suc_t rep_suc_msg; node_data_t *globals = (node_data_t *) gras_userdata_get(); TRY { temp_sock = gras_socket_client(globals->host, globals->port); - } CATCH(e) { - RETHROW0("Unable to contact known host: %s"); + } + CATCH_ANONYMOUS { + RETHROWF("Unable to contact known host: %s"); } get_suc_msg.id = globals->id; TRY { gras_msg_send(temp_sock, "chord_get_suc", &get_suc_msg); - } CATCH(e) { + } + CATCH_ANONYMOUS { gras_socket_close(temp_sock); - RETHROW0("Unable to contact known host to get successor!: %s"); + RETHROWF("Unable to contact known host to get successor!: %s"); } TRY { - INFO0("Waiting for reply!"); + XBT_INFO("Waiting for reply!"); gras_msg_wait(6000, "chord_rep_suc", &temp_sock2, &rep_suc_msg); - } CATCH(e) { - RETHROW1("%s: Error waiting for successor:%s", globals->host); + } + CATCH_ANONYMOUS { + RETHROWF("%s: Error waiting for successor:%s", globals->host); } globals->finger[0].id = rep_suc_msg.id; snprintf(globals->finger[0].host, 1024, rep_suc_msg.host); globals->finger[0].port = rep_suc_msg.port; - INFO1("→ Finger %d fixed!", globals->next_to_fix); + XBT_INFO("→ Finger %d fixed!", globals->next_to_fix); gras_socket_close(temp_sock); globals->next_to_fix = (++globals->next_to_fix == globals->fingers) ? @@ -240,7 +241,7 @@ static void fix_fingers() static void check_predecessor() { node_data_t *globals = (node_data_t *) gras_userdata_get(); - gras_socket_t temp_sock; + xbt_socket_t temp_sock; ping_t ping; pong_t pong; xbt_ex_t e; @@ -254,6 +255,7 @@ static void check_predecessor() globals->pre_id = -1; globals->pre_host[0] = 0; globals->pre_port = 0; + xbt_ex_free(e); } ping.id = 0; @@ -264,6 +266,7 @@ static void check_predecessor() globals->pre_id = -1; globals->pre_host[0] = 0; globals->pre_port = 0; + xbt_ex_free(e); } TRY { gras_msg_wait(60, "chord_pong", &temp_sock, &pong); @@ -272,6 +275,7 @@ static void check_predecessor() globals->pre_id = -1; globals->pre_host[0] = 0; globals->pre_port = 0; + xbt_ex_free(e); } gras_socket_close(temp_sock); } @@ -279,8 +283,8 @@ static void check_predecessor() int node(int argc, char **argv) { node_data_t *globals = NULL; - gras_socket_t temp_sock = NULL; - gras_socket_t temp_sock2 = NULL; + xbt_socket_t temp_sock = NULL; + xbt_socket_t temp_sock2 = NULL; get_suc_t get_suc_msg; rep_suc_t rep_suc_msg; @@ -312,7 +316,7 @@ int node(int argc, char **argv) if (argc == 3) { create = 1; } else { - asprintf(&other_host, "%s", argv[3]); + other_host = xbt_strdup(argv[3]); other_port = atoi(argv[4]); } @@ -322,50 +326,50 @@ int node(int argc, char **argv) register_messages(); globals->finger = (finger_elem *) calloc(1, sizeof(finger_elem)); - INFO2("Launching node %s:%d", globals->host, globals->port); + XBT_INFO("Launching node %s:%d", globals->host, globals->port); if (create) { - INFO0("→Creating ring"); + XBT_INFO("→Creating ring"); globals->finger[0].id = globals->id; snprintf(globals->finger[0].host, 1024, globals->host); globals->finger[0].port = globals->port; } else { - INFO2("→Known node %s:%d", other_host, other_port); - INFO0("→Contacting to determine successor"); + XBT_INFO("→Known node %s:%d", other_host, other_port); + XBT_INFO("→Contacting to determine successor"); TRY { temp_sock = gras_socket_client(other_host, other_port); } - CATCH(e) { - RETHROW0("Unable to contact known host: %s"); + CATCH_ANONYMOUS { + RETHROWF("Unable to contact known host: %s"); } get_suc_msg.id = globals->id; TRY { gras_msg_send(temp_sock, "chord_get_suc", &get_suc_msg); } - CATCH(e) { + CATCH_ANONYMOUS { gras_socket_close(temp_sock); - RETHROW0("Unable to contact known host to get successor!: %s"); + RETHROWF("Unable to contact known host to get successor!: %s"); } TRY { - INFO0("Waiting for reply!"); + XBT_INFO("Waiting for reply!"); gras_msg_wait(10., "chord_rep_suc", &temp_sock2, &rep_suc_msg); } - CATCH(e) { - RETHROW1("%s: Error waiting for successor:%s", globals->host); + CATCH_ANONYMOUS { + RETHROWF("%s: Error waiting for successor:%s", globals->host); } globals->finger[0].id = rep_suc_msg.id; snprintf(globals->finger[0].host, 1024, rep_suc_msg.host); globals->finger[0].port = rep_suc_msg.port; - INFO3("→Got successor : %d-%s:%d", globals->finger[0].id, + XBT_INFO("→Got successor : %d-%s:%d", globals->finger[0].id, globals->finger[0].host, globals->finger[0].port); gras_socket_close(temp_sock); TRY { temp_sock = gras_socket_client(globals->finger[0].host, globals->finger[0].port); } - CATCH(e) { - RETHROW0("Unable to contact successor: %s"); + CATCH_ANONYMOUS { + RETHROWF("Unable to contact successor: %s"); } notify_msg.id = globals->id; @@ -374,8 +378,8 @@ int node(int argc, char **argv) TRY { gras_msg_send(temp_sock, "chord_notify", ¬ify_msg); } - CATCH(e) { - RETHROW0("Unable to notify successor! %s"); + CATCH_ANONYMOUS { + RETHROWF("Unable to notify successor! %s"); } } @@ -390,6 +394,7 @@ int node(int argc, char **argv) gras_msg_handle(6000000.0); } CATCH(e) { + xbt_ex_free(e); } } /*} */ @@ -397,6 +402,6 @@ int node(int argc, char **argv) gras_socket_close(globals->sock); free(globals); gras_exit(); - INFO0("Done"); + XBT_INFO("Done"); return (0); }