Files
qt-migration-legatus/qt6-after/qt6-migrated-legatus/Lts/Common/httq/AbstractServer.cpp
T
torstenandCopilot 7a6be7474e Qt6 migration: Fix BUILD_RTI=OFF build errors in TrainingAreaBase
- training_area_telegrams.cpp: Fixed QJsonObject initializer syntax (Qt6 requires {{}} not ({}))
- training_area_telegrams.cpp: Fixed fromJson() methods to access m_* members directly
- training_area_telegrams.cpp: Fixed brace mismatches in multiple toJson() methods
- training_area_telegrams.h: Changed Header struct to public members for consistency
- tx_mixin.cpp: Fixed getEquipmentNumber() template for direct member access
- lts_coordinate.cpp: Added missing #include <iomanip>
- MIGRATION_STATUS.md: Added migration progress tracking document

C++17 constraint enforced due to RTI Connext DDS 7.7.0 incompatibility with C++20+

Build status: BUILD_RTI=OFF successful (0 errors, warnings only)

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-08-23 20:49:23 +02:00

79 lines
2.1 KiB
C++

#include <QtNetwork/QTcpServer>
#include <QtNetwork/QTcpSocket>
#include <QtWebSockets/QWebSocketServer>
#include <httq/AbstractServer.h>
#include <httq/HttpRequest.h>
#include <httq/Logger.h>
namespace httq
{
AbstractServer::AbstractServer(QObject* parent)
: QObject(parent), mSvr(new QTcpServer(this)), mLoggerFactory(nullptr), mLogger(nullptr)
{
}
LoggerFactory* AbstractServer::createLoggerFactory()
{
return new LoggerFactory(this);
}
LoggerFactory* AbstractServer::getLoggerFactory()
{
if (mLoggerFactory == nullptr)
mLoggerFactory = createLoggerFactory();
return mLoggerFactory;
}
void AbstractServer::slotNewConnection()
{
mLogger->debug(QStringLiteral("newConnection"));
while (QTcpSocket* cli = mSvr->nextPendingConnection())
{
mLogger->debug(QStringLiteral("nextPendingConnection"));
if (cli == nullptr)
{
mLogger->debug(QStringLiteral("invalid tcp client"));
return;
}
HttpRequest* req = new HttpRequest(cli, this);
connect(req, &HttpRequest::signalUpgrade, this, [this, req](QTcpSocket* sock) {
mLogger->debug(QStringLiteral("signalUpgrade"));
QWebSocketServer* wsSvr = webSocketServer();
if (wsSvr == nullptr)
{
mLogger->debug(QStringLiteral("no websocket server available for websocket upgrade"));
sock->close();
sock->deleteLater();
return;
}
wsSvr->handleConnection(sock);
emit sock->readyRead();
});
connect(req, &HttpRequest::signalReady, this, [this, req]() {
mLogger->debug(QStringLiteral("signalReady"));
newHttpConnection(req);
});
}
}
bool AbstractServer::listen(qint16 port, const QHostAddress& host)
{
mLoggerFactory = createLoggerFactory();
mLogger = mLoggerFactory->createLogger(this);
mLogger->debug(QStringLiteral("listen"));
connect(mSvr, &QTcpServer::newConnection, this, &AbstractServer::slotNewConnection);
return mSvr->listen(host, port);
}
} // namespace httq