Files
qt-migration-legatus/qt6-after/qt6-migrated-legatus/Lts/Proxies/DifferentialGPS/tcpsocket.cpp
T
torstenandCopilot b774f4035c Qt6 Migration: DDS-Stubs, Logger-Fixes, Export-Header Korrekturen
- NGL_ADD_LIBRARY2: 87 CMakeLists.txt konvertiert für Export-Header Generierung
- 44 Export-Header Include-Pfade korrigiert (_export.h)
- 81 DDS-Stub-Header generiert (*_dtc.h, *_fts.h, *_dts.h, *_ftc.h)
- INGLLogger: Duplikat gelöscht, m_logger Member entfernt, variadische Makros
- Q_FUNC_INFO Redefinition behoben (Qt6 definiert bereits)
- FATAL_LOG Makro hinzugefügt
- InfrastructureManagement DDS-Stubs (ism.hpp, ism_enums.hpp, ism_ftc.h)
- FilterManagement DDS-Stubs (flt_ftc.h, flt_dts.h)
- AreaEffectSimulation DDS-Stubs (aes.hpp, aes_enums.hpp)
- SymbolAppearance Klasse vollständig definiert mit content() Methode
- BuildingComponentFilter Klasse definiert mit Copy-Konstruktor
- Ftc Factory: nullptr Return (abstract class)
- AesFilter Klasse in aes.hpp hinzugefügt
- Dtc Klasse in ppm.hpp mit participantChanged Signal
- AesType Enum: alle 15 At* Werte definiert
- AesEffectState_def: EsReceived hinzugefügt
- DataModification Enum: eAdded/eModified/eRemoved
- function_reply_object.h → core_types.h Include-Pfad (72 Dateien)
- Enum-Class-Streaming Template-Operator in INGLLogger.h
- ism_mounting_point.h: QImage → QtGui/QImage, QGuiApplication/QScreen
- ism_data_plugin_interface.h: QSet Include, Include-Reihenfolge
- QRegExp → QRegularExpression in tpm_js_parser.cpp
- .underlying() Aufrufe zu direktem Enum-Vergleich korrigiert
- Include-Pfade: aes.hpp in symbol_appearance_settings_impl.h und aes_display_filter_impl.h

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-08-19 06:06:24 +02:00

116 lines
2.7 KiB
C++
Executable File

#include "tcpsocket.h"
#include <QTcpSocket>
#include <QHostAddress>
#include <QTimer>
namespace DifferentialGPS
{
TcpSocket::TcpSocket(const char *logName)
: QThread()
, m_socket(nullptr)
, m_logger(getLogger(logName))
, m_waitTime(1)
, m_reconnectTimer(nullptr)
{
qRegisterMetaType<QAbstractSocket::SocketError>("QAbstractSocket::SocketError");
moveToThread(this);
}
TcpSocket::~TcpSocket()
{
cleanupObject();
}
void TcpSocket::startThreadInternal(const QString &hostName, quint16 port)
{
m_hostName = hostName;
m_hostPort = port;
start();
}
void TcpSocket::run()
{
DEBUG_LOG() << "Starting thread";
m_reconnectTimer = new QTimer(this);
doConnect();
exec();
cleanupObject();
}
void TcpSocket::doConnect()
{
if (m_socket)
m_socket->deleteLater();;
m_socket = new QTcpSocket(this);
connect(m_socket, &QTcpSocket::connected,
this, &TcpSocket::onConnected);
connect(m_socket, &QTcpSocket::disconnected,
this, &TcpSocket::onDisconnected);
connect(m_socket, QOverload<QAbstractSocket::SocketError>::of(&QTcpSocket::error),
this, &TcpSocket::onError);
connect(m_socket, &QTcpSocket::readyRead,
this, &TcpSocket::onReadyRead);
INFO_LOG() << "Connecting to tcp server at "
<< m_hostName << ":" << m_hostPort;
m_socket->connectToHost(m_hostName, m_hostPort);
}
void TcpSocket::onConnected()
{
INFO_LOG() << "Connected to "
<< m_socket->peerAddress().toString()
<< ":" << m_socket->peerPort();
m_waitTime = 1;
}
void TcpSocket::onDisconnected()
{
INFO_LOG() << "Disconnected from " << m_socket->peerAddress().toString()
<< ":" << m_socket->peerPort();
}
void TcpSocket::onError(QAbstractSocket::SocketError err)
{
ERROR_LOG() << "Socket error: " << err
<< " " << m_socket->errorString()
<< ":" << m_socket->peerPort()
<< " - trying to reconnect in " << m_waitTime << " seconds";
m_socket->disconnectFromHost();
if (m_socket->state() != QAbstractSocket::UnconnectedState)
m_socket->waitForDisconnected();
m_waitTime += 2;
if (!m_reconnectTimer->isActive())
m_reconnectTimer->start(m_waitTime * 1000);
if (m_waitTime > 120)
m_waitTime = 120;
}
void TcpSocket::cleanupObject()
{
if (m_reconnectTimer)
{
m_reconnectTimer->disconnect(this);
delete m_reconnectTimer;
m_reconnectTimer = nullptr;
}
if (m_socket)
{
m_socket->disconnect(this);
m_socket->close();
if (m_socket->state() != QAbstractSocket::UnconnectedState)
m_socket->waitForDisconnected();
delete m_socket;
m_socket = nullptr;
}
}
}