diff options
| author | Zeyla Hellyer <[email protected]> | 2017-09-27 10:15:58 -0700 |
|---|---|---|
| committer | Zeyla Hellyer <[email protected]> | 2017-09-27 10:15:58 -0700 |
| commit | 1d4ecb2f13258d286378c44d59c2ee4b1c68349d (patch) | |
| tree | 2114d5dd1f90752a4b22ef098e3d793c45b00a2d /src/client/bridge/gateway/shard_manager.rs | |
| parent | Use `request_client!` for attachment downloading (#165) (diff) | |
| download | serenity-1d4ecb2f13258d286378c44d59c2ee4b1c68349d.tar.xz serenity-1d4ecb2f13258d286378c44d59c2ee4b1c68349d.zip | |
Fix client no-framework compilation
Diffstat (limited to 'src/client/bridge/gateway/shard_manager.rs')
| -rw-r--r-- | src/client/bridge/gateway/shard_manager.rs | 77 |
1 files changed, 51 insertions, 26 deletions
diff --git a/src/client/bridge/gateway/shard_manager.rs b/src/client/bridge/gateway/shard_manager.rs index 0ac9d19..e723398 100644 --- a/src/client/bridge/gateway/shard_manager.rs +++ b/src/client/bridge/gateway/shard_manager.rs @@ -18,7 +18,6 @@ use typemap::ShareMap; use framework::Framework; pub struct ShardManager { - #[cfg(feature = "framework")] runners: Arc<ParkingLotMutex<HashMap<ShardId, ShardRunnerInfo>>>, /// The index of the first shard to initialize, 0-indexed. shard_index: u64, @@ -47,31 +46,57 @@ impl ShardManager { let runners = Arc::new(ParkingLotMutex::new(HashMap::new())); - let mut shard_queuer = feature_framework! {{ - ShardQueuer { - data: data.clone(), - event_handler: event_handler.clone(), - framework: framework.clone(), - last_start: None, - manager_tx: thread_tx.clone(), - runners: runners.clone(), - rx: shard_queue_rx, - token: token.clone(), - ws_url: ws_url.clone(), - } - } else { - ShardQueuer { - data: data.clone(), - event_handler: event_handler.clone(), - last_start: None, - manager_tx: thread_tx.clone(), - runners: runners.clone(), - rx: shard_queue_rx, - rx: shard_queue_rx, - token: token.clone(), - ws_url: ws_url.clone(), - } - }}; + let mut shard_queuer = ShardQueuer { + data: data.clone(), + event_handler: event_handler.clone(), + framework: framework.clone(), + last_start: None, + manager_tx: thread_tx.clone(), + runners: runners.clone(), + rx: shard_queue_rx, + token: token.clone(), + ws_url: ws_url.clone(), + }; + + thread::spawn(move || { + shard_queuer.run(); + }); + + Self { + shard_queuer: shard_queue_tx, + thread_rx: thread_rx, + runners, + shard_index, + shard_init, + shard_total, + } + } + + #[cfg(not(feature = "framework"))] + pub fn new<H>( + shard_index: u64, + shard_init: u64, + shard_total: u64, + ws_url: Arc<Mutex<String>>, + token: Arc<Mutex<String>>, + data: Arc<ParkingLotMutex<ShareMap>>, + event_handler: Arc<H>, + ) -> Self where H: EventHandler + Send + Sync + 'static { + let (thread_tx, thread_rx) = mpsc::channel(); + let (shard_queue_tx, shard_queue_rx) = mpsc::channel(); + + let runners = Arc::new(ParkingLotMutex::new(HashMap::new())); + + let mut shard_queuer = ShardQueuer { + data: data.clone(), + event_handler: event_handler.clone(), + last_start: None, + manager_tx: thread_tx.clone(), + runners: runners.clone(), + rx: shard_queue_rx, + token: token.clone(), + ws_url: ws_url.clone(), + }; thread::spawn(move || { shard_queuer.run(); |