diff options
author | Petr Mrázek <peterix@gmail.com> | 2015-01-11 22:04:31 +0100 |
---|---|---|
committer | Petr Mrázek <peterix@gmail.com> | 2015-01-11 22:04:31 +0100 |
commit | 0886786bb56e1ebfb53716127fd3ff0366e9a9f3 (patch) | |
tree | 4c65561d1e3b394a834e69a77df1243bd2d2c5f1 /logic/net/NetJob.h | |
parent | 1151037f968628cd659f06457f9ca7403f77f071 (diff) | |
download | MultiMC-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.h | 21 |
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; }; |