summaryrefslogtreecommitdiffstats
path: root/src/network/socket/qlocalsocket_p.h
diff options
context:
space:
mode:
authorJoerg Bornemann <joerg.bornemann@theqtcompany.com>2016-03-23 15:45:12 +0100
committerOswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>2016-03-24 16:12:46 +0000
commit24411e9743735d6323f1d3686f8b989a5122f83b (patch)
tree67323f338eb7b189dfce88aa1419cf63cd96ef4e /src/network/socket/qlocalsocket_p.h
parentf75d950bd4353c436f9863d06af65b6cbc672c76 (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.h5
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;