diff options
| author | Thomas Vanbesien <tvanbesi@proton.me> | 2026-03-11 15:25:11 +0100 |
|---|---|---|
| committer | Thomas Vanbesien <tvanbesi@proton.me> | 2026-03-11 15:25:11 +0100 |
| commit | 094b8aa2bbb8b90dff9da199873cbc6b36549eb6 (patch) | |
| tree | f7dea55e25ca4f9a0461c88a9c91953bb77336fc /mock-server/EchoServer.cpp | |
| parent | 920a1adeadef58eb04f2bf83af8fb8bc6c01a986 (diff) | |
| download | QtXpl2-094b8aa2bbb8b90dff9da199873cbc6b36549eb6.tar.gz QtXpl2-094b8aa2bbb8b90dff9da199873cbc6b36549eb6.zip | |
Refactor: three XPL2 ports, EchoServer class, dark debug console, qmllint clean
- Xpl2Client: replace single port with commandPort/imagingPort/statusPort (9110/9111/9112)
- Mock server: extract EchoServer class from lambda-based listenOn()
- Demo: dark debug console matching BobinkQtOpcUa style, 2-column connection layout
- Fix qmlls module resolution via IMPORT_PATH in qt_add_qml_module()
- Add pragma ComponentBehavior: Bound, fix all qmllint warnings
Diffstat (limited to 'mock-server/EchoServer.cpp')
| -rw-r--r-- | mock-server/EchoServer.cpp | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/mock-server/EchoServer.cpp b/mock-server/EchoServer.cpp new file mode 100644 index 0000000..43fc6f9 --- /dev/null +++ b/mock-server/EchoServer.cpp @@ -0,0 +1,50 @@ +/** + * @file EchoServer.cpp + * @brief Simple TCP echo server for a single port. + */ +#include "EchoServer.h" + +#include <QTcpSocket> + +EchoServer::EchoServer (quint16 port, const char *name, QObject *parent) + : QTcpServer (parent), m_name (name), m_port (port) +{ + connect (this, &QTcpServer::newConnection, this, + &EchoServer::onNewConnection); + + if (!listen (QHostAddress::Any, port)) + qCritical ("Failed to listen on %s port %d: %s", m_name, m_port, + qPrintable (errorString ())); + else + qInfo ("Listening on %s port %d", m_name, m_port); +} + +void +EchoServer::onNewConnection () +{ + while (auto *sock = nextPendingConnection ()) + { + qInfo ("[%s:%d] client connected", m_name, m_port); + connect (sock, &QTcpSocket::readyRead, this, + &EchoServer::onClientReadyRead); + connect (sock, &QTcpSocket::disconnected, this, + &EchoServer::onClientDisconnected); + } +} + +void +EchoServer::onClientReadyRead () +{ + auto *sock = qobject_cast<QTcpSocket *> (sender ()); + QByteArray data = sock->readAll (); + qInfo ("[%s:%d] echo %lld bytes", m_name, m_port, data.size ()); + sock->write (data); +} + +void +EchoServer::onClientDisconnected () +{ + auto *sock = qobject_cast<QTcpSocket *> (sender ()); + qInfo ("[%s:%d] client disconnected", m_name, m_port); + sock->deleteLater (); +} |
