int main() { uint16_t num_trackers; in_addr_t trackers[MAX_TRACKERS]; uint16_t maxpeers; uint16_t num_pkg_servers; in_addr_t pkg_servers[MAX_PKG_SERVERS]; int i; int sockfd; char trackers_url[256]; char pkg_servers_url[256]; sprintf(trackers_url,"127.0.0.1"); sprintf(pkg_servers_url,"127.0.0.1"); fprintf(stderr, "main:trackers_url (%s)\n", trackers_url); fprintf(stderr, "main:pkg_servers_url (%s)\n", pkg_servers_url); if (init(&num_trackers, trackers_url, trackers, &maxpeers, pkg_servers_url, &num_pkg_servers, pkg_servers) != 0) { fprintf(stderr, "main:init failed\n"); return(-1); } if ((sockfd = init_tracker_comm(0)) < 0) { fprintf(stderr, "main:init_tracker_comm failed\n"); return(-1); } for (i = 0 ; i < num_trackers; ++i) { send_msg(sockfd, &trackers[i], DUMP_TABLES); } return(0); }
int main() { CURL *curlhandle; CURLcode curlcode; uint16_t num_trackers; in_addr_t trackers[MAX_TRACKERS]; uint16_t maxpeers; uint16_t num_pkg_servers; in_addr_t pkg_servers[MAX_PKG_SERVERS]; FILE *file; int sockfd; char trackers_url[PATH_MAX]; char pkg_servers_url[PATH_MAX]; char buf[PATH_MAX]; if ((sockfd = init_tracker_comm(0)) < 0) { logmsg("main:init_tracker_comm failed\n"); return(-1); } /* * get the IP addresses of the tracker(s) and package server(s) */ if ((file = fopen("/tmp/stack.conf", "r")) == NULL) { fprintf(stderr, "main:fopen\n"); return(-1); } fgets(buf, sizeof(buf), file); sscanf(buf, "var.trackers = \"%[^\"]", trackers_url); fgets(buf, sizeof(buf), file); sscanf(buf, "var.pkgservers = \"%[^\"]", pkg_servers_url); fclose(file); fprintf(stderr, "main:trackers_url (%s)\n", trackers_url); fprintf(stderr, "main:pkg_servers_url (%s)\n", pkg_servers_url); if (init(&num_trackers, trackers_url, trackers, &maxpeers, pkg_servers_url, &num_pkg_servers, pkg_servers) != 0) { fprintf(stderr, "main:init failed\n"); return(-1); } /* * initialize curl */ if ((curlhandle = curl_easy_init()) == NULL) { logmsg("main:curl_easy_init failed\n"); return(-1); } if ((curlcode = curl_easy_setopt(curlhandle, CURLOPT_PORT, DOWNLOAD_PORT)) != CURLE_OK) { logmsg("main:curl_easy_setopt(PORT):failed:(%d)\n", curlcode); return(-1); } if ((curlcode = curl_easy_setopt(curlhandle, CURLOPT_HEADERFUNCTION, doheaders)) != CURLE_OK) { logmsg("main:curl_easy_setopt():failed:(%d)\n", curlcode); return(-1); } if ((curlcode = curl_easy_setopt(curlhandle, CURLOPT_WRITEFUNCTION, dobody)) != CURLE_OK) { logmsg("main:curl_easy_setopt():failed:(%d)\n", curlcode); return(-1); } /* * set a 2 second timeout in order to connect to the remote web server */ if ((curlcode = curl_easy_setopt(curlhandle, CURLOPT_CONNECTTIMEOUT, 2)) != CURLE_OK) { logmsg("main:curl_easy_setopt():failed:(%d)\n", curlcode); return(-1); } #ifdef DEBUG curl_easy_setopt(curlhandle, CURLOPT_VERBOSE, 1); #endif #ifdef FASTCGI while(FCGI_Accept() >= 0) { #endif doit(sockfd, num_trackers, trackers, maxpeers, num_pkg_servers, pkg_servers, curlhandle); #ifdef FASTCGI } #endif return(0); }
int main() { struct sockaddr_in from_addr; socklen_t from_addr_len; ssize_t recvbytes; int sockfd; char buf[64*1024]; char done; #ifdef TIMEIT #endif struct timeval start_time, end_time; unsigned long long s, e; if ((sockfd = init_tracker_comm(TRACKER_PORT)) < 0) { fprintf(stderr, "main:init_tracker_comm:failed\n"); abort(); } if (init_hash_table(HASH_TABLE_ENTRIES) != 0) { fprintf(stderr, "main:init_hash_table:failed\n"); abort(); } #ifdef DEBUG fprintf(stderr, "main:starting\n"); #endif /* * needed for shuffle() */ srand(time(NULL)); done = 0; while (!done) { from_addr_len = sizeof(from_addr); recvbytes = tracker_recv(sockfd, buf, sizeof(buf), (struct sockaddr *)&from_addr, &from_addr_len, NULL); if (recvbytes > 0) { tracker_header_t *p; p = (tracker_header_t *)buf; gettimeofday(&start_time, NULL); #ifdef TIMEIT #endif fprintf(stderr, "%lld : main:op %d from %s seqno %d\n", (long long int)start_time.tv_sec, p->op, inet_ntoa(from_addr.sin_addr), p->seqno); #ifdef DEBUG #endif switch(p->op) { case LOOKUP: { tracker_lookup_req_t *req; req = (tracker_lookup_req_t *)buf; dolookup(sockfd, req->hash, req->header.seqno, &from_addr); } break; case REGISTER: register_hash(buf, &from_addr); break; case UNREGISTER: unregister_hash(buf, &from_addr); break; case PEER_DONE: unregister_all(buf, &from_addr); break; case STOP_SERVER: fprintf(stderr, "Received 'STOP_SERVER' from (%s)\n", inet_ntoa(from_addr.sin_addr)); exit(0); default: fprintf(stderr, "Unknown op (%d)\n", p->op); abort(); break; } gettimeofday(&end_time, NULL); s = (start_time.tv_sec * 1000000) + start_time.tv_usec; e = (end_time.tv_sec * 1000000) + end_time.tv_usec; fprintf(stderr, "main:svc time: %lld\n", (e - s)); #ifdef TIMEIT #endif #ifdef LATER verify_hash_table(); #endif } } return(0); }