Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Merge branch 'master' of scm.gforge.inria.fr:/gitroot/simgrid/simgrid
[simgrid.git] / src / msg / msg_mailbox.cpp
index 5235ffb..1594821 100644 (file)
@@ -16,29 +16,19 @@ msg_mailbox_t MSG_mailbox_new(const char *alias)
   return simcall_mbox_create(alias);
 }
 
-void MSG_mailbox_free(void *mailbox)
-{
-  simcall_mbox_destroy((msg_mailbox_t)mailbox);
-}
-
 int MSG_mailbox_is_empty(msg_mailbox_t mailbox)
 {
-  return (NULL == simcall_mbox_get_head(mailbox));
+  return (NULL == simcall_mbox_front(mailbox));
 }
 
-msg_task_t MSG_mailbox_get_head(msg_mailbox_t mailbox)
+msg_task_t MSG_mailbox_front(msg_mailbox_t mailbox)
 {
-  smx_synchro_t comm = simcall_mbox_get_head(mailbox);
+  simgrid::simix::Comm* comm = static_cast<simgrid::simix::Comm*>(simcall_mbox_front(mailbox));
 
   if (!comm)
     return NULL;
 
-  return (msg_task_t) simcall_comm_get_src_data(comm);
-}
-
-int MSG_mailbox_get_count_host_waiting_tasks(msg_mailbox_t mailbox, msg_host_t host)
-{
-  return simcall_mbox_comm_count_by_host(mailbox, host);
+  return (msg_task_t) comm->src_data;
 }
 
 msg_mailbox_t MSG_mailbox_get_by_alias(const char *alias)
@@ -148,79 +138,3 @@ msg_error_t MSG_mailbox_get_task_ext_bounded(msg_mailbox_t mailbox, msg_task_t *
   }
   MSG_RETURN(ret);
 }
-
-msg_error_t MSG_mailbox_put_with_timeout(msg_mailbox_t mailbox, msg_task_t task, double timeout)
-{
-  msg_error_t ret = MSG_OK;
-  simdata_task_t t_simdata = NULL;
-  msg_process_t process = MSG_process_self();
-  simdata_process_t p_simdata = (simdata_process_t) SIMIX_process_self_get_data();
-
-  int call_end = TRACE_msg_task_put_start(task);    //must be after CHECK_HOST()
-
-  /* Prepare the task to send */
-  t_simdata = task->simdata;
-  t_simdata->sender = process;
-  t_simdata->source = ((simdata_process_t) SIMIX_process_self_get_data())->m_host;
-
-  if (t_simdata->isused != 0) {
-    if (msg_global->debug_multiple_use){
-      XBT_ERROR("This task is already used in there:");
-      xbt_backtrace_display((xbt_ex_t*) t_simdata->isused);
-      XBT_ERROR("And you try to reuse it from here:");
-      xbt_backtrace_display_current();
-    } else {
-      xbt_assert(t_simdata->isused == 0,
-                 "This task is still being used somewhere else. You cannot send it now. Go fix your code!"
-                 " (use --cfg=msg/debug_multiple_use:on to get the backtrace of the other process)");
-    }
-  }
-
-  if (msg_global->debug_multiple_use)
-    MSG_BT(t_simdata->isused, "Using Backtrace");
-  else
-    t_simdata->isused = (void*)1;
-  t_simdata->comm = NULL;
-  msg_global->sent_msg++;
-
-  p_simdata->waiting_task = task;
-
-  xbt_ex_t e;
-  /* Try to send it by calling SIMIX network layer */
-  TRY {
-    smx_synchro_t comm = NULL; /* MC needs the comm to be set to NULL during the simix call  */
-    comm = simcall_comm_isend(SIMIX_process_self(), mailbox,t_simdata->bytes_amount,
-                              t_simdata->rate, task, sizeof(void *), NULL, NULL, NULL, task, 0);
-    if (TRACE_is_enabled())
-      simcall_set_category(comm, task->category);
-     t_simdata->comm = comm;
-     simcall_comm_wait(comm, timeout);
-  }
-
-  CATCH(e) {
-    switch (e.category) {
-    case cancel_error:
-      ret = MSG_HOST_FAILURE;
-      break;
-    case network_error:
-      ret = MSG_TRANSFER_FAILURE;
-      break;
-    case timeout_error:
-      ret = MSG_TIMEOUT;
-      break;
-    default:
-      RETHROW;
-    }
-    xbt_ex_free(e);
-
-    /* If the send failed, it is not used anymore */
-    if (msg_global->debug_multiple_use && t_simdata->isused!=0)
-      xbt_ex_free(*(xbt_ex_t*)t_simdata->isused);
-    t_simdata->isused = 0;
-  }
-
-  p_simdata->waiting_task = NULL;
-  if (call_end)
-    TRACE_msg_task_put_end();
-  MSG_RETURN(ret);
-}