123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687 |
- //
- // Created by Tobias Hieta on 31/03/15.
- //
- #ifndef KONVERGO_REMOTESUBSCRIBER_H
- #define KONVERGO_REMOTESUBSCRIBER_H
- #include <QObject>
- #include <QUrl>
- #include <QDateTime>
- #include <QDomDocument>
- #include <QNetworkReply>
- #include <QQueue>
- #include "qhttpresponse.h"
- /////////////////////////////////////////////////////////////////////////////////////////
- class RemoteSubscriber : public QObject
- {
- public:
- RemoteSubscriber(const QString& clientIdentifier, const QString& deviceName, const QUrl& address, QObject* parent = 0);
- void reSubscribe();
- int lastSubscribe() const { return m_subscribeTime.elapsed(); }
- QString deviceName();
- QString clientIdentifier();
- virtual void sendUpdate();
- void timelineFinished(QNetworkReply* reply);
- void queueTimeline(quint64 playerCommandID, const QByteArray& timelineData);
- QByteArray getTimeline();
- void setCommandId(quint64 playerCommandId, quint64 controllerCommandId);
- quint64 mostRecentCommandId()
- {
- QMutexLocker lk(&m_commandIdMapLock);
- if (!m_commandIdQueue.isEmpty() && !m_commandIdMap.isEmpty())
- return m_commandIdMap[m_commandIdQueue.last()];
- else
- return 0;
- }
- quint64 commandId(quint64 playerCommandId)
- {
- QMutexLocker lk(&m_commandIdMapLock);
- if (m_commandIdMap.contains(playerCommandId))
- return m_commandIdMap[playerCommandId];
- lk.unlock();
- return mostRecentCommandId();
- }
- private:
- QMutex m_commandIdMapLock;
- QHash<quint64, quint64> m_commandIdMap;
- QQueue<quint64> m_commandIdQueue;
- QNetworkAccessManager* m_netAccess;
- QUrl m_address;
- QTime m_subscribeTime;
- QMutex m_timelineLock;
- QDomDocument m_timeline;
- protected:
- QString m_clientIdentifier;
- QString m_deviceName;
- #if 0
- quint16 m_errors;
- #endif
- };
- /////////////////////////////////////////////////////////////////////////////////////////
- class RemotePollSubscriber : public RemoteSubscriber
- {
- public:
- RemotePollSubscriber(const QString& clientIdentifier, const QString& deviceName, QHttpResponse *response, QObject* parent = 0);
- void setHTTPResponse(QHttpResponse *response);
- virtual void sendUpdate();
- private :
- QHttpResponse* m_response;
- public Q_SLOTS:
- void responseDone();
- };
- #endif //KONVERGO_REMOTESUBSCRIBER_H
|