2017-07-03 09:30:10 +02:00
|
|
|
/*!
|
|
|
|
* \brief UIPlugIn implementation of the Websocket.
|
|
|
|
*
|
2018-03-28 15:10:51 +02:00
|
|
|
* \copyright Copyright (c) 2016-2018 Governikus GmbH & Co. KG, Germany
|
2017-07-03 09:30:10 +02:00
|
|
|
*/
|
|
|
|
|
|
|
|
#pragma once
|
|
|
|
|
|
|
|
#include "UIPlugInJsonApi.h"
|
|
|
|
#include "view/UIPlugIn.h"
|
|
|
|
|
2017-07-03 09:33:28 +02:00
|
|
|
#include <QDir>
|
2017-07-03 09:30:10 +02:00
|
|
|
#include <QScopedPointer>
|
|
|
|
#include <QWebSocket>
|
|
|
|
#include <QWebSocketServer>
|
|
|
|
|
|
|
|
namespace governikus
|
|
|
|
{
|
|
|
|
|
2017-07-03 09:33:28 +02:00
|
|
|
#define WEBSOCKET_PORT_FILENAME(PID) (QDir::tempPath() + QDir::separator() + QStringLiteral("web_socket_port-") + QString::number(PID))
|
|
|
|
|
2017-07-03 09:30:10 +02:00
|
|
|
class UIPlugInWebSocket
|
|
|
|
: public UIPlugIn
|
|
|
|
{
|
|
|
|
Q_OBJECT
|
|
|
|
Q_PLUGIN_METADATA(IID "governikus.UIPlugIn" FILE "metadata.json")
|
|
|
|
Q_INTERFACES(governikus::UIPlugIn)
|
|
|
|
|
|
|
|
private:
|
|
|
|
QWebSocketServer mServer;
|
|
|
|
QScopedPointer<QWebSocket> mConnection;
|
|
|
|
UIPlugInJsonApi* mJsonApi;
|
2017-07-03 09:33:28 +02:00
|
|
|
QSharedPointer<WorkflowContext> mContext;
|
2017-07-03 09:30:10 +02:00
|
|
|
|
2017-07-03 09:33:28 +02:00
|
|
|
static quint16 cWebSocketPort;
|
2017-07-03 09:30:10 +02:00
|
|
|
|
|
|
|
private Q_SLOTS:
|
|
|
|
virtual void doShutdown() override;
|
|
|
|
virtual void onWorkflowStarted(QSharedPointer<WorkflowContext> pContext) override;
|
|
|
|
virtual void onWorkflowFinished(QSharedPointer<WorkflowContext> pContext) override;
|
|
|
|
void onNewConnection();
|
|
|
|
void onClientDisconnected();
|
|
|
|
void onTextMessageReceived(const QString& pMessage);
|
|
|
|
|
|
|
|
void onJsonApiMessage(const QByteArray& pMessage);
|
|
|
|
|
|
|
|
public:
|
|
|
|
UIPlugInWebSocket();
|
2017-12-20 14:54:05 +01:00
|
|
|
virtual ~UIPlugInWebSocket() override;
|
2017-07-03 09:30:10 +02:00
|
|
|
|
2017-07-03 09:33:28 +02:00
|
|
|
static void setPort(quint16 pPort);
|
|
|
|
static quint16 getPort();
|
2017-07-03 09:30:10 +02:00
|
|
|
|
2017-07-03 09:33:28 +02:00
|
|
|
static const quint16 WEBSOCKET_DEFAULT_PORT = 14727;
|
2017-07-03 09:30:10 +02:00
|
|
|
};
|
|
|
|
|
|
|
|
} /* namespace governikus */
|