summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorKurt Pattyn <pattyn.kurt@gmail.com>2014-01-26 17:48:07 +0100
committerThe Qt Project <gerrit-noreply@qt-project.org>2014-02-01 17:02:48 +0100
commit6295e6bd35e49c9d5c91922ac564a2d1c81687c6 (patch)
treec3eb8ab3cdd1ca181e4552330c64816e7be4dfc8 /src
parent4a82737e06cf89b7293425952906416729fffbc7 (diff)
downloadqtwebsockets-6295e6bd35e49c9d5c91922ac564a2d1c81687c6.tar.gz
Locally cache read buffer size and pause mode
When calling setReadBufferSize() and setPauseMode(), the internal socket is not yet created. So we cache these values and apply them when the internal socket is created. Change-Id: I4299232342438c7a6c52fa8ea4a95461b3f85ebf Reviewed-by: Frederik Gladhorn <frederik.gladhorn@digia.com>
Diffstat (limited to 'src')
-rw-r--r--src/websockets/qwebsocket_p.cpp24
-rw-r--r--src/websockets/qwebsocket_p.h2
2 files changed, 16 insertions, 10 deletions
diff --git a/src/websockets/qwebsocket_p.cpp b/src/websockets/qwebsocket_p.cpp
index 5d64f8f..646e24f 100644
--- a/src/websockets/qwebsocket_p.cpp
+++ b/src/websockets/qwebsocket_p.cpp
@@ -99,6 +99,8 @@ QWebSocketPrivate::QWebSocketPrivate(const QString &origin, QWebSocketProtocol::
m_protocol(),
m_extension(),
m_socketState(QAbstractSocket::UnconnectedState),
+ m_pauseMode(QAbstractSocket::PauseNever),
+ m_readBufferSize(0),
m_key(),
m_mustMask(true),
m_isClosingHandshakeSent(false),
@@ -128,6 +130,8 @@ QWebSocketPrivate::QWebSocketPrivate(QTcpSocket *pTcpSocket, QWebSocketProtocol:
m_protocol(),
m_extension(),
m_socketState(pTcpSocket->state()),
+ m_pauseMode(pTcpSocket->pauseMode()),
+ m_readBufferSize(pTcpSocket->readBufferSize()),
m_key(),
m_mustMask(true),
m_isClosingHandshakeSent(false),
@@ -365,6 +369,8 @@ void QWebSocketPrivate::open(const QUrl &url, bool mask)
if (Q_LIKELY(m_pSocket)) {
m_pSocket->setSocketOption(QAbstractSocket::LowDelayOption, 1);
m_pSocket->setSocketOption(QAbstractSocket::KeepAliveOption, 1);
+ m_pSocket->setReadBufferSize(m_readBufferSize);
+ m_pSocket->setPauseMode(m_pauseMode);
makeConnections(m_pSocket.data());
connect(sslSocket, &QSslSocket::encryptedBytesWritten, q,
@@ -393,6 +399,8 @@ void QWebSocketPrivate::open(const QUrl &url, bool mask)
if (Q_LIKELY(m_pSocket)) {
m_pSocket->setSocketOption(QAbstractSocket::LowDelayOption, 1);
m_pSocket->setSocketOption(QAbstractSocket::KeepAliveOption, 1);
+ m_pSocket->setReadBufferSize(m_readBufferSize);
+ m_pSocket->setPauseMode(m_pauseMode);
makeConnections(m_pSocket.data());
connect(m_pSocket.data(), &QAbstractSocket::bytesWritten, q,
@@ -1120,10 +1128,7 @@ quint16 QWebSocketPrivate::localPort() const
*/
QAbstractSocket::PauseModes QWebSocketPrivate::pauseMode() const
{
- QAbstractSocket::PauseModes mode = QAbstractSocket::PauseNever;
- if (Q_LIKELY(m_pSocket))
- mode = m_pSocket->pauseMode();
- return mode;
+ return m_pauseMode;
}
/*!
@@ -1183,10 +1188,7 @@ void QWebSocketPrivate::setProxy(const QNetworkProxy &networkProxy)
*/
qint64 QWebSocketPrivate::readBufferSize() const
{
- qint64 size = 0;
- if (Q_LIKELY(m_pSocket))
- size = m_pSocket->readBufferSize();
- return size;
+ return m_readBufferSize;
}
/*!
@@ -1203,8 +1205,9 @@ void QWebSocketPrivate::resume()
*/
void QWebSocketPrivate::setPauseMode(QAbstractSocket::PauseModes pauseMode)
{
+ m_pauseMode = pauseMode;
if (Q_LIKELY(m_pSocket))
- m_pSocket->setPauseMode(pauseMode);
+ m_pSocket->setPauseMode(m_pauseMode);
}
/*!
@@ -1212,8 +1215,9 @@ void QWebSocketPrivate::setPauseMode(QAbstractSocket::PauseModes pauseMode)
*/
void QWebSocketPrivate::setReadBufferSize(qint64 size)
{
+ m_readBufferSize = size;
if (Q_LIKELY(m_pSocket))
- m_pSocket->setReadBufferSize(size);
+ m_pSocket->setReadBufferSize(m_readBufferSize);
}
/*!
diff --git a/src/websockets/qwebsocket_p.h b/src/websockets/qwebsocket_p.h
index f02e7ad..a837aff 100644
--- a/src/websockets/qwebsocket_p.h
+++ b/src/websockets/qwebsocket_p.h
@@ -215,6 +215,8 @@ private:
QString m_protocol;
QString m_extension;
QAbstractSocket::SocketState m_socketState;
+ QAbstractSocket::PauseModes m_pauseMode;
+ qint64 m_readBufferSize;
QByteArray m_key; //identification key used in handshake requests