X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/450dd9c8bcc7e9dc4f3a9ab8735474b587ca568b..11a7f1ad53ad8b84b278206be4c3265dbc6dfe4c:/src/amok/HostManagement/hostmanagement.c diff --git a/src/amok/HostManagement/hostmanagement.c b/src/amok/HostManagement/hostmanagement.c index c8947bc667..f417e8a385 100644 --- a/src/amok/HostManagement/hostmanagement.c +++ b/src/amok/HostManagement/hostmanagement.c @@ -16,7 +16,7 @@ XBT_LOG_NEW_DEFAULT_SUBCATEGORY(amok_hm,amok,"Host management"); /* libdata management */ -static int amok_hm_libdata_id; +static int amok_hm_libdata_id=-1; typedef struct { /* set headers */ unsigned int ID; @@ -77,9 +77,10 @@ static int amok_hm_cb_join(gras_msg_cb_ctx_t ctx, void *payload) { xbt_host_t dude = xbt_host_new(gras_socket_peer_name(exp), gras_socket_peer_port(exp)); + VERB2("Contacted by %s:%d",dude->name,dude->port); xbt_dynar_push(group,&dude); - gras_msg_rpcreturn(30, ctx, NULL); + gras_msg_rpcreturn(10, ctx, NULL); free(name); return 1; } @@ -226,10 +227,13 @@ void amok_hm_kill_sync(gras_socket_t buddy) { * The dynar elements are of type xbt_host_t */ xbt_dynar_t amok_hm_group_new(const char *group_name) { - amok_hm_libdata_t g=gras_libdata_by_id(amok_hm_libdata_id); + amok_hm_libdata_t g; xbt_dynar_t res = xbt_dynar_new(sizeof(xbt_host_t), xbt_host_free_voidp); + xbt_assert0(amok_hm_libdata_id != -1,"Run amok_hm_init first!"); + g=gras_libdata_by_id(amok_hm_libdata_id); + xbt_dict_set(g->groups,group_name,res,NULL); /*FIXME: leaking xbt_dynar_free_voidp);*/ VERB1("Group %s created",group_name); @@ -246,6 +250,8 @@ xbt_dynar_t amok_hm_group_get(gras_socket_t master, const char *group_name) { /** \brief add current host to the given remote group */ void amok_hm_group_join(gras_socket_t master, const char *group_name) { + VERB3("Join group '%s' on %s:%d", + group_name,gras_socket_peer_name(master),gras_socket_peer_port(master)); gras_msg_rpccall(master,30,gras_msgtype_by_name("amok_hm_join"), &group_name,NULL); VERB3("Joined group '%s' on %s:%d", @@ -274,6 +280,7 @@ void amok_hm_group_shutdown(const char *group_name) { amok_hm_kill_hp(host_it->name, host_it->port); } + xbt_dynar_free(&group); xbt_dict_remove(g->groups,group_name); } /** \brief stops all members of the given remote group */