summaryrefslogtreecommitdiffstats
path: root/src/network/access/qhttpnetworkconnection.cpp
diff options
context:
space:
mode:
authorMarkus Goetz <Markus.Goetz@nokia.com>2009-06-25 14:52:45 (GMT)
committerMarkus Goetz <Markus.Goetz@nokia.com>2009-06-25 15:25:15 (GMT)
commit3984253ac58e0cca1c0b94fad1549dd4e0e3c2e1 (patch)
tree98fdc5bf2e42626eb0cebcfb60c2a61a73b352c3 /src/network/access/qhttpnetworkconnection.cpp
parentb393abc9ce2e2a5396e655895fe653f9e06e355f (diff)
downloadQt-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.cpp20
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();
}