4807cd5b4c180f9de63edc8469c2047f620c6f11
[apps/homescreen.git] / homescreen / src / aglsocketwrapper.h
1 #ifndef AGLSOCKETWRAPPER_H
2 #define AGLSOCKETWRAPPER_H
3
4 #include <QUrl>
5 #include <QMap>
6 #include <QObject>
7 #include <QJsonValue>
8
9 #include <functional>
10
11 class QWebSocket;
12 class AglSocketWrapper : public QObject
13 {
14     Q_OBJECT
15 public:
16     explicit AglSocketWrapper(QObject *parent = nullptr);
17
18     void open(const QUrl &url);
19     void close();
20
21     using ApiCallback = std::function<void(bool, const QJsonValue&)>;
22     void apiCall(const QString &api, const QString &verb, const QJsonValue &args = QJsonValue(),
23                  ApiCallback callback = nullptr);
24
25 signals:
26     void connected();
27     void disconnected();
28     void eventReceived(const QString &eventName, const QJsonValue &data);
29
30 private:
31     QWebSocket *m_socket;
32     QMap<QString, ApiCallback> m_callbacks;
33 };
34
35 #endif // AGLSOCKETWRAPPER_H