Files
qt-migration-legatus/qt6-after/qt6-migrated-legatus/Lts/Proxies/DifferentialGPS/Simulator/main_sim.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

122 lines
2.7 KiB
C++
Executable File

#include <QtCore/QCoreApplication>
#include <QtCore/QStringList>
#include <QtNetwork/QTcpSocket>
#include <QtCore/QTimer>
#include <QtCore/QDebug>
#include "main_sim.h"
PayloadSender::PayloadSender(int numByte, int ctrFail, QTcpSocket *s, QObject *parent)
: QObject(parent)
, m_socket(s)
, m_timer(new QTimer(this))
, m_char('1')
, m_numByte(numByte)
, m_ctrFail(ctrFail)
{
m_timer->setInterval(10 * 1000);
m_timer->setSingleShot(false);
m_timer->start();
connect(m_timer, &QTimer::timeout,
this, &PayloadSender::onTimeout);
}
PayloadSender::~PayloadSender()
{
if (m_socket->state() != QAbstractSocket::UnconnectedState)
{
m_socket->disconnectFromHost();
m_socket->waitForDisconnected(2000);
}
delete m_socket;
delete m_timer;
}
void PayloadSender::onTimeout()
{
static int ctrFail = 0;
ctrFail++;
bool failure = ((ctrFail >= m_ctrFail) && (ctrFail <= (m_ctrFail + 2)));
if (!failure)
{
qDebug() << "Sending data to socket " << m_socket << " content: 256 * 0x" << QString::number(m_char, 16);
QByteArray ba(m_numByte, m_char++);
m_socket->write(ba);
}
else
qDebug() << " +++ Failure: Sending data ";
}
TcpTestServer::TcpTestServer(int numByte, int ctrFail, QObject *parent)
: QTcpServer(parent)
, m_numByte(numByte)
, m_ctrFail(ctrFail)
{
connect(this, &TcpTestServer::newConnection,
this, &TcpTestServer::onNewIncomingConnection);
}
TcpTestServer::~TcpTestServer()
{
qDeleteAll(m_openConnections);
}
void TcpTestServer::onNewIncomingConnection()
{
QTcpSocket *newSocket = nextPendingConnection();
if (!newSocket)
return;
PayloadSender *ps = new PayloadSender(m_numByte, m_ctrFail, newSocket, this);
connect(newSocket, &QTcpSocket::disconnected,
ps, &PayloadSender::deleteLater);
qDebug() << "Created new payload sender" << ps << "for socket " << newSocket;
m_openConnections += ps;
connect(ps, &PayloadSender::destroyed,
this, &TcpTestServer::onPayloadSenderDestroyed);
}
void TcpTestServer::onPayloadSenderDestroyed(QObject *obj)
{
qDebug() << "Payload sender " << obj << "destroyed";
m_openConnections -= obj;
}
int main(int argc, char **argv)
{
QCoreApplication app(argc, argv);
unsigned short port = 1234;
int numByte = 40;
int ctrFail = -10;
if (app.arguments().size() > 1) port = app.arguments().at(1).toInt();
if (app.arguments().size() > 2) numByte = app.arguments().at(2).toInt();
if (app.arguments().size() > 3) ctrFail = app.arguments().at(3).toInt();
TcpTestServer *srv = new TcpTestServer(numByte, ctrFail);
if (!srv->listen(QHostAddress::Any, port))
return 1;
int ret = app.exec();
delete srv;
return ret;
}