Replaced write() methods with send() methods to comply with the QAbstractSocket API
[contrib/qtwebsockets.git] / src / qwebsocket.h
1 /**
2  * @file websocket.h
3  * @brief Defines the WebSocket class.
4  *
5  * \note Currently, only V13 (RFC6455) is supported.
6  * \note Both text and binary websockets are supported.
7  * \note The secure version (wss) is currently not implemented.
8  * @author Kurt Pattyn (pattyn.kurt@gmail.com)
9  */
10
11 #ifndef QWEBSOCKET_H
12 #define QWEBSOCKET_H
13
14 #include <QUrl>
15 #include <QAbstractSocket>
16 #include <QHostAddress>
17 #include <QNetworkProxy>
18 #include <QTime>
19 #include "qwebsocketsglobal.h"
20 #include "qwebsocketprotocol.h"
21
22 class QTcpSocket;
23 class QWebSocketPrivate;
24
25 class Q_WEBSOCKETS_EXPORT QWebSocket:public QObject
26 {
27         Q_OBJECT
28
29 public:
30         explicit QWebSocket(QString origin = QString(), QWebSocketProtocol::Version version = QWebSocketProtocol::V_LATEST, QObject *parent = 0);
31         virtual ~QWebSocket();
32
33         void abort();
34         QAbstractSocket::SocketError error() const;
35         QString errorString() const;
36         bool flush();
37         bool isValid();
38         QHostAddress localAddress() const;
39         quint16 localPort() const;
40         QHostAddress peerAddress() const;
41         QString peerName() const;
42         quint16 peerPort() const;
43         QNetworkProxy proxy() const;
44         qint64 readBufferSize() const;
45         void setProxy(const QNetworkProxy &networkProxy);
46         void setReadBufferSize(qint64 size);
47         void setSocketOption(QAbstractSocket::SocketOption option, const QVariant &value);
48         QVariant socketOption(QAbstractSocket::SocketOption option);
49         QAbstractSocket::SocketState state() const;
50
51         bool waitForConnected(int msecs = 30000);
52         bool waitForDisconnected(int msecs = 30000);
53
54         QWebSocketProtocol::Version version();
55         QString resourceName();
56         QUrl requestUrl();
57         QString origin();
58         QString protocol();
59         QString extension();
60
61         qint64 write(const char *message);              //send data as text
62         qint64 write(const char *message, qint64 maxSize);              //send data as text
63         qint64 write(const QString &message);   //send data as text
64         qint64 write(const QByteArray &data);   //send data as binary
65
66 public Q_SLOTS:
67         virtual void close(QWebSocketProtocol::CloseCode closeCode = QWebSocketProtocol::CC_NORMAL, QString reason = QString());
68         virtual void open(const QUrl &url, bool mask = true);
69         void ping();
70
71 Q_SIGNALS:
72         void aboutToClose();
73         void connected();
74         void disconnected();
75         void stateChanged(QAbstractSocket::SocketState state);
76         void proxyAuthenticationRequired(const QNetworkProxy &proxy, QAuthenticator *pAuthenticator);
77         void readChannelFinished();
78         void textFrameReceived(QString frame, bool isLastFrame);
79         void binaryFrameReceived(QByteArray frame, bool isLastFrame);
80         void textMessageReceived(QString message);
81         void binaryMessageReceived(QByteArray message);
82         void error(QAbstractSocket::SocketError error);
83         void pong(quint64 elapsedTime);
84
85 private:
86         Q_DISABLE_COPY(QWebSocket)
87         QWebSocket(QTcpSocket *pTcpSocket, QWebSocketProtocol::Version version, QObject *parent = 0);
88         QWebSocketPrivate * const d_ptr;
89
90         friend class QWebSocketPrivate;
91 };
92
93 #endif // QWEBSOCKET_H