aboutsummaryrefslogtreecommitdiffstats
path: root/mock-server
diff options
context:
space:
mode:
authorThomas Vanbesien <tvanbesi@proton.me>2026-03-11 11:31:25 +0100
committerThomas Vanbesien <tvanbesi@proton.me>2026-03-11 11:31:25 +0100
commit920a1adeadef58eb04f2bf83af8fb8bc6c01a986 (patch)
tree67d41b57173de8d36dcc42a6ed84f990d6519a0c /mock-server
parent35309337aacac2eac7d7215e526bddcf7647b8cf (diff)
downloadQtXpl2-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.txt6
-rw-r--r--mock-server/main.cpp64
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 ();
+}