コード例 #1
0
ファイル: dump-tables.c プロジェクト: atulyadavtech/kernel
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);
}
コード例 #2
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);
}
コード例 #3
0
ファイル: server.c プロジェクト: FreestyleTechnology/stacki
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);
}