MythTV master
mythfilerecorder.h
Go to the documentation of this file.
1#ifndef MYTH_FILE_RECORDER_H
2#define MYTH_FILE_RECORDER_H
3
4#include <QObject>
5#include <QFile>
6#include <QString>
7
8#include <cstdint>
9#include <sys/types.h>
10#include <unistd.h>
11
13
14class Commands;
15
16class Streamer : public QObject
17{
18 Q_OBJECT
19
20 public slots:
21 void CloseFile(void);
22 void SendBytes(void);
23
24 public:
25 Streamer(Commands *parent, QString fname, int data_rate,
26 bool loopinput);
27 ~Streamer(void) override;
28 void BlockSize(int val) { m_blockSize = val; }
29 bool IsOpen(void) const { return m_file; }
30 QString ErrorString(void) const { return m_error; }
31
32 protected:
33 void OpenFile(void);
34
35 private:
36 Commands *m_parent { nullptr };
37 QString m_fileName;
38 QFile *m_file { nullptr };
39 bool m_loop;
40
41 QString m_error;
42
43 QByteArray m_buffer;
44 int m_bufferMax { 188 * 100000 };
45 QAtomicInt m_blockSize { m_bufferMax / 4 };
46
47 // Regulate data rate
48 uint m_dataRate; // bytes per second
49 QDateTime m_startTime; // When the first packet was processed
50 quint64 m_dataRead { 0 }; // How many bytes have been sent
51};
52
53class Commands : public QObject
54{
55 Q_OBJECT
56
57 signals:
58 void CloseFile(void);
59 void SendBytes(void);
60
61 public:
62 Commands(void);
63 ~Commands(void) override = default;
64 bool Run(const QString & filename, int data_rate, bool loopinput);
65 void setEoF(void) { m_eof = 1; }
66
67 protected:
68 bool send_status(const QString & status) const;
69 bool process_command(QString & cmd);
70
71 private:
72 QString m_fileName;
73 Streamer *m_streamer { nullptr };
74 int m_timeout { 10 };
75 bool m_run { true };
76 QAtomicInt m_eof { 0 };
77};
78
79#endif // MYTH_FILE_RECORDER_H
Streamer * m_streamer
bool process_command(QString &cmd)
void SendBytes(void)
void CloseFile(void)
QAtomicInt m_eof
bool send_status(const QString &status) const
QString m_fileName
~Commands(void) override=default
void Run(void)
void setEoF(void)
void SendBytes(void)
QByteArray m_buffer
Commands * m_parent
void BlockSize(int val)
QDateTime m_startTime
void CloseFile(void)
QString m_fileName
QFile * m_file
void OpenFile(void)
~Streamer(void) override
QString ErrorString(void) const
quint64 m_dataRead
QAtomicInt m_blockSize
QString m_error
bool IsOpen(void) const
Streamer(Commands *parent, QString fname, int data_rate, bool loopinput)
unsigned int uint
Definition: freesurround.h:24