diff options
author | Petr Mrázek <peterix@gmail.com> | 2021-11-21 23:21:12 +0100 |
---|---|---|
committer | Petr Mrázek <peterix@gmail.com> | 2021-11-21 23:21:12 +0100 |
commit | 69213b1206e97f7d4db4270a4b3b0af41dc9e6fc (patch) | |
tree | b53ca69422ce22cceee9e648171a678679075c1a /launcher/net/NetJob.h | |
parent | c2c56a2f6ceaedb8a3fa88c848b345db0fec7f9c (diff) | |
download | PrismLauncher-69213b1206e97f7d4db4270a4b3b0af41dc9e6fc.tar.gz PrismLauncher-69213b1206e97f7d4db4270a4b3b0af41dc9e6fc.tar.bz2 PrismLauncher-69213b1206e97f7d4db4270a4b3b0af41dc9e6fc.zip |
NOISSUE continue refactoring things to make tests pass
Diffstat (limited to 'launcher/net/NetJob.h')
-rw-r--r-- | launcher/net/NetJob.h | 30 |
1 files changed, 23 insertions, 7 deletions
diff --git a/launcher/net/NetJob.h b/launcher/net/NetJob.h index 338f8e71..45b9bc0f 100644 --- a/launcher/net/NetJob.h +++ b/launcher/net/NetJob.h @@ -22,33 +22,34 @@ #include "QObjectPtr.h" class NetJob; -typedef shared_qobject_ptr<NetJob> NetJobPtr; class NetJob : public Task { Q_OBJECT public: + using Ptr = shared_qobject_ptr<NetJob>; + explicit NetJob(QString job_name) : Task() { setObjectName(job_name); } virtual ~NetJob(); - bool addNetAction(NetActionPtr action); + bool addNetAction(NetAction::Ptr action); - NetActionPtr operator[](int index) + NetAction::Ptr operator[](int index) { return downloads[index]; } - const NetActionPtr at(const int index) + const NetAction::Ptr at(const int index) { return downloads.at(index); } - NetActionPtr first() + NetAction::Ptr first() { if (downloads.size()) return downloads[0]; - return NetActionPtr(); + return NetAction::Ptr(); } int size() const { @@ -64,6 +65,19 @@ private slots: public slots: virtual void executeTask() override; virtual bool abort() override; + virtual void start(shared_qobject_ptr<QNetworkAccessManager> network) { + m_network = network; + start(); + } + +protected slots: + void start() override { + if(!m_network) { + throw "Missing network while trying to start " + objectName(); + return; + } + Task::start(); + } private slots: void partProgress(int index, qint64 bytesReceived, qint64 bytesTotal); @@ -72,13 +86,15 @@ private slots: void partAborted(int index); private: + shared_qobject_ptr<QNetworkAccessManager> m_network; + struct part_info { qint64 current_progress = 0; qint64 total_progress = 1; int failures = 0; }; - QList<NetActionPtr> downloads; + QList<NetAction::Ptr> downloads; QList<part_info> parts_progress; QQueue<int> m_todo; QSet<int> m_doing; |