diff options
| author | acdenisSK <[email protected]> | 2018-11-21 18:21:20 +0100 |
|---|---|---|
| committer | acdenisSK <[email protected]> | 2018-11-21 18:21:20 +0100 |
| commit | f148326056c39faf2601c47c8fa88f6081171b08 (patch) | |
| tree | 0643f6c62ba7e06ce791c9701235ab07561d7b38 /src/client/bridge | |
| parent | Replace `hyper` with `reqwest` (#440) (diff) | |
| download | serenity-f148326056c39faf2601c47c8fa88f6081171b08.tar.xz serenity-f148326056c39faf2601c47c8fa88f6081171b08.zip | |
Switch to tungstenite from rust-websocket (#341)
Diffstat (limited to 'src/client/bridge')
| -rw-r--r-- | src/client/bridge/gateway/shard_messenger.rs | 4 | ||||
| -rw-r--r-- | src/client/bridge/gateway/shard_runner.rs | 50 | ||||
| -rw-r--r-- | src/client/bridge/gateway/shard_runner_message.rs | 4 |
3 files changed, 29 insertions, 29 deletions
diff --git a/src/client/bridge/gateway/shard_messenger.rs b/src/client/bridge/gateway/shard_messenger.rs index 21e586a..c2236ed 100644 --- a/src/client/bridge/gateway/shard_messenger.rs +++ b/src/client/bridge/gateway/shard_messenger.rs @@ -2,7 +2,7 @@ use gateway::InterMessage; use model::prelude::*; use super::{ShardClientMessage, ShardRunnerMessage}; use std::sync::mpsc::{SendError, Sender}; -use websocket::message::OwnedMessage; +use tungstenite::Message; /// A lightweight wrapper around an mpsc sender. /// @@ -264,7 +264,7 @@ impl ShardMessenger { /// the [`set_presence`] method. /// /// [`set_presence`]: #method.set_presence - pub fn websocket_message(&self, message: OwnedMessage) { + pub fn websocket_message(&self, message: Message) { let _ = self.send(ShardRunnerMessage::Message(message)); } diff --git a/src/client/bridge/gateway/shard_runner.rs b/src/client/bridge/gateway/shard_runner.rs index 0f244bd..c462937 100644 --- a/src/client/bridge/gateway/shard_runner.rs +++ b/src/client/bridge/gateway/shard_runner.rs @@ -4,25 +4,28 @@ use internal::ws_impl::{ReceiverExt, SenderExt}; use model::event::{Event, GatewayEvent}; use parking_lot::Mutex; use serde::Deserialize; -use std::sync::{ - mpsc::{ - self, - Receiver, - Sender, - TryRecvError +use std::{ + borrow::Cow, + sync::{ + mpsc::{ + self, + Receiver, + Sender, + TryRecvError + }, + Arc, }, - Arc }; use super::super::super::dispatch::{DispatchEvent, dispatch}; use super::super::super::EventHandler; use super::event::{ClientEvent, ShardStageUpdateEvent}; use super::{ShardClientMessage, ShardId, ShardManagerMessage, ShardRunnerMessage}; use threadpool::ThreadPool; -use typemap::ShareMap; -use websocket::{ - message::{CloseData, OwnedMessage}, - WebSocketError +use tungstenite::{ + error::Error as TungsteniteError, + protocol::frame::CloseFrame, }; +use typemap::ShareMap; #[cfg(feature = "framework")] use framework::Framework; @@ -190,9 +193,10 @@ impl<H: EventHandler + Send + Sync + 'static> ShardRunner<H> { return true; } - let close_data = CloseData::new(1000, String::new()); - let msg = OwnedMessage::Close(Some(close_data)); - let _ = self.shard.client.send_message(&msg); + let _ = self.shard.client.close(Some(CloseFrame { + code: 1000.into(), + reason: Cow::from(""), + })); false } @@ -250,13 +254,14 @@ impl<H: EventHandler + Send + Sync + 'static> ShardRunner<H> { }, ShardRunnerMessage::Close(code, reason) => { let reason = reason.unwrap_or_else(String::new); - let data = CloseData::new(code, reason); - let msg = OwnedMessage::Close(Some(data)); - - self.shard.client.send_message(&msg).is_ok() + let close = CloseFrame { + code: code.into(), + reason: Cow::from(reason), + }; + self.shard.client.close(Some(close)).is_ok() }, ShardRunnerMessage::Message(msg) => { - self.shard.client.send_message(&msg).is_ok() + self.shard.client.write_message(msg).is_ok() }, ShardRunnerMessage::SetActivity(activity) => { // To avoid a clone of `activity`, we do a little bit of @@ -371,7 +376,7 @@ impl<H: EventHandler + Send + Sync + 'static> ShardRunner<H> { GatewayEvent::deserialize(value).map(Some).map_err(From::from) }, Ok(None) => Ok(None), - Err(Error::WebSocket(WebSocketError::IoError(_))) => { + Err(Error::Tungstenite(TungsteniteError::Io(_))) => { // Check that an amount of time at least double the // heartbeat_interval has passed. // @@ -409,11 +414,6 @@ impl<H: EventHandler + Send + Sync + 'static> ShardRunner<H> { return (None, None, true); }, - Err(Error::WebSocket(WebSocketError::NoDataAvailable)) => { - // This is hit when the websocket client dies this will be - // hit every iteration. - return (None, None, false); - }, Err(why) => Err(why), }; diff --git a/src/client/bridge/gateway/shard_runner_message.rs b/src/client/bridge/gateway/shard_runner_message.rs index 0fac329..76fb1fe 100644 --- a/src/client/bridge/gateway/shard_runner_message.rs +++ b/src/client/bridge/gateway/shard_runner_message.rs @@ -3,7 +3,7 @@ use model::{ id::GuildId, user::OnlineStatus, }; -use websocket::message::OwnedMessage; +use tungstenite::Message; /// A message to send from a shard over a WebSocket. #[derive(Clone, Debug)] @@ -37,7 +37,7 @@ pub enum ShardRunnerMessage { /// [`ShardManager`]: struct.ShardManager.html Close(u16, Option<String>), /// Indicates that the client is to send a custom WebSocket message. - Message(OwnedMessage), + Message(Message), /// Indicates that the client is to update the shard's presence's activity. SetActivity(Option<Activity>), /// Indicates that the client is to update the shard's presence in its |