Lines Matching +full:- +full:- +full:progress
8 * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
28 #include "progress.h"
42 strcpy(r, "--:--:--"); in time2str()
47 curl_off_t m = (seconds - (h*CURL_OFF_T_C(3600))) / CURL_OFF_T_C(60); in time2str()
48 curl_off_t s = (seconds - (h*CURL_OFF_T_C(3600))) - (m*CURL_OFF_T_C(60)); in time2str()
56 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()
130 pgrsStartNow() - sets start time
131 pgrsSetDownloadSize(x) - known expected download size
132 pgrsSetUploadSize(x) - known expected upload size
133 pgrsSetDownloadCounter() - amount of data currently downloaded
134 pgrsSetUploadCounter() - amount of data currently uploaded
135 pgrsUpdate() - show progress
136 pgrsDone() - transfer complete
143 data->progress.lastshow = 0; in Curl_pgrsDone()
148 if(!(data->progress.flags & PGRS_HIDE) && in Curl_pgrsDone()
149 !data->progress.callback) in Curl_pgrsDone()
150 /* only output if we don't use a progress callback and we're not in Curl_pgrsDone()
152 fprintf(data->set.err, "\n"); in Curl_pgrsDone()
154 data->progress.speeder_c = 0; /* reset the progress meter display */ in Curl_pgrsDone()
161 Curl_pgrsSetDownloadSize(data, -1); in Curl_pgrsResetTransferSizes()
162 Curl_pgrsSetUploadSize(data, -1); in Curl_pgrsResetTransferSizes()
184 data->progress.t_startop = now; in Curl_pgrsTime()
188 data->progress.t_startsingle = now; in Curl_pgrsTime()
189 data->progress.is_t_startransfer_set = false; in Curl_pgrsTime()
192 data->progress.t_acceptdata = now; in Curl_pgrsTime()
195 delta = &data->progress.t_nslookup; in Curl_pgrsTime()
198 delta = &data->progress.t_connect; in Curl_pgrsTime()
201 delta = &data->progress.t_appconnect; in Curl_pgrsTime()
204 delta = &data->progress.t_pretransfer; in Curl_pgrsTime()
207 delta = &data->progress.t_starttransfer; in Curl_pgrsTime()
214 if(data->progress.is_t_startransfer_set) { in Curl_pgrsTime()
218 data->progress.is_t_startransfer_set = true; in Curl_pgrsTime()
222 /* this is the normal end-of-transfer thing */ in Curl_pgrsTime()
225 data->progress.t_redirect = Curl_timediff_us(now, data->progress.start); in Curl_pgrsTime()
229 timediff_t us = Curl_timediff_us(now, data->progress.t_startsingle); in Curl_pgrsTime()
239 data->progress.speeder_c = 0; /* reset the progress meter display */ in Curl_pgrsStartNow()
240 data->progress.start = Curl_now(); in Curl_pgrsStartNow()
241 data->progress.is_t_startransfer_set = false; in Curl_pgrsStartNow()
242 data->progress.ul_limit_start = data->progress.start; in Curl_pgrsStartNow()
243 data->progress.dl_limit_start = data->progress.start; in Curl_pgrsStartNow()
244 data->progress.ul_limit_size = 0; in Curl_pgrsStartNow()
245 data->progress.dl_limit_size = 0; in Curl_pgrsStartNow()
246 data->progress.downloaded = 0; in Curl_pgrsStartNow()
247 data->progress.uploaded = 0; in Curl_pgrsStartNow()
249 data->progress.flags &= PGRS_HIDE|PGRS_HEADERS_OUT; in Curl_pgrsStartNow()
250 Curl_ratelimit(data, data->progress.start); in Curl_pgrsStartNow()
277 curl_off_t size = cursize - startsize; in Curl_pgrsLimitWaitTime()
306 return (minimum - actual); in Curl_pgrsLimitWaitTime()
317 data->progress.downloaded = size; in Curl_pgrsSetDownloadCounter()
326 if(data->set.max_recv_speed) { in Curl_ratelimit()
327 if(Curl_timediff(now, data->progress.dl_limit_start) >= in Curl_ratelimit()
329 data->progress.dl_limit_start = now; in Curl_ratelimit()
330 data->progress.dl_limit_size = data->progress.downloaded; in Curl_ratelimit()
333 if(data->set.max_send_speed) { in Curl_ratelimit()
334 if(Curl_timediff(now, data->progress.ul_limit_start) >= in Curl_ratelimit()
336 data->progress.ul_limit_start = now; in Curl_ratelimit()
337 data->progress.ul_limit_size = data->progress.uploaded; in Curl_ratelimit()
347 data->progress.uploaded = size; in Curl_pgrsSetUploadCounter()
353 data->progress.size_dl = size; in Curl_pgrsSetDownloadSize()
354 data->progress.flags |= PGRS_DL_SIZE_KNOWN; in Curl_pgrsSetDownloadSize()
357 data->progress.size_dl = 0; in Curl_pgrsSetDownloadSize()
358 data->progress.flags &= ~PGRS_DL_SIZE_KNOWN; in Curl_pgrsSetDownloadSize()
365 data->progress.size_ul = size; in Curl_pgrsSetUploadSize()
366 data->progress.flags |= PGRS_UL_SIZE_KNOWN; in Curl_pgrsSetUploadSize()
369 data->progress.size_ul = 0; in Curl_pgrsSetUploadSize()
370 data->progress.flags &= ~PGRS_UL_SIZE_KNOWN; in Curl_pgrsSetUploadSize()
388 /* returns TRUE if it's time to show the progress meter */
392 struct Progress * const p = &data->progress; in progress_calc()
395 p->timespent = Curl_timediff_us(now, p->start); in progress_calc()
396 p->dlspeed = trspeed(p->downloaded, p->timespent); in progress_calc()
397 p->ulspeed = trspeed(p->uploaded, p->timespent); in progress_calc()
400 if(p->lastshow != now.tv_sec) { in progress_calc()
402 int nowindex = p->speeder_c% CURR_TIME; in progress_calc()
403 p->lastshow = now.tv_sec; in progress_calc()
408 p->speeder[ nowindex ] = p->downloaded + p->uploaded; in progress_calc()
411 p->speeder_time [ nowindex ] = now; in progress_calc()
415 p->speeder_c++; in progress_calc()
418 array. With N_ENTRIES filled in, we have about N_ENTRIES-1 seconds of in progress_calc()
421 countindex = ((p->speeder_c >= CURR_TIME)? CURR_TIME:p->speeder_c) - 1; in progress_calc()
432 checkindex = (p->speeder_c >= CURR_TIME)? p->speeder_c%CURR_TIME:0; in progress_calc()
435 span_ms = Curl_timediff(now, p->speeder_time[checkindex]); in progress_calc()
440 amount = p->speeder[nowindex]- p->speeder[checkindex]; in progress_calc()
445 p->current_speed = (curl_off_t) in progress_calc()
450 p->current_speed = amount*CURL_OFF_T_C(1000)/span_ms; in progress_calc()
454 p->current_speed = p->ulspeed + p->dlspeed; in progress_calc()
476 (curl_off_t)data->progress.timespent/1000000; /* seconds */ in progress_meter()
478 if(!(data->progress.flags & PGRS_HEADERS_OUT)) { in progress_meter()
479 if(data->state.resume_from) { in progress_meter()
480 fprintf(data->set.err, in progress_meter()
482 CURL_FORMAT_CURL_OFF_T "\n", data->state.resume_from); in progress_meter()
484 fprintf(data->set.err, in progress_meter()
489 data->progress.flags |= PGRS_HEADERS_OUT; /* headers are shown */ in progress_meter()
493 if((data->progress.flags & PGRS_UL_SIZE_KNOWN) && in progress_meter()
494 (data->progress.ulspeed > CURL_OFF_T_C(0))) { in progress_meter()
495 ulestimate = data->progress.size_ul / data->progress.ulspeed; in progress_meter()
497 if(data->progress.size_ul > CURL_OFF_T_C(10000)) in progress_meter()
498 ulpercen = data->progress.uploaded / in progress_meter()
499 (data->progress.size_ul/CURL_OFF_T_C(100)); in progress_meter()
500 else if(data->progress.size_ul > CURL_OFF_T_C(0)) in progress_meter()
501 ulpercen = (data->progress.uploaded*100) / in progress_meter()
502 data->progress.size_ul; in progress_meter()
506 if((data->progress.flags & PGRS_DL_SIZE_KNOWN) && in progress_meter()
507 (data->progress.dlspeed > CURL_OFF_T_C(0))) { in progress_meter()
508 dlestimate = data->progress.size_dl / data->progress.dlspeed; in progress_meter()
510 if(data->progress.size_dl > CURL_OFF_T_C(10000)) in progress_meter()
511 dlpercen = data->progress.downloaded / in progress_meter()
512 (data->progress.size_dl/CURL_OFF_T_C(100)); in progress_meter()
513 else if(data->progress.size_dl > CURL_OFF_T_C(0)) in progress_meter()
514 dlpercen = (data->progress.downloaded*100) / in progress_meter()
515 data->progress.size_dl; in progress_meter()
523 time2str(time_left, total_estimate > 0?(total_estimate - timespent):0); in progress_meter()
529 ((data->progress.flags & PGRS_UL_SIZE_KNOWN)? in progress_meter()
530 data->progress.size_ul:data->progress.uploaded)+ in progress_meter()
531 ((data->progress.flags & PGRS_DL_SIZE_KNOWN)? in progress_meter()
532 data->progress.size_dl:data->progress.downloaded); in progress_meter()
535 total_transfer = data->progress.downloaded + data->progress.uploaded; in progress_meter()
544 fprintf(data->set.err, in progress_meter()
552 max5data(data->progress.downloaded, max5[0]), /* rcvd size */ in progress_meter()
554 max5data(data->progress.uploaded, max5[1]), /* xfer size */ in progress_meter()
555 max5data(data->progress.dlspeed, max5[3]), /* avrg dl speed */ in progress_meter()
556 max5data(data->progress.ulspeed, max5[4]), /* avrg ul speed */ in progress_meter()
560 max5data(data->progress.current_speed, max5[5]) in progress_meter()
564 fflush(data->set.err); in progress_meter()
567 /* progress bar disabled */
574 * progress callback!
580 if(!(data->progress.flags & PGRS_HIDE)) { in Curl_pgrsUpdate()
581 if(data->set.fxferinfo) { in Curl_pgrsUpdate()
585 result = data->set.fxferinfo(data->set.progress_client, in Curl_pgrsUpdate()
586 data->progress.size_dl, in Curl_pgrsUpdate()
587 data->progress.downloaded, in Curl_pgrsUpdate()
588 data->progress.size_ul, in Curl_pgrsUpdate()
589 data->progress.uploaded); in Curl_pgrsUpdate()
597 else if(data->set.fprogress) { in Curl_pgrsUpdate()
601 result = data->set.fprogress(data->set.progress_client, in Curl_pgrsUpdate()
602 (double)data->progress.size_dl, in Curl_pgrsUpdate()
603 (double)data->progress.downloaded, in Curl_pgrsUpdate()
604 (double)data->progress.size_ul, in Curl_pgrsUpdate()
605 (double)data->progress.uploaded); in Curl_pgrsUpdate()