diff options
| author | Zeyla Hellyer <[email protected]> | 2017-09-24 15:48:02 -0700 |
|---|---|---|
| committer | Zeyla Hellyer <[email protected]> | 2017-09-24 15:53:23 -0700 |
| commit | 6c43fed3702be3fdc1eafed26a2f6335acd71843 (patch) | |
| tree | e3dd142b36f221f33fb8e35c511bbf4e9e9471b6 /src/internal | |
| parent | Use $crate for CommandError (diff) | |
| download | serenity-6c43fed3702be3fdc1eafed26a2f6335acd71843.tar.xz serenity-6c43fed3702be3fdc1eafed26a2f6335acd71843.zip | |
Add a shard manager
The shard manager will queue up shards for booting.
Diffstat (limited to 'src/internal')
| -rw-r--r-- | src/internal/ws_impl.rs | 23 |
1 files changed, 7 insertions, 16 deletions
diff --git a/src/internal/ws_impl.rs b/src/internal/ws_impl.rs index 70c4cb7..8edb69b 100644 --- a/src/internal/ws_impl.rs +++ b/src/internal/ws_impl.rs @@ -7,7 +7,7 @@ use gateway::GatewayError; use internal::prelude::*; pub trait ReceiverExt { - fn recv_json<F, T>(&mut self, decode: F) -> Result<T> + fn recv_json<F, T>(&mut self, decode: F) -> Result<Option<T>> where F: Fn(Value) -> Result<T>; } @@ -16,11 +16,9 @@ pub trait SenderExt { } impl ReceiverExt for WsClient<TlsStream<TcpStream>> { - fn recv_json<F, T>(&mut self, decode: F) -> Result<T> + fn recv_json<F, T>(&mut self, decode: F) -> Result<Option<T>> where F: Fn(Value) -> Result<T> { - let message = self.recv_message()?; - - let res = match message { + Ok(match self.recv_message()? { OwnedMessage::Binary(bytes) => { let value = serde_json::from_reader(ZlibDecoder::new(&bytes[..]))?; @@ -30,9 +28,9 @@ impl ReceiverExt for WsClient<TlsStream<TcpStream>> { warn!("(╯°□°)╯︵ ┻━┻ Error decoding: {}", s); why - })) + })?) }, - OwnedMessage::Close(data) => Some(Err(Error::Gateway(GatewayError::Closed(data)))), + OwnedMessage::Close(data) => return Err(Error::Gateway(GatewayError::Closed(data))), OwnedMessage::Text(payload) => { let value = serde_json::from_str(&payload)?; @@ -40,7 +38,7 @@ impl ReceiverExt for WsClient<TlsStream<TcpStream>> { warn!("(╯°□°)╯︵ ┻━┻ Error decoding: {}", payload); why - })) + })?) }, OwnedMessage::Ping(x) => { self.send_message(&OwnedMessage::Pong(x)) @@ -49,14 +47,7 @@ impl ReceiverExt for WsClient<TlsStream<TcpStream>> { None }, OwnedMessage::Pong(_) => None, - }; - - // As to ignore the `None`s returned from `Ping` and `Pong`. - // Since they're essentially useless to us anyway. - match res { - Some(data) => data, - None => self.recv_json(decode), - } + }) } } |