aboutsummaryrefslogtreecommitdiff
path: root/launcher/net/FileSink.h
blob: 9d77b3d0f8830b8f030814a21e5a7ddc8147dc1a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#pragma once

#include <QSaveFile>

#include "Sink.h"

namespace Net {
class FileSink : public Sink {
   public:
    FileSink(QString filename) : m_filename(filename){};
    virtual ~FileSink() = default;

   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;

    auto hasLocalData() -> bool override;

   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