+
+char *MC_request_get_dot_output(smx_simcall_t req, int value){
+
+ char *str = NULL, *label = NULL;
+ smx_action_t act = NULL;
+ const char *host_name = MSG_host_get_name(MSG_process_get_host(req->issuer));
+
+ switch(req->call){
+ case SIMCALL_COMM_ISEND:
+ label = bprintf("[(%lu)%s] iSend", req->issuer->pid, host_name);
+ break;
+
+ case SIMCALL_COMM_IRECV:
+ label = bprintf("[(%lu)%s] iRecv", req->issuer->pid, host_name);
+ break;
+
+ case SIMCALL_COMM_WAIT:
+ act = simcall_comm_wait__get__comm(req);
+ if(value == -1)
+ label = bprintf("[(%lu)%s] WaitTimeout", req->issuer->pid, host_name);
+ else
+ label = bprintf("[(%lu)%s] Wait [(%lu)->(%lu)]", req->issuer->pid, host_name, act->comm.src_proc ? act->comm.src_proc->pid : 0, act->comm.dst_proc ? act->comm.dst_proc->pid : 0);
+ break;
+
+ case SIMCALL_COMM_TEST:
+ act = simcall_comm_test__get__comm(req);
+ if(act->comm.src_proc == NULL || act->comm.dst_proc == NULL)
+ label = bprintf("[(%lu)%s] Test FALSE", req->issuer->pid, host_name);
+ else
+ label = bprintf("[(%lu)%s] Test TRUE", req->issuer->pid, host_name);
+ break;
+
+ case SIMCALL_MC_RANDOM:
+ if(value == 0)
+ label = bprintf("[(%lu)%s] MC_RANDOM (0)", req->issuer->pid, host_name);
+ else
+ label = bprintf("[(%lu)%s] MC_RANDOM (1)", req->issuer->pid, host_name);
+ break;
+
+ case SIMCALL_MC_SNAPSHOT:
+ label = bprintf("[(%lu)%s] MC_SNAPSHOT", req->issuer->pid, host_name);
+ break;
+
+ case SIMCALL_MC_COMPARE_SNAPSHOTS:
+ label = bprintf("((%lu)%s) MC_COMPARE_SNAPSHOTS", req->issuer->pid, host_name);
+ break;
+
+ default:
+ THROW_UNIMPLEMENTED;
+ }
+
+ str = bprintf("label = \"%s\", color = %s, fontcolor = %s", label, colors[req->issuer->pid-1], colors[req->issuer->pid-1]);
+ xbt_free(label);
+ return str;
+
+}