diff options
author | Alex Trotsenko <alex1973tr@gmail.com> | 2020-08-11 19:30:15 +0300 |
---|---|---|
committer | Alex Trotsenko <alex1973tr@gmail.com> | 2020-08-20 18:24:15 +0300 |
commit | a41c61fb2d2f973fd1cd5e95ee5be1ac1a4f8433 (patch) | |
tree | 857130e663aa61ebbf09d7da9a1670aa81a9e69b /src/network/ssl/qsslsocket.cpp | |
parent | 729d102b1c5273087c54d1584c80f1a1e6eef86c (diff) |
QIODevice: implement a "zero-copy" strategy for buffered writes
It works as follows:
- user calls write(const QByteArray &);
- this function keeps a pointer to the chunk and calls a regular
write(data, len);
- write(data, len) calls a virtual writeData();
- subclass calls a new QIODevicePrivate::write();
- QIODevicePrivate::write() makes a shallow copy of
the byte array.
Proposed solution is fully compatible with existing subclasses.
By replacing a call to d->writeBuffer.append() with d->write(),
subclasses can improve their performance.
Bump the TypeInformationVersion field in qtHookData, to notify the
Qt Creator developers that the offset of QFilePrivate::fileName was
changed and dumpers should be adapted.
Change-Id: I24713386cc74a9f37e5223c617e4b1ba97f968dc
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@gmx.de>
Reviewed-by: MÃ¥rten Nordheim <marten.nordheim@qt.io>
Diffstat (limited to 'src/network/ssl/qsslsocket.cpp')
-rw-r--r-- | src/network/ssl/qsslsocket.cpp | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/src/network/ssl/qsslsocket.cpp b/src/network/ssl/qsslsocket.cpp index ab4ce1527e..c5444b139e 100644 --- a/src/network/ssl/qsslsocket.cpp +++ b/src/network/ssl/qsslsocket.cpp @@ -1819,7 +1819,7 @@ qint64 QSslSocket::writeData(const char *data, qint64 len) if (d->mode == UnencryptedMode && !d->autoStartHandshake) return d->plainSocket->write(data, len); - d->writeBuffer.append(data, len); + d->write(data, len); // make sure we flush to the plain socket's buffer if (!d->flushTriggered) { |