From 0b2fdc4b734319bdeb9df6ad1420e75cea28b22e Mon Sep 17 00:00:00 2001 From: Aaron Seigo Date: Fri, 21 Nov 2014 13:24:40 +0100 Subject: use a timer to control the re-connect process --- client/resourceaccess.cpp | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) (limited to 'client/resourceaccess.cpp') diff --git a/client/resourceaccess.cpp b/client/resourceaccess.cpp index 1eadc34..d3d8175 100644 --- a/client/resourceaccess.cpp +++ b/client/resourceaccess.cpp @@ -9,8 +9,14 @@ ResourceAccess::ResourceAccess(const QString &resourceName, QObject *parent) : QObject(parent), m_resourceName(resourceName), m_socket(new QLocalSocket(this)), + m_tryOpenTimer(new QTimer(this)), m_startingProcess(false) { + m_tryOpenTimer->setInterval(50); + m_tryOpenTimer->setSingleShot(true); + connect(m_tryOpenTimer, &QTimer::timeout, + this, &ResourceAccess::open); + Console::main()->log(QString("Starting access to %1").arg(m_socket->serverName())); connect(m_socket, &QLocalSocket::connected, this, &ResourceAccess::connected); @@ -37,17 +43,8 @@ bool ResourceAccess::isReady() const void ResourceAccess::open() { - static int count = 0; - if (m_startingProcess) { - QMetaObject::invokeMethod(this, "open", Qt::QueuedConnection); - } - if (m_socket->isValid()) { - return; - } - - ++count; - if (count > 10000) { + Console::main()->log("Socket valid, so aborting the open"); return; } @@ -72,15 +69,19 @@ void ResourceAccess::connected() void ResourceAccess::disconnected() { + m_socket->close(); Console::main()->log(QString("Disconnected: %1").arg(m_socket->fullServerName())); emit ready(false); + open(); } void ResourceAccess::connectionError(QLocalSocket::LocalSocketError error) { Console::main()->log(QString("Could not connect to %1 due to error %2").arg(m_socket->serverName()).arg(error)); if (m_startingProcess) { - QMetaObject::invokeMethod(this, "open", Qt::QueuedConnection); + if (!m_tryOpenTimer->isActive()) { + m_tryOpenTimer->start(); + } return; } -- cgit v1.2.3