+/** \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 exp_size total amount of data to send (in bytes).
+ * @param msg_size size of each chunk sent over the socket (in bytes).
+ *
+ * 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).
+ */
+void gras_socket_meas_send(gras_socket_t peer,
+ unsigned int timeout,
+ unsigned long int exp_size,
+ unsigned long int msg_size) {
+ char *chunk=NULL;
+ unsigned long int exp_sofar;
+
+ XBT_IN;
+
+ if (gras_if_RL())
+ chunk=xbt_malloc0(msg_size);
+
+ xbt_assert0(peer->meas,"Asked to send measurement data on a regular socket");
+ xbt_assert0(peer->outgoing,"Socket not suited for data send (was created with gras_socket_server(), not gras_socket_client())");
+
+ for (exp_sofar=0; exp_sofar < exp_size; exp_sofar += msg_size) {
+ CDEBUG5(gras_trp_meas,"Sent %lu of %lu (msg_size=%ld) to %s:%d",
+ exp_sofar,exp_size,msg_size,
+ gras_socket_peer_name(peer), gras_socket_peer_port(peer));
+ (*peer->plugin->raw_send)(peer,chunk,msg_size);
+ }
+ CDEBUG5(gras_trp_meas,"Sent %lu of %lu (msg_size=%ld) to %s:%d",
+ exp_sofar,exp_size,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.
+ */
+void gras_socket_meas_recv(gras_socket_t peer,
+ unsigned int timeout,
+ unsigned long int exp_size,
+ unsigned long int msg_size){