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);