-m_task_t communicator::recv()
-{
- m_task_t task = NULL;
- if (comm_test_n_destroy(recv_comm)) {
- task = recv_task;
- recv_task = NULL;
- recv_comm = MSG_task_irecv(&recv_task, recv_mbox);
+ if (comm_test_n_destroy(ctrl_comm)) {
+ msg = (message* )MSG_task_get_data(ctrl_task);
+ from = MSG_task_get_source(ctrl_task);
+ MSG_task_destroy(ctrl_task);
+ ctrl_task = NULL;
+ ctrl_comm = MSG_task_irecv(&ctrl_task, get_ctrl_mbox());
+
+ } else if (comm_test_n_destroy(data_comm)) {
+ msg = (message* )MSG_task_get_data(data_task);
+ from = MSG_task_get_source(data_task);
+ MSG_task_destroy(data_task);
+ data_task = NULL;
+ data_comm = MSG_task_irecv(&data_task, get_data_mbox());