55 lines
1.0 KiB
C++
55 lines
1.0 KiB
C++
#pragma once
|
|
|
|
#include "httq_export.h"
|
|
|
|
#include <QtCore/QObject>
|
|
#include <QtCore/QScopedPointer>
|
|
#include <httq/Logger.h>
|
|
|
|
class QIODevice;
|
|
|
|
namespace httq
|
|
{
|
|
class HttpRequest;
|
|
|
|
class HTTQ_EXPORT DataStream : public QObject
|
|
{
|
|
Q_OBJECT
|
|
|
|
private:
|
|
explicit DataStream(QIODevice *from,
|
|
QIODevice *to,
|
|
const QByteArray &bodyPartial,
|
|
qint64 fileLength,
|
|
size_t bufferSize,
|
|
LoggerFactory *loggerFactory,
|
|
QObject *parent = nullptr);
|
|
|
|
public:
|
|
~DataStream();
|
|
|
|
private:
|
|
friend class HttpRequest;
|
|
|
|
void readNext();
|
|
void writeNext();
|
|
|
|
bool mReadyWrite{true};
|
|
|
|
QByteArray mBuffer;
|
|
QByteArray mBodyPartial;
|
|
QIODevice *mFrom;
|
|
QIODevice *mTo;
|
|
|
|
qint64 mBufferSize;
|
|
qint64 alreadyRead{0};
|
|
qint64 mFileLength;
|
|
bool mFromSupportsSignals{false};
|
|
bool mToSupportsSignals{false};
|
|
QScopedPointer<Logger> mLogger;
|
|
|
|
signals:
|
|
void signalDone();
|
|
};
|
|
} // namespace httq
|