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); }
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); }