(mut self)
| 72 | } |
| 73 | |
| 74 | pub async fn run(mut self) { |
| 75 | loop { |
| 76 | match self.next_action().await { |
| 77 | SchedulerAction::Cmd(Some(SchedulerCommand::Shutdown)) => { |
| 78 | break; |
| 79 | } |
| 80 | SchedulerAction::Cmd(Some(cmd)) => self.handle_scheduler_command(cmd).await, |
| 81 | // rpc server shut down, shut down scheduler aswell then |
| 82 | SchedulerAction::Cmd(None) => break, |
| 83 | |
| 84 | SchedulerAction::GuildHandler(guild_id, None) => { |
| 85 | // worker finished, remove it |
| 86 | self.guilds.remove(&guild_id); |
| 87 | |
| 88 | if self.try_unsuspend_guild(guild_id) { |
| 89 | self.check_queue_start_worker(guild_id).await; |
| 90 | } |
| 91 | } |
| 92 | SchedulerAction::GuildHandler(g, Some(evt)) => { |
| 93 | self.handle_guild_handler_event(g, evt) |
| 94 | } |
| 95 | } |
| 96 | } |
| 97 | |
| 98 | self.shutdown_all(); |
| 99 | self.wait_all_shutdown().await; |
| 100 | } |
| 101 | |
| 102 | async fn wait_all_shutdown(&mut self) { |
| 103 | info!("shutdown pending guilds: {}", self.guilds.len()); |
no test coverage detected