Mercurial > gftp.yaz
diff lib/protocols.c @ 220:6de9a8280aa4
2003-7-10 Brian Masney <masneyb@gftp.org>
* lib/misc.c (insert_commas) - improved calculating # of digits
in number. (Not sure if this worked properly for long long's, aka
off_t when _LARGEFILE_SOURCE is defined)
* src/gtk/transfer.c (update_file_status) - changed type of remaining
field to be off_t. (hopefully fixes >2.1GB problem)
* lib/protocols.c (gftp_calc_kbs) - improved throttling module.
author | masneyb |
---|---|
date | Fri, 11 Jul 2003 01:48:08 +0000 |
parents | de6a2e8e51cb |
children | 007145d7d975 |
line wrap: on
line diff
--- a/lib/protocols.c Wed Jul 09 23:25:57 2003 +0000 +++ b/lib/protocols.c Fri Jul 11 01:48:08 2003 +0000 @@ -2299,46 +2299,39 @@ gftp_calc_kbs (gftp_transfer * tdata, ssize_t num_read) { unsigned long waitusecs; - double difftime, curkbs; + double start_difftime; gftp_file * tempfle; - unsigned long toadd; struct timeval tv; float maxkbs; gftp_lookup_request_option (tdata->fromreq, "maxkbs", &maxkbs); - gettimeofday (&tv, NULL); if (g_thread_supported ()) g_static_mutex_lock (&tdata->statmutex); + gettimeofday (&tv, NULL); + tempfle = tdata->curfle->data; tdata->trans_bytes += num_read; tdata->curtrans += num_read; tdata->stalled = 0; - difftime = (tv.tv_sec - tdata->starttime.tv_sec) + ((double) (tv.tv_usec - tdata->starttime.tv_usec) / 1000000.0); - if (difftime <= 0) - tdata->kbs = (double) tdata->trans_bytes / 1024.0; + start_difftime = (tv.tv_sec - tdata->starttime.tv_sec) + ((double) (tv.tv_usec - tdata->starttime.tv_usec) / 1000000.0); + + if (start_difftime <= 0) + tdata->kbs = tdata->trans_bytes / 1024.0; else - tdata->kbs = (double) tdata->trans_bytes / 1024.0 / difftime; - - difftime = (tv.tv_sec - tdata->lasttime.tv_sec) + ((double) (tv.tv_usec - tdata->lasttime.tv_usec) / 1000000.0); - - if (difftime <= 0) - curkbs = (double) (num_read / 1024.0); - else - curkbs = (double) (num_read / 1024.0 / difftime); - - if (maxkbs > 0 && curkbs > maxkbs) + tdata->kbs = tdata->trans_bytes / 1024.0 / start_difftime; + + if (maxkbs > 0 && tdata->kbs > maxkbs) { - waitusecs = (double) num_read / 1024.0 / maxkbs * 1000000.0 - difftime; + waitusecs = num_read / 1024.0 / maxkbs * 1000000.0 - start_difftime; if (waitusecs > 0) { if (g_thread_supported ()) g_static_mutex_unlock (&tdata->statmutex); - difftime += ((double) waitusecs / 1000000.0); usleep (waitusecs); if (g_thread_supported ()) @@ -2346,13 +2339,7 @@ } } - /* I don't call gettimeofday (&tdata->lasttime) here because this will use - less system resources. This will be close enough for what we need */ - difftime += tdata->lasttime.tv_usec / 1000000.0; - toadd = (long) difftime; - difftime -= toadd; - tdata->lasttime.tv_sec += toadd; - tdata->lasttime.tv_usec = difftime * 1000000.0; + gettimeofday (&tdata->lasttime, NULL); if (g_thread_supported ()) g_static_mutex_unlock (&tdata->statmutex);