- synchro->wait_for(simcall->issuer_, timeout);
-}
-
-void simcall_HANDLER_execution_waitany_for(smx_simcall_t simcall, simgrid::kernel::activity::ExecImpl* execs[],
- size_t count, double timeout)
-{
- if (timeout < 0.0) {
- simcall->timeout_cb_ = nullptr;
- } else {
- simcall->timeout_cb_ = simgrid::simix::Timer::set(SIMIX_get_clock() + timeout, [simcall, execs, count]() {
- for (size_t i = 0; i < count; i++) {
- // Remove the first occurrence of simcall:
- auto* exec = execs[i];
- auto j = boost::range::find(exec->simcalls_, simcall);
- if (j != exec->simcalls_.end())
- exec->simcalls_.erase(j);
- }
- simcall_execution_waitany_for__set__result(simcall, -1);
- simcall->issuer_->simcall_answer();
- });
- }
-
- for (size_t i = 0; i < count; i++) {
- /* associate this simcall to the the synchro */
- auto* exec = execs[i];
- exec->simcalls_.push_back(simcall);
-
- /* see if the synchro is already finished */
- if (exec->state_ != simgrid::kernel::activity::State::WAITING &&
- exec->state_ != simgrid::kernel::activity::State::RUNNING) {
- exec->finish();
- break;
- }
+ piface_ = new s4u::Exec(this);
+ actor::ActorImpl* self = actor::ActorImpl::self();
+ if (self) {
+ set_actor(self);
+ self->activities_.insert(this);