A
lgorithmique
N
umérique
D
istribuée
Public GIT Repository
projects
/
simgrid.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
rename Activity::wait(double) to Activity::wait_for(double)
[simgrid.git]
/
src
/
s4u
/
s4u_Exec.cpp
diff --git
a/src/s4u/s4u_Exec.cpp
b/src/s4u/s4u_Exec.cpp
index
d956b76
..
8250f94
100644
(file)
--- a/
src/s4u/s4u_Exec.cpp
+++ b/
src/s4u/s4u_Exec.cpp
@@
-12,22
+12,35
@@
XBT_LOG_NEW_DEFAULT_SUBCATEGORY(s4u_exec, s4u_activity, "S4U asynchronous execut
namespace simgrid {
namespace s4u {
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;
Activity* Exec::start()
{
Activity* Exec::start()
{
- pimpl_ = simcall_execution_start(name_, flops_amount_, 1. / priority_, bound_, host_);
+ pimpl_ = simcall_execution_start(name_,
tracing_category_,
flops_amount_, 1. / priority_, bound_, host_);
state_ = State::STARTED;
state_ = State::STARTED;
+ on_start(Actor::self());
+ return this;
+}
+
+Activity* Exec::cancel()
+{
+ simgrid::simix::simcall([this] { dynamic_cast<kernel::activity::ExecImpl*>(pimpl_.get())->cancel(); });
+ state_ = State::CANCELED;
return this;
}
Activity* Exec::wait()
{
return this;
}
Activity* Exec::wait()
{
+ if (state_ == State::INITED)
+ start();
simcall_execution_wait(pimpl_);
state_ = State::FINISHED;
simcall_execution_wait(pimpl_);
state_ = State::FINISHED;
+ on_completion(Actor::self());
return this;
}
return this;
}
-Activity* Exec::wait(double timeout)
+Activity* Exec::wait
_for
(double timeout)
{
THROW_UNIMPLEMENTED;
return this;
{
THROW_UNIMPLEMENTED;
return this;
@@
-96,6
+109,13
@@
ExecPtr Exec::set_name(std::string name)
return this;
}
return this;
}
+ExecPtr Exec::set_tracing_category(std::string category)
+{
+ xbt_assert(state_ == State::INITED, "Cannot change the tracing category of an exec after its start");
+ tracing_category_ = category;
+ return this;
+}
+
/** @brief Retrieve the host on which this activity takes place. */
Host* Exec::get_host()
{
/** @brief Retrieve the host on which this activity takes place. */
Host* Exec::get_host()
{