X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/d753340c54c230f9ab7b6e5c5ed5ac47f7421ad5..3871b0b0de5c4a7420635305a67bfef7e91a8836:/examples/gras/p2p/can/can_tests.c diff --git a/examples/gras/p2p/can/can_tests.c b/examples/gras/p2p/can/can_tests.c index efb814b511..52c5ad7c90 100644 --- a/examples/gras/p2p/can/can_tests.c +++ b/examples/gras/p2p/can/can_tests.c @@ -2,6 +2,8 @@ // Peer-To-Peer CAN simulator 050406 by Dytto ESIAL // ////////////////////////////////////////////////////// +#include +//#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(xIdx1){ 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->xIdx1){ 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