Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
More fixes to VPATH testing
[simgrid.git] / examples / gras / p2p / can / can_tests.c
index efb814b..52c5ad7 100644 (file)
@@ -2,6 +2,8 @@
 // Peer-To-Peer CAN simulator 050406 by Dytto ESIAL //
 //////////////////////////////////////////////////////
 
+#include <time.h>
+//#include "gras.h"
 #include "types.h" // header containing the typedef struct of a node
 
 XBT_LOG_NEW_DEFAULT_CATEGORY(can,"Messages specific to this example");
@@ -20,12 +22,15 @@ GRAS_DEFINE_TYPE(s_nuke,
 typedef struct s_nuke nuke_t;
 
 // the function that start the **** War of the Nodes ****
+int start_war(int argc,char **argv);
 int start_war(int argc,char **argv){
+       gras_socket_t temp_sock=NULL;
+       nuke_t nuke_msg;
+  xbt_ex_t e; // the error variable used in TRY.. CATCH tokens.
   //return 0; // in order to inhibit the War of the Nodes 
   gras_init(&argc,argv);
   gras_os_sleep((15-gras_os_getpid())*20+200); // wait a bit.
-  gras_socket_t temp_sock;
-  xbt_ex_t e; // the error variable used in TRY.. CATCH tokens.
+
        
   TRY{ // contacting the bad guy that will launch the War.
     temp_sock=gras_socket_client(gras_os_myname(),atoi(argv[1]));
@@ -33,7 +38,7 @@ int start_war(int argc,char **argv){
     RETHROW0("Unable to connect known host so as to declare WAR!: %s");
   }
   
-  nuke_t nuke_msg;
+
   nuke_msg.xId=-1;
   nuke_msg.yId=-1;
   nuke_msg.version=atoi(argv[2]); 
@@ -41,18 +46,21 @@ int start_war(int argc,char **argv){
   nuke_msg.port=atoi(argv[1]);
 
   TRY{
-    gras_msg_send(temp_sock,gras_msgtype_by_name("can_nuke"),&nuke_msg);
+    gras_msg_send(temp_sock,"can_nuke",&nuke_msg);
   }CATCH(e){
     gras_socket_close(temp_sock);
     RETHROW0("Unable to contact known host so as to declare WAR!!!!!!!!!!!!!!!!!!!!!: %s");
   }
   gras_socket_close(temp_sock); // spare.
   gras_exit(); // spare.
+  return 0;
 }
 
 // the function thaht send the nuke "msg" on (xId;yId), if it's not on me :p.
 static int send_nuke(nuke_t *msg, int xId, int yId){
   node_data_t *globals=(node_data_t*)gras_userdata_get();
+  gras_socket_t temp_sock=NULL;
+   xbt_ex_t e; // the error variable used in TRY.. CATCH tokens.
 
   if(xId>=globals->x1 && xId<=globals->x2 && yId>=globals->y1 && yId<=globals->y2){
     INFO0("Nuclear launch missed");
@@ -60,7 +68,7 @@ static int send_nuke(nuke_t *msg, int xId, int yId){
   }
   else{
     char host[1024];
-    int port;
+    int port=0;
     
     if(xId<globals->x1){
       strcpy(host,globals->west_host);
@@ -78,8 +86,8 @@ static int send_nuke(nuke_t *msg, int xId, int yId){
     msg->xId=xId;
     msg->yId=yId;
 
-    gras_socket_t temp_sock;
-    xbt_ex_t e; // the error variable used in TRY.. CATCH tokens.
+
+
     TRY{ // sending the nuke.
       temp_sock=gras_socket_client(host,port);
     }CATCH(e){
@@ -87,7 +95,7 @@ static int send_nuke(nuke_t *msg, int xId, int yId){
     }
     //INFO4("%s ON %s %d %d <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<",globals->host,host,xId,yId);
     TRY{
-      gras_msg_send(temp_sock,gras_msgtype_by_name("can_nuke"),msg);
+      gras_msg_send(temp_sock,"can_nuke",msg);
     }CATCH(e){
       RETHROW0("Unable to send the nuke!: %s");
     }
@@ -98,16 +106,22 @@ static int send_nuke(nuke_t *msg, int xId, int yId){
 }
 
 
-static int node_nuke_handler(gras_socket_t expeditor,void *payload_data){
+static int node_nuke_handler(gras_msg_cb_ctx_t ctx,void *payload_data){
+  gras_socket_t expeditor=gras_msg_cb_ctx_from(ctx);
   nuke_t *incoming=(nuke_t*)payload_data;
   node_data_t *globals=(node_data_t*)gras_userdata_get();
+  
+       int x;
+       int y;
+       nuke_t nuke_msg; // writing my name one the nuke.
+        gras_socket_t temp_sock=NULL;
+        xbt_ex_t e; // the error variable used in TRY.. CATCH tokens.
+       
 
   if(incoming->xId==-1){ // i must start the War
     INFO2("%s:%d declare the WAR!!!!!!!!!!!!!!!!!",globals->host,globals->port);
     srand((unsigned int)time((time_t *)NULL));
 
-    int x;
-    int y;
     do{
       x=(int)(1000.0*rand()/(RAND_MAX+1.0));
       y=(int)(1000.0*rand()/(RAND_MAX+1.0));
@@ -133,13 +147,12 @@ static int node_nuke_handler(gras_socket_t expeditor,void *payload_data){
       int x4=(int)(1000.0*rand()/(RAND_MAX+1.0));
       int y4=(int)(1000.0*rand()/(RAND_MAX+1.0));*/
       
-      nuke_t nuke_msg; // writing my name one the nuke.
-      nuke_msg.version=incoming->version; 
+
+         nuke_msg.version=incoming->version;
       strcpy(nuke_msg.host,globals->host);
       nuke_msg.port=globals->port;
       
-      int x;
-      int y;
+         
       do{
        x=(int)(1000.0*rand()/(RAND_MAX+1.0));
        y=(int)(1000.0*rand()/(RAND_MAX+1.0));
@@ -149,7 +162,7 @@ static int node_nuke_handler(gras_socket_t expeditor,void *payload_data){
   }
   else{ // the nuke isn't for me, so i forward her.
     char host[1024];
-    int port;
+    int port=0;
     
     if(incoming->xId<globals->x1){
       strcpy(host,globals->west_host);
@@ -164,15 +177,15 @@ static int node_nuke_handler(gras_socket_t expeditor,void *payload_data){
       strcpy(host,globals->north_host);
       port=globals->north_port;}
     
-    gras_socket_t temp_sock;
-    xbt_ex_t e; // the error variable used in TRY.. CATCH tokens.
-    TRY{
+
+
+       TRY{
       temp_sock=gras_socket_client(host,port);
     }CATCH(e){
       RETHROW0("Unable to connect the nuke!: %s");
     }
     TRY{
-      gras_msg_send(temp_sock,gras_msgtype_by_name("can_nuke"),incoming);
+      gras_msg_send(temp_sock,"can_nuke",incoming);
     }CATCH(e){
       RETHROW0("Unable to send the nuke!: %s");
     }
@@ -180,13 +193,14 @@ static int node_nuke_handler(gras_socket_t expeditor,void *payload_data){
     gras_socket_close(temp_sock);
   }
   gras_socket_close(expeditor); // spare.
-  xbt_ex_t e; // the error variable used in TRY.. CATCH tokens.
+
   TRY{
     gras_msg_handle(10000.0); // wait a bit, in case of..
   }CATCH(e){
     INFO4("My area is [%d;%d;%d;%d]",globals->x1,globals->x2,globals->y1,globals->y2);
     //INFO0("Closing node, all has been done!");
     }
+   return 0;
 }
 
 // END