Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Fix warnings about clobbered variables in amok/bandwidth example.
[simgrid.git] / examples / amok / bandwidth / bandwidth.c
index 3e085df..354eeb7 100644 (file)
@@ -1,6 +1,7 @@
 /* bandwidth - bandwidth test demo of GRAS features                         */
 
-/* Copyright (c) 2003, 2004 Martin Quinson. All rights reserved.            */
+/* Copyright (c) 2005, 2006, 2007, 2008, 2009, 2010. The SimGrid Team.
+ * All rights reserved.                                                     */
 
 /* This program is free software; you can redistribute it and/or modify it
  * under the terms of the license (GNU LGPL) which comes with this package. */
 #include "amok/bandwidth.h"
 #include "amok/peermanagement.h"
 
-XBT_LOG_NEW_DEFAULT_CATEGORY(Bandwidth, "Messages specific to this example");
+XBT_LOG_NEW_DEFAULT_CATEGORY(Bandwidth,
+                             "Messages specific to this example");
 
 /* **********************************************************************
  * Sensor code
  * **********************************************************************/
 
+static gras_socket_t try_gras_socket_client_from_string(const char *host)
+{
+  volatile gras_socket_t sock = NULL;
+  xbt_ex_t e;
+  TRY {
+    sock = gras_socket_client_from_string(host);
+  }
+  CATCH(e) {
+    xbt_ex_free(e);
+  }
+  return sock;
+}
+
 /* Function prototypes */
 int sensor(int argc, char *argv[]);
 
@@ -24,26 +39,17 @@ int sensor(int argc, char *argv[])
   gras_socket_t mysock;
   gras_socket_t master = NULL;
   int connection_try = 10;
-  xbt_ex_t e;
 
   gras_init(&argc, argv);
   amok_bw_init();
   amok_pm_init();
 
   mysock = gras_socket_server_range(3000, 9999, 0, 0);
-  INFO1("Sensor starting (on port %d)", gras_os_myport());
-  while (connection_try > 0 && master == NULL) {
-    int connected = 0;
-    TRY {
-      master = gras_socket_client_from_string(argv[1]);
-      connected = 1;
-    } CATCH(e) {
-      xbt_ex_free(e);
-    }
-    if (!connected) {
-      connection_try--;
-      gras_os_sleep(0.5);       /* let the master get ready */
-    }
+  XBT_INFO("Sensor starting (on port %d)", gras_os_myport());
+  while (connection_try > 0 &&
+         !(master = try_gras_socket_client_from_string(argv[1]))) {
+    connection_try--;
+    gras_os_sleep(0.5);       /* let the master get ready */
   }
 
   amok_pm_group_join(master, "bandwidth");
@@ -79,22 +85,20 @@ int maestro(int argc, char *argv[])
   amok_bw_init();
   amok_pm_init();
 
-  INFO0("Maestro starting");
+  XBT_INFO("Maestro starting");
   if (argc != 2) {
-    ERROR0("Usage: maestro port\n");
+    XBT_ERROR("Usage: maestro port\n");
     return 1;
   }
   mysock = gras_socket_server(atoi(argv[1]));
   group = amok_pm_group_new("bandwidth");
-  INFO0("Wait for peers for 5 sec");
+  XBT_INFO("Wait for peers for 5 sec");
   gras_msg_handleall(5);        /* friends, we're ready. Come and play */
 
   if (xbt_dynar_length(group) < 2) {
-    char *msg;
-    asprintf(&msg, "Not enough peers arrived. Expected 2 got %ld",
-             xbt_dynar_length(group));
     amok_pm_group_shutdown("bandwidth");
-    xbt_die(msg);
+    xbt_die("Not enough peers arrived. Expected 2 got %ld",
+            xbt_dynar_length(group));
   }
   h1 = *(xbt_peer_t *) xbt_dynar_get_ptr(group, 0);
   h2 = *(xbt_peer_t *) xbt_dynar_get_ptr(group, 1);
@@ -105,23 +109,25 @@ int maestro(int argc, char *argv[])
     h2 = h_temp;
   }
 
-  INFO2("Contact %s:%d", h1->name, h1->port);
+  XBT_INFO("Contact %s:%d", h1->name, h1->port);
   peer = gras_socket_client(h1->name, h1->port);
 
-  INFO0("Test the BW between me and one of the sensors");
-  amok_bw_test(peer, buf_size, msg_size, msg_amount, min_duration, &sec, &bw);
-  INFO7
-    ("Experience between me and %s:%d (initially %d msgs of %d bytes, maybe modified to fill the pipe at least %.1fs) took %f sec, achieving %f kb/s",
-     h1->name, h1->port, msg_amount, msg_size, min_duration, sec,
-     ((double) bw) / 1024.0);
-
-  INFO4("Test the BW between %s:%d and %s:%d", h1->name, h1->port, h2->name,
-        h2->port);
-  amok_bw_request(h1->name, h1->port, h2->name, h2->port, buf_size, msg_size,
-                  msg_amount, min_duration, &sec, &bw);
-  INFO6
-    ("Experience between %s:%d and %s:%d took took %f sec, achieving %f kb/s",
-     h1->name, h1->port, h2->name, h2->port, sec, ((double) bw) / 1024.0);
+  XBT_INFO("Test the BW between me and one of the sensors");
+  amok_bw_test(peer, buf_size, msg_size, msg_amount, min_duration, &sec,
+               &bw);
+  XBT_INFO
+      ("Experience between me and %s:%d (initially %d msgs of %d bytes, maybe modified to fill the pipe at least %.1fs) took %f sec, achieving %f kb/s",
+       h1->name, h1->port, msg_amount, msg_size, min_duration, sec,
+       ((double) bw) / 1024.0);
+
+  XBT_INFO("Test the BW between %s:%d and %s:%d", h1->name, h1->port,
+        h2->name, h2->port);
+  amok_bw_request(h1->name, h1->port, h2->name, h2->port, buf_size,
+                  msg_size, msg_amount, min_duration, &sec, &bw);
+  XBT_INFO
+      ("Experience between %s:%d and %s:%d took took %f sec, achieving %f kb/s",
+       h1->name, h1->port, h2->name, h2->port, sec,
+       ((double) bw) / 1024.0);
 
   /* Game is over, friends */
   amok_pm_group_shutdown("bandwidth");