/* libdata management */
-static int amok_hm_libdata_id;
+static int amok_hm_libdata_id=-1;
typedef struct {
/* set headers */
unsigned int ID;
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;
}
* 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);
/** \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",
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 */