MythTV master
httptsstreamhandler.h
Go to the documentation of this file.
1#ifndef HTTPTSSTREAMHANDLER_H
2#define HTTPTSSTREAMHANDLER_H
3
4#include <vector>
5
6#include <QString>
7#include <QMutex>
8#include <QMap>
9#include <QNetworkAccessManager>
10#include <QNetworkRequest>
11#include <QNetworkReply>
12
13#include "channelutil.h"
14#include "iptvstreamhandler.h"
15
16class HTTPReader;
17
19{
20 friend class HTTPReader;
21 public:
22 static HTTPTSStreamHandler* Get(const IPTVTuningData& tuning, int inputid);
23 static void Return(HTTPTSStreamHandler * & ref, int inputid);
24
25protected:
26 explicit HTTPTSStreamHandler(const IPTVTuningData &tuning, int inputid);
27 ~HTTPTSStreamHandler(void) override;
28 void run(void) override; // MThread
29
30 protected:
31 HTTPReader* m_reader {nullptr};
32 // for implementing Get & Return
33 static QMutex s_httphandlers_lock;
34 static QMap<QString, HTTPTSStreamHandler*> s_httphandlers;
35 static QMap<QString, uint> s_httphandlers_refcnt;
36};
37
38
39class MTV_PUBLIC HTTPReader : public QObject
40{
41 Q_OBJECT
42
43 public:
44 explicit HTTPReader(HTTPTSStreamHandler* parent) :
45 m_parent(parent) {}
46 void Cancel(void);
47 bool DownloadStream(const QUrl& url);
48
49 protected:
50 void ReadBytes();
51 void WriteBytes();
52
53 private slots:
54 void HttpRead();
55
56 private:
57 QString m_url;
58 HTTPTSStreamHandler *m_parent {nullptr};
59 QTimer m_timer;
60 QNetworkAccessManager m_mgr;
61 QNetworkReply *m_reply {nullptr};
62 QMutex m_lock;
65 uint8_t *m_buffer {nullptr};
66 bool m_ok {true};
67 qint64 m_size {0};
68};
69
70#endif // HTTPTSSTREAMHANDLER_H
QNetworkAccessManager m_mgr
HTTPReader(HTTPTSStreamHandler *parent)
static QMap< QString, uint > s_httphandlers_refcnt
void run(void) override
Runs the Qt event loop unless we have a QRunnable, in which case we run the runnable run instead.
static HTTPTSStreamHandler * Get(const IPTVTuningData &tuning, int inputid)
static QMap< QString, HTTPTSStreamHandler * > s_httphandlers
static QMutex s_httphandlers_lock
~HTTPTSStreamHandler(void) override
static void Return(HTTPTSStreamHandler *&ref, int inputid)
HTTPTSStreamHandler(const IPTVTuningData &tuning, int inputid)
#define MTV_PUBLIC
Definition: mythtvexp.h:15