mirror of
https://github.com/celisej567/abaddon.git
synced 2026-09-27 16:16:35 +03:00
synchronize ws close/open to creating thread
This commit is contained in:
@@ -1,7 +1,16 @@
|
|||||||
#include "websocket.hpp"
|
#include "websocket.hpp"
|
||||||
#include <utility>
|
#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) {
|
void Websocket::StartConnection(const std::string &url) {
|
||||||
m_websocket.disableAutomaticReconnection();
|
m_websocket.disableAutomaticReconnection();
|
||||||
@@ -44,9 +53,11 @@ void Websocket::Send(const nlohmann::json &j) {
|
|||||||
void Websocket::OnMessage(const ix::WebSocketMessagePtr &msg) {
|
void Websocket::OnMessage(const ix::WebSocketMessagePtr &msg) {
|
||||||
switch (msg->type) {
|
switch (msg->type) {
|
||||||
case ix::WebSocketMessageType::Open: {
|
case ix::WebSocketMessageType::Open: {
|
||||||
m_signal_open.emit();
|
m_open_dispatcher.emit();
|
||||||
} break;
|
} break;
|
||||||
case ix::WebSocketMessageType::Close: {
|
case ix::WebSocketMessageType::Close: {
|
||||||
|
m_close_code = msg->closeInfo.code;
|
||||||
|
m_close_dispatcher.emit();
|
||||||
m_signal_close.emit(msg->closeInfo.code);
|
m_signal_close.emit(msg->closeInfo.code);
|
||||||
} break;
|
} break;
|
||||||
case ix::WebSocketMessageType::Message: {
|
case ix::WebSocketMessageType::Message: {
|
||||||
|
|||||||
@@ -3,6 +3,7 @@
|
|||||||
#include <ixwebsocket/IXWebSocket.h>
|
#include <ixwebsocket/IXWebSocket.h>
|
||||||
#include <string>
|
#include <string>
|
||||||
#include <functional>
|
#include <functional>
|
||||||
|
#include <glibmm.h>
|
||||||
#include <nlohmann/json.hpp>
|
#include <nlohmann/json.hpp>
|
||||||
#include <sigc++/sigc++.h>
|
#include <sigc++/sigc++.h>
|
||||||
|
|
||||||
@@ -42,4 +43,8 @@ private:
|
|||||||
type_signal_message m_signal_message;
|
type_signal_message m_signal_message;
|
||||||
|
|
||||||
bool m_print_messages = true;
|
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