automotive-message-broker  0.14.803
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Groups Pages
bmws.h
1 #ifndef BM_WS_H_
2 #define BM_WS_H_
3 
4 #include <QObject>
5 #include <QtWebSockets/QWebSocket>
6 #include <QtWebSockets/QWebSocketServer>
7 
8 #include <memory>
9 
10 class Websockets : public QObject
11 {
12  Q_OBJECT
13 public:
14  Websockets(QObject* parent = nullptr);
15 
16 public Q_SLOTS:
17  QObject * createClient(const QString & url, const QStringList &protocols);
18  QObject * createServer(bool useSsl = false);
19 };
20 
21 namespace BinaryType
22 {
23  extern QString Blob;
24  extern QString ArrayBuffer;
25 
26  extern bool validType(const QString & t);
27 }
28 
29 class WebsocketClient : public QObject
30 {
31  Q_OBJECT
32  Q_PROPERTY(int readyState READ readyState)
33  Q_PROPERTY(QString url READ getUrl)
34  Q_PROPERTY(QString binaryType READ binaryType WRITE setBinaryType)
35 
36 public:
37  WebsocketClient(const QString & url, QObject* parent = nullptr, QWebSocket *ws = nullptr);
38  WebsocketClient(QWebSocket * other, QObject *parent = nullptr);
39 
40  ~WebsocketClient();
41 
42  int readyState();
43  QString getUrl() { return mUrl; }
44 
45  QString binaryType() { return mBinaryType; }
46  void setBinaryType(const QString & bt)
47  {
48  if(!BinaryType::validType(bt))
49  return;
50 
51  mBinaryType = bt;
52  }
53 
54 public Q_SLOTS:
55  void open();
56  void send(const QByteArray &msg);
57  void close() { mSocket->close(); }
58 
59  QString errorString() { return mSocket->errorString(); }
60 
61 Q_SIGNALS:
62 
63  void connected();
64  void disconnected();
65  void stateChanged(QAbstractSocket::SocketState state);
66  void textMessageReceived(const QString &message);
67  void binaryMessageReceived(const QByteArray &message);
68  void error(QAbstractSocket::SocketError error);
69 
70 private:
71  QString mUrl;
72  QString mBinaryType;
73  QWebSocket * mSocket;
74 };
75 
76 class WebsocketServer : public QObject
77 {
78  Q_OBJECT
79  Q_PROPERTY(QString serverName READ serverName WRITE setServerName)
80  Q_PROPERTY(int secureMode READ secureMode)
81 
82 public:
83  WebsocketServer(bool ssl = false, QObject * parent = nullptr);
84  ~WebsocketServer();
85 
86  QString serverName() { return mServer->serverName(); }
87  void setServerName(const QString & n) { mServer->setServerName(n); }
88 
89  int secureMode();
90  void setSecureMode(int mode);
91 
92 public Q_SLOTS:
93 
94  void listen(quint16 port);
95  void close();
96 
97 Q_SIGNALS:
98  void newConnection(QObject * socket);
99 
100 private:
101  QWebSocketServer * mServer;
102 };
103 
104 #endif