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