From ddcc8ada42c186e980626ff617be038f45106145 Mon Sep 17 00:00:00 2001 From: Javier Date: Thu, 4 Dec 2014 00:17:28 +0100 Subject: send appmessages one at a time --- daemon/appmsgmanager.h | 33 +++++++++++++++++++++++++++++---- 1 file changed, 29 insertions(+), 4 deletions(-) (limited to 'daemon/appmsgmanager.h') diff --git a/daemon/appmsgmanager.h b/daemon/appmsgmanager.h index bc9c82f..498d3fa 100644 --- a/daemon/appmsgmanager.h +++ b/daemon/appmsgmanager.h @@ -1,6 +1,10 @@ #ifndef APPMSGMANAGER_H #define APPMSGMANAGER_H +#include +#include +#include + #include "watchconnector.h" #include "appmanager.h" @@ -30,16 +34,37 @@ private: WatchConnector::Dict mapAppKeys(const QUuid &uuid, const QVariantMap &data); QVariantMap mapAppKeys(const QUuid &uuid, const WatchConnector::Dict &dict); - static bool unpackPushMessage(const QByteArray &msg, uint *transaction, QUuid *uuid, WatchConnector::Dict *dict); + static bool unpackPushMessage(const QByteArray &msg, quint8 *transaction, QUuid *uuid, WatchConnector::Dict *dict); + + static QByteArray buildPushMessage(quint8 transaction, const QUuid &uuid, const WatchConnector::Dict &dict); + static QByteArray buildAckMessage(quint8 transaction); + static QByteArray buildNackMessage(quint8 transaction); + + void handleLauncherPushMessage(const QByteArray &data); + void handlePushMessage(const QByteArray &data); + void handleAckMessage(const QByteArray &data, bool ack); - static QByteArray buildPushMessage(uint transaction, const QUuid &uuid, const WatchConnector::Dict &dict); - static QByteArray buildAckMessage(uint transaction); - static QByteArray buildNackMessage(uint transaction); + void transmitNextPendingTransaction(); + void abortPendingTransactions(); + +private slots: + void handleWatchConnectedChanged(); + void handleTimeout(); private: AppManager *apps; WatchConnector *watch; quint8 lastTransactionId; + + struct PendingTransaction { + quint8 transactionId; + QUuid uuid; + WatchConnector::Dict dict; + std::function ackCallback; + std::function nackCallback; + }; + QQueue pending; + QTimer *timeout; }; #endif // APPMSGMANAGER_H -- cgit v1.2.3