Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
remove soner bugs in async examples
[simgrid.git] / examples / msg / async-wait / async-wait.c
index da753e8..a25df32 100644 (file)
@@ -25,38 +25,38 @@ static int sender(int argc, char *argv[])
   MSG_process_sleep(sleep_start_time);
   for (i = 0; i < number_of_tasks; i++) {
     char mailbox[256];
-    char sprintf_buffer[256];
+    char snprintf_buffer[256];
 
-    sprintf(mailbox, "receiver-%ld", i % receivers_count);
-    sprintf(sprintf_buffer, "Task_%d", i);
+    snprintf(mailbox,255, "receiver-%ld", i % receivers_count);
+    snprintf(snprintf_buffer,255, "Task_%d", i);
 
     /* This process first creates a task and send it asynchronously with @ref MSG_task_isend. Then, if: */
-    task = MSG_task_create(sprintf_buffer, task_comp_size, task_comm_size, NULL);
+    task = MSG_task_create(snprintf_buffer, task_comp_size, task_comm_size, NULL);
     comm = MSG_task_isend(task, mailbox);
     XBT_INFO("Send to receiver-%ld Task_%d", i % receivers_count, i);
 
-    if (sleep_test_time == 0) { /* - "test_time" is set to 0, wait on @ref MSG_comm_wait */
-      MSG_comm_wait(comm, -1);
-    } else {
+    if (sleep_test_time > 0) { /* - "test_time" is set to 0, wait on @ref MSG_comm_wait */
       while (MSG_comm_test(comm) == 0) { /* - Call @ref MSG_comm_test every "test_time" otherwise */
         MSG_process_sleep(sleep_test_time);
       };
+    } else {
+      MSG_comm_wait(comm, -1);
     }
     MSG_comm_destroy(comm);
   }
 
   for (i = 0; i < receivers_count; i++) {
     char mailbox[80];
-    sprintf(mailbox, "receiver-%ld", i % receivers_count);
+    snprintf(mailbox,79, "receiver-%ld", i % receivers_count);
     task = MSG_task_create("finalize", 0, 0, 0);
     comm = MSG_task_isend(task, mailbox);
     XBT_INFO("Send to receiver-%ld finalize", i % receivers_count);
-    if (sleep_test_time == 0) {
-      MSG_comm_wait(comm, -1);
-    } else {
+    if (sleep_test_time > 0) {
       while (MSG_comm_test(comm) == 0) {
         MSG_process_sleep(sleep_test_time);
-      };
+      }
+    } else {
+      MSG_comm_wait(comm, -1);
     }
     MSG_comm_destroy(comm);
   }
@@ -79,23 +79,23 @@ static int receiver(int argc, char *argv[])
 
   MSG_process_sleep(sleep_start_time); /* This process first sleeps for "start time" seconds.  */
 
-  sprintf(mailbox, "receiver-%d", id);
+  snprintf(mailbox,79, "receiver-%d", id);
   while (1) {
     res_irecv = MSG_task_irecv(&(task), mailbox); /* Then it posts asynchronous receives (@ref MSG_task_irecv) and*/
     XBT_INFO("Wait to receive a task");
 
-    if (sleep_test_time == 0) {               /* - if "test_time" is set to 0, wait on @ref MSG_comm_wait */
-      res = MSG_comm_wait(res_irecv, -1);
-      xbt_assert(res == MSG_OK, "MSG_task_get failed");
-    } else {
+    if (sleep_test_time > 0) {               /* - if "test_time" is set to 0, wait on @ref MSG_comm_wait */
       while (MSG_comm_test(res_irecv) == 0) { /* - Call @ref MSG_comm_test every "test_time" otherwise */
         MSG_process_sleep(sleep_test_time);
-      };
+      }
+    } else {
+      res = MSG_comm_wait(res_irecv, -1);
+      xbt_assert(res == MSG_OK, "MSG_task_get failed");
     }
     MSG_comm_destroy(res_irecv);
 
     XBT_INFO("Received \"%s\"", MSG_task_get_name(task));
-    if (!strcmp(MSG_task_get_name(task), "finalize")) { /* If the received task is "finalize", the process ends */
+    if (strcmp(MSG_task_get_name(task), "finalize") == 0) { /* If the received task is "finalize", the process ends */
       MSG_task_destroy(task);
       break;
     }