• Home
  • Raw
  • Download

Lines Matching +full:- +full:- +full:no +full:- +full:transfer +full:- +full:progress

21  * SPDX-License-Identifier: curl
30 #include "progress.h"
44 strcpy(r, "--:--:--"); in time2str()
49 curl_off_t m = (seconds - (h*CURL_OFF_T_C(3600))) / CURL_OFF_T_C(60); in time2str()
50 curl_off_t s = (seconds - (h*CURL_OFF_T_C(3600))) - (m*CURL_OFF_T_C(60)); in time2str()
58 h = (seconds - (d*CURL_OFF_T_C(86400))) / CURL_OFF_T_C(3600); in time2str()
95 /* 10000 MB - 100 GB, we show it as XX.XG */ in max5data()
123 pgrsStartNow() - sets start time
124 pgrsSetDownloadSize(x) - known expected download size
125 pgrsSetUploadSize(x) - known expected upload size
126 pgrsSetDownloadCounter() - amount of data currently downloaded
127 pgrsSetUploadCounter() - amount of data currently uploaded
128 pgrsUpdate() - show progress
129 pgrsDone() - transfer complete
136 data->progress.lastshow = 0; in Curl_pgrsDone()
141 if(!(data->progress.flags & PGRS_HIDE) && in Curl_pgrsDone()
142 !data->progress.callback) in Curl_pgrsDone()
143 /* only output if we don't use a progress callback and we're not in Curl_pgrsDone()
145 fprintf(data->set.err, "\n"); in Curl_pgrsDone()
147 data->progress.speeder_c = 0; /* reset the progress meter display */ in Curl_pgrsDone()
151 /* reset the known transfer sizes */
154 Curl_pgrsSetDownloadSize(data, -1); in Curl_pgrsResetTransferSizes()
155 Curl_pgrsSetUploadSize(data, -1); in Curl_pgrsResetTransferSizes()
173 /* This is set at the start of a transfer */ in Curl_pgrsTimeWas()
174 data->progress.t_startop = timestamp; in Curl_pgrsTimeWas()
177 /* This is set at the start of each single transfer */ in Curl_pgrsTimeWas()
178 data->progress.t_startsingle = timestamp; in Curl_pgrsTimeWas()
179 data->progress.is_t_startransfer_set = false; in Curl_pgrsTimeWas()
182 /* Set when the transfer starts (after potentially having been brought in Curl_pgrsTimeWas()
186 data->progress.t_postqueue = in Curl_pgrsTimeWas()
187 Curl_timediff_us(timestamp, data->progress.t_startop); in Curl_pgrsTimeWas()
190 data->progress.t_acceptdata = timestamp; in Curl_pgrsTimeWas()
193 delta = &data->progress.t_nslookup; in Curl_pgrsTimeWas()
196 delta = &data->progress.t_connect; in Curl_pgrsTimeWas()
199 delta = &data->progress.t_appconnect; in Curl_pgrsTimeWas()
202 delta = &data->progress.t_pretransfer; in Curl_pgrsTimeWas()
205 delta = &data->progress.t_starttransfer; in Curl_pgrsTimeWas()
212 if(data->progress.is_t_startransfer_set) { in Curl_pgrsTimeWas()
216 data->progress.is_t_startransfer_set = true; in Curl_pgrsTimeWas()
220 /* this is the normal end-of-transfer thing */ in Curl_pgrsTimeWas()
223 data->progress.t_redirect = Curl_timediff_us(timestamp, in Curl_pgrsTimeWas()
224 data->progress.start); in Curl_pgrsTimeWas()
228 timediff_t us = Curl_timediff_us(timestamp, data->progress.t_startsingle); in Curl_pgrsTimeWas()
252 data->progress.speeder_c = 0; /* reset the progress meter display */ in Curl_pgrsStartNow()
253 data->progress.start = Curl_now(); in Curl_pgrsStartNow()
254 data->progress.is_t_startransfer_set = false; in Curl_pgrsStartNow()
255 data->progress.ul_limit_start = data->progress.start; in Curl_pgrsStartNow()
256 data->progress.dl_limit_start = data->progress.start; in Curl_pgrsStartNow()
257 data->progress.ul_limit_size = 0; in Curl_pgrsStartNow()
258 data->progress.dl_limit_size = 0; in Curl_pgrsStartNow()
259 data->progress.downloaded = 0; in Curl_pgrsStartNow()
260 data->progress.uploaded = 0; in Curl_pgrsStartNow()
262 data->progress.flags &= PGRS_HIDE|PGRS_HEADERS_OUT; in Curl_pgrsStartNow()
263 Curl_ratelimit(data, data->progress.start); in Curl_pgrsStartNow()
272 * the start of the transfer. This starting point is regularly moved as
273 * transfer goes on, to keep getting accurate values (instead of average over
274 * the entire transfer).
280 * Returns 0 if no waiting is needed or when no waiting is needed but the
290 curl_off_t size = cursize - startsize; in Curl_pgrsLimitWaitTime()
319 return (minimum - actual); in Curl_pgrsLimitWaitTime()
330 data->progress.downloaded = size; in Curl_pgrsSetDownloadCounter()
340 if(data->set.max_recv_speed) { in Curl_ratelimit()
341 if(Curl_timediff(now, data->progress.dl_limit_start) >= in Curl_ratelimit()
343 data->progress.dl_limit_start = now; in Curl_ratelimit()
344 data->progress.dl_limit_size = data->progress.downloaded; in Curl_ratelimit()
347 if(data->set.max_send_speed) { in Curl_ratelimit()
348 if(Curl_timediff(now, data->progress.ul_limit_start) >= in Curl_ratelimit()
350 data->progress.ul_limit_start = now; in Curl_ratelimit()
351 data->progress.ul_limit_size = data->progress.uploaded; in Curl_ratelimit()
361 data->progress.uploaded = size; in Curl_pgrsSetUploadCounter()
367 data->progress.size_dl = size; in Curl_pgrsSetDownloadSize()
368 data->progress.flags |= PGRS_DL_SIZE_KNOWN; in Curl_pgrsSetDownloadSize()
371 data->progress.size_dl = 0; in Curl_pgrsSetDownloadSize()
372 data->progress.flags &= ~PGRS_DL_SIZE_KNOWN; in Curl_pgrsSetDownloadSize()
379 data->progress.size_ul = size; in Curl_pgrsSetUploadSize()
380 data->progress.flags |= PGRS_UL_SIZE_KNOWN; in Curl_pgrsSetUploadSize()
383 data->progress.size_ul = 0; in Curl_pgrsSetUploadSize()
384 data->progress.flags &= ~PGRS_UL_SIZE_KNOWN; in Curl_pgrsSetUploadSize()
402 /* returns TRUE if it's time to show the progress meter */
406 struct Progress * const p = &data->progress; in progress_calc()
409 p->timespent = Curl_timediff_us(now, p->start); in progress_calc()
410 p->dlspeed = trspeed(p->downloaded, p->timespent); in progress_calc()
411 p->ulspeed = trspeed(p->uploaded, p->timespent); in progress_calc()
414 if(p->lastshow != now.tv_sec) { in progress_calc()
416 int nowindex = p->speeder_c% CURR_TIME; in progress_calc()
417 p->lastshow = now.tv_sec; in progress_calc()
422 p->speeder[ nowindex ] = p->downloaded + p->uploaded; in progress_calc()
425 p->speeder_time [ nowindex ] = now; in progress_calc()
429 p->speeder_c++; in progress_calc()
432 array. With N_ENTRIES filled in, we have about N_ENTRIES-1 seconds of in progress_calc()
433 transfer. Imagine, after one second we have filled in two entries, in progress_calc()
435 countindex = ((p->speeder_c >= CURR_TIME)? CURR_TIME:p->speeder_c) - 1; in progress_calc()
437 /* first of all, we don't do this if there's no counted seconds yet */ in progress_calc()
446 checkindex = (p->speeder_c >= CURR_TIME)? p->speeder_c%CURR_TIME:0; in progress_calc()
449 span_ms = Curl_timediff(now, p->speeder_time[checkindex]); in progress_calc()
454 amount = p->speeder[nowindex]- p->speeder[checkindex]; in progress_calc()
459 p->current_speed = (curl_off_t) in progress_calc()
464 p->current_speed = amount*CURL_OFF_T_C(1000)/span_ms; in progress_calc()
468 p->current_speed = p->ulspeed + p->dlspeed; in progress_calc()
490 (curl_off_t)data->progress.timespent/1000000; /* seconds */ in progress_meter()
492 if(!(data->progress.flags & PGRS_HEADERS_OUT)) { in progress_meter()
493 if(data->state.resume_from) { in progress_meter()
494 fprintf(data->set.err, in progress_meter()
495 "** Resuming transfer from byte position %" in progress_meter()
496 CURL_FORMAT_CURL_OFF_T "\n", data->state.resume_from); in progress_meter()
498 fprintf(data->set.err, in progress_meter()
503 data->progress.flags |= PGRS_HEADERS_OUT; /* headers are shown */ in progress_meter()
507 if((data->progress.flags & PGRS_UL_SIZE_KNOWN) && in progress_meter()
508 (data->progress.ulspeed > CURL_OFF_T_C(0))) { in progress_meter()
509 ulestimate = data->progress.size_ul / data->progress.ulspeed; in progress_meter()
511 if(data->progress.size_ul > CURL_OFF_T_C(10000)) in progress_meter()
512 ulpercen = data->progress.uploaded / in progress_meter()
513 (data->progress.size_ul/CURL_OFF_T_C(100)); in progress_meter()
514 else if(data->progress.size_ul > CURL_OFF_T_C(0)) in progress_meter()
515 ulpercen = (data->progress.uploaded*100) / in progress_meter()
516 data->progress.size_ul; in progress_meter()
520 if((data->progress.flags & PGRS_DL_SIZE_KNOWN) && in progress_meter()
521 (data->progress.dlspeed > CURL_OFF_T_C(0))) { in progress_meter()
522 dlestimate = data->progress.size_dl / data->progress.dlspeed; in progress_meter()
524 if(data->progress.size_dl > CURL_OFF_T_C(10000)) in progress_meter()
525 dlpercen = data->progress.downloaded / in progress_meter()
526 (data->progress.size_dl/CURL_OFF_T_C(100)); in progress_meter()
527 else if(data->progress.size_dl > CURL_OFF_T_C(0)) in progress_meter()
528 dlpercen = (data->progress.downloaded*100) / in progress_meter()
529 data->progress.size_dl; in progress_meter()
537 time2str(time_left, total_estimate > 0?(total_estimate - timespent):0); in progress_meter()
543 ((data->progress.flags & PGRS_UL_SIZE_KNOWN)? in progress_meter()
544 data->progress.size_ul:data->progress.uploaded)+ in progress_meter()
545 ((data->progress.flags & PGRS_DL_SIZE_KNOWN)? in progress_meter()
546 data->progress.size_dl:data->progress.downloaded); in progress_meter()
549 total_transfer = data->progress.downloaded + data->progress.uploaded; in progress_meter()
558 fprintf(data->set.err, in progress_meter()
566 max5data(data->progress.downloaded, max5[0]), /* rcvd size */ in progress_meter()
568 max5data(data->progress.uploaded, max5[1]), /* xfer size */ in progress_meter()
569 max5data(data->progress.dlspeed, max5[3]), /* avrg dl speed */ in progress_meter()
570 max5data(data->progress.ulspeed, max5[4]), /* avrg ul speed */ in progress_meter()
574 max5data(data->progress.current_speed, max5[5]) in progress_meter()
578 fflush(data->set.err); in progress_meter()
581 /* progress bar disabled */
588 * progress callback!
594 if(!(data->progress.flags & PGRS_HIDE)) { in Curl_pgrsUpdate()
595 if(data->set.fxferinfo) { in Curl_pgrsUpdate()
599 result = data->set.fxferinfo(data->set.progress_client, in Curl_pgrsUpdate()
600 data->progress.size_dl, in Curl_pgrsUpdate()
601 data->progress.downloaded, in Curl_pgrsUpdate()
602 data->progress.size_ul, in Curl_pgrsUpdate()
603 data->progress.uploaded); in Curl_pgrsUpdate()
611 else if(data->set.fprogress) { in Curl_pgrsUpdate()
615 result = data->set.fprogress(data->set.progress_client, in Curl_pgrsUpdate()
616 (double)data->progress.size_dl, in Curl_pgrsUpdate()
617 (double)data->progress.downloaded, in Curl_pgrsUpdate()
618 (double)data->progress.size_ul, in Curl_pgrsUpdate()
619 (double)data->progress.uploaded); in Curl_pgrsUpdate()