int announceTreatment(int sock, struct commandLine *clone, char *addri) { int i; char *peer = malloc(strlen(addri)+8); sprintf(peer,"%s",addri); sprintf(peer+strlen(addri),":%d",clone->port); printf("peer %s\n",peer); struct fileData *fileData; //ajout des fichiers a la base for(i=0;i<clone->filesNumber;i++) { fileData = initFileData(); fileData->key = strdup(clone->keys[i]); fileData->peers = addToCharList(peer,fileData->peers); fileData->names = addToCharList(clone->fileNames[i],fileData->names); fileData->size = clone->lengths[i]; fileData->pieceSize = clone->pieceSize[i]; addFileData(fileData); free(fileData); } //on repond au client char *answer = "ok\n"; if(send(sock,answer,strlen(answer)+1,0)<0) { perror("send in announce response"); exit(errno); } debugDataBase(); return 1; }
void FilePoller::addFileToTrack( const std::string& fileName, Cob yCob, Cob nCob, Condition condition) { if (ThreadProtector::inPollerThread()) { LOG(ERROR) << "Adding files from a callback is disallowd"; return; } std::lock_guard<std::mutex> lg(filesMutex_); fileDatum_[fileName] = FileData(yCob, nCob, condition); initFileData(fileName, fileDatum_[fileName]); }
int main(int argc, char** argv) { printf("Server is running...\n"); init(); initFileData(); //Definition des variables pour ouvrir les connections. int sdServerAccept; //Initialisation de la socket d'ecoute du server. sdServerAccept = initListeningSocket(); //Accepte les connections entrante et laisse la gestion à un nouveau thread. while (1) { acceptClient(sdServerAccept); } return (EXIT_SUCCESS); }