+void rb_task_send(VALUE class, VALUE task, VALUE mailbox)
+{
+
+ MSG_error_t rv;
+ rb_data_t data;
+ // Wrap Ruby Value to m_task_t struct
+ m_task_t tk;
+ Data_Get_Struct(task, s_m_task_t, tk);
+ data = MSG_task_get_data(tk);
+ data->ruby_task = (void *) task;
+ MSG_task_set_data(tk, (void *) data);
+ DEBUG1("Sending task %p", tk);
+ rv = MSG_task_send(tk, RSTRING(mailbox)->ptr);
+ if (rv != MSG_OK) {
+ if (rv == MSG_TRANSFER_FAILURE)
+ rb_raise(rb_eRuntimeError, "Transfer failure while Sending");
+ else if (rv == MSG_HOST_FAILURE)
+ rb_raise(rb_eRuntimeError, "Host failure while Sending");
+ else if (rv == MSG_TIMEOUT)
+ rb_raise(rb_eRuntimeError, "Timeout failure while Sending");
+ else
+ rb_raise(rb_eRuntimeError, "MSG_task_send failed");
+ }
+}