Why is this valued zeroed?

Steven Schveighoffer schveiguy at yahoo.com
Thu Jan 11 21:09:01 UTC 2018


On 1/11/18 3:21 PM, Marc wrote:
> I stuck at this and can't figure out the reason why the value of the 
> variable ds is 0 when I do this: startTime = MonoTime.currTime; if I 
> remove that statement, the value of ds isn't zeroed, it has the actual 
> number of seconds. But I can't figure out, ds is of integer type and 
> such, it is copied, right? or is this related to the fact I'm setting it 
> withi a callback function?
> 
> here's the piece of code:
>> import std.net.curl;
>> auto http = HTTP(url);
>> http.method = HTTP.Method.get;
> ....
> the relevant part:
> 
>>     http.onProgress = (size_t dltotal, size_t dlnow,
>>                        size_t ultotal, size_t ulnow) {
>>         if(dlNow > 0) {
>>            MonoTime endTime = MonoTime.currTime;
>>            Duration duration = endTime - startTime;
>>         long ds = duration.total!"seconds";
>>         writeln("duration!seconds  = ", ds);
>>         startTime = MonoTime.currTime;
> 
> if I put startTime = MonoTime.currTime, ds is zero, otherwise, if I 
> remove it, ds has the actual value.
> 
> startTime is first set right before http.perform() call:
> 
>>     startTime = MonoTime.currTime;
>>     http.perform();
> 
> (My goal is define the download transfer rate, different approachs for 
> this are welcome)

`total` truncates. So your time is less than 1 second.

-Steve


More information about the Digitalmars-d-learn mailing list