void NetworkServer::checkForNewClients() { std::vector<sf::TcpSocket *> updatedClients = communicator.getClients(); std::vector<sf::TcpSocket *> newClients; std::vector<sf::TcpSocket *> lostClients; for(int i=0; i<updatedClients.size(); i++) { if(!isInClientList(updatedClients[i])) newClients.push_back(updatedClients[i]); } for(int i=0; i<clients.size(); i++) { if(!isClientInUpdatedList(clients[i].tcp, updatedClients)) lostClients.push_back(clients[i].tcp); } for(int i=0; i<newClients.size(); i++) { clients.push_back(ClientInfo()); clients[clients.size()-1].tcp = newClients[i]; clients[clients.size()-1].ip = newClients[i]->getRemoteAddress(); sendTcpBySocket("_CONNECT"+std::to_string(udpSocket.getLocalPort()), clients[clients.size()-1].tcp); } for(int i=0; i<newClients.size(); i++) gotNewClient(newClients[i]->getRemoteAddress()); for(int i=0; i<lostClients.size(); i++) lostClient(lostClients[i]->getRemoteAddress()); }
SensorManager::~SensorManager() { // stop adaptor threads and acquired resources for(QMap<QString, DeviceAdaptorInstanceEntry>::const_iterator it = deviceAdaptorInstanceMap_.begin(); it != deviceAdaptorInstanceMap_.end(); ++it) { releaseDeviceAdaptor(it.key()); } sleep(1); // sleep for seconds so adaptor threads have time to die // close open sessions for(QMap<QString, SensorInstanceEntry>::const_iterator it = sensorInstanceMap_.begin(); it != sensorInstanceMap_.end(); ++it) { for(QSet<int>::const_iterator it2 = it.value().sessions_.begin(); it2 != it.value().sessions_.end(); ++it2) { lostClient(*it2); } } // delete sensors for(QMap<QString, SensorInstanceEntry>::iterator it = sensorInstanceMap_.begin(); it != sensorInstanceMap_.end(); ++it) { if(it.value().sensor_) { delete it.value().sensor_; it.value().sensor_ = 0; } } // delete chains for(QMap<QString, ChainInstanceEntry>::iterator it = chainInstanceMap_.begin(); it != chainInstanceMap_.end(); ++it) { if(it.value().chain_) { delete it.value().chain_; it.value().chain_ = 0; } } // delete adaptors for(QMap<QString, DeviceAdaptorInstanceEntry>::iterator it = deviceAdaptorInstanceMap_.begin(); it != deviceAdaptorInstanceMap_.end(); ++it) { if(it.value().adaptor_) { delete it.value().adaptor_; it.value().adaptor_ = 0; } } delete socketHandler_; delete pipeNotifier_; if (pipefds_[0]) close(pipefds_[0]); if (pipefds_[1]) close(pipefds_[1]); #ifdef SENSORFW_MCE_WATCHER delete mceWatcher_; #endif //SENSORFW_MCE_WATCHER }