Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Used test with receiver.
authornavarrop <navarrop@48e7efb5-ca39-0410-a469-dd3cf9ba447f>
Wed, 7 Jul 2010 09:36:05 +0000 (09:36 +0000)
committernavarrop <navarrop@48e7efb5-ca39-0410-a469-dd3cf9ba447f>
Wed, 7 Jul 2010 09:36:05 +0000 (09:36 +0000)
git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/simgrid/simgrid/trunk@7991 48e7efb5-ca39-0410-a469-dd3cf9ba447f

examples/msg/irc_isend/deployment_peer01.xml
examples/msg/irc_isend/deployment_peer02.xml
examples/msg/irc_isend/deployment_peer03.xml
examples/msg/irc_isend/deployment_peer04.xml
examples/msg/irc_isend/peer.c
src/msg/gos.c

index cb449e7..8df97ef 100755 (executable)
@@ -14,5 +14,6 @@
   <process host="Ruby" function="receiver">
     <argument value="0"/>
     <argument value="1"/>         <!-- Sleep_start_time -->
+    <argument value="0.1"/>      <!-- Time for test -->
   </process>
 </platform>
index 23cabf6..8d4c92f 100755 (executable)
@@ -14,5 +14,6 @@
   <process host="Ruby" function="receiver">
     <argument value="0"/>
     <argument value="5"/>         <!-- Sleep_start_time -->
+    <argument value="0.1"/>      <!-- Time for test -->
   </process>
 </platform>
index 8ffcbb8..734b990 100755 (executable)
@@ -14,5 +14,6 @@
   <process host="Ruby" function="receiver">
     <argument value="0"/>
     <argument value="1"/>         <!-- Sleep_start_time -->
+    <argument value="0"/>      <!-- Time for test -->
   </process>
 </platform>
index 9df7712..08d2d56 100755 (executable)
@@ -14,6 +14,7 @@
   <process host="Ruby" function="receiver">
     <argument value="0"/>
     <argument value="5"/>         <!-- Sleep_start_time -->
+    <argument value="0"/>      <!-- Time for test -->
   </process>
 </platform>
 
index 838f999..2271765 100755 (executable)
@@ -94,7 +94,8 @@ int receiver(int argc, char *argv[])
   char mailbox[80];
   msg_comm_t res_irecv;
   double sleep_start_time = atof(argv[2]);
-  INFO1("sleep_start_time : %f ",sleep_start_time);
+  double sleep_test_time = atof(argv[3]);
+  INFO2("sleep_start_time : %f , sleep_test_time : %f",sleep_start_time,sleep_test_time);
 
   xbt_assert1(sscanf(argv[1],"%d", &id),
         "Invalid argument %s\n",argv[1]);
@@ -105,9 +106,20 @@ int receiver(int argc, char *argv[])
   while(1) {
        res_irecv = MSG_task_irecv(&(task), mailbox);
        INFO0("Wait to receive a task");
-       res = MSG_comm_wait(res_irecv,-1);
 
-    xbt_assert0(res == MSG_OK, "MSG_task_get failed");
+    if(sleep_test_time == 0)
+    {
+       res = MSG_comm_wait(res_irecv,-1);
+       xbt_assert0(res == MSG_OK, "MSG_task_get failed");
+    }
+    else
+    {
+               while(MSG_comm_test(res_irecv) == 0){
+                       MSG_process_sleep (sleep_test_time);
+               };
+               MSG_comm_destroy(res_irecv);
+    }
+
        INFO1("Received \"%s\"", MSG_task_get_name(task));
        if (!strcmp(MSG_task_get_name(task),"finalize")) {
          MSG_task_destroy(task);
index b98263d..6ad4005 100644 (file)
@@ -470,7 +470,14 @@ int MSG_comm_test(msg_comm_t comm) {
        return SIMIX_network_test(comm);
 }
 
+/* After received TRUE to MSG_comm_test() function we have to destroy the communication */
 void MSG_comm_destroy(msg_comm_t comm) {
+       if(!(comm->src_proc == SIMIX_process_self()))
+       {
+               m_task_t  task;
+               task = (m_task_t) SIMIX_communication_get_src_buf(comm);
+               task->simdata->refcount--;
+       }
        SIMIX_communication_destroy(comm);
 }