summaryrefslogtreecommitdiff
path: root/src/discord/websocket.cpp
diff options
context:
space:
mode:
authorouwou <26526779+ouwou@users.noreply.github.com>2022-09-28 20:44:33 -0400
committerouwou <26526779+ouwou@users.noreply.github.com>2022-09-28 20:44:33 -0400
commita79b2d418e1a67b3af034d81fa3df09afc92329e (patch)
treec0a0ed8ed5203b0cd72607a362ad223179f5e33a /src/discord/websocket.cpp
parent0571a05497ff628ceba8c7752dc3dd4104b1e0ea (diff)
downloadabaddon-portaudio-a79b2d418e1a67b3af034d81fa3df09afc92329e.tar.gz
abaddon-portaudio-a79b2d418e1a67b3af034d81fa3df09afc92329e.zip
synchronize ws close/open to creating thread
Diffstat (limited to 'src/discord/websocket.cpp')
-rw-r--r--src/discord/websocket.cpp15
1 files changed, 13 insertions, 2 deletions
diff --git a/src/discord/websocket.cpp b/src/discord/websocket.cpp
index 46a4b90..04970d3 100644
--- a/src/discord/websocket.cpp
+++ b/src/discord/websocket.cpp
@@ -1,7 +1,16 @@
#include "websocket.hpp"
#include <utility>
-Websocket::Websocket() = default;
+Websocket::Websocket()
+ : m_close_code(ix::WebSocketCloseConstants::kNormalClosureCode) {
+ m_open_dispatcher.connect([this]() {
+ m_signal_open.emit();
+ });
+
+ m_close_dispatcher.connect([this]() {
+ m_signal_close.emit(m_close_code);
+ });
+}
void Websocket::StartConnection(const std::string &url) {
m_websocket.disableAutomaticReconnection();
@@ -44,9 +53,11 @@ void Websocket::Send(const nlohmann::json &j) {
void Websocket::OnMessage(const ix::WebSocketMessagePtr &msg) {
switch (msg->type) {
case ix::WebSocketMessageType::Open: {
- m_signal_open.emit();
+ m_open_dispatcher.emit();
} break;
case ix::WebSocketMessageType::Close: {
+ m_close_code = msg->closeInfo.code;
+ m_close_dispatcher.emit();
m_signal_close.emit(msg->closeInfo.code);
} break;
case ix::WebSocketMessageType::Message: {