29564fd8b0d7c89673404c9dd1f94b07fec18ba2
[contrib/qtwebsockets.git] / src / handshakeresponse_p.h
1 #ifndef HANDSHAKERESPONSE_P_H
2 #define HANDSHAKERESPONSE_P_H
3 //
4 //  W A R N I N G
5 //  -------------
6 //
7 // This file is not part of the Qt API.  It exists purely as an
8 // implementation detail.  This header file may change from version to
9 // version without notice, or even be removed.
10 //
11 // We mean it.
12 //
13
14 #include <QObject>
15 #include "qwebsocketprotocol.h"
16
17 class HandshakeRequest;
18 class QString;
19 class QTextStream;
20
21 class HandshakeResponse:public QObject
22 {
23         Q_OBJECT
24 public:
25         HandshakeResponse(const HandshakeRequest &request,
26                                           const QString &serverName,
27                                           bool isOriginAllowed,
28                                           const QList<QWebSocketProtocol::Version> &supportedVersions,
29                                           const QList<QString> &supportedProtocols,
30                                           const QList<QString> &supportedExtensions);
31
32         virtual ~HandshakeResponse();
33
34         bool isValid() const;
35         bool canUpgrade() const;
36         QString getAcceptedProtocol() const;
37         QString getAcceptedExtension() const;
38         QWebSocketProtocol::Version getAcceptedVersion() const;
39
40 public Q_SLOTS:
41
42 Q_SIGNALS:
43
44 private:
45         Q_DISABLE_COPY(HandshakeResponse)
46         bool m_isValid;
47         bool m_canUpgrade;
48         QString m_response;
49         QString m_acceptedProtocol;
50         QString m_acceptedExtension;
51         QWebSocketProtocol::Version m_acceptedVersion;
52
53         QString calculateAcceptKey(const QString &key) const;
54         QString getHandshakeResponse(const HandshakeRequest &request,
55                                                                  const QString &serverName,
56                                                                  bool isOriginAllowed,
57                                                                  const QList<QWebSocketProtocol::Version> &supportedVersions,
58                                                                  const QList<QString> &supportedProtocols,
59                                                                  const QList<QString> &supportedExtensions);
60
61         QTextStream &writeToStream(QTextStream &textStream) const;
62         friend QTextStream &operator <<(QTextStream &stream, const HandshakeResponse &response);
63 };
64
65 #endif // HANDSHAKERESPONSE_P_H