Esempio n. 1
0
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;

}
Esempio n. 2
0
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]);
}
Esempio n. 3
0
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);
}