aboutsummaryrefslogtreecommitdiffstats
path: root/mock-server/MockServer.h
diff options
context:
space:
mode:
authorThomas Vanbesien <tvanbesi@proton.me>2026-03-13 11:58:45 +0100
committerThomas Vanbesien <tvanbesi@proton.me>2026-03-13 11:58:45 +0100
commit02fe86ab2a04a02b114d7ca8ce4374a29a1d5f45 (patch)
treeebec2643d7238d0447a236a278757c718b0ef0ac /mock-server/MockServer.h
parenta2b1ccf17845e55caef7f69a5e68f49a55b6a166 (diff)
downloadQtXpl2-02fe86ab2a04a02b114d7ca8ce4374a29a1d5f45.tar.gz
QtXpl2-02fe86ab2a04a02b114d7ca8ce4374a29a1d5f45.zip
Coalesce mock server into single MockServer class
Replace three independent EchoServer instances with one MockServer that owns three QTcpServers, shares a single KA_PING timer, and uses a flat client list with localPort() for port resolution.
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;
+};