From a79b2d418e1a67b3af034d81fa3df09afc92329e Mon Sep 17 00:00:00 2001 From: ouwou <26526779+ouwou@users.noreply.github.com> Date: Wed, 28 Sep 2022 20:44:33 -0400 Subject: synchronize ws close/open to creating thread --- src/discord/websocket.cpp | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) (limited to 'src/discord/websocket.cpp') 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 -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: { -- cgit v1.2.3