summaryrefslogtreecommitdiffstats
path: root/logic/net/NetJob.h
diff options
context:
space:
mode:
authorPetr Mrázek <peterix@gmail.com>2015-01-11 22:04:31 +0100
committerPetr Mrázek <peterix@gmail.com>2015-01-11 22:04:31 +0100
commit0886786bb56e1ebfb53716127fd3ff0366e9a9f3 (patch)
tree4c65561d1e3b394a834e69a77df1243bd2d2c5f1 /logic/net/NetJob.h
parent1151037f968628cd659f06457f9ca7403f77f071 (diff)
downloadMultiMC-0886786bb56e1ebfb53716127fd3ff0366e9a9f3.tar
MultiMC-0886786bb56e1ebfb53716127fd3ff0366e9a9f3.tar.gz
MultiMC-0886786bb56e1ebfb53716127fd3ff0366e9a9f3.tar.lz
MultiMC-0886786bb56e1ebfb53716127fd3ff0366e9a9f3.tar.xz
MultiMC-0886786bb56e1ebfb53716127fd3ff0366e9a9f3.zip
GH-721 Redo internal NetJob implementation.
NetJob is now using its own task queue and does not start more than 6 actions at the same time
Diffstat (limited to 'logic/net/NetJob.h')
-rw-r--r--logic/net/NetJob.h21
1 files changed, 14 insertions, 7 deletions
diff --git a/logic/net/NetJob.h b/logic/net/NetJob.h
index e8adcfa3..1b6f49b6 100644
--- a/logic/net/NetJob.h
+++ b/logic/net/NetJob.h
@@ -22,9 +22,10 @@
#include "CacheDownload.h"
#include "HttpMetaCache.h"
#include "logic/tasks/ProgressProvider.h"
+#include "logic/QObjectPtr.h"
class NetJob;
-typedef std::shared_ptr<NetJob> NetJobPtr;
+typedef QObjectPtr<NetJob> NetJobPtr;
class NetJob : public ProgressProvider
{
@@ -81,18 +82,22 @@ public:
return m_running;
}
QStringList getFailedFiles();
+
+private:
+ void startMoreParts();
+
signals:
void started();
void progress(qint64 current, qint64 total);
void succeeded();
void failed();
-public
-slots:
+
+public slots:
virtual void start();
// FIXME: implement
virtual void abort() {};
-private
-slots:
+
+private slots:
void partProgress(int index, qint64 bytesReceived, qint64 bytesTotal);
void partSucceeded(int index);
void partFailed(int index);
@@ -107,9 +112,11 @@ private:
QString m_job_name;
QList<NetActionPtr> downloads;
QList<part_info> parts_progress;
+ QQueue<int> m_todo;
+ QSet<int> m_doing;
+ QSet<int> m_done;
+ QSet<int> m_failed;
qint64 current_progress = 0;
qint64 total_progress = 0;
- int num_succeeded = 0;
- int num_failed = 0;
bool m_running = false;
};