Commit 835f2900 authored by Dominik Charousset's avatar Dominik Charousset

re-implemented correct timeout behavior in timed_*

parent 82b23a81
......@@ -184,6 +184,18 @@ void delayed_reply_tuple(const util::duration& rel_time,
message_id mid,
any_tuple data);
/**
* @brief Sends a reply message that is delayed by @p rel_time.
* @param rtime Relative time duration to delay the message in
* microseconds, milliseconds, seconds or minutes.
* @param what Message content as a tuple.
* @see delayed_send()
*/
void delayed_reply_tuple(const util::duration& rel_time,
actor_ptr whom,
message_id mid,
any_tuple data);
/**
* @brief Sends a reply message that is delayed by @p rel_time.
* @param rtime Relative time duration to delay the message in
......@@ -223,7 +235,7 @@ message_future timed_sync_send_tuple(actor_ptr whom,
any_tuple what) {
auto mf = sync_send_tuple(std::move(whom), std::move(what));
auto tmp = make_any_tuple(atom("TIMEOUT"));
delayed_reply_tuple(util::duration{rel_time}, mf.id(), std::move(tmp));
delayed_reply_tuple(util::duration{rel_time}, self, mf.id(), std::move(tmp));
return mf;
}
......
......@@ -41,15 +41,22 @@ void delayed_send_tuple(const channel_ptr& to,
}
void delayed_reply_tuple(const util::duration& rel_time,
actor_ptr whom,
message_id mid,
any_tuple data) {
auto& receiver = self->last_sender();
if (receiver) get_scheduler()->delayed_reply(receiver,
if (whom) get_scheduler()->delayed_reply(whom,
rel_time,
mid,
std::move(data));
}
void delayed_reply_tuple(const util::duration& rel_time,
message_id mid,
any_tuple data) {
delayed_reply_tuple(rel_time, self->last_sender(), mid, std::move(data));
}
void delayed_reply_tuple(const util::duration& rel_time, any_tuple data) {
delayed_reply_tuple(rel_time, self->get_response_id(), std::move(data));
}
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment