Continues migration with DDS, Common

This commit is contained in:
torsten committed 2026-07-17 12:41:42 +02:00
1 parent 9b15cee841
commit fa48db111e
668 files changed
+111841 -2

No files matched your search

@@ -0,0 +1,84 @@
#pragma once
#include "lts_projection_workstation_export.h"
#include "vnc_server_manager.h"
#include "WebSocket/messages.h"
#include "logger.h"
#include <LtsWebSocket/client_connection.h>
#include <QObject>
#include <QPair>
namespace LtsWebSocket { class LtsWebSocketServer; }
namespace LtsProjectionWorkstation
{
struct LoginInformation
{
LoginInformation() = default;
LoginInformation(int userId, int priority, int exerciseId, const QByteArray &settingsData)
: m_settingsData(settingsData), m_userId(userId), m_priority(priority), m_exerciseId(exerciseId) {}
QByteArray m_settingsData;
int m_userId = 0;
int m_priority = 0;
int m_exerciseId = 0;
};
class MessageFactory;
class LTSPROJECTIONWORKSTATION_EXPORT LtsProjectionWorkstation : public QObject, public AbstractMessageHandler
{
Q_OBJECT
public:
static LtsProjectionWorkstation *getInstance();
static bool hasInstance();
const LoginInformation &lastLoginRequest() const { return m_lastLoginRequest; }
LoginInformation pendingLoginRequest();
bool hasPendingLoginRequest() const { return !!m_pendingLoginRequest; }
void setProjectionOperatorPreset(const QString &operatorName, const QString &operatorPassword);
const QPair<QString, QString> &projectionOperatorPreset() const { return m_projectionOperatorPreset; }
void handleMessage(LtsWebSocket::AbstractClientMessage *message) override final;
public slots:
void slotLoginRequestReceived(int userId, int exerciseId);
void slotLogoutRequestReceived();
void slotLogoffDone();
signals:
void signalLoginRequestReceived(int userId, int exerciseId);
void signalLogoutRequestReceived();
private slots:
void clientDisconnected(LtsWebSocket::ClientConnection* client);
void clientConnected(LtsWebSocket::ClientConnection* client);
private:
explicit LtsProjectionWorkstation(QObject *parent = nullptr);
~LtsProjectionWorkstation();
static void cleanupLtsProjectionWorkstation();
LOGGER_T m_logger;
MessageFactory *m_messageFactory;
LtsWebSocket::LtsWebSocketServer *m_webSocketServer;
LoginInformation m_lastLoginRequest;
LoginInformation *m_pendingLoginRequest;
QPair<QString , QString > m_projectionOperatorPreset;
QVector<LtsWebSocket::ClientConnection*> m_connections;
VncServerManager *m_vncManager;
};
}