History

only start one download per url even if still pending

ZappoMan committed 11 years ago

Commit 31072b21 parent e2d8d822 files · +16 −6Browse files

Showing the changes to libraries/script-engine/src/ScriptCache.cpp (1 of 2 files). Show all

Unified · Split

libraries/script-engine/src/ScriptCache.cpp+15−5
@@ -27,17 +27,26 @@ ScriptCache::ScriptCache(QObject* parent) { · 26 unmodified lines
2727 QString ScriptCache::getScript(const QUrl& url, ScriptUser* scriptUser, bool& isPending) {
2828 QString scriptContents;
2929 if (_scriptCache.contains(url)) {
30+ qDebug() << "Found script in cache:" << url.toString();
3031 scriptContents = _scriptCache[url];
3132 scriptUser->scriptContentsAvailable(url, scriptContents);
3233 isPending = false;
3334 } else {
3435 isPending = true;
36+ bool alreadyWaiting = _scriptUsers.contains(url);
3537 _scriptUsers.insert(url, scriptUser);
36− QNetworkAccessManager& networkAccessManager = NetworkAccessManager::getInstance();
37− QNetworkRequest networkRequest = QNetworkRequest(url);
38− networkRequest.setHeader(QNetworkRequest::UserAgentHeader, HIGH_FIDELITY_USER_AGENT);
39− QNetworkReply* reply = networkAccessManager.get(networkRequest);
40− connect(reply, &QNetworkReply::finished, this, &ScriptCache::scriptDownloaded);
38+
39+ if (alreadyWaiting) {
40+ qDebug() << "Already downloading script at:" << url.toString();
41+ } else {
42+ QNetworkAccessManager& networkAccessManager = NetworkAccessManager::getInstance();
43+ QNetworkRequest networkRequest = QNetworkRequest(url);
44+ networkRequest.setHeader(QNetworkRequest::UserAgentHeader, HIGH_FIDELITY_USER_AGENT);
45+
46+ qDebug() << "Downloading script at:" << url.toString();
47+ QNetworkReply* reply = networkAccessManager.get(networkRequest);
48+ connect(reply, &QNetworkReply::finished, this, &ScriptCache::scriptDownloaded);
49+ }
4150 }
4251 return scriptContents;
4352 }
@@ -50,6 +59,7 @@ void ScriptCache::scriptDownloaded() { · 6 unmodified lines
5059
5160 if (reply->error() == QNetworkReply::NoError && reply->attribute(QNetworkRequest::HttpStatusCodeAttribute) == 200) {
5261 _scriptCache[url] = reply->readAll();
62+ qDebug() << "Done downloading script at:" << url.toString();
5363
5464 foreach(ScriptUser* user, scriptUsers) {
5565 user->scriptContentsAvailable(url, _scriptCache[url]);