mirror of
https://github.com/Palakis/obs-websocket.git
synced 2024-08-30 18:12:16 +00:00
WebSocketServer: Remove QtConcurrent dependency
We can avoid requiring QtConcurrent by using QRunnables. Thanks to micolous for the idea.
This commit is contained in:
parent
78d02696d0
commit
0c2e40263a
@ -62,7 +62,7 @@ find_package(LibObs REQUIRED)
|
|||||||
|
|
||||||
|
|
||||||
# Find Qt5
|
# Find Qt5
|
||||||
find_package(Qt5 REQUIRED COMPONENTS Core Widgets Svg Concurrent Network)
|
find_package(Qt5 REQUIRED COMPONENTS Core Widgets Svg Network)
|
||||||
|
|
||||||
|
|
||||||
# Find nlohmann
|
# Find nlohmann
|
||||||
@ -115,6 +115,7 @@ set(obs-websocket_SOURCES
|
|||||||
src/utils/Json.cpp
|
src/utils/Json.cpp
|
||||||
src/utils/Obs.cpp
|
src/utils/Obs.cpp
|
||||||
src/utils/Platform.cpp
|
src/utils/Platform.cpp
|
||||||
|
src/utils/Compat.cpp
|
||||||
deps/qr/cpp/QrCode.cpp)
|
deps/qr/cpp/QrCode.cpp)
|
||||||
|
|
||||||
set(obs-websocket_HEADERS
|
set(obs-websocket_HEADERS
|
||||||
@ -134,6 +135,7 @@ set(obs-websocket_HEADERS
|
|||||||
src/utils/Json.h
|
src/utils/Json.h
|
||||||
src/utils/Obs.h
|
src/utils/Obs.h
|
||||||
src/utils/Platform.h
|
src/utils/Platform.h
|
||||||
|
src/utils/Compat.h
|
||||||
src/utils/Utils.h
|
src/utils/Utils.h
|
||||||
deps/qr/cpp/QrCode.hpp)
|
deps/qr/cpp/QrCode.hpp)
|
||||||
|
|
||||||
@ -148,7 +150,6 @@ include_directories(
|
|||||||
${Qt5Core_INCLUDES}
|
${Qt5Core_INCLUDES}
|
||||||
${Qt5Widgets_INCLUDES}
|
${Qt5Widgets_INCLUDES}
|
||||||
${Qt5Svg_INCLUDES}
|
${Qt5Svg_INCLUDES}
|
||||||
${Qt5Concurrent_INCLUDES}
|
|
||||||
${Qt5Network_INCLUDES}
|
${Qt5Network_INCLUDES}
|
||||||
"${CMAKE_SOURCE_DIR}/deps/asio/asio/include"
|
"${CMAKE_SOURCE_DIR}/deps/asio/asio/include"
|
||||||
"${CMAKE_SOURCE_DIR}/deps/websocketpp")
|
"${CMAKE_SOURCE_DIR}/deps/websocketpp")
|
||||||
@ -158,7 +159,6 @@ target_link_libraries(obs-websocket
|
|||||||
Qt5::Core
|
Qt5::Core
|
||||||
Qt5::Widgets
|
Qt5::Widgets
|
||||||
Qt5::Svg
|
Qt5::Svg
|
||||||
Qt5::Concurrent
|
|
||||||
Qt5::Network
|
Qt5::Network
|
||||||
nlohmann_json::nlohmann_json)
|
nlohmann_json::nlohmann_json)
|
||||||
|
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
#include <chrono>
|
#include <chrono>
|
||||||
#include <thread>
|
#include <thread>
|
||||||
#include <QtConcurrent>
|
|
||||||
#include <QDateTime>
|
#include <QDateTime>
|
||||||
#include <obs-module.h>
|
#include <obs-module.h>
|
||||||
#include <obs-frontend-api.h>
|
#include <obs-frontend-api.h>
|
||||||
@ -11,6 +10,7 @@
|
|||||||
#include "Config.h"
|
#include "Config.h"
|
||||||
#include "utils/Crypto.h"
|
#include "utils/Crypto.h"
|
||||||
#include "utils/Platform.h"
|
#include "utils/Platform.h"
|
||||||
|
#include "utils/Compat.h"
|
||||||
|
|
||||||
WebSocketServer::WebSocketServer() :
|
WebSocketServer::WebSocketServer() :
|
||||||
QObject(nullptr),
|
QObject(nullptr),
|
||||||
@ -269,6 +269,9 @@ void WebSocketServer::onOpen(websocketpp::connection_hdl hdl)
|
|||||||
// Log connection
|
// Log connection
|
||||||
blog(LOG_INFO, "[WebSocketServer::onOpen] New WebSocket client has connected from %s", session->RemoteAddress().c_str());
|
blog(LOG_INFO, "[WebSocketServer::onOpen] New WebSocket client has connected from %s", session->RemoteAddress().c_str());
|
||||||
|
|
||||||
|
if (_debugEnabled)
|
||||||
|
blog(LOG_INFO, "[WebSocketServer::onOpen] Sending Op 0 (Hello) message:\n%s", helloMessage.dump(2).c_str());
|
||||||
|
|
||||||
// Send object to client
|
// Send object to client
|
||||||
websocketpp::lib::error_code errorCode;
|
websocketpp::lib::error_code errorCode;
|
||||||
auto sessionEncoding = session->Encoding();
|
auto sessionEncoding = session->Encoding();
|
||||||
@ -338,7 +341,7 @@ void WebSocketServer::onMessage(websocketpp::connection_hdl hdl, websocketpp::se
|
|||||||
{
|
{
|
||||||
auto opcode = message->get_opcode();
|
auto opcode = message->get_opcode();
|
||||||
std::string payload = message->get_payload();
|
std::string payload = message->get_payload();
|
||||||
QtConcurrent::run(&_threadPool, [=]() {
|
_threadPool.start(Utils::Compat::CreateFunctionRunnable([=]() {
|
||||||
std::unique_lock<std::mutex> lock(_sessionMutex);
|
std::unique_lock<std::mutex> lock(_sessionMutex);
|
||||||
SessionPtr session;
|
SessionPtr session;
|
||||||
try {
|
try {
|
||||||
@ -445,5 +448,5 @@ skipProcessing:
|
|||||||
if (errorCode)
|
if (errorCode)
|
||||||
blog(LOG_WARNING, "[WebSocketServer::onMessage] Sending message to client failed: %s", errorCode.message().c_str());
|
blog(LOG_WARNING, "[WebSocketServer::onMessage] Sending message to client failed: %s", errorCode.message().c_str());
|
||||||
}
|
}
|
||||||
});
|
}));
|
||||||
}
|
}
|
||||||
|
@ -1,4 +1,3 @@
|
|||||||
#include <QtConcurrent>
|
|
||||||
#include <obs-module.h>
|
#include <obs-module.h>
|
||||||
|
|
||||||
#include "WebSocketServer.h"
|
#include "WebSocketServer.h"
|
||||||
@ -8,6 +7,7 @@
|
|||||||
#include "Config.h"
|
#include "Config.h"
|
||||||
#include "utils/Crypto.h"
|
#include "utils/Crypto.h"
|
||||||
#include "utils/Platform.h"
|
#include "utils/Platform.h"
|
||||||
|
#include "utils/Compat.h"
|
||||||
|
|
||||||
namespace WebSocketOpCode {
|
namespace WebSocketOpCode {
|
||||||
enum WebSocketOpCode: uint8_t {
|
enum WebSocketOpCode: uint8_t {
|
||||||
@ -261,7 +261,7 @@ void WebSocketServer::BroadcastEvent(uint64_t requiredIntent, std::string eventT
|
|||||||
if (!_server.is_listening())
|
if (!_server.is_listening())
|
||||||
return;
|
return;
|
||||||
|
|
||||||
QtConcurrent::run(&_threadPool, [=]() {
|
_threadPool.start(Utils::Compat::CreateFunctionRunnable([=]() {
|
||||||
// Populate message object
|
// Populate message object
|
||||||
json eventMessage;
|
json eventMessage;
|
||||||
eventMessage["op"] = 5;
|
eventMessage["op"] = 5;
|
||||||
@ -309,5 +309,5 @@ void WebSocketServer::BroadcastEvent(uint64_t requiredIntent, std::string eventT
|
|||||||
lock.unlock();
|
lock.unlock();
|
||||||
if (_debugEnabled && (EventSubscription::All & requiredIntent) != 0) // Don't log high volume events
|
if (_debugEnabled && (EventSubscription::All & requiredIntent) != 0) // Don't log high volume events
|
||||||
blog(LOG_INFO, "[WebSocketServer::BroadcastEvent] Outgoing event:\n%s", eventMessage.dump(2).c_str());
|
blog(LOG_INFO, "[WebSocketServer::BroadcastEvent] Outgoing event:\n%s", eventMessage.dump(2).c_str());
|
||||||
});
|
}));
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user