picloud hang fix try :`-(

This commit is contained in:
2024-09-06 08:05:26 +03:00
parent a0454b809d
commit 16a818c95e
2 changed files with 4 additions and 1 deletions

View File

@@ -31,6 +31,8 @@ public:
EVENT2(dataReadedServer, uint, id, PIByteArray &, ba) EVENT2(dataReadedServer, uint, id, PIByteArray &, ba)
EVENT0(pingReceived) EVENT0(pingReceived)
PIObject::Connection connect_link;
private: private:
EVENT_HANDLER1(void, readed, PIByteArray &, data); EVENT_HANDLER1(void, readed, PIByteArray &, data);
EVENT_HANDLER1(void, disconnected, bool, withError); EVENT_HANDLER1(void, disconnected, bool, withError);

View File

@@ -201,6 +201,7 @@ void DispatcherServer::disconnectClient(DispatcherClient * client) {
return; return;
} }
piCoutObj << "remove ..." << client->clientId(); piCoutObj << "remove ..." << client->clientId();
client->connect_link.disconnect();
clients.removeAll(client); clients.removeAll(client);
rm_clients.remove(client); rm_clients.remove(client);
CloudServer * cs = index_c_servers.value(client, nullptr); CloudServer * cs = index_c_servers.value(client, nullptr);
@@ -238,7 +239,7 @@ void DispatcherServer::newConnection(PIEthernet * cl) {
return; return;
} }
DispatcherClient * client = new DispatcherClient(cl, client_gid++); 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) { CONNECTL(client, registerServer, [this](const PIByteArray & sname, DispatcherClient * c) {
PIMutexLocker locker(map_mutex); PIMutexLocker locker(map_mutex);
CloudServer * cs = c_servers.value(sname, nullptr); CloudServer * cs = c_servers.value(sname, nullptr);