Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Move datadesc and TCP sockets from GRAS to XBT.
authorChristophe Thiéry <christopho128@gmail.com>
Tue, 31 Jan 2012 16:01:30 +0000 (17:01 +0100)
committerChristophe Thiéry <christopho128@gmail.com>
Tue, 31 Jan 2012 16:39:01 +0000 (17:39 +0100)
XBT supports sockets with explicit choice of the transport plugin.
XBT provides only one transport plugin: TCP (i.e. real sockets) and
allows other layers to write their custom plugins.
GRAS implements such custom plugins: simulated sockets and file sockets.

TCP sockets only existed in GRAS RL mode. They can now also be used in
GRAS SG mode.
More pieces of GRAS remain to be moved to XBT before TCP sockets can
also be used outside GRAS (e.g. in SIMIX 3, one day, to distribute the
simulation).

85 files changed:
buildtools/Cmake/CompleteInFiles.cmake
buildtools/Cmake/DefinePackages.cmake
buildtools/Cmake/MaintainerMode.cmake
buildtools/Cmake/Supernovae.cmake
examples/amok/bandwidth/bandwidth.c
examples/amok/saturate/env.c
examples/amok/saturate/saturate.c
examples/gras/all2all/all2all.c
examples/gras/console/ping_client.c
examples/gras/console/ping_common.c
examples/gras/console/ping_server.c
examples/gras/mmrpc/mmrpc.c
examples/gras/mmrpc/mmrpc_client.c
examples/gras/mmrpc/mmrpc_common.c
examples/gras/mmrpc/mmrpc_server.c
examples/gras/mutual_exclusion/simple_token/simple_token.c
examples/gras/p2p/can/can.c
examples/gras/p2p/can/can_tests.c
examples/gras/p2p/chord/chord.c
examples/gras/ping/ping_client.c
examples/gras/ping/ping_common.c
examples/gras/ping/ping_server.c
examples/gras/pmm/pmm.c
examples/gras/replay/replay.c
examples/gras/replay/xbt_workload.c
examples/gras/rpc/rpc.c
include/amok/bandwidth.h
include/amok/peermanagement.h
include/gras.h
include/gras/emul.h
include/gras/messages.h
include/gras/transport.h
include/xbt.h
include/xbt/datadesc.h [moved from include/gras/datadesc.h with 51% similarity]
include/xbt/socket.h [new file with mode: 0644]
src/amok/Bandwidth/bandwidth.c
src/amok/Bandwidth/saturate.c
src/amok/PeerManagement/peermanagement.c
src/gras/DataDesc/datadesc.c [deleted file]
src/gras/DataDesc/datadesc_interface.h [deleted file]
src/gras/DataDesc/datadesc_private.h [deleted file]
src/gras/DataDesc/ddt_parse.yy.h [deleted file]
src/gras/DataDesc/ddt_parse.yy.l [deleted file]
src/gras/Msg/gras_msg_exchange.c
src/gras/Msg/gras_msg_listener.c
src/gras/Msg/gras_msg_types.c
src/gras/Msg/msg_interface.h
src/gras/Msg/msg_private.h
src/gras/Msg/rl_msg.c
src/gras/Msg/rpc.c
src/gras/Msg/sg_msg.c
src/gras/Transport/README
src/gras/Transport/rl_transport.c
src/gras/Transport/sg_transport.c
src/gras/Transport/transport.c
src/gras/Transport/transport_interface.h
src/gras/Transport/transport_plugin_file.c
src/gras/Transport/transport_plugin_sg.c
src/gras/Transport/transport_private.h
src/gras/Virtu/process.c
src/gras/Virtu/sg_process.c
src/gras/Virtu/virtu_sg.h
src/gras/gras.c
src/gras_modinter.h
src/xbt/datadesc/cbps.c [moved from src/gras/DataDesc/cbps.c with 72% similarity]
src/xbt/datadesc/datadesc.c [new file with mode: 0644]
src/xbt/datadesc/datadesc_interface.h [new file with mode: 0644]
src/xbt/datadesc/datadesc_private.h [new file with mode: 0644]
src/xbt/datadesc/ddt_convert.c [moved from src/gras/DataDesc/ddt_convert.c with 69% similarity]
src/xbt/datadesc/ddt_create.c [moved from src/gras/DataDesc/ddt_create.c with 67% similarity]
src/xbt/datadesc/ddt_exchange.c [moved from src/gras/DataDesc/ddt_exchange.c with 73% similarity]
src/xbt/datadesc/ddt_parse.c [moved from src/gras/DataDesc/ddt_parse.c with 64% similarity]
src/xbt/datadesc/ddt_parse.yy.c [moved from src/gras/DataDesc/ddt_parse.yy.c with 73% similarity]
src/xbt/datadesc/ddt_parse.yy.h [new file with mode: 0644]
src/xbt/datadesc/ddt_parse.yy.l [new file with mode: 0644]
src/xbt/xbt_main.c
src/xbt/xbt_socket.c [new file with mode: 0644]
src/xbt/xbt_socket_private.h [new file with mode: 0644]
src/xbt/xbt_trp_plugin_tcp.c [moved from src/gras/Transport/transport_plugin_tcp.c with 72% similarity]
src/xbt_modinter.h
teshsuite/gras/README
teshsuite/gras/datadesc/datadesc_structs.c
teshsuite/gras/datadesc/datadesc_usage.c
teshsuite/gras/datadesc/mk_datadesc_structs.pl
teshsuite/gras/msg_handle/msg_handle.c

index a4a7159..50a0252 100644 (file)
@@ -437,8 +437,8 @@ else(BIGENDIAN)
   set(GRAS_BIGENDIAN 0)
 endif(BIGENDIAN)
 
-# The syntax of this magic string is given in src/gras/DataDesc/ddt_convert.c
-# It kinda matches the values that the gras_arch_desc_t structure can take
+# The syntax of this magic string is given in src/xbt/datadesc/ddt_convert.c
+# It kinda matches the values that the xbt_arch_desc_t structure can take
 
 # Basically, the syntax is one char l or B for endianness (little or Big)
 #   then there is a bunch of blocks separated by _.  
@@ -457,7 +457,7 @@ endif(BIGENDIAN)
 #    formalism to another. Only the GRAS_ARCH is transfered in the
 #    stream, and it it of cruxial importance to keep these detection
 #    information here synchronized with the data hardcoded in the
-#    source in src/gras/DataDesc/ddt_convert.c 
+#    source in src/xbt/datadesc/ddt_convert.c 
 
 # If you add something here (like a previously unknown architecture),
 #    please add it to the source code too. 
index 8d67de9..eaf168d 100644 (file)
@@ -35,6 +35,8 @@ set(EXTRA_DIST
        src/xbt/mmalloc/mvalloc.c
        src/xbt/mmalloc/sbrk-sup.c
        src/xbt/mmalloc/test/mmalloc_test.c
+       src/xbt/datadesc/ddt_parse.yy.l
+       src/xbt/datadesc/ddt_parse.yy.h
        src/surf/maxmin_private.h
        src/surf/trace_mgr_private.h
        src/surf/surf_private.h
@@ -69,8 +71,6 @@ set(EXTRA_DIST
        src/simdag/dax.dtd
        src/simdag/dax_dtd.h
        src/simdag/dax_dtd.c
-       src/gras/DataDesc/ddt_parse.yy.l
-       src/gras/DataDesc/ddt_parse.yy.h
        src/gras/Virtu/virtu_rl.h
        src/gras/Virtu/virtu_sg.h
        src/gras/Virtu/virtu_interface.h
@@ -135,8 +135,6 @@ set(GRAS_RL_SRC
        src/gras/rl_stubs.c
        src/xbt/xbt_os_thread.c
        src/gras/Transport/rl_transport.c
-       src/gras/Transport/transport_plugin_file.c
-       src/gras/Transport/transport_plugin_tcp.c
        src/gras/Virtu/rl_emul.c
        src/gras/Virtu/rl_process.c
        src/gras/Virtu/rl_dns.c
@@ -182,6 +180,18 @@ set(XBT_SRC
        src/xbt/xbt_replay_trace_reader.c
        src/xbt/lib.c
        src/xbt/automaton.c
+       src/xbt/datadesc/ddt_create.c
+       src/xbt/datadesc/ddt_convert.c
+       src/xbt/datadesc/ddt_exchange.c
+       src/xbt/datadesc/cbps.c
+       src/xbt/datadesc/datadesc.c
+       src/xbt/datadesc/datadesc_interface.h
+       src/xbt/datadesc/datadesc_private.h
+       src/xbt/datadesc/ddt_parse.c
+       src/xbt/datadesc/ddt_parse.yy.c
+       src/xbt/xbt_socket.c
+       src/xbt/xbt_socket_private.h
+       src/xbt/xbt_trp_plugin_tcp.c
 )
 
 if(HAVE_MMAP)
@@ -288,6 +298,7 @@ set(GRAS_COMMON_SRC
        src/gras/gras.c
        src/gras/Transport/transport.c
        src/gras/Transport/transport_private.h
+       src/gras/Transport/transport_plugin_file.c
        src/gras/Msg/gras_msg_mod.c
        src/gras/Msg/gras_msg_types.c
        src/gras/Msg/gras_msg_exchange.c
@@ -298,15 +309,6 @@ set(GRAS_COMMON_SRC
        src/gras/Msg/msg_private.h
        src/gras/Virtu/process.c
        src/gras/Virtu/gras_module.c
-       src/gras/DataDesc/ddt_create.c
-       src/gras/DataDesc/ddt_convert.c
-       src/gras/DataDesc/ddt_exchange.c
-       src/gras/DataDesc/cbps.c
-       src/gras/DataDesc/datadesc.c
-       src/gras/DataDesc/datadesc_interface.h
-       src/gras/DataDesc/datadesc_private.h
-       src/gras/DataDesc/ddt_parse.c
-       src/gras/DataDesc/ddt_parse.yy.c
 )
 
 set(GRAS_SG_SRC
@@ -421,6 +423,7 @@ set(headers_to_install
        include/xbt/parmap.h
        include/xbt/automaton.h
        include/xbt/automatonparse_promela.h
+       include/xbt/datadesc.h
        include/simgrid/platf.h
        include/mc/modelchecker.h
        include/msg/msg.h
@@ -434,7 +437,6 @@ set(headers_to_install
        include/surf/surfxml_parse.h
        include/surf/simgrid_dtd.h
        include/surf/surf_routing.h
-       include/gras/datadesc.h
        include/gras/transport.h
        include/gras/virtu.h
        include/gras/emul.h
index 4c74e07..60fea12 100644 (file)
@@ -92,7 +92,7 @@ ADD_CUSTOM_COMMAND(
        COMMAND ${SED_EXE} -i ${string6} src/simdag/dax_dtd.h   
        COMMAND ${SED_EXE} -i ${string7} src/simdag/dax_dtd.h
        COMMAND ${SED_EXE} -i ${string14} src/simdag/dax_dtd.h
-       COMMAND ${FLEX_EXE} -o src/gras/DataDesc/ddt_parse.yy.c -Pgras_ddt_parse_ --noline src/gras/DataDesc/ddt_parse.yy.l
+       COMMAND ${FLEX_EXE} -o src/xbt/datadesc/ddt_parse.yy.c -Pxbt_ddt_parse_ --noline src/xbt/datadesc/ddt_parse.yy.l
        COMMAND ${CMAKE_COMMAND} -E echo "src/simdag/dax_dtd.h"
        
        #surf/simgrid_dtd.c: surf/simgrid_dtd.l
index 7da1bff..83af015 100644 (file)
@@ -4,7 +4,7 @@
 ### Add here every files that should not be supernovaed (generated files) ###
 #############################################################################
 set(simgrid_fragile_sources 
-       src/gras/DataDesc/ddt_parse.yy.c
+       src/xbt/datadesc/ddt_parse.yy.c
        src/surf/surfxml_parse.c
        src/xbt/graphxml_parse.c
        src/simdag/sd_daxloader.c
@@ -12,7 +12,7 @@ set(simgrid_fragile_sources
        ${GTNETS_USED}
 )
 set(gras_fragile_sources
-       src/gras/DataDesc/ddt_parse.yy.c
+       src/xbt/datadesc/ddt_parse.yy.c
        src/xbt/graphxml_parse.c
     src/xbt/mmalloc/mm.c
 )
index 354eeb7..8df320a 100644 (file)
@@ -18,9 +18,9 @@ XBT_LOG_NEW_DEFAULT_CATEGORY(Bandwidth,
  * Sensor code
  * **********************************************************************/
 
-static gras_socket_t try_gras_socket_client_from_string(const char *host)
+static xbt_socket_t try_gras_socket_client_from_string(const char *host)
 {
-  volatile gras_socket_t sock = NULL;
+  volatile xbt_socket_t sock = NULL;
   xbt_ex_t e;
   TRY {
     sock = gras_socket_client_from_string(host);
@@ -36,8 +36,8 @@ int sensor(int argc, char *argv[]);
 
 int sensor(int argc, char *argv[])
 {
-  gras_socket_t mysock;
-  gras_socket_t master = NULL;
+  xbt_socket_t mysock;
+  xbt_socket_t master = NULL;
   int connection_try = 10;
 
   gras_init(&argc, argv);
@@ -76,8 +76,8 @@ int maestro(int argc, char *argv[])
   int msg_amount = 1;
   double min_duration = 1;
 
-  gras_socket_t peer;
-  gras_socket_t mysock;
+  xbt_socket_t peer;
+  xbt_socket_t mysock;
   xbt_peer_t h1, h2, h_temp;
   xbt_dynar_t group;
 
index e2d00f5..fc87222 100644 (file)
@@ -32,7 +32,7 @@ static void env_hosttohost_bw(int argc, char *argv[])
   int i;
   xbt_host_t h1;
 
-  gras_socket_t peer;           /* socket to sensor */
+  xbt_socket_t peer;           /* socket to sensor */
 
   /* wait to ensure that all server sockets are there before starting the experiment */
   gras_os_sleep(0.5);
@@ -82,7 +82,7 @@ static void env_Pairwisehost_bw(int argc, char *argv[])
   xbt_host_t h1, h2;
 
   /* socket to sensor */
-  gras_socket_t peer;
+  xbt_socket_t peer;
 
   /* wait to ensure that all server sockets are there before starting the experiment */
   gras_os_sleep(0.5);
index b89dccc..fde8bfc 100644 (file)
@@ -28,8 +28,8 @@ int sensor(int argc, char *argv[]);
 
 int sensor(int argc, char *argv[])
 {
-  gras_socket_t mysock;
-  gras_socket_t master;
+  xbt_socket_t mysock;
+  xbt_socket_t master;
 
   gras_init(&argc, argv);
   amok_bw_init();
@@ -100,7 +100,7 @@ static double XP(const char *bw1, const char *bw2,
 
 static void kill_buddy(char *name, int port)
 {
-  gras_socket_t sock = gras_socket_client(name, port);
+  xbt_socket_t sock = gras_socket_client(name, port);
   gras_msg_send(sock, "kill", NULL);
   gras_socket_close(sock);
 }
index 8e3b0f4..7872303 100644 (file)
@@ -31,8 +31,8 @@ int receiver(int argc, char *argv[])
   int todo;                     /* amount of messages I should get */
   char *data;                   /* message content */
 
-  gras_socket_t mysock;         /* socket on which other people contact me */
-  gras_socket_t expeditor;      /* to notice who wrote me */
+  xbt_socket_t mysock;         /* socket on which other people contact me */
+  xbt_socket_t expeditor;      /* to notice who wrote me */
 
   /* Init the GRAS infrastructure and declare my globals */
   gras_init(&argc, argv);
@@ -42,14 +42,14 @@ int receiver(int argc, char *argv[])
   todo = atoi(argv[2]);
 
   /* Register the known messages */
-  gras_msgtype_declare("data", gras_datadesc_by_name("string"));
+  gras_msgtype_declare("data", xbt_datadesc_by_name("string"));
 
   /* Create my master socket */
   mysock = gras_socket_server(myport);
 
   /* Get the data */
   XBT_INFO("Listening on port %d (expecting %d messages)",
-        gras_socket_my_port(mysock), todo);
+        xbt_socket_my_port(mysock), todo);
   while (todo > 0) {
     gras_msg_wait(60 /* wait up to one minute */ ,
                   "data", &expeditor, &data);
@@ -57,8 +57,8 @@ int receiver(int argc, char *argv[])
     free(data);
 
     XBT_INFO("Got Data from %s:%d (still %d to go)",
-          gras_socket_peer_name(expeditor),
-          gras_socket_peer_port(expeditor), todo);
+          xbt_socket_peer_name(expeditor),
+          xbt_socket_peer_port(expeditor), todo);
 
   }
 
@@ -82,7 +82,7 @@ int sender(int argc, char *argv[])
   xbt_peer_t h;                 /* iterator */
   int connected = 0;
 
-  volatile gras_socket_t peer = NULL;    /* socket to node */
+  volatile xbt_socket_t peer = NULL;    /* socket to node */
 
 
   /* xbt_dynar for peers */
@@ -107,7 +107,7 @@ int sender(int argc, char *argv[])
   XBT_INFO("Launch current node");
 
   /* Register the known messages */
-  gras_msgtype_declare("data", gras_datadesc_by_name("string"));
+  gras_msgtype_declare("data", xbt_datadesc_by_name("string"));
 
 
   /* write to the receivers */
index ca0507e..d0af525 100644 (file)
@@ -9,9 +9,9 @@
 #include "ping.h"
 XBT_LOG_EXTERNAL_DEFAULT_CATEGORY(Ping);
 
-static gras_socket_t try_gras_socket_client(const char *host, int port)
+static xbt_socket_t try_gras_socket_client(const char *host, int port)
 {
-  volatile gras_socket_t sock = NULL;
+  volatile xbt_socket_t sock = NULL;
   xbt_ex_t e;
   TRY {
     sock = gras_socket_client(host, port);
@@ -27,9 +27,9 @@ static gras_socket_t try_gras_socket_client(const char *host, int port)
 
 int client(int argc, char *argv[])
 {
-  gras_socket_t toserver = NULL;        /* peer */
+  xbt_socket_t toserver = NULL;        /* peer */
 
-  gras_socket_t from;
+  xbt_socket_t from;
   int ping, pong;
 
   const char *host = "127.0.0.1";
@@ -58,7 +58,7 @@ int client(int argc, char *argv[])
 
   /* 5. Keep the user informed of what's going on */
   XBT_INFO(">>>>>>>> Connected to server which is on %s:%d <<<<<<<<",
-        gras_socket_peer_name(toserver), gras_socket_peer_port(toserver));
+        xbt_socket_peer_name(toserver), xbt_socket_peer_port(toserver));
 
   /* 6. Prepare and send the ping message to the server */
   ping = 1234;
@@ -71,7 +71,7 @@ int client(int argc, char *argv[])
   }
   XBT_INFO(">>>>>>>> Message PING(%d) sent to %s:%d <<<<<<<<",
         ping,
-        gras_socket_peer_name(toserver), gras_socket_peer_port(toserver));
+        xbt_socket_peer_name(toserver), xbt_socket_peer_port(toserver));
 
   /* 7. Wait for the answer from the server, and deal with issues */
   TRY {
@@ -84,7 +84,7 @@ int client(int argc, char *argv[])
 
   /* 8. Keep the user informed of what's going on, again */
   XBT_INFO(">>>>>>>> Got PONG(%d) from %s:%d <<<<<<<<",
-        pong, gras_socket_peer_name(from), gras_socket_peer_port(from));
+        pong, xbt_socket_peer_name(from), xbt_socket_peer_port(from));
 
   /* 9. Free the allocated resources, and shut GRAS down */
   gras_socket_close(toserver);
index 41e6b80..f0b6e49 100644 (file)
@@ -12,7 +12,7 @@ XBT_LOG_NEW_DEFAULT_CATEGORY(Ping, "Messages specific to this example");
 /* register messages which may be sent (common to client and server) */
 void ping_register_messages(void)
 {
-  gras_msgtype_declare("ping", gras_datadesc_by_name("int"));
-  gras_msgtype_declare("pong", gras_datadesc_by_name("int"));
+  gras_msgtype_declare("ping", xbt_datadesc_by_name("int"));
+  gras_msgtype_declare("pong", xbt_datadesc_by_name("int"));
   XBT_INFO("Messages registered");
 }
index 4e2af0a..bb01301 100644 (file)
@@ -12,7 +12,7 @@ XBT_LOG_EXTERNAL_DEFAULT_CATEGORY(Ping);
 
 /* Global private data */
 typedef struct {
-  gras_socket_t sock;
+  xbt_socket_t sock;
   int endcondition;
 } server_data_t;
 
@@ -21,7 +21,7 @@ static int server_cb_ping_handler(gras_msg_cb_ctx_t ctx, void *payload)
 {
   /* 1. Get the payload into the msg variable, and retrieve my caller */
   int msg = *(int *) payload;
-  gras_socket_t expeditor = gras_msg_cb_ctx_from(ctx);
+  xbt_socket_t expeditor = gras_msg_cb_ctx_from(ctx);
 
   /* 2. Retrieve the server's state (globals) */
 
@@ -31,8 +31,8 @@ static int server_cb_ping_handler(gras_msg_cb_ctx_t ctx, void *payload)
   /* 3. Log which client connected */
   XBT_INFO(">>>>>>>> Got message PING(%d) from %s:%d <<<<<<<<",
         msg,
-        gras_socket_peer_name(expeditor),
-        gras_socket_peer_port(expeditor));
+        xbt_socket_peer_name(expeditor),
+        xbt_socket_peer_port(expeditor));
 
   /* 4. Change the value of the msg variable */
   msg = 4321;
@@ -85,7 +85,7 @@ int server(int argc, char *argv[])
   gras_cb_register("ping", &server_cb_ping_handler);
 
   XBT_INFO(">>>>>>>> Listening on port %d <<<<<<<<",
-        gras_socket_my_port(globals->sock));
+        xbt_socket_my_port(globals->sock));
   globals->endcondition = 0;
 
   /* 6. Wait up to 20 minutes for an incomming message to handle */
index 5ab834d..f5998a5 100644 (file)
@@ -6,7 +6,7 @@
 /* This program is free software; you can redistribute it and/or modify it
  * under the terms of the license (GNU LGPL) which comes with this package. */
 
-#define GRAS_DEFINE_TYPE_EXTERN
+#define XBT_DEFINE_TYPE_EXTERN
 #include "xbt/matrix.h"
 #include "mmrpc.h"
 
@@ -16,12 +16,12 @@ XBT_LOG_NEW_DEFAULT_CATEGORY(MatMult, "Messages specific to this example");
    (common to client and server) */
 void mmrpc_register_messages(void)
 {
-  gras_datadesc_type_t matrix_type, request_type;
+  xbt_datadesc_type_t matrix_type, request_type;
 
-  matrix_type = gras_datadesc_matrix(gras_datadesc_by_name("double"),
+  matrix_type = xbt_datadesc_matrix(xbt_datadesc_by_name("double"),
                                      NULL);
   request_type =
-      gras_datadesc_array_fixed("s_matrix_t(double)[2]", matrix_type, 2);
+      xbt_datadesc_array_fixed("s_matrix_t(double)[2]", matrix_type, 2);
 
   gras_msgtype_declare("answer", matrix_type);
   gras_msgtype_declare("request", request_type);
@@ -32,7 +32,7 @@ static int server_cb_request_handler(gras_msg_cb_ctx_t ctx,
                                      void *payload_data)
 {
 
-  gras_socket_t expeditor = gras_msg_cb_ctx_from(ctx);
+  xbt_socket_t expeditor = gras_msg_cb_ctx_from(ctx);
 
   /* 1. Get the payload into the data variable */
   xbt_matrix_t *request = (xbt_matrix_t *) payload_data;
@@ -55,7 +55,7 @@ static int server_cb_request_handler(gras_msg_cb_ctx_t ctx,
 
 int server(int argc, char *argv[])
 {
-  gras_socket_t sock = NULL;
+  xbt_socket_t sock = NULL;
   int port = 4000;
 
   /* 1. Init the GRAS infrastructure */
@@ -95,9 +95,9 @@ int server(int argc, char *argv[])
 
 int client(int argc, char *argv[])
 {
-  gras_socket_t toserver = NULL;        /* peer */
+  xbt_socket_t toserver = NULL;        /* peer */
 
-  gras_socket_t from;
+  xbt_socket_t from;
   xbt_matrix_t request[2], answer;
 
   int i, j;
@@ -134,7 +134,7 @@ int client(int argc, char *argv[])
 
   /* 6. Keep the user informed of what's going on */
   XBT_INFO(">>>>>>>> Connected to server which is on %s:%d <<<<<<<<",
-        gras_socket_peer_name(toserver), gras_socket_peer_port(toserver));
+        xbt_socket_peer_name(toserver), xbt_socket_peer_port(toserver));
 
   /* 7. Prepare and send the request to the server */
 
@@ -151,7 +151,7 @@ int client(int argc, char *argv[])
   xbt_matrix_free(request[0]);
 
   XBT_INFO(">>>>>>>> Request sent to %s:%d <<<<<<<<",
-        gras_socket_peer_name(toserver), gras_socket_peer_port(toserver));
+        xbt_socket_peer_name(toserver), xbt_socket_peer_port(toserver));
 
   /* 8. Wait for the answer from the server, and deal with issues */
   gras_msg_wait(6000, "answer", &from, &answer);
@@ -169,7 +169,7 @@ int client(int argc, char *argv[])
 
   /* 9. Keep the user informed of what's going on, again */
   XBT_INFO(">>>>>>>> Got answer from %s:%d (values are right) <<<<<<<<",
-        gras_socket_peer_name(from), gras_socket_peer_port(from));
+        xbt_socket_peer_name(from), xbt_socket_peer_port(from));
 
   /* 10. Free the allocated resources, and shut GRAS down */
   xbt_matrix_free(request[1]);
index a4fb89f..6472af0 100644 (file)
@@ -6,15 +6,15 @@
 /* This program is free software; you can redistribute it and/or modify it
  * under the terms of the license (GNU LGPL) which comes with this package. */
 
-#define GRAS_DEFINE_TYPE_EXTERN
+#define XBT_DEFINE_TYPE_EXTERN
 #include "xbt/matrix.h"
 #include "mmrpc.h"
 
 XBT_LOG_EXTERNAL_DEFAULT_CATEGORY(MatMult);
 
-static gras_socket_t try_gras_socket_client(const char *host, int port)
+static xbt_socket_t try_gras_socket_client(const char *host, int port)
 {
-  volatile gras_socket_t sock = NULL;
+  volatile xbt_socket_t sock = NULL;
   xbt_ex_t e;
   TRY {
     sock = gras_socket_client(host, port);
@@ -29,9 +29,9 @@ static gras_socket_t try_gras_socket_client(const char *host, int port)
 
 int client(int argc, char *argv[])
 {
-  gras_socket_t toserver = NULL;        /* peer */
+  xbt_socket_t toserver = NULL;        /* peer */
 
-  gras_socket_t from;
+  xbt_socket_t from;
   xbt_matrix_t request[2], answer;
 
   int i;
@@ -61,7 +61,7 @@ int client(int argc, char *argv[])
 
   /* 5. Keep the user informed of what's going on */
   XBT_INFO(">>>>>>>> Connected to server which is on %s:%d <<<<<<<<",
-        gras_socket_peer_name(toserver), gras_socket_peer_port(toserver));
+        xbt_socket_peer_name(toserver), xbt_socket_peer_port(toserver));
 
   /* 6. Prepare and send the request to the server */
 
@@ -78,7 +78,7 @@ int client(int argc, char *argv[])
   xbt_matrix_free(request[0]);
 
   XBT_INFO(">>>>>>>> Request sent to %s:%d <<<<<<<<",
-        gras_socket_peer_name(toserver), gras_socket_peer_port(toserver));
+        xbt_socket_peer_name(toserver), xbt_socket_peer_port(toserver));
 
   /* 7. Wait for the answer from the server, and deal with issues */
   gras_msg_wait(6000, "answer", &from, &answer);
@@ -96,7 +96,7 @@ int client(int argc, char *argv[])
 
   /* 8. Keep the user informed of what's going on, again */
   XBT_INFO(">>>>>>>> Got answer from %s:%d (values are right) <<<<<<<<",
-        gras_socket_peer_name(from), gras_socket_peer_port(from));
+        xbt_socket_peer_name(from), xbt_socket_peer_port(from));
 
   /* 9. Free the allocated resources, and shut GRAS down */
   xbt_matrix_free(request[1]);
index a488470..62da601 100644 (file)
@@ -14,12 +14,12 @@ XBT_LOG_NEW_DEFAULT_CATEGORY(MatMult, "Messages specific to this example");
    (common to client and server) */
 void mmrpc_register_messages(void)
 {
-  gras_datadesc_type_t matrix_type, request_type;
+  xbt_datadesc_type_t matrix_type, request_type;
 
   matrix_type =
-      gras_datadesc_matrix(gras_datadesc_by_name("double"), NULL);
+      xbt_datadesc_matrix(xbt_datadesc_by_name("double"), NULL);
   request_type =
-      gras_datadesc_array_fixed("s_matrix_t(double)[2]", matrix_type, 2);
+      xbt_datadesc_array_fixed("s_matrix_t(double)[2]", matrix_type, 2);
 
   gras_msgtype_declare("answer", matrix_type);
   gras_msgtype_declare("request", request_type);
index afdb861..e3a1910 100644 (file)
@@ -6,7 +6,7 @@
 /* This program is free software; you can redistribute it and/or modify it
  * under the terms of the license (GNU LGPL) which comes with this package. */
 
-#define GRAS_DEFINE_TYPE_EXTERN
+#define XBT_DEFINE_TYPE_EXTERN
 #include "xbt/matrix.h"
 #include "mmrpc.h"
 
@@ -18,7 +18,7 @@ static int server_cb_request_handler(gras_msg_cb_ctx_t ctx,
                                      void *payload_data)
 {
 
-  gras_socket_t expeditor = gras_msg_cb_ctx_from(ctx);
+  xbt_socket_t expeditor = gras_msg_cb_ctx_from(ctx);
 
   /* 1. Get the payload into the data variable */
   xbt_matrix_t *request = (xbt_matrix_t *) payload_data;
@@ -38,9 +38,9 @@ static int server_cb_request_handler(gras_msg_cb_ctx_t ctx,
   return 0;
 }                               /* end_of_server_cb_request_handler */
 
-static gras_socket_t try_gras_socket_server(int port)
+static xbt_socket_t try_gras_socket_server(int port)
 {
-  volatile gras_socket_t sock = NULL;
+  volatile xbt_socket_t sock = NULL;
   TRY {
     sock = gras_socket_server(port);
   }
@@ -52,7 +52,7 @@ static gras_socket_t try_gras_socket_server(int port)
 
 int server(int argc, char *argv[])
 {
-  gras_socket_t sock = NULL;
+  xbt_socket_t sock = NULL;
   int port = 4002;
 
   /* 1. Init the GRAS infrastructure */
index f05e731..90d6872 100644 (file)
@@ -24,10 +24,10 @@ int node(int argc, char *argv[]);
 
 /* Global private data */
 typedef struct {
-  gras_socket_t sock;           /* server socket on which I hear */
+  xbt_socket_t sock;           /* server socket on which I hear */
   int remaining_loop;           /* number of loops to do until done */
   int create;                   /* whether I have to create the token */
-  gras_socket_t tosuccessor;    /* how to connect to the successor on ring */
+  xbt_socket_t tosuccessor;    /* how to connect to the successor on ring */
   double start_time;            /* to measure the elapsed time. Only used by the 
                                    node that creates the token */
 } node_data_t;
@@ -38,7 +38,7 @@ static int node_cb_stoken_handler(gras_msg_cb_ctx_t ctx, void *payload)
 {
   /* 1. Get the payload into the msg variable, and retrieve my caller */
   int msg = *(int *) payload;
-  gras_socket_t expeditor = gras_msg_cb_ctx_from(ctx);
+  xbt_socket_t expeditor = gras_msg_cb_ctx_from(ctx);
 
 
   /* 2. Retrieve the node's state (globals) */
@@ -57,7 +57,7 @@ static int node_cb_stoken_handler(gras_msg_cb_ctx_t ctx, void *payload)
     XBT_INFO("Begin a new loop. Still to do: %d", globals->remaining_loop);
   } else if (!(globals->remaining_loop % supersteps)) {
     XBT_VERB("Got token(%d) from %s remaining_loop=%d",
-          msg, gras_socket_peer_name(expeditor), globals->remaining_loop);
+          msg, xbt_socket_peer_name(expeditor), globals->remaining_loop);
   }
 
   /* 4. If the right shouldn't be stopped yet */
@@ -65,8 +65,8 @@ static int node_cb_stoken_handler(gras_msg_cb_ctx_t ctx, void *payload)
     msg += 1;
 
     XBT_DEBUG("Send token(%d) to %s:%d", msg,
-           gras_socket_peer_name(globals->tosuccessor),
-           gras_socket_peer_port(globals->tosuccessor));
+           xbt_socket_peer_name(globals->tosuccessor),
+           xbt_socket_peer_port(globals->tosuccessor));
 
     /* 5. Send the token as payload of a stoken message to the successor */
     TRY {
@@ -133,7 +133,7 @@ int node(int argc, char *argv[])
           myport, host, peerport);
 
   /* 4. Register the known messages.  */
-  gras_msgtype_declare("stoken", gras_datadesc_by_name("int"));
+  gras_msgtype_declare("stoken", xbt_datadesc_by_name("int"));
 
   /* 5. Create my master socket for listening */
   globals->sock = gras_socket_server(myport);
index 5c4cb0d..c6755a0 100644 (file)
 int node_nuke_handler(gras_msg_cb_ctx_t ctx, void *payload_data);
 
 // struct of a "get_successor" message, when a node look after the area in which he want to be.
-GRAS_DEFINE_TYPE(s_get_suc, struct s_get_suc {
+XBT_DEFINE_TYPE(s_get_suc, struct s_get_suc {
                  int xId; int yId; char host[1024]; int port;};);
 
 typedef struct s_get_suc get_suc_t;
 
 // struct of a "response_successor" message, hen a node receive the information of his new area.
-GRAS_DEFINE_TYPE(s_rep_suc, struct s_rep_suc {
+XBT_DEFINE_TYPE(s_rep_suc, struct s_rep_suc {
                  int x1;        // Xmin
                  int x2;        // Xmax
                  int y1;        // Ymin
@@ -43,16 +43,16 @@ int node(int argc, char **argv);
 // registering messages types
 static void register_messages()
 {
-  gras_msgtype_declare("can_get_suc", gras_datadesc_by_symbol(s_get_suc));
-  gras_msgtype_declare("can_rep_suc", gras_datadesc_by_symbol(s_rep_suc));
-  gras_msgtype_declare("can_nuke", gras_datadesc_by_symbol(s_nuke));    // can_test.c message // include can_tests.c must be ON.
+  gras_msgtype_declare("can_get_suc", xbt_datadesc_by_symbol(s_get_suc));
+  gras_msgtype_declare("can_rep_suc", xbt_datadesc_by_symbol(s_rep_suc));
+  gras_msgtype_declare("can_nuke", xbt_datadesc_by_symbol(s_nuke));    // can_test.c message // include can_tests.c must be ON.
 }
 
 
 // a forwarding function for a "get_suc" message.
 static void forward_get_suc(get_suc_t msg, char host[1024], int port)
 {
-  gras_socket_t temp_sock = NULL;
+  xbt_socket_t temp_sock = NULL;
   //XBT_INFO("Transmiting message to %s:%d",host,port);
   TRY {
     temp_sock = gras_socket_client(host, port);
@@ -74,13 +74,13 @@ static void forward_get_suc(get_suc_t msg, char host[1024], int port)
 // the handling function of a "get_suc" message (what do a node when he receive a "get_suc" message.
 static int node_get_suc_handler(gras_msg_cb_ctx_t ctx, void *payload_data)
 {
-  gras_socket_t expeditor = gras_msg_cb_ctx_from(ctx);
+  xbt_socket_t expeditor = gras_msg_cb_ctx_from(ctx);
   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;
+  xbt_socket_t temp_sock = NULL;
   XBT_INFO("Received a get_successor message from %s for (%d;%d)",
-        gras_socket_peer_name(expeditor), incoming->xId, incoming->yId);
+        xbt_socket_peer_name(expeditor), incoming->xId, incoming->yId);
   //XBT_INFO("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.
     forward_get_suc(*incoming, globals->west_host, globals->west_port);
@@ -190,7 +190,7 @@ static int node_get_suc_handler(gras_msg_cb_ctx_t ctx, void *payload_data)
       }
       CATCH_ANONYMOUS {
         RETHROWF("%s:Timeout sending environment informations to %s: %s",
-                 globals->host, gras_socket_peer_name(expeditor));
+                 globals->host, xbt_socket_peer_name(expeditor));
       }
       gras_socket_close(temp_sock);
     } else                      // we have a problem!
@@ -218,12 +218,12 @@ 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;
+  xbt_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;
+  xbt_socket_t temp_sock2 = NULL;
 
   XBT_INFO("Starting");
 
index 44a7227..994eea6 100644 (file)
@@ -13,7 +13,7 @@
 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 {
+XBT_DEFINE_TYPE(s_nuke, struct s_nuke {
                  int xId; int yId; char host[1024];     // original expeditor..
                  int port;      // ..and his port.
                  int version;   // fun.
@@ -25,7 +25,7 @@ typedef struct s_nuke nuke_t;
 int start_war(int argc, char **argv);
 int start_war(int argc, char **argv)
 {
-  gras_socket_t temp_sock = NULL;
+  xbt_socket_t temp_sock = NULL;
   nuke_t nuke_msg;
   //return 0; // in order to inhibit the War of the Nodes 
   gras_init(&argc, argv);
@@ -63,7 +63,7 @@ int start_war(int argc, char **argv)
 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_socket_t temp_sock = NULL;
 
   if (xId >= globals->x1 && xId <= globals->x2 && yId >= globals->y1
       && yId <= globals->y2) {
@@ -115,14 +115,14 @@ static int send_nuke(nuke_t * msg, int xId, int yId)
 
 static int node_nuke_handler(gras_msg_cb_ctx_t ctx, void *payload_data)
 {
-  gras_socket_t expeditor = gras_msg_cb_ctx_from(ctx);
+  xbt_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_socket_t temp_sock = NULL;
   xbt_ex_t e;                   // the error variable used in TRY.. CATCH tokens.
 
 
index 7060096..528db0c 100644 (file)
@@ -23,7 +23,7 @@ typedef enum msg_typus {
   STD,
 } msg_typus;
 
-/*GRAS_DEFINE_TYPE(s_pbio,
+/*XBT_DEFINE_TYPE(s_pbio,
   struct s_pbio{
     msg_typus type;
     int dest;
@@ -32,14 +32,14 @@ typedef enum msg_typus {
 );
 typedef struct s_pbio pbio_t;*/
 
-/*GRAS_DEFINE_TYPE(s_ping,*/
+/*XBT_DEFINE_TYPE(s_ping,*/
 struct s_ping {
   int id;
 };
 /*);*/
 typedef struct s_ping ping_t;
 
-/*GRAS_DEFINE_TYPE(s_pong,*/
+/*XBT_DEFINE_TYPE(s_pong,*/
 struct s_pong {
   int id;
   int failed;
@@ -47,17 +47,17 @@ struct s_pong {
 /*);*/
 typedef struct s_pong pong_t;
 
-GRAS_DEFINE_TYPE(s_notify, struct s_notify {
+XBT_DEFINE_TYPE(s_notify, struct s_notify {
                  int id; char host[1024]; int port;};);
 
 typedef struct s_notify notify_t;
 
-GRAS_DEFINE_TYPE(s_get_suc, struct s_get_suc {
+XBT_DEFINE_TYPE(s_get_suc, struct s_get_suc {
                  int id;};);
 
 typedef struct s_get_suc get_suc_t;
 
-GRAS_DEFINE_TYPE(s_rep_suc, struct s_rep_suc {
+XBT_DEFINE_TYPE(s_rep_suc, struct s_rep_suc {
                  int id; char host[1024]; int port;};);
 
 typedef struct s_rep_suc rep_suc_t;
@@ -72,17 +72,17 @@ typedef struct finger_elem {
 
 static void register_messages()
 {
-/*  gras_msgtype_declare("chord",gras_datadesc_by_symbol(s_pbio));*/
+/*  gras_msgtype_declare("chord",xbt_datadesc_by_symbol(s_pbio));*/
   gras_msgtype_declare("chord_get_suc",
-                       gras_datadesc_by_symbol(s_get_suc));
+                       xbt_datadesc_by_symbol(s_get_suc));
   gras_msgtype_declare("chord_rep_suc",
-                       gras_datadesc_by_symbol(s_rep_suc));
-  gras_msgtype_declare("chord_notify", gras_datadesc_by_symbol(s_notify));
+                       xbt_datadesc_by_symbol(s_rep_suc));
+  gras_msgtype_declare("chord_notify", xbt_datadesc_by_symbol(s_notify));
 }
 
 /* Global private data */
 typedef struct {
-  gras_socket_t sock;           /* server socket on which I'm listening */
+  xbt_socket_t sock;           /* server socket on which I'm listening */
   int id;                       /* my id number */
   char host[1024];              /* my host name */
   int port;                     /* port on which I'm listening FIXME */
@@ -97,13 +97,13 @@ typedef struct {
 
 int node(int argc, char **argv);
 
-/*static int node_cb_chord_handler(gras_socket_t expeditor,void *payload_data){
+/*static int node_cb_chord_handler(xbt_socket_t expeditor,void *payload_data){
   xbt_ex_t e;
   pbio_t pbio_i=*(pbio_t*)payload_data;
 
   node_data_t *globals=(node_data_t*)gras_userdata_get();
 
-  XBT_INFO(">>> %d : received %d message from %s to %d <<<",globals->id,pbio_i.type,gras_socket_peer_name(expeditor),pbio_i.dest);
+  XBT_INFO(">>> %d : received %d message from %s to %d <<<",globals->id,pbio_i.type,xbt_socket_peer_name(expeditor),pbio_i.dest);
 
 
 
@@ -112,12 +112,12 @@ int node(int argc, char **argv);
 static int node_cb_get_suc_handler(gras_msg_cb_ctx_t ctx,
                                    void *payload_data)
 {
-  gras_socket_t expeditor = gras_msg_cb_ctx_from(ctx);
+  xbt_socket_t expeditor = gras_msg_cb_ctx_from(ctx);
   get_suc_t incoming = *(get_suc_t *) payload_data;
   rep_suc_t outgoing;
   node_data_t *globals = (node_data_t *) gras_userdata_get();
   XBT_INFO("Received a get_successor message from %s for %d",
-        gras_socket_peer_name(expeditor), incoming.id);
+        xbt_socket_peer_name(expeditor), incoming.id);
   if ((globals->id == globals->finger[0].id) ||
       (incoming.id > globals->id
        && incoming.id <= globals->finger[0].id)) {
@@ -126,7 +126,7 @@ static int node_cb_get_suc_handler(gras_msg_cb_ctx_t ctx,
     outgoing.port = globals->finger[0].port;
     XBT_INFO("My successor is his successor!");
   } else {
-    gras_socket_t temp_sock;
+    xbt_socket_t temp_sock;
     int contact = closest_preceding_node(incoming.id);
     if (contact == -1) {
       outgoing.id = globals->finger[0].id;
@@ -159,7 +159,7 @@ static int node_cb_get_suc_handler(gras_msg_cb_ctx_t ctx,
   }
   CATCH_ANONYMOUS {
     RETHROWF("%s:Timeout sending successor information to %s: %s",
-             globals->host, gras_socket_peer_name(expeditor));
+             globals->host, xbt_socket_peer_name(expeditor));
   }
   gras_socket_close(expeditor);
   return 0;
@@ -181,12 +181,12 @@ static int closest_preceding_node(int id)
 static int node_cb_notify_handler(gras_msg_cb_ctx_t ctx,
                                   void *payload_data)
 {
-  gras_socket_t expeditor = gras_msg_cb_ctx_from(ctx);
+  xbt_socket_t expeditor = gras_msg_cb_ctx_from(ctx);
   /*xbt_ex_t e; */
   notify_t incoming = *(notify_t *) payload_data;
   node_data_t *globals = (node_data_t *) gras_userdata_get();
   XBT_INFO("Received a notifying message from %s as %d",
-        gras_socket_peer_name(expeditor), incoming.id);
+        xbt_socket_peer_name(expeditor), incoming.id);
   if (globals->pre_id == -1 ||
       (incoming.id > globals->pre_id && incoming.id < globals->id)) {
     globals->pre_id = incoming.id;
@@ -200,8 +200,8 @@ static int node_cb_notify_handler(gras_msg_cb_ctx_t ctx,
 static void fix_fingers()
 {
   get_suc_t get_suc_msg;
-  gras_socket_t temp_sock = NULL;
-  gras_socket_t temp_sock2 = NULL;
+  xbt_socket_t temp_sock = NULL;
+  xbt_socket_t temp_sock2 = NULL;
   rep_suc_t rep_suc_msg;
   node_data_t *globals = (node_data_t *) gras_userdata_get();
 
@@ -241,7 +241,7 @@ static void fix_fingers()
 static void check_predecessor()
 {
   node_data_t *globals = (node_data_t *) gras_userdata_get();
-  gras_socket_t temp_sock;
+  xbt_socket_t temp_sock;
   ping_t ping;
   pong_t pong;
   xbt_ex_t e;
@@ -283,8 +283,8 @@ static void check_predecessor()
 int node(int argc, char **argv)
 {
   node_data_t *globals = NULL;
-  gras_socket_t temp_sock = NULL;
-  gras_socket_t temp_sock2 = NULL;
+  xbt_socket_t temp_sock = NULL;
+  xbt_socket_t temp_sock2 = NULL;
   get_suc_t get_suc_msg;
   rep_suc_t rep_suc_msg;
 
index d9aab2c..c60456d 100644 (file)
@@ -9,9 +9,9 @@
 #include "ping.h"
 XBT_LOG_EXTERNAL_DEFAULT_CATEGORY(Ping);
 
-static gras_socket_t try_gras_socket_client(const char *host, int port)
+static xbt_socket_t try_gras_socket_client(const char *host, int port)
 {
-  volatile gras_socket_t sock = NULL;
+  volatile xbt_socket_t sock = NULL;
   xbt_ex_t e;
   TRY {
     sock = gras_socket_client(host, port);
@@ -27,9 +27,9 @@ static gras_socket_t try_gras_socket_client(const char *host, int port)
 
 int client(int argc, char *argv[])
 {
-  gras_socket_t toserver = NULL;        /* peer */
+  xbt_socket_t toserver = NULL;        /* peer */
 
-  gras_socket_t from;
+  xbt_socket_t from;
   int ping, pong;
 
   const char *host = "127.0.0.1";
@@ -58,7 +58,7 @@ int client(int argc, char *argv[])
 
   /* 5. Keep the user informed of what's going on */
   XBT_INFO(">>>>>>>> Connected to server which is on %s:%d <<<<<<<<",
-        gras_socket_peer_name(toserver), gras_socket_peer_port(toserver));
+        xbt_socket_peer_name(toserver), xbt_socket_peer_port(toserver));
 
   /* 6. Prepare and send the ping message to the server */
   ping = 1234;
@@ -70,7 +70,7 @@ int client(int argc, char *argv[])
     RETHROWF("Failed to send PING to server: %s");
   }
   XBT_INFO(">>>>>>>> Message PING(%d) sent to %s:%d <<<<<<<<",
-        ping, gras_socket_peer_name(toserver), gras_socket_peer_port(toserver));
+        ping, xbt_socket_peer_name(toserver), xbt_socket_peer_port(toserver));
 
   /* 7. Wait for the answer from the server, and deal with issues */
   TRY {
@@ -83,7 +83,7 @@ int client(int argc, char *argv[])
 
   /* 8. Keep the user informed of what's going on, again */
   XBT_INFO(">>>>>>>> Got PONG(%d) from %s:%d <<<<<<<<",
-        pong, gras_socket_peer_name(from), gras_socket_peer_port(from));
+        pong, xbt_socket_peer_name(from), xbt_socket_peer_port(from));
 
   /* 9. Free the allocated resources, and shut GRAS down */
   gras_socket_close(toserver);
index 41e6b80..f0b6e49 100644 (file)
@@ -12,7 +12,7 @@ XBT_LOG_NEW_DEFAULT_CATEGORY(Ping, "Messages specific to this example");
 /* register messages which may be sent (common to client and server) */
 void ping_register_messages(void)
 {
-  gras_msgtype_declare("ping", gras_datadesc_by_name("int"));
-  gras_msgtype_declare("pong", gras_datadesc_by_name("int"));
+  gras_msgtype_declare("ping", xbt_datadesc_by_name("int"));
+  gras_msgtype_declare("pong", xbt_datadesc_by_name("int"));
   XBT_INFO("Messages registered");
 }
index 4167d41..ab4f75e 100644 (file)
@@ -12,7 +12,7 @@ XBT_LOG_EXTERNAL_DEFAULT_CATEGORY(Ping);
 
 /* Global private data */
 typedef struct {
-  gras_socket_t sock;
+  xbt_socket_t sock;
   int endcondition;
 } server_data_t;
 
@@ -21,7 +21,7 @@ static int server_cb_ping_handler(gras_msg_cb_ctx_t ctx, void *payload)
 {
   /* 1. Get the payload into the msg variable, and retrieve my caller */
   int msg = *(int *) payload;
-  gras_socket_t expeditor = gras_msg_cb_ctx_from(ctx);
+  xbt_socket_t expeditor = gras_msg_cb_ctx_from(ctx);
 
   /* 2. Retrieve the server's state (globals) */
 
@@ -31,8 +31,8 @@ static int server_cb_ping_handler(gras_msg_cb_ctx_t ctx, void *payload)
   /* 3. Log which client connected */
   XBT_INFO(">>>>>>>> Got message PING(%d) from %s:%d <<<<<<<<",
         msg,
-        gras_socket_peer_name(expeditor),
-        gras_socket_peer_port(expeditor));
+        xbt_socket_peer_name(expeditor),
+        xbt_socket_peer_port(expeditor));
 
   /* 4. Change the value of the msg variable */
   msg = 4321;
@@ -85,7 +85,7 @@ int server(int argc, char *argv[])
   gras_cb_register("ping", &server_cb_ping_handler);
 
   XBT_INFO(">>>>>>>> Listening on port %d <<<<<<<<",
-        gras_socket_my_port(globals->sock));
+        xbt_socket_my_port(globals->sock));
   globals->endcondition = 0;
 
   /* 6. Wait up to 10 minutes for an incomming message to handle */
index e45caa2..38c834c 100644 (file)
@@ -20,21 +20,21 @@ const int submatrix_size = DATA_MATRIX_SIZE / PROC_MATRIX_SIZE;
 XBT_LOG_NEW_DEFAULT_CATEGORY(pmm, "Parallel Matrix Multiplication");
 
 /* struct for recovering results */
-GRAS_DEFINE_TYPE(s_result, struct s_result {
+XBT_DEFINE_TYPE(s_result, struct s_result {
                  int linepos; int rowpos;
-                 xbt_matrix_t C GRAS_ANNOTE(subtype, double);
+                 xbt_matrix_t C XBT_ANNOTE(subtype, double);
                  });
 
 typedef struct s_result result_t;
 
 /* struct to send initial data to slave */
-GRAS_DEFINE_TYPE(s_pmm_assignment, struct s_pmm_assignment {
+XBT_DEFINE_TYPE(s_pmm_assignment, struct s_pmm_assignment {
                  int linepos;
                  int rowpos;
                  xbt_peer_t line[NEIGHBOR_COUNT];
                  xbt_peer_t row[NEIGHBOR_COUNT];
-                 xbt_matrix_t A GRAS_ANNOTE(subtype, double);
-                 xbt_matrix_t B GRAS_ANNOTE(subtype, double);
+                 xbt_matrix_t A XBT_ANNOTE(subtype, double);
+                 xbt_matrix_t B XBT_ANNOTE(subtype, double);
                  });
 
 typedef struct s_pmm_assignment s_pmm_assignment_t;
@@ -42,12 +42,12 @@ typedef struct s_pmm_assignment s_pmm_assignment_t;
 /* register messages which may be sent (common to client and server) */
 static void register_messages(void)
 {
-  gras_datadesc_type_t result_type;
-  gras_datadesc_type_t pmm_assignment_type;
+  xbt_datadesc_type_t result_type;
+  xbt_datadesc_type_t pmm_assignment_type;
 
-  gras_datadesc_set_const("NEIGHBOR_COUNT", NEIGHBOR_COUNT);
-  result_type = gras_datadesc_by_symbol(s_result);
-  pmm_assignment_type = gras_datadesc_by_symbol(s_pmm_assignment);
+  xbt_datadesc_set_const("NEIGHBOR_COUNT", NEIGHBOR_COUNT);
+  result_type = xbt_datadesc_by_symbol(s_result);
+  pmm_assignment_type = xbt_datadesc_by_symbol(s_pmm_assignment);
 
   /* receive a final result from slave */
   gras_msgtype_declare("result", result_type);
@@ -57,19 +57,19 @@ static void register_messages(void)
 
   /* send data between slaves */
   gras_msgtype_declare("dataA",
-                       gras_datadesc_matrix(gras_datadesc_by_name
+                       xbt_datadesc_matrix(xbt_datadesc_by_name
                                             ("double"), NULL));
   gras_msgtype_declare("dataB",
-                       gras_datadesc_matrix(gras_datadesc_by_name
+                       xbt_datadesc_matrix(xbt_datadesc_by_name
                                             ("double"), NULL));
 
   /* synchronization message */
   gras_msgtype_declare("pmm_sync", 0);
 }
 
-static gras_socket_t try_gras_socket_client_from_string(const char *host)
+static xbt_socket_t try_gras_socket_client_from_string(const char *host)
 {
-  volatile gras_socket_t sock = NULL;
+  volatile xbt_socket_t sock = NULL;
   xbt_ex_t e;
   TRY {
     sock = gras_socket_client_from_string(host);
@@ -84,7 +84,7 @@ static gras_socket_t try_gras_socket_client_from_string(const char *host)
 }
 
 static void my_gras_msg_wait(double timeout, const char* msgt_want,
-                             gras_socket_t* expeditor, void *payload,
+                             xbt_socket_t* expeditor, void *payload,
                              const char *error_msg)
 {
   TRY {
@@ -119,11 +119,11 @@ int master(int argc, char *argv[])
   xbt_matrix_t A, B, C;
   result_t result;
 
-  gras_socket_t from;
+  xbt_socket_t from;
 
   xbt_dynar_t peers;            /* group of slaves */
   xbt_peer_t grid[SLAVE_COUNT]; /* The slaves as an array */
-  gras_socket_t socket[SLAVE_COUNT];    /* sockets for brodcast to slaves */
+  xbt_socket_t socket[SLAVE_COUNT];    /* sockets for brodcast to slaves */
 
   /* Init the GRAS's infrastructure */
   gras_init(&argc, argv);
@@ -266,7 +266,7 @@ static int pmm_worker_cb(gras_msg_cb_ctx_t ctx, void *payload)
 {
   /* Recover my initialized Data and My Position */
   s_pmm_assignment_t assignment = *(s_pmm_assignment_t *) payload;
-  gras_socket_t master = gras_msg_cb_ctx_from(ctx);
+  xbt_socket_t master = gras_msg_cb_ctx_from(ctx);
 
   int step, l;
   xbt_matrix_t bA = xbt_matrix_new(submatrix_size, submatrix_size,
@@ -281,11 +281,11 @@ static int pmm_worker_cb(gras_msg_cb_ctx_t ctx, void *payload)
 
   result_t result;
 
-  gras_socket_t from;           /* to exchange data with my neighbor */
+  xbt_socket_t from;           /* to exchange data with my neighbor */
 
   /* sockets for brodcast to other slave */
-  gras_socket_t socket_line[PROC_MATRIX_SIZE - 1];
-  gras_socket_t socket_row[PROC_MATRIX_SIZE - 1];
+  xbt_socket_t socket_line[PROC_MATRIX_SIZE - 1];
+  xbt_socket_t socket_row[PROC_MATRIX_SIZE - 1];
   memset(socket_line, 0, sizeof(socket_line));
   memset(socket_row, 0, sizeof(socket_row));
 
@@ -324,7 +324,7 @@ static int pmm_worker_cb(gras_msg_cb_ctx_t ctx, void *payload)
       XBT_VERB("LINE: step(%d) = Myline(%d). Broadcast my data.", step,
             myline);
       for (l = 0; l < PROC_MATRIX_SIZE - 1; l++) {
-        XBT_VERB("LINE:   Send to %s", gras_socket_peer_name(socket_row[l]));
+        XBT_VERB("LINE:   Send to %s", xbt_socket_peer_name(socket_row[l]));
         gras_msg_send(socket_row[l], "dataB", &mydataB);
       }
 
@@ -337,7 +337,7 @@ static int pmm_worker_cb(gras_msg_cb_ctx_t ctx, void *payload)
       my_gras_msg_wait(600, "dataB", &from, &bB,
                        "Can't get a data message from line");
       XBT_VERB("LINE: step(%d) <> Myline(%d). Receive data from %s", step,
-            myline, gras_socket_peer_name(from));
+            myline, xbt_socket_peer_name(from));
     }
 
     /* a row brodcast */
@@ -345,7 +345,7 @@ static int pmm_worker_cb(gras_msg_cb_ctx_t ctx, void *payload)
       XBT_VERB("ROW: step(%d)=myrow(%d). Broadcast my data.", step, myrow);
       for (l = 1; l < PROC_MATRIX_SIZE; l++) {
         XBT_VERB("ROW:   Send to %s",
-              gras_socket_peer_name(socket_line[l - 1]));
+              xbt_socket_peer_name(socket_line[l - 1]));
         gras_msg_send(socket_line[l - 1], "dataA", &mydataA);
       }
       xbt_matrix_free(bA);
@@ -356,7 +356,7 @@ static int pmm_worker_cb(gras_msg_cb_ctx_t ctx, void *payload)
       my_gras_msg_wait(1200, "dataA", &from, &bA,
                        "Can't get a data message from row");
       XBT_VERB("ROW: step(%d)<>myrow(%d). Receive data from %s", step, myrow,
-            gras_socket_peer_name(from));
+            xbt_socket_peer_name(from));
     }
     xbt_matrix_double_addmult(bA, bB, bC);
 
@@ -374,7 +374,7 @@ static int pmm_worker_cb(gras_msg_cb_ctx_t ctx, void *payload)
     RETHROWF("Failed to send answer to server: %s");
   }
   XBT_VERB(">>>>>>>> Result sent to %s:%d <<<<<<<<",
-        gras_socket_peer_name(master), gras_socket_peer_port(master));
+        xbt_socket_peer_name(master), xbt_socket_peer_port(master));
   /*  Free the allocated resources, and shut GRAS down */
 
   xbt_matrix_free(bA);
@@ -398,8 +398,8 @@ static int pmm_worker_cb(gras_msg_cb_ctx_t ctx, void *payload)
 
 int slave(int argc, char *argv[])
 {
-  gras_socket_t mysock;
-  gras_socket_t master = NULL;
+  xbt_socket_t mysock;
+  xbt_socket_t master = NULL;
   int rank;
 
   /* Init the GRAS's infrastructure */
index fb1babe..7509e4f 100644 (file)
@@ -32,11 +32,11 @@ static void declare_msg()
   xbt_workload_declare_datadesc();
   gras_msgtype_declare("go", NULL);
   gras_msgtype_declare("commands",
-                       gras_datadesc_dynar(gras_datadesc_by_name
+                       xbt_datadesc_dynar(xbt_datadesc_by_name
                                            ("xbt_workload_elm_t"),
                                            xbt_workload_elm_free_voidp));
   gras_msgtype_declare("chunk",
-                       gras_datadesc_by_name("xbt_workload_data_chunk_t"));
+                       xbt_datadesc_by_name("xbt_workload_data_chunk_t"));
 }
 
 int master(int argc, char *argv[])
@@ -89,10 +89,10 @@ int master(int argc, char *argv[])
 
   /* Check who came */
   xbt_dict_t pals = xbt_dict_new_homogeneous(NULL);
-  gras_socket_t pal;
+  xbt_socket_t pal;
   xbt_dynar_foreach(peers, cursor, peer) {
     //XBT_INFO("%s is here",peer->name);
-    gras_socket_t sock = gras_socket_client(peer->name, peer->port);
+    xbt_socket_t sock = gras_socket_client(peer->name, peer->port);
     xbt_dict_set(pals, peer->name, sock, NULL);
   }
   /* check that we have a dude for every element of the trace */
@@ -132,14 +132,14 @@ int master(int argc, char *argv[])
 typedef struct {
   xbt_dynar_t commands;
   xbt_dict_t peers;
-  gras_socket_t mysock;
+  xbt_socket_t mysock;
 } s_worker_data_t, *worker_data_t;
 
 
-static gras_socket_t get_peer_sock(char *peer)
+static xbt_socket_t get_peer_sock(char *peer)
 {
   worker_data_t g = gras_userdata_get();
-  gras_socket_t peer_sock = xbt_dict_get_or_null(g->peers, peer);
+  xbt_socket_t peer_sock = xbt_dict_get_or_null(g->peers, peer);
   if (!peer_sock) {
     XBT_INFO("Create a socket to %s", peer);
     peer_sock = gras_socket_client(peer, 4000);
@@ -161,10 +161,10 @@ static void do_command(int rank, void *c)
   xbt_workload_data_chunk_t chunk;
 
   if (cmd->action == XBT_WORKLOAD_SEND) {
-    gras_socket_t sock = get_peer_sock(cmd->str_arg);
+    xbt_socket_t sock = get_peer_sock(cmd->str_arg);
     chunk = xbt_workload_data_chunk_new((int) (cmd->d_arg));
     XBT_INFO("Send %.f bytes to %s %s:%d", cmd->d_arg, cmd->str_arg,
-          gras_socket_peer_name(sock), gras_socket_peer_port(sock));
+          xbt_socket_peer_name(sock), xbt_socket_peer_port(sock));
     gras_msg_send_(sock, gras_msgtype_by_name("chunk"), &chunk);
     XBT_INFO("Done sending %.f bytes to %s", cmd->d_arg, cmd->str_arg);
 
@@ -195,7 +195,7 @@ int worker(int argc, char *argv[])
   globals = gras_userdata_new(s_worker_data_t);
   /* Create the connexions */
   globals->mysock = gras_socket_server(4000);   /* FIXME: shouldn't be hardcoded */
-  gras_socket_t master = NULL;
+  xbt_socket_t master = NULL;
   int connected = 0;
 
   gras_cb_register("commands", worker_commands_cb);
index ea04624..f0ba47a 100644 (file)
@@ -178,32 +178,32 @@ xbt_dynar_t xbt_workload_parse_file(char *filename)
 
 void xbt_workload_declare_datadesc(void)
 {
-  gras_datadesc_type_t ddt;
-
-  ddt = gras_datadesc_struct("s_xbt_workload_elm_t");
-  gras_datadesc_struct_append(ddt, "who", gras_datadesc_by_name("string"));
-  gras_datadesc_struct_append(ddt, "comment",
-                              gras_datadesc_by_name("string"));
-  gras_datadesc_struct_append(ddt, "action", gras_datadesc_by_name("int"));
-  gras_datadesc_struct_append(ddt, "date",
-                              gras_datadesc_by_name("double"));
-  gras_datadesc_struct_append(ddt, "d_arg",
-                              gras_datadesc_by_name("double"));
-  gras_datadesc_struct_append(ddt, "str_arg",
-                              gras_datadesc_by_name("string"));
-  gras_datadesc_struct_close(ddt);
-
-  gras_datadesc_ref("xbt_workload_elm_t", ddt);
-
-  ddt = gras_datadesc_struct("s_xbt_workload_data_chunk_t");
-  gras_datadesc_struct_append(ddt, "size", gras_datadesc_by_name("int"));
-  gras_datadesc_cb_field_push(ddt, "size");
-  gras_datadesc_struct_append(ddt, "chunk",
-                              gras_datadesc_ref_pop_arr
-                              (gras_datadesc_by_name("char")));
-  gras_datadesc_struct_close(ddt);
-
-  gras_datadesc_ref("xbt_workload_data_chunk_t", ddt);
+  xbt_datadesc_type_t ddt;
+
+  ddt = xbt_datadesc_struct("s_xbt_workload_elm_t");
+  xbt_datadesc_struct_append(ddt, "who", xbt_datadesc_by_name("string"));
+  xbt_datadesc_struct_append(ddt, "comment",
+                              xbt_datadesc_by_name("string"));
+  xbt_datadesc_struct_append(ddt, "action", xbt_datadesc_by_name("int"));
+  xbt_datadesc_struct_append(ddt, "date",
+                              xbt_datadesc_by_name("double"));
+  xbt_datadesc_struct_append(ddt, "d_arg",
+                              xbt_datadesc_by_name("double"));
+  xbt_datadesc_struct_append(ddt, "str_arg",
+                              xbt_datadesc_by_name("string"));
+  xbt_datadesc_struct_close(ddt);
+
+  xbt_datadesc_ref("xbt_workload_elm_t", ddt);
+
+  ddt = xbt_datadesc_struct("s_xbt_workload_data_chunk_t");
+  xbt_datadesc_struct_append(ddt, "size", xbt_datadesc_by_name("int"));
+  xbt_datadesc_cb_field_push(ddt, "size");
+  xbt_datadesc_struct_append(ddt, "chunk",
+                              xbt_datadesc_ref_pop_arr
+                              (xbt_datadesc_by_name("char")));
+  xbt_datadesc_struct_close(ddt);
+
+  xbt_datadesc_ref("xbt_workload_data_chunk_t", ddt);
 }
 
 
index 10e84e0..4d12003 100644 (file)
@@ -14,8 +14,8 @@ XBT_LOG_NEW_DEFAULT_CATEGORY(Rpc, "Messages specific to this example");
 static void register_messages(void)
 {
   gras_msgtype_declare_rpc("plain ping",
-                           gras_datadesc_by_name("int"),
-                           gras_datadesc_by_name("int"));
+                           xbt_datadesc_by_name("int"),
+                           xbt_datadesc_by_name("int"));
 
   gras_msgtype_declare_rpc("raise exception", NULL, NULL);
   gras_msgtype_declare_rpc("forward exception", NULL, NULL);
@@ -60,8 +60,8 @@ static void exception_catching(void)
  * Client code
  * **********************************************************************/
 
-static void client_create_sockets(gras_socket_t *toserver,
-                                  gras_socket_t *toforwarder,
+static void client_create_sockets(xbt_socket_t *toserver,
+                                  xbt_socket_t *toforwarder,
                                   const char *srv_host, int srv_port,
                                   const char *fwd_host, int fwd_port)
 {
@@ -78,8 +78,8 @@ static void client_create_sockets(gras_socket_t *toserver,
 int client(int argc, char *argv[])
 {
   xbt_ex_t e;
-  gras_socket_t toserver = NULL;        /* peer */
-  gras_socket_t toforwarder = NULL;     /* peer */
+  xbt_socket_t toserver = NULL;        /* peer */
+  xbt_socket_t toforwarder = NULL;     /* peer */
 
   int ping, pong, i;
   volatile int gotit = 0;
@@ -119,7 +119,7 @@ int client(int argc, char *argv[])
 
   /* 6. Keep the user informed of what's going on */
   XBT_INFO("Connected to server which is on %s:%d",
-        gras_socket_peer_name(toserver), gras_socket_peer_port(toserver));
+        xbt_socket_peer_name(toserver), xbt_socket_peer_port(toserver));
 
   /* 7. Prepare and send the ping message to the server */
   ping = 1234;
@@ -136,7 +136,7 @@ int client(int argc, char *argv[])
   /* 8. Keep the user informed of what's going on, again */
   XBT_INFO("The answer to PING(%d) on %s:%d is PONG(%d)",
         ping,
-        gras_socket_peer_name(toserver), gras_socket_peer_port(toserver),
+        xbt_socket_peer_name(toserver), xbt_socket_peer_port(toserver),
         pong);
 
   /* 9. Call a RPC which raises an exception (to test exception propagation) */
@@ -205,11 +205,11 @@ int client(int argc, char *argv[])
     exception_catching();
   }
 
-  XBT_INFO("Ask %s:%d to die", gras_socket_peer_name(toforwarder),
-        gras_socket_peer_port(toforwarder));
+  XBT_INFO("Ask %s:%d to die", xbt_socket_peer_name(toforwarder),
+        xbt_socket_peer_port(toforwarder));
   gras_msg_send(toforwarder, "kill", NULL);
-  XBT_INFO("Ask %s:%d to die", gras_socket_peer_name(toserver),
-        gras_socket_peer_port(toserver));
+  XBT_INFO("Ask %s:%d to die", xbt_socket_peer_name(toserver),
+        xbt_socket_peer_port(toserver));
   gras_msg_send(toserver, "kill", NULL);
 
   /* 11. Cleanup the place before leaving */
@@ -225,16 +225,16 @@ int client(int argc, char *argv[])
  * Forwarder code
  * **********************************************************************/
 typedef struct {
-  gras_socket_t server;
+  xbt_socket_t server;
   int done;
 } s_forward_data_t, *forward_data_t;
 
 static int forwarder_cb_kill(gras_msg_cb_ctx_t ctx, void *payload_data)
 {
   forward_data_t fdata;
-  gras_socket_t expeditor = gras_msg_cb_ctx_from(ctx);
-  XBT_INFO("Asked to die by %s:%d", gras_socket_peer_name(expeditor),
-        gras_socket_peer_port(expeditor));
+  xbt_socket_t expeditor = gras_msg_cb_ctx_from(ctx);
+  XBT_INFO("Asked to die by %s:%d", xbt_socket_peer_name(expeditor),
+        xbt_socket_peer_port(expeditor));
   fdata = gras_userdata_get();
   fdata->done = 1;
   return 0;
@@ -252,7 +252,7 @@ static int forwarder_cb_forward_ex(gras_msg_cb_ctx_t ctx,
 
 int forwarder(int argc, char *argv[])
 {
-  gras_socket_t mysock;
+  xbt_socket_t mysock;
   int port;
   forward_data_t fdata;
 
@@ -290,17 +290,17 @@ int forwarder(int argc, char *argv[])
  * Server code
  * **********************************************************************/
 typedef struct {
-  gras_socket_t server;
+  xbt_socket_t server;
   int done;
 } s_server_data_t, *server_data_t;
 
 static int server_cb_kill(gras_msg_cb_ctx_t ctx, void *payload_data)
 {
-  gras_socket_t expeditor = gras_msg_cb_ctx_from(ctx);
+  xbt_socket_t expeditor = gras_msg_cb_ctx_from(ctx);
   server_data_t sdata;
 
-  XBT_INFO("Asked to die by %s:%d", gras_socket_peer_name(expeditor),
-        gras_socket_peer_port(expeditor));
+  XBT_INFO("Asked to die by %s:%d", xbt_socket_peer_name(expeditor),
+        xbt_socket_peer_port(expeditor));
 
   sdata = gras_userdata_get();
   sdata->done = 1;
@@ -318,13 +318,13 @@ static int server_cb_ping(gras_msg_cb_ctx_t ctx, void *payload_data)
 
   /* 1. Get the payload into the msg variable, and retrieve who called us */
   int msg = *(int *) payload_data;
-  gras_socket_t expeditor = gras_msg_cb_ctx_from(ctx);
+  xbt_socket_t expeditor = gras_msg_cb_ctx_from(ctx);
 
   /* 2. Log which client connected */
   XBT_INFO("Got message PING(%d) from %s:%d",
         msg,
-        gras_socket_peer_name(expeditor),
-        gras_socket_peer_port(expeditor));
+        xbt_socket_peer_name(expeditor),
+        xbt_socket_peer_port(expeditor));
 
   /* 4. Change the value of the msg variable */
   msg = 4321;
@@ -342,7 +342,7 @@ static int server_cb_ping(gras_msg_cb_ctx_t ctx, void *payload_data)
 
 int server(int argc, char *argv[])
 {
-  gras_socket_t mysock;
+  xbt_socket_t mysock;
   server_data_t sdata;
 
   int port = 4001;
@@ -368,13 +368,13 @@ int server(int argc, char *argv[])
   gras_cb_register("raise exception", &server_cb_raise_ex);
   gras_cb_register("kill", &server_cb_kill);
 
-  XBT_INFO("Listening on port %d", gras_socket_my_port(mysock));
+  XBT_INFO("Listening on port %d", xbt_socket_my_port(mysock));
 
   /* 5. Wait for the ping incomming messages */
 
   /** \bug if the server is gone before the forwarder tries to connect,
      it dies awfully with the following message. The problem stands somewhere
-     at the interface between the gras_socket_t and the msg mess. There is thus
+     at the interface between the xbt_socket_t and the msg mess. There is thus
      no way for me to dive into this before this interface is rewritten
 ==15875== Invalid read of size 4
 ==15875==    at 0x408B805: find_port (transport_plugin_sg.c:68)
index 787a6c0..2c63d06 100644 (file)
@@ -91,7 +91,7 @@
 XBT_PUBLIC(void) amok_bw_init(void);
 XBT_PUBLIC(void) amok_bw_exit(void);
 
-XBT_PUBLIC(void) amok_bw_test(gras_socket_t peer,
+XBT_PUBLIC(void) amok_bw_test(xbt_socket_t peer,
                               unsigned long int buf_size,
                               unsigned long int msg_size,
                               unsigned long int msg_amount,
index 0b3e8c6..1f2fd7a 100644 (file)
@@ -61,21 +61,21 @@ XBT_PUBLIC(void) amok_pm_exit(void);
 XBT_PUBLIC(void) amok_pm_mainloop(double timeOut);
 
 XBT_PUBLIC(void) amok_pm_kill_hp(char *name, int port);
-XBT_PUBLIC(void) amok_pm_kill(gras_socket_t buddy);
-XBT_PUBLIC(void) amok_pm_kill_sync(gras_socket_t buddy);
+XBT_PUBLIC(void) amok_pm_kill(xbt_socket_t buddy);
+XBT_PUBLIC(void) amok_pm_kill_sync(xbt_socket_t buddy);
 
 XBT_PUBLIC(xbt_dynar_t) amok_pm_group_new(const char *group_name);
-XBT_PUBLIC(xbt_dynar_t) amok_pm_group_get(gras_socket_t master,
+XBT_PUBLIC(xbt_dynar_t) amok_pm_group_get(xbt_socket_t master,
                                           const char *group_name);
 
-XBT_PUBLIC(int) amok_pm_group_join(gras_socket_t master,
+XBT_PUBLIC(int) amok_pm_group_join(xbt_socket_t master,
                                    const char *group_name);
-XBT_PUBLIC(void) amok_pm_group_leave(gras_socket_t master,
+XBT_PUBLIC(void) amok_pm_group_leave(xbt_socket_t master,
                                      const char *group_name);
 
 
 XBT_PUBLIC(void) amok_pm_group_shutdown(const char *group_name);
-XBT_PUBLIC(void) amok_pm_group_shutdown_remote(gras_socket_t master,
+XBT_PUBLIC(void) amok_pm_group_shutdown_remote(xbt_socket_t master,
                                                const char *group_name);
 
 
index 5e1f083..ba1cd5a 100644 (file)
@@ -18,7 +18,6 @@
 #include <gras/emul.h>
 
 #include <gras/transport.h>
-#include <gras/datadesc.h>
 #include <gras/messages.h>
 #include <gras/timer.h>
 
index 789b622..b71ee1f 100644 (file)
@@ -18,7 +18,7 @@ SG_BEGIN_DECL()
  * 
  *  Emulation and virtualization words have a lot of different meanings in
  *  computer science. Here is what we mean, and what this module allows you
- *  to do (if it does not match your personal belives, I'm sorry):
+ *  to do (if it does not match your personal beliefs, I'm sorry):
  * 
  *  - Virtualization: Having some specific code for the simulation or for the reality
  *  - Emulation: Report within the simulator the execution time of your code
index 5bf5fae..d2595c5 100644 (file)
@@ -10,9 +10,9 @@
 #ifndef GRAS_MESSAGES_H
 #define GRAS_MESSAGES_H
 
-#include "xbt/misc.h"
 #include "gras/transport.h"
-#include "gras/datadesc.h"
+#include "xbt/datadesc.h"
+#include "xbt/socket.h"
 
 SG_BEGIN_DECL()
 
@@ -43,7 +43,7 @@ SG_BEGIN_DECL()
  *
  *  If you absolutely want use a message able to convey several datatypes,
  *  you can always say that it conveys a generic reference (see
- *  \ref gras_datadesc_ref_generic).
+ *  \ref xbt_datadesc_ref_generic).
  * 
  *  In order to ease the upgrade of GRAS applications, it is possible to \e
  *  version the messages, ie to add a version number to the message (by
@@ -60,10 +60,10 @@ SG_BEGIN_DECL()
 typedef struct s_gras_msgtype *gras_msgtype_t;
 
 XBT_PUBLIC(void) gras_msgtype_declare(const char *name,
-                                      gras_datadesc_type_t payload);
+                                      xbt_datadesc_type_t payload);
 XBT_PUBLIC(void) gras_msgtype_declare_v(const char *name,
                                         short int version,
-                                        gras_datadesc_type_t payload);
+                                        xbt_datadesc_type_t payload);
 
 XBT_PUBLIC(gras_msgtype_t) gras_msgtype_by_name(const char *name);
 XBT_PUBLIC(gras_msgtype_t) gras_msgtype_by_name_or_null(const char *name);
@@ -96,7 +96,7 @@ XBT_PUBLIC(void) gras_msgtype_dumpall(void);
 typedef struct s_gras_msg_cb_ctx *gras_msg_cb_ctx_t;
 
 XBT_PUBLIC(void) gras_msg_cb_ctx_free(gras_msg_cb_ctx_t ctx);
-XBT_PUBLIC(gras_socket_t) gras_msg_cb_ctx_from(gras_msg_cb_ctx_t ctx);
+XBT_PUBLIC(xbt_socket_t) gras_msg_cb_ctx_from(gras_msg_cb_ctx_t ctx);
 
   /** \brief Type of message callback functions. 
    *
@@ -157,7 +157,7 @@ XBT_PUBLIC(void) gras_cb_unregister_(gras_msgtype_t msgtype,
  * has to search for the given msgtype in the hash table.
  */
 #define gras_msg_send(sock,name,payload) gras_msg_send_(sock,gras_msgtype_by_name(name),payload)
-XBT_PUBLIC(void) gras_msg_send_(gras_socket_t sock,
+XBT_PUBLIC(void) gras_msg_send_(xbt_socket_t sock,
                                 gras_msgtype_t msgtype, void *payload);
 
 /** \brief Waits for a message to come in over a given socket
@@ -178,7 +178,7 @@ XBT_PUBLIC(void) gras_msg_send_(gras_socket_t sock,
 #define gras_msg_wait(timeout,msgt_want,expeditor,payload) gras_msg_wait_(timeout,gras_msgtype_by_name(msgt_want),expeditor,payload)
 XBT_PUBLIC(void) gras_msg_wait_(double timeout,
                                 gras_msgtype_t msgt_want,
-                                gras_socket_t * expeditor, void *payload);
+                                xbt_socket_t * expeditor, void *payload);
 XBT_PUBLIC(void) gras_msg_handleall(double period);
 XBT_PUBLIC(void) gras_msg_handle(double timeOut);
 
@@ -202,16 +202,16 @@ XBT_PUBLIC(void) gras_msg_handle(double timeOut);
 
 /* declaration */
 XBT_PUBLIC(void) gras_msgtype_declare_rpc(const char *name,
-                                          gras_datadesc_type_t
+                                          xbt_datadesc_type_t
                                           payload_request,
-                                          gras_datadesc_type_t
+                                          xbt_datadesc_type_t
                                           payload_answer);
 
 XBT_PUBLIC(void) gras_msgtype_declare_rpc_v(const char *name,
                                             short int version,
-                                            gras_datadesc_type_t
+                                            xbt_datadesc_type_t
                                             payload_request,
-                                            gras_datadesc_type_t
+                                            xbt_datadesc_type_t
                                             payload_answer);
 
 /* client side */
@@ -220,7 +220,7 @@ XBT_PUBLIC(void) gras_msgtype_declare_rpc_v(const char *name,
  *  @hideinitializer
  */
 #define gras_msg_rpccall(server,timeout,msg,req,ans) gras_msg_rpccall_(server,timeout,gras_msgtype_by_name(msg),req,ans)
-XBT_PUBLIC(void) gras_msg_rpccall_(gras_socket_t server,
+XBT_PUBLIC(void) gras_msg_rpccall_(xbt_socket_t server,
                                    double timeOut,
                                    gras_msgtype_t msgtype,
                                    void *request, void *answer);
@@ -230,7 +230,7 @@ XBT_PUBLIC(gras_msg_cb_ctx_t)
  *  @hideinitializer
  */
 #define gras_msg_rpc_async_call(server,timeout,msg,req) gras_msg_rpc_async_call_(server,timeout,gras_msgtype_by_name(msg),req)
-    gras_msg_rpc_async_call_(gras_socket_t server,
+    gras_msg_rpc_async_call_(xbt_socket_t server,
                          double timeOut,
                          gras_msgtype_t msgtype, void *request);
 XBT_PUBLIC(void) gras_msg_rpc_async_wait(gras_msg_cb_ctx_t ctx,
@@ -278,7 +278,7 @@ typedef enum {
 
 /** @brief Message instance (internal struct) */
 typedef struct {
-  gras_socket_t expe;
+  xbt_socket_t expe;
   e_gras_msg_kind_t kind;
   gras_msgtype_t type;
   unsigned long int ID;
@@ -291,7 +291,7 @@ typedef int (*gras_msg_filter_t) (gras_msg_t msg, void *ctx);
 #define gras_msg_wait_ext(timeout, msg, expe, filter, fctx,got) gras_msg_wait_ext_(timeout, gras_msgtype_by_name(msg), expe, filter, fctx,got)
 XBT_PUBLIC(void) gras_msg_wait_ext_(double timeout,
                                     gras_msgtype_t msgt_want,
-                                    gras_socket_t expe_want,
+                                    xbt_socket_t expe_want,
                                     gras_msg_filter_t filter,
                                     void *filter_ctx, gras_msg_t msg_got);
 
index 0f8f868..cdddc2d 100644 (file)
@@ -11,6 +11,8 @@
 #ifndef GRAS_TRANSPORT_H
 #define GRAS_TRANSPORT_H
 
+#include "xbt/socket.h"
+
 /** \addtogroup GRAS_sock
  *  \brief Socket handling
  *
@@ -21,7 +23,7 @@
  *
  * The main difference is that you cannot exchange arbitrary bytes on
  * sockets, but messages. See the \ref GRAS_msg section for details.
- * 
+ *
  * If you need an example of how to use sockets, check \ref GRAS_ex_ping.
  *
  */
  *
  */
 /* @{*/
-/** \brief Opaque type describing a socket */
-typedef struct s_gras_socket *gras_socket_t;
 
 /** \brief Simply create a client socket (to speak to a remote host) */
-XBT_PUBLIC(gras_socket_t) gras_socket_client(const char *host,
+XBT_PUBLIC(xbt_socket_t) gras_socket_client(const char *host,
                                              unsigned short port);
-XBT_PUBLIC(gras_socket_t) gras_socket_client_from_string(const char *host);
+XBT_PUBLIC(xbt_socket_t) gras_socket_client_from_string(const char *host);
 /** \brief Simply create a server socket (to ear from remote hosts speaking to you) */
-XBT_PUBLIC(gras_socket_t) gras_socket_server(unsigned short port);
-XBT_PUBLIC(void) gras_socket_close(gras_socket_t sd);
+XBT_PUBLIC(xbt_socket_t) gras_socket_server(unsigned short port);
+XBT_PUBLIC(void) gras_socket_close(xbt_socket_t sd);
 XBT_PUBLIC(void) gras_socket_close_voidp(void *sock);
 
 /** \brief Create a client socket, full interface to all relevant settings */
-XBT_PUBLIC(gras_socket_t) gras_socket_client_ext(const char *host,
-                                                 unsigned short port,
-                                                 unsigned long int bufSize,
-                                                 int measurement);
+XBT_PUBLIC(xbt_socket_t) gras_socket_client_ext(const char *host,
+                                                unsigned short port,
+                                                unsigned long int bufSize,
+                                                int measurement);
 /** \brief Create a server socket, full interface to all relevant settings */
-XBT_PUBLIC(gras_socket_t) gras_socket_server_ext(unsigned short port,
-                                                 unsigned long int bufSize,
-                                                 int measurement);
-XBT_PUBLIC(gras_socket_t)
+XBT_PUBLIC(xbt_socket_t) gras_socket_server_ext(unsigned short port,
+                                                unsigned long int bufSize,
+                                                int measurement);
+XBT_PUBLIC(xbt_socket_t)
     gras_socket_server_range(unsigned short minport, unsigned short maxport,
-                         unsigned long int buf_size, int measurement);
-
-/* @}*/
-/** \defgroup GRAS_sock_info Retrieving data about sockets and peers 
- *  \ingroup GRAS_sock
- * 
- * Who are you talking to? 
- */
-/* @{*/
-
-/** Get the port number on which this socket is connected on my side */
-XBT_PUBLIC(int) gras_socket_my_port(gras_socket_t sock);
-/** @brief Get the port number on which this socket is connected on remote side 
- *
- * This is the port declared on remote side with the
- * gras_socket_master() function (if any, or a random number being uniq on 
- * the remote host). If remote used gras_socket_master() more than once, the 
- * lastly declared number will be used here.
- *
- * Note to BSD sockets experts: With BSD sockets, the sockaddr 
- * structure allows you to retrieve the port of the client socket on
- * remote side, but it is of no use (from user perspective, it is
- * some random number above 6000). That is why GRAS sockets differ
- * from BSD ones here. 
- */
-
-XBT_PUBLIC(int) gras_socket_peer_port(gras_socket_t sock);
-/** Get the host name of the remote side */
-XBT_PUBLIC(const char *) gras_socket_peer_name(gras_socket_t sock);
-/** Get the process name of the remote side */
-XBT_PUBLIC(const char *) gras_socket_peer_proc(gras_socket_t sock);
-/* @}*/
-
-/** \defgroup GRAS_sock_meas Using measurement sockets
- *  \ingroup GRAS_sock
- * 
- * You may want to use sockets not to exchange valuable data (in messages), 
- * but to conduct some bandwidth measurements and related experiments. If so, try those measurement sockets.
- * 
- * You can only use those functions on sockets openned with the "measurement" boolean set to true.
- * 
- */
-/* @{*/
-
-
-
-XBT_PUBLIC(int) gras_socket_is_meas(gras_socket_t sock);
-XBT_PUBLIC(void) gras_socket_meas_send(gras_socket_t peer,
-                                       unsigned int timeout,
-                                       unsigned long int msgSize,
-                                       unsigned long int msgAmount);
-XBT_PUBLIC(void) gras_socket_meas_recv(gras_socket_t peer,
-                                       unsigned int timeout,
-                                       unsigned long int msgSize,
-                                       unsigned long int msgAmount);
-XBT_PUBLIC(gras_socket_t) gras_socket_meas_accept(gras_socket_t peer);
+                             unsigned long int buf_size, int measurement);
 
 /* @}*/
 
@@ -125,9 +70,12 @@ XBT_PUBLIC(gras_socket_t) gras_socket_meas_accept(gras_socket_t peer);
  */
 /* @{*/
 /* debuging functions */
-XBT_PUBLIC(gras_socket_t) gras_socket_client_from_file(const char *path);
-XBT_PUBLIC(gras_socket_t) gras_socket_server_from_file(const char *path);
+XBT_PUBLIC(xbt_socket_t) gras_socket_client_from_file(const char *path);
+XBT_PUBLIC(xbt_socket_t) gras_socket_server_from_file(const char *path);
 
 /* @} */
 
+void gras_trp_sg_setup(xbt_trp_plugin_t plug);
+void gras_trp_file_setup(xbt_trp_plugin_t plug);
+
 #endif                          /* GRAS_TRANSPORT_H */
index ec288fe..9502ec7 100644 (file)
@@ -29,6 +29,7 @@
 #include <xbt/parmap.h>
 
 #include <xbt/peer.h>
+#include <xbt/datadesc.h>
 #include <xbt/config.h>
 #include <xbt/cunit.h>
 
similarity index 51%
rename from include/gras/datadesc.h
rename to include/xbt/datadesc.h
index 8523c19..bac0bc3 100644 (file)
@@ -1,4 +1,4 @@
-/* gras/datadesc.h - Describing the data you want to exchange               */
+/* xbt/datadesc.h - Describing the data you want to exchange               */
 
 /* Copyright (c) 2004, 2005, 2006, 2007, 2009, 2010. The SimGrid Team.
  * All rights reserved.                                                     */
@@ -6,99 +6,99 @@
 /* This program is free software; you can redistribute it and/or modify it
  * under the terms of the license (GNU LGPL) which comes with this package. */
 
-#ifndef GRAS_DATADESC_H
-#define GRAS_DATADESC_H
+#ifndef XBT_DATADESC_H
+#define XBT_DATADESC_H
 
 #include "xbt/misc.h"           /* SG_BEGIN_DECL */
 #include "xbt/dynar.h"          /* void_f_pvoid_t */
 
 SG_BEGIN_DECL()
 
-/** @addtogroup GRAS_dd Data description
+/** @addtogroup XBT_dd Data description
  *  @brief Describing data to be exchanged
  *
- * Since GRAS takes care of potential representation conversion when the platform is heterogeneous, 
+ * Since XBT takes care of potential representation conversion when the platform is heterogeneous,
  * any data which transits on the network must be described beforehand.
  * 
- * There is several possible interfaces for this, ranging from the really completely automatic parsing to 
+ * There are several possible interfaces for this, ranging from the really completely automatic parsing to
  * completely manual. Let's study each of them from the simplest to the more advanced:
  * 
- *   - Section \ref GRAS_dd_basic presents how to retrieve and use an already described type.
- *   - Section \ref GRAS_dd_auto shows how to get GRAS parsing your type description automagically. This
+ *   - Section \ref XBT_dd_basic presents how to retrieve and use an already described type.
+ *   - Section \ref XBT_dd_auto shows how to make XBT parse your type description automagically. This
  *     is unfortunately not always possible (only works for some structures), but if it is for your data,
- *     this is definitly the way to go.
- *   - Section \ref GRAS_dd_manual presents how to build a description manually. This is useful when you want
+ *     this is definitely the way to go.
+ *   - Section \ref XBT_dd_manual presents how to build a description manually. This is useful when you want
  *     to describe an array or a pointer of pre-defined structures.
  *   - You sometimes need to exchange informations between descriptions at send or receive time. This is 
  *     for example useful when your structure contains an array which size is given by another field of the 
  *     structure.
- *     - Section \ref GRAS_dd_cb_simple provides a simple interface to do so, allowing to share integers stored on a stack.
- *     - Section \ref GRAS_dd_cb_full provides a full featured interface to do so, but it may reveal somehow difficult to use.
+ *     - Section \ref XBT_dd_cb_simple provides a simple interface to do so, allowing to share integers stored on a stack.
+ *     - Section \ref XBT_dd_cb_full provides a full featured interface to do so, but it may reveal somehow difficult to use.
  **/
-/** @defgroup GRAS_dd_basic Basic operations on data descriptions
- *  @ingroup GRAS_dd
+/** @defgroup XBT_dd_basic Basic operations on data descriptions
+ *  @ingroup XBT_dd
  * \htmlonly <!-- DOXYGEN_NAVBAR_LABEL="Basics" --> \endhtmlonly
  *
  * If you only want to send pre-existing types, simply retrieve the pre-defined description with 
- * the \ref gras_datadesc_by_name function. Existing types entail:
+ * the \ref xbt_datadesc_by_name function. Existing types entail:
  *  - char (both signed and unsigned)
  *  - int (short, regular, long and long long, both signed and unsigned)
  *  - float and double
  *  - string (which is indeed a reference to a dynamically sized array of char, strlen being used to retrieve the size)
  * 
- * Example:\verbatim gras_datadesc_type_t i = gras_datadesc_by_name("int");
gras_datadesc_type_t uc = gras_datadesc_by_name("unsigned char");
gras_datadesc_type_t str = gras_datadesc_by_name("string");\endverbatim
+ * Example:\verbatim xbt_datadesc_type_t i = xbt_datadesc_by_name("int");
xbt_datadesc_type_t uc = xbt_datadesc_by_name("unsigned char");
xbt_datadesc_type_t str = xbt_datadesc_by_name("string");\endverbatim
  *
  */
 /* @{ */
 /** @brief Opaque type describing a type description. */
-typedef struct s_gras_datadesc_type *gras_datadesc_type_t;
+typedef struct s_xbt_datadesc_type *xbt_datadesc_type_t;
 
 /** \brief Search a type description from its name */
-XBT_PUBLIC(gras_datadesc_type_t) gras_datadesc_by_name(const char *name);
-XBT_PUBLIC(gras_datadesc_type_t) gras_datadesc_by_name_or_null(const char
+XBT_PUBLIC(xbt_datadesc_type_t) xbt_datadesc_by_name(const char *name);
+XBT_PUBLIC(xbt_datadesc_type_t) xbt_datadesc_by_name_or_null(const char
                                                                *name);
 
 /* @} */
 
-/** @defgroup GRAS_dd_auto Automatic parsing of data descriptions
- *  @ingroup GRAS_dd
+/** @defgroup XBT_dd_auto Automatic parsing of data descriptions
+ *  @ingroup XBT_dd
  * \htmlonly <!-- DOXYGEN_NAVBAR_LABEL="Automatic parsing" --> \endhtmlonly
  * 
- *  If you need to declare a new datatype, this is the simplest way to describe it to GRAS. Simply
- *  enclose its type definition  into a \ref GRAS_DEFINE_TYPE macro call, and you're set. Here is 
- *  an type declaration  example: \verbatim GRAS_DEFINE_TYPE(mytype,struct mytype {
+ *  If you need to declare a new datatype, this is the simplest way to describe it to XBT. Simply
+ *  enclose its type definition  into a \ref XBT_DEFINE_TYPE macro call, and you're set. Here is 
+ *  an type declaration  example: \verbatim XBT_DEFINE_TYPE(mytype,struct mytype {
    int myfirstfield;
    char mysecondfield;
  });\endverbatim
  *  The type is then both copied verbatim into your source file and stored for further parsing. This allows
- *  you to let GRAS parse the exact version you are actually using in your program.
- *  You can then retrieve the corresponding type description with \ref gras_datadesc_by_symbol.
+ *  you to let XBT parse the exact version you are actually using in your program.
+ *  You can then retrieve the corresponding type description with \ref xbt_datadesc_by_symbol.
  *  Don't worry too much for the performances, the type is only parsed once and a binary representation 
  *  is stored and used in any subsequent calls.
  * 
- *  If your structure contains any pointer, you have to explain GRAS the size of the pointed array. This
+ *  If your structure contains any pointer, you have to explain XBT the size of the pointed array. This
  *  can be 1 in the case of simple references, or more in the case of regular arrays. For that, use the 
- *  \ref GRAS_ANNOTE macro within the type declaration you are passing to \ref GRAS_DEFINE_TYPE. This macro
+ *  \ref XBT_ANNOTE macro within the type declaration you are passing to \ref XBT_DEFINE_TYPE. This macro
  *  rewrites itself to nothing in the declaration (so they won't pollute the type definition copied verbatim
- *  into your code), and give some information to GRAS about your pointer. 
+ *  into your code), and give some information to XBT about your pointer. 
  
- *  GRAS_ANNOTE takes two arguments being the key name and the key value. For now, the only accepted key name 
+ *  XBT_ANNOTE takes two arguments being the key name and the key value. For now, the only accepted key name 
  *  is "size", to specify the length of the pointed array. It can either be:
  *    - the string "1" (without the quote),
  *    - the name of another field of the structure
  *    - a sort of computed expression for multidimensional arrays (see below -- pay attention to the warnings below).
  *  
- *  Here is an example:\verbatim GRAS_DEFINE_TYPE(s_clause,
+ *  Here is an example:\verbatim XBT_DEFINE_TYPE(s_clause,
   struct s_array {
     xbt_string_t name;
-    struct s_array *father GRAS_ANNOTE(size,1);
+    struct s_array *father XBT_ANNOTE(size,1);
     int length;
-    int *data GRAS_ANNOTE(size,length);
+    int *data XBT_ANNOTE(size,length);
     int rows;
     int cols;
-    int *matrix GRAS_ANNOTE(size,rows*cols);
+    int *matrix XBT_ANNOTE(size,rows*cols);
  }
 ;)\endverbatim
  * It specifies that the structure s_array contains six fields, that the \a name field is a classical null-terminated 
@@ -106,65 +106,65 @@ XBT_PUBLIC(gras_datadesc_type_t) gras_datadesc_by_name_or_null(const char
  * that \a father field is a simple reference, that the size of the array pointed by \a data is the \a length field, and that the 
  * \a matrix field is an arraywhich size is the result of \a rows times \a cols.
  *
- *  \warning Since GRAS_DEFINE_TYPE is a macro, you shouldn't put any comma in your type definition 
+ *  \warning Since XBT_DEFINE_TYPE is a macro, you shouldn't put any comma in your type definition 
  *  (comma separates macro args). For example, change \verbatim int a, b;\endverbatim to \verbatim int a;
 int b;\endverbatim
  * 
- * \section gras_dd_define \#define and fixed size array
+ * \section xbt_dd_define \#define and fixed size array
  *
  * If you want to exchange arrays which size is given at compilation time by a
- * \#defined constant, you need to keep GRAS informed. It would be done the
+ * \#defined constant, you need to keep XBT informed. It would be done the
  * following way:
 
 \verbatim #define BLOCK_SIZE 32
-GRAS_DEFINE_TYPE(s_toto,
+XBT_DEFINE_TYPE(s_toto,
 struct {
   double data[BLOCK_SIZE];
 } s_toto;)
 
 void register_messages() { 
-  gras_datadesc_type_t toto_type;
+  xbt_datadesc_type_t toto_type;
 
-  gras_datadesc_set_const("BLOCK_SIZE",BLOCK_SIZE);
-  toto_type = gras_datadesc_by_symbol(s_toto); 
+  xbt_datadesc_set_const("BLOCK_SIZE",BLOCK_SIZE);
+  toto_type = xbt_datadesc_by_symbol(s_toto);
 }\endverbatim
  *
- * The form <tt>gras_datadesc_set_const("BLOCK_SIZE",BLOCK_SIZE);</tt> ensures
- * that when you change the definition of the constant, GRAS keeps informed of
+ * The form <tt>xbt_datadesc_set_const("BLOCK_SIZE",BLOCK_SIZE);</tt> ensures
+ * that when you change the definition of the constant, XBT keeps informed of
  * the right value. Passing the numerical value of the constant as second
  * argument would be a bad idea to that regard. Of course, the call to
- * gras_datadesc_set_const() should come before any gras_datadesc_by_symbol()
+ * xbt_datadesc_set_const() should come before any xbt_datadesc_by_symbol()
  * containing references to it.
  *
- * \section GRAS_dd_multidim Defining multidimentional arrays
+ * \section XBT_dd_multidim Defining multidimentional arrays
  * 
- *  The mecanism for multidimensional arrays is known to be fragile and cumbersome. If you want to use it, 
+ *  The mecanism for multidimensional arrays is known to be fragile and cumbersome. If you want to use it,
  *  you have to understand how it is implemented: the multiplication is performed using the sizes stack. In previous example,
- *  a \ref gras_datadesc_cb_push_int callback is added to the \a rows field and a \ref gras_datadesc_cb_push_int_mult one is 
- *  added to \a cols. So, when the structure is sent, the \a rows field push its value onto the stack, then the \a cols field 
+ *  a \ref xbt_datadesc_cb_push_int callback is added to the \a rows field and a \ref xbt_datadesc_cb_push_int_mult one is
+ *  added to \a cols. So, when the structure is sent, the \a rows field push its value onto the stack, then the \a cols field
  *  retrieve this value from the stack, compute (and push) the multiplication value. The \a matrix field can then retrieve this
  *  value by poping the array. There is several ways for this to go wrong:
- *   - if the matrix field is placed before the sizes, the right value won't get pushed into the stack soon enough. 
+ *   - if the matrix field is placed before the sizes, the right value won't get pushed into the stack soon enough.
  *     Reorder your structure fields if needed.
- *   - if you write GRAS_ANNOTE(size,cols*rows); in previous example (inverting rows and cols in annotation),
- *     \a rows will be given a \ref gras_datadesc_cb_push_int_mult. This cannot work since it will try to 
+ *   - if you write XBT_ANNOTE(size,cols*rows); in previous example (inverting rows and cols in annotation),
+ *     \a rows will be given a \ref xbt_datadesc_cb_push_int_mult. This cannot work since it will try to
  *     pop the value which will be pushed by \a cols <i>afterward</i>.
  *   - if you have more than one matrix in your structure, don't interleave the size. They are pushed/poped in the structure order.
- *   - if some of the sizes are used in more than one matrix, you cannot use this mecanism -- sorry. 
+ *   - if some of the sizes are used in more than one matrix, you cannot use this mecanism -- sorry.
  *
- * If you cannot express your datadescs with this mechanism, you'll have to use the more advanced 
- * (and somehow complex) one described in the \ref GRAS_dd_cb_full.
+ * If you cannot express your datadescs with this mechanism, you'll have to use the more advanced
+ * (and somehow complex) one described in the \ref XBT_dd_cb_full.
  *
- * \section GRAS_dd_multifile Projects spanning over multiple files
+ * \section XBT_dd_multifile Projects spanning over multiple files
  * 
- * GRAS_DEFINE_TYPE declares some symbols to work, it needs some special
+ * XBT_DEFINE_TYPE declares some symbols to work, it needs some special
  * care when used in several files. In such case, you want the regular type
- * definition in all files, but the gras specific symbol defined in only
- * one file. For example, consider the following gras project sketch.
+ * definition in all files, but the xbt specific symbol defined in only
+ * one file. For example, consider the following xbt project sketch.
  * 
-\verbatim #include <gras.h>
+\verbatim #include <xbt/datadesc.h>
 
-GRAS_DEFINE_TYPE(my_type,struct my_type {
+XBT_DEFINE_TYPE(my_type,struct my_type {
   int a;
   int b;
   double c;
@@ -179,10 +179,10 @@ int server(int argc, char *argv[]) {
 }\endverbatim
  * 
  * If you want to split this in two files (one for each kind of processes),
- * you need to put the GRAS_DEFINE_TYPE block in a separate header (so that
+ * you need to put the XBT_DEFINE_TYPE block in a separate header (so that
  * each process kind see the associated C type definition). But
  * then you cannot include this right away in all files because the extra
- * symbols containing the GRAS definition would be dupplicated.
+ * symbols containing the XBT definition would be dupplicated.
  * 
  * You thus have to decide in which C file the symbols will live. In that
  * file, include the header without restriction:
@@ -193,11 +193,12 @@ int client(int argc, char *argv[]) {
   ...
 }\endverbatim
 
- * And in the other files needing the C definitions without the extra GRAS
- * symbols, declare the symbol GRAS_DEFINE_TYPE_EXTERN before loading gras.h:
+ * And in the other files needing the C definitions without the extra XBT
+ * symbols, declare the symbol XBT_DEFINE_TYPE_EXTERN before loading
+ * xbt/datadesc.h:
  * 
-\verbatim #define GRAS_DEFINE_TYPE_EXTERN
-#include <gras.h>
+\verbatim #define XBT_DEFINE_TYPE_EXTERN
+#include <xbt/datadesc.h>
 #include "my_header.h"
 
 int server(int argc, char *argv[]) {
@@ -209,7 +210,7 @@ int server(int argc, char *argv[]) {
  * messages that you want to see from every file, and some private messages 
  * that you want to be defined only in one C file.
  * In that case, use the previous trick for common messages, and use 
- * #GRAS_DEFINE_TYPE_LOCAL for the private messages. 
+ * #XBT_DEFINE_TYPE_LOCAL for the private messages.
  *
  * For now, there is no way to have semi-private symbols (for example shared 
  * in all files of a library), sorry. Use functions as interface to your 
@@ -222,60 +223,60 @@ int server(int argc, char *argv[]) {
 /**   @brief Automatically parse C code
  *    @hideinitializer
  */
-#define GRAS_DEFINE_TYPE(name,def) \
-  const char * _gras_this_type_symbol_does_not_exist__##name=#def; def
+#define XBT_DEFINE_TYPE(name,def) \
+  const char * _xbt_this_type_symbol_does_not_exist__##name=#def; def
 
 #ifndef DOXYGEN_SKIP            /* doxygen don't like macro fun too much */
-#  ifdef GRAS_DEFINE_TYPE_EXTERN
-#    undef  GRAS_DEFINE_TYPE
-#    define GRAS_DEFINE_TYPE(name,def)  def
-#    undef GRAS_DEFINE_TYPE_EXTERN
+#  ifdef XBT_DEFINE_TYPE_EXTERN
+#    undef  XBT_DEFINE_TYPE
+#    define XBT_DEFINE_TYPE(name,def)  def
+#    undef XBT_DEFINE_TYPE_EXTERN
 #  endif
 #endif
 
-/**   @brief if this symbol is defined, the \a GRAS_DEFINE_TYPE symbols live in another file.
+/**   @brief if this symbol is defined, the \a XBT_DEFINE_TYPE symbols live in another file.
  *    @hideinitializer
  */
-#define GRAS_DEFINE_TYPE_EXTERN 1
+#define XBT_DEFINE_TYPE_EXTERN 1
 /* leave the fun of declaring this to the user */
-#undef GRAS_DEFINE_TYPE_EXTERN
+#undef XBT_DEFINE_TYPE_EXTERN
 
-/** @brief Define a symbol to be automatically parsed, disregarding #GRAS_DEFINE_TYPE_EXTERN
+/** @brief Define a symbol to be automatically parsed, disregarding #XBT_DEFINE_TYPE_EXTERN
  *  @hideinitializer
  * 
- *  Call this macro instead of #GRAS_DEFINE_TYPE if you had to define #GRAS_DEFINE_TYPE_EXTERN
+ *  Call this macro instead of #XBT_DEFINE_TYPE if you had to define #XBT_DEFINE_TYPE_EXTERN
  *  to load some external symbols, but if you now want to automatically parse the content of 
  *  your private messages.
  */
-#define GRAS_DEFINE_TYPE_LOCAL(name, def) \
-  const char * _gras_this_type_symbol_does_not_exist__##name=#def; def
+#define XBT_DEFINE_TYPE_LOCAL(name, def) \
+  const char * _xbt_this_type_symbol_does_not_exist__##name=#def; def
 
 /** @brief Retrieve a datadesc which was previously parsed 
  *  @hideinitializer
  */
-#define gras_datadesc_by_symbol(name)  \
-  (gras_datadesc_by_name_or_null(#name) ?      \
-   gras_datadesc_by_name_or_null(#name) :      \
-     gras_datadesc_parse(#name,        \
-                        _gras_this_type_symbol_does_not_exist__##name) \
+#define xbt_datadesc_by_symbol(name)  \
+  (xbt_datadesc_by_name_or_null(#name) ?      \
+   xbt_datadesc_by_name_or_null(#name) :      \
+     xbt_datadesc_parse(#name,        \
+                        _xbt_this_type_symbol_does_not_exist__##name) \
   )
 
-/** @def GRAS_ANNOTE
+/** @def XBT_ANNOTE
  *  @brief Add an annotation to a type to be automatically parsed
  */
-#define GRAS_ANNOTE(key,val)
+#define XBT_ANNOTE(key,val)
 
 /** @brief Defines the value of a define to the datatype parsing infrastructure
  */
-XBT_PUBLIC(void) gras_datadesc_set_const(const char *name, int value);
+XBT_PUBLIC(void) xbt_datadesc_set_const(const char *name, int value);
 
 /* @} */
 
-XBT_PUBLIC(gras_datadesc_type_t)
-    gras_datadesc_parse(const char *name, const char *C_statement);
+XBT_PUBLIC(xbt_datadesc_type_t)
+    xbt_datadesc_parse(const char *name, const char *C_statement);
 
-/** @defgroup GRAS_dd_manual Simple manual data description
- *  @ingroup GRAS_dd
+/** @defgroup XBT_dd_manual Simple manual data description
+ *  @ingroup XBT_dd
  * 
  * Here are the functions to use if you want to declare your description manually. 
  * The function names should be self-explanatory in most cases.
@@ -288,7 +289,7 @@ XBT_PUBLIC(gras_datadesc_type_t)
  * specific callback for the string type which is in charge of computing the length of the char
  * array. This is done with the cbps mechanism, explained in next section.
  * 
- * If your types may contain pointer cycle, you must specify it to GRAS using the @ref gras_datadesc_cycle_set. 
+ * If your types may contain pointer cycle, you must specify it to XBT using the @ref xbt_datadesc_cycle_set.
  * 
  * Example:\verbatim
  typedef struct {
@@ -298,32 +299,32 @@ XBT_PUBLIC(gras_datadesc_type_t)
    unsigned long int l2;
  } mystruct;
  [...]
-  my_type=gras_datadesc_struct("mystruct");
-  gras_datadesc_struct_append(my_type,"c1", gras_datadesc_by_name("unsigned char"));
-  gras_datadesc_struct_append(my_type,"l1", gras_datadesc_by_name("unsigned long"));
-  gras_datadesc_struct_append(my_type,"c2", gras_datadesc_by_name("unsigned char"));
-  gras_datadesc_struct_append(my_type,"l2", gras_datadesc_by_name("unsigned long int"));
-  gras_datadesc_struct_close(my_type);
-
-  my_type=gras_datadesc_ref("mystruct*", gras_datadesc_by_name("mystruct"));
-  
+  my_type=xbt_datadesc_struct("mystruct");
+  xbt_datadesc_struct_append(my_type,"c1", xbt_datadesc_by_name("unsigned char"));
+  xbt_datadesc_struct_append(my_type,"l1", xbt_datadesc_by_name("unsigned long"));
+  xbt_datadesc_struct_append(my_type,"c2", xbt_datadesc_by_name("unsigned char"));
+  xbt_datadesc_struct_append(my_type,"l2", xbt_datadesc_by_name("unsigned long int"));
+  xbt_datadesc_struct_close(my_type);
+
+  my_type=xbt_datadesc_ref("mystruct*", xbt_datadesc_by_name("mystruct"));
+
   [Use my_type to send pointers to mystruct data]\endverbatim
  */
 /* @{ */
 
 
 /** \brief Opaque type describing a type description callback persistant state. */
-typedef struct s_gras_cbps *gras_cbps_t;
+typedef struct s_xbt_cbps *xbt_cbps_t;
 
 /* callbacks prototypes */
 /** \brief Prototype of type callbacks returning nothing. */
-typedef void (*gras_datadesc_type_cb_void_t) (gras_datadesc_type_t
-                                              typedesc, gras_cbps_t vars,
+typedef void (*xbt_datadesc_type_cb_void_t) (xbt_datadesc_type_t
+                                              typedesc, xbt_cbps_t vars,
                                               void *data);
 /** \brief Prototype of type callbacks returning an int. */
-typedef int (*gras_datadesc_type_cb_int_t) (gras_datadesc_type_t
-                                            typedesc, gras_cbps_t vars,
-                                            void *data);
+typedef int (*xbt_datadesc_type_cb_int_t) (xbt_datadesc_type_t
+                                           typedesc, xbt_cbps_t vars,
+                                           void *data);
 /** \brief Prototype of type callbacks selecting a type. */
 typedef
 
@@ -331,9 +332,9 @@ typedef
 
 
 
-gras_datadesc_type_t(*gras_datadesc_selector_t) (gras_datadesc_type_t
+xbt_datadesc_type_t(*xbt_datadesc_selector_t) (xbt_datadesc_type_t
                                                  typedesc,
-                                                 gras_cbps_t vars,
+                                                 xbt_cbps_t vars,
                                                  void *data);
 
 
@@ -341,49 +342,49 @@ gras_datadesc_type_t(*gras_datadesc_selector_t) (gras_datadesc_type_t
  **** Declare datadescription yourself ****
  ******************************************/
 
-XBT_PUBLIC(gras_datadesc_type_t) gras_datadesc_struct(const char *name);
-XBT_PUBLIC(void) gras_datadesc_struct_append(gras_datadesc_type_t
+XBT_PUBLIC(xbt_datadesc_type_t) xbt_datadesc_struct(const char *name);
+XBT_PUBLIC(void) xbt_datadesc_struct_append(xbt_datadesc_type_t
                                              struct_type, const char *name,
-                                             gras_datadesc_type_t
+                                             xbt_datadesc_type_t
                                              field_type);
-XBT_PUBLIC(void) gras_datadesc_struct_close(gras_datadesc_type_t
+XBT_PUBLIC(void) xbt_datadesc_struct_close(xbt_datadesc_type_t
                                             struct_type);
 
 
-XBT_PUBLIC(gras_datadesc_type_t) gras_datadesc_union(const char *name,
-                                                     gras_datadesc_type_cb_int_t
+XBT_PUBLIC(xbt_datadesc_type_t) xbt_datadesc_union(const char *name,
+                                                     xbt_datadesc_type_cb_int_t
                                                      selector);
-XBT_PUBLIC(void) gras_datadesc_union_append(gras_datadesc_type_t
+XBT_PUBLIC(void) xbt_datadesc_union_append(xbt_datadesc_type_t
                                             union_type, const char *name,
-                                            gras_datadesc_type_t
+                                            xbt_datadesc_type_t
                                             field_type);
-XBT_PUBLIC(void) gras_datadesc_union_close(gras_datadesc_type_t
+XBT_PUBLIC(void) xbt_datadesc_union_close(xbt_datadesc_type_t
                                            union_type);
 
 
-XBT_PUBLIC(gras_datadesc_type_t)
-    gras_datadesc_ref(const char *name, gras_datadesc_type_t referenced_type);
-XBT_PUBLIC(gras_datadesc_type_t)
-    gras_datadesc_copy(const char *name, gras_datadesc_type_t copied_type);
-XBT_PUBLIC(gras_datadesc_type_t)
-    gras_datadesc_ref_generic(const char *name,
-                          gras_datadesc_selector_t selector);
+XBT_PUBLIC(xbt_datadesc_type_t)
+    xbt_datadesc_ref(const char *name, xbt_datadesc_type_t referenced_type);
+XBT_PUBLIC(xbt_datadesc_type_t)
+    xbt_datadesc_copy(const char *name, xbt_datadesc_type_t copied_type);
+XBT_PUBLIC(xbt_datadesc_type_t)
+    xbt_datadesc_ref_generic(const char *name,
+                          xbt_datadesc_selector_t selector);
 
-XBT_PUBLIC(gras_datadesc_type_t)
-    gras_datadesc_array_fixed(const char *name,
-                          gras_datadesc_type_t element_type,
+XBT_PUBLIC(xbt_datadesc_type_t)
+    xbt_datadesc_array_fixed(const char *name,
+                          xbt_datadesc_type_t element_type,
                           long int fixed_size);
-XBT_PUBLIC(gras_datadesc_type_t)
-    gras_datadesc_array_dyn(const char *name,
-                        gras_datadesc_type_t element_type,
-                        gras_datadesc_type_cb_int_t dynamic_size);
-XBT_PUBLIC(gras_datadesc_type_t)
-    gras_datadesc_ref_pop_arr(gras_datadesc_type_t element_type);
-
-XBT_PUBLIC(gras_datadesc_type_t)
-    gras_datadesc_dynar(gras_datadesc_type_t elm_t, void_f_pvoid_t free_func);
-XBT_PUBLIC(gras_datadesc_type_t)
-    gras_datadesc_matrix(gras_datadesc_type_t elm_t,
+XBT_PUBLIC(xbt_datadesc_type_t)
+    xbt_datadesc_array_dyn(const char *name,
+                        xbt_datadesc_type_t element_type,
+                        xbt_datadesc_type_cb_int_t dynamic_size);
+XBT_PUBLIC(xbt_datadesc_type_t)
+    xbt_datadesc_ref_pop_arr(xbt_datadesc_type_t element_type);
+
+XBT_PUBLIC(xbt_datadesc_type_t)
+    xbt_datadesc_dynar(xbt_datadesc_type_t elm_t, void_f_pvoid_t free_func);
+XBT_PUBLIC(xbt_datadesc_type_t)
+    xbt_datadesc_matrix(xbt_datadesc_type_t elm_t,
                      void_f_pvoid_t const free_f);
 
 /*********************************
@@ -391,46 +392,46 @@ XBT_PUBLIC(gras_datadesc_type_t)
  *********************************/
 
 /** \brief Specify that this type may contain cycles */
-XBT_PUBLIC(void) gras_datadesc_cycle_set(gras_datadesc_type_t type);
+XBT_PUBLIC(void) xbt_datadesc_cycle_set(xbt_datadesc_type_t type);
 /** \brief Specify that this type do not contain any cycles (default) */
-XBT_PUBLIC(void) gras_datadesc_cycle_unset(gras_datadesc_type_t type);
+XBT_PUBLIC(void) xbt_datadesc_cycle_unset(xbt_datadesc_type_t type);
 /** \brief Add a pre-send callback to this datadesc. */
-XBT_PUBLIC(void) gras_datadesc_cb_send(gras_datadesc_type_t type,
-                                       gras_datadesc_type_cb_void_t pre);
+XBT_PUBLIC(void) xbt_datadesc_cb_send(xbt_datadesc_type_t type,
+                                      xbt_datadesc_type_cb_void_t pre);
 /** \brief Add a post-receive callback to this datadesc.*/
-XBT_PUBLIC(void) gras_datadesc_cb_recv(gras_datadesc_type_t type,
-                                       gras_datadesc_type_cb_void_t post);
+XBT_PUBLIC(void) xbt_datadesc_cb_recv(xbt_datadesc_type_t type,
+                                      xbt_datadesc_type_cb_void_t post);
 /** \brief Add a pre-send callback to the given field of the datadesc */
-XBT_PUBLIC(void) gras_datadesc_cb_field_send(gras_datadesc_type_t type,
-                                             const char *field_name,
-                                             gras_datadesc_type_cb_void_t
-                                             pre);
+XBT_PUBLIC(void) xbt_datadesc_cb_field_send(xbt_datadesc_type_t type,
+                                            const char *field_name,
+                                            xbt_datadesc_type_cb_void_t
+                                            pre);
 /** \brief Add a post-receive callback to the given field of the datadesc */
-XBT_PUBLIC(void) gras_datadesc_cb_field_recv(gras_datadesc_type_t type,
-                                             const char *field_name,
-                                             gras_datadesc_type_cb_void_t
-                                             post);
+XBT_PUBLIC(void) xbt_datadesc_cb_field_recv(xbt_datadesc_type_t type,
+                                            const char *field_name,
+                                            xbt_datadesc_type_cb_void_t
+                                            post);
 /** \brief Add a pre-send callback to the given field resulting in its value to be pushed */
-XBT_PUBLIC(void) gras_datadesc_cb_field_push(gras_datadesc_type_t type,
-                                             const char *field_name);
+XBT_PUBLIC(void) xbt_datadesc_cb_field_push(xbt_datadesc_type_t type,
+                                            const char *field_name);
 /** \brief Add a pre-send callback to the given field resulting in its value multiplied to any previously pushed value and then pushed back */
 XBT_PUBLIC(void)
-gras_datadesc_cb_field_push_multiplier(gras_datadesc_type_t type,
-                                       const char
-                                       *field_name);
+xbt_datadesc_cb_field_push_multiplier(xbt_datadesc_type_t type,
+                                      const char
+                                      *field_name);
 
 /******************************
  * Get stuff within datadescs *
  ******************************/
 /** \brief Returns the name of a datadescription */
-XBT_PUBLIC(const char *) gras_datadesc_get_name(gras_datadesc_type_t ddt);
+XBT_PUBLIC(const char *) xbt_datadesc_get_name(xbt_datadesc_type_t ddt);
 /** \brief Returns the identifier of a datadescription */
-XBT_PUBLIC(int) gras_datadesc_get_id(gras_datadesc_type_t ddt);
+XBT_PUBLIC(int) xbt_datadesc_get_id(xbt_datadesc_type_t ddt);
 
 /* @} */
 
-/** @defgroup GRAS_dd_cb_simple Data description with Callback Persistant State: Simple push/pop mechanism
- *  @ingroup GRAS_dd
+/** @defgroup XBT_dd_cb_simple Data description with Callback Persistant State: Simple push/pop mechanism
+ *  @ingroup XBT_dd
  * 
  * Sometimes, one of the callbacks need to leave information for the next ones. If this is a simple integer (such as
  * an array size), you can use the functions described here. If not, you'll have to play with the complete cbps interface.
@@ -443,13 +444,13 @@ struct s_array {
   int *data;
 }
 [...]
-my_type=gras_datadesc_struct("s_array");
-gras_datadesc_struct_append(my_type,"length", gras_datadesc_by_name("int"));
-gras_datadesc_cb_field_send (my_type, "length", gras_datadesc_cb_push_int);
+my_type=xbt_datadesc_struct("s_array");
+xbt_datadesc_struct_append(my_type,"length", xbt_datadesc_by_name("int"));
+xbt_datadesc_cb_field_send (my_type, "length", xbt_datadesc_cb_push_int);
 
-gras_datadesc_struct_append(my_type,"data",
-                            gras_datadesc_array_dyn ("s_array::data",gras_datadesc_by_name("int"), gras_datadesc_cb_pop));
-gras_datadesc_struct_close(my_type);
+xbt_datadesc_struct_append(my_type,"data",
+                            xbt_datadesc_array_dyn ("s_array::data",xbt_datadesc_by_name("int"), xbt_datadesc_cb_pop));
+xbt_datadesc_struct_close(my_type);
 \endverbatim
 
  *
@@ -462,56 +463,56 @@ struct s_matrix {
   int *data;
 }
 [...]
-my_type=gras_datadesc_struct("s_matrix");
-gras_datadesc_struct_append(my_type,"row", gras_datadesc_by_name("int"));
-gras_datadesc_cb_field_send (my_type, "length", gras_datadesc_cb_push_int);
-gras_datadesc_struct_append(my_type,"col", gras_datadesc_by_name("int"));
-gras_datadesc_cb_field_send (my_type, "length", gras_datadesc_cb_push_int_mult);
-
-gras_datadesc_struct_append(my_type,"data",
-                            gras_datadesc_array_dyn ("s_matrix::data",gras_datadesc_by_name("int"), gras_datadesc_cb_pop));
-gras_datadesc_struct_close(my_type);
+my_type=xbt_datadesc_struct("s_matrix");
+xbt_datadesc_struct_append(my_type,"row", xbt_datadesc_by_name("int"));
+xbt_datadesc_cb_field_send (my_type, "length", xbt_datadesc_cb_push_int);
+xbt_datadesc_struct_append(my_type,"col", xbt_datadesc_by_name("int"));
+xbt_datadesc_cb_field_send (my_type, "length", xbt_datadesc_cb_push_int_mult);
+
+xbt_datadesc_struct_append(my_type,"data",
+                            xbt_datadesc_array_dyn ("s_matrix::data",xbt_datadesc_by_name("int"), xbt_datadesc_cb_pop));
+xbt_datadesc_struct_close(my_type);
 \endverbatim
  
  */
 /* @{ */
 
-XBT_PUBLIC(void) gras_cbps_i_push(gras_cbps_t ps, int val);
-XBT_PUBLIC(int) gras_cbps_i_pop(gras_cbps_t ps);
+XBT_PUBLIC(void) xbt_cbps_i_push(xbt_cbps_t ps, int val);
+XBT_PUBLIC(int) xbt_cbps_i_pop(xbt_cbps_t ps);
 
-XBT_PUBLIC(int) gras_datadesc_cb_pop(gras_datadesc_type_t typedesc,
-                                     gras_cbps_t vars, void *data);
+XBT_PUBLIC(int) xbt_datadesc_cb_pop(xbt_datadesc_type_t typedesc,
+                                     xbt_cbps_t vars, void *data);
 
-XBT_PUBLIC(void) gras_datadesc_cb_push_int(gras_datadesc_type_t typedesc,
-                                           gras_cbps_t vars, void *data);
-XBT_PUBLIC(void) gras_datadesc_cb_push_uint(gras_datadesc_type_t typedesc,
-                                            gras_cbps_t vars, void *data);
-XBT_PUBLIC(void) gras_datadesc_cb_push_lint(gras_datadesc_type_t typedesc,
-                                            gras_cbps_t vars, void *data);
-XBT_PUBLIC(void) gras_datadesc_cb_push_ulint(gras_datadesc_type_t typedesc,
-                                             gras_cbps_t vars, void *data);
+XBT_PUBLIC(void) xbt_datadesc_cb_push_int(xbt_datadesc_type_t typedesc,
+                                           xbt_cbps_t vars, void *data);
+XBT_PUBLIC(void) xbt_datadesc_cb_push_uint(xbt_datadesc_type_t typedesc,
+                                            xbt_cbps_t vars, void *data);
+XBT_PUBLIC(void) xbt_datadesc_cb_push_lint(xbt_datadesc_type_t typedesc,
+                                            xbt_cbps_t vars, void *data);
+XBT_PUBLIC(void) xbt_datadesc_cb_push_ulint(xbt_datadesc_type_t typedesc,
+                                             xbt_cbps_t vars, void *data);
 
-XBT_PUBLIC(void) gras_datadesc_cb_push_int_mult(gras_datadesc_type_t
-                                                typedesc, gras_cbps_t vars,
+XBT_PUBLIC(void) xbt_datadesc_cb_push_int_mult(xbt_datadesc_type_t
+                                                typedesc, xbt_cbps_t vars,
                                                 void *data);
-XBT_PUBLIC(void) gras_datadesc_cb_push_uint_mult(gras_datadesc_type_t
+XBT_PUBLIC(void) xbt_datadesc_cb_push_uint_mult(xbt_datadesc_type_t
                                                  typedesc,
-                                                 gras_cbps_t vars,
+                                                 xbt_cbps_t vars,
                                                  void *data);
-XBT_PUBLIC(void) gras_datadesc_cb_push_lint_mult(gras_datadesc_type_t
+XBT_PUBLIC(void) xbt_datadesc_cb_push_lint_mult(xbt_datadesc_type_t
                                                  typedesc,
-                                                 gras_cbps_t vars,
+                                                 xbt_cbps_t vars,
                                                  void *data);
-XBT_PUBLIC(void) gras_datadesc_cb_push_ulint_mult(gras_datadesc_type_t
+XBT_PUBLIC(void) xbt_datadesc_cb_push_ulint_mult(xbt_datadesc_type_t
                                                   typedesc,
-                                                  gras_cbps_t vars,
+                                                  xbt_cbps_t vars,
                                                   void *data);
 
 
 /* @} */
 
-/** @defgroup GRAS_dd_cb_full Data description with Callback Persistant State: Full featured interface
- *  @ingroup GRAS_dd
+/** @defgroup XBT_dd_cb_full Data description with Callback Persistant State: Full featured interface
+ *  @ingroup XBT_dd
  * 
  * Sometimes, one of the callbacks need to leave information for the next
  * ones. If the simple push/pop mechanism introduced in previous section
@@ -524,21 +525,21 @@ XBT_PUBLIC(void) gras_datadesc_cb_push_ulint_mult(gras_datadesc_type_t
 
 /* @{ */
 
-XBT_PUBLIC(void) gras_cbps_v_pop(gras_cbps_t ps, const char *name,
-                                 /* OUT */ gras_datadesc_type_t * ddt,
+XBT_PUBLIC(void) xbt_cbps_v_pop(xbt_cbps_t ps, const char *name,
+                                 /* OUT */ xbt_datadesc_type_t * ddt,
                                  /* OUT */ void **res);
-XBT_PUBLIC(void) gras_cbps_v_push(gras_cbps_t ps,
+XBT_PUBLIC(void) xbt_cbps_v_push(xbt_cbps_t ps,
                                   const char *name,
-                                  void *data, gras_datadesc_type_t ddt);
-XBT_PUBLIC(void) gras_cbps_v_set(gras_cbps_t ps,
+                                  void *data, xbt_datadesc_type_t ddt);
+XBT_PUBLIC(void) xbt_cbps_v_set(xbt_cbps_t ps,
                                  const char *name,
-                                 void *data, gras_datadesc_type_t ddt);
+                                 void *data, xbt_datadesc_type_t ddt);
 
-XBT_PUBLIC(void *) gras_cbps_v_get(gras_cbps_t ps, const char *name,
-                                   /* OUT */ gras_datadesc_type_t * ddt);
+XBT_PUBLIC(void *) xbt_cbps_v_get(xbt_cbps_t ps, const char *name,
+                                   /* OUT */ xbt_datadesc_type_t * ddt);
 
-XBT_PUBLIC(void) gras_cbps_block_begin(gras_cbps_t ps);
-XBT_PUBLIC(void) gras_cbps_block_end(gras_cbps_t ps);
+XBT_PUBLIC(void) xbt_cbps_block_begin(xbt_cbps_t ps);
+XBT_PUBLIC(void) xbt_cbps_block_end(xbt_cbps_t ps);
 
 /* @} */
 /* @} */
@@ -547,7 +548,7 @@ XBT_PUBLIC(void) gras_cbps_block_end(gras_cbps_t ps);
 /*******************************
  **** About data convertion ****
  *******************************/
-XBT_PUBLIC(int) gras_arch_selfid(void); /* ID of this arch */
+XBT_PUBLIC(int) xbt_arch_selfid(void); /* ID of this arch */
 
 
 /*****************************
@@ -594,11 +595,11 @@ typedef struct DataDescriptorStruct {
   sizeof(structType) - offsetof(structType, lastMember) - \
   sizeof(memberType) * repetitions
 
-XBT_PUBLIC(gras_datadesc_type_t)
-    gras_datadesc_import_nws(const char *name,
+XBT_PUBLIC(xbt_datadesc_type_t)
+    xbt_datadesc_import_nws(const char *name,
                          const DataDescriptor * desc,
                          unsigned long howmany);
 
 
 SG_END_DECL()
-#endif                          /* GRAS_DATADESC_H */
+#endif                          /* XBT_DATADESC_H */
diff --git a/include/xbt/socket.h b/include/xbt/socket.h
new file mode 100644 (file)
index 0000000..177ad51
--- /dev/null
@@ -0,0 +1,206 @@
+/* transport - low level communication (send/receive bunches of bytes)      */
+/* module's public interface exported to end user.                          */
+
+/* Copyright (c) 2004, 2005, 2006, 2007, 2009, 2010. The SimGrid Team.
+ * All rights reserved.                                                     */
+
+/* This program is free software; you can redistribute it and/or modify it
+ * under the terms of the license (GNU LGPL) which comes with this package. */
+
+#ifndef XBT_SOCKET_H
+#define XBT_SOCKET_H
+
+#include "xbt/misc.h"
+
+/** \addtogroup XBT_sock
+ *  \brief Socket handling
+ *
+ * The model of communications in XBT is very close to the BSD socket one.
+ * To get two hosts exchanging data, one of them needs to open a
+ * <i>server</i> socket on which it can listen for incoming messages and the
+ * other one must connect a <i>client</i> socket onto the server one.
+ *
+ * The main difference is that you cannot exchange arbitrary bytes on
+ * sockets, but messages. See the \ref GRAS_msg section for details.
+ *
+ * If you need an example of how to use sockets, check \ref GRAS_ex_ping.
+ */
+
+/** \defgroup XBT_sock_create Socket creation functions
+ *  \ingroup XBT_sock
+ *
+ */
+/* @{*/
+/** \brief Opaque type describing a socket */
+typedef struct s_xbt_socket *xbt_socket_t;
+typedef struct s_xbt_trp_plugin s_xbt_trp_plugin_t, *xbt_trp_plugin_t;
+
+void xbt_socket_new(int incoming,
+                    xbt_socket_t* dst);
+void xbt_socket_new_ext(int incoming,
+                        xbt_socket_t* dst,
+                        xbt_trp_plugin_t plugin,
+                        unsigned long int buf_size,
+                        int measurement);
+XBT_INLINE void* xbt_socket_get_data(xbt_socket_t sock);
+XBT_INLINE void xbt_socket_set_data(xbt_socket_t sock, void* data);
+
+/** \brief Simply create a client socket (to speak to a remote host) */
+XBT_PUBLIC(xbt_socket_t) xbt_socket_tcp_client(const char *host,
+                                               unsigned short port);
+XBT_PUBLIC(xbt_socket_t) xbt_socket_tcp_client_from_string(const char *host);
+/** \brief Simply create a server socket (to ear from remote hosts speaking to you) */
+XBT_PUBLIC(xbt_socket_t) xbt_socket_tcp_server(unsigned short port);
+
+/** \brief Create a client socket, full interface to all relevant settings */
+XBT_PUBLIC(xbt_socket_t) xbt_socket_tcp_client_ext(const char *host,
+                                                   unsigned short port,
+                                                   unsigned long int bufSize,
+                                                   int measurement);
+/** \brief Create a server socket, full interface to all relevant settings */
+XBT_PUBLIC(xbt_socket_t) xbt_socket_tcp_server_ext(unsigned short portcp_t,
+                                                   unsigned long int bufSize,
+                                                   int measurement);
+XBT_PUBLIC(xbt_socket_t)
+    xbt_socket_tcp_server_range(unsigned short minport, unsigned short maxport,
+                                unsigned long int buf_size, int measurement);
+
+XBT_PUBLIC(void) xbt_socket_close(xbt_socket_t sd);
+XBT_PUBLIC(void) xbt_socket_close_voidp(void *sock);
+
+/* @}*/
+/** \defgroup XBT_sock_info Retrieving data about sockets and peers
+ *  \ingroup XBT_sock
+ * 
+ * Who are you talking to? 
+ */
+/* @{*/
+
+/** Get the port number on which this socket is connected on my side */
+XBT_PUBLIC(int) xbt_socket_my_port(xbt_socket_t sock);
+
+/** @brief Get the port number on which this socket is connected on remote side 
+ *
+ * This is the port declared on remote side with the
+ * gras_socket_master() function (if any, or a random number being unique on
+ * the remote host). If remote used gras_socket_master() more than once, the 
+ * lastly declared number will be used here.
+ *
+ * Note to BSD sockets experts: With BSD sockets, the sockaddr 
+ * structure allows you to retrieve the port of the client socket on
+ * remote side, but it is of no use (from user perspective, it is
+ * some random number above 6000). That is why XBT sockets differ
+ * from BSD ones here. 
+ */
+XBT_PUBLIC(int) xbt_socket_peer_port(xbt_socket_t sock);
+/** Get the host name of the remote side */
+XBT_PUBLIC(const char *) xbt_socket_peer_name(xbt_socket_t sock);
+/** Get the process name of the remote side */
+XBT_PUBLIC(const char *) xbt_socket_peer_proc(xbt_socket_t sock);
+/* @}*/
+
+/** \defgroup XBT_sock_meas Using measurement sockets
+ *  \ingroup XBT_sock
+ * 
+ * You may want to use sockets not to exchange valuable data (in messages), 
+ * but to conduct some bandwidth measurements and related experiments. If so, try those measurement sockets.
+ * 
+ * You can only use those functions on sockets opened with the "measurement" boolean set to true.
+ * 
+ */
+/* @{*/
+
+XBT_PUBLIC(int) xbt_socket_is_meas(xbt_socket_t sock);
+XBT_PUBLIC(void) xbt_socket_meas_send(xbt_socket_t peer,
+                                      unsigned int timeout,
+                                      unsigned long int msgSize,
+                                      unsigned long int msgAmount);
+XBT_PUBLIC(void) xbt_socket_meas_recv(xbt_socket_t peer,
+                                      unsigned int timeout,
+                                      unsigned long int msgSize,
+                                      unsigned long int msgAmount);
+XBT_PUBLIC(xbt_socket_t) xbt_socket_meas_accept(xbt_socket_t peer);
+
+/* @}*/
+
+/***
+ *** Main user functions
+ ***/
+/* stable if we know the storage will keep as is until the next trp_flush */
+XBT_PUBLIC(void) xbt_trp_send(xbt_socket_t sd, char *data, long int size,
+                             int stable);
+XBT_PUBLIC(void) xbt_trp_recv(xbt_socket_t sd, char *data, long int size);
+XBT_PUBLIC(void) xbt_trp_flush(xbt_socket_t sd);
+
+/* Find which socket needs to be read next */
+XBT_PUBLIC(xbt_socket_t) xbt_trp_select(double timeout);
+
+/* Set the peer process name (used by messaging layer) */
+XBT_PUBLIC(void) xbt_socket_peer_proc_set(xbt_socket_t sock,
+                                          char *peer_proc);
+
+/** \defgroup XBT_sock_plugin Plugin mechanism
+ *  \ingroup XBT_sock
+ *
+ * XBT provides a TCP plugin that implements TCP sockets.
+ * You can also write your own plugin if you need another socket
+ * implementation.
+ */
+/* @{*/
+
+/* A plugin type */
+
+struct s_xbt_trp_plugin {
+  char *name;
+
+  /* dst pointers are created and initialized with default values
+     before call to socket_client/server.
+     Retrieve the info you need from there. */
+  void (*socket_client) (xbt_trp_plugin_t self, const char *host, int port, xbt_socket_t dst);
+  void (*socket_server) (xbt_trp_plugin_t self, int port, xbt_socket_t dst);
+
+  xbt_socket_t (*socket_accept) (xbt_socket_t from);
+
+  /* Getting info about who's speaking */
+  int (*my_port) (xbt_socket_t sd);
+  int (*peer_port) (xbt_socket_t sd);
+  const char* (*peer_name) (xbt_socket_t sd);
+  const char* (*peer_proc) (xbt_socket_t sd);
+  void (*peer_proc_set) (xbt_socket_t sd, char* peer_proc);
+
+  /* socket_close() is responsible of telling the OS that the socket is over,
+     but should not free the socket itself (beside the specific part) */
+  void (*socket_close) (xbt_socket_t sd);
+
+  /* send/recv may be buffered */
+  void (*send) (xbt_socket_t sd,
+                const char *data,
+                unsigned long int size,
+                int stable /* storage will survive until flush */ );
+  int (*recv) (xbt_socket_t sd, char *data, unsigned long int size);
+  /* raw_send/raw_recv is never buffered (use it for measurement stuff) */
+  void (*raw_send) (xbt_socket_t sd,
+                    const char *data, unsigned long int size);
+  int (*raw_recv) (xbt_socket_t sd, char *data, unsigned long int size);
+
+  /* flush has to make sure that the pending communications are achieved */
+  void (*flush) (xbt_socket_t sd);
+
+  void *data;                   /* plugin-specific data */
+
+  /* exit is responsible for freeing data and telling to the OS that
+     this plugin is gone.
+     If exit is NULL, data gets brutally freed by the generic interface.
+     (i.e. an exit function is only needed when data contains pointers) */
+  void (*exit) (xbt_trp_plugin_t);
+};
+
+typedef void (*xbt_trp_setup_t) (xbt_trp_plugin_t dst);
+
+XBT_PUBLIC(void) xbt_trp_plugin_new(const char *name, xbt_trp_setup_t setup);
+XBT_PUBLIC(xbt_trp_plugin_t)
+    xbt_trp_plugin_get_by_name(const char *name);
+
+/* @}*/
+
+#endif                          /* XBT_SOCKET_H */
index 6372a56..d28219c 100644 (file)
@@ -54,32 +54,32 @@ static int amok_bw_cb_bw_request(gras_msg_cb_ctx_t ctx, void *payload);
 
 void amok_bw_bw_init()
 {
-  gras_datadesc_type_t bw_request_desc, bw_res_desc;
+  xbt_datadesc_type_t bw_request_desc, bw_res_desc;
 
   /* Build the Bandwidth datatype descriptions */
-  bw_request_desc = gras_datadesc_struct("s_bw_request_t");
-  gras_datadesc_struct_append(bw_request_desc, "peer",
-                              gras_datadesc_by_name("s_xbt_peer_t"));
-  gras_datadesc_struct_append(bw_request_desc, "buf_size",
-                              gras_datadesc_by_name("unsigned long int"));
-  gras_datadesc_struct_append(bw_request_desc, "msg_size",
-                              gras_datadesc_by_name("unsigned long int"));
-  gras_datadesc_struct_append(bw_request_desc, "msg_amount",
-                              gras_datadesc_by_name("unsigned long int"));
-  gras_datadesc_struct_append(bw_request_desc, "min_duration",
-                              gras_datadesc_by_name("double"));
-  gras_datadesc_struct_close(bw_request_desc);
-  bw_request_desc = gras_datadesc_ref("bw_request_t", bw_request_desc);
-
-  bw_res_desc = gras_datadesc_struct("s_bw_res_t");
-  gras_datadesc_struct_append(bw_res_desc, "timestamp",
-                              gras_datadesc_by_name("unsigned int"));
-  gras_datadesc_struct_append(bw_res_desc, "seconds",
-                              gras_datadesc_by_name("double"));
-  gras_datadesc_struct_append(bw_res_desc, "bw",
-                              gras_datadesc_by_name("double"));
-  gras_datadesc_struct_close(bw_res_desc);
-  bw_res_desc = gras_datadesc_ref("bw_res_t", bw_res_desc);
+  bw_request_desc = xbt_datadesc_struct("s_bw_request_t");
+  xbt_datadesc_struct_append(bw_request_desc, "peer",
+                              xbt_datadesc_by_name("s_xbt_peer_t"));
+  xbt_datadesc_struct_append(bw_request_desc, "buf_size",
+                              xbt_datadesc_by_name("unsigned long int"));
+  xbt_datadesc_struct_append(bw_request_desc, "msg_size",
+                              xbt_datadesc_by_name("unsigned long int"));
+  xbt_datadesc_struct_append(bw_request_desc, "msg_amount",
+                              xbt_datadesc_by_name("unsigned long int"));
+  xbt_datadesc_struct_append(bw_request_desc, "min_duration",
+                              xbt_datadesc_by_name("double"));
+  xbt_datadesc_struct_close(bw_request_desc);
+  bw_request_desc = xbt_datadesc_ref("bw_request_t", bw_request_desc);
+
+  bw_res_desc = xbt_datadesc_struct("s_bw_res_t");
+  xbt_datadesc_struct_append(bw_res_desc, "timestamp",
+                              xbt_datadesc_by_name("unsigned int"));
+  xbt_datadesc_struct_append(bw_res_desc, "seconds",
+                              xbt_datadesc_by_name("double"));
+  xbt_datadesc_struct_append(bw_res_desc, "bw",
+                              xbt_datadesc_by_name("double"));
+  xbt_datadesc_struct_close(bw_res_desc);
+  bw_res_desc = xbt_datadesc_ref("bw_res_t", bw_res_desc);
 
   gras_msgtype_declare_rpc("BW handshake", bw_request_desc,
                            bw_request_desc);
@@ -133,7 +133,7 @@ void amok_bw_bw_leave()
  *           bytes in a fat pipe.
  * 
  */
-void amok_bw_test(gras_socket_t peer,
+void amok_bw_test(xbt_socket_t peer,
                   unsigned long int buf_size,
                   unsigned long int msg_size,
                   unsigned long int msg_amount,
@@ -141,7 +141,7 @@ void amok_bw_test(gras_socket_t peer,
 {
 
   /* Measurement sockets for the experiments */
-  volatile gras_socket_t measMasterIn = NULL, measIn, measOut = NULL;
+  volatile xbt_socket_t measMasterIn = NULL, measIn, measOut = NULL;
   volatile int port;
   bw_request_t request, request_ack;
   xbt_ex_t e;
@@ -166,10 +166,10 @@ void amok_bw_test(gras_socket_t peer,
   request->msg_size = msg_size;
   request->msg_amount = msg_amount;
   request->peer.name = NULL;
-  request->peer.port = gras_socket_my_port(measMasterIn);
+  request->peer.port = xbt_socket_my_port(measMasterIn);
   XBT_DEBUG
       ("Handshaking with %s:%d to connect it back on my %d (bufsize=%ld, msg_size=%ld, msg_amount=%ld)",
-       gras_socket_peer_name(peer), gras_socket_peer_port(peer),
+       xbt_socket_peer_name(peer), xbt_socket_peer_port(peer),
        request->peer.port, request->buf_size, request->msg_size,
        request->msg_amount);
 
@@ -179,17 +179,17 @@ void amok_bw_test(gras_socket_t peer,
   CATCH_ANONYMOUS {
     RETHROWF("Error encountered while sending the BW request: %s");
   }
-  measIn = gras_socket_meas_accept(measMasterIn);
+  measIn = xbt_socket_meas_accept(measMasterIn);
 
   TRY {
-    measOut = gras_socket_client_ext(gras_socket_peer_name(peer),
+    measOut = gras_socket_client_ext(xbt_socket_peer_name(peer),
                                      request_ack->peer.port,
                                      request->buf_size, 1);
   }
   CATCH_ANONYMOUS {
     RETHROWF
         ("Error encountered while opening the measurement socket to %s:%d for BW test: %s",
-         gras_socket_peer_name(peer), request_ack->peer.port);
+         xbt_socket_peer_name(peer), request_ack->peer.port);
   }
   XBT_DEBUG
       ("Got ACK; conduct the experiment (msg_size = %ld, msg_amount=%ld)",
@@ -240,10 +240,10 @@ void amok_bw_test(gras_socket_t peer,
     first_pass = 0;
     *sec = gras_os_time();
     TRY {
-      gras_socket_meas_send(measOut, 120, request->msg_size,
+      xbt_socket_meas_send(measOut, 120, request->msg_size,
                             request->msg_amount);
       XBT_DEBUG("Data sent. Wait ACK");
-      gras_socket_meas_recv(measIn, 120, 1, 1);
+      xbt_socket_meas_recv(measIn, 120, 1, 1);
     }
     CATCH_ANONYMOUS {
       gras_socket_close(measOut);
@@ -288,8 +288,8 @@ void amok_bw_test(gras_socket_t peer,
 */
 int amok_bw_cb_bw_handshake(gras_msg_cb_ctx_t ctx, void *payload)
 {
-  gras_socket_t expeditor = gras_msg_cb_ctx_from(ctx);
-  volatile gras_socket_t measMasterIn = NULL,  measIn = NULL, measOut = NULL;
+  xbt_socket_t expeditor = gras_msg_cb_ctx_from(ctx);
+  volatile xbt_socket_t measMasterIn = NULL,  measIn = NULL, measOut = NULL;
   volatile bw_request_t request = *(bw_request_t *) payload;
   bw_request_t answer;
   xbt_ex_t e;
@@ -300,7 +300,7 @@ int amok_bw_cb_bw_handshake(gras_msg_cb_ctx_t ctx, void *payload)
 
   XBT_DEBUG
       ("Handshaked to connect to %s:%d (sizes: buf=%lu msg=%lu msg_amount=%lu)",
-       gras_socket_peer_name(expeditor), request->peer.port,
+       xbt_socket_peer_name(expeditor), request->peer.port,
        request->buf_size, request->msg_size, request->msg_amount);
 
   /* Build our answer */
@@ -324,7 +324,7 @@ int amok_bw_cb_bw_handshake(gras_msg_cb_ctx_t ctx, void *payload)
   answer->buf_size = request->buf_size;
   answer->msg_size = request->msg_size;
   answer->msg_amount = request->msg_amount;
-  answer->peer.port = gras_socket_my_port(measMasterIn);
+  answer->peer.port = xbt_socket_my_port(measMasterIn);
 
   TRY {
     gras_msg_rpcreturn(60, ctx, &answer);
@@ -338,19 +338,19 @@ int amok_bw_cb_bw_handshake(gras_msg_cb_ctx_t ctx, void *payload)
 
   /* Don't connect asap to leave time to other side to enter the accept() */
   TRY {
-    measOut = gras_socket_client_ext(gras_socket_peer_name(expeditor),
+    measOut = gras_socket_client_ext(xbt_socket_peer_name(expeditor),
                                      request->peer.port,
                                      request->buf_size, 1);
   }
   CATCH_ANONYMOUS {
     RETHROWF
         ("Error encountered while opening a measurement socket back to %s:%d : %s",
-         gras_socket_peer_name(expeditor), request->peer.port);
+         xbt_socket_peer_name(expeditor), request->peer.port);
     /* FIXME: tell error to remote */
   }
 
   TRY {
-    measIn = gras_socket_meas_accept(measMasterIn);
+    measIn = xbt_socket_meas_accept(measMasterIn);
     XBT_DEBUG
         ("BW handshake answered. buf_size=%lu msg_size=%lu msg_amount=%lu port=%d",
          answer->buf_size, answer->msg_size, answer->msg_amount,
@@ -374,9 +374,9 @@ int amok_bw_cb_bw_handshake(gras_msg_cb_ctx_t ctx, void *payload)
     void *payload;
     int msggot;
     TRY {
-      gras_socket_meas_recv(measIn, 120, request->msg_size,
+      xbt_socket_meas_recv(measIn, 120, request->msg_size,
                             request->msg_amount);
-      gras_socket_meas_send(measOut, 120, 1, 1);
+      xbt_socket_meas_send(measOut, 120, 1, 1);
     }
     CATCH_ANONYMOUS {
       gras_socket_close(measMasterIn);
@@ -443,7 +443,7 @@ void amok_bw_request(const char *from_name, unsigned int from_port,
                      double min_duration, /*OUT*/ double *sec, double *bw)
 {
 
-  gras_socket_t sock;
+  xbt_socket_t sock;
   /* The request */
   bw_request_t request;
   bw_res_t result;
@@ -486,11 +486,11 @@ int amok_bw_cb_bw_request(gras_msg_cb_ctx_t ctx, void *payload)
   /* specification of the test to run, and our answer */
   bw_request_t request = *(bw_request_t *) payload;
   bw_res_t result = xbt_new0(s_bw_res_t, 1);
-  gras_socket_t peer, asker;
+  xbt_socket_t peer, asker;
 
   asker = gras_msg_cb_ctx_from(ctx);
   XBT_VERB("Asked by %s:%d to conduct a bw XP with %s:%d (request: %ld %ld)",
-        gras_socket_peer_name(asker), gras_socket_peer_port(asker),
+        xbt_socket_peer_name(asker), xbt_socket_peer_port(asker),
         request->peer.name, request->peer.port,
         request->msg_size, request->msg_amount);
   peer = gras_socket_client(request->peer.name, request->peer.port);
index 0f61258..191f18a 100644 (file)
@@ -19,19 +19,19 @@ static int amok_bw_cb_sat_begin(gras_msg_cb_ctx_t ctx, void *payload);
 
 void amok_bw_sat_init(void)
 {
-  gras_datadesc_type_t bw_res_desc = gras_datadesc_by_name("bw_res_t");
-  gras_datadesc_type_t sat_request_desc;
+  xbt_datadesc_type_t bw_res_desc = xbt_datadesc_by_name("bw_res_t");
+  xbt_datadesc_type_t sat_request_desc;
   /* Build the saturation datatype descriptions */
 
-  sat_request_desc = gras_datadesc_struct("s_sat_request_desc_t");
-  gras_datadesc_struct_append(sat_request_desc, "peer",
-                              gras_datadesc_by_name("s_xbt_peer_t"));
-  gras_datadesc_struct_append(sat_request_desc, "msg_size",
-                              gras_datadesc_by_name("unsigned int"));
-  gras_datadesc_struct_append(sat_request_desc, "duration",
-                              gras_datadesc_by_name("unsigned int"));
-  gras_datadesc_struct_close(sat_request_desc);
-  sat_request_desc = gras_datadesc_ref("sat_request_t", sat_request_desc);
+  sat_request_desc = xbt_datadesc_struct("s_sat_request_desc_t");
+  xbt_datadesc_struct_append(sat_request_desc, "peer",
+                              xbt_datadesc_by_name("s_xbt_peer_t"));
+  xbt_datadesc_struct_append(sat_request_desc, "msg_size",
+                              xbt_datadesc_by_name("unsigned int"));
+  xbt_datadesc_struct_append(sat_request_desc, "duration",
+                              xbt_datadesc_by_name("unsigned int"));
+  xbt_datadesc_struct_close(sat_request_desc);
+  sat_request_desc = xbt_datadesc_ref("sat_request_t", sat_request_desc);
 
   /* Register the saturation messages */
   gras_msgtype_declare_rpc("amok_bw_sat start", sat_request_desc, NULL);
@@ -76,7 +76,7 @@ void amok_bw_saturate_start(const char *from_name, unsigned int from_port,
                             const char *to_name, unsigned int to_port,
                             unsigned int msg_size, double duration)
 {
-  gras_socket_t sock;
+  xbt_socket_t sock;
   sat_request_t request = xbt_new(s_sat_request_t, 1);
 
   XBT_VERB("Start from_name %s:%d -> to_name %s:%d",
@@ -99,10 +99,10 @@ void amok_bw_saturate_start(const char *from_name, unsigned int from_port,
 static int amok_bw_cb_sat_start(gras_msg_cb_ctx_t ctx, void *payload)
 {
   sat_request_t request = *(sat_request_t *) payload;
-  gras_socket_t expeditor = gras_msg_cb_ctx_from(ctx);
+  xbt_socket_t expeditor = gras_msg_cb_ctx_from(ctx);
 
   XBT_VERB("Asked by %s:%d to start a saturation to %s:%d",
-        gras_socket_peer_name(expeditor), gras_socket_peer_port(expeditor),
+        xbt_socket_peer_name(expeditor), xbt_socket_peer_port(expeditor),
         request->peer.name, request->peer.port);
 
   gras_msg_rpcreturn(60, ctx, NULL);
@@ -135,10 +135,10 @@ void amok_bw_saturate_begin(const char *to_name, unsigned int to_port,
 
   xbt_ex_t e;
 
-  gras_socket_t peer_cmd = gras_socket_client(to_name, to_port);
+  xbt_socket_t peer_cmd = gras_socket_client(to_name, to_port);
   gras_msg_cb_ctx_t ctx;
 
-  gras_socket_t meas;
+  xbt_socket_t meas;
 
   s_gras_msg_t msg_got;
 
@@ -194,7 +194,7 @@ void amok_bw_saturate_begin(const char *to_name, unsigned int to_port,
 
   do {
     /* do send it */
-    gras_socket_meas_send(meas, 120, msg_size, 1);
+    xbt_socket_meas_send(meas, 120, msg_size, 1);
     packet_sent++;
 
     /* Check whether someone asked us to stop saturation */
@@ -234,8 +234,8 @@ void amok_bw_saturate_begin(const char *to_name, unsigned int to_port,
 
     XBT_INFO("Saturation from %s:%d to %s:%d stopped by %s:%d",
           gras_os_myname(), gras_os_myport(), to_name, to_port,
-          gras_socket_peer_name(msg_got.expe),
-          gras_socket_peer_port(msg_got.expe));
+          xbt_socket_peer_name(msg_got.expe),
+          xbt_socket_peer_port(msg_got.expe));
     answer->timestamp = gras_os_time();
     answer->sec = elapsed;
     answer->bw = bw;
@@ -263,8 +263,8 @@ static int amok_bw_cb_sat_begin(gras_msg_cb_ctx_t ctx, void *payload)
   sat_request_t answer = xbt_new0(s_sat_request_t, 1);
   volatile int saturate_further = 1;
   xbt_ex_t e;
-  volatile gras_socket_t measMaster = NULL, meas = NULL;
-  volatile gras_socket_t from = gras_msg_cb_ctx_from(ctx);
+  volatile xbt_socket_t measMaster = NULL, meas = NULL;
+  volatile xbt_socket_t from = gras_msg_cb_ctx_from(ctx);
 
   volatile int port = 6000;
   while (port <= 10000 && measMaster == NULL) {
@@ -291,7 +291,7 @@ static int amok_bw_cb_sat_begin(gras_msg_cb_ctx_t ctx, void *payload)
   gras_os_sleep(5);             /* Wait for the accept */
 
   TRY {
-    meas = gras_socket_meas_accept(measMaster);
+    meas = xbt_socket_meas_accept(measMaster);
     XBT_DEBUG("saturation handshake answered");
   }
   CATCH_ANONYMOUS {
@@ -301,7 +301,7 @@ static int amok_bw_cb_sat_begin(gras_msg_cb_ctx_t ctx, void *payload)
 
   while (saturate_further) {
     TRY {
-      gras_socket_meas_recv(meas, 5, request->msg_size, 1);
+      xbt_socket_meas_recv(meas, 5, request->msg_size, 1);
     }
     CATCH(e) {
       saturate_further = 0;
@@ -309,7 +309,7 @@ static int amok_bw_cb_sat_begin(gras_msg_cb_ctx_t ctx, void *payload)
     }
   }
   XBT_INFO("Saturation comming from %s:%d stopped on %s:%d",
-        gras_socket_peer_name(from), gras_socket_peer_port(from),
+        xbt_socket_peer_name(from), xbt_socket_peer_port(from),
         gras_os_myname(), gras_os_myport());
 
   gras_socket_close(meas);
@@ -330,7 +330,7 @@ static int amok_bw_cb_sat_begin(gras_msg_cb_ctx_t ctx, void *payload)
 void amok_bw_saturate_stop(const char *from_name, unsigned int from_port,
                            /*out */ double *time, double *bw)
 {
-  gras_socket_t sock = gras_socket_client(from_name, from_port);
+  xbt_socket_t sock = gras_socket_client(from_name, from_port);
   bw_res_t answer;
   XBT_VERB("Ask %s:%d to stop the saturation", from_name, from_port);
   TRY {
index 1f02fe0..a04cfc9 100644 (file)
@@ -58,9 +58,9 @@ static int amok_pm_cb_join(gras_msg_cb_ctx_t ctx, void *payload)
   xbt_dynar_t group = xbt_dict_get(g->groups, group_name);
   int rank;
 
-  gras_socket_t exp = gras_msg_cb_ctx_from(ctx);
-  xbt_peer_t dude = xbt_peer_new(gras_socket_peer_name(exp),
-                                 gras_socket_peer_port(exp));
+  xbt_socket_t exp = gras_msg_cb_ctx_from(ctx);
+  xbt_peer_t dude = xbt_peer_new(xbt_socket_peer_name(exp),
+                                 xbt_socket_peer_port(exp));
 
   rank = xbt_dynar_length(group);
   xbt_dynar_push(group, &dude);
@@ -78,9 +78,9 @@ static int amok_pm_cb_leave(gras_msg_cb_ctx_t ctx, void *payload)
   char *name = *(void **) payload;
   xbt_dynar_t group = xbt_dict_get(g->groups, name);
 
-  gras_socket_t exp = gras_msg_cb_ctx_from(ctx);
-  xbt_peer_t dude = xbt_peer_new(gras_socket_peer_name(exp),
-                                 gras_socket_peer_port(exp));
+  xbt_socket_t exp = gras_msg_cb_ctx_from(ctx);
+  xbt_peer_t dude = xbt_peer_new(xbt_socket_peer_name(exp),
+                                 xbt_socket_peer_port(exp));
 
   unsigned int cpt;
   xbt_peer_t peer_it;
@@ -121,19 +121,19 @@ void amok_pm_mainloop(double timeOut)
 /** \brief kill a buddy identified by its peername and port. Note that it is not removed from any group it may belong to. */
 void amok_pm_kill_hp(char *name, int port)
 {
-  gras_socket_t sock = gras_socket_client(name, port);
+  xbt_socket_t sock = gras_socket_client(name, port);
   amok_pm_kill(sock);
   gras_socket_close(sock);
 }
 
 /** \brief kill a buddy to which we have a socket already. Note that it is not removed from any group it may belong to. */
-void amok_pm_kill(gras_socket_t buddy)
+void amok_pm_kill(xbt_socket_t buddy)
 {
   gras_msg_send(buddy, "amok_pm_kill", NULL);
 }
 
 /** \brief kill syncronously a buddy (do not return before its death). Note that it is not removed from any group it may belong to. */
-void amok_pm_kill_sync(gras_socket_t buddy)
+void amok_pm_kill_sync(xbt_socket_t buddy)
 {
   gras_msg_rpccall(buddy, 30, "amok_pm_killrpc", NULL, NULL);
 }
@@ -161,7 +161,7 @@ xbt_dynar_t amok_pm_group_new(const char *group_name)
 }
 
 /** \brief retrieve all members of the given remote group */
-xbt_dynar_t amok_pm_group_get(gras_socket_t master, const char *group_name)
+xbt_dynar_t amok_pm_group_get(xbt_socket_t master, const char *group_name)
 {
   xbt_dynar_t res;
 
@@ -173,16 +173,16 @@ xbt_dynar_t amok_pm_group_get(gras_socket_t master, const char *group_name)
  *
  * Returns the rank of the process in the group.
  */
-int amok_pm_group_join(gras_socket_t master, const char *group_name)
+int amok_pm_group_join(xbt_socket_t master, const char *group_name)
 {
   int rank;
   XBT_VERB("Join group '%s' on %s:%d",
-        group_name, gras_socket_peer_name(master),
-        gras_socket_peer_port(master));
+        group_name, xbt_socket_peer_name(master),
+        xbt_socket_peer_port(master));
   gras_msg_rpccall(master, 30, "amok_pm_join", &group_name, &rank);
   XBT_VERB("Joined group '%s' on %s:%d. Got rank %d",
-        group_name, gras_socket_peer_name(master),
-        gras_socket_peer_port(master), rank);
+        group_name, xbt_socket_peer_name(master),
+        xbt_socket_peer_port(master), rank);
   return rank;
 }
 
@@ -190,12 +190,12 @@ int amok_pm_group_join(gras_socket_t master, const char *group_name)
  *
  * If not found, call is ignored 
  */
-void amok_pm_group_leave(gras_socket_t master, const char *group_name)
+void amok_pm_group_leave(xbt_socket_t master, const char *group_name)
 {
   gras_msg_rpccall(master, 30, "amok_pm_leave", &group_name, NULL);
   XBT_VERB("Leaved group '%s' on %s:%d",
-        group_name, gras_socket_peer_name(master),
-        gras_socket_peer_port(master));
+        group_name, xbt_socket_peer_name(master),
+        xbt_socket_peer_port(master));
 }
 
 /** \brief stops all members of the given local group */
@@ -216,7 +216,7 @@ void amok_pm_group_shutdown(const char *group_name)
 }
 
 /** \brief stops all members of the given remote group */
-void amok_pm_group_shutdown_remote(gras_socket_t master,
+void amok_pm_group_shutdown_remote(xbt_socket_t master,
                                    const char *group_name)
 {
   gras_msg_rpccall(master, 30, "amok_pm_shutdown", &group_name, NULL);
@@ -235,22 +235,22 @@ static void _amok_pm_init(void)
 {
   /* no world-wide globals */
   /* Datatype and message declarations */
-  gras_datadesc_type_t pm_group_type =
-      gras_datadesc_dynar(gras_datadesc_by_name("xbt_peer_t"),
+  xbt_datadesc_type_t pm_group_type =
+      xbt_datadesc_dynar(xbt_datadesc_by_name("xbt_peer_t"),
                           xbt_peer_free_voidp);
 
   gras_msgtype_declare("amok_pm_kill", NULL);
   gras_msgtype_declare_rpc("amok_pm_killrpc", NULL, NULL);
 
   gras_msgtype_declare_rpc("amok_pm_get",
-                           gras_datadesc_by_name("string"), pm_group_type);
-  gras_msgtype_declare_rpc("amok_pm_join", gras_datadesc_by_name("string"),
-                           gras_datadesc_by_name("int"));
+                           xbt_datadesc_by_name("string"), pm_group_type);
+  gras_msgtype_declare_rpc("amok_pm_join", xbt_datadesc_by_name("string"),
+                           xbt_datadesc_by_name("int"));
   gras_msgtype_declare_rpc("amok_pm_leave",
-                           gras_datadesc_by_name("string"), NULL);
+                           xbt_datadesc_by_name("string"), NULL);
 
   gras_msgtype_declare_rpc("amok_pm_shutdown",
-                           gras_datadesc_by_name("string"), NULL);
+                           xbt_datadesc_by_name("string"), NULL);
 }
 
 static void _amok_pm_join(void *p)
diff --git a/src/gras/DataDesc/datadesc.c b/src/gras/DataDesc/datadesc.c
deleted file mode 100644 (file)
index 220607f..0000000
+++ /dev/null
@@ -1,257 +0,0 @@
-/* datadesc - data description in order to send/recv it in GRAS             */
-
-/* Copyright (c) 2004, 2005, 2006, 2007, 2009, 2010. The SimGrid Team.
- * All rights reserved.                                                     */
-
-/* This program is free software; you can redistribute it and/or modify it
- * under the terms of the license (GNU LGPL) which comes with this package. */
-
-#include "gras/DataDesc/datadesc_private.h"
-
-XBT_LOG_NEW_DEFAULT_SUBCATEGORY(gras_ddt, gras, "Data description");
-/* FIXME: make this host-dependent using a trick such as UserData*/
-/*@null@*/ xbt_set_t gras_datadesc_set_local = NULL;
-
-
-/* callback for array size when sending strings */
-static int _strlen_cb( /*@unused@ */ gras_datadesc_type_t type, /*@unused@ */
-                      gras_cbps_t vars, void *data)
-{
-
-  return 1 + (int) strlen(data);
-}
-
-
-/**
- * gras_datadesc_init:
- *
- * Initialize the datadesc module.
- * FIXME: We assume that when neither signed nor unsigned is given,
- *    that means signed. To be checked by configure.
- **/
-void gras_datadesc_init(void)
-{
-  gras_datadesc_type_t ddt;     /* What to add */
-
-  /* only initialize once */
-  if (gras_datadesc_set_local != NULL)
-    return;
-
-  XBT_VERB("Initializing DataDesc");
-
-  gras_datadesc_set_local = xbt_set_new();
-
-
-  /* all known datatypes */
-
-  ddt = gras_datadesc_scalar("signed char",
-                             gras_ddt_scalar_char,
-                             e_gras_dd_scalar_encoding_sint);
-  ddt = gras_datadesc_scalar("char",
-                             gras_ddt_scalar_char,
-                             e_gras_dd_scalar_encoding_sint);
-  ddt = gras_datadesc_scalar("unsigned char",
-                             gras_ddt_scalar_char,
-                             e_gras_dd_scalar_encoding_uint);
-
-  ddt = gras_datadesc_scalar("signed short int",
-                             gras_ddt_scalar_short,
-                             e_gras_dd_scalar_encoding_sint);
-  ddt = gras_datadesc_scalar("short int",
-                             gras_ddt_scalar_short,
-                             e_gras_dd_scalar_encoding_sint);
-  ddt = gras_datadesc_scalar("short",
-                             gras_ddt_scalar_short,
-                             e_gras_dd_scalar_encoding_sint);
-  ddt = gras_datadesc_scalar("unsigned short int",
-                             gras_ddt_scalar_short,
-                             e_gras_dd_scalar_encoding_uint);
-
-  ddt = gras_datadesc_scalar("signed int",
-                             gras_ddt_scalar_int,
-                             e_gras_dd_scalar_encoding_sint);
-  ddt = gras_datadesc_scalar("int",
-                             gras_ddt_scalar_int,
-                             e_gras_dd_scalar_encoding_sint);
-  ddt = gras_datadesc_scalar("unsigned int",
-                             gras_ddt_scalar_int,
-                             e_gras_dd_scalar_encoding_uint);
-
-  ddt = gras_datadesc_scalar("signed long int",
-                             gras_ddt_scalar_long,
-                             e_gras_dd_scalar_encoding_sint);
-  ddt = gras_datadesc_scalar("long int",
-                             gras_ddt_scalar_long,
-                             e_gras_dd_scalar_encoding_sint);
-  ddt = gras_datadesc_scalar("long",
-                             gras_ddt_scalar_long,
-                             e_gras_dd_scalar_encoding_sint);
-  ddt = gras_datadesc_scalar("unsigned long int",
-                             gras_ddt_scalar_long,
-                             e_gras_dd_scalar_encoding_uint);
-
-  ddt = gras_datadesc_scalar("signed long long int",
-                             gras_ddt_scalar_long_long,
-                             e_gras_dd_scalar_encoding_sint);
-  ddt = gras_datadesc_scalar("long long int",
-                             gras_ddt_scalar_long_long,
-                             e_gras_dd_scalar_encoding_sint);
-  ddt = gras_datadesc_scalar("unsigned long long int",
-                             gras_ddt_scalar_long_long,
-                             e_gras_dd_scalar_encoding_uint);
-
-  ddt = gras_datadesc_scalar("data pointer",
-                             gras_ddt_scalar_pdata,
-                             e_gras_dd_scalar_encoding_uint);
-  ddt = gras_datadesc_scalar("function pointer",
-                             gras_ddt_scalar_pfunc,
-                             e_gras_dd_scalar_encoding_uint);
-
-  ddt = gras_datadesc_scalar("float",
-                             gras_ddt_scalar_float,
-                             e_gras_dd_scalar_encoding_float);
-  ddt = gras_datadesc_scalar("double",
-                             gras_ddt_scalar_double,
-                             e_gras_dd_scalar_encoding_float);
-
-  ddt = gras_datadesc_array_dyn("char[]",
-                                gras_datadesc_by_name("char"), _strlen_cb);
-  gras_datadesc_ref("string", ddt);
-  gras_datadesc_ref("xbt_string_t", ddt);
-
-  /* specific datatype: the exception type (for RPC) */
-  ddt = gras_datadesc_struct("ex_t");
-  gras_datadesc_struct_append(ddt, "msg", gras_datadesc_by_name("string"));
-  gras_datadesc_struct_append(ddt, "category",
-                              gras_datadesc_by_name("int"));
-  gras_datadesc_struct_append(ddt, "value", gras_datadesc_by_name("int"));
-
-  gras_datadesc_struct_append(ddt, "remote",
-                              gras_datadesc_by_name("short int"));
-
-  gras_datadesc_struct_append(ddt, "host",
-                              gras_datadesc_by_name("string"));
-  gras_datadesc_struct_append(ddt, "procname",
-                              gras_datadesc_by_name("string"));
-  gras_datadesc_struct_append(ddt, "pid",
-                              gras_datadesc_by_name("long int"));
-  gras_datadesc_struct_append(ddt, "file",
-                              gras_datadesc_by_name("string"));
-  gras_datadesc_struct_append(ddt, "line", gras_datadesc_by_name("int"));
-  gras_datadesc_struct_append(ddt, "func",
-                              gras_datadesc_by_name("string"));
-  gras_datadesc_struct_append(ddt, "used", gras_datadesc_by_name("int"));
-  gras_datadesc_cb_field_push(ddt, "used");
-  gras_datadesc_struct_append(ddt, "bt_strings",
-                              gras_datadesc_ref_pop_arr
-                              (gras_datadesc_by_name("string")));
-
-  gras_datadesc_struct_close(ddt);
-
-  /* specific datatype: xbt_peer_t */
-  ddt = gras_datadesc_struct("s_xbt_peer_t");
-  gras_datadesc_struct_append(ddt, "name",
-                              gras_datadesc_by_name("string"));
-  gras_datadesc_struct_append(ddt, "port", gras_datadesc_by_name("int"));
-  gras_datadesc_struct_close(ddt);
-
-  ddt = gras_datadesc_ref("xbt_peer_t", ddt);
-
-  /* Dict containing the constant value (for the parsing macro) */
-  gras_dd_constants = xbt_dict_new_homogeneous(xbt_free_f);
-
-}
-
-/**
- * gras_datadesc_exit:
- *
- * Finalize the datadesc module
- **/
-void gras_datadesc_exit(void)
-{
-  XBT_VERB("Exiting DataDesc");
-  xbt_set_free(&gras_datadesc_set_local);
-  xbt_dict_free(&gras_dd_constants);
-  XBT_DEBUG("Exited DataDesc");
-}
-
-/** This is mainly to debug */
-const char *gras_datadesc_get_name(gras_datadesc_type_t ddt)
-{
-  return ddt ? (const char *) ddt->name : "(null)";
-}
-
-/** This is mainly to debug */
-int gras_datadesc_get_id(gras_datadesc_type_t ddt)
-{
-  return ddt->code;
-}
-
-/**
- * gras_datadesc_size:
- *
- * Returns the size occuped by data of this type (on the current arch).
- *
- */
-int gras_datadesc_size(gras_datadesc_type_t type)
-{
-  return type ? type->size[GRAS_THISARCH] : 0;
-}
-
-/**
- * gras_datadesc_type_dump:
- *
- * For debugging purpose
- */
-void gras_datadesc_type_dump(const gras_datadesc_type_t ddt)
-{
-  unsigned int cpt;
-
-  printf("DataDesc dump:");
-  if (!ddt) {
-    printf("(null)\n");
-    return;
-  }
-  printf("%s (ID:%d)\n", ddt->name, ddt->code);
-  printf("  category: %s\n", gras_datadesc_cat_names[ddt->category_code]);
-
-  printf("  size[");
-  for (cpt = 0; cpt < gras_arch_count; cpt++) {
-    printf("%s%s%ld%s",
-           cpt > 0 ? ", " : "",
-           cpt == GRAS_THISARCH ? ">" : "",
-           ddt->size[cpt], cpt == GRAS_THISARCH ? "<" : "");
-  }
-  printf("]\n");
-
-  printf("  alignment[");
-  for (cpt = 0; cpt < gras_arch_count; cpt++) {
-    printf("%s%s%ld%s",
-           cpt > 0 ? ", " : "",
-           cpt == GRAS_THISARCH ? ">" : "",
-           ddt->alignment[cpt], cpt == GRAS_THISARCH ? "<" : "");
-  }
-  printf("]\n");
-
-  printf("  aligned_size[");
-  for (cpt = 0; cpt < gras_arch_count; cpt++) {
-    printf("%s%s%ld%s",
-           cpt > 0 ? ", " : "",
-           cpt == GRAS_THISARCH ? ">" : "",
-           ddt->aligned_size[cpt], cpt == GRAS_THISARCH ? "<" : "");
-  }
-  printf("]\n");
-  if (ddt->category_code == e_gras_datadesc_type_cat_struct) {
-    gras_dd_cat_struct_t struct_data;
-    gras_dd_cat_field_t field;
-
-    struct_data = ddt->category.struct_data;
-    xbt_dynar_foreach(struct_data.fields, cpt, field) {
-      printf(">>> Dump field #%d (%s) (offset=%ld)\n",
-             cpt, field->name, field->offset[GRAS_THISARCH]);
-      gras_datadesc_type_dump(field->type);
-      printf("<<< end dump field #%d (%s)\n", cpt, field->name);
-    }
-  }
-  fflush(stdout);
-}
diff --git a/src/gras/DataDesc/datadesc_interface.h b/src/gras/DataDesc/datadesc_interface.h
deleted file mode 100644 (file)
index d9bdfd5..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-/* datadesc - describing the data to exchange                               */
-
-/* module's public interface exported within GRAS, but not to end user.     */
-
-/* Copyright (c) 2004, 2005, 2006, 2007, 2009, 2010. The SimGrid Team.
- * All rights reserved.                                                     */
-
-/* This program is free software; you can redistribute it and/or modify it
- * under the terms of the license (GNU LGPL) which comes with this package. */
-
-#ifndef GRAS_DATADESC_INTERFACE_H
-#define GRAS_DATADESC_INTERFACE_H
-
-XBT_PUBLIC(gras_datadesc_type_t) gras_datadesc_by_id(long int code);
-
-/* to debug */
-XBT_PUBLIC(void) gras_datadesc_type_dump(const gras_datadesc_type_t ddt);
-XBT_PUBLIC(const char *) gras_datadesc_arch_name(int code);
-
-/* compare two data type description */
-XBT_PUBLIC(int)
-gras_datadesc_type_cmp(const gras_datadesc_type_t d1,
-                       const gras_datadesc_type_t d2);
-
-/* Access function */
-XBT_PUBLIC(int) gras_datadesc_size(gras_datadesc_type_t type);
-/* Described data exchanges: direct use */
-XBT_PUBLIC(int) gras_datadesc_memcpy(gras_datadesc_type_t type, void *src,
-                                     void *dst);
-XBT_PUBLIC(void) gras_datadesc_send(gras_socket_t sock,
-                                    gras_datadesc_type_t type, void *src);
-XBT_PUBLIC(void) gras_datadesc_recv(gras_socket_t sock,
-                                    gras_datadesc_type_t type, int r_arch,
-                                    void *dst);
-
-/* Described data exchanges: IDL compilation FIXME: not implemented*/
-void gras_datadesc_gen_cpy(gras_datadesc_type_t type, void *src,
-                           void **dst);
-void gras_datadesc_gen_send(gras_socket_t sock,
-                            gras_datadesc_type_t type, void *src);
-void gras_datadesc_gen_recv(gras_socket_t sock,
-                            gras_datadesc_type_t type, int r_arch,
-                            void *dst);
-
-
-#endif                          /* GRAS_DATADESC_INTERFACE_H */
diff --git a/src/gras/DataDesc/datadesc_private.h b/src/gras/DataDesc/datadesc_private.h
deleted file mode 100644 (file)
index 1a7052d..0000000
+++ /dev/null
@@ -1,260 +0,0 @@
-/* datadesc - describing the data to exchange                               */
-
-/* module's private interface masked even to other parts of GRAS.           */
-
-/* Copyright (c) 2004, 2005, 2006, 2007, 2009, 2010. The SimGrid Team.
- * All rights reserved.                                                     */
-
-/* This program is free software; you can redistribute it and/or modify it
- * under the terms of the license (GNU LGPL) which comes with this package. */
-
-#ifndef GRAS_DATADESC_PRIVATE_H
-#define GRAS_DATADESC_PRIVATE_H
-
-#include "xbt/sysdep.h"
-#include "xbt/log.h"
-#include "xbt/dynar.h"
-#include "xbt/dict.h"
-#include "xbt/set.h"
-
-#include "portable.h"           /* GRAS_THISARCH */
-
-#include "gras/transport.h"     /* socket handling */
-
-#include "gras_modinter.h"      /* module init/exit */
-#include "gras/datadesc.h"      /* rest of module public interface */
-
-#include "gras/DataDesc/datadesc_interface.h"   /* semi-public API */
-
-/**
- * ddt_aligned:
- *
- * Align the data v on the boundary a.
- */
-#define ddt_aligned(v, a) (((v) + (a - 1)) & ~(a - 1))
-
-/*@null@*/ extern xbt_set_t gras_datadesc_set_local;
-void gras_ddt_freev(void *ddt);
-/*******************************************
- * Descriptions of all known architectures *
- *******************************************/
-
-#define gras_arch_count 12
-typedef enum {
-  gras_ddt_scalar_char = 0,
-  gras_ddt_scalar_short = 1,
-  gras_ddt_scalar_int = 2,
-  gras_ddt_scalar_long = 3,
-  gras_ddt_scalar_long_long = 4,
-
-  gras_ddt_scalar_pdata = 5,
-  gras_ddt_scalar_pfunc = 6,
-
-  gras_ddt_scalar_float = 7,
-  gras_ddt_scalar_double = 8
-} gras_ddt_scalar_type_t;
-
-typedef struct {
-  const char *name;
-
-  int endian;
-
-  int sizeofs[9];               /* char,short,int,long,long_long,pdata,pfunc,float,double */
-  int boundaries[9];            /* idem */
-} gras_arch_desc_t;
-
-extern const gras_arch_desc_t gras_arches[gras_arch_count];
-extern const char *gras_datadesc_cat_names[9];
-
-/**********************************************************/
-/* Actual definitions of the stuff in the type descriptor */
-/**********************************************************/
-
-/**
- * e_gras_datadesc_type_category:
- *
- * Defines all possible type categories.
- */
-typedef enum e_gras_datadesc_type_category {
-
-  /* if you edit this, also fix gras_datadesc_cat_names in ddt_exchange.c */
-
-  e_gras_datadesc_type_cat_undefined = 0,
-
-  e_gras_datadesc_type_cat_scalar = 1,
-  e_gras_datadesc_type_cat_struct = 2,
-  e_gras_datadesc_type_cat_union = 3,
-  e_gras_datadesc_type_cat_ref = 4,     /* ref to an uniq element */
-  e_gras_datadesc_type_cat_array = 5,
-
-  e_gras_datadesc_type_cat_invalid = 6
-} gras_datadesc_type_category_t;
-
-/*------------------------------------------------*/
-/* definitions of specific data for each category */
-/*------------------------------------------------*/
-/**
- * s_gras_dd_cat_field:
- *
- * Fields of struct and union
- */
-typedef struct s_gras_dd_cat_field {
-
-  char *name;
-  long int offset[gras_arch_count];
-  gras_datadesc_type_t type;
-
-  gras_datadesc_type_cb_void_t send;
-  gras_datadesc_type_cb_void_t recv;
-
-} s_gras_dd_cat_field_t, *gras_dd_cat_field_t;
-
-void gras_dd_cat_field_free(void *f);
-
-/**
- * gras_dd_cat_scalar_t:
- *
- * Specific fields of a scalar
- */
-enum e_gras_dd_scalar_encoding {
-  e_gras_dd_scalar_encoding_undefined = 0,
-
-  e_gras_dd_scalar_encoding_uint,
-  e_gras_dd_scalar_encoding_sint,
-  e_gras_dd_scalar_encoding_float,
-
-  e_gras_dd_scalar_encoding_invalid
-};
-typedef struct s_gras_dd_cat_scalar {
-  enum e_gras_dd_scalar_encoding encoding;
-  gras_ddt_scalar_type_t type;  /* to check easily that redefinition matches */
-} gras_dd_cat_scalar_t;
-
-/**
- * gras_dd_cat_struct_t:
- *
- * Specific fields of a struct
- */
-typedef struct s_gras_dd_cat_struct {
-  xbt_dynar_t fields;           /* elm type = gras_dd_cat_field_t */
-  int closed;                   /* gras_datadesc_declare_struct_close() was called */
-} gras_dd_cat_struct_t;
-
-/**
- * gras_dd_cat_union_t:
- *
- * Specific fields of a union
- */
-typedef struct s_gras_dd_cat_union {
-  gras_datadesc_type_cb_int_t selector;
-  xbt_dynar_t fields;           /* elm type = gras_dd_cat_field_t */
-  int closed;                   /* gras_datadesc_declare_union_close() was called */
-} gras_dd_cat_union_t;
-
-/**
- * gras_dd_cat_ref_t:
- *
- * Specific fields of a reference
- */
-typedef struct s_gras_dd_cat_ref {
-  gras_datadesc_type_t type;
-
-  /* callback used to return the referenced type number  */
-  gras_datadesc_selector_t selector;
-} gras_dd_cat_ref_t;
-
-
-/**
- * gras_dd_cat_array_t:
- *
- * Specific fields of an array
- */
-typedef struct s_gras_dd_cat_array {
-  gras_datadesc_type_t type;
-
-  /* element_count == -1 means dynamically defined */
-  long int fixed_size;
-
-  /* callback used to return the dynamic length */
-  gras_datadesc_type_cb_int_t dynamic_size;
-
-} gras_dd_cat_array_t;
-
-/**
- * u_gras_datadesc_category:
- *
- * Specific data to each possible category
- */
-union u_gras_datadesc_category {
-  void *undefined_data;
-  gras_dd_cat_scalar_t scalar_data;
-  gras_dd_cat_struct_t struct_data;
-  gras_dd_cat_union_t union_data;
-  gras_dd_cat_ref_t ref_data;
-  gras_dd_cat_array_t array_data;
-};
-
-/****************************************/
-/* The holy grail: type descriptor type */
-/****************************************/
-/**
- * s_gras_datadesc_type:
- *
- * Type descriptor.
- */
-typedef struct s_gras_datadesc_type {
-  /* headers for the data set */
-  int code;
-  char *name;
-  unsigned int name_len;
-
-  /* payload */
-  long int size[gras_arch_count];       /* Cannot be unsigned: -1 means dynamic */
-
-  unsigned long int alignment[gras_arch_count];
-  unsigned long int aligned_size[gras_arch_count];
-
-  enum e_gras_datadesc_type_category category_code;
-  union u_gras_datadesc_category category;
-
-  gras_datadesc_type_cb_void_t send;
-  gras_datadesc_type_cb_void_t recv;
-
-  /* flags */
-  int cycle:1;
-
-  /* random value for users (like default value or whatever) */
-  char extra[SIZEOF_MAX];
-
-} s_gras_datadesc_type_t;
-
-/***************************
- * constructor/desctructor *
- ***************************/
-void gras_datadesc_free(gras_datadesc_type_t * type);
-
-gras_datadesc_type_t
-gras_datadesc_scalar(const char *name,
-                     gras_ddt_scalar_type_t type,
-                     enum e_gras_dd_scalar_encoding encoding);
-
-/****************************************************
- * Callback persistant state constructor/destructor *
- ****************************************************/
-gras_cbps_t gras_cbps_new(void);
-void gras_cbps_free(gras_cbps_t * state);
-void gras_cbps_reset(gras_cbps_t state);
-
-/***************
- * Convertions *
- ***************/
-void
-gras_dd_convert_elm(gras_datadesc_type_t type, int count,
-                    int r_arch, void *src, void *dst);
-
-/********************************************************************
- * Dictionnary containing the constant values for the parsing macro *
- ********************************************************************/
-extern xbt_dict_t gras_dd_constants;    /* lives in ddt_parse.c of course */
-
-#endif                          /* GRAS_DATADESC_PRIVATE_H */
diff --git a/src/gras/DataDesc/ddt_parse.yy.h b/src/gras/DataDesc/ddt_parse.yy.h
deleted file mode 100644 (file)
index 025bbbb..0000000
+++ /dev/null
@@ -1,64 +0,0 @@
-/* ddt_parse.h -- automatic parsing of data structures                      */
-
-/* Copyright (c) 2004, 2006, 2007, 2009, 2010. The SimGrid Team.
- * All rights reserved.                                                     */
-
-/* This program is free software; you can redistribute it and/or modify it
- * under the terms of the license (GNU LGPL) which comes with this package. */
-
-typedef enum {
-  GRAS_DDT_PARSE_TOKEN_EMPTY = 0,
-  GRAS_DDT_PARSE_TOKEN_LA = 512,        /* { 'A' for the french "accolade" since there is a name conflict in english (braket/brace) */
-  GRAS_DDT_PARSE_TOKEN_RA,      /* } */
-  GRAS_DDT_PARSE_TOKEN_LB,      /* [ */
-  GRAS_DDT_PARSE_TOKEN_RB,      /* ] */
-  GRAS_DDT_PARSE_TOKEN_LP,      /* ( */
-  GRAS_DDT_PARSE_TOKEN_RP,      /* ) */
-  GRAS_DDT_PARSE_TOKEN_WORD,
-  GRAS_DDT_PARSE_TOKEN_SPACE,
-  GRAS_DDT_PARSE_TOKEN_COMMENT,
-  GRAS_DDT_PARSE_TOKEN_ANNOTATE,
-  GRAS_DDT_PARSE_TOKEN_NEWLINE,
-  GRAS_DDT_PARSE_TOKEN_STAR,
-  GRAS_DDT_PARSE_TOKEN_SEMI_COLON,
-  GRAS_DDT_PARSE_TOKEN_COLON,   /* impossible since the macro think that it's a arg separator. 
-                                   But handle anyway for the *vicious* calling gras_ddt_parse manually */
-  GRAS_DDT_PARSE_TOKEN_ERROR
-} gras_ddt_parse_token_t;
-
-#define GRAS_DDT_PARSE_MAX_STR_CONST 4048
-
-extern int gras_ddt_parse_line_pos;
-extern int gras_ddt_parse_col_pos;
-extern int gras_ddt_parse_char_pos;
-extern int gras_ddt_parse_tok_num;
-
-void gras_ddt_parse_dump(void);
-int gras_ddt_parse_lex_n_dump(void);
-void gras_ddt_parse_pointer_init(const char *file);
-void gras_ddt_parse_pointer_close(void);
-void gras_ddt_parse_pointer_string_init(const char *string_to_parse);
-void gras_ddt_parse_pointer_string_close(void);
-
-/* prototypes of the functions offered by flex */
-int gras_ddt_parse_lex(void);
-int gras_ddt_parse_get_lineno(void);
-FILE *gras_ddt_parse_get_in(void);
-FILE *gras_ddt_parse_get_out(void);
-int gras_ddt_parse_get_leng(void);
-char *gras_ddt_parse_get_text(void);
-void gras_ddt_parse_set_lineno(int line_number);
-void gras_ddt_parse_set_in(FILE * in_str);
-void gras_ddt_parse_set_out(FILE * out_str);
-int gras_ddt_parse_get_debug(void);
-void gras_ddt_parse_set_debug(int bdebug);
-int gras_ddt_parse_lex_destroy(void);
-
-#define PARSE_ERROR(...)                                                \
-  PARSE_ERROR_(__VA_ARGS__,                                             \
-               gras_ddt_parse_line_pos, gras_ddt_parse_col_pos, definition)
-#define PARSE_ERROR_(fmt, ...)                           \
-  do {                                                   \
-    XBT_ERROR(fmt " at %d:%d of :\n%s", __VA_ARGS__);   \
-    xbt_abort();                                         \
-  } while (0)
diff --git a/src/gras/DataDesc/ddt_parse.yy.l b/src/gras/DataDesc/ddt_parse.yy.l
deleted file mode 100644 (file)
index 29d029d..0000000
+++ /dev/null
@@ -1,238 +0,0 @@
-/* DataDesc/ddt_parse -- automatic parsing of data structures */
-
-/* Copyright (c) 2004 Arnaud Legrand, Martin Quinson. All rights reserved.  */
-
-/* This program is free software; you can redistribute it and/or modify it
- * under the terms of the license (GNU LGPL) which comes with this package. */
-
-%option noyywrap
-%{
-#include "gras/DataDesc/datadesc_private.h"
-#include "gras/DataDesc/ddt_parse.yy.h"
-#include <string.h>
-  YY_BUFFER_STATE gras_ddt_input_buffer;
-  FILE *gras_ddt_file_to_parse;
-
-  int gras_ddt_parse_line_pos = 1;
-  int gras_ddt_parse_col_pos = 0;
-  int gras_ddt_parse_char_pos = 0;
-  int gras_ddt_parse_tok_num = 0;
-  const char *definition;
-  XBT_LOG_NEW_DEFAULT_SUBCATEGORY(gras_ddt_lexer,gras_ddt_parse,"The crude internals of the lexer used for type parsing");
-#define SHOW_WHERE XBT_DEBUG("%d:%d (char #%d): seen '%s'", gras_ddt_parse_line_pos,gras_ddt_parse_col_pos,gras_ddt_parse_char_pos,yytext)
-%}
-
-%x annotate comment foo
-space           [ \t]
-letter          [A-Za-z._-]
-digit           [0-9]
-
-%%
-   int comment_caller=0;
-   int annotate_caller=0;
-
-"//"[^\n]*
-
-"/*g"{space}* { /****************** ANNOTATION ************************/
-  XBT_DEBUG("Begin annotation");
-  annotate_caller = INITIAL;
-  gras_ddt_parse_char_pos+= strlen(yytext);
-  gras_ddt_parse_col_pos+= strlen(yytext);
-  BEGIN(annotate);
-}
-<foo>"/*g"{space}* { /* trim annotation */
-  XBT_DEBUG("Begin annotation");
-  annotate_caller = foo;
-  gras_ddt_parse_char_pos+= strlen(yytext);
-  gras_ddt_parse_col_pos+= strlen(yytext);
-  BEGIN(annotate);
-}
-
-<annotate>{space}*"g*/" {
-  XBT_DEBUG("End annotation");
-  gras_ddt_parse_char_pos+= strlen(yytext);
-  gras_ddt_parse_col_pos+= strlen(yytext);
-  BEGIN(annotate_caller);
-}
-
-<annotate>"*/" {
-  PARSE_ERROR("``/*g'' construct closed by a regular ``*/''");
-}
-<annotate>\n  {
-  PARSE_ERROR("Type annotation cannot spread over several lines");
-}
-
-<annotate>.* { /* eat the rest */
-  gras_ddt_parse_char_pos+= strlen(yytext);
-  gras_ddt_parse_col_pos+= strlen(yytext);
-  return GRAS_DDT_PARSE_TOKEN_ANNOTATE;
-}
-
-"/*[^g]"   { /****************** COMMENTS ************************/
-  /* constructs like : */
-    /*g [string] g*/ 
-  /* are not comments but size annotations */
-  comment_caller = INITIAL;
-  BEGIN(comment);
-}
-
-<foo>"/*[^g]"    {
-  comment_caller = foo;
-  BEGIN(comment);
-}
-
-<comment>[^*\n]*      { /* eat anything that's not a '*' */
-}
-<comment>"*"+[^*/\n]* { /* eat up '*'s not followed by '/'s */
-}
-<comment>\n             {
-  ++gras_ddt_parse_line_pos;
-  gras_ddt_parse_col_pos=0;
-  gras_ddt_parse_char_pos++;
-}
-<comment>"*"+"/" {
-  gras_ddt_parse_char_pos+= strlen(yytext);
-  gras_ddt_parse_col_pos+= strlen(yytext);
-  BEGIN(comment_caller);
-}
-
-({letter}|{digit})* {  /****************** STATEMENTS ************************/
-  gras_ddt_parse_char_pos += strlen(yytext);
-  gras_ddt_parse_col_pos += strlen(yytext);
-  SHOW_WHERE;
-  return(GRAS_DDT_PARSE_TOKEN_WORD);
-}
-"{"  { 
-  gras_ddt_parse_char_pos++; 
-  gras_ddt_parse_col_pos++; 
-  SHOW_WHERE;
-  return(GRAS_DDT_PARSE_TOKEN_LA);
-}
-"}" {
-  gras_ddt_parse_char_pos++;
-  gras_ddt_parse_col_pos++;
-  SHOW_WHERE;
-  return(GRAS_DDT_PARSE_TOKEN_RA);
-}
-"["  { 
-  gras_ddt_parse_char_pos++; 
-  gras_ddt_parse_col_pos++; 
-  SHOW_WHERE;
-  return(GRAS_DDT_PARSE_TOKEN_LB);
-}
-"]" {
-  gras_ddt_parse_char_pos++;
-  gras_ddt_parse_col_pos++;
-  SHOW_WHERE;
-  return(GRAS_DDT_PARSE_TOKEN_RB);
-}
-"("  { 
-  gras_ddt_parse_char_pos++; 
-  gras_ddt_parse_col_pos++; 
-  SHOW_WHERE;
-  return(GRAS_DDT_PARSE_TOKEN_LP);
-}
-")" {
-  gras_ddt_parse_char_pos++;
-  gras_ddt_parse_col_pos++;
-  SHOW_WHERE;
-  return(GRAS_DDT_PARSE_TOKEN_RP);
-}
-"*" {
-  gras_ddt_parse_char_pos++;
-  gras_ddt_parse_col_pos++;
-  SHOW_WHERE;
-  return(GRAS_DDT_PARSE_TOKEN_STAR);
-}
-";" {
-  gras_ddt_parse_char_pos++;
-  gras_ddt_parse_col_pos++;
-  SHOW_WHERE;
-  return(GRAS_DDT_PARSE_TOKEN_SEMI_COLON);
-}
-"," { 
-  gras_ddt_parse_char_pos++;
-  gras_ddt_parse_col_pos++;
-  SHOW_WHERE;
-  return(GRAS_DDT_PARSE_TOKEN_COLON);
-}
-"\n" {
- gras_ddt_parse_line_pos++; 
- gras_ddt_parse_char_pos++;
- gras_ddt_parse_col_pos=0;
-  SHOW_WHERE;
-}
-. { 
-  gras_ddt_parse_char_pos++;
-  gras_ddt_parse_col_pos++;
-  SHOW_WHERE;
-}
-%%
-/* {space}+                { return(TOKEN_SPACE);} */
-
-void gras_ddt_parse_dump(void) {
-  switch(gras_ddt_parse_tok_num) {
-  case GRAS_DDT_PARSE_TOKEN_LA      : {printf("TOKEN_LA ");break;}
-  case GRAS_DDT_PARSE_TOKEN_RA      : {printf("TOKEN_RA ");break;}
-  case GRAS_DDT_PARSE_TOKEN_WORD    : {printf("TOKEN_WORD ");break;}
-    /*  case GRAS_DDT_PARSE_TOKEN_SPACE   : {printf("TOKEN_SPACE ");break;}*/
-    /*  case GRAS_DDT_PARSE_TOKEN_COMMENT : {printf("TOKEN_COMMENT ");break;}*/
-  case GRAS_DDT_PARSE_TOKEN_NEWLINE : {printf("TOKEN_NEWLINE\n");return;}
-  case GRAS_DDT_PARSE_TOKEN_EMPTY : {printf("TOKEN_EMPTY\n");return;}
-  default             : {printf("Unknown token %d\n", gras_ddt_parse_tok_num);return;}
-  }
-  printf("-->%s<-- [line %d, pos %d]\n",yytext,gras_ddt_parse_line_pos,gras_ddt_parse_char_pos);
-  return;
-}
-
-int gras_ddt_parse_lex_n_dump(void) {
-  gras_ddt_parse_tok_num = gras_ddt_parse_lex();
-  /*  gras_ddt_parse_char_pos += strlen(yytext);*/
-  return(gras_ddt_parse_tok_num);
-}
-
-void  gras_ddt_parse_pointer_init(const char *file) {
-  gras_ddt_file_to_parse = fopen(file,"r");
-  gras_ddt_input_buffer = yy_create_buffer( gras_ddt_file_to_parse, 10 );
-  yy_switch_to_buffer(gras_ddt_input_buffer);
-
-  gras_ddt_parse_line_pos = 1;
-  gras_ddt_parse_char_pos = 0;
-  gras_ddt_parse_col_pos = 0;
-  gras_ddt_parse_tok_num = 0;
-}
-
-void  gras_ddt_parse_pointer_close(void) {
-  yy_delete_buffer(gras_ddt_input_buffer);
-  fclose(gras_ddt_file_to_parse);
-
-  gras_ddt_parse_line_pos = 1;
-  gras_ddt_parse_char_pos = 0;
-  gras_ddt_parse_tok_num = 0;
-}
-
-
-void  gras_ddt_parse_pointer_string_init(const char *string_to_parse) {
-  gras_ddt_input_buffer = yy_scan_string (string_to_parse);
-  definition = string_to_parse;
-  yy_switch_to_buffer(gras_ddt_input_buffer);
-
-  gras_ddt_parse_line_pos = 1;
-  gras_ddt_parse_char_pos = 0;
-  gras_ddt_parse_tok_num = 0;
-}
-
-void  gras_ddt_parse_pointer_string_close(void) {
-  yy_delete_buffer(gras_ddt_input_buffer);
-
-  gras_ddt_parse_line_pos = 1;
-  gras_ddt_parse_char_pos = 0;
-  gras_ddt_parse_tok_num = 0;
-
-  if (0)
-    yyunput('\0',NULL); /* fake a use of this function to calm gcc down */
-}
-
-/* Local variables:*/
-/* mode: c */
-/* End: */
index 66f6e64..993ae1e 100644 (file)
@@ -8,6 +8,7 @@
 
 #include "xbt/ex.h"
 #include "xbt/ex_interface.h"
+#include "xbt/socket.h"
 #include "gras/Msg/msg_private.h"
 #include "gras/Virtu/virtu_interface.h"
 
@@ -35,7 +36,7 @@ const char *e_gras_msg_kind_names[e_gras_msg_kind_count] =
 void
 gras_msg_wait_ext_(double timeout,
                    gras_msgtype_t msgt_want,
-                   gras_socket_t expe_want,
+                   xbt_socket_t expe_want,
                    gras_msg_filter_t filter,
                    void *filter_ctx, gras_msg_t msg_got)
 {
@@ -54,8 +55,8 @@ gras_msg_wait_ext_(double timeout,
 
   xbt_dynar_foreach(pd->msg_waitqueue, cpt, msg) {
     if ((!msgt_want || (msg.type->code == msgt_want->code))
-        && (!expe_want || (!strcmp(gras_socket_peer_name(msg.expe),
-                                   gras_socket_peer_name(expe_want))))
+        && (!expe_want || (!strcmp(xbt_socket_peer_name(msg.expe),
+                                   xbt_socket_peer_name(expe_want))))
         && (!filter || filter(&msg, filter_ctx))) {
 
       memcpy(msg_got, &msg, sizeof(s_gras_msg_t));
@@ -67,8 +68,8 @@ gras_msg_wait_ext_(double timeout,
 
   xbt_dynar_foreach(pd->msg_queue, cpt, msg) {
     if ((!msgt_want || (msg.type->code == msgt_want->code))
-        && (!expe_want || (!strcmp(gras_socket_peer_name(msg.expe),
-                                   gras_socket_peer_name(expe_want))))
+        && (!expe_want || (!strcmp(xbt_socket_peer_name(msg.expe),
+                                   xbt_socket_peer_name(expe_want))))
         && (!filter || filter(&msg, filter_ctx))) {
 
       memcpy(msg_got, &msg, sizeof(s_gras_msg_t));
@@ -107,8 +108,8 @@ gras_msg_wait_ext_(double timeout,
     XBT_DEBUG("Got a message from the socket");
 
     if ((!msgt_want || (msg.type->code == msgt_want->code))
-        && (!expe_want || (!strcmp(gras_socket_peer_name(msg.expe),
-                                   gras_socket_peer_name(expe_want))))
+        && (!expe_want || (!strcmp(xbt_socket_peer_name(msg.expe),
+                                   xbt_socket_peer_name(expe_want))))
         && (!filter || filter(&msg, filter_ctx))) {
 
       memcpy(msg_got, &msg, sizeof(s_gras_msg_t));
@@ -145,7 +146,7 @@ gras_msg_wait_ext_(double timeout,
 void
 gras_msg_wait_(double timeout,
                gras_msgtype_t msgt_want,
-               gras_socket_t * expeditor, void *payload)
+               xbt_socket_t * expeditor, void *payload)
 {
   s_gras_msg_t msg;
 
@@ -230,7 +231,7 @@ void gras_msg_wait_or(double timeout,
 
 /** \brief Send the data pointed by \a payload as a message of type
  * \a msgtype to the peer \a sock */
-void gras_msg_send_(gras_socket_t sock, gras_msgtype_t msgtype,
+void gras_msg_send_(xbt_socket_t sock, gras_msgtype_t msgtype,
                     void *payload)
 {
 
@@ -382,7 +383,7 @@ void gras_msg_handle(volatile double timeOut)
     XBT_INFO
         ("No callback for message '%s' (type:%s) from %s:%d. Queue it for later gras_msg_wait() use.",
          msg.type->name, e_gras_msg_kind_names[msg.kind],
-         gras_socket_peer_name(msg.expe), gras_socket_peer_port(msg.expe));
+         xbt_socket_peer_name(msg.expe), xbt_socket_peer_port(msg.expe));
     xbt_dynar_push(pd->msg_waitqueue, &msg);
     return;                     /* FIXME: maybe we should call ourselves again until the end of the timer or a proper msg is got */
   }
@@ -429,8 +430,8 @@ void gras_msg_handle(volatile double timeOut)
         XBT_INFO
             ("Propagate %s exception ('%s') from '%s' RPC cb back to %s:%d",
              (e.remote ? "remote" : "local"), e.msg, msg.type->name,
-             gras_socket_peer_name(msg.expe),
-             gras_socket_peer_port(msg.expe));
+             xbt_socket_peer_name(msg.expe),
+             xbt_socket_peer_port(msg.expe));
         if (XBT_LOG_ISENABLED(gras_msg, xbt_log_priority_verbose))
           xbt_ex_display(&e);
         gras_msg_send_ext(msg.expe, e_gras_msg_kind_rpcerror,
@@ -458,24 +459,24 @@ void gras_msg_handle(volatile double timeOut)
       THROWF(mismatch_error, 0,
              "Message '%s' refused by all registered callbacks (maybe your callback misses a 'return 0' at the end)",
              msg.type->name);
-    /* FIXME: gras_datadesc_free not implemented => leaking the payload */
+    /* FIXME: xbt_datadesc_free not implemented => leaking the payload */
     break;
 
 
   case e_gras_msg_kind_rpcanswer:
     XBT_INFO("Unexpected RPC answer discarded (type: %s; from:%s:%d)",
-          msg.type->name, gras_socket_peer_name(msg.expe),
-          gras_socket_peer_port(msg.expe));
+          msg.type->name, xbt_socket_peer_name(msg.expe),
+          xbt_socket_peer_port(msg.expe));
     XBT_WARN
-        ("FIXME: gras_datadesc_free not implemented => leaking the payload");
+        ("FIXME: xbt_datadesc_free not implemented => leaking the payload");
     return;
 
   case e_gras_msg_kind_rpcerror:
     XBT_INFO("Unexpected RPC error discarded (type: %s; from:%s:%d)",
-          msg.type->name, gras_socket_peer_name(msg.expe),
-          gras_socket_peer_port(msg.expe));
+          msg.type->name, xbt_socket_peer_name(msg.expe),
+          xbt_socket_peer_port(msg.expe));
     XBT_WARN
-        ("FIXME: gras_datadesc_free not implemented => leaking the payload");
+        ("FIXME: xbt_datadesc_free not implemented => leaking the payload");
     return;
 
   default:
index dbe87a0..a08ee25 100644 (file)
@@ -21,8 +21,8 @@ typedef struct s_gras_msg_listener_ {
   xbt_thread_t listener; /* keep this first, gras_socket_im_the_server() does funky transtyping in sg_msg.c */
   xbt_queue_t incomming_messages;       /* messages received from the wire and still to be used by master */
   xbt_queue_t socks_to_close;   /* let the listener close the sockets, since it may be selecting on them. Darwin don't like this trick */
-  gras_socket_t wakeup_sock_listener_side;
-  gras_socket_t wakeup_sock_master_side;
+  xbt_socket_t wakeup_sock_listener_side;
+  xbt_socket_t wakeup_sock_master_side;
   int port; /* The port on which the listener opened the command socket */
   xbt_mutex_t init_mutex;       /* both this mutex and condition are used at initialization to make sure that */
   xbt_cond_t init_cond;         /* the main thread speaks to the listener only once it is started (FIXME: It would be easier using a semaphore, if only semaphores were in xbt_synchro) */
@@ -62,7 +62,7 @@ static void listener_function(void *p)
   while (1) {
     msg = gras_msg_recv_any();
     if (msg->type != msg_wakeup_listener_t) {
-               /* Cannot display who sent this since in SG, gras_socket_peer_* wont work:
+               /* Cannot display who sent this since in SG, xbt_socket_peer_* wont work:
                   I'm not the user process but I'm just the listener. Too bad */
       XBT_VERB("Got a '%s' message (%s) from sock %p. Queue it for handling by main thread",
             gras_msgtype_get_name(msg->type),e_gras_msg_kind_names[msg->kind],msg->expe);
@@ -116,7 +116,7 @@ gras_msg_listener_t gras_msg_listener_launch(xbt_queue_t msg_received)
   arg->init_cond = xbt_cond_init();
 
   /* declare the message used to awake the listener from the master */
-  gras_msgtype_declare("_wakeup_listener", gras_datadesc_by_name("char"));
+  gras_msgtype_declare("_wakeup_listener", xbt_datadesc_by_name("char"));
 
   /* actually start the thread, and */
   /* wait for the listener to initialize before we connect to its socket */
index 0054640..a2f5d07 100644 (file)
@@ -9,7 +9,7 @@
 #include "xbt/ex.h"
 #include "gras/Msg/msg_private.h"
 #include "gras/Virtu/virtu_interface.h"
-#include "gras/DataDesc/datadesc_interface.h"
+#include "xbt/datadesc/datadesc_interface.h"
 
 XBT_LOG_NEW_DEFAULT_SUBCATEGORY(gras_msg, gras, "High level messaging");
 
@@ -44,11 +44,11 @@ void gras_msgtype_dumpall(void)
     XBT_INFO("  Message name: %s (v%d) %s; %s%s%s",
           msgtype->name, msgtype->version,
           e_gras_msg_kind_names[msgtype->kind],
-          gras_datadesc_get_name(msgtype->ctn_type),
+          xbt_datadesc_get_name(msgtype->ctn_type),
           (msgtype->kind == e_gras_msg_kind_rpccall ? " -> " : ""),
           (msgtype->kind ==
            e_gras_msg_kind_rpccall ?
-           gras_datadesc_get_name(msgtype->answer_type) : ""));
+           xbt_datadesc_get_name(msgtype->answer_type) : ""));
   }
 }
 
@@ -72,8 +72,8 @@ void
 gras_msgtype_declare_ext(const char *name,
                          short int version,
                          e_gras_msg_kind_t kind,
-                         gras_datadesc_type_t payload_request,
-                         gras_datadesc_type_t payload_answer)
+                         xbt_datadesc_type_t payload_request,
+                         xbt_datadesc_type_t payload_answer)
 {
 
   gras_msgtype_t msgtype = NULL;
@@ -90,17 +90,17 @@ gras_msgtype_declare_ext(const char *name,
                 "Message %s re-registered as a %s (it was known as a %s)",
                 namev, e_gras_msg_kind_names[kind],
                 e_gras_msg_kind_names[msgtype->kind]);
-    xbt_assert(!gras_datadesc_type_cmp
+    xbt_assert(!xbt_datadesc_type_cmp
                 (msgtype->ctn_type, payload_request),
                 "Message %s re-registered with another payload (%s was %s)",
-                namev, gras_datadesc_get_name(payload_request),
-                gras_datadesc_get_name(msgtype->ctn_type));
+                namev, xbt_datadesc_get_name(payload_request),
+                xbt_datadesc_get_name(msgtype->ctn_type));
 
-    xbt_assert(!gras_datadesc_type_cmp
+    xbt_assert(!xbt_datadesc_type_cmp
                 (msgtype->answer_type, payload_answer),
                 "Message %s re-registered with another answer payload (%s was %s)",
-                namev, gras_datadesc_get_name(payload_answer),
-                gras_datadesc_get_name(msgtype->answer_type));
+                namev, xbt_datadesc_get_name(payload_answer),
+                xbt_datadesc_get_name(msgtype->answer_type));
 
     xbt_free(namev);
     return;                     /* do really ignore it */
@@ -108,8 +108,8 @@ gras_msgtype_declare_ext(const char *name,
 
   XBT_VERB("Register version %d of message '%s' "
         "(payload: %s; answer payload: %s).",
-        version, name, gras_datadesc_get_name(payload_request),
-        gras_datadesc_get_name(payload_answer));
+        version, name, xbt_datadesc_get_name(payload_request),
+        xbt_datadesc_get_name(payload_answer));
 
   msgtype = xbt_new(s_gras_msgtype_t, 1);
   msgtype->name = namev;
@@ -129,7 +129,7 @@ gras_msgtype_declare_ext(const char *name,
  * @param name: name as it should be used for logging messages (must be uniq)
  * @param payload: datadescription of the payload
  */
-void gras_msgtype_declare(const char *name, gras_datadesc_type_t payload)
+void gras_msgtype_declare(const char *name, xbt_datadesc_type_t payload)
 {
   gras_msgtype_declare_ext(name, 0, e_gras_msg_kind_oneway, payload, NULL);
 }
@@ -150,7 +150,7 @@ void gras_msgtype_declare(const char *name, gras_datadesc_type_t payload)
  */
 void
 gras_msgtype_declare_v(const char *name,
-                       short int version, gras_datadesc_type_t payload)
+                       short int version, xbt_datadesc_type_t payload)
 {
 
   gras_msgtype_declare_ext(name, version,
@@ -294,13 +294,13 @@ void gras_cb_unregister_(gras_msgtype_t msgtype, gras_msg_cb_t cb)
 }
 
 /** \brief Retrieve the expeditor of the message */
-gras_socket_t gras_msg_cb_ctx_from(gras_msg_cb_ctx_t ctx)
+xbt_socket_t gras_msg_cb_ctx_from(gras_msg_cb_ctx_t ctx)
 {
   return ctx->expeditor;
 }
 
 /* \brief Creates a new message exchange context (user should never have to) */
-gras_msg_cb_ctx_t gras_msg_cb_ctx_new(gras_socket_t expe,
+gras_msg_cb_ctx_t gras_msg_cb_ctx_new(xbt_socket_t expe,
                                       gras_msgtype_t msgtype,
                                       unsigned long int ID,
                                       int answer_due, double timeout)
index b0c9543..68d1399 100644 (file)
@@ -13,6 +13,8 @@
 
 #include "gras/transport.h"
 #include "xbt/fifo.h"
+#include "xbt/dynar.h"
+#include "xbt/queue.h"
 
 /*
  * Data of this module specific to each process
@@ -45,7 +47,7 @@ typedef struct {
 } s_gras_msg_procdata_t, *gras_msg_procdata_t;
 
 
-void gras_msg_send_namev(gras_socket_t sock,
+void gras_msg_send_namev(xbt_socket_t sock,
                          const char *namev, void *payload);
 void gras_msg_listener_awake(void);
 void gras_msg_listener_close_socket(int sd);
index a124213..b79897a 100644 (file)
@@ -19,7 +19,7 @@
 #include "xbt/queue.h"
 #include "xbt/set.h"
 #include "gras/transport.h"
-#include "gras/datadesc.h"
+#include "xbt/datadesc.h"
 #include "gras/virtu.h"
 
 #include "gras/messages.h"
@@ -39,8 +39,8 @@ void
 gras_msgtype_declare_ext(const char *name,
                          short int version,
                          e_gras_msg_kind_t kind,
-                         gras_datadesc_type_t payload_request,
-                         gras_datadesc_type_t payload_answer);
+                         xbt_datadesc_type_t payload_request,
+                         xbt_datadesc_type_t payload_answer);
 
 /**
  * gras_msgtype_t:
@@ -56,8 +56,8 @@ typedef struct s_gras_msgtype {
   /* payload */
   short int version;
   e_gras_msg_kind_t kind;
-  gras_datadesc_type_t ctn_type;
-  gras_datadesc_type_t answer_type;     /* only used for RPC */
+  xbt_datadesc_type_t ctn_type;
+  xbt_datadesc_type_t answer_type;     /* only used for RPC */
 } s_gras_msgtype_t;
 
 extern xbt_set_t _gras_msgtype_set;     /* of gras_msgtype_t */
@@ -66,8 +66,8 @@ void gras_msgtype_free(void *msgtype);
 
 /* functions to extract msg from socket or put it on wire (depend RL vs SG) */
 gras_msg_t gras_msg_recv_any(void);     /* Get first message arriving */
-void gras_msg_recv(gras_socket_t sock, gras_msg_t msg /*OUT*/);
-void gras_msg_send_ext(gras_socket_t sock,
+void gras_msg_recv(xbt_socket_t sock, gras_msg_t msg /*OUT*/);
+void gras_msg_send_ext(xbt_socket_t sock,
                        e_gras_msg_kind_t kind,
                        unsigned long int ID,
                        gras_msgtype_t msgtype, void *payload);
@@ -98,7 +98,7 @@ void gras_cblist_free(void *cbl);
  * Context associated to a given callback (to either regular message or RPC)
  */
 struct s_gras_msg_cb_ctx {
-  gras_socket_t expeditor;
+  xbt_socket_t expeditor;
   gras_msgtype_t msgtype;
   unsigned long int ID;
   double timeout;
@@ -119,7 +119,7 @@ typedef struct {
 /* returns 0 if it handled a timer, or the delay until next timer, or -1 if no armed timer */
 double gras_msg_timer_handle(void);
 
-gras_msg_cb_ctx_t gras_msg_cb_ctx_new(gras_socket_t expe,
+gras_msg_cb_ctx_t gras_msg_cb_ctx_new(xbt_socket_t expe,
                                       gras_msgtype_t msgtype,
                                       unsigned long int ID,
                                       int answer_due, double timeout);
index d395371..a973c66 100644 (file)
@@ -7,15 +7,16 @@
  * under the terms of the license (GNU LGPL) which comes with this package. */
 
 #include "xbt/ex.h"
+#include "xbt/datadesc.h"
+#include "xbt/datadesc/datadesc_interface.h"
+#include "xbt/socket.h"
 #include "gras/Msg/msg_private.h"
-
-#include "gras/DataDesc/datadesc_interface.h"
-#include "gras/Transport/transport_interface.h" /* gras_trp_send/recv */
+#include "gras/Transport/transport_interface.h"
 
 XBT_LOG_EXTERNAL_CATEGORY(gras_msg);
 XBT_LOG_DEFAULT_CATEGORY(gras_msg);
 
-void gras_msg_recv(gras_socket_t sock, gras_msg_t msg);
+void gras_msg_recv(xbt_socket_t sock, gras_msg_t msg);
 
 gras_msg_t gras_msg_recv_any(void)
 {
@@ -26,31 +27,31 @@ gras_msg_t gras_msg_recv_any(void)
   return msg;
 }
 
-void gras_msg_send_ext(gras_socket_t sock,
+void gras_msg_send_ext(xbt_socket_t sock,
                        e_gras_msg_kind_t kind,
                        unsigned long int ID,
                        gras_msgtype_t msgtype, void *payload)
 {
 
-  static gras_datadesc_type_t string_type = NULL;
-  static gras_datadesc_type_t ulong_type = NULL;
+  static xbt_datadesc_type_t string_type = NULL;
+  static xbt_datadesc_type_t ulong_type = NULL;
   char c_kind = (char) kind;
 
   xbt_assert(msgtype, "Cannot send the NULL message");
 
   if (!string_type) {
-    string_type = gras_datadesc_by_name("string");
+    string_type = xbt_datadesc_by_name("string");
     xbt_assert(string_type);
   }
   if (!ulong_type) {
-    ulong_type = gras_datadesc_by_name("unsigned long int");
+    ulong_type = xbt_datadesc_by_name("unsigned long int");
     xbt_assert(ulong_type);
   }
 
   XBT_DEBUG("send '%s' to %s:%d", msgtype->name,
-         gras_socket_peer_name(sock), gras_socket_peer_port(sock));
-  gras_trp_send(sock, _GRAS_header, 6, 1 /* stable */ );
-  gras_trp_send(sock, &c_kind, 1, 1 /* stable */ );
+         xbt_socket_peer_name(sock), xbt_socket_peer_port(sock));
+  xbt_trp_send(sock, _GRAS_header, 6, 1 /* stable */ );
+  xbt_trp_send(sock, &c_kind, 1, 1 /* stable */ );
   switch (kind) {
   case e_gras_msg_kind_oneway:
     break;
@@ -58,27 +59,27 @@ void gras_msg_send_ext(gras_socket_t sock,
   case e_gras_msg_kind_rpccall:
   case e_gras_msg_kind_rpcanswer:
   case e_gras_msg_kind_rpcerror:
-    gras_datadesc_send(sock, ulong_type, &ID);
+    xbt_datadesc_send(sock, ulong_type, &ID);
     break;
 
   default:
     THROWF(unknown_error, 0, "Unknown msg kind %d", kind);
   }
 
-  gras_datadesc_send(sock, string_type, &msgtype->name);
+  xbt_datadesc_send(sock, string_type, &msgtype->name);
   if (kind == e_gras_msg_kind_rpcerror) {
     /* error on remote host, carfull, payload is an exception */
-    gras_datadesc_send(sock, gras_datadesc_by_name("ex_t"), payload);
+    xbt_datadesc_send(sock, xbt_datadesc_by_name("ex_t"), payload);
   } else if (kind == e_gras_msg_kind_rpcanswer) {
     if (msgtype->answer_type)
-      gras_datadesc_send(sock, msgtype->answer_type, payload);
+      xbt_datadesc_send(sock, msgtype->answer_type, payload);
   } else {
     /* regular message */
     if (msgtype->ctn_type)
-      gras_datadesc_send(sock, msgtype->ctn_type, payload);
+      xbt_datadesc_send(sock, msgtype->ctn_type, payload);
   }
 
-  gras_trp_flush(sock);
+  xbt_trp_flush(sock);
 }
 
 const char *hexa_str(unsigned char *data, int size, int downside);
@@ -87,34 +88,34 @@ const char *hexa_str(unsigned char *data, int size, int downside);
 /*
  * receive the next message on the given socket.
  */
-void gras_msg_recv(gras_socket_t sock, gras_msg_t msg)
+void gras_msg_recv(xbt_socket_t sock, gras_msg_t msg)
 {
 
   xbt_ex_t e;
-  static gras_datadesc_type_t string_type = NULL;
-  static gras_datadesc_type_t ulong_type = NULL;
+  static xbt_datadesc_type_t string_type = NULL;
+  static xbt_datadesc_type_t ulong_type = NULL;
   char header[6];
   int cpt;
   int r_arch;
   char *msg_name = NULL;
   char c_kind;
 
-  xbt_assert(!gras_socket_is_meas(sock),
+  xbt_assert(!xbt_socket_is_meas(sock),
               "Asked to receive a message on the measurement socket %p",
               sock);
   if (!string_type) {
-    string_type = gras_datadesc_by_name("string");
+    string_type = xbt_datadesc_by_name("string");
     xbt_assert(string_type);
   }
   if (!ulong_type) {
-    ulong_type = gras_datadesc_by_name("unsigned long int");
+    ulong_type = xbt_datadesc_by_name("unsigned long int");
     xbt_assert(ulong_type);
   }
 
 
   TRY {
-    gras_trp_recv(sock, header, 6);
-    gras_trp_recv(sock, &c_kind, 1);
+    xbt_trp_recv(sock, header, 6);
+    xbt_trp_recv(sock, &c_kind, 1);
     msg->kind = (e_gras_msg_kind_t) c_kind;
   }
   CATCH_ANONYMOUS {
@@ -139,18 +140,18 @@ void gras_msg_recv(gras_socket_t sock, gras_msg_t msg)
   case e_gras_msg_kind_rpccall:
   case e_gras_msg_kind_rpcanswer:
   case e_gras_msg_kind_rpcerror:
-    gras_datadesc_recv(sock, ulong_type, r_arch, &msg->ID);
+    xbt_datadesc_recv(sock, ulong_type, r_arch, &msg->ID);
     break;
 
   default:
     THROW_IMPOSSIBLE;
   }
 
-  gras_datadesc_recv(sock, string_type, r_arch, &msg_name);
+  xbt_datadesc_recv(sock, string_type, r_arch, &msg_name);
   XBT_DEBUG
       ("Handle an incoming message '%s' (%s) using protocol %d (remote is %s)",
        msg_name, e_gras_msg_kind_names[msg->kind], (int) header[4],
-       gras_datadesc_arch_name(r_arch));
+       xbt_datadesc_arch_name(r_arch));
 
   TRY {
     msg->type =
@@ -172,21 +173,21 @@ void gras_msg_recv(gras_socket_t sock, gras_msg_t msg)
 
   if (msg->kind == e_gras_msg_kind_rpcerror) {
     /* error on remote host. Carfull with that exception, eugene */
-    msg->payl_size = gras_datadesc_size(gras_datadesc_by_name("ex_t"));
+    msg->payl_size = xbt_datadesc_size(xbt_datadesc_by_name("ex_t"));
     msg->payl = xbt_malloc(msg->payl_size);
-    gras_datadesc_recv(sock, gras_datadesc_by_name("ex_t"), r_arch,
+    xbt_datadesc_recv(sock, xbt_datadesc_by_name("ex_t"), r_arch,
                        msg->payl);
 
   } else if (msg->kind == e_gras_msg_kind_rpcanswer) {
     /* answer to RPC */
     if (msg->type->answer_type) {
-      msg->payl_size = gras_datadesc_size(msg->type->answer_type);
+      msg->payl_size = xbt_datadesc_size(msg->type->answer_type);
       xbt_assert(msg->payl_size > 0,
                   "%s %s",
                   "Dynamic array as payload is forbided for now (FIXME?).",
                   "Reference to dynamic array is allowed.");
       msg->payl = xbt_malloc(msg->payl_size);
-      gras_datadesc_recv(sock, msg->type->answer_type, r_arch, msg->payl);
+      xbt_datadesc_recv(sock, msg->type->answer_type, r_arch, msg->payl);
     } else {
       msg->payl = NULL;
       msg->payl_size = 0;
@@ -194,13 +195,13 @@ void gras_msg_recv(gras_socket_t sock, gras_msg_t msg)
   } else {
     /* regular message */
     if (msg->type->ctn_type) {
-      msg->payl_size = gras_datadesc_size(msg->type->ctn_type);
+      msg->payl_size = xbt_datadesc_size(msg->type->ctn_type);
       xbt_assert(msg->payl_size > 0,
                   "%s %s",
                   "Dynamic array as payload is forbided for now (FIXME?).",
                   "Reference to dynamic array is allowed.");
       msg->payl = xbt_malloc(msg->payl_size);
-      gras_datadesc_recv(sock, msg->type->ctn_type, r_arch, msg->payl);
+      xbt_datadesc_recv(sock, msg->type->ctn_type, r_arch, msg->payl);
     } else {
       msg->payl = NULL;
       msg->payl_size = 0;
index c84c605..608e06c 100644 (file)
@@ -25,8 +25,8 @@ XBT_LOG_NEW_DEFAULT_SUBCATEGORY(gras_msg_rpc, gras_msg, "RPC mecanism");
  */
 void
 gras_msgtype_declare_rpc(const char *name,
-                         gras_datadesc_type_t payload_request,
-                         gras_datadesc_type_t payload_answer)
+                         xbt_datadesc_type_t payload_request,
+                         xbt_datadesc_type_t payload_answer)
 {
 
   gras_msgtype_declare_ext(name, 0,
@@ -53,8 +53,8 @@ gras_msgtype_declare_rpc(const char *name,
 void
 gras_msgtype_declare_rpc_v(const char *name,
                            short int version,
-                           gras_datadesc_type_t payload_request,
-                           gras_datadesc_type_t payload_answer)
+                           xbt_datadesc_type_t payload_request,
+                           xbt_datadesc_type_t payload_answer)
 {
 
   gras_msgtype_declare_ext(name, version,
@@ -111,7 +111,7 @@ void gras_msg_ctx_mallocator_reset_f(void *ctx)
 
 /** @brief Launch a RPC call, but do not block for the answer */
 gras_msg_cb_ctx_t
-gras_msg_rpc_async_call_(gras_socket_t server,
+gras_msg_rpc_async_call_(xbt_socket_t server,
                          double timeOut,
                          gras_msgtype_t msgtype, void *request)
 {
@@ -133,8 +133,8 @@ gras_msg_rpc_async_call_(gras_socket_t server,
   ctx->timeout = timeOut;
 
   XBT_VERB("Send to %s:%d a RPC of type '%s' (ID=%lu)",
-        gras_socket_peer_name(server),
-        gras_socket_peer_port(server), msgtype->name, ctx->ID);
+        xbt_socket_peer_name(server),
+        xbt_socket_peer_port(server), msgtype->name, ctx->ID);
 
   gras_msg_send_ext(server, e_gras_msg_kind_rpccall, ctx->ID, msgtype,
                     request);
@@ -174,8 +174,8 @@ void gras_msg_rpc_async_wait(gras_msg_cb_ctx_t ctx, void *answer)
     XBT_INFO
         ("canceled RPC %ld pushed onto the stack (%s from %s:%d) Reason: %s",
          ctx->ID, ctx->msgtype->name,
-         gras_socket_peer_name(ctx->expeditor),
-         gras_socket_peer_port(ctx->expeditor), e.msg);
+         xbt_socket_peer_name(ctx->expeditor),
+         xbt_socket_peer_port(ctx->expeditor), e.msg);
     RETHROW;
   }
 
@@ -207,7 +207,7 @@ void gras_msg_rpc_async_wait(gras_msg_cb_ctx_t ctx, void *answer)
 }
 
 /** @brief Conduct a RPC call */
-void gras_msg_rpccall_(gras_socket_t server,
+void gras_msg_rpccall_(xbt_socket_t server,
                        double timeout,
                        gras_msgtype_t msgtype, void *request, void *answer)
 {
@@ -233,8 +233,8 @@ void gras_msg_rpcreturn(double timeOut, gras_msg_cb_ctx_t ctx,
   ctx->answer_due = 0;
   XBT_DEBUG("Return to RPC '%s' from %s:%d (tOut=%f, payl=%p)",
          ctx->msgtype->name,
-         gras_socket_peer_name(ctx->expeditor),
-         gras_socket_peer_port(ctx->expeditor), timeOut, answer);
+         xbt_socket_peer_name(ctx->expeditor),
+         xbt_socket_peer_port(ctx->expeditor), timeOut, answer);
   gras_msg_send_ext(ctx->expeditor, e_gras_msg_kind_rpcanswer, ctx->ID,
                     ctx->msgtype, answer);
 }
index f05928a..4f49dec 100644 (file)
@@ -7,12 +7,11 @@
  * under the terms of the license (GNU LGPL) which comes with this package. */
 
 #include "xbt/ex.h"
-
+#include "xbt/xbt_socket_private.h" /* FIXME */
+#include "xbt/datadesc.h"
+#include "xbt/datadesc/datadesc_interface.h" /* FIXME */
 #include "gras/Virtu/virtu_sg.h"
-
 #include "gras/Msg/msg_private.h"
-
-#include "gras/DataDesc/datadesc_interface.h"
 #include "gras/Transport/transport_interface.h" /* gras_trp_chunk_send/recv */
 #include "gras/Transport/transport_private.h"   /* sock->data */
 
@@ -33,7 +32,8 @@ typedef struct {
   smx_process_t s_process;
 } *fake_xbt_thread_t;
 
-int gras_socket_im_the_server(gras_socket_t sock) {
+int gras_socket_im_the_server(xbt_socket_t sock)
+{
   gras_trp_sg_sock_data_t sock_data = sock->data;
   gras_procdata_t* pd;
   gras_msg_listener_t l;
@@ -103,7 +103,7 @@ gras_msg_t gras_msg_recv_any(void)
   xbt_dynar_t comms = xbt_dynar_new(sizeof(smx_action_t), NULL);
   unsigned int cursor = 0;
   int got = 0;
-  gras_socket_t sock = NULL;
+  xbt_socket_t sock = NULL;
   gras_trp_sg_sock_data_t sock_data;
   xbt_dynar_foreach(trp_proc->sockets, cursor, sock) {
     sock_data = (gras_trp_sg_sock_data_t) sock->data;
@@ -164,7 +164,7 @@ gras_msg_t gras_msg_recv_any(void)
   got = simcall_comm_waitany(comms);
 
   /* retrieve the message sent in that communication */
-  sock = xbt_dynar_get_as(trp_proc->sockets, got, gras_socket_t);
+  sock = xbt_dynar_get_as(trp_proc->sockets, got, xbt_socket_t);
   sock_data = (gras_trp_sg_sock_data_t) sock->data;
   msg = sock_data->msg;
   XBT_VERB("Got something. Communication over rdv_server=%p, rdv_client=%p",
@@ -186,7 +186,7 @@ gras_msg_t gras_msg_recv_any(void)
 }
 
 
-void gras_msg_send_ext(gras_socket_t sock,
+void gras_msg_send_ext(xbt_socket_t sock,
                        e_gras_msg_kind_t kind,
                        unsigned long int ID,
                        gras_msgtype_t msgtype, void *payload)
@@ -209,32 +209,63 @@ void gras_msg_send_ext(gras_socket_t sock,
   msg->kind = kind;
   msg->type = msgtype;
   msg->ID = ID;
+  XBT_PUBLIC(xbt_datadesc_type_t) xbt_datadesc_by_id(long int code);
+
+  /* to debug */
+  XBT_PUBLIC(void) xbt_datadesc_type_dump(const xbt_datadesc_type_t ddt);
+  XBT_PUBLIC(const char *) xbt_datadesc_arch_name(int code);
+
+  /* compare two data type description */
+  XBT_PUBLIC(int)
+  xbt_datadesc_type_cmp(const xbt_datadesc_type_t d1,
+                         const xbt_datadesc_type_t d2);
+
+  /* Access function */
+  XBT_PUBLIC(int) xbt_datadesc_size(xbt_datadesc_type_t type);
+  /* Described data exchanges: direct use */
+  XBT_PUBLIC(int) xbt_datadesc_memcpy(xbt_datadesc_type_t type, void *src,
+                                       void *dst);
+  XBT_PUBLIC(void) xbt_datadesc_send(xbt_socket_t sock,
+                                      xbt_datadesc_type_t type, void *src);
+  XBT_PUBLIC(void) xbt_datadesc_recv(xbt_socket_t sock,
+                                      xbt_datadesc_type_t type, int r_arch,
+                                      void *dst);
+
+  /* Described data exchanges: IDL compilation FIXME: not implemented*/
+  void xbt_datadesc_gen_cpy(xbt_datadesc_type_t type, void *src,
+                             void **dst);
+  void xbt_datadesc_gen_send(xbt_socket_t sock,
+                              xbt_datadesc_type_t type, void *src);
+  void xbt_datadesc_gen_recv(xbt_socket_t sock,
+                              xbt_datadesc_type_t type, int r_arch,
+                              void *dst);
+
 
   XBT_VERB("Send msg %s (%s) to rdv %p sock %p",
       msgtype->name,  e_gras_msg_kind_names[kind], target_rdv, sock);
 
   if (kind == e_gras_msg_kind_rpcerror) {
     /* error on remote host, careful, payload is an exception */
-    msg->payl_size = gras_datadesc_size(gras_datadesc_by_name("ex_t"));
+    msg->payl_size = xbt_datadesc_size(xbt_datadesc_by_name("ex_t"));
     msg->payl = xbt_malloc(msg->payl_size);
     whole_payload_size =
-        gras_datadesc_memcpy(gras_datadesc_by_name("ex_t"), payload,
+        xbt_datadesc_memcpy(xbt_datadesc_by_name("ex_t"), payload,
                              msg->payl);
   } else if (kind == e_gras_msg_kind_rpcanswer) {
-    msg->payl_size = gras_datadesc_size(msgtype->answer_type);
+    msg->payl_size = xbt_datadesc_size(msgtype->answer_type);
     if (msg->payl_size)
       msg->payl = xbt_malloc(msg->payl_size);
     else
       msg->payl = NULL;
 
     if (msgtype->answer_type)
-      whole_payload_size = gras_datadesc_memcpy(msgtype->answer_type,
+      whole_payload_size = xbt_datadesc_memcpy(msgtype->answer_type,
                                                 payload, msg->payl);
   } else {
-    msg->payl_size = gras_datadesc_size(msgtype->ctn_type);
+    msg->payl_size = xbt_datadesc_size(msgtype->ctn_type);
     msg->payl = msg->payl_size ? xbt_malloc(msg->payl_size) : NULL;
     if (msgtype->ctn_type)
-      whole_payload_size = gras_datadesc_memcpy(msgtype->ctn_type,
+      whole_payload_size = xbt_datadesc_memcpy(msgtype->ctn_type,
                                                 payload, msg->payl);
   }
 
index e65d53d..e883290 100644 (file)
@@ -13,19 +13,19 @@ discuss using network sockets, or xbt_queue_t structures.
 IMPLEMENTATION NOTES ABOUT THE SG SIDE
 
 This area is quite messy. The thing is that I strived too much to keep
-the existing interface, which is lousely inspirated from BSD sockets.
+the existing interface, which is loosely inspired from BSD sockets.
 
 Vocabulary: 
   Server is the one who created the master socket. 
   Client is the one connecting to that from a remote host. 
-  Their roles keep the same for the whole connexion duration. 
+  Their roles keep the same for the whole connection duration. 
   Sender and Receiver denote the roles during one message exchange.
   If the server answers to the client, it becomes the sender while the
   client becomes the receiver. 
   All this seems trivial, but confusion is easy and dangerous.
 
 
-The connexion story goes that way. When we create a master socket, we
+The connection story goes that way. When we create a master socket, we
 look whether the given port is free on that host or not. For that, we
 traverse the gras_hostdata_t->ports dynar, which contains
 gras_sg_portrec_t records. If it's free, we create a socket with a
@@ -41,8 +41,8 @@ typedef struct {
 } s_gras_trp_sg_sock_data_t,*gras_trp_sg_sock_data_t;
 
 In GRAS, there is a listener process, in charge of pumping everything
-comming from the network and post that to the main user thread. That
-to overlap (incomming) communications and computations.
+coming from the network and post that to the main user thread. That
+to overlap (incoming) communications and computations.
 In SG, this is done by ensuring that a receive is posted on every
 opened socket, and having the listener doing a smx_sem_waitany() to
 find the first ending one (in RL, a select+ddt_recv does the same).
@@ -61,7 +61,7 @@ and working sockets, just like in BSD. There is no explicit accept.
 Master sockets get created by gras_socket_server() and friends. You
 can recognize them by the fact that the rdv_client field is always
 NULL. Such sockets are not really used to exchange data, but more to
-establish connexions. For actual exchanges, you need a working socket
+establish connections. For actual exchanges, you need a working socket
 created by gras_socket_client() and friends. So, they are created on
 client side, but the master side will see it as message expeditor when
 getting a message.
index eed89d0..85a1a0e 100644 (file)
@@ -7,12 +7,14 @@
  * under the terms of the license (GNU LGPL) which comes with this package. */
 
 #include "xbt/ex.h"
+#include "xbt/xbt_socket_private.h" /* FIXME */
 #include "portable.h"
 #include "gras/Transport/transport_private.h"
+
 XBT_LOG_EXTERNAL_DEFAULT_CATEGORY(gras_trp);
 
 /* check transport_private.h for an explanation of this variable */
-gras_socket_t _gras_lastly_selected_socket = NULL;
+xbt_socket_t _gras_lastly_selected_socket = NULL;
 
 /**
  * gras_trp_select:
@@ -24,7 +26,7 @@ gras_socket_t _gras_lastly_selected_socket = NULL;
  *
  * if timeout>0 and no message there, wait at most that amount of time before giving up.
  */
-gras_socket_t gras_trp_select(double timeout)
+xbt_socket_t gras_trp_select(double timeout)
 {
   xbt_dynar_t sockets =
       ((gras_trp_procdata_t)
@@ -43,7 +45,7 @@ gras_socket_t gras_trp_select(double timeout)
   int ready;                    /* return of select: number of socket ready to be serviced */
   static int fd_setsize = -1;   /* FD_SETSIZE not always defined. Get this portably */
 
-  gras_socket_t sock_iter;      /* iterating over all sockets */
+  xbt_socket_t sock_iter;      /* iterating over all sockets */
   unsigned int cursor;          /* iterating over all sockets */
 
   /* Check whether there is more data to read from the socket we selected last time.
@@ -180,7 +182,7 @@ gras_socket_t gras_trp_select(double timeout)
 
       if (sock_iter->accepting && sock_iter->plugin->socket_accept) {
         /* not a socket but an ear. accept on it and serve next socket */
-        gras_socket_t accepted = NULL;
+        xbt_socket_t accepted = NULL;
 
         /* release mutex before accept; it will change the sockets dynar, so we have to break the foreach asap */
         xbt_dynar_cursor_unlock(sockets);
@@ -239,7 +241,8 @@ gras_socket_t gras_trp_select(double timeout)
   THROWF(timeout_error, 0, "Timeout");
 }
 
-void gras_trp_sg_setup(gras_trp_plugin_t plug)
+/* to make the linker happy in SG mode */
+void gras_trp_sg_setup(xbt_trp_plugin_t plug)
 {
   THROWF(mismatch_error, 0, "No SG transport on live platforms");
 }
index b0fa264..8e52a75 100644 (file)
@@ -14,7 +14,7 @@ XBT_LOG_EXTERNAL_DEFAULT_CATEGORY(gras_trp);
 
 /* check transport_private.h for an explanation of this variable;
  * this just need to be defined to NULL in SG */
-gras_socket_t _gras_lastly_selected_socket = NULL;
+xbt_socket_t _gras_lastly_selected_socket = NULL;
 
 #ifdef KILLME
 /**    
@@ -126,25 +126,3 @@ gras_socket_t gras_trp_select(double timeout)
   return res;
 }
 #endif
-
-/* dummy implementations of the functions used in RL mode */
-
-void gras_trp_tcp_setup(gras_trp_plugin_t plug)
-{
-  THROW(mismatch_error, 0);
-}
-
-void gras_trp_file_setup(gras_trp_plugin_t plug)
-{
-  THROW(mismatch_error, 0);
-}
-
-void gras_trp_iov_setup(gras_trp_plugin_t plug)
-{
-  THROW(mismatch_error, 0);
-}
-
-gras_socket_t gras_trp_buf_init_sock(gras_socket_t sock)
-{
-  return sock;
-}
index b090bfd..7b025ca 100644 (file)
 /***
  *** Options
  ***/
-int gras_opt_trp_nomoredata_on_close = 0;
+static int gras_opt_trp_nomoredata_on_close = 0;
 
 #include "xbt/ex.h"
 #include "xbt/peer.h"
+#include "xbt/socket.h"
+#include "xbt/xbt_socket_private.h" /* FIXME */
 #include "portable.h"
 #include "gras/Transport/transport_private.h"
 #include "gras/Msg/msg_interface.h"
 
 XBT_LOG_NEW_DEFAULT_SUBCATEGORY(gras_trp, gras,
                                 "Conveying bytes over the network");
-XBT_LOG_NEW_SUBCATEGORY(gras_trp_meas, gras_trp,
-                        "Conveying bytes over the network without formating for perf measurements");
-static short int _gras_trp_started = 0;
-
-static xbt_dict_t _gras_trp_plugins;    /* All registered plugins */
-static void gras_trp_plugin_free(void *p);      /* free one of the plugins */
-
-static void gras_trp_plugin_new(const char *name, gras_trp_setup_t setup)
-{
-  xbt_ex_t e;
-
-  gras_trp_plugin_t plug = xbt_new0(s_gras_trp_plugin_t, 1);
-
-  XBT_DEBUG("Create plugin %s", name);
-
-  plug->name = xbt_strdup(name);
-
-  TRY {
-    setup(plug);
-  }
-  CATCH(e) {
-    if (e.category == mismatch_error) {
-      /* SG plugin raise mismatch when in RL mode (and vice versa) */
-      free(plug->name);
-      free(plug);
-      plug = NULL;
-      xbt_ex_free(e);
-    } else {
-      RETHROW;
-    }
-  }
-
-  if (plug)
-    xbt_dict_set(_gras_trp_plugins, name, plug, NULL);
-}
-
-void gras_trp_init(void)
-{
-  if (!_gras_trp_started) {
-    /* make room for all plugins */
-    _gras_trp_plugins = xbt_dict_new_homogeneous(gras_trp_plugin_free);
-
-#ifdef HAVE_WINSOCK2_H
-    /* initialize the windows mechanism */
-    {
-      WORD wVersionRequested;
-      WSADATA wsaData;
-
-      wVersionRequested = MAKEWORD(2, 0);
-      int res;
-      res = WSAStartup(wVersionRequested, &wsaData);
-      xbt_assert(res == 0, "Cannot find a usable WinSock DLL");
-
-      /* Confirm that the WinSock DLL supports 2.0. */
-      /* Note that if the DLL supports versions greater    */
-      /* than 2.0 in addition to 2.0, it will still return */
-      /* 2.0 in wVersion since that is the version we      */
-      /* requested.                                        */
-
-      xbt_assert(LOBYTE(wsaData.wVersion) == 2 &&
-                  HIBYTE(wsaData.wVersion) == 0,
-                  "Cannot find a usable WinSock DLL");
-      XBT_INFO("Found and initialized winsock2");
-    }                           /* The WinSock DLL is acceptable. Proceed. */
-#elif HAVE_WINSOCK_H
-    {
-      WSADATA wsaData;
-      int res;
-      res = WSAStartup(0x0101, &wsaData);
-      xbt_assert(res == 0, "Cannot find a usable WinSock DLL");
-      XBT_INFO("Found and initialized winsock");
-    }
-#endif
-
-    /* Add plugins */
-    gras_trp_plugin_new("file", gras_trp_file_setup);
-    gras_trp_plugin_new("sg", gras_trp_sg_setup);
-    gras_trp_plugin_new("tcp", gras_trp_tcp_setup);
-  }
-
-  _gras_trp_started++;
-}
-
-void gras_trp_exit(void)
-{
-  XBT_DEBUG("gras_trp value %d", _gras_trp_started);
-  if (_gras_trp_started == 0) {
-    return;
-  }
-
-  if (--_gras_trp_started == 0) {
-#ifdef HAVE_WINSOCK_H
-    if (WSACleanup() == SOCKET_ERROR) {
-      if (WSAGetLastError() == WSAEINPROGRESS) {
-        WSACancelBlockingCall();
-        WSACleanup();
-      }
-    }
-#endif
-
-    /* Delete the plugins */
-    xbt_dict_free(&_gras_trp_plugins);
-  }
-}
-
-
-void gras_trp_plugin_free(void *p)
-{
-  gras_trp_plugin_t plug = p;
-
-  if (plug) {
-    if (plug->exit) {
-      plug->exit(plug);
-    } else if (plug->data) {
-      XBT_DEBUG("Plugin %s lacks exit(). Free data anyway.", plug->name);
-      free(plug->data);
-    }
-
-    free(plug->name);
-    free(plug);
-  }
-}
-
-
-/**
- * gras_trp_socket_new:
- *
- * Malloc a new socket, and initialize it with defaults
- */
-void gras_trp_socket_new(int incoming, gras_socket_t * dst)
-{
-
-  gras_socket_t sock = xbt_new0(s_gras_socket_t, 1);
-
-  XBT_VERB("Create a new socket (%p)", (void *) sock);
-
-  sock->plugin = NULL;
-
-  sock->incoming = incoming ? 1 : 0;
-  sock->outgoing = incoming ? 0 : 1;
-  sock->accepting = incoming ? 1 : 0;
-  sock->meas = 0;
-  sock->recvd = 0;
-  sock->valid = 1;
-  sock->moredata = 0;
-
-  sock->refcount = 1;
-  sock->sd = -1;
-
-  sock->data = NULL;
-  sock->bufdata = NULL;
-
-  *dst = sock;
-
-  XBT_OUT();
-}
 
 /**
  * @brief Opens a server socket and makes it ready to be listened to.
@@ -184,30 +30,28 @@ void gras_trp_socket_new(int incoming, gras_socket_t * dst)
  *
  * In real life, you'll get a TCP socket.
  */
-gras_socket_t
+xbt_socket_t
 gras_socket_server_ext(unsigned short port,
                        unsigned long int buf_size, int measurement)
 {
-  gras_trp_plugin_t trp;
-  gras_socket_t sock;
+  xbt_trp_plugin_t trp;
+  xbt_socket_t sock;
 
   XBT_DEBUG("Create a server socket from plugin %s on port %d",
-         gras_if_RL()? "tcp" : "sg", port);
-  trp = gras_trp_plugin_get_by_name(gras_if_SG()? "sg" : "tcp");
+         gras_if_RL() ? "tcp" : "sg", port);
+  trp = xbt_trp_plugin_get_by_name(gras_if_SG() ? "sg" : "tcp");
 
   /* defaults settings */
-  gras_trp_socket_new(1, &sock);
-  sock->plugin = trp;
-  sock->buf_size = buf_size > 0 ? buf_size : 32 * 1024;
-  sock->meas = measurement;
+  xbt_socket_new_ext(1,
+                     &sock,
+                     trp,
+                     (buf_size > 0 ? buf_size : 32 * 1024),
+                     measurement);
 
   /* Call plugin socket creation function */
   XBT_DEBUG("Prepare socket with plugin (fct=%p)", trp->socket_server);
   TRY {
     trp->socket_server(trp, port, sock);
-    XBT_DEBUG("in=%c out=%c accept=%c",
-           sock->incoming ? 'y' : 'n',
-           sock->outgoing ? 'y' : 'n', sock->accepting ? 'y' : 'n');
   }
   CATCH_ANONYMOUS {
     free(sock);
@@ -235,13 +79,13 @@ gras_socket_server_ext(unsigned short port,
  *
  * If none of the provided ports works, raises the exception got when trying the last possibility
  */
-gras_socket_t
+xbt_socket_t
 gras_socket_server_range(unsigned short minport, unsigned short maxport,
                          unsigned long int buf_size, int measurement)
 {
 
   int port;
-  gras_socket_t res = NULL;
+  xbt_socket_t res = NULL;
   xbt_ex_t e;
 
   for (port = minport; port < maxport; port++) {
@@ -268,30 +112,28 @@ gras_socket_server_range(unsigned short minport, unsigned short maxport,
  *
  * In real life, you'll get a TCP socket.
  */
-gras_socket_t
+xbt_socket_t
 gras_socket_client_ext(const char *host,
                        unsigned short port,
                        unsigned long int buf_size, int measurement)
 {
-  gras_trp_plugin_t trp;
-  gras_socket_t sock;
+  xbt_trp_plugin_t trp;
+  xbt_socket_t sock;
 
-  trp = gras_trp_plugin_get_by_name(gras_if_SG()? "sg" : "tcp");
+  trp = xbt_trp_plugin_get_by_name(gras_if_SG() ? "sg" : "tcp");
 
   XBT_DEBUG("Create a client socket from plugin %s",
          gras_if_RL()? "tcp" : "sg");
   /* defaults settings */
-  gras_trp_socket_new(0, &sock);
-  sock->plugin = trp;
-  sock->buf_size = buf_size > 0 ? buf_size : 32 * 1024;
-  sock->meas = measurement;
+  xbt_socket_new_ext(0,
+                     &sock,
+                     trp,
+                     (buf_size > 0 ? buf_size : 32 * 1024),
+                     measurement);
 
   /* plugin-specific */
   TRY {
-    (*trp->socket_client) (trp,host,port,sock);
-    XBT_DEBUG("in=%c out=%c accept=%c",
-           sock->incoming ? 'y' : 'n',
-           sock->outgoing ? 'y' : 'n', sock->accepting ? 'y' : 'n');
+    (*trp->socket_client) (trp, host, port, sock);
   }
   CATCH_ANONYMOUS {
     free(sock);
@@ -309,33 +151,33 @@ gras_socket_client_ext(const char *host,
  *
  * In real life, you'll get a TCP socket.
  */
-gras_socket_t gras_socket_server(unsigned short port)
+xbt_socket_t gras_socket_server(unsigned short port)
 {
   return gras_socket_server_ext(port, 32 * 1024, 0);
 }
 
 /** @brief Opens a client socket to a remote host */
-gras_socket_t gras_socket_client(const char *host, unsigned short port)
+xbt_socket_t gras_socket_client(const char *host, unsigned short port)
 {
   return gras_socket_client_ext(host, port, 0, 0);
 }
 
 /** @brief Opens a client socket to a remote host specified as '\a host:\a port' */
-gras_socket_t gras_socket_client_from_string(const char *host)
+xbt_socket_t gras_socket_client_from_string(const char *host)
 {
   xbt_peer_t p = xbt_peer_from_string(host);
-  gras_socket_t res = gras_socket_client_ext(p->name, p->port, 0, 0);
+  xbt_socket_t res = gras_socket_client_ext(p->name, p->port, 0, 0);
   xbt_peer_free(p);
   return res;
 }
 
 void gras_socket_close_voidp(void *sock)
 {
-  gras_socket_close((gras_socket_t) sock);
+  gras_socket_close((xbt_socket_t) sock);
 }
 
 /** \brief Close socket */
-void gras_socket_close(gras_socket_t sock)
+void gras_socket_close(xbt_socket_t sock)
 {
   if (--sock->refcount)
     return;
@@ -343,7 +185,7 @@ void gras_socket_close(gras_socket_t sock)
   xbt_dynar_t sockets =
       ((gras_trp_procdata_t)
        gras_libdata_by_id(gras_trp_libdata_id))->sockets;
-  gras_socket_t sock_iter = NULL;
+  xbt_socket_t sock_iter = NULL;
   unsigned int cursor;
 
   XBT_IN("");
@@ -386,220 +228,6 @@ void gras_socket_close(gras_socket_t sock)
   XBT_OUT();
 }
 
-/**
- * gras_trp_send:
- *
- * Send a bunch of bytes from on socket
- * (stable if we know the storage will keep as is until the next trp_flush)
- */
-void gras_trp_send(gras_socket_t sd, char *data, long int size, int stable)
-{
-  xbt_assert(sd->outgoing, "Socket not suited for data send");
-  sd->plugin->send(sd, data, size, stable);
-}
-
-/**
- * gras_trp_chunk_recv:
- *
- * Receive a bunch of bytes from a socket
- */
-void gras_trp_recv(gras_socket_t sd, char *data, long int size)
-{
-  xbt_assert(sd->incoming, "Socket not suited for data receive");
-  (sd->plugin->recv) (sd, data, size);
-}
-
-/**
- * gras_trp_flush:
- *
- * Make sure all pending communications are done
- */
-void gras_trp_flush(gras_socket_t sd)
-{
-  if (sd->plugin->flush)
-    (sd->plugin->flush) (sd);
-}
-
-gras_trp_plugin_t gras_trp_plugin_get_by_name(const char *name)
-{
-  return xbt_dict_get(_gras_trp_plugins, name);
-}
-
-int gras_socket_my_port(gras_socket_t sock)
-{
-  if (!sock->plugin->my_port)
-    THROWF(unknown_error,0,"Function my_port unimplemented in plugin %s",sock->plugin->name);
-  return sock->plugin->my_port(sock);
-
-}
-
-int gras_socket_peer_port(gras_socket_t sock)
-{
-  if (!sock->plugin->peer_port)
-    THROWF(unknown_error,0,"Function peer_port unimplemented in plugin %s",sock->plugin->name);
-  return sock->plugin->peer_port(sock);
-}
-
-const char *gras_socket_peer_name(gras_socket_t sock)
-{
-  xbt_assert(sock->plugin);
-  return sock->plugin->peer_name(sock);
-}
-
-const char *gras_socket_peer_proc(gras_socket_t sock)
-{
-  return sock->plugin->peer_proc(sock);
-}
-
-void gras_socket_peer_proc_set(gras_socket_t sock, char *peer_proc)
-{
-  return sock->plugin->peer_proc_set(sock,peer_proc);
-}
-
-/** \brief Check if the provided socket is a measurement one (or a regular one) */
-int gras_socket_is_meas(gras_socket_t sock)
-{
-  return sock->meas;
-}
-
-/** \brief Send a chunk of (random) data over a measurement socket
- *
- * @param peer measurement socket to use for the experiment
- * @param timeout timeout (in seconds)
- * @param msg_size size of each chunk sent over the socket (in bytes).
- * @param msg_amount how many of these packets you want to send.
- *
- * Calls to gras_socket_meas_send() and gras_socket_meas_recv() on
- * each side of the socket should be paired.
- *
- * The exchanged data is zeroed to make sure it's initialized, but
- * there is no way to control what is sent (ie, you cannot use these
- * functions to exchange data out of band).
- *
- * @warning: in SimGrid version 3.1 and previous, the numerical arguments
- *           were the total amount of data to send and the msg_size. This
- *           was changed for the fool wanting to send more than MAXINT
- *           bytes in a fat pipe.
- */
-void gras_socket_meas_send(gras_socket_t peer,
-                           unsigned int timeout,
-                           unsigned long int msg_size,
-                           unsigned long int msg_amount)
-{
-  char *chunk = NULL;
-  unsigned long int sent_sofar;
-
-  XBT_IN("");
-  THROWF(unknown_error,0,"measurement sockets were broken in this release of SimGrid and should be ported back in the future."
-      "If you depend on it, sorry, you have to use an older version, or wait for the future version using it...");
-  if (gras_if_RL())
-    chunk = xbt_malloc0(msg_size);
-
-  xbt_assert(peer->meas,
-              "Asked to send measurement data on a regular socket");
-  xbt_assert(peer->outgoing,
-              "Socket not suited for data send (was created with gras_socket_server(), not gras_socket_client())");
-
-  for (sent_sofar = 0; sent_sofar < msg_amount; sent_sofar++) {
-    XBT_CDEBUG(gras_trp_meas,
-            "Sent %lu msgs of %lu (size of each: %ld) to %s:%d",
-            sent_sofar, msg_amount, msg_size, gras_socket_peer_name(peer),
-            gras_socket_peer_port(peer));
-    peer->plugin->raw_send(peer, chunk, msg_size);
-  }
-  XBT_CDEBUG(gras_trp_meas,
-          "Sent %lu msgs of %lu (size of each: %ld) to %s:%d", sent_sofar,
-          msg_amount, msg_size, gras_socket_peer_name(peer),
-          gras_socket_peer_port(peer));
-
-  if (gras_if_RL())
-    free(chunk);
-
-  XBT_OUT();
-}
-
-/** \brief Receive a chunk of data over a measurement socket
- *
- * Calls to gras_socket_meas_send() and gras_socket_meas_recv() on
- * each side of the socket should be paired.
- *
- * @warning: in SimGrid version 3.1 and previous, the numerical arguments
- *           were the total amount of data to send and the msg_size. This
- *           was changed for the fool wanting to send more than MAXINT
- *           bytes in a fat pipe.
- */
-void gras_socket_meas_recv(gras_socket_t peer,
-                           unsigned int timeout,
-                           unsigned long int msg_size,
-                           unsigned long int msg_amount)
-{
-
-  char *chunk = NULL;
-  unsigned long int got_sofar;
-
-  XBT_IN("");
-  THROWF(unknown_error,0,"measurement sockets were broken in this release of SimGrid and should be ported back in the future."
-      "If you depend on it, sorry, you have to use an older version, or wait for the future version using it...");
-
-  if (gras_if_RL())
-    chunk = xbt_malloc(msg_size);
-
-  xbt_assert(peer->meas,
-              "Asked to receive measurement data on a regular socket");
-  xbt_assert(peer->incoming, "Socket not suited for data receive");
-
-  for (got_sofar = 0; got_sofar < msg_amount; got_sofar++) {
-    XBT_CDEBUG(gras_trp_meas,
-            "Recvd %ld msgs of %lu (size of each: %ld) from %s:%d",
-            got_sofar, msg_amount, msg_size, gras_socket_peer_name(peer),
-            gras_socket_peer_port(peer));
-    (peer->plugin->raw_recv) (peer, chunk, msg_size);
-  }
-  XBT_CDEBUG(gras_trp_meas,
-          "Recvd %ld msgs of %lu (size of each: %ld) from %s:%d",
-          got_sofar, msg_amount, msg_size, gras_socket_peer_name(peer),
-          gras_socket_peer_port(peer));
-
-  if (gras_if_RL())
-    free(chunk);
-  XBT_OUT();
-}
-
-/**
- * \brief Something similar to the good old accept system call.
- *
- * Make sure that there is someone speaking to the provided server socket.
- * In RL, it does an accept(2) and return the result as last argument.
- * In SG, as accepts are useless, it returns the provided argument as result.
- * You should thus test whether (peer != accepted) before closing both of them.
- *
- * You should only call this on measurement sockets. It is automatically
- * done for regular sockets, but you usually want more control about
- * what's going on with measurement sockets.
- */
-gras_socket_t gras_socket_meas_accept(gras_socket_t peer)
-{
-  gras_socket_t res;
-  THROWF(unknown_error,0,"measurement sockets were broken in this release of SimGrid and should be ported back in the future."
-      "If you depend on it, sorry, you have to use an older version, or wait for the future version using it...");
-
-  xbt_assert(peer->meas,
-              "No need to accept on non-measurement sockets (it's automatic)");
-
-  if (!peer->accepting) {
-    /* nothing to accept here (must be in SG) */
-    /* BUG: FIXME: this is BAD! it makes tricky to free the accepted socket */
-    return peer;
-  }
-
-  res = (peer->plugin->socket_accept) (peer);
-  res->meas = peer->meas;
-  XBT_CDEBUG(gras_trp_meas, "meas_accepted onto %d", res->sd);
-
-  return res;
-}
-
-
 /*
  * Creating procdata for this module
  */
@@ -609,7 +237,7 @@ static void *gras_trp_procdata_new(void)
 
   res->name = xbt_strdup("gras_trp");
   res->name_len = 0;
-  res->sockets = xbt_dynar_new_sync(sizeof(gras_socket_t *), NULL);
+  res->sockets = xbt_dynar_new_sync(sizeof(xbt_socket_t *), NULL);
   res->myport = 0;
 
   return (void *) res;
@@ -633,12 +261,12 @@ void gras_trp_socketset_dump(const char *name)
       (gras_trp_procdata_t) gras_libdata_by_id(gras_trp_libdata_id);
 
   unsigned int it;
-  gras_socket_t s;
+  xbt_socket_t s;
 
   XBT_INFO("** Dump the socket set %s", name);
   xbt_dynar_foreach(procdata->sockets, it, s) {
     XBT_INFO("  %p -> %s:%d %s",
-          s, gras_socket_peer_name(s), gras_socket_peer_port(s),
+          s, xbt_socket_peer_name(s), xbt_socket_peer_port(s),
           s->valid ? "(valid)" : "(peer dead)");
   }
   XBT_INFO("** End of socket set %s", name);
index d59cef1..89e409a 100644 (file)
  ***/
 extern int gras_opt_trp_nomoredata_on_close;
 
-/***
- *** Main user functions
- ***/
-/* stable if we know the storage will keep as is until the next trp_flush */
-XBT_PUBLIC(void) gras_trp_send(gras_socket_t sd, char *data, long int size,
-                               int stable);
-XBT_PUBLIC(void) gras_trp_recv(gras_socket_t sd, char *data,
-                               long int size);
-XBT_PUBLIC(void) gras_trp_flush(gras_socket_t sd);
-
-/* Find which socket needs to be read next */
-XBT_PUBLIC(gras_socket_t) gras_trp_select(double timeout);
-
-/* Set the peer process name (used by messaging layer) */
-XBT_PUBLIC(void) gras_socket_peer_proc_set(gras_socket_t sock,
-                                           char *peer_proc);
-
-/***
- *** Plugin mechanism 
- ***/
-
-/* A plugin type */
-typedef struct gras_trp_plugin_ s_gras_trp_plugin_t, *gras_trp_plugin_t;
-
-/* A plugin type */
-struct gras_trp_plugin_ {
-  char *name;
-
-  /* dst pointers are created and initialized with default values
-     before call to socket_client/server. 
-     Retrive the info you need from there. */
-  void (*socket_client) (gras_trp_plugin_t self,const char *host,int port, gras_socket_t dst);
-  void (*socket_server) (gras_trp_plugin_t self, int port,gras_socket_t dst);
-
-  gras_socket_t(*socket_accept) (gras_socket_t from);
-
-  /* Getting info about who's speaking */
-  int (*my_port)(gras_socket_t sd);
-  int (*peer_port)(gras_socket_t sd);
-  const char* (*peer_name)(gras_socket_t sd);
-  const char* (*peer_proc)(gras_socket_t sd);
-  void (*peer_proc_set)(gras_socket_t sd,char*peer_proc);
-
-
-  /* socket_close() is responsible of telling the OS that the socket is over,
-     but should not free the socket itself (beside the specific part) */
-  void (*socket_close) (gras_socket_t sd);
-
-  /* send/recv may be buffered */
-  void (*send) (gras_socket_t sd,
-                const char *data,
-                unsigned long int size,
-                int stable /* storage will survive until flush */ );
-  int (*recv) (gras_socket_t sd, char *data, unsigned long int size);
-  /* raw_send/raw_recv is never buffered (use it for measurement stuff) */
-  void (*raw_send) (gras_socket_t sd,
-                    const char *data, unsigned long int size);
-  int (*raw_recv) (gras_socket_t sd, char *data, unsigned long int size);
-
-  /* flush has to make sure that the pending communications are achieved */
-  void (*flush) (gras_socket_t sd);
-
-  void *data;                   /* plugin-specific data */
-
-  /* exit is responsible for freeing data and telling to the OS that 
-     this plugin is gone */
-  /* exit=NULL, data gets brutally free()d by the generic interface. 
-     (ie exit function needed only when data contains pointers) */
-  void (*exit) (gras_trp_plugin_t);
-};
-
-XBT_PUBLIC(gras_trp_plugin_t)
-    gras_trp_plugin_get_by_name(const char *name);
-
 /* Data of this module specific to each process
  * (used by sg_process.c to cleanup the SG channel cruft)
  */
@@ -118,4 +44,6 @@ typedef struct {
 /* Display the content of our socket set (debugging purpose) */
 XBT_PUBLIC(void) gras_trp_socketset_dump(const char *name);
 
+XBT_PUBLIC(xbt_socket_t) gras_trp_select(double timeout);
+
 #endif                          /* GRAS_TRP_INTERFACE_H */
index c26b837..ba81c85 100644 (file)
@@ -9,6 +9,7 @@
 #include "portable.h"
 #include "gras/Transport/transport_private.h"
 #include "xbt/ex.h"
+#include "xbt/xbt_socket_private.h"
 #include "gras/Msg/msg_interface.h"     /* gras_msg_listener_awake */
 
 XBT_LOG_NEW_DEFAULT_SUBCATEGORY(gras_trp_file, gras_trp,
@@ -17,15 +18,15 @@ XBT_LOG_NEW_DEFAULT_SUBCATEGORY(gras_trp_file, gras_trp,
 /***
  *** Prototypes
  ***/
-void gras_trp_file_close(gras_socket_t sd);
+void gras_trp_file_close(xbt_socket_t sd);
 
-void gras_trp_file_chunk_send_raw(gras_socket_t sd,
+void gras_trp_file_chunk_send_raw(xbt_socket_t sd,
                                   const char *data,
                                   unsigned long int size);
-void gras_trp_file_chunk_send(gras_socket_t sd, const char *data,
+void gras_trp_file_chunk_send(xbt_socket_t sd, const char *data,
                               unsigned long int size, int stable_ignored);
 
-int gras_trp_file_chunk_recv(gras_socket_t sd,
+int gras_trp_file_chunk_recv(xbt_socket_t sd,
                              char *data, unsigned long int size);
 
 /***
@@ -43,26 +44,26 @@ typedef struct {
 /***
  *** Info about who's speaking
  ***/
-static int gras_trp_file_my_port(gras_socket_t s) {
+static int gras_trp_file_my_port(xbt_socket_t s) {
   THROW_UNIMPLEMENTED;
 }
-static int gras_trp_file_peer_port(gras_socket_t s) {
+static int gras_trp_file_peer_port(xbt_socket_t s) {
   THROW_UNIMPLEMENTED;
 }
-static const char* gras_trp_file_peer_name(gras_socket_t s) {
+static const char* gras_trp_file_peer_name(xbt_socket_t s) {
   THROW_UNIMPLEMENTED;
 }
-static const char* gras_trp_file_peer_proc(gras_socket_t s) {
+static const char* gras_trp_file_peer_proc(xbt_socket_t s) {
   THROW_UNIMPLEMENTED;
 }
-static void gras_trp_file_peer_proc_set(gras_socket_t s,char *name) {
+static void gras_trp_file_peer_proc_set(xbt_socket_t s,char *name) {
   THROW_UNIMPLEMENTED;
 }
 
 /***
  *** Code
  ***/
-void gras_trp_file_setup(gras_trp_plugin_t plug)
+void gras_trp_file_setup(xbt_trp_plugin_t plug)
 {
 
   gras_trp_file_plug_data_t *file = xbt_new(gras_trp_file_plug_data_t, 1);
@@ -92,15 +93,13 @@ void gras_trp_file_setup(gras_trp_plugin_t plug)
  *
  * This only possible in RL, and is mainly for debugging.
  */
-gras_socket_t gras_socket_client_from_file(const char *path)
+xbt_socket_t gras_socket_client_from_file(const char *path)
 {
-  gras_socket_t res;
+  xbt_socket_t res;
 
   xbt_assert(gras_if_RL(), "Cannot use file as socket in the simulator");
 
-  gras_trp_socket_new(0, &res);
-
-  res->plugin = gras_trp_plugin_get_by_name("file");
+  xbt_socket_new_ext(0, &res, xbt_trp_plugin_get_by_name("file"), 0, 0);
 
   if (strcmp("-", path)) {
     res->sd =
@@ -134,16 +133,13 @@ gras_socket_t gras_socket_client_from_file(const char *path)
  *
  * This only possible in RL, and is mainly for debugging.
  */
-gras_socket_t gras_socket_server_from_file(const char *path)
+xbt_socket_t gras_socket_server_from_file(const char *path)
 {
-  gras_socket_t res;
+  xbt_socket_t res;
 
   xbt_assert(gras_if_RL(), "Cannot use file as socket in the simulator");
 
-  gras_trp_socket_new(1, &res);
-
-  res->plugin = gras_trp_plugin_get_by_name("file");
-
+  xbt_socket_new_ext(1, &res, xbt_trp_plugin_get_by_name("file"), 0, 0);
 
   if (strcmp("-", path)) {
     res->sd = open(path, O_RDONLY | O_BINARY);
@@ -168,7 +164,7 @@ gras_socket_t gras_socket_server_from_file(const char *path)
   return res;
 }
 
-void gras_trp_file_close(gras_socket_t sock)
+void gras_trp_file_close(xbt_socket_t sock)
 {
   gras_trp_file_plug_data_t *data;
 
@@ -199,7 +195,7 @@ void gras_trp_file_close(gras_socket_t sock)
  * Send data on a file pseudo-socket
  */
 void
-gras_trp_file_chunk_send(gras_socket_t sock,
+gras_trp_file_chunk_send(xbt_socket_t sock,
                          const char *data,
                          unsigned long int size, int stable_ignored)
 {
@@ -207,7 +203,7 @@ gras_trp_file_chunk_send(gras_socket_t sock,
 }
 
 void
-gras_trp_file_chunk_send_raw(gras_socket_t sock,
+gras_trp_file_chunk_send_raw(xbt_socket_t sock,
                              const char *data, unsigned long int size)
 {
 
@@ -240,7 +236,7 @@ gras_trp_file_chunk_send_raw(gras_socket_t sock,
  * Receive data on a file pseudo-socket.
  */
 int
-gras_trp_file_chunk_recv(gras_socket_t sock,
+gras_trp_file_chunk_recv(xbt_socket_t sock,
                          char *data, unsigned long int size)
 {
 
index 0eac7be..277aea0 100644 (file)
@@ -16,6 +16,7 @@
 #include "gras/Msg/msg_private.h"
 #include "gras/Transport/transport_private.h"
 #include "gras/Virtu/virtu_sg.h"
+#include "xbt/xbt_socket_private.h" /* FIXME */
 
 XBT_LOG_NEW_DEFAULT_SUBCATEGORY(gras_trp_sg, gras_trp,
                                 "SimGrid pseudo-transport");
@@ -27,22 +28,22 @@ XBT_LOG_NEW_DEFAULT_SUBCATEGORY(gras_trp_sg, gras_trp,
 /* retrieve the port record associated to a numerical port on an host */
 static gras_sg_portrec_t find_port(gras_hostdata_t * hd, int port);
 
-void gras_trp_sg_socket_client(gras_trp_plugin_t self,
+void gras_trp_sg_socket_client(xbt_trp_plugin_t self,
                                const char*host,
                                int port,
-                               /* OUT */ gras_socket_t sock);
-void gras_trp_sg_socket_server(gras_trp_plugin_t self,
+                               /* OUT */ xbt_socket_t sock);
+void gras_trp_sg_socket_server(xbt_trp_plugin_t self,
                                int port,
-                               /* OUT */ gras_socket_t sock);
-void gras_trp_sg_socket_close(gras_socket_t sd);
+                               /* OUT */ xbt_socket_t sock);
+void gras_trp_sg_socket_close(xbt_socket_t sd);
 
-void gras_trp_sg_chunk_send_raw(gras_socket_t sd,
+void gras_trp_sg_chunk_send_raw(xbt_socket_t sd,
                                 const char *data, unsigned long int size);
-void gras_trp_sg_chunk_send(gras_socket_t sd,
+void gras_trp_sg_chunk_send(xbt_socket_t sd,
                             const char *data,
                             unsigned long int size, int stable_ignored);
 
-int gras_trp_sg_chunk_recv(gras_socket_t sd,
+int gras_trp_sg_chunk_recv(xbt_socket_t sd,
                            char *data, unsigned long int size);
 
 /***
@@ -73,39 +74,41 @@ static gras_sg_portrec_t find_port(gras_hostdata_t * hd, int port)
 /***
  *** Info about who's speaking
  ***/
-static int gras_trp_sg_my_port(gras_socket_t s) {
-  gras_trp_sg_sock_data_t sockdata = s->data;
+static int gras_trp_sg_my_port(xbt_socket_t s)
+{
+  gras_trp_sg_sock_data_t sockdata = xbt_socket_get_data(s);
   if (gras_socket_im_the_server(s))
     return sockdata->server_port;
   else
     return sockdata->client_port;
 }
-static int gras_trp_sg_peer_port(gras_socket_t s) {
-  gras_trp_sg_sock_data_t sockdata = s->data;
+static int gras_trp_sg_peer_port(xbt_socket_t s)
+{
+  gras_trp_sg_sock_data_t sockdata = xbt_socket_get_data(s);
   if (gras_socket_im_the_server(s))
     return sockdata->client_port;
   else
     return sockdata->server_port;
 }
 
-static const char* gras_trp_sg_peer_name(gras_socket_t s) {
-  gras_trp_sg_sock_data_t sockdata = s->data;
+static const char* gras_trp_sg_peer_name(xbt_socket_t s)
+{
+  gras_trp_sg_sock_data_t sockdata = xbt_socket_get_data(s);
   if (gras_socket_im_the_server(s))
     return SIMIX_host_get_name(simcall_process_get_host(sockdata->client));
   else {
     return SIMIX_host_get_name(simcall_process_get_host(sockdata->server));
   }
 }
-static const char* gras_trp_sg_peer_proc(gras_socket_t s) {
+static const char* gras_trp_sg_peer_proc(xbt_socket_t s) {
   THROW_UNIMPLEMENTED;
 }
-static void gras_trp_sg_peer_proc_set(gras_socket_t s,char *name) {
+static void gras_trp_sg_peer_proc_set(xbt_socket_t s,char *name) {
   THROW_UNIMPLEMENTED;
 }
 
-void gras_trp_sg_setup(gras_trp_plugin_t plug)
+void gras_trp_sg_setup(xbt_trp_plugin_t plug)
 {
-
   plug->my_port = gras_trp_sg_my_port;
   plug->peer_port = gras_trp_sg_peer_port;
   plug->peer_name = gras_trp_sg_peer_name;
@@ -127,10 +130,10 @@ void gras_trp_sg_setup(gras_trp_plugin_t plug)
   plug->flush = NULL;           /* nothing cached */
 }
 
-void gras_trp_sg_socket_client(gras_trp_plugin_t self,
+void gras_trp_sg_socket_client(xbt_trp_plugin_t self,
                                const char*host,
                                int port,
-                               /* OUT */ gras_socket_t sock)
+                               /* OUT */ xbt_socket_t sock)
 {
 
   smx_host_t peer;
@@ -192,7 +195,7 @@ void gras_trp_sg_socket_client(gras_trp_plugin_t self,
          data->rdv_server,data->rdv_client,data->comm_recv);
 }
 
-void gras_trp_sg_socket_server(gras_trp_plugin_t self, int port, gras_socket_t sock)
+void gras_trp_sg_socket_server(xbt_trp_plugin_t self, int port, xbt_socket_t sock)
 {
 
   gras_hostdata_t *hd =
@@ -244,7 +247,7 @@ void gras_trp_sg_socket_server(gras_trp_plugin_t self, int port, gras_socket_t s
 
 }
 
-void gras_trp_sg_socket_close(gras_socket_t sock)
+void gras_trp_sg_socket_close(xbt_socket_t sock)
 {
   gras_hostdata_t *hd =
       (gras_hostdata_t *) SIMIX_host_self_get_data();
@@ -284,14 +287,14 @@ typedef struct {
   void *data;
 } sg_task_data_t;
 
-void gras_trp_sg_chunk_send(gras_socket_t sock,
+void gras_trp_sg_chunk_send(xbt_socket_t sock,
                             const char *data,
                             unsigned long int size, int stable_ignored)
 {
   gras_trp_sg_chunk_send_raw(sock, data, size);
 }
 
-void gras_trp_sg_chunk_send_raw(gras_socket_t sock,
+void gras_trp_sg_chunk_send_raw(xbt_socket_t sock,
                                 const char *data, unsigned long int size)
 {
 #ifdef KILLME
@@ -323,7 +326,7 @@ void gras_trp_sg_chunk_send_raw(gras_socket_t sock,
   THROW_UNIMPLEMENTED;
 }
 
-int gras_trp_sg_chunk_recv(gras_socket_t sock,
+int gras_trp_sg_chunk_recv(xbt_socket_t sock,
                            char *data, unsigned long int size)
 {
   //gras_trp_sg_sock_data_t *sock_data =
@@ -333,7 +336,7 @@ int gras_trp_sg_chunk_recv(gras_socket_t sock,
   THROW_UNIMPLEMENTED;
 #ifdef KILLME
   gras_trp_sg_sock_data_t *remote_sock_data;
-  gras_socket_t remote_socket = NULL;
+  xbt_socket_t remote_socket = NULL;
   gras_msg_t msg_got;
   gras_msg_procdata_t msg_procdata =
       (gras_msg_procdata_t) gras_libdata_by_name("gras_msg");
index c74efd5..9f67861 100644 (file)
@@ -41,76 +41,6 @@ extern int gras_trp_libdata_id; /* our libdata identifier */
  
    It gets tricky since gras_socket_close is part of the common API, not 
    only the RL one. */
-extern gras_socket_t _gras_lastly_selected_socket;
-
-/**
- * s_gras_socket:
- * 
- * Description of a socket.
- */
-typedef struct gras_trp_bufdata_ gras_trp_bufdata_t;
-
-typedef struct s_gras_socket {
-  gras_trp_plugin_t plugin;
-
-  int incoming:1;               /* true if we can read from this sock */
-  int outgoing:1;               /* true if we can write on this sock */
-  int accepting:1;              /* true if master incoming sock in tcp */
-  int meas:1;                   /* true if this is an experiment socket instead of messaging */
-  int valid:1;                  /* false if a select returned that the peer quitted, forcing us to "close" the socket */
-  int moredata:1;               /* TCP socket use a buffer and read operation get as much 
-                                   data as possible. It is possible that several messages
-                                   are received in one shoot, and select won't catch them 
-                                   afterward again. 
-                                   This boolean indicates that this is the case, so that we
-                                   don't call select in that case.  Note that measurement
-                                   sockets are not concerned since they use the TCP
-                                   interface directly, with no buffer. */
-
-  int recvd:1;                  /* true if the recvd_val field contains one byte of the stream (that we peek'ed to check the socket validity) */
-  char recvd_val;               /* what we peeked from the socket, if any */
-
-  int refcount;                 /* refcounting on shared sockets */
-
-  unsigned long int buf_size;   /* what to say to the OS. 
-                                   Field here to remember it when accepting */
-
-  int sd;
-
-  void *data;                   /* plugin specific data */
-
-  /* buffer plugin specific data. Yeah, C is not OO, so I got to trick */
-  gras_trp_bufdata_t *bufdata;
-} s_gras_socket_t;
-
-void gras_trp_socket_new(int incomming, gras_socket_t * dst);
-
-/* The drivers */
-typedef void (*gras_trp_setup_t) (gras_trp_plugin_t dst);
-
-void gras_trp_tcp_setup(gras_trp_plugin_t plug);
-void gras_trp_iov_setup(gras_trp_plugin_t plug);
-void gras_trp_file_setup(gras_trp_plugin_t plug);
-void gras_trp_sg_setup(gras_trp_plugin_t plug);
-
-/* FIXME: this should be solved by SIMIX
-
-  I'm tired of that shit. the select in SG has to create a socket to expeditor
-  manually do deal with the weirdness of the hostdata, themselves here to deal
-  with the weird channel concept of SG and convert them back to ports.
-  
-  When introducing buffered transport (which I want to get used in SG to debug
-  the buffering itself), we should not make the rest of the code aware of the
-  change and not specify code for this. This is bad design.
-  
-  But there is bad design all over the place, so fuck off for now, when we can
-  get rid of MSG and rely directly on SG, this crude hack can go away. But in
-  the meanwhile, I want to sleep this night (FIXME).
-  
-  Hu! You evil problem! Taste my axe!
-
-*/
-
-gras_socket_t gras_trp_buf_init_sock(gras_socket_t sock);
+extern xbt_socket_t _gras_lastly_selected_socket;
 
 #endif                          /* GRAS_TRP_PRIVATE_H */
index fef78be..24c0f62 100644 (file)
@@ -10,7 +10,7 @@
 #include "xbt/sysdep.h"
 #include "xbt/log.h"
 #include "gras/transport.h"
-#include "gras/datadesc.h"
+#include "xbt/datadesc.h"
 #include "gras/messages.h"
 #include "gras_modinter.h"
 
index 781ab57..ea7e0f5 100644 (file)
@@ -66,10 +66,10 @@ void gras_process_init()
   } else
     pd->ppid = -1;
 
-  trp_pd->msg_selectable_sockets = xbt_queue_new(0, sizeof(gras_socket_t));
+  trp_pd->msg_selectable_sockets = xbt_queue_new(0, sizeof(xbt_socket_t));
 
   trp_pd->meas_selectable_sockets =
-      xbt_queue_new(0, sizeof(gras_socket_t));
+      xbt_queue_new(0, sizeof(xbt_socket_t));
 
   XBT_VERB("Creating process '%s' (%d)", SIMIX_process_self_get_name(),
       gras_os_getpid());
@@ -79,7 +79,7 @@ void gras_process_exit()
 {
   xbt_dynar_t sockets =
       ((gras_trp_procdata_t) gras_libdata_by_name("gras_trp"))->sockets;
-  gras_socket_t sock_iter;
+  xbt_socket_t sock_iter;
   unsigned int cursor;
   gras_hostdata_t *hd =
       (gras_hostdata_t *) SIMIX_host_self_get_data();
@@ -110,9 +110,9 @@ void gras_process_exit()
     xbt_dynar_foreach(msg_pd->msg_queue, cpt, msg) {
       XBT_WARN("   Message %s (%s) from %s@%s:%d", msg.type->name,
             e_gras_msg_kind_names[msg.kind],
-            gras_socket_peer_proc(msg.expe),
-            gras_socket_peer_name(msg.expe),
-            gras_socket_peer_port(msg.expe));
+            xbt_socket_peer_proc(msg.expe),
+            xbt_socket_peer_name(msg.expe),
+            xbt_socket_peer_port(msg.expe));
     }
   }
 
index b634604..93e1cce 100644 (file)
@@ -29,7 +29,7 @@ typedef struct {
 
 } gras_hostdata_t;
 
-/* data for each socket (FIXME: find a better location for that)*/
+/* data for each socket (FIXME: find a better location for that) */
 typedef struct {
   smx_process_t server;
   smx_process_t client;
@@ -45,7 +45,8 @@ typedef struct {
 
 
 /** \brief Returns if I am on the server side of this socket (either server or listener of server) */
-int gras_socket_im_the_server(gras_socket_t sock);
+/* FIXME make an im_the_server function in each socket plugin */
+int gras_socket_im_the_server(xbt_socket_t sock);
 
 
 void *gras_libdata_by_name_from_remote(const char *name, smx_process_t p);
index c810ef1..170275d 100644 (file)
@@ -11,6 +11,7 @@
 #include "xbt/module.h"         /* xbt_init/exit */
 #include "xbt/xbt_os_time.h"    /* xbt_os_time */
 #include "xbt/synchro.h"
+#include "xbt/socket.h"
 
 #include "Virtu/virtu_interface.h"      /* Module mechanism FIXME: deplace&rename */
 #include "Virtu/virtu_private.h"
@@ -20,6 +21,7 @@
 
 #include "gras.h"
 #include "gras/process.h"       /* FIXME: killme and put process_init in modinter */
+#include "gras/transport.h"
 #include "gras/Msg/msg_private.h"
 #include "portable.h"           /* hexa_*(); signalling stuff */
 
@@ -50,20 +52,11 @@ static void gras_sigint_handler(int sig)
 }
 #endif
 
-XBT_LOG_EXTERNAL_CATEGORY(gras_ddt);
-XBT_LOG_EXTERNAL_CATEGORY(gras_ddt_cbps);
-XBT_LOG_EXTERNAL_CATEGORY(gras_ddt_convert);
-XBT_LOG_EXTERNAL_CATEGORY(gras_ddt_create);
-XBT_LOG_EXTERNAL_CATEGORY(gras_ddt_exchange);
-XBT_LOG_EXTERNAL_CATEGORY(gras_ddt_lexer);
-XBT_LOG_EXTERNAL_CATEGORY(gras_ddt_parse);
 XBT_LOG_EXTERNAL_CATEGORY(gras_modules);
 XBT_LOG_EXTERNAL_CATEGORY(gras_msg);
 XBT_LOG_EXTERNAL_CATEGORY(gras_msg_read);
 XBT_LOG_EXTERNAL_CATEGORY(gras_msg_rpc);
 XBT_LOG_EXTERNAL_CATEGORY(gras_timer);
-XBT_LOG_EXTERNAL_CATEGORY(gras_trp);
-XBT_LOG_EXTERNAL_CATEGORY(gras_trp_meas);
 XBT_LOG_EXTERNAL_CATEGORY(gras_virtu);
 XBT_LOG_EXTERNAL_CATEGORY(gras_virtu_emul);
 XBT_LOG_EXTERNAL_CATEGORY(gras_virtu_process);
@@ -89,13 +82,6 @@ void gras_init(int *argc, char **argv)
   if (gras_running_process == 0) {
     first = 1;
     /* Connect our log channels: that must be done manually under windows */
-    XBT_LOG_CONNECT(gras_ddt, gras);
-    XBT_LOG_CONNECT(gras_ddt_cbps, gras_ddt);
-    XBT_LOG_CONNECT(gras_ddt_convert, gras_ddt);
-    XBT_LOG_CONNECT(gras_ddt_create, gras_ddt);
-    XBT_LOG_CONNECT(gras_ddt_exchange, gras_ddt);
-    XBT_LOG_CONNECT(gras_ddt_lexer, gras_ddt_parse);
-    XBT_LOG_CONNECT(gras_ddt_parse, gras_ddt);
 
     XBT_LOG_CONNECT(gras_modules, gras);
 
@@ -105,15 +91,18 @@ void gras_init(int *argc, char **argv)
 
     XBT_LOG_CONNECT(gras_timer, gras);
 
-    XBT_LOG_CONNECT(gras_trp, gras);
-    XBT_LOG_CONNECT(gras_trp_meas, gras_trp);
-
     XBT_LOG_CONNECT(gras_virtu, gras);
     XBT_LOG_CONNECT(gras_virtu_emul, gras_virtu);
     XBT_LOG_CONNECT(gras_virtu_process, gras_virtu);
 
     gras_trp_register();
     gras_msg_register();
+
+    xbt_trp_plugin_new("file", gras_trp_file_setup);
+    if (gras_if_SG()) {
+      xbt_trp_plugin_new("sg", gras_trp_sg_setup);
+    }
+    /* the TCP plugin (used in RL mode) is automatically loaded by XBT */
   }
   gras_running_process++;
 
@@ -128,8 +117,6 @@ void gras_init(int *argc, char **argv)
   if (first) {
     gras_emul_init();
     gras_msg_init();
-    gras_trp_init();
-    gras_datadesc_init();
 #if defined(HAVE_SIGNAL) && defined(HAVE_SIGNAL_H)
 # ifdef SIGUSR1
     signal(SIGUSR1, gras_sigusr_handler);
@@ -160,8 +147,6 @@ void gras_exit(void)
   gras_process_exit();
   if (--gras_running_process == 0) {
     gras_msg_exit();
-    gras_trp_exit();
-    gras_datadesc_exit();
     gras_emul_exit();
     gras_moddata_exit();
   }
index e2b0b9f..cbc2621 100644 (file)
@@ -18,10 +18,6 @@ void gras_msg_register(void);
 void gras_msg_init(void);
 void gras_msg_exit(void);
 void gras_trp_register(void);
-void gras_trp_init(void);
-void gras_trp_exit(void);
-void gras_datadesc_init(void);
-void gras_datadesc_exit(void);
 
 void gras_procdata_init(void);
 void gras_procdata_exit(void);
similarity index 72%
rename from src/gras/DataDesc/cbps.c
rename to src/xbt/datadesc/cbps.c
index cfb2b2a..b397268 100644 (file)
@@ -7,29 +7,29 @@
  * under the terms of the license (GNU LGPL) which comes with this package. */
 
 #include "xbt/ex.h"
-#include "gras/DataDesc/datadesc_private.h"
-XBT_LOG_NEW_DEFAULT_SUBCATEGORY(gras_ddt_cbps, gras_ddt,
+#include "xbt/datadesc/datadesc_private.h"
+XBT_LOG_NEW_DEFAULT_SUBCATEGORY(xbt_ddt_cbps, xbt_ddt,
                                 "callback persistant state");
 
 typedef struct {
-  gras_datadesc_type_t type;
+  xbt_datadesc_type_t type;
   void *data;
-} s_gras_cbps_elm_t, *gras_cbps_elm_t;
+} s_xbt_cbps_elm_t, *xbt_cbps_elm_t;
 
-typedef struct s_gras_cbps {
+typedef struct s_xbt_cbps {
   xbt_dynar_t lints;            /* simple stack of long integers (easy interface) */
 
-  xbt_dict_t space;             /* varname x dynar of gras_cbps_elm_t */
+  xbt_dict_t space;             /* varname x dynar of xbt_cbps_elm_t */
   xbt_dynar_t frames;           /* of dynar of names defined within this frame
                                    (and to pop when we leave it) */
   xbt_dynar_t globals;
-} s_gras_cbps_t;
+} s_xbt_cbps_t;
 
-gras_cbps_t gras_cbps_new(void)
+xbt_cbps_t xbt_cbps_new(void)
 {
-  gras_cbps_t res;
+  xbt_cbps_t res;
 
-  res = xbt_new(s_gras_cbps_t, 1);
+  res = xbt_new(s_xbt_cbps_t, 1);
 
   res->lints = xbt_dynar_new(sizeof(int), NULL);
   res->space = xbt_dict_new_homogeneous(NULL);
@@ -37,17 +37,17 @@ gras_cbps_t gras_cbps_new(void)
   res->frames = xbt_dynar_new(sizeof(xbt_dynar_t), NULL);
   res->globals = xbt_dynar_new(sizeof(char *), NULL);
 
-  gras_cbps_block_begin(res);
+  xbt_cbps_block_begin(res);
 
   return res;
 }
 
-void gras_cbps_free(gras_cbps_t * state)
+void xbt_cbps_free(xbt_cbps_t * state)
 {
 
   xbt_dynar_free(&((*state)->lints));
 
-  gras_cbps_block_end(*state);
+  xbt_cbps_block_end(*state);
   xbt_dict_free(&((*state)->space));
   xbt_dynar_free(&((*state)->frames));
   xbt_dynar_free(&((*state)->globals));
@@ -56,7 +56,7 @@ void gras_cbps_free(gras_cbps_t * state)
   *state = NULL;
 }
 
-void gras_cbps_reset(gras_cbps_t state)
+void xbt_cbps_reset(xbt_cbps_t state)
 {
 
   xbt_dynar_reset(state->lints);
@@ -74,12 +74,12 @@ void gras_cbps_reset(gras_cbps_t state)
  * seeable again only after a pop to remove the value this push adds.
  */
 void
-gras_cbps_v_push(gras_cbps_t ps,
-                 const char *name, void *data, gras_datadesc_type_t ddt)
+xbt_cbps_v_push(xbt_cbps_t ps,
+                 const char *name, void *data, xbt_datadesc_type_t ddt)
 {
 
   xbt_dynar_t varstack = NULL, frame;
-  gras_cbps_elm_t var;
+  xbt_cbps_elm_t var;
   char *varname = (char *) xbt_strdup(name);
   xbt_ex_t e;
 
@@ -93,13 +93,13 @@ gras_cbps_v_push(gras_cbps_t ps,
       RETHROW;
 
     XBT_DEBUG("Create a new variable stack for '%s' into the space", name);
-    varstack = xbt_dynar_new(sizeof(gras_cbps_elm_t *), NULL);
+    varstack = xbt_dynar_new(sizeof(xbt_cbps_elm_t *), NULL);
     xbt_dict_set(ps->space, name, (void **) varstack, NULL);
     xbt_ex_free(e);
     /* leaking, you think? only if you do not close all the openned blocks ;) */
   }
 
-  var = xbt_new0(s_gras_cbps_elm_t, 1);
+  var = xbt_new0(s_xbt_cbps_elm_t, 1);
   var->type = ddt;
   var->data = data;
 
@@ -118,11 +118,11 @@ gras_cbps_v_push(gras_cbps_t ps,
  * and not search in upper blocks since this denotes a programmation error.
  */
 void
-gras_cbps_v_pop(gras_cbps_t ps,
-                const char *name, gras_datadesc_type_t * ddt, void **res)
+xbt_cbps_v_pop(xbt_cbps_t ps,
+                const char *name, xbt_datadesc_type_t * ddt, void **res)
 {
   xbt_dynar_t varstack = NULL, frame = NULL;
-  gras_cbps_elm_t var = NULL;
+  xbt_cbps_elm_t var = NULL;
   void *data = NULL;
   xbt_ex_t e;
 
@@ -181,21 +181,21 @@ gras_cbps_v_pop(gras_cbps_t ps,
  *   its value is changed.
  */
 void
-gras_cbps_v_set(gras_cbps_t ps,
-                const char *name, void *data, gras_datadesc_type_t ddt)
+xbt_cbps_v_set(xbt_cbps_t ps,
+                const char *name, void *data, xbt_datadesc_type_t ddt)
 {
 
   xbt_dynar_t dynar = NULL;
-  gras_cbps_elm_t elm = NULL;
+  xbt_cbps_elm_t elm = NULL;
 
   XBT_DEBUG("set(%s)", name);
   dynar = xbt_dict_get_or_null(ps->space, name);
 
   if (dynar == NULL) {
-    dynar = xbt_dynar_new(sizeof(gras_cbps_elm_t), NULL);
+    dynar = xbt_dynar_new(sizeof(xbt_cbps_elm_t), NULL);
     xbt_dict_set(ps->space, name, (void **) dynar, NULL);
 
-    elm = xbt_new0(s_gras_cbps_elm_t, 1);
+    elm = xbt_new0(s_xbt_cbps_elm_t, 1);
     xbt_dynar_push(ps->globals, &name);
   } else {
     xbt_dynar_pop(dynar, &elm);
@@ -215,12 +215,12 @@ gras_cbps_v_set(gras_cbps_t ps,
  * If it's not present in any of them, look in the globals
  * If not present there neither, the code may segfault (Oli?).
  */
-void *gras_cbps_v_get(gras_cbps_t ps, const char *name,
-                      /* OUT */ gras_datadesc_type_t * ddt)
+void *xbt_cbps_v_get(xbt_cbps_t ps, const char *name,
+                      /* OUT */ xbt_datadesc_type_t * ddt)
 {
 
   xbt_dynar_t dynar = NULL;
-  gras_cbps_elm_t elm = NULL;
+  xbt_cbps_elm_t elm = NULL;
 
   XBT_DEBUG("get(%s)", name);
   dynar = xbt_dict_get(ps->space, name);
@@ -246,7 +246,7 @@ void *gras_cbps_v_get(gras_cbps_t ps, const char *name,
  * use block_{begin,end} to do the trick.
  */
 
-void gras_cbps_block_begin(gras_cbps_t ps)
+void xbt_cbps_block_begin(xbt_cbps_t ps)
 {
 
   xbt_dynar_t dynar = NULL;
@@ -257,7 +257,7 @@ void gras_cbps_block_begin(gras_cbps_t ps)
 }
 
 /** \brief End the current block, and go back to the upper one. */
-void gras_cbps_block_end(gras_cbps_t ps)
+void xbt_cbps_block_end(xbt_cbps_t ps)
 {
 
   xbt_dynar_t frame = NULL;
@@ -271,7 +271,7 @@ void gras_cbps_block_end(gras_cbps_t ps)
   xbt_dynar_foreach(frame, cursor, name) {
 
     xbt_dynar_t varstack = NULL;
-    gras_cbps_elm_t var = NULL;
+    xbt_cbps_elm_t var = NULL;
 
     XBT_DEBUG("Get ride of %s (%p)", name, (void *) name);
     varstack = xbt_dict_get(ps->space, name);
@@ -292,19 +292,19 @@ void gras_cbps_block_end(gras_cbps_t ps)
 
 
 /** \brief Push a new integer value into the cbps. */
-void gras_cbps_i_push(gras_cbps_t ps, int val)
+void xbt_cbps_i_push(xbt_cbps_t ps, int val)
 {
   XBT_DEBUG("push %d as a size", val);
   xbt_dynar_push_as(ps->lints, int, val);
 }
 
 /** \brief Pop the lastly pushed integer value from the cbps. */
-int gras_cbps_i_pop(gras_cbps_t ps)
+int xbt_cbps_i_pop(xbt_cbps_t ps)
 {
   int ret;
 
   xbt_assert(!xbt_dynar_is_empty(ps->lints),
-              "gras_cbps_i_pop: no value to pop");
+              "xbt_cbps_i_pop: no value to pop");
   ret = xbt_dynar_pop_as(ps->lints, int);
   XBT_DEBUG("pop %d as a size", ret);
   return ret;
@@ -312,12 +312,12 @@ int gras_cbps_i_pop(gras_cbps_t ps)
 
 /** \brief Generic cb returning the lastly pushed value
  *
- * Used by \ref gras_datadesc_ref_pop_arr
+ * Used by \ref xbt_datadesc_ref_pop_arr
  */
-int gras_datadesc_cb_pop(gras_datadesc_type_t ignored, gras_cbps_t vars,
+int xbt_datadesc_cb_pop(xbt_datadesc_type_t ignored, xbt_cbps_t vars,
                          void *data)
 {
-  return gras_cbps_i_pop(vars);
+  return xbt_cbps_i_pop(vars);
 }
 
 /* ************************* */
@@ -325,81 +325,81 @@ int gras_datadesc_cb_pop(gras_datadesc_type_t ignored, gras_cbps_t vars,
 /* ************************* */
 
 /** \brief Cb to push an integer. Must be attached to the field you want to push */
-void gras_datadesc_cb_push_int(gras_datadesc_type_t ignored,
-                               gras_cbps_t vars, void *data)
+void xbt_datadesc_cb_push_int(xbt_datadesc_type_t ignored,
+                               xbt_cbps_t vars, void *data)
 {
   int *i = (int *) data;
-  gras_cbps_i_push(vars, (int) *i);
+  xbt_cbps_i_push(vars, (int) *i);
 }
 
 /** \brief Cb to push an unsigned integer. Must be attached to the field you want to push */
-void gras_datadesc_cb_push_uint(gras_datadesc_type_t ignored,
-                                gras_cbps_t vars, void *data)
+void xbt_datadesc_cb_push_uint(xbt_datadesc_type_t ignored,
+                                xbt_cbps_t vars, void *data)
 {
   unsigned int *i = (unsigned int *) data;
-  gras_cbps_i_push(vars, (int) *i);
+  xbt_cbps_i_push(vars, (int) *i);
 }
 
 /** \brief Cb to push an long integer. Must be attached to the field you want to push
  */
-void gras_datadesc_cb_push_lint(gras_datadesc_type_t ignored,
-                                gras_cbps_t vars, void *data)
+void xbt_datadesc_cb_push_lint(xbt_datadesc_type_t ignored,
+                                xbt_cbps_t vars, void *data)
 {
   long int *i = (long int *) data;
-  gras_cbps_i_push(vars, (int) *i);
+  xbt_cbps_i_push(vars, (int) *i);
 }
 
 /** \brief Cb to push an unsigned long integer. Must be attached to the field you want to push
  */
-void gras_datadesc_cb_push_ulint(gras_datadesc_type_t ignored,
-                                 gras_cbps_t vars, void *data)
+void xbt_datadesc_cb_push_ulint(xbt_datadesc_type_t ignored,
+                                 xbt_cbps_t vars, void *data)
 {
   unsigned long int *i = (unsigned long int *) data;
-  gras_cbps_i_push(vars, (int) *i);
+  xbt_cbps_i_push(vars, (int) *i);
 }
 
 /* ************************************ */
 /* **** PUSHy multiplier callbacks **** */
 /* ************************************ */
 /** \brief Cb to push an integer as multiplier. Must be attached to the field you want to push */
-void gras_datadesc_cb_push_int_mult(gras_datadesc_type_t ignored,
-                                    gras_cbps_t vars, void *data)
+void xbt_datadesc_cb_push_int_mult(xbt_datadesc_type_t ignored,
+                                    xbt_cbps_t vars, void *data)
 {
   int old = *(int *) data;
-  int new = gras_cbps_i_pop(vars);
+  int new = xbt_cbps_i_pop(vars);
   XBT_DEBUG("push %d x %d as a size", old, new);
-  gras_cbps_i_push(vars, old * new);
+  xbt_cbps_i_push(vars, old * new);
 }
 
 /** \brief Cb to push an unsigned integer as multiplier. Must be attached to the field you want to push */
-void gras_datadesc_cb_push_uint_mult(gras_datadesc_type_t ignored,
-                                     gras_cbps_t vars, void *data)
+void xbt_datadesc_cb_push_uint_mult(xbt_datadesc_type_t ignored,
+                                     xbt_cbps_t vars, void *data)
 {
   unsigned int old = *(unsigned int *) data;
-  unsigned int new = gras_cbps_i_pop(vars);
+  unsigned int new = xbt_cbps_i_pop(vars);
 
   XBT_DEBUG("push %d x %d as a size", old, new);
-  gras_cbps_i_push(vars, (int) (old * new));
+  xbt_cbps_i_push(vars, (int) (old * new));
 }
 
 /** \brief Cb to push an long integer as multiplier. Must be attached to the field you want to push
  */
-void gras_datadesc_cb_push_lint_mult(gras_datadesc_type_t ignored,
-                                     gras_cbps_t vars, void *data)
+void xbt_datadesc_cb_push_lint_mult(xbt_datadesc_type_t ignored,
+                                     xbt_cbps_t vars, void *data)
 {
   long int i = *(long int *) data;
-  i *= gras_cbps_i_pop(vars);
-  gras_cbps_i_push(vars, (int) i);
+  i *= xbt_cbps_i_pop(vars);
+  xbt_cbps_i_push(vars, (int) i);
 }
 
 /** \brief Cb to push an unsigned long integer as multiplier. Must be attached to the field you want to push
  */
-void gras_datadesc_cb_push_ulint_mult(gras_datadesc_type_t ignored,
-                                      gras_cbps_t vars, void *data)
+void xbt_datadesc_cb_push_ulint_mult(xbt_datadesc_type_t ignored,
+                                      xbt_cbps_t vars, void *data)
 {
   unsigned long int old = *(unsigned long int *) data;
-  unsigned long int new = gras_cbps_i_pop(vars);
+  unsigned long int new = xbt_cbps_i_pop(vars);
 
   XBT_DEBUG("push %ld x %ld as a size", old, new);
-  gras_cbps_i_push(vars, (int) (old * new));
+  xbt_cbps_i_push(vars, (int) (old * new));
 }
diff --git a/src/xbt/datadesc/datadesc.c b/src/xbt/datadesc/datadesc.c
new file mode 100644 (file)
index 0000000..6942b24
--- /dev/null
@@ -0,0 +1,258 @@
+/* datadesc - data description in order to send/recv it in XBT             */
+
+/* Copyright (c) 2004, 2005, 2006, 2007, 2009, 2010. The SimGrid Team.
+ * All rights reserved.                                                     */
+
+/* This program is free software; you can redistribute it and/or modify it
+ * under the terms of the license (GNU LGPL) which comes with this package. */
+
+#include "datadesc_private.h"
+#include "portable.h"
+
+XBT_LOG_NEW_DEFAULT_SUBCATEGORY(xbt_ddt, xbt, "Data description");
+/* FIXME: make this host-dependent using a trick such as UserData*/
+/*@null@*/ xbt_set_t xbt_datadesc_set_local = NULL;
+
+
+/* callback for array size when sending strings */
+static int _strlen_cb( /*@unused@ */ xbt_datadesc_type_t type, /*@unused@ */
+                      xbt_cbps_t vars, void *data)
+{
+
+  return 1 + (int) strlen(data);
+}
+
+
+/**
+ * xbt_datadesc_init:
+ *
+ * Initialize the datadesc module.
+ * FIXME: We assume that when neither signed nor unsigned is given,
+ *    that means signed. To be checked by configure.
+ **/
+void xbt_datadesc_preinit(void)
+{
+  xbt_datadesc_type_t ddt;     /* What to add */
+
+  /* only initialize once */
+  if (xbt_datadesc_set_local != NULL)
+    return;
+
+  XBT_VERB("Initializing DataDesc");
+
+  xbt_datadesc_set_local = xbt_set_new();
+
+
+  /* all known datatypes */
+
+  ddt = xbt_datadesc_scalar("signed char",
+                             xbt_ddt_scalar_char,
+                             e_xbt_dd_scalar_encoding_sint);
+  ddt = xbt_datadesc_scalar("char",
+                             xbt_ddt_scalar_char,
+                             e_xbt_dd_scalar_encoding_sint);
+  ddt = xbt_datadesc_scalar("unsigned char",
+                             xbt_ddt_scalar_char,
+                             e_xbt_dd_scalar_encoding_uint);
+
+  ddt = xbt_datadesc_scalar("signed short int",
+                             xbt_ddt_scalar_short,
+                             e_xbt_dd_scalar_encoding_sint);
+  ddt = xbt_datadesc_scalar("short int",
+                             xbt_ddt_scalar_short,
+                             e_xbt_dd_scalar_encoding_sint);
+  ddt = xbt_datadesc_scalar("short",
+                             xbt_ddt_scalar_short,
+                             e_xbt_dd_scalar_encoding_sint);
+  ddt = xbt_datadesc_scalar("unsigned short int",
+                             xbt_ddt_scalar_short,
+                             e_xbt_dd_scalar_encoding_uint);
+
+  ddt = xbt_datadesc_scalar("signed int",
+                             xbt_ddt_scalar_int,
+                             e_xbt_dd_scalar_encoding_sint);
+  ddt = xbt_datadesc_scalar("int",
+                             xbt_ddt_scalar_int,
+                             e_xbt_dd_scalar_encoding_sint);
+  ddt = xbt_datadesc_scalar("unsigned int",
+                             xbt_ddt_scalar_int,
+                             e_xbt_dd_scalar_encoding_uint);
+
+  ddt = xbt_datadesc_scalar("signed long int",
+                             xbt_ddt_scalar_long,
+                             e_xbt_dd_scalar_encoding_sint);
+  ddt = xbt_datadesc_scalar("long int",
+                             xbt_ddt_scalar_long,
+                             e_xbt_dd_scalar_encoding_sint);
+  ddt = xbt_datadesc_scalar("long",
+                             xbt_ddt_scalar_long,
+                             e_xbt_dd_scalar_encoding_sint);
+  ddt = xbt_datadesc_scalar("unsigned long int",
+                             xbt_ddt_scalar_long,
+                             e_xbt_dd_scalar_encoding_uint);
+
+  ddt = xbt_datadesc_scalar("signed long long int",
+                             xbt_ddt_scalar_long_long,
+                             e_xbt_dd_scalar_encoding_sint);
+  ddt = xbt_datadesc_scalar("long long int",
+                             xbt_ddt_scalar_long_long,
+                             e_xbt_dd_scalar_encoding_sint);
+  ddt = xbt_datadesc_scalar("unsigned long long int",
+                             xbt_ddt_scalar_long_long,
+                             e_xbt_dd_scalar_encoding_uint);
+
+  ddt = xbt_datadesc_scalar("data pointer",
+                             xbt_ddt_scalar_pdata,
+                             e_xbt_dd_scalar_encoding_uint);
+  ddt = xbt_datadesc_scalar("function pointer",
+                             xbt_ddt_scalar_pfunc,
+                             e_xbt_dd_scalar_encoding_uint);
+
+  ddt = xbt_datadesc_scalar("float",
+                             xbt_ddt_scalar_float,
+                             e_xbt_dd_scalar_encoding_float);
+  ddt = xbt_datadesc_scalar("double",
+                             xbt_ddt_scalar_double,
+                             e_xbt_dd_scalar_encoding_float);
+
+  ddt = xbt_datadesc_array_dyn("char[]",
+                                xbt_datadesc_by_name("char"), _strlen_cb);
+  xbt_datadesc_ref("string", ddt);
+  xbt_datadesc_ref("xbt_string_t", ddt);
+
+  /* specific datatype: the exception type (for RPC) */
+  ddt = xbt_datadesc_struct("ex_t");
+  xbt_datadesc_struct_append(ddt, "msg", xbt_datadesc_by_name("string"));
+  xbt_datadesc_struct_append(ddt, "category",
+                              xbt_datadesc_by_name("int"));
+  xbt_datadesc_struct_append(ddt, "value", xbt_datadesc_by_name("int"));
+
+  xbt_datadesc_struct_append(ddt, "remote",
+                              xbt_datadesc_by_name("short int"));
+
+  xbt_datadesc_struct_append(ddt, "host",
+                              xbt_datadesc_by_name("string"));
+  xbt_datadesc_struct_append(ddt, "procname",
+                              xbt_datadesc_by_name("string"));
+  xbt_datadesc_struct_append(ddt, "pid",
+                              xbt_datadesc_by_name("long int"));
+  xbt_datadesc_struct_append(ddt, "file",
+                              xbt_datadesc_by_name("string"));
+  xbt_datadesc_struct_append(ddt, "line", xbt_datadesc_by_name("int"));
+  xbt_datadesc_struct_append(ddt, "func",
+                              xbt_datadesc_by_name("string"));
+  xbt_datadesc_struct_append(ddt, "used", xbt_datadesc_by_name("int"));
+  xbt_datadesc_cb_field_push(ddt, "used");
+  xbt_datadesc_struct_append(ddt, "bt_strings",
+                              xbt_datadesc_ref_pop_arr
+                              (xbt_datadesc_by_name("string")));
+
+  xbt_datadesc_struct_close(ddt);
+
+  /* specific datatype: xbt_peer_t */
+  ddt = xbt_datadesc_struct("s_xbt_peer_t");
+  xbt_datadesc_struct_append(ddt, "name",
+                              xbt_datadesc_by_name("string"));
+  xbt_datadesc_struct_append(ddt, "port", xbt_datadesc_by_name("int"));
+  xbt_datadesc_struct_close(ddt);
+
+  ddt = xbt_datadesc_ref("xbt_peer_t", ddt);
+
+  /* Dict containing the constant value (for the parsing macro) */
+  xbt_dd_constants = xbt_dict_new_homogeneous(xbt_free_f);
+
+}
+
+/**
+ * xbt_datadesc_exit:
+ *
+ * Finalize the datadesc module
+ **/
+void xbt_datadesc_postexit(void)
+{
+  XBT_VERB("Exiting DataDesc");
+  xbt_set_free(&xbt_datadesc_set_local);
+  xbt_dict_free(&xbt_dd_constants);
+  XBT_DEBUG("Exited DataDesc");
+}
+
+/** This is mainly to debug */
+const char *xbt_datadesc_get_name(xbt_datadesc_type_t ddt)
+{
+  return ddt ? (const char *) ddt->name : "(null)";
+}
+
+/** This is mainly to debug */
+int xbt_datadesc_get_id(xbt_datadesc_type_t ddt)
+{
+  return ddt->code;
+}
+
+/**
+ * xbt_datadesc_size:
+ *
+ * Returns the size occuped by data of this type (on the current arch).
+ *
+ */
+int xbt_datadesc_size(xbt_datadesc_type_t type)
+{
+  return type ? type->size[GRAS_THISARCH] : 0;
+}
+
+/**
+ * xbt_datadesc_type_dump:
+ *
+ * For debugging purpose
+ */
+void xbt_datadesc_type_dump(const xbt_datadesc_type_t ddt)
+{
+  unsigned int cpt;
+
+  printf("DataDesc dump:");
+  if (!ddt) {
+    printf("(null)\n");
+    return;
+  }
+  printf("%s (ID:%d)\n", ddt->name, ddt->code);
+  printf("  category: %s\n", xbt_datadesc_cat_names[ddt->category_code]);
+
+  printf("  size[");
+  for (cpt = 0; cpt < xbt_arch_count; cpt++) {
+    printf("%s%s%ld%s",
+           cpt > 0 ? ", " : "",
+           cpt == GRAS_THISARCH ? ">" : "",
+           ddt->size[cpt], cpt == GRAS_THISARCH ? "<" : "");
+  }
+  printf("]\n");
+
+  printf("  alignment[");
+  for (cpt = 0; cpt < xbt_arch_count; cpt++) {
+    printf("%s%s%ld%s",
+           cpt > 0 ? ", " : "",
+           cpt == GRAS_THISARCH ? ">" : "",
+           ddt->alignment[cpt], cpt == GRAS_THISARCH ? "<" : "");
+  }
+  printf("]\n");
+
+  printf("  aligned_size[");
+  for (cpt = 0; cpt < xbt_arch_count; cpt++) {
+    printf("%s%s%ld%s",
+           cpt > 0 ? ", " : "",
+           cpt == GRAS_THISARCH ? ">" : "",
+           ddt->aligned_size[cpt], cpt == GRAS_THISARCH ? "<" : "");
+  }
+  printf("]\n");
+  if (ddt->category_code == e_xbt_datadesc_type_cat_struct) {
+    xbt_dd_cat_struct_t struct_data;
+    xbt_dd_cat_field_t field;
+
+    struct_data = ddt->category.struct_data;
+    xbt_dynar_foreach(struct_data.fields, cpt, field) {
+      printf(">>> Dump field #%d (%s) (offset=%ld)\n",
+             cpt, field->name, field->offset[GRAS_THISARCH]);
+      xbt_datadesc_type_dump(field->type);
+      printf("<<< end dump field #%d (%s)\n", cpt, field->name);
+    }
+  }
+  fflush(stdout);
+}
diff --git a/src/xbt/datadesc/datadesc_interface.h b/src/xbt/datadesc/datadesc_interface.h
new file mode 100644 (file)
index 0000000..7568c45
--- /dev/null
@@ -0,0 +1,49 @@
+/* datadesc - describing the data to exchange                               */
+
+/* module's public interface exported within XBT, but not to end user.     */
+
+/* Copyright (c) 2004, 2005, 2006, 2007, 2009, 2010. The SimGrid Team.
+ * All rights reserved.                                                     */
+
+/* This program is free software; you can redistribute it and/or modify it
+ * under the terms of the license (GNU LGPL) which comes with this package. */
+
+#ifndef XBT_DATADESC_INTERFACE_H
+#define XBT_DATADESC_INTERFACE_H
+
+#include "xbt/datadesc.h"
+#include "xbt/misc.h"
+#include "xbt/socket.h"
+
+XBT_PUBLIC(xbt_datadesc_type_t) xbt_datadesc_by_id(long int code);
+
+/* to debug */
+XBT_PUBLIC(void) xbt_datadesc_type_dump(const xbt_datadesc_type_t ddt);
+XBT_PUBLIC(const char *) xbt_datadesc_arch_name(int code);
+
+/* compare two data type description */
+XBT_PUBLIC(int)
+xbt_datadesc_type_cmp(const xbt_datadesc_type_t d1,
+                       const xbt_datadesc_type_t d2);
+
+/* Access function */
+XBT_PUBLIC(int) xbt_datadesc_size(xbt_datadesc_type_t type);
+/* Described data exchanges: direct use */
+XBT_PUBLIC(int) xbt_datadesc_memcpy(xbt_datadesc_type_t type, void *src,
+                                     void *dst);
+XBT_PUBLIC(void) xbt_datadesc_send(xbt_socket_t sock,
+                                    xbt_datadesc_type_t type, void *src);
+XBT_PUBLIC(void) xbt_datadesc_recv(xbt_socket_t sock,
+                                    xbt_datadesc_type_t type, int r_arch,
+                                    void *dst);
+
+/* Described data exchanges: IDL compilation FIXME: not implemented*/
+void xbt_datadesc_gen_cpy(xbt_datadesc_type_t type, void *src,
+                           void **dst);
+void xbt_datadesc_gen_send(xbt_socket_t sock,
+                            xbt_datadesc_type_t type, void *src);
+void xbt_datadesc_gen_recv(xbt_socket_t sock,
+                            xbt_datadesc_type_t type, int r_arch,
+                            void *dst);
+
+#endif                          /* XBT_DATADESC_INTERFACE_H */
diff --git a/src/xbt/datadesc/datadesc_private.h b/src/xbt/datadesc/datadesc_private.h
new file mode 100644 (file)
index 0000000..a5fd45d
--- /dev/null
@@ -0,0 +1,255 @@
+/* datadesc - describing the data to exchange                               */
+
+/* module's private interface masked even to other parts of XBT.           */
+
+/* Copyright (c) 2004, 2005, 2006, 2007, 2009, 2010. The SimGrid Team.
+ * All rights reserved.                                                     */
+
+/* This program is free software; you can redistribute it and/or modify it
+ * under the terms of the license (GNU LGPL) which comes with this package. */
+
+#ifndef XBT_DATADESC_PRIVATE_H
+#define XBT_DATADESC_PRIVATE_H
+
+#include "xbt/sysdep.h"
+#include "xbt/log.h"
+#include "xbt/dynar.h"
+#include "xbt/dict.h"
+#include "xbt/set.h"
+
+#include "gras_config.h"        /* XBT_THISARCH */
+#include "xbt_modinter.h"       /* module init/exit */
+#include "datadesc_interface.h" /* semi-public API */
+
+/**
+ * ddt_aligned:
+ *
+ * Align the data v on the boundary a.
+ */
+#define ddt_aligned(v, a) (((v) + (a - 1)) & ~(a - 1))
+
+/*@null@*/ extern xbt_set_t xbt_datadesc_set_local;
+void xbt_ddt_freev(void *ddt);
+/*******************************************
+ * Descriptions of all known architectures *
+ *******************************************/
+
+#define xbt_arch_count 12
+typedef enum {
+  xbt_ddt_scalar_char = 0,
+  xbt_ddt_scalar_short = 1,
+  xbt_ddt_scalar_int = 2,
+  xbt_ddt_scalar_long = 3,
+  xbt_ddt_scalar_long_long = 4,
+
+  xbt_ddt_scalar_pdata = 5,
+  xbt_ddt_scalar_pfunc = 6,
+
+  xbt_ddt_scalar_float = 7,
+  xbt_ddt_scalar_double = 8
+} xbt_ddt_scalar_type_t;
+
+typedef struct {
+  const char *name;
+
+  int endian;
+
+  int sizeofs[9];               /* char,short,int,long,long_long,pdata,pfunc,float,double */
+  int boundaries[9];            /* idem */
+} xbt_arch_desc_t;
+
+extern const xbt_arch_desc_t xbt_arches[xbt_arch_count];
+extern const char *xbt_datadesc_cat_names[9];
+
+/**********************************************************/
+/* Actual definitions of the stuff in the type descriptor */
+/**********************************************************/
+
+/**
+ * e_xbt_datadesc_type_category:
+ *
+ * Defines all possible type categories.
+ */
+typedef enum e_xbt_datadesc_type_category {
+
+  /* if you edit this, also fix xbt_datadesc_cat_names in ddt_exchange.c */
+
+  e_xbt_datadesc_type_cat_undefined = 0,
+
+  e_xbt_datadesc_type_cat_scalar = 1,
+  e_xbt_datadesc_type_cat_struct = 2,
+  e_xbt_datadesc_type_cat_union = 3,
+  e_xbt_datadesc_type_cat_ref = 4,     /* ref to an uniq element */
+  e_xbt_datadesc_type_cat_array = 5,
+
+  e_xbt_datadesc_type_cat_invalid = 6
+} xbt_datadesc_type_category_t;
+
+/*------------------------------------------------*/
+/* definitions of specific data for each category */
+/*------------------------------------------------*/
+/**
+ * s_xbt_dd_cat_field:
+ *
+ * Fields of struct and union
+ */
+typedef struct s_xbt_dd_cat_field {
+
+  char *name;
+  long int offset[xbt_arch_count];
+  xbt_datadesc_type_t type;
+
+  xbt_datadesc_type_cb_void_t send;
+  xbt_datadesc_type_cb_void_t recv;
+
+} s_xbt_dd_cat_field_t, *xbt_dd_cat_field_t;
+
+void xbt_dd_cat_field_free(void *f);
+
+/**
+ * xbt_dd_cat_scalar_t:
+ *
+ * Specific fields of a scalar
+ */
+enum e_xbt_dd_scalar_encoding {
+  e_xbt_dd_scalar_encoding_undefined = 0,
+
+  e_xbt_dd_scalar_encoding_uint,
+  e_xbt_dd_scalar_encoding_sint,
+  e_xbt_dd_scalar_encoding_float,
+
+  e_xbt_dd_scalar_encoding_invalid
+};
+typedef struct s_xbt_dd_cat_scalar {
+  enum e_xbt_dd_scalar_encoding encoding;
+  xbt_ddt_scalar_type_t type;  /* to check easily that redefinition matches */
+} xbt_dd_cat_scalar_t;
+
+/**
+ * xbt_dd_cat_struct_t:
+ *
+ * Specific fields of a struct
+ */
+typedef struct s_xbt_dd_cat_struct {
+  xbt_dynar_t fields;           /* elm type = xbt_dd_cat_field_t */
+  int closed;                   /* xbt_datadesc_declare_struct_close() was called */
+} xbt_dd_cat_struct_t;
+
+/**
+ * xbt_dd_cat_union_t:
+ *
+ * Specific fields of a union
+ */
+typedef struct s_xbt_dd_cat_union {
+  xbt_datadesc_type_cb_int_t selector;
+  xbt_dynar_t fields;           /* elm type = xbt_dd_cat_field_t */
+  int closed;                   /* xbt_datadesc_declare_union_close() was called */
+} xbt_dd_cat_union_t;
+
+/**
+ * xbt_dd_cat_ref_t:
+ *
+ * Specific fields of a reference
+ */
+typedef struct s_xbt_dd_cat_ref {
+  xbt_datadesc_type_t type;
+
+  /* callback used to return the referenced type number  */
+  xbt_datadesc_selector_t selector;
+} xbt_dd_cat_ref_t;
+
+
+/**
+ * xbt_dd_cat_array_t:
+ *
+ * Specific fields of an array
+ */
+typedef struct s_xbt_dd_cat_array {
+  xbt_datadesc_type_t type;
+
+  /* element_count == -1 means dynamically defined */
+  long int fixed_size;
+
+  /* callback used to return the dynamic length */
+  xbt_datadesc_type_cb_int_t dynamic_size;
+
+} xbt_dd_cat_array_t;
+
+/**
+ * u_xbt_datadesc_category:
+ *
+ * Specific data to each possible category
+ */
+union u_xbt_datadesc_category {
+  void *undefined_data;
+  xbt_dd_cat_scalar_t scalar_data;
+  xbt_dd_cat_struct_t struct_data;
+  xbt_dd_cat_union_t union_data;
+  xbt_dd_cat_ref_t ref_data;
+  xbt_dd_cat_array_t array_data;
+};
+
+/****************************************/
+/* The holy grail: type descriptor type */
+/****************************************/
+/**
+ * s_xbt_datadesc_type:
+ *
+ * Type descriptor.
+ */
+typedef struct s_xbt_datadesc_type {
+  /* headers for the data set */
+  int code;
+  char *name;
+  unsigned int name_len;
+
+  /* payload */
+  long int size[xbt_arch_count];       /* Cannot be unsigned: -1 means dynamic */
+
+  unsigned long int alignment[xbt_arch_count];
+  unsigned long int aligned_size[xbt_arch_count];
+
+  enum e_xbt_datadesc_type_category category_code;
+  union u_xbt_datadesc_category category;
+
+  xbt_datadesc_type_cb_void_t send;
+  xbt_datadesc_type_cb_void_t recv;
+
+  /* flags */
+  int cycle:1;
+
+  /* random value for users (like default value or whatever) */
+  char extra[SIZEOF_MAX];
+
+} s_xbt_datadesc_type_t;
+
+/***************************
+ * constructor/desctructor *
+ ***************************/
+void xbt_datadesc_free(xbt_datadesc_type_t * type);
+
+xbt_datadesc_type_t
+xbt_datadesc_scalar(const char *name,
+                     xbt_ddt_scalar_type_t type,
+                     enum e_xbt_dd_scalar_encoding encoding);
+
+/****************************************************
+ * Callback persistant state constructor/destructor *
+ ****************************************************/
+xbt_cbps_t xbt_cbps_new(void);
+void xbt_cbps_free(xbt_cbps_t * state);
+void xbt_cbps_reset(xbt_cbps_t state);
+
+/***************
+ * Convertions *
+ ***************/
+void
+xbt_dd_convert_elm(xbt_datadesc_type_t type, int count,
+                    int r_arch, void *src, void *dst);
+
+/********************************************************************
+ * Dictionnary containing the constant values for the parsing macro *
+ ********************************************************************/
+extern xbt_dict_t xbt_dd_constants;    /* lives in ddt_parse.c of course */
+
+#endif                          /* XBT_DATADESC_PRIVATE_H */
similarity index 69%
rename from src/gras/DataDesc/ddt_convert.c
rename to src/xbt/datadesc/ddt_convert.c
index 1d9c1cd..2c6758c 100644 (file)
 /* C combines the power of assembler with the portability of assembler. */
 /************************************************************************/
 
-#include "gras/DataDesc/datadesc_private.h"
+#include "datadesc_private.h"
 
-XBT_LOG_NEW_DEFAULT_SUBCATEGORY(gras_ddt_convert, gras_ddt,
+XBT_LOG_NEW_DEFAULT_SUBCATEGORY(xbt_ddt_convert, xbt_ddt,
                                 "Inter-architecture convertions");
 
 /***
  *** Table of all known architectures:
  ***
-l_C:1/1:_I:2/1:4/1:4/1:8/1:_P:4/1:4/1:_D:4/1:8/1: #gras_arch=0;  gras_size=32; gras_arch_name=little32_1;
-l_C:1/1:_I:2/2:4/2:4/2:8/2:_P:4/2:4/2:_D:4/2:8/2: #gras_arch=1;  gras_size=32; gras_arch_name=little32_2;
-l_C:1/1:_I:2/2:4/4:4/4:8/4:_P:4/4:4/4:_D:4/4:8/4: #gras_arch=2;  gras_size=32; gras_arch_name=little32_4;
-l_C:1/1:_I:2/2:4/4:4/4:8/8:_P:4/4:4/4:_D:4/4:8/8: #gras_arch=3;  gras_size=32; gras_arch_name=little32_8;
-l_C:1/1:_I:2/2:4/4:8/8:8/8:_P:8/8:8/8:_D:4/4:8/8: #gras_arch=4;  gras_size=64; gras_arch_name=little64;
-l_C:1/1:_I:2/2:4/4:4/4:8/8:_P:8/8:8/8:_D:4/4:8/8: #gras_arch=5;  gras_size=64; gras_arch_name=little64_2;
-
-B_C:1/1:_I:2/2:4/4:4/4:8/8:_P:4/4:4/4:_D:4/4:8/8: #gras_arch=6;  gras_size=32; gras_arch_name=big32_8;
-B_C:1/1:_I:2/2:4/4:4/4:8/8:_P:4/4:4/4:_D:4/4:8/4: #gras_arch=7;  gras_size=32; gras_arch_name=big32_8_4;
-B_C:1/1:_I:2/2:4/4:4/4:8/4:_P:4/4:4/4:_D:4/4:8/4: #gras_arch=8;  gras_size=32; gras_arch_name=big32_4;
-B_C:1/1:_I:2/2:4/2:4/2:8/2:_P:4/2:4/2:_D:4/2:8/2: #gras_arch=9;  gras_size=32; gras_arch_name=big32_2;
-B_C:1/1:_I:2/2:4/4:8/8:8/8:_P:8/8:8/8:_D:4/4:8/8: #gras_arch=10; gras_size=64; gras_arch_name=big64;
-B_C:1/1:_I:2/2:4/4:8/8:8/8:_P:8/8:8/8:_D:4/4:8/4: #gras_arch=11; gras_size=64; gras_arch_name=big64_8_4;
+l_C:1/1:_I:2/1:4/1:4/1:8/1:_P:4/1:4/1:_D:4/1:8/1: #xbt_arch=0;  xbt_size=32; xbt_arch_name=little32_1;
+l_C:1/1:_I:2/2:4/2:4/2:8/2:_P:4/2:4/2:_D:4/2:8/2: #xbt_arch=1;  xbt_size=32; xbt_arch_name=little32_2;
+l_C:1/1:_I:2/2:4/4:4/4:8/4:_P:4/4:4/4:_D:4/4:8/4: #xbt_arch=2;  xbt_size=32; xbt_arch_name=little32_4;
+l_C:1/1:_I:2/2:4/4:4/4:8/8:_P:4/4:4/4:_D:4/4:8/8: #xbt_arch=3;  xbt_size=32; xbt_arch_name=little32_8;
+l_C:1/1:_I:2/2:4/4:8/8:8/8:_P:8/8:8/8:_D:4/4:8/8: #xbt_arch=4;  xbt_size=64; xbt_arch_name=little64;
+l_C:1/1:_I:2/2:4/4:4/4:8/8:_P:8/8:8/8:_D:4/4:8/8: #xbt_arch=5;  xbt_size=64; xbt_arch_name=little64_2;
+
+B_C:1/1:_I:2/2:4/4:4/4:8/8:_P:4/4:4/4:_D:4/4:8/8: #xbt_arch=6;  xbt_size=32; xbt_arch_name=big32_8;
+B_C:1/1:_I:2/2:4/4:4/4:8/8:_P:4/4:4/4:_D:4/4:8/4: #xbt_arch=7;  xbt_size=32; xbt_arch_name=big32_8_4;
+B_C:1/1:_I:2/2:4/4:4/4:8/4:_P:4/4:4/4:_D:4/4:8/4: #xbt_arch=8;  xbt_size=32; xbt_arch_name=big32_4;
+B_C:1/1:_I:2/2:4/2:4/2:8/2:_P:4/2:4/2:_D:4/2:8/2: #xbt_arch=9;  xbt_size=32; xbt_arch_name=big32_2;
+B_C:1/1:_I:2/2:4/4:8/8:8/8:_P:8/8:8/8:_D:4/4:8/8: #xbt_arch=10; xbt_size=64; xbt_arch_name=big64;
+B_C:1/1:_I:2/2:4/4:8/8:8/8:_P:8/8:8/8:_D:4/4:8/4: #xbt_arch=11; xbt_size=64; xbt_arch_name=big64_8_4;
 
   PLEASE DO NOT MESS WITH THESE HARDCODED VALUES
   
@@ -39,7 +39,7 @@ B_C:1/1:_I:2/2:4/4:8/8:8/8:_P:8/8:8/8:_D:4/4:8/4: #gras_arch=11; gras_size=64; g
   
  ***/
 
-const gras_arch_desc_t gras_arches[gras_arch_count] = {
+const xbt_arch_desc_t xbt_arches[xbt_arch_count] = {
 
   {"little32_1", 0, {1, 2, 4, 4, 8, 4, 4, 4, 8},        /* little endian, 1 byte alignement (win32) */
    {1, 1, 1, 1, 1, 1, 1, 1, 1}},
@@ -78,32 +78,32 @@ const gras_arch_desc_t gras_arches[gras_arch_count] = {
    {1, 2, 4, 8, 8, 8, 8, 4, 4}}
 };
 
-const char *gras_datadesc_arch_name(int code)
+const char *xbt_datadesc_arch_name(int code)
 {
-  if (code < 0 || code >= gras_arch_count)
+  if (code < 0 || code >= xbt_arch_count)
     return "[unknown arch]";
-  return gras_arches[code].name;
+  return xbt_arches[code].name;
 }
 
 
 /**
  * Local function doing the grunt work
  */
-static void gras_dd_reverse_bytes(void *to, const void *from,
+static void xbt_dd_reverse_bytes(void *to, const void *from,
                                   size_t length);
 
 /**
- * gras_dd_convert_elm:
+ * xbt_dd_convert_elm:
  *
  * Convert the element described by @type comming from architecture @r_arch.
  * The data to be converted is stored in @src, and is to be stored in @dst.
  * Both pointers may be the same location if no resizing is needed.
  */
 void
-gras_dd_convert_elm(gras_datadesc_type_t type, int count,
+xbt_dd_convert_elm(xbt_datadesc_type_t type, int count,
                     int r_arch, void *src, void *dst)
 {
-  gras_dd_cat_scalar_t scal = type->category.scalar_data;
+  xbt_dd_cat_scalar_t scal = type->category.scalar_data;
   int cpt;
   const void *r_data;
   void *l_data;
@@ -115,7 +115,7 @@ gras_dd_convert_elm(gras_datadesc_type_t type, int count,
      } tester;
    */
 
-  xbt_assert(type->category_code == e_gras_datadesc_type_cat_scalar);
+  xbt_assert(type->category_code == e_xbt_datadesc_type_cat_scalar);
   xbt_assert(r_arch != GRAS_THISARCH);
 
   r_size = type->size[r_arch];
@@ -123,8 +123,8 @@ gras_dd_convert_elm(gras_datadesc_type_t type, int count,