refactor: organize a little more the code in launcher/net/

This also reduces some code duplication by using some Task logic in
NetAction.
This commit is contained in:
flow
2022-04-21 22:12:14 -03:00
parent 649b8ac7c6
commit 8c8eabf7ac
19 changed files with 435 additions and 469 deletions

View File

@ -1,28 +1,30 @@
#pragma once
#include "Sink.h"
#include <QSaveFile>
#include "Sink.h"
namespace Net {
class FileSink : public Sink
{
public: /* con/des */
FileSink(QString filename);
virtual ~FileSink();
class FileSink : public Sink {
public:
FileSink(QString filename) : m_filename(filename){};
virtual ~FileSink() = default;
public: /* methods */
JobStatus init(QNetworkRequest & request) override;
JobStatus write(QByteArray & data) override;
JobStatus abort() override;
JobStatus finalize(QNetworkReply & reply) override;
bool hasLocalData() override;
public:
auto init(QNetworkRequest& request) -> Task::State override;
auto write(QByteArray& data) -> Task::State override;
auto abort() -> Task::State override;
auto finalize(QNetworkReply& reply) -> Task::State override;
protected: /* methods */
virtual JobStatus initCache(QNetworkRequest &);
virtual JobStatus finalizeCache(QNetworkReply &reply);
auto hasLocalData() -> bool override;
protected: /* data */
protected:
virtual auto initCache(QNetworkRequest&) -> Task::State;
virtual auto finalizeCache(QNetworkReply& reply) -> Task::State;
protected:
QString m_filename;
bool wroteAnyData = false;
std::unique_ptr<QSaveFile> m_output_file;
};
}
} // namespace Net