diff options
author | Markus Goetz <Markus.Goetz@nokia.com> | 2009-06-25 14:52:45 (GMT) |
---|---|---|
committer | Markus Goetz <Markus.Goetz@nokia.com> | 2009-06-25 15:25:15 (GMT) |
commit | 3984253ac58e0cca1c0b94fad1549dd4e0e3c2e1 (patch) | |
tree | 98fdc5bf2e42626eb0cebcfb60c2a61a73b352c3 /src/network/access/qhttpnetworkconnection.cpp | |
parent | b393abc9ce2e2a5396e655895fe653f9e06e355f (diff) | |
download | Qt-3984253ac58e0cca1c0b94fad1549dd4e0e3c2e1.zip Qt-3984253ac58e0cca1c0b94fad1549dd4e0e3c2e1.tar.gz Qt-3984253ac58e0cca1c0b94fad1549dd4e0e3c2e1.tar.bz2 |
QNAM HTTP Code: Prepare for download performance improvements
Change the QByteArray to a QRingBuffer to save re-allocation time.
Reviewed-by: Thiago Macieira <thiago.macieira@nokia.com>
Diffstat (limited to 'src/network/access/qhttpnetworkconnection.cpp')
-rw-r--r-- | src/network/access/qhttpnetworkconnection.cpp | 20 |
1 files changed, 13 insertions, 7 deletions
diff --git a/src/network/access/qhttpnetworkconnection.cpp b/src/network/access/qhttpnetworkconnection.cpp index 365ae8b..8409660 100644 --- a/src/network/access/qhttpnetworkconnection.cpp +++ b/src/network/access/qhttpnetworkconnection.cpp @@ -176,7 +176,8 @@ bool QHttpNetworkConnectionPrivate::isSocketReading(QAbstractSocket *socket) con void QHttpNetworkConnectionPrivate::appendUncompressedData(QHttpNetworkReply &reply, const QByteArray &fragment) { - reply.d_func()->responseData.append(fragment); + char *dst = reply.d_func()->responseData.reserve(fragment.size()); + qMemCopy(dst, fragment.constData(), fragment.size()); } void QHttpNetworkConnectionPrivate::appendCompressedData(QHttpNetworkReply &reply, const QByteArray &fragment) @@ -189,6 +190,11 @@ qint64 QHttpNetworkConnectionPrivate::uncompressedBytesAvailable(const QHttpNetw return reply.d_func()->responseData.size(); } +qint64 QHttpNetworkConnectionPrivate::uncompressedBytesAvailableNextBlock(const QHttpNetworkReply &reply) const +{ + return reply.d_func()->responseData.nextDataBlockSize(); +} + qint64 QHttpNetworkConnectionPrivate::compressedBytesAvailable(const QHttpNetworkReply &reply) const { return reply.d_func()->compressedData.size(); @@ -196,15 +202,15 @@ qint64 QHttpNetworkConnectionPrivate::compressedBytesAvailable(const QHttpNetwor qint64 QHttpNetworkConnectionPrivate::read(QHttpNetworkReply &reply, QByteArray &data, qint64 maxSize) { - QByteArray *ba = &reply.d_func()->responseData; - if (maxSize == -1 || maxSize >= ba->size()) { + QRingBuffer *rb = &reply.d_func()->responseData; + if (maxSize == -1 || maxSize >= rb->size()) { // read the whole data - data = *ba; - ba->clear(); + data = rb->readAll(); + rb->clear(); } else { // read only the requested length - data = ba->mid(0, maxSize); - ba->remove(0, maxSize); + data.resize(maxSize); + rb->read(data.data(), maxSize); } return data.size(); } |