Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Kill gras measurement sockets for now. If you rely on them, sorry.
[simgrid.git] / src / gras / Transport / transport.c
index ed3f43e..3d159d1 100644 (file)
@@ -162,11 +162,8 @@ void gras_trp_socket_new(int incoming, gras_socket_t * dst)
   sock->valid = 1;
   sock->moredata = 0;
 
+  sock->refcount = 1;
   sock->sd = -1;
-  sock->port = -1;
-  sock->peer_port = -1;
-  sock->peer_name = NULL;
-  sock->peer_proc = NULL;
 
   sock->data = NULL;
   sock->bufdata = NULL;
@@ -200,14 +197,13 @@ gras_socket_server_ext(unsigned short port,
   /* defaults settings */
   gras_trp_socket_new(1, &sock);
   sock->plugin = trp;
-  sock->port = port;
   sock->buf_size = buf_size > 0 ? buf_size : 32 * 1024;
   sock->meas = measurement;
 
   /* Call plugin socket creation function */
   DEBUG1("Prepare socket with plugin (fct=%p)", trp->socket_server);
   TRY {
-    trp->socket_server(trp, sock);
+    trp->socket_server(trp, port, sock);
     DEBUG3("in=%c out=%c accept=%c",
            sock->incoming ? 'y' : 'n',
            sock->outgoing ? 'y' : 'n', sock->accepting ? 'y' : 'n');
@@ -288,14 +284,12 @@ gras_socket_client_ext(const char *host,
   /* defaults settings */
   gras_trp_socket_new(0, &sock);
   sock->plugin = trp;
-  sock->peer_port = port;
-  sock->peer_name = (char *) strdup(host ? host : "localhost");
   sock->buf_size = buf_size > 0 ? buf_size : 32 * 1024;
   sock->meas = measurement;
 
   /* plugin-specific */
   TRY {
-    (*trp->socket_client) (trp, sock);
+    (*trp->socket_client) (trp,host,port,sock);
     DEBUG3("in=%c out=%c accept=%c",
            sock->incoming ? 'y' : 'n',
            sock->outgoing ? 'y' : 'n', sock->accepting ? 'y' : 'n');
@@ -343,6 +337,9 @@ void gras_socket_close_voidp(void *sock)
 /** \brief Close socket */
 void gras_socket_close(gras_socket_t sock)
 {
+  if (--sock->refcount)
+    return;
+
   xbt_dynar_t sockets =
       ((gras_trp_procdata_t)
        gras_libdata_by_id(gras_trp_libdata_id))->sockets;
@@ -376,8 +373,6 @@ void gras_socket_close(gras_socket_t sock)
           (*sock->plugin->socket_close) (sock);
 
         /* free the memory */
-        if (sock->peer_name)
-          free(sock->peer_name);
         free(sock);
         XBT_OUT;
         return;
@@ -432,27 +427,33 @@ gras_trp_plugin_t gras_trp_plugin_get_by_name(const char *name)
 
 int gras_socket_my_port(gras_socket_t sock)
 {
-  return sock->port;
+  if (!sock->plugin->my_port)
+    THROW1(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)
 {
-  return sock->peer_port;
+  if (!sock->plugin->peer_port)
+    THROW1(unknown_error,0,"Function peer_port unimplemented in plugin %s",sock->plugin->name);
+  return (*sock->plugin->peer_port)(sock);
 }
 
-char *gras_socket_peer_name(gras_socket_t sock)
+const char *gras_socket_peer_name(gras_socket_t sock)
 {
-  return sock->peer_name;
+  xbt_assert(sock->plugin);
+  return (*sock->plugin->peer_name)(sock);
 }
 
-char *gras_socket_peer_proc(gras_socket_t sock)
+const char *gras_socket_peer_proc(gras_socket_t sock)
 {
-  return sock->peer_proc;
+  return (*sock->plugin->peer_proc)(sock);
 }
 
 void gras_socket_peer_proc_set(gras_socket_t sock, char *peer_proc)
 {
-  sock->peer_proc = 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) */
@@ -489,7 +490,8 @@ void gras_socket_meas_send(gras_socket_t peer,
   unsigned long int sent_sofar;
 
   XBT_IN;
-
+  THROW0(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);
 
@@ -536,6 +538,8 @@ void gras_socket_meas_recv(gras_socket_t peer,
   unsigned long int got_sofar;
 
   XBT_IN;
+  THROW0(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);
@@ -576,6 +580,8 @@ void gras_socket_meas_recv(gras_socket_t peer,
 gras_socket_t gras_socket_meas_accept(gras_socket_t peer)
 {
   gras_socket_t res;
+  THROW0(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_assert0(peer->meas,
               "No need to accept on non-measurement sockets (it's automatic)");