Lines Matching +full:- +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()
57 h = (seconds - (d*CURL_OFF_T_C(86400))) / CURL_OFF_T_C(3600); in time2str()
93 /* 10000 MB - 100 GB, we show it as XX.XG */ in max5data()
110 /* 16384 petabytes (16 exabytes) is the maximum a 64-bit unsigned number can in max5data()
121 pgrsStartNow() - sets start time
122 pgrsSetDownloadSize(x) - known expected download size
123 pgrsSetUploadSize(x) - known expected upload size
124 pgrsSetDownloadCounter() - amount of data currently downloaded
125 pgrsSetUploadCounter() - amount of data currently uploaded
126 pgrsUpdate() - show progress
127 pgrsDone() - transfer complete
134 data->progress.lastshow = 0; in Curl_pgrsDone()
139 if(!(data->progress.flags & PGRS_HIDE) && in Curl_pgrsDone()
140 !data->progress.callback) in Curl_pgrsDone()
141 /* only output if we do not use a progress callback and we are not in Curl_pgrsDone()
143 fprintf(data->set.err, "\n"); in Curl_pgrsDone()
145 data->progress.speeder_c = 0; /* reset the progress meter display */ in Curl_pgrsDone()
152 Curl_pgrsSetDownloadSize(data, -1); in Curl_pgrsResetTransferSizes()
153 Curl_pgrsSetUploadSize(data, -1); in Curl_pgrsResetTransferSizes()
172 data->progress.t_startop = timestamp; in Curl_pgrsTimeWas()
176 data->progress.t_startsingle = timestamp; in Curl_pgrsTimeWas()
177 data->progress.is_t_startransfer_set = FALSE; in Curl_pgrsTimeWas()
184 data->progress.t_postqueue = in Curl_pgrsTimeWas()
185 Curl_timediff_us(timestamp, data->progress.t_startop); in Curl_pgrsTimeWas()
188 data->progress.t_acceptdata = timestamp; in Curl_pgrsTimeWas()
191 delta = &data->progress.t_nslookup; in Curl_pgrsTimeWas()
194 delta = &data->progress.t_connect; in Curl_pgrsTimeWas()
197 delta = &data->progress.t_appconnect; in Curl_pgrsTimeWas()
200 delta = &data->progress.t_pretransfer; in Curl_pgrsTimeWas()
203 delta = &data->progress.t_starttransfer; in Curl_pgrsTimeWas()
210 if(data->progress.is_t_startransfer_set) { in Curl_pgrsTimeWas()
214 data->progress.is_t_startransfer_set = TRUE; in Curl_pgrsTimeWas()
218 delta = &data->progress.t_posttransfer; in Curl_pgrsTimeWas()
221 data->progress.t_redirect = Curl_timediff_us(timestamp, in Curl_pgrsTimeWas()
222 data->progress.start); in Curl_pgrsTimeWas()
226 timediff_t us = Curl_timediff_us(timestamp, data->progress.t_startsingle); in Curl_pgrsTimeWas()
250 data->progress.speeder_c = 0; /* reset the progress meter display */ in Curl_pgrsStartNow()
251 data->progress.start = Curl_now(); in Curl_pgrsStartNow()
252 data->progress.is_t_startransfer_set = FALSE; in Curl_pgrsStartNow()
253 data->progress.ul.limit.start = data->progress.start; in Curl_pgrsStartNow()
254 data->progress.dl.limit.start = data->progress.start; in Curl_pgrsStartNow()
255 data->progress.ul.limit.start_size = 0; in Curl_pgrsStartNow()
256 data->progress.dl.limit.start_size = 0; in Curl_pgrsStartNow()
257 data->progress.dl.cur_size = 0; in Curl_pgrsStartNow()
258 data->progress.ul.cur_size = 0; in Curl_pgrsStartNow()
260 data->progress.flags &= PGRS_HIDE|PGRS_HEADERS_OUT; in Curl_pgrsStartNow()
261 Curl_ratelimit(data, data->progress.start); in Curl_pgrsStartNow()
286 curl_off_t size = d->cur_size - d->limit.start_size; in Curl_pgrsLimitWaitTime()
311 actual = Curl_timediff_ceil(now, d->limit.start); in Curl_pgrsLimitWaitTime()
315 return (minimum - actual); in Curl_pgrsLimitWaitTime()
326 data->progress.dl.cur_size = size; in Curl_pgrsSetDownloadCounter()
336 if(data->set.max_recv_speed) { in Curl_ratelimit()
337 if(Curl_timediff(now, data->progress.dl.limit.start) >= in Curl_ratelimit()
339 data->progress.dl.limit.start = now; in Curl_ratelimit()
340 data->progress.dl.limit.start_size = data->progress.dl.cur_size; in Curl_ratelimit()
343 if(data->set.max_send_speed) { in Curl_ratelimit()
344 if(Curl_timediff(now, data->progress.ul.limit.start) >= in Curl_ratelimit()
346 data->progress.ul.limit.start = now; in Curl_ratelimit()
347 data->progress.ul.limit.start_size = data->progress.ul.cur_size; in Curl_ratelimit()
357 data->progress.ul.cur_size = size; in Curl_pgrsSetUploadCounter()
363 data->progress.dl.total_size = size; in Curl_pgrsSetDownloadSize()
364 data->progress.flags |= PGRS_DL_SIZE_KNOWN; in Curl_pgrsSetDownloadSize()
367 data->progress.dl.total_size = 0; in Curl_pgrsSetDownloadSize()
368 data->progress.flags &= ~PGRS_DL_SIZE_KNOWN; in Curl_pgrsSetDownloadSize()
375 data->progress.ul.total_size = size; in Curl_pgrsSetUploadSize()
376 data->progress.flags |= PGRS_UL_SIZE_KNOWN; in Curl_pgrsSetUploadSize()
379 data->progress.ul.total_size = 0; in Curl_pgrsSetUploadSize()
380 data->progress.flags &= ~PGRS_UL_SIZE_KNOWN; in Curl_pgrsSetUploadSize()
386 data->progress.earlydata_sent = sent; in Curl_pgrsEarlyData()
403 /* returns TRUE if it is time to show the progress meter */
407 struct Progress * const p = &data->progress; in progress_calc()
410 p->timespent = Curl_timediff_us(now, p->start); in progress_calc()
411 p->dl.speed = trspeed(p->dl.cur_size, p->timespent); in progress_calc()
412 p->ul.speed = trspeed(p->ul.cur_size, p->timespent); in progress_calc()
415 if(p->lastshow != now.tv_sec) { in progress_calc()
417 int nowindex = p->speeder_c% CURR_TIME; in progress_calc()
418 p->lastshow = now.tv_sec; in progress_calc()
423 p->speeder[ nowindex ] = p->dl.cur_size + p->ul.cur_size; in progress_calc()
426 p->speeder_time [ nowindex ] = now; in progress_calc()
430 p->speeder_c++; in progress_calc()
433 array. With N_ENTRIES filled in, we have about N_ENTRIES-1 seconds of in progress_calc()
436 countindex = ((p->speeder_c >= CURR_TIME) ? CURR_TIME : p->speeder_c) - 1; in progress_calc()
447 checkindex = (p->speeder_c >= CURR_TIME) ? p->speeder_c%CURR_TIME : 0; in progress_calc()
450 span_ms = Curl_timediff(now, p->speeder_time[checkindex]); in progress_calc()
455 amount = p->speeder[nowindex]- p->speeder[checkindex]; in progress_calc()
460 p->current_speed = (curl_off_t) in progress_calc()
465 p->current_speed = amount*CURL_OFF_T_C(1000)/span_ms; in progress_calc()
469 p->current_speed = p->ul.speed + p->dl.speed; in progress_calc()
495 est->secs = 0; in pgrs_estimates()
496 est->percent = 0; in pgrs_estimates()
497 if(total_known && (d->speed > CURL_OFF_T_C(0))) { in pgrs_estimates()
498 est->secs = d->total_size / d->speed; in pgrs_estimates()
499 est->percent = pgrs_est_percent(d->total_size, d->cur_size); in pgrs_estimates()
505 struct Progress *p = &data->progress; in progress_meter()
515 curl_off_t cur_secs = (curl_off_t)p->timespent/1000000; /* seconds */ in progress_meter()
517 if(!(p->flags & PGRS_HEADERS_OUT)) { in progress_meter()
518 if(data->state.resume_from) { in progress_meter()
519 fprintf(data->set.err, in progress_meter()
521 data->state.resume_from); in progress_meter()
523 fprintf(data->set.err, in progress_meter()
528 p->flags |= PGRS_HEADERS_OUT; /* headers are shown */ in progress_meter()
532 pgrs_estimates(&p->ul, (p->flags & PGRS_UL_SIZE_KNOWN), &ul_estm); in progress_meter()
533 pgrs_estimates(&p->dl, (p->flags & PGRS_DL_SIZE_KNOWN), &dl_estm); in progress_meter()
538 time2str(time_left, total_estm.secs > 0 ? (total_estm.secs - cur_secs) : 0); in progress_meter()
544 ((p->flags & PGRS_UL_SIZE_KNOWN) ? p->ul.total_size : p->ul.cur_size) + in progress_meter()
545 ((p->flags & PGRS_DL_SIZE_KNOWN) ? p->dl.total_size : p->dl.cur_size); in progress_meter()
548 total_cur_size = p->dl.cur_size + p->ul.cur_size; in progress_meter()
553 fprintf(data->set.err, in progress_meter()
561 max5data(p->dl.cur_size, max5[0]), /* rcvd size */ in progress_meter()
563 max5data(p->ul.cur_size, max5[1]), /* xfer size */ in progress_meter()
564 max5data(p->dl.speed, max5[3]), /* avrg dl speed */ in progress_meter()
565 max5data(p->ul.speed, max5[4]), /* avrg ul speed */ in progress_meter()
569 max5data(p->current_speed, max5[5]) in progress_meter()
573 fflush(data->set.err); in progress_meter()
576 /* progress bar disabled */
583 * progress callback!
587 if(!(data->progress.flags & PGRS_HIDE)) { in pgrsupdate()
588 if(data->set.fxferinfo) { in pgrsupdate()
592 result = data->set.fxferinfo(data->set.progress_client, in pgrsupdate()
593 data->progress.dl.total_size, in pgrsupdate()
594 data->progress.dl.cur_size, in pgrsupdate()
595 data->progress.ul.total_size, in pgrsupdate()
596 data->progress.ul.cur_size); in pgrsupdate()
604 else if(data->set.fprogress) { in pgrsupdate()
608 result = data->set.fprogress(data->set.progress_client, in pgrsupdate()
609 (double)data->progress.dl.total_size, in pgrsupdate()
610 (double)data->progress.dl.cur_size, in pgrsupdate()
611 (double)data->progress.ul.total_size, in pgrsupdate()
612 (double)data->progress.ul.cur_size); in pgrsupdate()
636 * Update all progress, do not do progress meter/callbacks.