void* handle(void* par) { signal(SIGPIPE, SIG_IGN); HandleThreadParameter* parameter = (HandleThreadParameter*) par; int clientSocket = parameter->clientID; Server* server = parameter->server; std::vector<std::string> withBase = server->listFilesInDirectoryWithBase( "sendFiles"); std::vector<std::string> withoutBase = server->listFilesInDirectory( "sendFiles"); // Manda las imagenes y sonidos necesarios que se utilizaran. server->sendFiles(withBase, withoutBase, clientSocket); PlayerInfo* info = server->recieveNewPlayer(clientSocket); if (!info){ Logs::logErrorMessage("No se ha recibido la informacion del jugador"); return NULL; } string playerName = info->getPlayer()->getName(); int result = server->isNameAbilivable(playerName); server->sendAproval(clientSocket, result); if (result != OK) { playerName = server->getAbilivableName(playerName); server->sendNewName(clientSocket, playerName); info->setName(playerName); info->getPlayer()->setName(playerName); } cont++; info->getPlayer()->setTeam(cont%2 +1); bool playing = true; cout << playerName << " has conected and joined team: " << info->getPlayer()->getTeam() <<endl; // Antes de agregarlo al juego creo el thread para chequear el estado en el que se encuentra. TimerThreadParameter param = {server,clientSocket,playerName, &playing}; pthread_t timerThread; server->addPlayerToGame(clientSocket, info); pthread_create(&timerThread,NULL,timerChecker,(void*)¶m); server->runMainLoop(clientSocket,playerName); pthread_cancel(timerThread); server->disconectPlayer(clientSocket,playerName); close(clientSocket); return NULL; }