From 15e97978275b9ba4eff141738128ed2dbc8ccab5 Mon Sep 17 00:00:00 2001 From: Atlante45 Date: Mon, 31 Aug 2015 22:12:42 +0200 Subject: [PATCH] CR --- libraries/networking/src/AssetClient.cpp | 4 +- .../networking/src/FileResourceRequest.cpp | 15 +++--- .../networking/src/HTTPResourceRequest.cpp | 3 ++ libraries/networking/src/ResourceCache.cpp | 48 +++++++------------ 4 files changed, 30 insertions(+), 40 deletions(-) diff --git a/libraries/networking/src/AssetClient.cpp b/libraries/networking/src/AssetClient.cpp index 4bbc9f740a..68b7c5ad76 100644 --- a/libraries/networking/src/AssetClient.cpp +++ b/libraries/networking/src/AssetClient.cpp @@ -50,7 +50,7 @@ AssetRequest* AssetClient::createRequest(const QString& hash, const QString& ext SharedNodePointer assetServer = nodeList->soloNodeOfType(NodeType::AssetServer); if (!assetServer) { - qDebug() << "No Asset Server"; + qDebug().nospace() << "Could not request " << hash << "." << extension << " since you are not currently connected to an asset-server."; return nullptr; } @@ -71,7 +71,7 @@ AssetUpload* AssetClient::createUpload(const QString& filename) { SharedNodePointer assetServer = nodeList->soloNodeOfType(NodeType::AssetServer); if (!assetServer) { - qDebug() << "No Asset Server"; + qDebug() << "Could not upload" << filename << "since you are not currently connected to an asset-server."; return nullptr; } diff --git a/libraries/networking/src/FileResourceRequest.cpp b/libraries/networking/src/FileResourceRequest.cpp index dd2f6c8478..9e0320f6b7 100644 --- a/libraries/networking/src/FileResourceRequest.cpp +++ b/libraries/networking/src/FileResourceRequest.cpp @@ -17,14 +17,15 @@ void FileResourceRequest::doSend() { QString filename = _url.toLocalFile(); QFile file(filename); - - if (!file.exists()) { - _result = NotFound; - } else if (file.open(QFile::ReadOnly)) { - _data = file.readAll(); - _result = Success; + if (file.exists()) { + if (file.open(QFile::ReadOnly)) { + _data = file.readAll(); + _result = ResourceRequest::Success; + } else { + _result = ResourceRequest::AccessDenied; + } } else { - _result = AccessDenied; + _result = ResourceRequest::NotFound; } _state = Finished; diff --git a/libraries/networking/src/HTTPResourceRequest.cpp b/libraries/networking/src/HTTPResourceRequest.cpp index fbfcabb53d..f48c7d9132 100644 --- a/libraries/networking/src/HTTPResourceRequest.cpp +++ b/libraries/networking/src/HTTPResourceRequest.cpp @@ -69,6 +69,9 @@ void HTTPResourceRequest::onRequestFinished() { _result = Error; break; } + _reply->disconnect(this); + _reply->deleteLater(); + _reply = nullptr; _state = Finished; emit finished(); diff --git a/libraries/networking/src/ResourceCache.cpp b/libraries/networking/src/ResourceCache.cpp index 18024000b3..1e0e5f745b 100644 --- a/libraries/networking/src/ResourceCache.cpp +++ b/libraries/networking/src/ResourceCache.cpp @@ -158,14 +158,12 @@ void ResourceCache::attemptRequest(Resource* resource) { // Disable request limiting for ATP if (resource->getURL().scheme() != URL_SCHEME_ATP) { if (_requestLimit <= 0) { - qDebug() << "REQUEST LIMIT REACHED (" << _requestLimit << "), queueing: " << resource->getURL(); // wait until a slot becomes available sharedItems->_pendingRequests.append(resource); return; } - qDebug() << "-- Decreasing limit for : " << resource->getURL(); - _requestLimit--; + --_requestLimit; } sharedItems->_loadingRequests.append(resource); @@ -176,8 +174,7 @@ void ResourceCache::requestCompleted(Resource* resource) { auto sharedItems = DependencyManager::get(); sharedItems->_loadingRequests.removeOne(resource); if (resource->getURL().scheme() != URL_SCHEME_ATP) { - qDebug() << "++ Increasing limit after finished: " << resource->getURL(); - _requestLimit++; + ++_requestLimit; } // look for the highest priority pending request @@ -367,33 +364,22 @@ void Resource::handleDownloadProgress(uint64_t bytesReceived, uint64_t bytesTota void Resource::handleReplyFinished() { Q_ASSERT(_request); - + + ResourceCache::requestCompleted(this); + auto result = _request->getResult(); if (result == ResourceRequest::Success) { _data = _request->getData(); qDebug() << "Request finished for " << _url << ", " << _activeUrl; - - _request->disconnect(this); - _request->deleteLater(); - _request = nullptr; - - ResourceCache::requestCompleted(this); - + + finishedLoading(false); emit loaded(_data); - downloadFinished(_data); } else { - _request->disconnect(this); - _request->deleteLater(); - _request = nullptr; - if (result == ResourceRequest::Result::Timeout) { qDebug() << "Timed out loading" << _url << "received" << _bytesReceived << "total" << _bytesTotal; - } else { - qDebug() << "Error loading " << _url; } - bool retry = false; switch (result) { case ResourceRequest::Result::Timeout: case ResourceRequest::Result::ServerUnavailable: @@ -402,24 +388,24 @@ void Resource::handleReplyFinished() { const int MAX_ATTEMPTS = 8; const int BASE_DELAY_MS = 1000; if (++_attempts < MAX_ATTEMPTS) { - QTimer::singleShot(BASE_DELAY_MS * (int)pow(2.0, _attempts), this, &Resource::makeRequest); - retry = true; + QTimer::singleShot(BASE_DELAY_MS * (int)pow(2.0, _attempts), this, SLOT(attemptRequest())); break; } // fall through to final failure } - default: + default: { + qDebug() << "Error loading " << _url; + auto error = (result == ResourceRequest::Timeout) ? QNetworkReply::TimeoutError : QNetworkReply::UnknownNetworkError; + emit failed(error); finishedLoading(false); break; - } - - auto error = result == ResourceRequest::Timeout ? QNetworkReply::TimeoutError : QNetworkReply::UnknownNetworkError; - - if (!retry) { - emit failed(error); - ResourceCache::requestCompleted(this); + } } } + + _request->disconnect(this); + _request->deleteLater(); + _request = nullptr; } void Resource::downloadFinished(const QByteArray& data) {