#include <QtNetwork/QSslSocket>
#endif
#include <QtCore/QTime>
+#include <private/qobject_p.h>
#include "qwebsocketprotocol.h"
#include "qwebsocketdataprocessor_p.h"
+#include "qdefaultmaskgenerator_p.h"
QT_BEGIN_NAMESPACE
class QWebSocketHandshakeResponse;
class QTcpSocket;
class QWebSocket;
+class QMaskGenerator;
struct QWebSocketConfiguration
{
QTcpSocket *m_pSocket;
};
-class QWebSocketPrivate : public QObject
+class QWebSocketPrivate : public QObjectPrivate
{
- Q_OBJECT
Q_DISABLE_COPY(QWebSocketPrivate)
- Q_DECLARE_PUBLIC(QWebSocket)
public:
+ Q_DECLARE_PUBLIC(QWebSocket)
explicit QWebSocketPrivate(const QString &origin,
QWebSocketProtocol::Version version,
- QWebSocket * const pWebSocket,
- QObject *parent = Q_NULLPTR);
+ QWebSocket * const pWebSocket);
virtual ~QWebSocketPrivate();
void init();
QNetworkProxy proxy() const;
void setProxy(const QNetworkProxy &networkProxy);
#endif
+ void setMaskGenerator(const QMaskGenerator *maskGenerator);
+ const QMaskGenerator *maskGenerator() const;
qint64 readBufferSize() const;
void resume();
void setPauseMode(QAbstractSocket::PauseModes pauseMode);
void setReadBufferSize(qint64 size);
- void setSocketOption(QAbstractSocket::SocketOption option, const QVariant &value);
- QVariant socketOption(QAbstractSocket::SocketOption option);
QAbstractSocket::SocketState state() const;
QWebSocketProtocol::Version version() const;
QWebSocketProtocol::CloseCode closeCode() const;
QString closeReason() const;
- qint64 sendTextMessage(const QString &message) Q_REQUIRED_RESULT;
- qint64 sendBinaryMessage(const QByteArray &data) Q_REQUIRED_RESULT;
+ qint64 sendTextMessage(const QString &message);
+ qint64 sendBinaryMessage(const QByteArray &data);
#ifndef QT_NO_SSL
void ignoreSslErrors(const QList<QSslError> &errors);
+ void ignoreSslErrors();
void setSslConfiguration(const QSslConfiguration &sslConfiguration);
QSslConfiguration sslConfiguration() const;
#endif
-public Q_SLOTS:
void close(QWebSocketProtocol::CloseCode closeCode, QString reason);
void open(const QUrl &url, bool mask);
void ping(const QByteArray &payload);
-#ifndef QT_NO_SSL
- void ignoreSslErrors();
-#endif
-
-private Q_SLOTS:
- void processData();
- void processPing(const QByteArray &data);
- void processPong(const QByteArray &data);
- void processClose(QWebSocketProtocol::CloseCode closeCode, QString closeReason);
- void processHandshake(QTcpSocket *pSocket);
- void processStateChanged(QAbstractSocket::SocketState socketState);
-
-private:
QWebSocket * const q_ptr;
+private:
QWebSocketPrivate(QTcpSocket *pTcpSocket, QWebSocketProtocol::Version version,
- QWebSocket *pWebSocket, QObject *parent = Q_NULLPTR);
+ QWebSocket *pWebSocket);
void setVersion(QWebSocketProtocol::Version version);
void setResourceName(const QString &resourceName);
void setRequestUrl(const QUrl &requestUrl);
void setSocketState(QAbstractSocket::SocketState state);
void setErrorString(const QString &errorString);
+ void processData();
+ void processPing(const QByteArray &data);
+ void processPong(const QByteArray &data);
+ void processClose(QWebSocketProtocol::CloseCode closeCode, QString closeReason);
+ void processHandshake(QTcpSocket *pSocket);
+ void processStateChanged(QAbstractSocket::SocketState socketState);
+
qint64 doWriteFrames(const QByteArray &data, bool isBinary) Q_REQUIRED_RESULT;
void makeConnections(const QTcpSocket *pTcpSocket);
quint32 generateMaskingKey() const;
QByteArray generateKey() const;
- quint32 generateRandomNumber() const;
qint64 writeFrames(const QList<QByteArray> &frames) Q_REQUIRED_RESULT;
qint64 writeFrame(const QByteArray &frame) Q_REQUIRED_RESULT;
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
QWebSocketDataProcessor m_dataProcessor;
QWebSocketConfiguration m_configuration;
+ QMaskGenerator *m_pMaskGenerator;
+ QDefaultMaskGenerator m_defaultMaskGenerator;
+
friend class QWebSocketServerPrivate;
};