X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/b511b8e4a7d720584d9d9a72b874709869bc10d0..08a3df0e063c35b6054d2352eae08ede6f4c6f17:/examples/gras/all2all/all2all.c diff --git a/examples/gras/all2all/all2all.c b/examples/gras/all2all/all2all.c index 5c029dad7d..59c54b1bbc 100644 --- a/examples/gras/all2all/all2all.c +++ b/examples/gras/all2all/all2all.c @@ -53,7 +53,7 @@ int receiver (int argc,char *argv[]) { todo); while (todo>0) { gras_msg_wait(60 /* wait up to one minute */, - gras_msgtype_by_name("data"), + "data", &expeditor, &data); todo--; @@ -77,12 +77,13 @@ int receiver (int argc,char *argv[]) { int sender (int argc,char *argv[]) { - int i; /* iterator */ + unsigned int iter; /* iterator */ char *data; /* data exchanged */ int datasize; /* size of message */ xbt_peer_t h; /* iterator */ + int connected = 0; - gras_socket_t peer; /* socket to node */ + gras_socket_t peer=NULL; /* socket to node */ /* xbt_dynar for peers */ @@ -92,8 +93,8 @@ int sender (int argc,char *argv[]) { gras_init(&argc,argv); /* Get the node location from argc/argv */ - for (i=1; iname,h->port); - gras_msg_send(peer,gras_msgtype_by_name("data"),&data); - INFO2(" Sent Data from %s to %s", - gras_os_myname(),h->name); + /* write to the receivers */ + xbt_dynar_foreach(peers,iter,h) { + connected = 0; + while (!connected) { + xbt_ex_t e; + TRY { + peer = gras_socket_client(h->name,h->port); + connected=1; + } CATCH(e) { + if (e.category != system_error /*in RL*/&& e.category != mismatch_error/*in SG*/) + RETHROW; + xbt_ex_free(e); + gras_os_sleep(0.01); + } + } + gras_msg_send(peer,"data",&data); + if (gras_if_SG()) { + INFO2(" Sent Data from %s to %s", gras_os_myname(),h->name); + } else { + INFO0(" Sent Data"); + } + gras_socket_close(peer); } /* Free the allocated resources, and shut GRAS down */ + free(data); xbt_dynar_free(&peers); gras_exit();