diff options
| author | levlam <levlam@telegram.org> | 2024-02-17 21:42:51 +0300 |
|---|---|---|
| committer | levlam <levlam@telegram.org> | 2024-02-17 21:42:51 +0300 |
| commit | 516e2e8a076729470d46f6d29f654e918a32fbe4 (patch) | |
| tree | e60d8492aefb516a6117cc77d031366b7e3d9ccc /tdactor/td/actor/impl/Scheduler.cpp | |
| parent | b6b5b1b9ed3a4ec228dcd3444db88a35e394af7b (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.cpp | 14 |
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_; |
