aboutsummaryrefslogtreecommitdiff
path: root/src/client/bridge
diff options
context:
space:
mode:
authoracdenisSK <[email protected]>2018-11-21 18:21:20 +0100
committeracdenisSK <[email protected]>2018-11-21 18:21:20 +0100
commitf148326056c39faf2601c47c8fa88f6081171b08 (patch)
tree0643f6c62ba7e06ce791c9701235ab07561d7b38 /src/client/bridge
parentReplace `hyper` with `reqwest` (#440) (diff)
downloadserenity-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.rs4
-rw-r--r--src/client/bridge/gateway/shard_runner.rs50
-rw-r--r--src/client/bridge/gateway/shard_runner_message.rs4
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