Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
mv category from msg_task_t to simgrid::msg::Task
[simgrid.git] / src / msg / msg_gos.cpp
index c173b4b..afae6c3 100644 (file)
@@ -64,19 +64,21 @@ msg_error_t MSG_parallel_task_execute_with_timeout(msg_task_t task, double timeo
     if (simdata->host_nb > 0) {
       simdata->compute =
           boost::static_pointer_cast<simgrid::kernel::activity::ExecImpl>(simcall_execution_parallel_start(
-              task->name ?: "", simdata->host_nb, simdata->host_list, simdata->flops_parallel_amount,
-              simdata->bytes_parallel_amount, -1.0, timeout));
+              std::move(task->simdata->get_name()), simdata->host_nb, simdata->host_list,
+              simdata->flops_parallel_amount, simdata->bytes_parallel_amount, -1.0, timeout));
       XBT_DEBUG("Parallel execution action created: %p", simdata->compute.get());
-      if (task->category != nullptr)
-        simgrid::simix::simcall([task] { task->simdata->compute->set_category(task->category); });
+      if (task->simdata->has_tracing_category())
+        simgrid::simix::simcall(
+            [task] { task->simdata->compute->set_category(std::move(task->simdata->get_tracing_category())); });
     } else {
       sg_host_t host   = MSG_process_get_host(MSG_process_self());
       simdata->compute = simgrid::simix::simcall([task, host] {
-        return simgrid::kernel::activity::ExecImplPtr(
-            new simgrid::kernel::activity::ExecImpl(task->name ?: "", task->category ?: "", host));
+        return simgrid::kernel::activity::ExecImplPtr(new simgrid::kernel::activity::ExecImpl(
+            std::move(task->simdata->get_name()), std::move(task->simdata->get_tracing_category()), host));
       });
       /* checking for infinite values */
       xbt_assert(std::isfinite(simdata->flops_amount), "flops_amount is not finite!");
+      xbt_assert(std::isfinite(simdata->priority), "priority is not finite!");
 
       simdata->compute->start(simdata->flops_amount, simdata->priority, simdata->bound);
     }
@@ -85,7 +87,7 @@ msg_error_t MSG_parallel_task_execute_with_timeout(msg_task_t task, double timeo
 
     simdata->set_not_used();
 
-    XBT_DEBUG("Execution task '%s' finished in state %d", task->name, (int)comp_state);
+    XBT_DEBUG("Execution task '%s' finished in state %d", task->simdata->get_cname(), (int)comp_state);
   } catch (simgrid::HostFailureException& e) {
     status = MSG_HOST_FAILURE;
   } catch (simgrid::TimeoutError& e) {
@@ -250,7 +252,7 @@ msg_error_t MSG_task_receive_ext_bounded(msg_task_t * task, const char *alias, d
         ->set_rate(rate)
         ->wait_for(timeout);
     *task = static_cast<msg_task_t>(payload);
-    XBT_DEBUG("Got task %s from %s", (*task)->name, alias);
+    XBT_DEBUG("Got task %s from %s", (*task)->simdata->get_cname(), alias);
     (*task)->simdata->set_not_used();
   } catch (simgrid::HostFailureException& e) {
     ret = MSG_HOST_FAILURE;
@@ -302,8 +304,9 @@ static inline msg_comm_t MSG_task_isend_internal(msg_task_t task, const char* al
     msg_comm = new simgrid::msg::Comm(task, nullptr, comm);
   }
 
-  if (TRACE_is_enabled() && task->category != nullptr)
-    simgrid::simix::simcall([comm, task] { comm->get_impl()->set_category(task->category); });
+  if (TRACE_is_enabled() && task->simdata->has_tracing_category())
+    simgrid::simix::simcall(
+        [comm, task] { comm->get_impl()->set_category(std::move(task->simdata->get_tracing_category())); });
 
   return msg_comm;
 }
@@ -739,8 +742,9 @@ msg_error_t MSG_task_send_with_timeout(msg_task_t task, const char *alias, doubl
         simgrid::s4u::Mailbox::by_name(alias)->put_init(task, t_simdata->bytes_amount)->set_rate(t_simdata->rate);
     t_simdata->comm = comm;
     comm->start();
-    if (TRACE_is_enabled() && task->category != nullptr)
-      simgrid::simix::simcall([comm, task] { comm->get_impl()->set_category(task->category); });
+    if (TRACE_is_enabled() && task->simdata->has_tracing_category())
+      simgrid::simix::simcall(
+          [comm, task] { comm->get_impl()->set_category(std::move(task->simdata->get_tracing_category())); });
     comm->wait_for(timeout);
   } catch (simgrid::TimeoutError& e) {
     ret = MSG_TIMEOUT;
@@ -815,17 +819,18 @@ int MSG_task_listen_from(const char *alias)
  */
 void MSG_task_set_category (msg_task_t task, const char *category)
 {
-  xbt_assert(task->category == nullptr, "Task %p(%s) already has a category (%s).", task, task->name, task->category);
+  xbt_assert(not task->simdata->has_tracing_category(), "Task %p(%s) already has a category (%s).", task,
+             task->simdata->get_cname(), task->simdata->get_tracing_category().c_str());
 
   // if user provides a nullptr category, task is no longer traced
   if (category == nullptr) {
-    xbt_free(task->category);
-    task->category = nullptr;
-    XBT_DEBUG("MSG task %p(%s), category removed", task, task->name);
+    task->simdata->set_tracing_category("");
+    XBT_DEBUG("MSG task %p(%s), category removed", task, task->simdata->get_cname());
   } else {
     // set task category
-    task->category = xbt_strdup(category);
-    XBT_DEBUG("MSG task %p(%s), category %s", task, task->name, task->category);
+    task->simdata->set_tracing_category(category);
+    XBT_DEBUG("MSG task %p(%s), category %s", task, task->simdata->get_cname(),
+              task->simdata->get_tracing_category().c_str());
   }
 }
 
@@ -840,5 +845,5 @@ void MSG_task_set_category (msg_task_t task, const char *category)
  */
 const char *MSG_task_get_category (msg_task_t task)
 {
-  return task->category;
+  return task->simdata->get_tracing_category().c_str();
 }