- /* Wait for receivers to startup */
- gras_os_sleep(.01);
-
- /* write 'em */
- xbt_dynar_foreach(peers,i,h) {
-
- peer = gras_socket_client(h->name,h->port);
- 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);
+ /* 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);