summaryrefslogtreecommitdiff
path: root/saltoqd/toqmanager.h
diff options
context:
space:
mode:
Diffstat (limited to 'saltoqd/toqmanager.h')
-rw-r--r--saltoqd/toqmanager.h54
1 files changed, 54 insertions, 0 deletions
diff --git a/saltoqd/toqmanager.h b/saltoqd/toqmanager.h
new file mode 100644
index 0000000..0edd6ec
--- /dev/null
+++ b/saltoqd/toqmanager.h
@@ -0,0 +1,54 @@
+#ifndef TOQMANAGER_H
+#define TOQMANAGER_H
+
+#include <functional>
+#include <QtCore/QObject>
+
+#include "toqconnection.h"
+
+class VersionManager;
+class SystemManager;
+class StorageManager;
+class MusicManager;
+class CommManager;
+
+class ToqManager : public QObject
+{
+ Q_OBJECT
+public:
+ explicit ToqManager(const QBluetoothAddress &address, QObject *parent = 0);
+
+ struct EndpointHandler {
+ virtual void handleMessage(const ToqConnection::Message &msg) = 0;
+ };
+
+ void setEndpointListener(ToqConnection::Endpoint ep, EndpointHandler *handler);
+
+ bool isConnected() const;
+ void sendMessage(const ToqConnection::Message &msg);
+ void sendMessage(ToqConnection::Endpoint source, ToqConnection::Endpoint destination,
+ quint16 transactionId, quint32 type, const QJsonObject &payload);
+ quint16 sendMessage(ToqConnection::Endpoint source, ToqConnection::Endpoint destination,
+ quint32 type, const QJsonObject &payload);
+ void sendReply(const ToqConnection::Message &msg, quint32 type, const QJsonObject &payload);
+
+private slots:
+ void handleToqMessage(const ToqConnection::Message &msg);
+
+private:
+ ToqConnection *_conn;
+ QHash<ToqConnection::Endpoint, EndpointHandler*> _handlers;
+
+ VersionManager *_versionManager;
+ SystemManager *_systemManager;
+ StorageManager *_storageManager;
+ MusicManager *_musicManager;
+ CommManager *_commManager;
+};
+
+inline bool ToqManager::isConnected() const
+{
+ return _conn->isConnected();
+}
+
+#endif // TOQMANAGER_H