summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--logic/CMakeLists.txt2
-rw-r--r--logic/tasks/StandardTask.cpp120
-rw-r--r--logic/tasks/StandardTask.h43
3 files changed, 0 insertions, 165 deletions
diff --git a/logic/CMakeLists.txt b/logic/CMakeLists.txt
index d91fc694..9a4ead21 100644
--- a/logic/CMakeLists.txt
+++ b/logic/CMakeLists.txt
@@ -203,8 +203,6 @@ set(LOGIC_SOURCES
tasks/ThreadTask.cpp
tasks/SequentialTask.h
tasks/SequentialTask.cpp
- tasks/StandardTask.h
- tasks/StandardTask.cpp
# Settings
settings/INIFile.cpp
diff --git a/logic/tasks/StandardTask.cpp b/logic/tasks/StandardTask.cpp
deleted file mode 100644
index 3201d674..00000000
--- a/logic/tasks/StandardTask.cpp
+++ /dev/null
@@ -1,120 +0,0 @@
-// Licensed under the Apache-2.0 license. See README.md for details.
-
-#include "StandardTask.h"
-
-#include <QEventLoop>
-#include <QProcess>
-
-#include "net/CacheDownload.h"
-#include "net/ByteArrayDownload.h"
-#include "net/NetJob.h"
-#include "FileSystem.h"
-#include "Exception.h"
-#include "Env.h"
-
-StandardTask::StandardTask(QObject *parent)
- : Task(parent)
-{
- m_loop = new QEventLoop(this);
-}
-
-void StandardTask::runTask(QObjectPtr<Task> other)
-{
- connect(other.get(), &Task::succeeded, m_loop, &QEventLoop::quit);
- connect(other.get(), &Task::failed, m_loop, &QEventLoop::quit);
- connect(other.get(), &Task::progress, this, [this](qint64 current, qint64 total){setProgress(current / total);});
- connect(other.get(), &Task::status, this, &StandardTask::setStatus);
- if (!other->isRunning())
- {
- other->start();
- }
- if (other->isRunning())
- {
- m_loop->exec();
- }
- disconnect(other.get(), 0, m_loop, 0);
- disconnect(other.get(), 0, this, 0);
- other->deleteLater();
- if (!other->successful())
- {
- throw Exception(other->failReason());
- }
-}
-void StandardTask::runTaskNonBlocking(QObjectPtr<Task> other)
-{
- if (!other)
- {
- return;
- }
- m_pendingTasks.append(other.get());
- m_pendingTaskPtrs.append(other);
- other->start();
-}
-QByteArray StandardTask::networkGet(const QUrl &url)
-{
- ByteArrayDownloadPtr task = ByteArrayDownload::make(url);
- runTask(wrapDownload("", task));
- return task->m_data;
-}
-QByteArray StandardTask::networkGetCached(const QString &name, const QString &base, const QString &path, const QUrl &url, const bool alwaysRefetch,
- INetworkValidator *validator)
-{
- MetaEntryPtr entry = ENV.metacache()->resolveEntry(base, path);
- if (!alwaysRefetch && !entry->stale)
- {
- if (validator) { delete validator; }
- return FS::read(entry->getFullPath());
- }
- else if (alwaysRefetch)
- {
- entry->stale = true;
- }
- CacheDownloadPtr task = CacheDownload::make(url, entry);
- task->setValidator(validator);
- runTask(wrapDownload(name, task));
- return FS::read(entry->getFullPath());
-}
-QByteArray StandardTask::networkGetCached(const QString &name, const QString &base, const QString &path, const QUrl &url, const QMap<QString, QString> &headers,
- INetworkValidator *validator)
-{
- MetaEntryPtr entry = ENV.metacache()->resolveEntry(base, path);
- if (!entry->stale)
- {
- if (validator) { delete validator; }
- return FS::read(entry->getFullPath());
- }
- CacheDownloadPtr task = CacheDownload::make(url, entry);
- //task->setHeaders(headers);
- task->setValidator(validator);
- runTask(wrapDownload(name, task));
- return FS::read(entry->getFullPath());
-}
-void StandardTask::networkGetCachedNonBlocking(const QString &name, const QString &base, const QString &path, const QUrl &url, const bool alwaysRefetch,
- INetworkValidator *validator)
-{
- MetaEntryPtr entry = ENV.metacache()->resolveEntry(base, path);
- if (!alwaysRefetch && !entry->stale)
- {
- return;
- }
- CacheDownloadPtr dl = CacheDownload::make(url, entry);
- dl->setValidator(validator);
- runTaskNonBlocking(wrapDownload(name, dl));
-}
-void StandardTask::waitOnPending()
-{
- for (int i = 0; i < m_pendingTasks.size(); ++i)
- {
- if (m_pendingTasks.at(i) && m_pendingTasks.at(i)->isRunning())
- {
- runTask(m_pendingTaskPtrs.at(i));
- }
- }
-}
-
-QObjectPtr<NetJob> StandardTask::wrapDownload(const QString &name, std::shared_ptr<NetAction> action)
-{
- NetJobPtr task = NetJobPtr(new NetJob(name));
- task->addNetAction(action);
- return task;
-}
diff --git a/logic/tasks/StandardTask.h b/logic/tasks/StandardTask.h
deleted file mode 100644
index 6f283dcd..00000000
--- a/logic/tasks/StandardTask.h
+++ /dev/null
@@ -1,43 +0,0 @@
-// Licensed under the Apache-2.0 license. See README.md for details.
-
-#pragma once
-
-#include "Task.h"
-
-#include <QPointer>
-#include <memory>
-
-#include "QObjectPtr.h"
-
-class QEventLoop;
-class QDir;
-class NetAction;
-class NetJob;
-class INetworkValidator;
-
-class StandardTask : public Task
-{
- Q_OBJECT
-public:
- explicit StandardTask(QObject *parent = nullptr);
-
-protected:
- // TODO: switch to a future-based system
- void runTask(QObjectPtr<Task> other);
- void runTaskNonBlocking(QObjectPtr<Task> other);
- QByteArray networkGet(const QUrl &url);
- QByteArray networkGetCached(const QString &name, const QString &base, const QString &path, const QUrl &url, const bool alwaysRefetch = false,
- INetworkValidator *validator = nullptr);
- QByteArray networkGetCached(const QString &name, const QString &base, const QString &path, const QUrl &url, const QMap<QString, QString> &headers,
- INetworkValidator *validator = nullptr);
- void networkGetCachedNonBlocking(const QString &name, const QString &base, const QString &path, const QUrl &url, const bool alwaysRefetch = false,
- INetworkValidator *validator = nullptr);
- void waitOnPending();
-
-private:
- QEventLoop *m_loop;
- QList<QPointer<Task>> m_pendingTasks; // only used to check if the object was deleted
- QList<QObjectPtr<Task>> m_pendingTaskPtrs;
-
- QObjectPtr<NetJob> wrapDownload(const QString &name, std::shared_ptr<NetAction> action);
-};