+ if (sender) {
+
+ sprintf(name,"Raw data[%d]",count++);
+
+ task=MSG_task_create(name,0,((double)msgSize)/(1024.0*1024.0),NULL);
+
+ DEBUG5("%f:%s: gras_socket_raw_send(%f %s -> %s) BEGIN",
+ gras_os_time(), MSG_process_get_name(MSG_process_self()),
+ ((double)msgSize)/(1024.0*1024.0),
+ MSG_host_get_name( MSG_host_self()), peer->peer_name);
+
+ if (MSG_task_put(task, sock_data->to_host,sock_data->to_chan) != MSG_OK)
+ RAISE0(system_error,"Problem during the MSG_task_put()");
+
+ DEBUG5("%f:%s: gras_socket_raw_send(%f %s -> %s) END",
+ gras_os_time(), MSG_process_get_name(MSG_process_self()),
+ ((double)msgSize)/(1024.0*1024.0),
+ MSG_host_get_name( MSG_host_self()), peer->peer_name);
+
+ } else { /* we are receiver, simulate a select */
+
+ task=NULL;
+ DEBUG2("%f:%s: gras_socket_raw_recv() BEGIN\n",
+ gras_os_time(), MSG_process_get_name(MSG_process_self()));
+ do {
+ if (MSG_task_Iprobe((m_channel_t) pd->rawChan)) {
+ if (MSG_task_get(&task, (m_channel_t) pd->rawChan) != MSG_OK) {
+ fprintf(stderr,"GRAS: Error in MSG_task_get()\n");
+ return unknown_error;
+ }
+
+ if (MSG_task_destroy(task) != MSG_OK) {
+ fprintf(stderr,"GRAS: Error in MSG_task_destroy()\n");
+ return unknown_error;
+ }
+
+ DEBUG2("%f:%s: gras_socket_raw_recv() END\n",
+ gras_os_time(), MSG_process_get_name(MSG_process_self()));
+ break;
+ } else {
+ MSG_process_sleep(0.0001);
+ }
+
+ } while (gras_os_time() - startTime < timeout);
+
+ if (gras_os_time() - startTime > timeout)
+ return timeout_error;
+ } /* receiver part */
+ } /* foreach msg */
+
+ return no_error;