mirror of
https://github.com/moparisthebest/curl
synced 2024-12-21 07:38:49 -05:00
Georg Horn's STARTTRANSFER_TIME patch
This commit is contained in:
parent
271f96f78f
commit
ca0fd33d2d
@ -569,6 +569,11 @@ The time, in seconds, it took from the start until the file transfer is just
|
||||
about to begin. This includes all pre-transfer commands and negotiations that
|
||||
are specific to the particular protocol(s) involved.
|
||||
.TP
|
||||
.B time_starttransfer
|
||||
The time, in seconds, it took from the start until the first byte is just about
|
||||
to be transfered. This includes time_pretransfer and also the time the
|
||||
server needs to calculate the result.
|
||||
.TP
|
||||
.B size_download
|
||||
The total amount of bytes that were downloaded.
|
||||
.TP
|
||||
|
@ -52,6 +52,12 @@ start until the file transfer is just about to begin. This includes all
|
||||
pre-transfer commands and negotiations that are specific to the particular
|
||||
protocol(s) involved.
|
||||
.TP
|
||||
.B CURLINFO_STARTTRANSFER_TIME
|
||||
Pass a pointer to a double to receive the time, in seconds, it took from the
|
||||
start until the first byte is just about to be transfered. This includes
|
||||
CURLINFO_PRETRANSFER_TIME and also the time the server needs to calculate
|
||||
the result.
|
||||
.TP
|
||||
.B CURLINFO_SIZE_UPLOAD
|
||||
Pass a pointer to a double to receive the total amount of bytes that were
|
||||
uploaded.
|
||||
|
@ -584,8 +584,8 @@ CURLcode curl_global_init(long flags);
|
||||
void curl_global_cleanup(void);
|
||||
|
||||
/* This is the version number */
|
||||
#define LIBCURL_VERSION "7.9.1"
|
||||
#define LIBCURL_VERSION_NUM 0x070901
|
||||
#define LIBCURL_VERSION "7.9.2-pre3"
|
||||
#define LIBCURL_VERSION_NUM 0x070902
|
||||
|
||||
/* linked-list structure for the CURLOPT_QUOTE option (and other) */
|
||||
struct curl_slist {
|
||||
@ -635,7 +635,9 @@ typedef enum {
|
||||
CURLINFO_CONTENT_LENGTH_DOWNLOAD = CURLINFO_DOUBLE + 15,
|
||||
CURLINFO_CONTENT_LENGTH_UPLOAD = CURLINFO_DOUBLE + 16,
|
||||
|
||||
CURLINFO_LASTONE = 17
|
||||
CURLINFO_STARTTRANSFER_TIME = CURLINFO_DOUBLE + 17,
|
||||
|
||||
CURLINFO_LASTONE = 18
|
||||
} CURLINFO;
|
||||
|
||||
/* unfortunately, the easy.h include file needs the options and info stuff
|
||||
|
@ -43,6 +43,7 @@ CURLcode Curl_initinfo(struct SessionHandle *data)
|
||||
pro->t_nslookup = 0;
|
||||
pro->t_connect = 0;
|
||||
pro->t_pretransfer = 0;
|
||||
pro->t_starttransfer = 0;
|
||||
|
||||
info->httpcode = 0;
|
||||
info->httpversion=0;
|
||||
@ -107,6 +108,9 @@ CURLcode Curl_getinfo(struct SessionHandle *data, CURLINFO info, ...)
|
||||
case CURLINFO_PRETRANSFER_TIME:
|
||||
*param_doublep = data->progress.t_pretransfer;
|
||||
break;
|
||||
case CURLINFO_STARTTRANSFER_TIME:
|
||||
*param_doublep = data->progress.t_starttransfer;
|
||||
break;
|
||||
case CURLINFO_SIZE_UPLOAD:
|
||||
*param_doublep = data->progress.uploaded;
|
||||
break;
|
||||
|
@ -111,22 +111,24 @@ void Curl_pgrsTime(struct SessionHandle *data, timerid timer)
|
||||
/* mistake filter */
|
||||
break;
|
||||
case TIMER_STARTSINGLE:
|
||||
/* This is set at the start of a single fetch, there may be several
|
||||
fetches within an operation, why we add all other times relative
|
||||
to this one */
|
||||
/* This is set at the start of a single fetch */
|
||||
data->progress.t_startsingle = Curl_tvnow();
|
||||
break;
|
||||
|
||||
case TIMER_NAMELOOKUP:
|
||||
data->progress.t_nslookup +=
|
||||
data->progress.t_nslookup =
|
||||
(double)Curl_tvdiff(Curl_tvnow(), data->progress.t_startsingle)/1000.0;
|
||||
break;
|
||||
case TIMER_CONNECT:
|
||||
data->progress.t_connect +=
|
||||
data->progress.t_connect =
|
||||
(double)Curl_tvdiff(Curl_tvnow(), data->progress.t_startsingle)/1000.0;
|
||||
break;
|
||||
case TIMER_PRETRANSFER:
|
||||
data->progress.t_pretransfer +=
|
||||
data->progress.t_pretransfer =
|
||||
(double)Curl_tvdiff(Curl_tvnow(), data->progress.t_startsingle)/1000.0;
|
||||
break;
|
||||
case TIMER_STARTTRANSFER:
|
||||
data->progress.t_starttransfer =
|
||||
(double)Curl_tvdiff(Curl_tvnow(), data->progress.t_startsingle)/1000.0;
|
||||
break;
|
||||
case TIMER_POSTRANSFER:
|
||||
@ -227,7 +229,7 @@ int Curl_pgrsUpdate(struct connectdata *conn)
|
||||
/* The exact time spent so far (from the start) */
|
||||
timespent = (double)Curl_tvdiff (now, data->progress.start)/1000;
|
||||
|
||||
data->progress.timespent = (long)timespent;
|
||||
data->progress.timespent = timespent;
|
||||
|
||||
/* The average download speed this far */
|
||||
data->progress.dlspeed =
|
||||
|
@ -31,6 +31,7 @@ typedef enum {
|
||||
TIMER_NAMELOOKUP,
|
||||
TIMER_CONNECT,
|
||||
TIMER_PRETRANSFER,
|
||||
TIMER_STARTTRANSFER,
|
||||
TIMER_POSTRANSFER,
|
||||
TIMER_STARTSINGLE,
|
||||
TIMER_LAST /* must be last */
|
||||
|
@ -305,6 +305,8 @@ Transfer(struct connectdata *c_conn)
|
||||
}
|
||||
break;
|
||||
default:
|
||||
if ((bytecount == 0) && (writebytecount == 0))
|
||||
Curl_pgrsTime(data, TIMER_STARTTRANSFER);
|
||||
if((keepon & KEEP_READ) && FD_ISSET(conn->sockfd, &readfd)) {
|
||||
/* read! */
|
||||
urg = Curl_read(conn, conn->sockfd, buf, BUFSIZE -1, &nread);
|
||||
|
@ -374,7 +374,7 @@ struct Progress {
|
||||
int width; /* screen width at download start */
|
||||
int flags; /* see progress.h */
|
||||
|
||||
long timespent;
|
||||
double timespent;
|
||||
|
||||
double dlspeed;
|
||||
double ulspeed;
|
||||
@ -382,6 +382,7 @@ struct Progress {
|
||||
double t_nslookup;
|
||||
double t_connect;
|
||||
double t_pretransfer;
|
||||
double t_starttransfer;
|
||||
|
||||
struct timeval start;
|
||||
struct timeval t_startsingle;
|
||||
|
@ -37,6 +37,7 @@ typedef enum {
|
||||
VAR_NAMELOOKUP_TIME,
|
||||
VAR_CONNECT_TIME,
|
||||
VAR_PRETRANSFER_TIME,
|
||||
VAR_STARTTRANSFER_TIME,
|
||||
VAR_SIZE_DOWNLOAD,
|
||||
VAR_SIZE_UPLOAD,
|
||||
VAR_SPEED_DOWNLOAD,
|
||||
@ -61,6 +62,7 @@ static struct variable replacements[]={
|
||||
{"time_namelookup", VAR_NAMELOOKUP_TIME},
|
||||
{"time_connect", VAR_CONNECT_TIME},
|
||||
{"time_pretransfer", VAR_PRETRANSFER_TIME},
|
||||
{"time_starttransfer", VAR_STARTTRANSFER_TIME},
|
||||
{"size_header", VAR_HEADER_SIZE},
|
||||
{"size_request", VAR_REQUEST_SIZE},
|
||||
{"size_download", VAR_SIZE_DOWNLOAD},
|
||||
@ -138,6 +140,11 @@ void ourWriteOut(CURL *curl, char *writeinfo)
|
||||
curl_easy_getinfo(curl, CURLINFO_PRETRANSFER_TIME, &doubleinfo))
|
||||
fprintf(stream, "%.3f", doubleinfo);
|
||||
break;
|
||||
case VAR_STARTTRANSFER_TIME:
|
||||
if(CURLE_OK ==
|
||||
curl_easy_getinfo(curl, CURLINFO_STARTTRANSFER_TIME, &doubleinfo))
|
||||
fprintf(stream, "%.3f", doubleinfo);
|
||||
break;
|
||||
case VAR_SIZE_UPLOAD:
|
||||
if(CURLE_OK ==
|
||||
curl_easy_getinfo(curl, CURLINFO_SIZE_UPLOAD, &doubleinfo))
|
||||
|
Loading…
Reference in New Issue
Block a user