Commit f582e63c authored by Dominik Charousset's avatar Dominik Charousset

added delayed_send_tuple and delayed_reply_tuple

parent f30013ae
......@@ -68,8 +68,10 @@ class abstract_scheduled_actor : public abstract_actor<scheduled_actor> {
++m_active_timeout_id));
}
else {
get_scheduler()->delayed_send(this, d, atom("TIMEOUT"),
++m_active_timeout_id);
get_scheduler()->delayed_send(
this, d,
make_any_tuple(
atom("TIMEOUT"), ++m_active_timeout_id));
}
m_has_pending_timeout_request = true;
}
......
......@@ -116,13 +116,11 @@ class scheduler {
template<typename Duration, typename... Data>
void delayed_send(const channel_ptr& to,
const Duration& rel_time,
Data&&... data ) {
static_assert(sizeof...(Data) > 0, "no message to send");
auto sub = make_any_tuple(std::forward<Data>(data)...);
any_tuple data ) {
auto tup = make_any_tuple(atom("SEND"),
util::duration{rel_time},
to,
std::move(sub));
std::move(data));
delayed_send_helper()->enqueue(self, std::move(tup));
}
......@@ -130,20 +128,18 @@ class scheduler {
void delayed_reply(const actor_ptr& to,
const Duration& rel_time,
message_id_t id,
Data&&... data ) {
static_assert(sizeof...(Data) > 0, "no message to send");
any_tuple data ) {
CPPA_REQUIRE(!id.valid() || id.is_response());
if (id.valid()) {
auto sub = make_any_tuple(std::forward<Data>(data)...);
auto tup = make_any_tuple(atom("REPLY"),
util::duration{rel_time},
to,
id,
std::move(sub));
std::move(data));
delayed_send_helper()->enqueue(self, std::move(tup));
}
else {
delayed_send(to, rel_time, id, std::forward<Data>(data)...);
this->delayed_send(to, rel_time, 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