Added QT_BEGIN_NAMESPACE and QT_END_NAMESPACE to files
[contrib/qtwebsockets.git] / src / qwebsocketserver_p.h
1 /**
2  * @file websocketserver_p.h
3  * @author Kurt Pattyn (pattyn.kurt@gmail.com)
4  * @brief Defines the private WebSocketServerPrivate class.
5  */
6
7 #ifndef QWEBSOCKETSERVER_P_H
8 #define QWEBSOCKETSERVER_P_H
9 //
10 //  W A R N I N G
11 //  -------------
12 //
13 // This file is not part of the Qt API.  It exists purely as an
14 // implementation detail.  This header file may change from version to
15 // version without notice, or even be removed.
16 //
17 // We mean it.
18 //
19
20 #include <QObject>
21 #include <QQueue>
22 #include <QString>
23 #include <QHostAddress>
24 #include "qwebsocket.h"
25
26 QT_BEGIN_NAMESPACE
27
28 class QTcpServer;
29 class QWebSocketServer;
30
31 class QWebSocketServerPrivate : public QObject
32 {
33         Q_OBJECT
34
35 public:
36         explicit QWebSocketServerPrivate(const QString &serverName, QWebSocketServer * const pWebSocketServer, QObject *parent = 0);
37         virtual ~QWebSocketServerPrivate();
38
39         void close();
40         QString errorString() const;
41         bool hasPendingConnections() const;
42         bool isListening() const;
43         bool listen(const QHostAddress &address = QHostAddress::Any, quint16 port = 0);
44         int maxPendingConnections() const;
45         virtual QWebSocket *nextPendingConnection();
46         QNetworkProxy proxy() const;
47         QHostAddress serverAddress() const;
48         QAbstractSocket::SocketError serverError() const;
49         quint16 serverPort() const;
50         void setMaxPendingConnections(int numConnections);
51         void setProxy(const QNetworkProxy &networkProxy);
52         bool setSocketDescriptor(int socketDescriptor);
53         int socketDescriptor() const;
54         bool waitForNewConnection(int msec = 0, bool *timedOut = 0);
55
56         QList<QWebSocketProtocol::Version> supportedVersions() const;
57         QList<QString> supportedProtocols() const;
58         QList<QString> supportedExtensions() const;
59
60 Q_SIGNALS:
61         void newConnection();
62
63 private Q_SLOTS:
64         void onNewConnection();
65         void onCloseConnection();
66         void handshakeReceived();
67
68 private:
69         QWebSocketServer * const q_ptr;
70
71         QTcpServer *m_pTcpServer;
72         QString m_serverName;
73         QQueue<QWebSocket *> m_pendingConnections;
74
75         void addPendingConnection(QWebSocket *pWebSocket);
76 };
77
78 QT_END_NAMESPACE
79
80 #endif // QWEBSOCKETSERVER_P_H