diff options
| author | Zeyla Hellyer <[email protected]> | 2017-06-10 16:06:37 -0700 |
|---|---|---|
| committer | Zeyla Hellyer <[email protected]> | 2017-06-10 16:06:37 -0700 |
| commit | 2f30f9ab38761aad62af977ab4440b8bfb43a897 (patch) | |
| tree | e403e3e3cd394c9ff6d05f49febe285868ae108b /src/client | |
| parent | Use an https connector in http::send_files (diff) | |
| download | serenity-2f30f9ab38761aad62af977ab4440b8bfb43a897.tar.xz serenity-2f30f9ab38761aad62af977ab4440b8bfb43a897.zip | |
Fix voice compilation
Diffstat (limited to 'src/client')
| -rw-r--r-- | src/client/mod.rs | 82 |
1 files changed, 49 insertions, 33 deletions
diff --git a/src/client/mod.rs b/src/client/mod.rs index 91790fa..3b7a2ec 100644 --- a/src/client/mod.rs +++ b/src/client/mod.rs @@ -1374,10 +1374,15 @@ fn handle_shard(info: &mut MonitorInfo) { let mut last_heartbeat_sent = UTC::now().timestamp(); loop { - let mut shard = info.shard.lock().unwrap(); - let in_secs = shard.heartbeat_interval() / 1000; + let in_secs = { + let shard = info.shard.lock().unwrap(); + + shard.heartbeat_interval() / 1000 + }; if UTC::now().timestamp() - last_heartbeat_sent > in_secs { + let mut shard = info.shard.lock().unwrap(); + // If the last heartbeat didn't receive an acknowledgement, then // shutdown and auto-reconnect. if !shard.last_heartbeat_acknowledged() { @@ -1401,46 +1406,57 @@ fn handle_shard(info: &mut MonitorInfo) { last_heartbeat_sent = UTC::now().timestamp(); } - let event = match shard.client.recv_json(GatewayEvent::decode) { - Ok(GatewayEvent::HeartbeatAck) => { - last_ack_time = UTC::now().timestamp(); + #[cfg(feature="voice")] + { + let mut shard = info.shard.lock().unwrap(); - Ok(GatewayEvent::HeartbeatAck) - }, - Err(Error::WebSocket(WebSocketError::IoError(_))) => { - if shard.last_heartbeat_acknowledged() || UTC::now().timestamp() - 90 < last_ack_time { - continue; - } + shard.cycle_voice_recv(); + } - debug!("Attempting to shutdown receiver/sender"); + let event = { + let mut shard = info.shard.lock().unwrap(); - match shard.resume() { - Ok(_) => { - debug!("Successfully resumed shard"); + let event = match shard.client.recv_json(GatewayEvent::decode) { + Ok(GatewayEvent::HeartbeatAck) => { + last_ack_time = UTC::now().timestamp(); + Ok(GatewayEvent::HeartbeatAck) + }, + Err(Error::WebSocket(WebSocketError::IoError(_))) => { + if shard.last_heartbeat_acknowledged() || UTC::now().timestamp() - 90 < last_ack_time { continue; - }, - Err(why) => { - warn!("Err resuming shard: {:?}", why); + } - return; - }, - } - }, - Err(Error::WebSocket(WebSocketError::NoDataAvailable)) => continue, - other => other, - }; + debug!("Attempting to shutdown receiver/sender"); - trace!("Received event on shard handler: {:?}", event); + match shard.resume() { + Ok(_) => { + debug!("Successfully resumed shard"); - let event = match shard.handle_event(event) { - Ok(Some(event)) => event, - Ok(None) => continue, - Err(why) => { - error!("Shard handler received err: {:?}", why); + continue; + }, + Err(why) => { + warn!("Err resuming shard: {:?}", why); - continue; - }, + return; + }, + } + }, + Err(Error::WebSocket(WebSocketError::NoDataAvailable)) => continue, + other => other, + }; + + trace!("Received event on shard handler: {:?}", event); + + match shard.handle_event(event) { + Ok(Some(event)) => event, + Ok(None) => continue, + Err(why) => { + error!("Shard handler received err: {:?}", why); + + continue; + }, + } }; feature_framework! {{ |