aboutsummaryrefslogtreecommitdiffhomepage
path: root/tdactor/td/actor/impl/Scheduler.cpp
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/td/actor/impl/Scheduler.cpp
parentb6b5b1b9ed3a4ec228dcd3444db88a35e394af7b (diff)
Remove legacy parameters in Scheduler::flush_mailbox.
Diffstat (limited to 'tdactor/td/actor/impl/Scheduler.cpp')
-rw-r--r--tdactor/td/actor/impl/Scheduler.cpp14
1 files changed, 13 insertions, 1 deletions
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_;