diff options
| author | Thomas Vanbesien <tvanbesi@proton.me> | 2026-03-13 11:58:45 +0100 |
|---|---|---|
| committer | Thomas Vanbesien <tvanbesi@proton.me> | 2026-03-13 11:58:45 +0100 |
| commit | 02fe86ab2a04a02b114d7ca8ce4374a29a1d5f45 (patch) | |
| tree | ebec2643d7238d0447a236a278757c718b0ef0ac /mock-server/MockServer.h | |
| parent | a2b1ccf17845e55caef7f69a5e68f49a55b6a166 (diff) | |
| download | QtXpl2-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.h | 44 |
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; +}; |
