aboutsummaryrefslogtreecommitdiffhomepage
path: root/tdactor
diff options
context:
space:
mode:
Diffstat (limited to 'tdactor')
-rw-r--r--tdactor/td/actor/impl/Scheduler-decl.h3
-rw-r--r--tdactor/td/actor/impl/Scheduler.h9
2 files changed, 12 insertions, 0 deletions
diff --git a/tdactor/td/actor/impl/Scheduler-decl.h b/tdactor/td/actor/impl/Scheduler-decl.h
index 581b39797..a91dd00cf 100644
--- a/tdactor/td/actor/impl/Scheduler-decl.h
+++ b/tdactor/td/actor/impl/Scheduler-decl.h
@@ -103,6 +103,9 @@ class Scheduler {
template <class T>
void destroy_on_scheduler(int32 sched_id, T &value);
+ template <class T>
+ void destroy_on_scheduler_unique_ptr(int32 sched_id, T &value);
+
template <class... ArgsT>
void destroy_on_scheduler(int32 sched_id, ArgsT &...values);
diff --git a/tdactor/td/actor/impl/Scheduler.h b/tdactor/td/actor/impl/Scheduler.h
index 2158a2406..0c802f42b 100644
--- a/tdactor/td/actor/impl/Scheduler.h
+++ b/tdactor/td/actor/impl/Scheduler.h
@@ -158,6 +158,15 @@ void Scheduler::destroy_on_scheduler(int32 sched_id, T &value) {
}
}
+template <class T>
+void Scheduler::destroy_on_scheduler_unique_ptr(int32 sched_id, T &value) {
+ if (value != nullptr) {
+ destroy_on_scheduler_impl(sched_id, PromiseCreator::lambda([value = std::move(value)](Unit) {
+ // destroy value
+ }));
+ }
+}
+
template <class... ArgsT>
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) {