From: Kurt Pattyn Date: Sun, 25 Aug 2013 13:22:23 +0000 (+0200) Subject: Added missing functionality after a comparison between QWebSocket and QTcpSocket... X-Git-Tag: v5.3.0-alpha1~275 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=abf2543f36e69505ae6da490836de6139e01d466;p=contrib%2Fqtwebsockets.git Added missing functionality after a comparison between QWebSocket and QTcpSocket and between QWebSocketServer and QTcpServer --- diff --git a/src/qwebsocket.cpp b/src/qwebsocket.cpp index 7360105..0a37887 100644 --- a/src/qwebsocket.cpp +++ b/src/qwebsocket.cpp @@ -416,6 +416,14 @@ quint16 QWebSocket::localPort() const } /*! + Returns the pause mode of this socket + */ +QAbstractSocket::PauseModes QWebSocket::pauseMode() const +{ + return d_ptr->pauseMode(); +} + +/*! Returns the peer address */ QHostAddress QWebSocket::peerAddress() const @@ -466,11 +474,32 @@ qint64 QWebSocket::readBufferSize() const } /*! - Sets the proxy to \a networkProxy + Continues data transfer on the socket. This method should only be used after the socket + has been set to pause upon notifications and a notification has been received. + The only notification currently supported is sslErrors(). + Calling this method if the socket is not paused results in undefined behavior. + + \sa pauseMode() and setPauseMode() */ -void QWebSocket::setProxy(const QNetworkProxy &networkProxy) +void QWebSocket::resume() { - d_ptr->setProxy(networkProxy); + d_ptr->resume(); +} + +/*! + Controls whether to pause upon receiving a notification. The \a pauseMode parameter specifies + the conditions in which the socket should be paused. + The only notification currently supported is sslErrors(). + If set to PauseOnSslErrors, data transfer on the socket will be paused + and needs to be enabled explicitly again by calling resume(). + By default, this option is set to PauseNever. This option must be called + before connecting to the server, otherwise it will result in undefined behavior. + + \sa pauseMode() and resume() + */ +void QWebSocket::setPauseMode(QAbstractSocket::PauseModes pauseMode) +{ + d_ptr->setPauseMode(pauseMode); } /** diff --git a/src/qwebsocket.h b/src/qwebsocket.h index 7248b7e..227bc25 100644 --- a/src/qwebsocket.h +++ b/src/qwebsocket.h @@ -41,6 +41,7 @@ public: bool isValid(); QHostAddress localAddress() const; quint16 localPort() const; + QAbstractSocket::PauseModes pauseMode() const; QHostAddress peerAddress() const; QString peerName() const; quint16 peerPort() const; @@ -50,6 +51,10 @@ public: #endif qint64 readBufferSize() const; void setReadBufferSize(qint64 size); + + void resume(); + void setPauseMode(QAbstractSocket::PauseModes pauseMode); + void setSocketOption(QAbstractSocket::SocketOption option, const QVariant &value); QVariant socketOption(QAbstractSocket::SocketOption option); QAbstractSocket::SocketState state() const; diff --git a/src/qwebsocket_p.cpp b/src/qwebsocket_p.cpp index 6dd4528..660c1f3 100644 --- a/src/qwebsocket_p.cpp +++ b/src/qwebsocket_p.cpp @@ -1037,6 +1037,19 @@ quint16 QWebSocketPrivate::localPort() const /*! \internal */ +QAbstractSocket::PauseModes QWebSocketPrivate::pauseMode() const +{ + QAbstractSocket::PauseModes mode = QAbstractSocket::PauseNever; + if (m_pSocket) + { + mode = m_pSocket->pauseMode(); + } + return mode; +} + +/*! + \internal + */ QHostAddress QWebSocketPrivate::peerAddress() const { QHostAddress peer; @@ -1102,6 +1115,28 @@ qint64 QWebSocketPrivate::readBufferSize() const /*! \internal */ +void QWebSocketPrivate::resume() +{ + if (m_pSocket) + { + m_pSocket->resume(); + } +} + +/*! + \internal + */ +void QWebSocketPrivate::setPauseMode(QAbstractSocket::PauseModes pauseMode) +{ + if (m_pSocket) + { + m_pSocket->setPauseMode(pauseMode); + } +} + +/*! + \internal + */ void QWebSocketPrivate::setProxy(const QNetworkProxy &networkProxy) { if (m_pSocket) diff --git a/src/qwebsocket_p.h b/src/qwebsocket_p.h index 9625e82..a921827 100644 --- a/src/qwebsocket_p.h +++ b/src/qwebsocket_p.h @@ -57,6 +57,7 @@ public: bool isValid(); QHostAddress localAddress() const; quint16 localPort() const; + QAbstractSocket::PauseModes pauseMode() const; QHostAddress peerAddress() const; QString peerName() const; quint16 peerPort() const; @@ -65,6 +66,8 @@ public: void setProxy(const QNetworkProxy &networkProxy); #endif 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); diff --git a/src/qwebsocketserver.cpp b/src/qwebsocketserver.cpp index 13c2f98..6ab29a6 100644 --- a/src/qwebsocketserver.cpp +++ b/src/qwebsocketserver.cpp @@ -52,6 +52,14 @@ */ /*! + \fn void WebSocketServer::acceptError(QAbstractSocket::SocketError socketError) + This signal is emitted when accepting a new connection results in an error. + The \a socketError parameter describes the type of error that occurred + + \sa pauseAccepting() and resumeAccepting(). +*/ + +/*! \fn void WebSocketServer::newConnection() This signal is emitted every time a new connection is available. @@ -167,6 +175,14 @@ QWebSocket *QWebSocketServer::nextPendingConnection() } /*! + Pauses incoming new connections. Queued connections will remain in queue. + \sa resumeAccepting() + */ +void QWebSocketServer::pauseAccepting() +{ + d_ptr->pauseAccepting(); +} + #ifndef QT_NO_NETWORKPROXY /*! Returns the network proxy for this socket. By default QNetworkProxy::DefaultProxy is used. @@ -194,6 +210,16 @@ void QWebSocketServer::setProxy(const QNetworkProxy &networkProxy) d_ptr->setProxy(networkProxy); } #endif +/*! + Resumes accepting new connections. + \sa pauseAccepting() + */ +void QWebSocketServer::resumeAccepting() +{ + d_ptr->resumeAccepting(); +} + +/*! Returns the server's address if the server is listening for connections; otherwise returns QHostAddress::Null. \sa serverPort() and listen(). diff --git a/src/qwebsocketserver.h b/src/qwebsocketserver.h index 95adb41..424221e 100644 --- a/src/qwebsocketserver.h +++ b/src/qwebsocketserver.h @@ -55,6 +55,7 @@ protected: virtual bool isOriginAllowed(const QString &origin) const; Q_SIGNALS: + void acceptError(QAbstractSocket::SocketError socketError); void newConnection(); private: diff --git a/src/qwebsocketserver_p.cpp b/src/qwebsocketserver_p.cpp index b5381b4..ee3ef9f 100644 --- a/src/qwebsocketserver_p.cpp +++ b/src/qwebsocketserver_p.cpp @@ -112,6 +112,14 @@ QWebSocket *QWebSocketServerPrivate::nextPendingConnection() return pWebSocket; } +/*! + \internal + */ +void QWebSocketServerPrivate::pauseAccepting() +{ + m_pTcpServer->pauseAccepting(); +} + #ifndef QT_NO_NETWORKPROXY /*! \internal @@ -132,6 +140,14 @@ void QWebSocketServerPrivate::setProxy(const QNetworkProxy &networkProxy) /*! \internal */ +void QWebSocketServerPrivate::resumeAccepting() +{ + m_pTcpServer->resumeAccepting(); +} + +/*! + \internal + */ QHostAddress QWebSocketServerPrivate::serverAddress() const { return m_pTcpServer->serverAddress(); diff --git a/src/qwebsocketserver_p.h b/src/qwebsocketserver_p.h index a853fb4..45b0b87 100644 --- a/src/qwebsocketserver_p.h +++ b/src/qwebsocketserver_p.h @@ -43,10 +43,12 @@ public: bool listen(const QHostAddress &address = QHostAddress::Any, quint16 port = 0); int maxPendingConnections() const; virtual QWebSocket *nextPendingConnection(); + void pauseAccepting(); #ifndef QT_NO_NETWORKPROXY QNetworkProxy proxy() const; void setProxy(const QNetworkProxy &networkProxy); #endif + void resumeAccepting(); QHostAddress serverAddress() const; QAbstractSocket::SocketError serverError() const; quint16 serverPort() const;