+Activity* Activity::wait_for(double timeout)
+{
+ if (state_ == State::INITED)
+ vetoable_start();
+
+ kernel::actor::ActorImpl* issuer = kernel::actor::ActorImpl::self();
+ kernel::actor::ActivityWaitSimcall observer{issuer, pimpl_.get(), timeout};
+ if (kernel::actor::simcall_blocking(
+ [&observer] { observer.get_activity()->wait_for(observer.get_issuer(), observer.get_timeout()); }, &observer))
+ throw TimeoutException(XBT_THROW_POINT, "Timeouted");
+ complete(State::FINISHED);
+ return this;
+}
+