diff options
author | Joerg Bornemann <joerg.bornemann@theqtcompany.com> | 2016-03-23 15:45:12 +0100 |
---|---|---|
committer | Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com> | 2016-03-24 16:12:46 +0000 |
commit | 24411e9743735d6323f1d3686f8b989a5122f83b (patch) | |
tree | 67323f338eb7b189dfce88aa1419cf63cd96ef4e /src/network/socket/qlocalsocket_p.h | |
parent | f75d950bd4353c436f9863d06af65b6cbc672c76 (diff) |
Add a write buffer to QLocalSocket/Win
Commit 0307c008 removed the buffering of data-to-be-written from
QWindowsPipeWriter, because it was assumed that users of this class
(QProcess and QLocalSocket) already buffer data internally.
This assumption was wrong for QLocalSocket. The following sequence
localSocket->write(someData);
localSocket->write(someMoreData);
would not write anything on the second write.
Add a write buffer to the Windows implementation of QLocalSocket.
Task-number: QTBUG-52073
Change-Id: I6d0f03a722ec48138cbde3e2f69aae7dafe790d3
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
Diffstat (limited to 'src/network/socket/qlocalsocket_p.h')
-rw-r--r-- | src/network/socket/qlocalsocket_p.h | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/src/network/socket/qlocalsocket_p.h b/src/network/socket/qlocalsocket_p.h index 46c93c01f7..a594605ae0 100644 --- a/src/network/socket/qlocalsocket_p.h +++ b/src/network/socket/qlocalsocket_p.h @@ -55,6 +55,7 @@ #if defined(QT_LOCALSOCKET_TCP) # include "qtcpsocket.h" #elif defined(Q_OS_WIN) +# include <private/qringbuffer_p.h> # include "private/qwindowspipereader_p.h" # include "private/qwindowspipewriter_p.h" # include <qwineventnotifier.h> @@ -123,10 +124,12 @@ public: ~QLocalSocketPrivate(); void destroyPipeHandles(); void setErrorString(const QString &function); - void _q_canWrite(); + void startNextWrite(); + void _q_bytesWritten(qint64 bytes); void _q_pipeClosed(); void _q_winError(ulong windowsError, const QString &function); HANDLE handle; + QRingBuffer writeBuffer; QWindowsPipeWriter *pipeWriter; QWindowsPipeReader *pipeReader; QLocalSocket::LocalSocketError error; |