18#include <QHostAddress>
20#include <QRegularExpression>
28#include "msocketdevice.h"
32static constexpr const char*
SSDP_GROUP {
"239.255.255.250" };
72 QRegularExpression m_procReqLineExp {
"\\s+"};
73 constexpr static int kNumberOfSockets = 3;
74 std::array<MSocketDevice*,kNumberOfSockets> m_sockets {
nullptr,
nullptr,
nullptr};
78 int m_nServicePort {0};
81 bool m_bAnnouncementsEnabled {
false};
83 bool m_bTermRequested {
false};
96 bool ProcessSearchRequest (
const QStringMap &sHeaders,
97 const QHostAddress& peerAddress,
98 quint16 peerPort )
const;
99 static bool ProcessSearchResponse(
const QStringMap &sHeaders );
100 static bool ProcessNotify (
const QStringMap &sHeaders );
106 const QString &sDefault );
108 void ProcessData ( MSocketDevice *pSocket );
116 static inline const QString kBackendURI =
"urn:schemas-mythtv-org:device:MasterMediaServer:1";
118 static SSDP* Instance();
119 static void Shutdown();
123 void RequestTerminate(
void);
125 void PerformSearch(
const QString &sST, std::chrono::seconds
timeout = 2s);
127 void EnableNotifications (
int nServicePort );
128 void DisableNotifications();
This is a wrapper around QThread that does several additional things.
virtual void run(void)
Runs the Qt event loop unless we have a QRunnable, in which case we run the runnable run instead.
void addListener(QObject *listener)
Add a listener to the observable.
void removeListener(QObject *listener)
Remove a listener to the observable.
static SSDPCache * Instance()
SSDPCacheEntries * Find(const QString &sURI)
Finds the SSDPCacheEntries in the cache, returns nullptr when absent.
~SSDPExtension() override=default
void GetFile(HTTPRequest *pRequest, const QString &sFileName)
void GetDeviceDesc(HTTPRequest *pRequest) const
static void GetDeviceList(HTTPRequest *pRequest)
SSDPExtension(int nServicePort, const QString &sSharePath)
bool ProcessRequest(HTTPRequest *pRequest) override
static SSDPMethod GetMethod(const QString &sURI)
QStringList GetBasePaths() override
static SSDPCacheEntries * Find(const QString &sURI)
static void RemoveListener(QObject *listener)
static void AddListener(QObject *listener)
static DeviceLocation * Find(const QString &sURI, const QString &sUSN)
static constexpr uint16_t SSDP_PORT
static constexpr uint16_t SSDP_SEARCHPORT
static constexpr const char * SSDP_GROUP
QMap< QString, QString > QStringMap