summaryrefslogtreecommitdiffstats
path: root/common/resourceaccess.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'common/resourceaccess.cpp')
-rw-r--r--common/resourceaccess.cpp12
1 files changed, 10 insertions, 2 deletions
diff --git a/common/resourceaccess.cpp b/common/resourceaccess.cpp
index fba7a8b..bd9e2c9 100644
--- a/common/resourceaccess.cpp
+++ b/common/resourceaccess.cpp
@@ -89,12 +89,14 @@ public:
89 QMultiMap<uint, std::function<void(int error, const QString &errorMessage)> > resultHandler; 89 QMultiMap<uint, std::function<void(int error, const QString &errorMessage)> > resultHandler;
90 QSet<uint> completeCommands; 90 QSet<uint> completeCommands;
91 uint messageId; 91 uint messageId;
92 bool openingSocket;
92}; 93};
93 94
94ResourceAccess::Private::Private(const QByteArray &name, const QByteArray &instanceIdentifier, ResourceAccess *q) 95ResourceAccess::Private::Private(const QByteArray &name, const QByteArray &instanceIdentifier, ResourceAccess *q)
95 : resourceName(name), 96 : resourceName(name),
96 resourceInstanceIdentifier(instanceIdentifier), 97 resourceInstanceIdentifier(instanceIdentifier),
97 messageId(0) 98 messageId(0),
99 openingSocket(false)
98{ 100{
99} 101}
100 102
@@ -341,8 +343,13 @@ void ResourceAccess::open()
341 log("Socket valid, so not opening again"); 343 log("Socket valid, so not opening again");
342 return; 344 return;
343 } 345 }
346 if (d->openingSocket) {
347 return;
348 }
349 d->openingSocket = true;
344 d->initializeSocket().then<void>([this]() { 350 d->initializeSocket().then<void>([this]() {
345 Trace() << "Socket is initialized"; 351 Trace() << "Socket is initialized";
352 d->openingSocket = false;
346 QObject::connect(d->socket.data(), &QLocalSocket::disconnected, 353 QObject::connect(d->socket.data(), &QLocalSocket::disconnected,
347 this, &ResourceAccess::disconnected); 354 this, &ResourceAccess::disconnected);
348 QObject::connect(d->socket.data(), SIGNAL(error(QLocalSocket::LocalSocketError)), 355 QObject::connect(d->socket.data(), SIGNAL(error(QLocalSocket::LocalSocketError)),
@@ -351,7 +358,8 @@ void ResourceAccess::open()
351 this, &ResourceAccess::readResourceMessage); 358 this, &ResourceAccess::readResourceMessage);
352 connected(); 359 connected();
353 }, 360 },
354 [](int error, const QString &errorString) { 361 [this](int error, const QString &errorString) {
362 d->openingSocket = false;
355 Warning() << "Failed to initialize socket " << errorString; 363 Warning() << "Failed to initialize socket " << errorString;
356 }).exec(); 364 }).exec();
357} 365}