summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/websockets/qwebsocket_p.cpp33
-rw-r--r--src/websockets/qwebsocket_p.h2
-rw-r--r--src/websockets/qwebsocketdataprocessor.cpp13
-rw-r--r--src/websockets/qwebsocketdataprocessor_p.h2
4 files changed, 25 insertions, 25 deletions
diff --git a/src/websockets/qwebsocket_p.cpp b/src/websockets/qwebsocket_p.cpp
index 659e283..5a95215 100644
--- a/src/websockets/qwebsocket_p.cpp
+++ b/src/websockets/qwebsocket_p.cpp
@@ -108,7 +108,6 @@ QWebSocketPrivate::QWebSocketPrivate(const QString &origin, QWebSocketProtocol::
m_closeCode(QWebSocketProtocol::CloseCodeNormal),
m_closeReason(),
m_pingTimer(),
- m_dataProcessor(),
m_configuration(),
m_pMaskGenerator(&m_defaultMaskGenerator),
m_defaultMaskGenerator(),
@@ -141,7 +140,6 @@ QWebSocketPrivate::QWebSocketPrivate(QTcpSocket *pTcpSocket, QWebSocketProtocol:
m_closeCode(QWebSocketProtocol::CloseCodeNormal),
m_closeReason(),
m_pingTimer(),
- m_dataProcessor(),
m_configuration(),
m_pMaskGenerator(&m_defaultMaskGenerator),
m_defaultMaskGenerator(),
@@ -159,6 +157,7 @@ void QWebSocketPrivate::init()
Q_ASSERT(q_ptr);
Q_ASSERT(m_pMaskGenerator);
+ m_dataProcessor->setParent(q_ptr);
m_pMaskGenerator->seed();
if (m_pSocket) {
@@ -391,7 +390,7 @@ void QWebSocketPrivate::open(const QNetworkRequest &request, bool mask)
}
//if (m_url != url)
if (Q_LIKELY(!m_pSocket)) {
- m_dataProcessor.clear();
+ m_dataProcessor->clear();
m_isClosingHandshakeReceived = false;
m_isClosingHandshakeSent = false;
@@ -622,21 +621,21 @@ void QWebSocketPrivate::makeConnections(QTcpSocket *pTcpSocket)
}
}
- QObject::connect(&m_dataProcessor, &QWebSocketDataProcessor::textFrameReceived, q,
+ QObject::connect(m_dataProcessor, &QWebSocketDataProcessor::textFrameReceived, q,
&QWebSocket::textFrameReceived);
- QObject::connect(&m_dataProcessor, &QWebSocketDataProcessor::binaryFrameReceived, q,
+ QObject::connect(m_dataProcessor, &QWebSocketDataProcessor::binaryFrameReceived, q,
&QWebSocket::binaryFrameReceived);
- QObject::connect(&m_dataProcessor, &QWebSocketDataProcessor::binaryMessageReceived, q,
+ QObject::connect(m_dataProcessor, &QWebSocketDataProcessor::binaryMessageReceived, q,
&QWebSocket::binaryMessageReceived);
- QObject::connect(&m_dataProcessor, &QWebSocketDataProcessor::textMessageReceived, q,
+ QObject::connect(m_dataProcessor, &QWebSocketDataProcessor::textMessageReceived, q,
&QWebSocket::textMessageReceived);
- QObjectPrivate::connect(&m_dataProcessor, &QWebSocketDataProcessor::errorEncountered, this,
+ QObjectPrivate::connect(m_dataProcessor, &QWebSocketDataProcessor::errorEncountered, this,
&QWebSocketPrivate::close);
- QObjectPrivate::connect(&m_dataProcessor, &QWebSocketDataProcessor::pingReceived, this,
+ QObjectPrivate::connect(m_dataProcessor, &QWebSocketDataProcessor::pingReceived, this,
&QWebSocketPrivate::processPing);
- QObjectPrivate::connect(&m_dataProcessor, &QWebSocketDataProcessor::pongReceived, this,
+ QObjectPrivate::connect(m_dataProcessor, &QWebSocketDataProcessor::pongReceived, this,
&QWebSocketPrivate::processPong);
- QObjectPrivate::connect(&m_dataProcessor, &QWebSocketDataProcessor::closeReceived, this,
+ QObjectPrivate::connect(m_dataProcessor, &QWebSocketDataProcessor::closeReceived, this,
&QWebSocketPrivate::processClose);
//fire readyread, in case we already have data inside the tcpSocket
@@ -651,7 +650,7 @@ void QWebSocketPrivate::releaseConnections(const QTcpSocket *pTcpSocket)
{
if (Q_LIKELY(pTcpSocket))
pTcpSocket->disconnect();
- m_dataProcessor.disconnect();
+ m_dataProcessor->disconnect();
}
/*!
@@ -1181,7 +1180,7 @@ void QWebSocketPrivate::processData()
if (!m_pSocket->canReadLine())
return;
processHandshake(m_pSocket);
- } else if (!m_dataProcessor.process(m_pSocket)) {
+ } else if (!m_dataProcessor->process(m_pSocket)) {
return;
}
}
@@ -1311,7 +1310,7 @@ void QWebSocketPrivate::setSocketState(QAbstractSocket::SocketState state)
*/
void QWebSocketPrivate::setMaxAllowedIncomingFrameSize(quint64 maxAllowedIncomingFrameSize)
{
- m_dataProcessor.setMaxAllowedFrameSize(maxAllowedIncomingFrameSize);
+ m_dataProcessor->setMaxAllowedFrameSize(maxAllowedIncomingFrameSize);
}
/*!
@@ -1319,7 +1318,7 @@ void QWebSocketPrivate::setMaxAllowedIncomingFrameSize(quint64 maxAllowedIncomin
*/
quint64 QWebSocketPrivate::maxAllowedIncomingFrameSize() const
{
- return m_dataProcessor.maxAllowedFrameSize();
+ return m_dataProcessor->maxAllowedFrameSize();
}
/*!
@@ -1327,7 +1326,7 @@ quint64 QWebSocketPrivate::maxAllowedIncomingFrameSize() const
*/
void QWebSocketPrivate::setMaxAllowedIncomingMessageSize(quint64 maxAllowedIncomingMessageSize)
{
- m_dataProcessor.setMaxAllowedMessageSize(maxAllowedIncomingMessageSize);
+ m_dataProcessor->setMaxAllowedMessageSize(maxAllowedIncomingMessageSize);
}
/*!
@@ -1335,7 +1334,7 @@ void QWebSocketPrivate::setMaxAllowedIncomingMessageSize(quint64 maxAllowedIncom
*/
quint64 QWebSocketPrivate::maxAllowedIncomingMessageSize() const
{
- return m_dataProcessor.maxAllowedMessageSize();
+ return m_dataProcessor->maxAllowedMessageSize();
}
/*!
diff --git a/src/websockets/qwebsocket_p.h b/src/websockets/qwebsocket_p.h
index 640e7b2..ad667aa 100644
--- a/src/websockets/qwebsocket_p.h
+++ b/src/websockets/qwebsocket_p.h
@@ -242,7 +242,7 @@ private:
QElapsedTimer m_pingTimer;
- QWebSocketDataProcessor m_dataProcessor;
+ QWebSocketDataProcessor *m_dataProcessor = new QWebSocketDataProcessor();
QWebSocketConfiguration m_configuration;
QMaskGenerator *m_pMaskGenerator;
diff --git a/src/websockets/qwebsocketdataprocessor.cpp b/src/websockets/qwebsocketdataprocessor.cpp
index 4110f2a..0d2e927 100644
--- a/src/websockets/qwebsocketdataprocessor.cpp
+++ b/src/websockets/qwebsocketdataprocessor.cpp
@@ -84,13 +84,14 @@ QWebSocketDataProcessor::QWebSocketDataProcessor(QObject *parent) :
m_textMessage(),
m_payloadLength(0),
m_pConverterState(nullptr),
- m_pTextCodec(QTextCodec::codecForName("UTF-8"))
+ m_pTextCodec(QTextCodec::codecForName("UTF-8")),
+ m_waitTimer(new QTimer(this))
{
clear();
// initialize the internal timeout timer
- waitTimer.setInterval(5000);
- waitTimer.setSingleShot(true);
- waitTimer.callOnTimeout(this, &QWebSocketDataProcessor::timeout);
+ m_waitTimer->setInterval(5000);
+ m_waitTimer->setSingleShot(true);
+ m_waitTimer->callOnTimeout(this, &QWebSocketDataProcessor::timeout);
}
/*!
@@ -163,8 +164,8 @@ bool QWebSocketDataProcessor::process(QIODevice *pIoDevice)
if (!frame.isDone()) {
// waiting for more data available
QObject::connect(pIoDevice, &QIODevice::readyRead,
- &waitTimer, &QTimer::stop, Qt::UniqueConnection);
- waitTimer.start();
+ m_waitTimer, &QTimer::stop, Qt::UniqueConnection);
+ m_waitTimer->start();
return false;
} else if (Q_LIKELY(frame.isValid())) {
if (frame.isControlFrame()) {
diff --git a/src/websockets/qwebsocketdataprocessor_p.h b/src/websockets/qwebsocketdataprocessor_p.h
index 62a2dc0..d540089 100644
--- a/src/websockets/qwebsocketdataprocessor_p.h
+++ b/src/websockets/qwebsocketdataprocessor_p.h
@@ -120,7 +120,7 @@ private:
QTextCodec::ConverterState *m_pConverterState;
QTextCodec *m_pTextCodec;
QWebSocketFrame frame;
- QTimer waitTimer;
+ QTimer *m_waitTimer;
quint64 m_maxAllowedMessageSize = MAX_MESSAGE_SIZE_IN_BYTES;
bool processControlFrame(const QWebSocketFrame &frame);