Fixed Downloader class progress callbacks, added HTTP::Parser progress calculation function.

This commit is contained in:
Thulinma 2019-05-22 00:08:35 +02:00
parent e1150fe871
commit 917ce2d452
3 changed files with 26 additions and 2 deletions

View file

@ -183,7 +183,15 @@ namespace HTTP{
return true; // Success!
}
// reset the data timeout
reqTime = Util::bootSecs();
if (reqTime != Util::bootSecs()){
if (progressCallback != 0){
if (!progressCallback()){
WARN_MSG("Download aborted by callback");
return false;
}
}
reqTime = Util::bootSecs();
}
}
if (getSocket()){
FAIL_MSG("Timeout while retrieving %s (%zu/%" PRIu32 ")", link.getUrl().c_str(),
@ -239,7 +247,15 @@ namespace HTTP{
return true; // Success!
}
// reset the data timeout
reqTime = Util::bootSecs();
if (reqTime != Util::bootSecs()){
if (progressCallback != 0){
if (!progressCallback()){
WARN_MSG("Download aborted by callback");
return false;
}
}
reqTime = Util::bootSecs();
}
}
if (getSocket()){
FAIL_MSG("Timeout while retrieving %s", link.getUrl().c_str());

View file

@ -751,6 +751,13 @@ bool HTTP::Parser::Read(std::string &strbuf){
return parse(strbuf);
}// HTTPReader::Read
/// Checks download completion percentage.
/// Returns zero if that doesn't make sense at the time or cannot be determined.
uint8_t HTTP::Parser::getPercentage() const{
if (!seenHeaders || length < 1){return 0;}
return ((body.length() * 100) / length);
}
/// Attempt to read a whole HTTP response or request from a data buffer.
/// If succesful, fills its own fields with the proper data and removes the response/request
/// from the data buffer.

View file

@ -24,6 +24,7 @@ namespace HTTP{
const std::string &GetHeader(const std::string &i) const;
bool hasHeader(const std::string &i) const;
void clearHeader(const std::string &i);
uint8_t getPercentage() const;
const std::string &GetVar(const std::string &i) const;
std::string getUrl();
std::string allVars();