picloud hang fix try :`-(
This commit is contained in:
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user