diff options
| author | Zeyla Hellyer <[email protected]> | 2017-11-13 13:28:08 -0800 |
|---|---|---|
| committer | Zeyla Hellyer <[email protected]> | 2017-11-13 13:29:03 -0800 |
| commit | f2c21ef5b15ef1f345cdc30f4b793e55905f15f4 (patch) | |
| tree | 33a0d5e68976a31d750cefaf78df8b2577b63578 /src/client/bridge | |
| parent | Fix strange behaviour when the prefix has spaces (#215) (diff) | |
| download | serenity-f2c21ef5b15ef1f345cdc30f4b793e55905f15f4.tar.xz serenity-f2c21ef5b15ef1f345cdc30f4b793e55905f15f4.zip | |
Use the threadpool for framework command execution
Instead of executing framework commands in the shard runner thread
(potentially blocking the shard runner from reading new messages over
the websocket and heartbeating), dispatch framework commands to the
shard runner's threadpool.
Diffstat (limited to 'src/client/bridge')
| -rw-r--r-- | src/client/bridge/gateway/shard_runner.rs | 40 |
1 files changed, 11 insertions, 29 deletions
diff --git a/src/client/bridge/gateway/shard_runner.rs b/src/client/bridge/gateway/shard_runner.rs index a5fde3d..005f321 100644 --- a/src/client/bridge/gateway/shard_runner.rs +++ b/src/client/bridge/gateway/shard_runner.rs @@ -203,36 +203,18 @@ impl<H: EventHandler + Send + Sync + 'static> ShardRunner<H> { false } + #[inline] fn dispatch(&self, event: Event) { - let data = Arc::clone(&self.data); - let event_handler = Arc::clone(&self.event_handler); - let runner_tx = self.runner_tx.clone(); - let shard_id = self.shard.shard_info()[0]; - - feature_framework! {{ - let framework = Arc::clone(&self.framework); - - self.threadpool.execute(move || { - dispatch( - event, - framework, - data, - event_handler, - runner_tx, - shard_id, - ); - }); - } else { - self.threadpool.execute(move || { - dispatch( - event, - data, - event_handler, - runner_tx, - shard_id, - ); - }); - }} + dispatch( + event, + #[cfg(feature = "framework")] + &self.framework, + &self.data, + &self.event_handler, + &self.runner_tx, + &self.threadpool, + self.shard.shard_info()[0], + ); } // Handles a received value over the shard runner rx channel. |