// Peer-To-Peer CAN simulator 050406 by Dytto ESIAL //
//////////////////////////////////////////////////////
-
+#include <stdio.h>
#include "xbt/sysdep.h"
#include "gras.h"
RETHROW0("Unable to connect!: %s");
}
TRY{
- gras_msg_send(temp_sock,gras_msgtype_by_name("can_get_suc"),&msg);
+ gras_msg_send(temp_sock,"can_get_suc",&msg);
}CATCH(e){
RETHROW0("Unable to send!: %s");
}
get_suc_t *incoming=(get_suc_t*)payload_data;
xbt_ex_t e; // the error variable used in TRY.. CATCH tokens.
node_data_t *globals=(node_data_t*)gras_userdata_get();
-
+ gras_socket_t temp_sock=NULL;
INFO3("Received a get_successor message from %s for (%d;%d)",gras_socket_peer_name(expeditor),incoming->xId,incoming->yId);
//INFO4("My area is [%d;%d;%d;%d]",globals->x1,globals->x2,globals->y1,globals->y2);
if(incoming->xId<globals->x1) // test if the message must be forwarded to a neighbour.
}
if(validate==1){ // the area for the new node has been defined, then send theses informations to the new node.
INFO2("Sending environment informations to node %s:%d",incoming->host,incoming->port);
- gras_socket_t temp_sock=NULL;
+
TRY{
temp_sock=gras_socket_client(incoming->host,incoming->port);
}CATCH(e){
RETHROW0("Unable to connect to the node wich has requested for an area!: %s");
}
TRY{
- gras_msg_send(temp_sock,gras_msgtype_by_name("can_rep_suc"),&outgoing);
+ gras_msg_send(temp_sock,"can_rep_suc",&outgoing);
INFO0("Environment informations sent!");
}CATCH(e){
RETHROW2("%s:Timeout sending environment informations to %s: %s",globals->host,gras_socket_peer_name(expeditor));
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;
+ return 0;
}
int node(int argc,char **argv){
node_data_t *globals=NULL;
xbt_ex_t e; // the error variable used in TRY.. CATCH tokens.
+ gras_socket_t temp_sock=NULL;
+
+ rep_suc_t rep_suc_msg;
+
+ get_suc_t get_suc_msg; // building the "get_suc" message.
+ gras_socket_t temp_sock2=NULL;
INFO0("Starting");
globals->y2=1000;
}else{ // asking for an area.
INFO1("Contacting %s so as to request for an area",argv[4]);
- gras_socket_t temp_sock=NULL;
+
TRY{
temp_sock=gras_socket_client(argv[4],atoi(argv[5]));
}CATCH(e){
RETHROW0("Unable to connect known host to request for an area!: %s");
}
- get_suc_t get_suc_msg; // building the "get_suc" message.
+
get_suc_msg.xId=globals->xId;
get_suc_msg.yId=globals->yId;
strcpy(get_suc_msg.host,globals->host);
get_suc_msg.port=globals->port;
TRY{ // asking.
- gras_msg_send(temp_sock,gras_msgtype_by_name("can_get_suc"),&get_suc_msg);
+ gras_msg_send(temp_sock,"can_get_suc",&get_suc_msg);
}CATCH(e){
gras_socket_close(temp_sock);
RETHROW0("Unable to contact known host to get an area!: %s");
}
gras_socket_close(temp_sock);
- rep_suc_t rep_suc_msg;
- gras_socket_t temp_sock2=NULL;
+
+
TRY{ // waiting for a reply.
INFO0("Waiting for reply!");
- gras_msg_wait(6000,gras_msgtype_by_name("can_rep_suc"),&temp_sock2,&rep_suc_msg);
+ gras_msg_wait(6000,"can_rep_suc",&temp_sock2,&rep_suc_msg);
}CATCH(e){
RETHROW1("%s: Error waiting for an area:%s",globals->host);
}