MythTV master
upnpsubscription.h
Go to the documentation of this file.
1#ifndef UPNPSUBSCRIPTION_H
2#define UPNPSUBSCRIPTION_H
3
4#include <chrono>
5
6#include <QHash>
7#include <QRecursiveMutex>
8#include <QString>
9#include <QStringList>
10#include <QUrl>
11
14
16
17class Subscription;
18
20{
21 public:
22 UPNPSubscription(const QString &share_path, int port);
23 ~UPNPSubscription() override;
24
25 QStringList GetBasePaths() override // HttpServerExtension
26 { return QStringList( "/Subscriptions" ); }
27 bool ProcessRequest(HTTPRequest *pRequest) override; // HttpServerExtension
28
29 std::chrono::seconds Subscribe(const QString &usn, const QUrl &url, const QString &path);
30 void Unsubscribe(const QString &usn);
31 std::chrono::seconds Renew(const QString &usn);
32 void Remove(const QString &usn);
33
34 private:
35 Q_DISABLE_COPY(UPNPSubscription)
36 static bool SendUnsubscribeRequest(const QString &usn, const QUrl &url,
37 const QString &path, const QString &uuid);
38 static std::chrono::seconds SendSubscribeRequest(const QString &callback,
39 const QString &usn, const QUrl &url,
40 const QString &path, const QString &uuidin,
41 QString &uuidout);
42 private:
43 QHash<QString, Subscription*> m_subscriptions;
44 QRecursiveMutex m_subscriptionLock;
45 QString m_callback {"NOTSET"};
46};
47
48#endif // UPNPSUBSCRIPTION_H
virtual bool ProcessRequest(HTTPRequest *pRequest)=0
Superclass for making an object have a set of listeners.
QRecursiveMutex m_subscriptionLock
QHash< QString, Subscription * > m_subscriptions
QStringList GetBasePaths() override
static void(* m_callback)(void *, QString &)
#define UPNP_PUBLIC
Definition: upnpexp.h:9