Lines Matching refs:data
67 /* The point of this function would be to return a string of the input data,
113 hold, but our data type is signed so 8192PB will be the maximum. */
126 pgrsSetDownloadCounter() - amount of data currently downloaded
127 pgrsSetUploadCounter() - amount of data currently uploaded
133 int Curl_pgrsDone(struct Curl_easy *data)
136 data->progress.lastshow = 0;
137 rc = Curl_pgrsUpdate(data); /* the final (forced) update */
141 if(!(data->progress.flags & PGRS_HIDE) &&
142 !data->progress.callback)
145 fprintf(data->set.err, "\n");
147 data->progress.speeder_c = 0; /* reset the progress meter display */
152 void Curl_pgrsResetTransferSizes(struct Curl_easy *data)
154 Curl_pgrsSetDownloadSize(data, -1);
155 Curl_pgrsSetUploadSize(data, -1);
162 void Curl_pgrsTimeWas(struct Curl_easy *data, timerid timer,
174 data->progress.t_startop = timestamp;
178 data->progress.t_startsingle = timestamp;
179 data->progress.is_t_startransfer_set = false;
186 data->progress.t_postqueue =
187 Curl_timediff_us(timestamp, data->progress.t_startop);
190 data->progress.t_acceptdata = timestamp;
193 delta = &data->progress.t_nslookup;
196 delta = &data->progress.t_connect;
199 delta = &data->progress.t_appconnect;
202 delta = &data->progress.t_pretransfer;
205 delta = &data->progress.t_starttransfer;
212 if(data->progress.is_t_startransfer_set) {
216 data->progress.is_t_startransfer_set = true;
223 data->progress.t_redirect = Curl_timediff_us(timestamp,
224 data->progress.start);
228 timediff_t us = Curl_timediff_us(timestamp, data->progress.t_startsingle);
242 struct curltime Curl_pgrsTime(struct Curl_easy *data, timerid timer)
246 Curl_pgrsTimeWas(data, timer, now);
250 void Curl_pgrsStartNow(struct Curl_easy *data)
252 data->progress.speeder_c = 0; /* reset the progress meter display */
253 data->progress.start = Curl_now();
254 data->progress.is_t_startransfer_set = false;
255 data->progress.ul_limit_start = data->progress.start;
256 data->progress.dl_limit_start = data->progress.start;
257 data->progress.ul_limit_size = 0;
258 data->progress.dl_limit_size = 0;
259 data->progress.downloaded = 0;
260 data->progress.uploaded = 0;
262 data->progress.flags &= PGRS_HIDE|PGRS_HEADERS_OUT;
263 Curl_ratelimit(data, data->progress.start);
270 * The way it works is by having a "starting point" (time & amount of data
276 * This function takes the current amount of data transferred, the amount at
317 /* if it downloaded the data faster than the limit, make it wait the
328 CURLcode Curl_pgrsSetDownloadCounter(struct Curl_easy *data, curl_off_t size)
330 data->progress.downloaded = size;
337 void Curl_ratelimit(struct Curl_easy *data, struct curltime now)
340 if(data->set.max_recv_speed) {
341 if(Curl_timediff(now, data->progress.dl_limit_start) >=
343 data->progress.dl_limit_start = now;
344 data->progress.dl_limit_size = data->progress.downloaded;
347 if(data->set.max_send_speed) {
348 if(Curl_timediff(now, data->progress.ul_limit_start) >=
350 data->progress.ul_limit_start = now;
351 data->progress.ul_limit_size = data->progress.uploaded;
359 void Curl_pgrsSetUploadCounter(struct Curl_easy *data, curl_off_t size)
361 data->progress.uploaded = size;
364 void Curl_pgrsSetDownloadSize(struct Curl_easy *data, curl_off_t size)
367 data->progress.size_dl = size;
368 data->progress.flags |= PGRS_DL_SIZE_KNOWN;
371 data->progress.size_dl = 0;
372 data->progress.flags &= ~PGRS_DL_SIZE_KNOWN;
376 void Curl_pgrsSetUploadSize(struct Curl_easy *data, curl_off_t size)
379 data->progress.size_ul = size;
380 data->progress.flags |= PGRS_UL_SIZE_KNOWN;
383 data->progress.size_ul = 0;
384 data->progress.flags &= ~PGRS_UL_SIZE_KNOWN;
403 static bool progress_calc(struct Curl_easy *data, struct curltime now)
406 struct Progress * const p = &data->progress;
431 /* figure out how many index entries of data we have stored in our speeder
475 static void progress_meter(struct Curl_easy *data)
490 (curl_off_t)data->progress.timespent/1000000; /* seconds */
492 if(!(data->progress.flags & PGRS_HEADERS_OUT)) {
493 if(data->state.resume_from) {
494 fprintf(data->set.err,
496 CURL_FORMAT_CURL_OFF_T "\n", data->state.resume_from);
498 fprintf(data->set.err,
503 data->progress.flags |= PGRS_HEADERS_OUT; /* headers are shown */
507 if((data->progress.flags & PGRS_UL_SIZE_KNOWN) &&
508 (data->progress.ulspeed > CURL_OFF_T_C(0))) {
509 ulestimate = data->progress.size_ul / data->progress.ulspeed;
511 if(data->progress.size_ul > CURL_OFF_T_C(10000))
512 ulpercen = data->progress.uploaded /
513 (data->progress.size_ul/CURL_OFF_T_C(100));
514 else if(data->progress.size_ul > CURL_OFF_T_C(0))
515 ulpercen = (data->progress.uploaded*100) /
516 data->progress.size_ul;
520 if((data->progress.flags & PGRS_DL_SIZE_KNOWN) &&
521 (data->progress.dlspeed > CURL_OFF_T_C(0))) {
522 dlestimate = data->progress.size_dl / data->progress.dlspeed;
524 if(data->progress.size_dl > CURL_OFF_T_C(10000))
525 dlpercen = data->progress.downloaded /
526 (data->progress.size_dl/CURL_OFF_T_C(100));
527 else if(data->progress.size_dl > CURL_OFF_T_C(0))
528 dlpercen = (data->progress.downloaded*100) /
529 data->progress.size_dl;
541 /* Get the total amount of data expected to get transferred */
543 ((data->progress.flags & PGRS_UL_SIZE_KNOWN)?
544 data->progress.size_ul:data->progress.uploaded)+
545 ((data->progress.flags & PGRS_DL_SIZE_KNOWN)?
546 data->progress.size_dl:data->progress.downloaded);
549 total_transfer = data->progress.downloaded + data->progress.uploaded;
551 /* Get the percentage of data transferred so far */
558 fprintf(data->set.err,
566 max5data(data->progress.downloaded, max5[0]), /* rcvd size */
568 max5data(data->progress.uploaded, max5[1]), /* xfer size */
569 max5data(data->progress.dlspeed, max5[3]), /* avrg dl speed */
570 max5data(data->progress.ulspeed, max5[4]), /* avrg ul speed */
574 max5data(data->progress.current_speed, max5[5])
578 fflush(data->set.err);
590 int Curl_pgrsUpdate(struct Curl_easy *data)
593 bool showprogress = progress_calc(data, now);
594 if(!(data->progress.flags & PGRS_HIDE)) {
595 if(data->set.fxferinfo) {
598 Curl_set_in_callback(data, true);
599 result = data->set.fxferinfo(data->set.progress_client,
600 data->progress.size_dl,
601 data->progress.downloaded,
602 data->progress.size_ul,
603 data->progress.uploaded);
604 Curl_set_in_callback(data, false);
607 failf(data, "Callback aborted");
611 else if(data->set.fprogress) {
614 Curl_set_in_callback(data, true);
615 result = data->set.fprogress(data->set.progress_client,
616 (double)data->progress.size_dl,
617 (double)data->progress.downloaded,
618 (double)data->progress.size_ul,
619 (double)data->progress.uploaded);
620 Curl_set_in_callback(data, false);
623 failf(data, "Callback aborted");
629 progress_meter(data);