* under the terms of the license (GNU LGPL) which comes with this package. */
#include "xbt/ex.h"
-#include "xbt/host.h"
+#include "xbt/peer.h"
#include "portable.h"
#include "gras/Transport/transport_private.h"
gras_socket_t sock=xbt_new0(s_gras_socket_t,1);
- DEBUG1("Create a new socket (%p)", (void*)sock);
+ VERB1("Create a new socket (%p)", (void*)sock);
sock->plugin = NULL;
sock->accepting = incoming ? 1:0;
sock->meas = 0;
sock->recv_ok = 1;
+ sock->valid = 1;
sock->sd = -1;
sock->port = -1;
*dst = sock;
xbt_dynar_push(((gras_trp_procdata_t)
- gras_libdata_by_id(gras_trp_libdata_id))->sockets,dst);
+ gras_libdata_by_id(gras_trp_libdata_id))->sockets,dst);
XBT_OUT;
}
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_ex_t e;
-
- for (port=minport; port<maxport;port ++) {
- TRY {
- res=gras_socket_server_ext(port,buf_size,measurement);
- } CATCH(e) {
- if (port==maxport)
- RETHROW;
- xbt_ex_free(e);
- }
+ int port;
+ gras_socket_t res=NULL;
+ xbt_ex_t e;
+
+ for (port=minport; port<maxport;port ++) {
+ TRY {
+ res=gras_socket_server_ext(port,buf_size,measurement);
+ } CATCH(e) {
+ if (port==maxport)
+ RETHROW;
+ xbt_ex_free(e);
+ }
+ if (res)
return res;
- }
- THROW_IMPOSSIBLE;
+ }
+ THROW_IMPOSSIBLE;
}
/**
return gras_socket_client_ext(host,port,0,0);
}
-/** @brief Opens a client socket to a remote host specified as '<host>:<port>' */
+/** @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_host_t h = xbt_host_from_string(host);
- gras_socket_t res = gras_socket_client_ext(h->name,h->port,0,0);
- xbt_host_free(h);
+ xbt_peer_t p = xbt_peer_from_string(host);
+ gras_socket_t res = gras_socket_client_ext(p->name,p->port,0,0);
+ xbt_peer_free(p);
return res;
}
int cursor;
XBT_IN;
+ VERB1("Close %p",sock);
/* FIXME: Issue an event when the socket is closed */
if (sock) {
xbt_dynar_foreach(sockets,cursor,sock_iter) {
* Freeing procdata for this module
*/
static void gras_trp_procdata_free(void *data) {
- gras_trp_procdata_t res = (gras_trp_procdata_t)data;
-
- xbt_dynar_free(&( res->sockets ));
- free(res->name);
- free(res);
+ gras_trp_procdata_t res = (gras_trp_procdata_t)data;
+
+ xbt_dynar_free(&( res->sockets ));
+ free(res->name);
+ free(res);
+}
+
+void gras_trp_socketset_dump(const char *name) {
+ gras_trp_procdata_t procdata =
+ (gras_trp_procdata_t)gras_libdata_by_id(gras_trp_libdata_id);
+
+ int it;
+ gras_socket_t s;
+
+ INFO1("** Dump the socket set %s",name);
+ xbt_dynar_foreach(procdata->sockets, it, s) {
+ INFO4(" %p -> %s:%d %s",
+ s,gras_socket_peer_name(s),gras_socket_peer_port(s),
+ s->valid?"(valid)":"(peer dead)");
+ }
+ INFO1("** End of socket set %s",name);
}
/*