bool CLevel::net_start_client2 () { if(psNET_direct_connect) { Server->create_direct_client(); } connected_to_server = Connect2Server(*m_caClientOptions); return true; }
int initialize(int argc, char *argv[]) { tv.tv_sec = 2; tv.tv_usec = 500000; FD_ZERO(&list); // clear list FD_ZERO(&list_copy); // clear temporary sets FD_SET(STDIN, &list); // Add stdin fdmax = STDIN; // The biggest file descriptor yes = 1; ofnum = 0;//number of open files fdnum = 0;//number of file descriptors int cI; for(cI=0;cI<CLIENT_CACHE_LINES;cI++) { metacache[cI][0] = 0;//free metacache[cI][1] = -1;//TAG metacache[cI][2] = 0;//LRU metacache[cI][3] = -1;//OFi } srand (time(NULL));//randomize rand function int2str(rand() % (65536 - 1025) + 1025, myPORT, 10);//get a random port number for my pfs client memset(&hints, 0, sizeof(hints)); hints.ai_family = AF_UNSPEC; hints.ai_socktype = SOCK_STREAM; getownip(myIP); //inet_ntop(remoteaddr.ss_family, get_address((struct sockaddr*)&remoteaddr), myIP, INET6_ADDRSTRLEN); printf("My IP address and Port number are %s %s\n",myIP,myPORT); if(argc!=4){ fprintf(stderr,"Usage: pfs filename mmip mmport\n"); strcpy(mmIP, MMIP); strcpy(mmPORT, MMPORT); //exit(1); } else { strcpy(mmIP, argv[2]); strcpy(mmPORT, argv[3]); } //MM's IP&PORT mmFD = Connect2Server(mmIP, mmPORT);//Connect to Meta-data Manager (MM) FD_SET(mmFD, &list);//add to fd list fdmax = mmFD; // The biggest file descriptor char rpacket[BUFFER_SIZE] = ""; //Buffer for client data int size = MMR(rpacket, BUFFER_SIZE);//IMPORT 4 127.0.0.1 10001 127.0.0.1 10002 127.0.0.1 10003 127.0.0.1 10004 END. int fsnumI = findspace(rpacket,0,1);//File server number Index char packettype[6]; strncpy(packettype, rpacket, fsnumI-1); packettype[fsnum-1] = '\0'; if(!strcmp(packettype, "IMPORT")) { int firstI = findspace(rpacket,fsnumI,1);//First file server Index int nextI;// = findspace(packet,ffsI,1); //Next file server Index fsnum = str2int(rpacket+fsnumI,firstI-fsnumI-1);//number of file servers int i; for(i=0;i<fsnum;i++) { nextI = findspace(rpacket,firstI,1);//Port index strncpy(fs[i].ip, rpacket + firstI, nextI - firstI - 1); fs[i].ip[nextI - firstI - 1] = '\0'; firstI = findspace(rpacket,nextI,1);//IP index of next file server strncpy(fs[i].port, rpacket + nextI, firstI - nextI - 1); fs[i].port[firstI - nextI - 1] = '\0'; } for(i=0;i<fsnum;i++) { fs[i].fd = Connect2Server(fs[i].ip, fs[i].port);//Connect to FS FD_SET(fs[i].fd, &list);//add to fd list fdmax = fs[i].fd; // The biggest file descriptor size = recv(fs[i].fd, rpacket, sizeof(rpacket), 0); if (size == -1) perror("Error in receiving!"); rpacket[size] = '\0'; printf("Server: %s\n",rpacket);//IMPORT 4 127.0.0.1 10001 127.0.0.1 10002 127.0.0.1 10003 127.0.0.1 10004 END. } } else printf("No File Servers Imported!"); pthread_t harvesterThr, flusherThr; //Buffer Management Threads pthread_create(&harvesterThr, NULL, (void *) harvester, NULL); //??? debug it! pthread_create(&flusherThr, NULL, (void *) flusher, NULL); //pthread_join(harvesterThr, NULL);//every x-sec??? or when falls under threshold!??? //pthread_join(flusherThr, NULL);//every 30 seconds??? return 0; }