aboutsummaryrefslogtreecommitdiffhomepage
path: root/tdactor/td
diff options
context:
space:
mode:
authorlevlam <levlam@telegram.org>2022-07-22 21:21:30 +0300
committerlevlam <levlam@telegram.org>2022-07-22 21:21:30 +0300
commit4cf1e02479f5eb0d2f30cbc39c5397a165c37bce (patch)
tree603aa64db80df2d567d1deacfbc038eccd29eed4 /tdactor/td
parent376476481c5fae682ab571f047f32efada3a9343 (diff)
Add multiarg version of Scheduler::destroy_on_scheduler.
Diffstat (limited to 'tdactor/td')
-rw-r--r--tdactor/td/actor/impl/Scheduler-decl.h3
-rw-r--r--tdactor/td/actor/impl/Scheduler.h7
2 files changed, 10 insertions, 0 deletions
diff --git a/tdactor/td/actor/impl/Scheduler-decl.h b/tdactor/td/actor/impl/Scheduler-decl.h
index 57f49dbb4..a8ec2aaa9 100644
--- a/tdactor/td/actor/impl/Scheduler-decl.h
+++ b/tdactor/td/actor/impl/Scheduler-decl.h
@@ -105,6 +105,9 @@ class Scheduler {
template <class T>
void destroy_on_scheduler(int32 sched_id, T &value);
+ template <class... ArgsT>
+ void destroy_on_scheduler(int32 sched_id, ArgsT &...values);
+
template <ActorSendType send_type, class EventT>
void send_lambda(ActorRef actor_ref, EventT &&lambda);
diff --git a/tdactor/td/actor/impl/Scheduler.h b/tdactor/td/actor/impl/Scheduler.h
index 182066145..4319dc2c2 100644
--- a/tdactor/td/actor/impl/Scheduler.h
+++ b/tdactor/td/actor/impl/Scheduler.h
@@ -179,6 +179,13 @@ inline void Scheduler::destroy_on_scheduler(int32 sched_id, T &value) {
}
}
+template <class... ArgsT>
+inline void Scheduler::destroy_on_scheduler(int32 sched_id, ArgsT &...values) {
+ destroy_on_scheduler_impl(sched_id, PromiseCreator::lambda([values = std::make_tuple(std::move(values)...)](Unit) {
+ // destroy values
+ }));
+}
+
inline void Scheduler::before_tail_send(const ActorId<> &actor_id) {
// TODO
}