X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/68cca5ae79796aad241905ebc99ec86764135c01..187ba0c05f9fbe51175179b9f637b6554f947468:/examples/gras/p2p/can/can_tests.c?ds=sidebyside diff --git a/examples/gras/p2p/can/can_tests.c b/examples/gras/p2p/can/can_tests.c deleted file mode 100644 index cdb90b16e0..0000000000 --- a/examples/gras/p2p/can/can_tests.c +++ /dev/null @@ -1,198 +0,0 @@ -////////////////////////////////////////////////////// -// 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"); - -// struct of a "nuke" message, when a node send a nuke to (xId;yId). -GRAS_DEFINE_TYPE(s_nuke, - struct s_nuke{ - int xId; - int yId; - char host[1024]; // original expeditor.. - int port; // ..and his port. - - int version; // fun. - }; -); -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){ - //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=NULL; - 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])); - }CATCH(e){ - 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]); - strcpy(nuke_msg.host,gras_os_myname()); - nuke_msg.port=atoi(argv[1]); - - TRY{ - gras_msg_send(temp_sock,gras_msgtype_by_name("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(); - - if(xId>=globals->x1 && xId<=globals->x2 && yId>=globals->y1 && yId<=globals->y2){ - INFO0("Nuclear launch missed"); - return 0; - } - else{ - char host[1024]; - int port=0; - - if(xIdx1){ - strcpy(host,globals->west_host); - port=globals->west_port;} - else if(xId>globals->x2){ - strcpy(host,globals->east_host); - port=globals->east_port;} - else if(yIdy1){ - strcpy(host,globals->south_host); - port=globals->south_port;} - else if(yId>globals->y2){ - strcpy(host,globals->north_host); - port=globals->north_port;} - - msg->xId=xId; - msg->yId=yId; - - gras_socket_t temp_sock=NULL; - 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){ - RETHROW0("Unable to connect the nuke!: %s"); - } - //INFO4("%s ON %s %d %d <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<",globals->host,host,xId,yId); - TRY{ - gras_msg_send(temp_sock,gras_msgtype_by_name("can_nuke"),msg); - }CATCH(e){ - RETHROW0("Unable to send the nuke!: %s"); - } - gras_socket_close(temp_sock); - INFO4("Nuke launched by %s to %s for (%d;%d)",globals->host,host,msg->xId,msg->yId); - return 1; - } -} - - -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(); - - 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)); - } - while(send_nuke(incoming,x,y)==0); - - } - else if(incoming->xId>=globals->x1 && incoming->xId<=globals->x2 && incoming->yId>=globals->y1 && incoming->yId<=globals->y2){ // the nuke crash on my area.. - if(globals->version==incoming->version) // ..but i'm dead. - INFO0("I'm already dead :p"); - else if((incoming->xId-globals->xId)/60==0 && (incoming->yId-globals->yId)/60==0){ // ..and it's on me, so i die :X. - globals->version=incoming->version; - INFO2("Euuuaarrrgghhhh... %s killed %s !!!!!!!!!!!!!!!!!",incoming->host,globals->host); - } - else{ // and it miss me, i angry and i send my own nuke! - INFO1("%s was missed, and counteract!",globals->host); - /*int x1=(int)(1000.0*rand()/(RAND_MAX+1.0)); - int y1=(int)(1000.0*rand()/(RAND_MAX+1.0)); - int x2=(int)(1000.0*rand()/(RAND_MAX+1.0)); - int y2=(int)(1000.0*rand()/(RAND_MAX+1.0)); - int x3=(int)(1000.0*rand()/(RAND_MAX+1.0)); - int y3=(int)(1000.0*rand()/(RAND_MAX+1.0)); - 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; - 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)); - } - while(send_nuke(&nuke_msg,x,y)==0); // and sending if it's not on me. - } - } - else{ // the nuke isn't for me, so i forward her. - char host[1024]; - int port=0; - - if(incoming->xIdx1){ - strcpy(host,globals->west_host); - port=globals->west_port;} - else if(incoming->xId>globals->x2){ - strcpy(host,globals->east_host); - port=globals->east_port;} - else if(incoming->yIdy1){ - strcpy(host,globals->south_host); - port=globals->south_port;} - else if(incoming->yId>globals->y2){ - strcpy(host,globals->north_host); - port=globals->north_port;} - - gras_socket_t temp_sock=NULL; - xbt_ex_t e; // the error variable used in TRY.. CATCH tokens. - 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); - }CATCH(e){ - RETHROW0("Unable to send the nuke!: %s"); - } - INFO4("Nuke re-aimed by %s to %s for (%d;%d)",globals->host,host,incoming->xId,incoming->yId); - 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 1; -} - -// END