diff options
author | Petr Mrázek <peterix@gmail.com> | 2016-05-28 19:54:17 +0200 |
---|---|---|
committer | Petr Mrázek <peterix@gmail.com> | 2016-06-05 23:55:39 +0200 |
commit | a1abbd9e05c80584d831b1d12c27c5f7d731cece (patch) | |
tree | 3324eaf37efa228e07a0e3136952673f0bc3405a /api/logic/net/ByteArraySink.h | |
parent | a750f6e63c783730380c19788deff2acfb3f4836 (diff) | |
download | PrismLauncher-a1abbd9e05c80584d831b1d12c27c5f7d731cece.tar.gz PrismLauncher-a1abbd9e05c80584d831b1d12c27c5f7d731cece.tar.bz2 PrismLauncher-a1abbd9e05c80584d831b1d12c27c5f7d731cece.zip |
NOISSUE refactor *Download into more, smaller pieces
* Download is now Download.
* Download uses Sink subclasses to process various events.
* Validators can be used to further customize the Sink behaviour.
Diffstat (limited to 'api/logic/net/ByteArraySink.h')
-rw-r--r-- | api/logic/net/ByteArraySink.h | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/api/logic/net/ByteArraySink.h b/api/logic/net/ByteArraySink.h new file mode 100644 index 00000000..3deef1ed --- /dev/null +++ b/api/logic/net/ByteArraySink.h @@ -0,0 +1,57 @@ +#pragma once + +#include "Sink.h" + +namespace Net { +/* + * Sink object for downloads that uses an external QByteArray it doesn't own as a target. + */ +class ByteArraySink : public Sink +{ +public: + ByteArraySink(QByteArray *output) + :m_output(output) + { + // nil + }; + + virtual ~ByteArraySink() + { + // nil + } + +public: + JobStatus init(QNetworkRequest & request) override + { + m_output->clear(); + if(initAllValidators(request)) + return Job_InProgress; + return Job_Failed; + }; + + JobStatus write(QByteArray & data) override + { + m_output->append(data); + if(writeAllValidators(data)) + return Job_InProgress; + return Job_Failed; + } + + JobStatus abort() override + { + m_output->clear(); + failAllValidators(); + return Job_Failed; + } + + JobStatus finalize(QNetworkReply &reply) override + { + if(finalizeAllValidators(reply)) + return Job_Finished; + return Job_Failed; + } + +private: + QByteArray * m_output; +}; +} |