From 920a1adeadef58eb04f2bf83af8fb8bc6c01a986 Mon Sep 17 00:00:00 2001 From: Thomas Vanbesien Date: Wed, 11 Mar 2026 11:31:25 +0100 Subject: Add mock XPL2 server with echo on Command (9110), Imaging (9111), Status (9112) ports --- mock-server/main.cpp | 64 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100644 mock-server/main.cpp (limited to 'mock-server/main.cpp') 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 +#include +#include + +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 (); +} -- cgit v1.2.3