aboutsummaryrefslogtreecommitdiffstats
path: root/mock-server/MockServer.h
diff options
context:
space:
mode:
Diffstat (limited to 'mock-server/MockServer.h')
-rw-r--r--mock-server/MockServer.h44
1 files changed, 44 insertions, 0 deletions
diff --git a/mock-server/MockServer.h b/mock-server/MockServer.h
new file mode 100644
index 0000000..21d4d32
--- /dev/null
+++ b/mock-server/MockServer.h
@@ -0,0 +1,44 @@
+/**
+ * @file MockServer.h
+ * @brief Mock XPL2 server — listens on all three protocol ports.
+ */
+#pragma once
+
+#include <QList>
+#include <QObject>
+#include <QTcpServer>
+#include <QTimer>
+
+class QTcpSocket;
+
+class MockServer : public QObject
+{
+ Q_OBJECT
+
+public:
+ explicit MockServer (QObject *parent = nullptr);
+
+private slots:
+ void onNewConnection ();
+ void onClientMessageReady ();
+ void onClientDisconnected ();
+ void sendKaPing ();
+
+private:
+ struct Port
+ {
+ QTcpServer server;
+ const char *name = nullptr;
+ quint16 number = 0;
+ };
+
+ void setupPort (Port &port, const char *name, quint16 number);
+ const char *portName (quint16 localPort) const;
+ void handleCommand (QTcpSocket *client, const QByteArray &line);
+
+ Port m_command;
+ Port m_imaging;
+ Port m_status;
+ QList<QTcpSocket *> m_clients;
+ QTimer m_pingTimer;
+};