63 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			63 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
#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;
 | 
						|
    }
 | 
						|
 | 
						|
    bool hasLocalData() override
 | 
						|
    {
 | 
						|
        return false;
 | 
						|
    }
 | 
						|
 | 
						|
private:
 | 
						|
    QByteArray * m_output;
 | 
						|
};
 | 
						|
}
 |