1 #include "rb_msg_task.h"
5 static void task_free(m_task_t tk) {
10 static VALUE task_new(VALUE class, VALUE name,VALUE comp_size,VALUE comm_size)
13 //char * t_name = RSTRING(name)->ptr;
14 m_task_t task = MSG_task_create(RSTRING(name)->ptr,NUM2INT(comp_size),NUM2INT(comm_size),NULL);
15 // Wrap m_task_t to a Ruby Value
16 return Data_Wrap_Struct(class, 0, task_free, task);
20 //Get Computation Size
21 static VALUE task_comp(VALUE class,VALUE task)
25 // Wrap Ruby Value to m_task_t struct
26 Data_Get_Struct(task, m_task_t, tk);
27 size = MSG_task_get_compute_duration(tk);
28 return rb_float_new(size);
34 static VALUE task_name(VALUE class,VALUE task)
37 // Wrap Ruby Value to m_task_t struct
40 Data_Get_Struct(task, m_task_t, tk);
41 return rb_str_new2(MSG_task_get_name(tk));
50 static VALUE task_execute(VALUE class,VALUE task)
53 // Wrap Ruby Value to m_task_t struct
55 Data_Get_Struct(task, m_task_t, tk);
56 return INT2NUM(MSG_task_execute(tk));
63 static void task_send(VALUE class,VALUE task,VALUE mailbox)
66 // Wrap Ruby Value to m_task_t struct
69 Data_Get_Struct(task, m_task_t, tk);
70 int res = MSG_task_send(tk,RSTRING(mailbox)->ptr);
73 rb_raise(rb_eRuntimeError,"MSG_task_send failed");
84 static VALUE task_receive(VALUE class,VALUE mailbox)
87 MSG_task_receive(tk,RSTRING(mailbox)->ptr);
88 return Data_Wrap_Struct(class, 0, task_free, tk);
93 static VALUE task_receive2(VALUE class,VALUE task,VALUE mailbox)
96 Data_Get_Struct(task, m_task_t, tk);
97 return INT2NUM(MSG_task_receive(tk,RSTRING(mailbox)->ptr));
102 // It Return a Native Process ( m_process_t )
103 static VALUE task_sender(VALUE class,VALUE task)
106 Data_Get_Struct(task,m_task_t,tk);
107 return MSG_task_get_sender(tk);
112 static VALUE task_source(VALUE class,VALUE task)
115 Data_Get_Struct(task,m_task_t,tk);
117 m_host_t host = MSG_task_get_source(tk);
120 rb_raise(rb_eRuntimeError,"MSG_task_get_source() failed");
128 static VALUE task_listen(VALUE class,VALUE task,VALUE alias)
134 Data_Get_Struct(task,m_task_t,tk);
135 p_alias = RSTRING(alias)->ptr;
137 rv = MSG_task_listen(p_alias);
146 static VALUE task_listen_host(VALUE class,VALUE task,VALUE alias,VALUE host)
154 Data_Get_Struct(task,m_task_t,tk);
155 Data_Get_Struct(host,m_host_t,ht);
156 p_alias = RSTRING(alias)->ptr;
158 rv = MSG_task_listen_from_host(p_alias,ht);
160 if (rv) return Qtrue;