Пример #1
0
int
main(int argc, char *argv[])
{
	int i;
	sfv_list_t *s;
	srand(gethrtime());
	sendfilev_init(argv[1]);
	sendfilev_init(argv[1]);

	s = find_sfv_list(argv[1]);
	assert(s);
	for (i = 0; i < 10; i++)
		select_file(s);
	return (0);

}
Пример #2
0
ssize_t
do_sendfile(int sock, char *dir, int chunk_size)
{
#if defined(UPERF_FREEBSD) || defined(UPERF_DARWIN)
	off_t len;
#endif
	off_t off = 0;
	sfv_list_t *s;

	s = find_sfv_list(dir);
	assert(s);

	int r = select_file(s);
	if (chunk_size == 0) {
#if defined(UPERF_FREEBSD) || defined(UPERF_DARWIN)
#if defined(UPERF_FREEBSD)
		len = 0;
		if (sendfile(s->flist[r].fd, sock, off, s->flist[r].size, NULL, &len, 0) < 0) {
#else
		len = s->flist[r].size;
		if (sendfile(s->flist[r].fd, sock, off, &len, NULL, 0) < 0) {
#endif
			return (-1);
		} else {
			return (len);
		}
#else
		return (sendfile(sock, s->flist[r].fd, &off, s->flist[r].size));
#endif
	} else {
#if defined(UPERF_FREEBSD) || defined(UPERF_DARWIN)
		while (off < s->flist[r].size) {
#if defined(UPERF_FREEBSD)
			len = 0;
			if (sendfile(s->flist[r].fd, sock, off, chunk_size, NULL, &len, 0) < 0) {
#else
			len = chunk_size;
			if (sendfile(s->flist[r].fd, sock, off, &len, NULL, 0) < 0) {
#endif
				return (-1);
			}
			off += len;
		}
#else
		while (off < s->flist[r].size) {
			if (sendfile(sock, s->flist[r].fd, &off, chunk_size) < 0) {
				return (-1);
			}
		}
#endif
		return (s->flist[r].size);
	}
}

#ifdef MAIN
int
main(int argc, char *argv[])
{
	int i;
	sfv_list_t *s;
	srand(gethrtime());
	sendfilev_init(argv[1]);
	sendfilev_init(argv[1]);

	s = find_sfv_list(argv[1]);
	assert(s);
	for (i = 0; i < 10; i++)
		select_file(s);
	return (0);

}