From 16a818c95eb72abeb9b4f07a774a1eb7bc59d811 Mon Sep 17 00:00:00 2001 From: peri4 Date: Fri, 6 Sep 2024 08:05:26 +0300 Subject: [PATCH] picloud hang fix try :`-( --- utils/cloud_dispatcher/dispatcherclient.h | 2 ++ utils/cloud_dispatcher/dispatcherserver.cpp | 3 ++- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/utils/cloud_dispatcher/dispatcherclient.h b/utils/cloud_dispatcher/dispatcherclient.h index f9150006..d8b01e73 100644 --- a/utils/cloud_dispatcher/dispatcherclient.h +++ b/utils/cloud_dispatcher/dispatcherclient.h @@ -31,6 +31,8 @@ public: EVENT2(dataReadedServer, uint, id, PIByteArray &, ba) EVENT0(pingReceived) + PIObject::Connection connect_link; + private: EVENT_HANDLER1(void, readed, PIByteArray &, data); EVENT_HANDLER1(void, disconnected, bool, withError); diff --git a/utils/cloud_dispatcher/dispatcherserver.cpp b/utils/cloud_dispatcher/dispatcherserver.cpp index 910c2715..ad581fbd 100644 --- a/utils/cloud_dispatcher/dispatcherserver.cpp +++ b/utils/cloud_dispatcher/dispatcherserver.cpp @@ -201,6 +201,7 @@ void DispatcherServer::disconnectClient(DispatcherClient * client) { return; } piCoutObj << "remove ..." << client->clientId(); + client->connect_link.disconnect(); clients.removeAll(client); rm_clients.remove(client); CloudServer * cs = index_c_servers.value(client, nullptr); @@ -238,7 +239,7 @@ void DispatcherServer::newConnection(PIEthernet * cl) { return; } DispatcherClient * client = new DispatcherClient(cl, client_gid++); - CONNECTU(client, disconnectEvent, this, disconnectClient); + client->connect_link = CONNECTU(client, disconnectEvent, this, disconnectClient); CONNECTL(client, registerServer, [this](const PIByteArray & sname, DispatcherClient * c) { PIMutexLocker locker(map_mutex); CloudServer * cs = c_servers.value(sname, nullptr);