aboutsummaryrefslogtreecommitdiff
path: root/launcher/net/NetJob.h
diff options
context:
space:
mode:
authorPetr Mrázek <peterix@gmail.com>2021-11-21 23:21:12 +0100
committerPetr Mrázek <peterix@gmail.com>2021-11-21 23:21:12 +0100
commit69213b1206e97f7d4db4270a4b3b0af41dc9e6fc (patch)
treeb53ca69422ce22cceee9e648171a678679075c1a /launcher/net/NetJob.h
parentc2c56a2f6ceaedb8a3fa88c848b345db0fec7f9c (diff)
downloadPrismLauncher-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.h30
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;