CLOUD: Update FolderDownloadRequest
It now keeps track of downloaded bytes.
This commit is contained in:
parent
ca33c0a0a8
commit
0ca7917093
7 changed files with 73 additions and 2 deletions
|
@ -51,6 +51,7 @@ void FolderDownloadRequest::start() {
|
|||
_failedFiles.clear();
|
||||
_ignoreCallback = false;
|
||||
_totalFiles = 0;
|
||||
_downloadedBytes = _totalBytes = 0;
|
||||
|
||||
//list directory first
|
||||
_workingRequest = _storage->listDirectory(
|
||||
|
@ -70,8 +71,10 @@ void FolderDownloadRequest::directoryListedCallback(Storage::ListDirectoryRespon
|
|||
for (Common::Array<StorageFile>::iterator i = _pendingFiles.begin(); i != _pendingFiles.end(); )
|
||||
if (i->isDirectory())
|
||||
_pendingFiles.erase(i);
|
||||
else
|
||||
else {
|
||||
_totalBytes += i->size();
|
||||
++i;
|
||||
}
|
||||
|
||||
_totalFiles = _pendingFiles.size();
|
||||
downloadNextFile();
|
||||
|
@ -87,6 +90,7 @@ void FolderDownloadRequest::fileDownloadedCallback(Storage::BoolResponse respons
|
|||
_workingRequest = nullptr;
|
||||
if (_ignoreCallback) return;
|
||||
if (!response.value) _failedFiles.push_back(_currentFile);
|
||||
_downloadedBytes += _currentFile.size();
|
||||
downloadNextFile();
|
||||
}
|
||||
|
||||
|
@ -159,4 +163,22 @@ double FolderDownloadRequest::getProgress() const {
|
|||
return (double)(uploadedFiles + currentFileProgress) / (double)(_totalFiles);
|
||||
}
|
||||
|
||||
uint64 FolderDownloadRequest::getDownloadedBytes() const {
|
||||
if (_totalFiles == 0) return 0;
|
||||
|
||||
double currentFileProgress = 0;
|
||||
DownloadRequest *downloadRequest = dynamic_cast<DownloadRequest *>(_workingRequest);
|
||||
if (downloadRequest != nullptr) currentFileProgress = downloadRequest->getProgress();
|
||||
else {
|
||||
Id::IdDownloadRequest *idDownloadRequest = dynamic_cast<Id::IdDownloadRequest *>(_workingRequest);
|
||||
if (idDownloadRequest != nullptr) currentFileProgress = idDownloadRequest->getProgress();
|
||||
}
|
||||
|
||||
return _downloadedBytes + (uint64)(currentFileProgress * _currentFile.size());
|
||||
}
|
||||
|
||||
uint64 FolderDownloadRequest::getTotalBytesToDownload() const {
|
||||
return _totalBytes;
|
||||
}
|
||||
|
||||
} // End of namespace Cloud
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue