diff options
| author | Zeyla Hellyer <[email protected]> | 2017-12-09 19:51:43 -0800 |
|---|---|---|
| committer | Zeyla Hellyer <[email protected]> | 2017-12-09 19:51:43 -0800 |
| commit | 65233ad6f3d002f72942aaf811514fa9d29ad068 (patch) | |
| tree | 75a4ffb6250f11a2dc5c5f03d0397b852f066cc5 /src/client/bridge/gateway/shard_manager.rs | |
| parent | Fix syntax highlighting in README (diff) | |
| download | serenity-65233ad6f3d002f72942aaf811514fa9d29ad068.tar.xz serenity-65233ad6f3d002f72942aaf811514fa9d29ad068.zip | |
Shutdown everything on ShardManager::shutdown_all
Calling `ShardManager::shutdown_all` will now send a message to the
shard queuer and shard monitor to shutdown. This will now cause
`Client::start_connection` to exit.
Additionally, `Client::start_connection` and related functions that call
this (e.g. `Client::start_autosharded`) now return `Ok(())` on clean
exits.
Diffstat (limited to 'src/client/bridge/gateway/shard_manager.rs')
| -rw-r--r-- | src/client/bridge/gateway/shard_manager.rs | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/src/client/bridge/gateway/shard_manager.rs b/src/client/bridge/gateway/shard_manager.rs index 9e23d92..fbfd2f6 100644 --- a/src/client/bridge/gateway/shard_manager.rs +++ b/src/client/bridge/gateway/shard_manager.rs @@ -92,6 +92,7 @@ use framework::Framework; /// [`Client`]: ../../struct.Client.html #[derive(Debug)] pub struct ShardManager { + monitor_tx: Sender<ShardManagerMessage>, /// The shard runners currently managed. /// /// **Note**: It is highly unrecommended to mutate this yourself unless you @@ -146,6 +147,7 @@ impl ShardManager { }); let manager = Arc::new(Mutex::new(Self { + monitor_tx: thread_tx, shard_queuer: shard_queue_tx, runners, shard_index, @@ -194,6 +196,7 @@ impl ShardManager { }); let manager = Arc::new(Mutex::new(Self { + monitor_tx: thread_tx, shard_queuer: shard_queue_tx, runners, shard_index, @@ -352,6 +355,9 @@ impl ShardManager { for shard_id in keys { self.shutdown(shard_id); } + + let _ = self.shard_queuer.send(ShardQueuerMessage::Shutdown); + let _ = self.monitor_tx.send(ShardManagerMessage::ShutdownInitiated); } fn boot(&mut self, shard_info: [ShardId; 2]) { |