summaryrefslogtreecommitdiffstats
path: root/logic
diff options
context:
space:
mode:
authorPetr Mrázek <peterix@gmail.com>2014-07-06 11:15:15 +0200
committerPetr Mrázek <peterix@gmail.com>2014-07-06 11:15:15 +0200
commitcc499488dbab9167870e6088f9a1793f95894c79 (patch)
treed6efb25086f4c2c6cb3c0a3dc8ad5a5a80985286 /logic
parenta218d7b7f6a9e30671be72b756104302637eb33d (diff)
downloadMultiMC-cc499488dbab9167870e6088f9a1793f95894c79.tar
MultiMC-cc499488dbab9167870e6088f9a1793f95894c79.tar.gz
MultiMC-cc499488dbab9167870e6088f9a1793f95894c79.tar.lz
MultiMC-cc499488dbab9167870e6088f9a1793f95894c79.tar.xz
MultiMC-cc499488dbab9167870e6088f9a1793f95894c79.zip
Fix liteloader, some cleanups.
Diffstat (limited to 'logic')
-rw-r--r--logic/RWStorage.h60
-rw-r--r--logic/auth/flows/AuthenticateTask.cpp1
-rw-r--r--logic/auth/flows/RefreshTask.cpp1
-rw-r--r--logic/auth/flows/ValidateTask.cpp1
-rw-r--r--logic/liteloader/LiteLoaderInstaller.cpp9
-rw-r--r--logic/liteloader/LiteLoaderVersionList.cpp17
-rw-r--r--logic/liteloader/LiteLoaderVersionList.h3
-rw-r--r--logic/minecraft/InstanceVersion.cpp1
-rw-r--r--logic/minecraft/VersionBuilder.cpp1
-rw-r--r--logic/settings/SettingsObject.h2
10 files changed, 83 insertions, 13 deletions
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 <typename K, typename V>
+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<K, V> cache;
+ QSet<K> 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 <QJsonObject>
#include <QJsonArray>
#include <QVariant>
-#include <QDebug>
#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 <QJsonObject>
#include <QJsonArray>
#include <QVariant>
-#include <QDebug>
#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 <QJsonObject>
#include <QJsonArray>
#include <QVariant>
-#include <QDebug>
#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 <MMCError.h>
#include <QtXml>
@@ -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 <logic/minecraft/RawLibrary.h>
class LLListLoadTask;
class QNetworkReply;
@@ -55,7 +56,7 @@ public:
int timestamp;
bool isLatest;
QString tweakClass;
- QStringList libraries;
+ QList<RawLibraryPtr> 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 <QDebug>
#include <QFile>
#include <QDir>
#include <QUuid>
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 <QMessageBox>
#include <QObject>
#include <QDir>
-#include <QDebug>
#include <qresource.h>
#include <modutils.h>
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.