#include "mcast.h"
#define CHUNKSIZE 1500
+#define GTOD_INTERVAL 100
void record(int(*open_fn)(char *), char *url, char *outfile, int duration)
{
struct timeval start, curr;
- int bytes, written;
+ int bytes, written, count = 0;
char buffer[CHUNKSIZE];
int i;
int in, out;
printf("Recording from %s for %d seconds...\n", url, duration);
gettimeofday(&start, NULL);
+ curr = start;
do {
if ((bytes = recv(in, buffer, CHUNKSIZE, 0)) < 1) {
/* TODO: Insert better connection-loss recovery here */
- if ((in = (*open_fn)(url)) < 0)
+ if ((in = (*open_fn)(url)) < 0) {
sleep(1);
+ continue;
+ }
}
written = 0;
do {
written += i;
} while(written < bytes);
- gettimeofday(&curr, NULL);
+ count++;
+
+ if (!(count % GTOD_INTERVAL))
+ gettimeofday(&curr, NULL);
} while (curr.tv_sec < start.tv_sec+duration);
close(out);
if (argc == 4) {
url = argv[1];
- duration = atol(argv[2])*60;
+ duration = atoi(argv[2])*60;
outfile = argv[3];
} else {
fprintf(stderr,"Syntax: %s URL duration_in_minutes outfile\n", argv[0]);