Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
try to clean and uniformize Activity Impls
[simgrid.git] / src / s4u / s4u_Exec.cpp
index f2516f3..60bdd34 100644 (file)
@@ -12,12 +12,12 @@ XBT_LOG_NEW_DEFAULT_SUBCATEGORY(s4u_exec, s4u_activity, "S4U asynchronous execut
 
 namespace simgrid {
 namespace s4u {
-simgrid::xbt::signal<void(simgrid::s4u::ActorPtr)> s4u::Exec::on_start;
-simgrid::xbt::signal<void(simgrid::s4u::ActorPtr)> s4u::Exec::on_completion;
+xbt::signal<void(Actor const&)> Exec::on_start;
+xbt::signal<void(Actor const&)> Exec::on_completion;
 
 Exec::Exec()
 {
-  pimpl_ = kernel::activity::ExecImplPtr(new kernel::activity::ExecImpl(name_, tracing_category_));
+  pimpl_ = kernel::activity::ExecImplPtr(new kernel::activity::ExecImpl());
 }
 
 bool Exec::test()
@@ -44,7 +44,7 @@ Exec* Exec::wait()
     start();
   simcall_execution_wait(pimpl_);
   state_ = State::FINISHED;
-  on_completion(Actor::self());
+  on_completion(*Actor::self());
   return this;
 }
 
@@ -55,7 +55,7 @@ Exec* Exec::wait_for(double)
 
 Exec* Exec::cancel()
 {
-  simgrid::simix::simcall([this] { boost::static_pointer_cast<kernel::activity::ExecImpl>(pimpl_)->cancel(); });
+  simix::simcall([this] { boost::static_pointer_cast<kernel::activity::ExecImpl>(pimpl_)->cancel(); });
   state_ = State::CANCELED;
   return this;
 }
@@ -127,10 +127,13 @@ ExecSeq::ExecSeq(sg_host_t host, double flops_amount) : Exec(), flops_amount_(fl
 Exec* ExecSeq::start()
 {
   simix::simcall([this] {
-    boost::static_pointer_cast<kernel::activity::ExecImpl>(pimpl_)->start(flops_amount_, 1. / priority_, bound_);
+    (*boost::static_pointer_cast<kernel::activity::ExecImpl>(pimpl_))
+        .set_name(name_)
+        .set_tracing_category(tracing_category_)
+        .start(flops_amount_, 1. / priority_, bound_);
   });
   state_ = State::STARTED;
-  on_start(Actor::self());
+  on_start(*Actor::self());
   return this;
 }
 
@@ -191,14 +194,13 @@ Exec* ExecPar::start()
     boost::static_pointer_cast<kernel::activity::ExecImpl>(pimpl_)->start(hosts_, flops_amounts_, bytes_amounts_);
   });
   state_ = State::STARTED;
-  on_start(Actor::self());
+  on_start(*Actor::self());
   return this;
 }
 double ExecPar::get_remaining_ratio()
 {
-  return simgrid::simix::simcall([this]() {
-    return boost::static_pointer_cast<simgrid::kernel::activity::ExecImpl>(pimpl_)->get_par_remaining_ratio();
-  });
+  return simix::simcall(
+      [this]() { return boost::static_pointer_cast<kernel::activity::ExecImpl>(pimpl_)->get_par_remaining_ratio(); });
 }
 
 double ExecPar::get_remaining()