diff options
Diffstat (limited to 'tdactor')
| -rw-r--r-- | tdactor/td/actor/impl/Scheduler-decl.h | 3 | ||||
| -rw-r--r-- | tdactor/td/actor/impl/Scheduler.h | 9 |
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) { |
