diff options
author | Kurt Pattyn <pattyn.kurt@gmail.com> | 2013-11-02 12:49:57 +0100 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2013-11-02 12:51:38 +0100 |
commit | 800ec535e684befd60c7fa11baff5dafbc9f020c (patch) | |
tree | b13591079718e361fbd74f378f44a5d9c90759f1 | |
parent | 97c8e5a36dde11ddf238678e5711e5979c2c106b (diff) | |
download | qtwebsockets-800ec535e684befd60c7fa11baff5dafbc9f020c.tar.gz |
Move non-public methods from websocketprotocol to private header
Add bigendian conversion of masks to unit tests
Change-Id: I3f23fb62aac1c6d06e5fafb1bd4bc47cc03765ce
Reviewed-by: Kurt Pattyn <pattyn.kurt@gmail.com>
-rw-r--r-- | src/websockets/qwebsocket_p.cpp | 1 | ||||
-rw-r--r-- | src/websockets/qwebsocketdataprocessor_p.cpp | 1 | ||||
-rw-r--r-- | src/websockets/qwebsocketframe_p.cpp | 1 | ||||
-rw-r--r-- | src/websockets/qwebsocketprotocol.h | 18 | ||||
-rw-r--r-- | src/websockets/qwebsocketprotocol_p.cpp (renamed from src/websockets/qwebsocketprotocol.cpp) | 2 | ||||
-rw-r--r-- | src/websockets/qwebsocketprotocol_p.h | 75 | ||||
-rw-r--r-- | src/websockets/websockets.pro | 3 | ||||
-rw-r--r-- | tests/auto/dataprocessor/tst_dataprocessor.cpp | 1 | ||||
-rw-r--r-- | tests/auto/websocketframe/tst_websocketframe.cpp | 1 | ||||
-rw-r--r-- | tests/auto/websocketprotocol/tst_websocketprotocol.cpp | 11 |
10 files changed, 90 insertions, 24 deletions
diff --git a/src/websockets/qwebsocket_p.cpp b/src/websockets/qwebsocket_p.cpp index 90116a3..b9d7e62 100644 --- a/src/websockets/qwebsocket_p.cpp +++ b/src/websockets/qwebsocket_p.cpp @@ -41,6 +41,7 @@ #include "qwebsocket.h" #include "qwebsocket_p.h" +#include "qwebsocketprotocol_p.h" #include "qwebsockethandshakerequest_p.h" #include "qwebsockethandshakeresponse_p.h" #include <QUrl> diff --git a/src/websockets/qwebsocketdataprocessor_p.cpp b/src/websockets/qwebsocketdataprocessor_p.cpp index b2b3cf9..733bb50 100644 --- a/src/websockets/qwebsocketdataprocessor_p.cpp +++ b/src/websockets/qwebsocketdataprocessor_p.cpp @@ -54,6 +54,7 @@ */ #include "qwebsocketdataprocessor_p.h" #include "qwebsocketprotocol.h" +#include "qwebsocketprotocol_p.h" #include "qwebsocketframe_p.h" #include <QtEndian> #include <limits.h> diff --git a/src/websockets/qwebsocketframe_p.cpp b/src/websockets/qwebsocketframe_p.cpp index 26a8f09..d93bd59 100644 --- a/src/websockets/qwebsocketframe_p.cpp +++ b/src/websockets/qwebsocketframe_p.cpp @@ -53,6 +53,7 @@ */ #include "qwebsocketframe_p.h" +#include "qwebsocketprotocol_p.h" #include <QtEndian> #include <QDebug> diff --git a/src/websockets/qwebsocketprotocol.h b/src/websockets/qwebsocketprotocol.h index 1a4097d..0fd342b 100644 --- a/src/websockets/qwebsocketprotocol.h +++ b/src/websockets/qwebsocketprotocol.h @@ -48,7 +48,6 @@ QT_BEGIN_NAMESPACE class QString; -class QByteArray; namespace QWebSocketProtocol { @@ -105,23 +104,6 @@ enum OpCode OC_RESERVED_F = 0xF }; - -inline bool isOpCodeReserved(OpCode code) -{ - return ((code > OC_BINARY) && (code < OC_CLOSE)) || (code > OC_PONG); -} -inline bool isCloseCodeValid(int closeCode) -{ - return (closeCode > 999) && (closeCode < 5000) && - (closeCode != CC_RESERVED_1004) && //see RFC6455 7.4.1 - (closeCode != CC_MISSING_STATUS_CODE) && - (closeCode != CC_ABNORMAL_DISCONNECTION) && - ((closeCode >= 3000) || (closeCode < 1012)); -} - -void Q_AUTOTEST_EXPORT mask(QByteArray *payload, quint32 maskingKey); -void Q_AUTOTEST_EXPORT mask(char *payload, quint64 size, quint32 maskingKey); - inline Version currentVersion() { return V_LATEST; } } //end namespace QWebSocketProtocol diff --git a/src/websockets/qwebsocketprotocol.cpp b/src/websockets/qwebsocketprotocol_p.cpp index 7068981..4316a4b 100644 --- a/src/websockets/qwebsocketprotocol.cpp +++ b/src/websockets/qwebsocketprotocol_p.cpp @@ -39,7 +39,7 @@ ** ****************************************************************************/ -#include "qwebsocketprotocol.h" +#include "private/qwebsocketprotocol_p.h" #include <QString> #include <QSet> #include <QtEndian> diff --git a/src/websockets/qwebsocketprotocol_p.h b/src/websockets/qwebsocketprotocol_p.h new file mode 100644 index 0000000..e775179 --- /dev/null +++ b/src/websockets/qwebsocketprotocol_p.h @@ -0,0 +1,75 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the QtWebSockets module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QWEBSOCKETPROTOCOL_P_H +#define QWEBSOCKETPROTOCOL_P_H + +#include <qglobal.h> +#include "QtWebSockets/qwebsocketprotocol.h" + +QT_BEGIN_NAMESPACE + +class QString; +class QByteArray; + +namespace QWebSocketProtocol +{ +inline bool isOpCodeReserved(OpCode code) +{ + return ((code > OC_BINARY) && (code < OC_CLOSE)) || (code > OC_PONG); +} + +inline bool isCloseCodeValid(int closeCode) +{ + return (closeCode > 999) && (closeCode < 5000) && + (closeCode != CC_RESERVED_1004) && //see RFC6455 7.4.1 + (closeCode != CC_MISSING_STATUS_CODE) && + (closeCode != CC_ABNORMAL_DISCONNECTION) && + ((closeCode >= 3000) || (closeCode < 1012)); +} + +void Q_AUTOTEST_EXPORT mask(QByteArray *payload, quint32 maskingKey); +void Q_AUTOTEST_EXPORT mask(char *payload, quint64 size, quint32 maskingKey); +} //end namespace QWebSocketProtocol + +QT_END_NAMESPACE + +#endif // QWEBSOCKETPROTOCOL_P_H diff --git a/src/websockets/websockets.pro b/src/websockets/websockets.pro index 84bf8e3..f17fcbd 100644 --- a/src/websockets/websockets.pro +++ b/src/websockets/websockets.pro @@ -21,6 +21,7 @@ PUBLIC_HEADERS += \ PRIVATE_HEADERS += \ $$PWD/qwebsocket_p.h \ $$PWD/qwebsocketserver_p.h \ + $$PWD/qwebsocketprotocol_p.h \ $$PWD/qwebsockethandshakerequest_p.h \ $$PWD/qwebsockethandshakeresponse_p.h \ $$PWD/qwebsocketdataprocessor_p.h \ @@ -32,7 +33,7 @@ SOURCES += \ $$PWD/qwebsocket_p.cpp \ $$PWD/qwebsocketserver.cpp \ $$PWD/qwebsocketserver_p.cpp \ - $$PWD/qwebsocketprotocol.cpp \ + $$PWD/qwebsocketprotocol_p.cpp \ $$PWD/qwebsockethandshakerequest_p.cpp \ $$PWD/qwebsockethandshakeresponse_p.cpp \ $$PWD/qwebsocketdataprocessor_p.cpp \ diff --git a/tests/auto/dataprocessor/tst_dataprocessor.cpp b/tests/auto/dataprocessor/tst_dataprocessor.cpp index 8a2930f..3edf57d 100644 --- a/tests/auto/dataprocessor/tst_dataprocessor.cpp +++ b/tests/auto/dataprocessor/tst_dataprocessor.cpp @@ -46,6 +46,7 @@ #include <QDebug> #include "private/qwebsocketdataprocessor_p.h" +#include "private/qwebsocketprotocol_p.h" const quint8 FIN = 0x80; const quint8 RSV1 = 0x40; diff --git a/tests/auto/websocketframe/tst_websocketframe.cpp b/tests/auto/websocketframe/tst_websocketframe.cpp index 9cd94fe..1cdd201 100644 --- a/tests/auto/websocketframe/tst_websocketframe.cpp +++ b/tests/auto/websocketframe/tst_websocketframe.cpp @@ -45,6 +45,7 @@ #include <QtEndian> #include "private/qwebsocketframe_p.h" +#include "private/qwebsocketprotocol_p.h" #include "qwebsocketprotocol.h" QT_USE_NAMESPACE diff --git a/tests/auto/websocketprotocol/tst_websocketprotocol.cpp b/tests/auto/websocketprotocol/tst_websocketprotocol.cpp index e9e05e3..8bbacd4 100644 --- a/tests/auto/websocketprotocol/tst_websocketprotocol.cpp +++ b/tests/auto/websocketprotocol/tst_websocketprotocol.cpp @@ -40,9 +40,12 @@ ****************************************************************************/ #include <QtTest/QtTest> #include <QtTest/qtestcase.h> +#include <QtEndian> + #include <QDebug> #include "qwebsocketprotocol.h" +#include "private/qwebsocketprotocol_p.h" QT_USE_NAMESPACE @@ -98,10 +101,10 @@ void tst_WebSocketProtocol::tst_validMasks_data() QTest::addColumn<QString>("inputdata"); QTest::addColumn<QByteArray>("result"); - QTest::newRow("Empty payload") << 0x12345678u << QString("") << QByteArray(""); - QTest::newRow("ASCII payload of 8 characters") << 0x12345678u << QString("abcdefgh") << QByteArray("\x19\x34\x57\x76\x1D\x30\x53\x7A"); - QTest::newRow("ASCII payload of 9 characters") << 0x12345678u << QString("abcdefghi") << QByteArray("\x19\x34\x57\x76\x1D\x30\x53\x7A\x11"); - QTest::newRow("UTF-8 payload") << 0x12345678u << QString("∫∂ƒ©øØ") << QByteArray("\x47\x69\x0B\xBB\x80\x8E"); + QTest::newRow("Empty payload") << qToBigEndian<quint32>(0x12345678u) << QString("") << QByteArray(""); + QTest::newRow("ASCII payload of 8 characters") << qToBigEndian<quint32>(0x12345678u) << QString("abcdefgh") << QByteArray("\x19\x34\x57\x76\x1D\x30\x53\x7A"); + QTest::newRow("ASCII payload of 9 characters") << qToBigEndian<quint32>(0x12345678u) << QString("abcdefghi") << QByteArray("\x19\x34\x57\x76\x1D\x30\x53\x7A\x11"); + QTest::newRow("UTF-8 payload") << qToBigEndian<quint32>(0x12345678u) << QString("∫∂ƒ©øØ") << QByteArray("\x47\x69\x0B\xBB\x80\x8E"); } void tst_WebSocketProtocol::tst_validMasks() |