aboutsummaryrefslogtreecommitdiffhomepage
path: root/tdactor
diff options
context:
space:
mode:
authorlevlam <levlam@telegram.org>2024-02-17 21:42:51 +0300
committerlevlam <levlam@telegram.org>2024-02-17 21:42:51 +0300
commit516e2e8a076729470d46f6d29f654e918a32fbe4 (patch)
treee60d8492aefb516a6117cc77d031366b7e3d9ccc /tdactor
parentb6b5b1b9ed3a4ec228dcd3444db88a35e394af7b (diff)
Remove legacy parameters in Scheduler::flush_mailbox.
Diffstat (limited to 'tdactor')
-rw-r--r--tdactor/td/actor/impl/Scheduler-decl.h3
-rw-r--r--tdactor/td/actor/impl/Scheduler.cpp14
-rw-r--r--tdactor/td/actor/impl/Scheduler.h20
3 files changed, 14 insertions, 23 deletions
diff --git a/tdactor/td/actor/impl/Scheduler-decl.h b/tdactor/td/actor/impl/Scheduler-decl.h
index 850469945..581b39797 100644
--- a/tdactor/td/actor/impl/Scheduler-decl.h
+++ b/tdactor/td/actor/impl/Scheduler-decl.h
@@ -194,8 +194,7 @@ class Scheduler {
void add_to_mailbox(ActorInfo *actor_info, Event &&event);
void clear_mailbox(ActorInfo *actor_info);
- template <class RunFuncT, class EventFuncT>
- void flush_mailbox(ActorInfo *actor_info, const RunFuncT &run_func, const EventFuncT &event_func);
+ void flush_mailbox(ActorInfo *actor_info);
template <ActorSendType send_type, class RunFuncT, class EventFuncT>
void send_impl(const ActorId<> &actor_id, const RunFuncT &run_func, const EventFuncT &event_func);
diff --git a/tdactor/td/actor/impl/Scheduler.cpp b/tdactor/td/actor/impl/Scheduler.cpp
index 0ea0eb78a..7a4f944c8 100644
--- a/tdactor/td/actor/impl/Scheduler.cpp
+++ b/tdactor/td/actor/impl/Scheduler.cpp
@@ -493,6 +493,18 @@ void Scheduler::run_poll(Timestamp timeout) {
#endif
}
+void Scheduler::flush_mailbox(ActorInfo *actor_info) {
+ auto &mailbox = actor_info->mailbox_;
+ size_t mailbox_size = mailbox.size();
+ CHECK(mailbox_size != 0);
+ EventGuard guard(this, actor_info);
+ size_t i = 0;
+ for (; i < mailbox_size && guard.can_run(); i++) {
+ do_event(actor_info, std::move(mailbox[i]));
+ }
+ mailbox.erase(mailbox.begin(), mailbox.begin() + i);
+}
+
void Scheduler::run_mailbox() {
VLOG(actor) << "Run mailbox : begin";
ListNode actors_list = std::move(ready_actors_list_);
@@ -500,7 +512,7 @@ void Scheduler::run_mailbox() {
ListNode *node = actors_list.get();
CHECK(node);
auto actor_info = ActorInfo::from_list_node(node);
- flush_mailbox(actor_info, static_cast<void (*)(ActorInfo *)>(nullptr), static_cast<Event (*)()>(nullptr));
+ flush_mailbox(actor_info);
}
VLOG(actor) << "Run mailbox : finish " << actor_count_;
diff --git a/tdactor/td/actor/impl/Scheduler.h b/tdactor/td/actor/impl/Scheduler.h
index b027aaf2f..2158a2406 100644
--- a/tdactor/td/actor/impl/Scheduler.h
+++ b/tdactor/td/actor/impl/Scheduler.h
@@ -140,26 +140,6 @@ inline void Scheduler::destroy_actor(ActorInfo *actor_info) {
CHECK(actor_count_ >= 0);
}
-template <class RunFuncT, class EventFuncT>
-void Scheduler::flush_mailbox(ActorInfo *actor_info, const RunFuncT &run_func, const EventFuncT &event_func) {
- auto &mailbox = actor_info->mailbox_;
- size_t mailbox_size = mailbox.size();
- CHECK(mailbox_size != 0);
- EventGuard guard(this, actor_info);
- size_t i = 0;
- for (; i < mailbox_size && guard.can_run(); i++) {
- do_event(actor_info, std::move(mailbox[i]));
- }
- if (run_func) {
- if (guard.can_run()) {
- (*run_func)(actor_info);
- } else {
- mailbox.insert(mailbox.begin() + i, (*event_func)());
- }
- }
- mailbox.erase(mailbox.begin(), mailbox.begin() + i);
-}
-
inline void Scheduler::send_to_scheduler(int32 sched_id, const ActorId<Actor> &actor_id, Event &&event) {
if (sched_id == sched_id_) {
ActorInfo *actor_info = actor_id.get_actor_info();