Page MenuHomec4science

data_server.cpp
No OneTemporary

File Metadata

Created
Sun, Sep 29, 11:15

data_server.cpp

#include "data_server.hh"
#include "data_thread.hh"
#include "grid.hh"
#include <QMutexLocker>
DataServer::DataServer(Grid & grid, QObject * parent)
: QTcpServer(parent), nb_client_ready(0), grid(grid) {}
void DataServer::incomingConnection(qintptr socket_desc) {
DataThread * thread = new DataThread(socket_desc, grid, this);
threads.push_back(thread);
connect(thread, SIGNAL(finished()), thread, SLOT(deleteLater()));
connect(thread, SIGNAL(dataReady()), this, SLOT(clientReady()));
thread->start();
}
void DataServer::clientReady() {
static size_t count = 0;
QMutexLocker locker(&lock);
++nb_client_ready;
qDebug() << "DataServer: one more client ready" << nb_client_ready << "/"
<< grid.getNbPieces();
if (nb_client_ready == grid.getNbPieces()) {
qDebug() << "DataServer: all client ready " << ++count;
emit dataReady();
nb_client_ready = 0;
}
}
void DataServer::stop() {
for (auto t : threads) {
delete t;
}
}

Event Timeline