diff options
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; +}; +} |