mirror of
https://thingvellir.net/git/overte
synced 2025-03-27 23:52:03 +01:00
CR
This commit is contained in:
parent
6657cecb7a
commit
15e9797827
4 changed files with 30 additions and 40 deletions
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -69,6 +69,9 @@ void HTTPResourceRequest::onRequestFinished() {
|
|||
_result = Error;
|
||||
break;
|
||||
}
|
||||
_reply->disconnect(this);
|
||||
_reply->deleteLater();
|
||||
_reply = nullptr;
|
||||
|
||||
_state = Finished;
|
||||
emit finished();
|
||||
|
|
|
@ -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<ResourceCacheSharedItems>();
|
||||
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) {
|
||||
|
|
Loading…
Reference in a new issue