diff options
| author | Thomas Vanbesien <tvanbesi@proton.me> | 2026-03-11 11:31:25 +0100 |
|---|---|---|
| committer | Thomas Vanbesien <tvanbesi@proton.me> | 2026-03-11 11:31:25 +0100 |
| commit | 920a1adeadef58eb04f2bf83af8fb8bc6c01a986 (patch) | |
| tree | 67d41b57173de8d36dcc42a6ed84f990d6519a0c /mock-server | |
| parent | 35309337aacac2eac7d7215e526bddcf7647b8cf (diff) | |
| download | QtXpl2-920a1adeadef58eb04f2bf83af8fb8bc6c01a986.tar.gz QtXpl2-920a1adeadef58eb04f2bf83af8fb8bc6c01a986.zip | |
Add mock XPL2 server with echo on Command (9110), Imaging (9111), Status (9112) ports
Diffstat (limited to 'mock-server')
| -rw-r--r-- | mock-server/CMakeLists.txt | 6 | ||||
| -rw-r--r-- | mock-server/main.cpp | 64 |
2 files changed, 70 insertions, 0 deletions
diff --git a/mock-server/CMakeLists.txt b/mock-server/CMakeLists.txt new file mode 100644 index 0000000..52bfabb --- /dev/null +++ b/mock-server/CMakeLists.txt @@ -0,0 +1,6 @@ +qt_add_executable(Xpl2MockServer main.cpp) + +set_target_properties(Xpl2MockServer PROPERTIES RUNTIME_OUTPUT_DIRECTORY + "${PROJECT_BINARY_DIR}/bin") + +target_link_libraries(Xpl2MockServer PRIVATE Qt6::Core Qt6::Network) diff --git a/mock-server/main.cpp b/mock-server/main.cpp new file mode 100644 index 0000000..4818d6f --- /dev/null +++ b/mock-server/main.cpp @@ -0,0 +1,64 @@ +/** + * @file main.cpp + * @brief Mock XPL2 server — echoes back on three ports. + */ +#include <QCoreApplication> +#include <QTcpServer> +#include <QTcpSocket> + +static QTcpServer * +listenOn (quint16 port, const char *name, QObject *parent) +{ + auto *server = new QTcpServer (parent); + + QObject::connect ( + server, &QTcpServer::newConnection, server, + [=] () + { + while (auto *sock = server->nextPendingConnection ()) + { + qInfo ("[%s:%d] client connected", name, port); + + QObject::connect (sock, &QTcpSocket::readyRead, sock, + [=] () + { + QByteArray data = sock->readAll (); + qInfo ("[%s:%d] echo %lld bytes", name, + port, data.size ()); + sock->write (data); + }); + + QObject::connect (sock, &QTcpSocket::disconnected, sock, + [=] () + { + qInfo ("[%s:%d] client disconnected", name, + port); + sock->deleteLater (); + }); + } + }); + + if (!server->listen (QHostAddress::Any, port)) + { + qCritical ("Failed to listen on %s port %d: %s", name, port, + qPrintable (server->errorString ())); + } + else + { + qInfo ("Listening on %s port %d", name, port); + } + + return server; +} + +int +main (int argc, char *argv[]) +{ + QCoreApplication app (argc, argv); + + listenOn (9110, "Command", &app); + listenOn (9111, "Imaging", &app); + listenOn (9112, "Status", &app); + + return app.exec (); +} |
