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 VALUE task_send(VALUE class,VALUE task,VALUE mailbox)
66 // Wrap Ruby Value to m_task_t struct
68 Data_Get_Struct(task, m_task_t, tk);
69 return INT2NUM(MSG_task_send(tk,RSTRING(mailbox)->ptr));
80 static VALUE task_receive(VALUE class,VALUE mailbox)
83 MSG_task_receive(tk,RSTRING(mailbox)->ptr);
84 return Data_Wrap_Struct(class, 0, task_free, tk);
89 static VALUE task_receive2(VALUE class,VALUE task,VALUE mailbox)
92 Data_Get_Struct(task, m_task_t, tk);
93 return INT2NUM(MSG_task_receive(tk,RSTRING(mailbox)->ptr));
98 // It Return a Native Process ( m_process_t )
99 static VALUE task_sender(VALUE class,VALUE task)
102 Data_Get_Struct(task,m_task_t,tk);
103 return MSG_task_get_sender(tk);
108 static VALUE task_source(VALUE class,VALUE task)
111 Data_Get_Struct(task,m_task_t,tk);
113 m_host_t host = MSG_task_get_source(tk);
116 rb_raise(rb_eRuntimeError,"MSG_task_get_source() failed");
124 static VALUE task_listen(VALUE class,VALUE task,VALUE alias)
130 Data_Get_Struct(task,m_task_t,tk);
131 p_alias = RSTRING(alias)->ptr;
133 rv = MSG_task_listen(p_alias);
142 static VALUE task_listen_host(VALUE class,VALUE task,VALUE alias,VALUE host)
150 Data_Get_Struct(task,m_task_t,tk);
151 Data_Get_Struct(host,m_host_t,ht);
152 p_alias = RSTRING(alias)->ptr;
154 rv = MSG_task_listen_from_host(p_alias,ht);
156 if (rv) return Qtrue;