00001 #ifndef UPNPSUBSCRIPTION_H
00002 #define UPNPSUBSCRIPTION_H
00003
00004 #include "mythevent.h"
00005 #include "upnp.h"
00006
00007 class Subscription;
00008
00009 class UPNP_PUBLIC UPNPSubscription : public HttpServerExtension, public MythObservable
00010 {
00011 public:
00012 UPNPSubscription(const QString &share_path, int port);
00013 virtual ~UPNPSubscription();
00014
00015 virtual QStringList GetBasePaths() { return QStringList( "/Subscriptions" ); }
00016 virtual bool ProcessRequest(HTTPRequest *pRequest);
00017
00018 int Subscribe(const QString &usn, const QUrl &url, const QString &path);
00019 void Unsubscribe(const QString &usn);
00020 int Renew(const QString &usn);
00021 void Remove(const QString &usn);
00022
00023 private:
00024 static bool SendUnsubscribeRequest(const QString &usn, const QUrl &url,
00025 const QString &path, const QString &uuid);
00026 static int SendSubscribeRequest(const QString &callback,
00027 const QString &usn, const QUrl &url,
00028 const QString &path, const QString &uuidin,
00029 QString &uuidout);
00030 private:
00031 QHash<QString, Subscription*> m_subscriptions;
00032 QMutex m_subscriptionLock;
00033 QString m_callback;
00034 };
00035
00036 #endif // UPNPSUBSCRIPTION_H