diff options
Diffstat (limited to 'client/resourceaccess.cpp')
-rw-r--r-- | client/resourceaccess.cpp | 23 |
1 files changed, 12 insertions, 11 deletions
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) | |||
9 | : QObject(parent), | 9 | : QObject(parent), |
10 | m_resourceName(resourceName), | 10 | m_resourceName(resourceName), |
11 | m_socket(new QLocalSocket(this)), | 11 | m_socket(new QLocalSocket(this)), |
12 | m_tryOpenTimer(new QTimer(this)), | ||
12 | m_startingProcess(false) | 13 | m_startingProcess(false) |
13 | { | 14 | { |
15 | m_tryOpenTimer->setInterval(50); | ||
16 | m_tryOpenTimer->setSingleShot(true); | ||
17 | connect(m_tryOpenTimer, &QTimer::timeout, | ||
18 | this, &ResourceAccess::open); | ||
19 | |||
14 | Console::main()->log(QString("Starting access to %1").arg(m_socket->serverName())); | 20 | Console::main()->log(QString("Starting access to %1").arg(m_socket->serverName())); |
15 | connect(m_socket, &QLocalSocket::connected, | 21 | connect(m_socket, &QLocalSocket::connected, |
16 | this, &ResourceAccess::connected); | 22 | this, &ResourceAccess::connected); |
@@ -37,17 +43,8 @@ bool ResourceAccess::isReady() const | |||
37 | 43 | ||
38 | void ResourceAccess::open() | 44 | void ResourceAccess::open() |
39 | { | 45 | { |
40 | static int count = 0; | ||
41 | if (m_startingProcess) { | ||
42 | QMetaObject::invokeMethod(this, "open", Qt::QueuedConnection); | ||
43 | } | ||
44 | |||
45 | if (m_socket->isValid()) { | 46 | if (m_socket->isValid()) { |
46 | return; | 47 | Console::main()->log("Socket valid, so aborting the open"); |
47 | } | ||
48 | |||
49 | ++count; | ||
50 | if (count > 10000) { | ||
51 | return; | 48 | return; |
52 | } | 49 | } |
53 | 50 | ||
@@ -72,15 +69,19 @@ void ResourceAccess::connected() | |||
72 | 69 | ||
73 | void ResourceAccess::disconnected() | 70 | void ResourceAccess::disconnected() |
74 | { | 71 | { |
72 | m_socket->close(); | ||
75 | Console::main()->log(QString("Disconnected: %1").arg(m_socket->fullServerName())); | 73 | Console::main()->log(QString("Disconnected: %1").arg(m_socket->fullServerName())); |
76 | emit ready(false); | 74 | emit ready(false); |
75 | open(); | ||
77 | } | 76 | } |
78 | 77 | ||
79 | void ResourceAccess::connectionError(QLocalSocket::LocalSocketError error) | 78 | void ResourceAccess::connectionError(QLocalSocket::LocalSocketError error) |
80 | { | 79 | { |
81 | Console::main()->log(QString("Could not connect to %1 due to error %2").arg(m_socket->serverName()).arg(error)); | 80 | Console::main()->log(QString("Could not connect to %1 due to error %2").arg(m_socket->serverName()).arg(error)); |
82 | if (m_startingProcess) { | 81 | if (m_startingProcess) { |
83 | QMetaObject::invokeMethod(this, "open", Qt::QueuedConnection); | 82 | if (!m_tryOpenTimer->isActive()) { |
83 | m_tryOpenTimer->start(); | ||
84 | } | ||
84 | return; | 85 | return; |
85 | } | 86 | } |
86 | 87 | ||