aboutsummaryrefslogtreecommitdiffhomepage
path: root/tdactor/td/actor/impl/Scheduler.h
diff options
context:
space:
mode:
Diffstat (limited to 'tdactor/td/actor/impl/Scheduler.h')
-rw-r--r--tdactor/td/actor/impl/Scheduler.h36
1 files changed, 7 insertions, 29 deletions
diff --git a/tdactor/td/actor/impl/Scheduler.h b/tdactor/td/actor/impl/Scheduler.h
index 55ed5a2d3..075adbaac 100644
--- a/tdactor/td/actor/impl/Scheduler.h
+++ b/tdactor/td/actor/impl/Scheduler.h
@@ -203,24 +203,6 @@ void Scheduler::send_immediately_impl(const ActorId<> &actor_id, const RunFuncT
}
}
-template <class EventFuncT>
-void Scheduler::send_later_impl(const ActorId<> &actor_id, const EventFuncT &event_func) {
- ActorInfo *actor_info = actor_id.get_actor_info();
- if (unlikely(actor_info == nullptr || close_flag_)) {
- return;
- }
-
- int32 actor_sched_id;
- bool on_current_sched;
- get_actor_sched_id_to_send_later(actor_info, actor_sched_id, on_current_sched);
-
- if (on_current_sched) {
- add_to_mailbox(actor_info, event_func());
- } else {
- send_to_scheduler(actor_sched_id, actor_id, event_func());
- }
-}
-
template <class EventT>
void Scheduler::send_lambda_immediately(ActorRef actor_ref, EventT &&func) {
return send_immediately_impl(
@@ -238,11 +220,9 @@ void Scheduler::send_lambda_immediately(ActorRef actor_ref, EventT &&func) {
template <class EventT>
void Scheduler::send_lambda_later(ActorRef actor_ref, EventT &&func) {
- return send_later_impl(actor_ref.get(), [&] {
- auto event = Event::from_lambda(std::forward<EventT>(func));
- event.set_link_token(actor_ref.token());
- return event;
- });
+ auto event = Event::from_lambda(std::forward<EventT>(func));
+ event.set_link_token(actor_ref.token());
+ return send_later_impl(actor_ref.get(), std::move(event));
}
template <class EventT>
@@ -262,11 +242,9 @@ void Scheduler::send_closure_immediately(ActorRef actor_ref, EventT &&closure) {
template <class EventT>
void Scheduler::send_closure_later(ActorRef actor_ref, EventT &&closure) {
- return send_later_impl(actor_ref.get(), [&] {
- auto event = Event::immediate_closure(std::forward<EventT>(closure));
- event.set_link_token(actor_ref.token());
- return event;
- });
+ auto event = Event::immediate_closure(std::forward<EventT>(closure));
+ event.set_link_token(actor_ref.token());
+ return send_later_impl(actor_ref.get(), std::move(event));
}
inline void Scheduler::send_immediately(ActorRef actor_ref, Event &&event) {
@@ -278,7 +256,7 @@ inline void Scheduler::send_immediately(ActorRef actor_ref, Event &&event) {
inline void Scheduler::send_later(ActorRef actor_ref, Event &&event) {
event.set_link_token(actor_ref.token());
- return send_later_impl(actor_ref.get(), [&] { return std::move(event); });
+ return send_later_impl(actor_ref.get(), std::move(event));
}
inline void Scheduler::subscribe(PollableFd fd, PollFlags flags) {