Added check on QT_NO_NETWORKPROXY to include proxy functionality only when required
[contrib/qtwebsockets.git] / src / qwebsocketserver.h
1 /**
2  * @file websocketserver.h
3  * @author Kurt Pattyn (pattyn.kurt@gmail.com)
4  * @brief Defines the WebSocketServer class.
5  */
6
7 #ifndef QWEBSOCKETSERVER_H
8 #define QWEBSOCKETSERVER_H
9
10 #include <QObject>
11 #include <QString>
12 #include <QHostAddress>
13 #include "qwebsocketsglobal.h"
14 #include "qwebsocketprotocol.h"
15
16 QT_BEGIN_NAMESPACE
17
18 class QWebSocketServerPrivate;
19 class QWebSocket;
20
21 class Q_WEBSOCKETS_EXPORT QWebSocketServer : public QObject
22 {
23         Q_OBJECT
24
25 public:
26         explicit QWebSocketServer(const QString &serverName, QObject *parent = 0);
27         virtual ~QWebSocketServer();
28
29         void close();
30         QString errorString() const;
31         bool hasPendingConnections() const;
32         bool isListening() const;
33         bool listen(const QHostAddress &address = QHostAddress::Any, quint16 port = 0);
34         int maxPendingConnections() const;
35         virtual QWebSocket *nextPendingConnection();
36         QNetworkProxy proxy() const;
37         QHostAddress serverAddress() const;
38         QAbstractSocket::SocketError serverError() const;
39         quint16 serverPort() const;
40         void setMaxPendingConnections(int numConnections);
41         void setProxy(const QNetworkProxy &networkProxy);
42         bool setSocketDescriptor(int socketDescriptor);
43         int socketDescriptor() const;
44         bool waitForNewConnection(int msec = 0, bool *timedOut = 0);
45 #ifndef QT_NO_NETWORKPROXY
46         void setProxy(const QNetworkProxy &networkProxy);
47         QNetworkProxy proxy() const;
48 #endif
49
50         QList<QWebSocketProtocol::Version> supportedVersions() const;
51         QList<QString> supportedProtocols() const;
52         QList<QString> supportedExtensions() const;
53
54 protected:
55         virtual bool isOriginAllowed(const QString &origin) const;
56
57 Q_SIGNALS:
58         void newConnection();
59
60 private:
61         Q_DISABLE_COPY(QWebSocketServer)
62         QWebSocketServerPrivate * const d_ptr;
63         friend class QWebSocketServerPrivate;
64 };
65
66 QT_END_NAMESPACE
67
68 #endif // QWEBSOCKETSERVER_H