67 lines
1.5 KiB
C++
Executable File
67 lines
1.5 KiB
C++
Executable File
/**
|
|
* @RDE_HEADER@
|
|
* The ConnectionHandler class functions as a WebSocket server and manages incoming client connections.
|
|
* $Id$
|
|
* $HeadURL$
|
|
* $Author$
|
|
* Created by Hannes Fritsche, SLSE, 2017-09-07
|
|
*/
|
|
#pragma once
|
|
|
|
#include <QtNetwork/QHostAddress>
|
|
#include <QtWebSockets/qwebsocketprotocol.h>
|
|
|
|
#include "../Messages/reply_message.h"
|
|
#include "logger.h"
|
|
|
|
class QWebSocketServer;
|
|
|
|
namespace CombatNetRadio
|
|
{
|
|
namespace WebSocketInterface
|
|
{
|
|
namespace Messages
|
|
{
|
|
class MessageTransmitter;
|
|
}
|
|
namespace Connection
|
|
{
|
|
class ClientConnection;
|
|
|
|
class ConnectionHandler
|
|
: public QObject
|
|
{
|
|
Q_OBJECT
|
|
public:
|
|
explicit ConnectionHandler();
|
|
~ConnectionHandler();
|
|
|
|
bool init();
|
|
|
|
Q_SIGNALS:
|
|
void newTextMessageFromClient(Messages::MessageTransmitter *transmitter, const QString &message);
|
|
void lastConnectionClosed();
|
|
void newClientConnection(qint64 id);
|
|
void clientConnectionClosed(qint64 id);
|
|
void clearFrequencyPlanningStatus();
|
|
|
|
public Q_SLOTS:
|
|
void onUpdate();
|
|
void onPositions(const Messages::ReplyMessage &positionsCnr);
|
|
|
|
private Q_SLOTS:
|
|
void onNewMessage(Messages::MessageTransmitter *transmitter, const QString &message);
|
|
void onServerError(QWebSocketProtocol::CloseCode closeCode);
|
|
void onNewConnection();
|
|
void onDisconnected(ClientConnection *conn);
|
|
|
|
private: // attributes
|
|
QWebSocketServer *m_server;
|
|
QVector<ClientConnection *> m_connections;
|
|
|
|
LOGGER_T m_logger;
|
|
};
|
|
} // namespace Connection
|
|
} // namespace WebSocketInterface
|
|
} // namespace CombatNetRadio
|