From cc499488dbab9167870e6088f9a1793f95894c79 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20Mr=C3=A1zek?= Date: Sun, 6 Jul 2014 11:15:15 +0200 Subject: Fix liteloader, some cleanups. --- logic/RWStorage.h | 60 ++++++++++++++++++++++++++++++ logic/auth/flows/AuthenticateTask.cpp | 1 - logic/auth/flows/RefreshTask.cpp | 1 - logic/auth/flows/ValidateTask.cpp | 1 - logic/liteloader/LiteLoaderInstaller.cpp | 9 ++--- logic/liteloader/LiteLoaderVersionList.cpp | 17 ++++++++- logic/liteloader/LiteLoaderVersionList.h | 3 +- logic/minecraft/InstanceVersion.cpp | 1 - logic/minecraft/VersionBuilder.cpp | 1 - logic/settings/SettingsObject.h | 2 +- 10 files changed, 83 insertions(+), 13 deletions(-) create mode 100644 logic/RWStorage.h (limited to 'logic') diff --git a/logic/RWStorage.h b/logic/RWStorage.h new file mode 100644 index 00000000..b1598ca4 --- /dev/null +++ b/logic/RWStorage.h @@ -0,0 +1,60 @@ +#pragma once +template +class RWStorage +{ +public: + void add(K key, V value) + { + QWriteLocker l(&lock); + cache[key] = value; + stale_entries.remove(key); + } + V get(K key) + { + QReadLocker l(&lock); + if(cache.contains(key)) + { + return cache[key]; + } + else return V(); + } + bool get(K key, V& value) + { + QReadLocker l(&lock); + if(cache.contains(key)) + { + value = cache[key]; + return true; + } + else return false; + } + bool has(K key) + { + QReadLocker l(&lock); + return cache.contains(key); + } + bool stale(K key) + { + QReadLocker l(&lock); + if(!cache.contains(key)) + return true; + return stale_entries.contains(key); + } + void setStale(K key) + { + QReadLocker l(&lock); + if(cache.contains(key)) + { + stale_entries.insert(key); + } + } + void clear() + { + QWriteLocker l(&lock); + cache.clear(); + } +private: + QReadWriteLock lock; + QMap cache; + QSet stale_entries; +}; \ No newline at end of file diff --git a/logic/auth/flows/AuthenticateTask.cpp b/logic/auth/flows/AuthenticateTask.cpp index 340235e3..33634fd4 100644 --- a/logic/auth/flows/AuthenticateTask.cpp +++ b/logic/auth/flows/AuthenticateTask.cpp @@ -22,7 +22,6 @@ #include #include #include -#include #include "logger/QsLog.h" diff --git a/logic/auth/flows/RefreshTask.cpp b/logic/auth/flows/RefreshTask.cpp index 7e926c2b..61974476 100644 --- a/logic/auth/flows/RefreshTask.cpp +++ b/logic/auth/flows/RefreshTask.cpp @@ -21,7 +21,6 @@ #include #include #include -#include #include "logger/QsLog.h" diff --git a/logic/auth/flows/ValidateTask.cpp b/logic/auth/flows/ValidateTask.cpp index f3fc1e71..dd73218f 100644 --- a/logic/auth/flows/ValidateTask.cpp +++ b/logic/auth/flows/ValidateTask.cpp @@ -22,7 +22,6 @@ #include #include #include -#include #include "logger/QsLog.h" diff --git a/logic/liteloader/LiteLoaderInstaller.cpp b/logic/liteloader/LiteLoaderInstaller.cpp index ea1a4396..863c7fcb 100644 --- a/logic/liteloader/LiteLoaderInstaller.cpp +++ b/logic/liteloader/LiteLoaderInstaller.cpp @@ -49,13 +49,12 @@ bool LiteLoaderInstaller::add(OneSixInstance *to) QJsonArray libraries; - for (auto libStr : m_version->libraries) + for (auto rawLibrary : m_version->libraries) { - OneSixLibrary lib(libStr); + rawLibrary->insertType = RawLibrary::Prepend; + OneSixLibrary lib(rawLibrary); lib.finalize(); - QJsonObject libObj = lib.toJson(); - libObj.insert("insert", QString("prepend")); - libraries.append(libObj); + libraries.append(lib.toJson()); } // liteloader diff --git a/logic/liteloader/LiteLoaderVersionList.cpp b/logic/liteloader/LiteLoaderVersionList.cpp index ef95eefd..c9a21cb9 100644 --- a/logic/liteloader/LiteLoaderVersionList.cpp +++ b/logic/liteloader/LiteLoaderVersionList.cpp @@ -16,6 +16,7 @@ #include "LiteLoaderVersionList.h" #include "MultiMC.h" #include "logic/net/URLConstants.h" +#include #include @@ -206,7 +207,21 @@ void LLListLoadTask::listDownloaded() const QJsonArray libs = artefact.value("libraries").toArray(); for (auto lIt = libs.begin(); lIt != libs.end(); ++lIt) { - version->libraries.append((*lIt).toObject().value("name").toString()); + auto libobject = (*lIt).toObject(); + try + { + auto lib = RawLibrary::fromJson(libobject, "versions.json"); + if(lib->m_name.startsWith("org.ow2.asm:asm-all:")) + { + lib->m_base_url = "http://repo.maven.apache.org/maven2/"; + } + version->libraries.append(lib); + } + catch (MMCError &e) + { + QLOG_ERROR() << "Couldn't read JSON object:"; + continue; + } } perMcVersionList.append(version); } diff --git a/logic/liteloader/LiteLoaderVersionList.h b/logic/liteloader/LiteLoaderVersionList.h index 0aecc3e1..91ed077c 100644 --- a/logic/liteloader/LiteLoaderVersionList.h +++ b/logic/liteloader/LiteLoaderVersionList.h @@ -23,6 +23,7 @@ #include "logic/BaseVersionList.h" #include "logic/tasks/Task.h" #include "logic/net/NetJob.h" +#include class LLListLoadTask; class QNetworkReply; @@ -55,7 +56,7 @@ public: int timestamp; bool isLatest; QString tweakClass; - QStringList libraries; + QList libraries; // meta QString defaultUrl; diff --git a/logic/minecraft/InstanceVersion.cpp b/logic/minecraft/InstanceVersion.cpp index 91393b53..e71609e6 100644 --- a/logic/minecraft/InstanceVersion.cpp +++ b/logic/minecraft/InstanceVersion.cpp @@ -13,7 +13,6 @@ * limitations under the License. */ -#include #include #include #include diff --git a/logic/minecraft/VersionBuilder.cpp b/logic/minecraft/VersionBuilder.cpp index ddcf6333..66e7d327 100644 --- a/logic/minecraft/VersionBuilder.cpp +++ b/logic/minecraft/VersionBuilder.cpp @@ -22,7 +22,6 @@ #include #include #include -#include #include #include diff --git a/logic/settings/SettingsObject.h b/logic/settings/SettingsObject.h index e46a1b7f..4f11310d 100644 --- a/logic/settings/SettingsObject.h +++ b/logic/settings/SettingsObject.h @@ -91,7 +91,7 @@ public: /*! * \brief Sets the value of the setting with the given ID. - * If no setting with the given ID exists, returns false and logs to qDebug + * If no setting with the given ID exists, returns false * \param id The ID of the setting to change. * \param value The new value of the setting. * \return True if successful, false if it failed. -- cgit v1.2.3