mirror of
https://github.com/celisej567/abaddon.git
synced 2026-01-06 22:10:04 +03:00
synchronize ws close/open to creating thread
This commit is contained in:
@@ -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: {
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
#include <ixwebsocket/IXWebSocket.h>
|
||||
#include <string>
|
||||
#include <functional>
|
||||
#include <glibmm.h>
|
||||
#include <nlohmann/json.hpp>
|
||||
#include <sigc++/sigc++.h>
|
||||
|
||||
@@ -42,4 +43,8 @@ private:
|
||||
type_signal_message m_signal_message;
|
||||
|
||||
bool m_print_messages = true;
|
||||
|
||||
Glib::Dispatcher m_open_dispatcher;
|
||||
Glib::Dispatcher m_close_dispatcher;
|
||||
std::atomic<uint16_t> m_close_code;
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user