OpenTwin 0.1
OpenTwin
 
Loading...
Searching...
No Matches
SocketServer.h
Go to the documentation of this file.
1#ifndef SOCKETSERVER_H
2#define SOCKETSERVER_H
3
4// OpenTwin header
6
7// Qt header
8#include <QtCore/qobject.h>
9#include <QtCore/qlist.h>
10#include <QtCore/qbytearray.h>
11#include <QtNetwork/qsslerror.h>
12#include <QtCore/qtimer.h>
13
14// std header
15#include <string>
16
17class QWebSocketServer;
18class QWebSocket;
19
20Q_DECLARE_METATYPE(const char*);
22
23class SocketServer : public QObject
24{
25 Q_OBJECT
26public:
27 static SocketServer& instance(void);
28
29 bool startServer(void);
30
31 bool sendHttpRequest(const std::string& operation, const std::string& url, const std::string& jsonData, std::string& response);
32
33 // ###########################################################################################################################################################################################################################################################################################################################
34
35 // Setter / Getter
36
37 void setWebsocketIp(const std::string& _ip) { m_websocketIp = _ip; };
38 const std::string& getWebsocketIp(void) const { return m_websocketIp; };
39
40 void setWebsocketPort(unsigned int _port) { m_websocketPort = _port; };
41 unsigned int getWebsocketPort(void) const { return m_websocketPort; };
42
43 void setRelayUrl(const std::string& _url) { m_relayUrl = _url; };
44 const std::string& getRelayUrl(void) const { return m_relayUrl; };
45
46 // ###########################################################################################################################################################################################################################################################################################################################
47
48 // Public: Slots
49
50public Q_SLOTS:
51 QString performAction(const char *json, const char *senderIP);
52 void queueAction(const char *json, const char *senderIP);
53 void deallocateData(const char *data);
54
55 // ###########################################################################################################################################################################################################################################################################################################################
56
57 // Private: Slots
58
59private Q_SLOTS:
60 void onNewConnection(void);
61 void processMessage(QString message);
62 void socketDisconnected(void);
63 void onSslErrors(const QList<QSslError> &errors);
64 void slotSocketClosed(void);
65 void keepAlive();
66
67 // ###########################################################################################################################################################################################################################################################################################################################
68
69 // Private: Helper
70
71private:
74
75 void processMessages(void);
76 void shutdown(void);
77 void sendQueueWSMessage(const std::string operation, const std::string senderIP, const std::string jsonData);
78 std::string sendProcessWSMessage(const std::string operation, const std::string senderIP, const std::string jsonData);
79 std::string getSystemInformation(void);
80
81 std::string m_websocketIp;
82 unsigned int m_websocketPort;
83 std::string m_relayUrl;
84
85 QWebSocketServer *m_pWebSocketServer;
86 QList<QWebSocket *> m_clients;
87 std::string responseText;
88 bool responseReceived;
89 ot::SystemInformation m_systemLoad;
90 std::chrono::system_clock::time_point m_lastReceiveTime;
91 QTimer* m_keepAliveTimer;
92};
93
94#endif //SOCKETSERVER_H
const char * senderIP
Definition dllmain.cpp:205
Q_DECLARE_METATYPE(const char *)
Definition SocketServer.h:24
const std::string & getWebsocketIp(void) const
Definition SocketServer.h:38
void setWebsocketPort(unsigned int _port)
Definition SocketServer.h:40
void deallocateData(const char *data)
Definition SocketServer.cpp:188
static SocketServer & instance(void)
Definition SocketServer.cpp:24
unsigned int getWebsocketPort(void) const
Definition SocketServer.h:41
bool startServer(void)
Definition SocketServer.cpp:29
const std::string & getRelayUrl(void) const
Definition SocketServer.h:44
bool sendHttpRequest(const std::string &operation, const std::string &url, const std::string &jsonData, std::string &response)
Definition SocketServer.cpp:75
void queueAction(const char *json, const char *senderIP)
Definition SocketServer.cpp:158
QString performAction(const char *json, const char *senderIP)
Definition SocketServer.cpp:108
void setWebsocketIp(const std::string &_ip)
Definition SocketServer.h:37
void setRelayUrl(const std::string &_url)
Definition SocketServer.h:43
Definition SystemInformation.h:19