Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
The server timeouts after a while instead of running for ever (useful for solaris...
[simgrid.git] / examples / ping / ping.c
index d38579b..5724135 100644 (file)
@@ -87,11 +87,14 @@ int server_cb_ping_handler(gras_socket_t        *expeditor,
 
 int server (int argc,char *argv[]) {
   gras_error_t errcode;
-  server_data_t *g=gras_userdata_new(server_data_t);  
+  server_data_t *g;
   gras_msgtype_t *ping_msg=NULL;
 
   int port = 4000;
   
+  gras_init(&argc,argv);
+  g=gras_userdata_new(server_data_t);
+   
   if (argc == 2) {
     port=atoi(argv[1]);
   }
@@ -113,18 +116,17 @@ int server (int argc,char *argv[]) {
        gras_socket_my_port(g->sock));
   g->endcondition=0;
 
-  while (1) {
-    errcode = gras_msg_handle(10.0);
-    if (errcode != no_error && errcode != timeout_error) 
-      return errcode;
-    if (g->endcondition)
-      break;
-  }
+  errcode = gras_msg_handle(600.0);
+  if (errcode != no_error)
+    return errcode;
+  if (g->endcondition)
   
   if (!gras_if_RL())
     gras_sleep(5,0);
-  INFO0("SERVER: Done.");
   gras_socket_close(g->sock);
+  free(g);
+  gras_exit();
+  INFO0("SERVER: Done.");
   return no_error;
 }
 
@@ -142,23 +144,24 @@ int client (int argc,char *argv[]);
 
 int client(int argc,char *argv[]) {
   gras_error_t errcode;
-  client_data_t *g=gras_userdata_new(client_data_t);
+  client_data_t *g;
 
   gras_socket_t  *from;
   int ping, pong;
-  gras_msgtype_t *msg_ping_type, *msg_pong_type;
+  gras_msgtype_t *msg_ping_type=NULL, *msg_pong_type=NULL;
 
   const char *host = "127.0.0.1";
         int   port = 4000;
 
-  msg_ping_type = msg_pong_type = NULL;
+  gras_init(&argc, argv);
+  g=gras_userdata_new(client_data_t);
    
   if (argc == 3) {
     host=argv[1];
     port=atoi(argv[2]);
   } 
 
-  fprintf(stderr,"Launch client (server on %s:%d)",host,port);
+  INFO2("Launch client (server on %s:%d)",host,port);
   if (!gras_if_RL())
     gras_sleep(5,0); /* Wait for the server to be setup */
   if ((errcode=gras_socket_client(host,port,&(g->sock)))) {
@@ -201,6 +204,8 @@ int client(int argc,char *argv[]) {
        gras_socket_peer_name(from),gras_socket_peer_port(from));
 
   gras_socket_close(g->sock);
+  free(g);
+  gras_exit();
   INFO0("Client: Done.");
   return 0;
 }