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, ...@@ -184,6 +184,18 @@ void delayed_reply_tuple(const util::duration& rel_time,
message_id mid, message_id mid,
any_tuple data); 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. * @brief Sends a reply message that is delayed by @p rel_time.
* @param rtime Relative time duration to delay the message in * @param rtime Relative time duration to delay the message in
...@@ -223,7 +235,7 @@ message_future timed_sync_send_tuple(actor_ptr whom, ...@@ -223,7 +235,7 @@ message_future timed_sync_send_tuple(actor_ptr whom,
any_tuple what) { any_tuple what) {
auto mf = sync_send_tuple(std::move(whom), std::move(what)); auto mf = sync_send_tuple(std::move(whom), std::move(what));
auto tmp = make_any_tuple(atom("TIMEOUT")); 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; return mf;
} }
......
...@@ -41,13 +41,20 @@ void delayed_send_tuple(const channel_ptr& to, ...@@ -41,13 +41,20 @@ void delayed_send_tuple(const channel_ptr& to,
} }
void delayed_reply_tuple(const util::duration& rel_time, void delayed_reply_tuple(const util::duration& rel_time,
actor_ptr whom,
message_id mid, message_id mid,
any_tuple data) { any_tuple data) {
auto& receiver = self->last_sender(); if (whom) get_scheduler()->delayed_reply(whom,
if (receiver) get_scheduler()->delayed_reply(receiver, rel_time,
rel_time, mid,
mid, std::move(data));
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) { void delayed_reply_tuple(const util::duration& rel_time, any_tuple 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