MythTV  master
programs/mythbackend/filetransfer.h
Go to the documentation of this file.
1 #ifndef FILETRANSFER_H_
2 #define FILETRANSFER_H_
3 
4 // C++ headers
5 #include <cstdint>
6 #include <vector>
7 
8 // Qt headers
9 #include <QMutex>
10 #include <QWaitCondition>
11 
12 // MythTV headers
14 
15 class ProgramInfo;
16 class MythMediaBuffer;
17 class MythSocket;
18 class QString;
19 
21 {
22  friend class QObject; // quiet OSX gcc warning
23 
24  public:
25  BEFileTransfer(QString &filename, MythSocket *remote,
26  bool usereadahead, std::chrono::milliseconds timeout);
27  BEFileTransfer(QString &filename, MythSocket *remote, bool write);
28 
29  MythSocket *getSocket() { return m_sock; }
30 
31  bool isOpen(void);
32  bool ReOpen(const QString& newFilename = "");
33 
34  void Stop(void);
35 
36  void Pause(void);
37  void Unpause(void);
38  int RequestBlock(int size);
39  int WriteBlock(int size);
40 
41  long long Seek(long long curpos, long long pos, int whence);
42 
43  uint64_t GetFileSize(void);
44  QString GetFileName(void);
45 
46  void SetTimeout(bool fast);
47 
48  private:
49  ~BEFileTransfer() override;
50 
51  volatile bool m_readthreadlive {true};
52  bool m_readsLocked {false};
53  QWaitCondition m_readsUnlockedCond;
54 
55  ProgramInfo *m_pginfo {nullptr};
57  MythSocket *m_sock {nullptr};
58  bool m_ateof {false};
59 
60  std::vector<char> m_requestBuffer;
61 
62  QMutex m_lock;
63 
64  bool m_writemode {false};
65 };
66 
67 #endif
hardwareprofile.smolt.timeout
float timeout
Definition: smolt.py:102
BEFileTransfer::getSocket
MythSocket * getSocket()
Definition: programs/mythbackend/filetransfer.h:29
mythburn.write
def write(text, progress=True)
Definition: mythburn.py:308
MythMediaBuffer
Definition: mythmediabuffer.h:50
BEFileTransfer::isOpen
bool isOpen(void)
Definition: programs/mythbackend/filetransfer.cpp:65
BEFileTransfer::m_rbuffer
MythMediaBuffer * m_rbuffer
Definition: programs/mythbackend/filetransfer.h:56
BEFileTransfer::ReOpen
bool ReOpen(const QString &newFilename="")
Definition: programs/mythbackend/filetransfer.cpp:70
BEFileTransfer::GetFileName
QString GetFileName(void)
Definition: programs/mythbackend/filetransfer.cpp:269
BEFileTransfer::m_pginfo
ProgramInfo * m_pginfo
Definition: programs/mythbackend/filetransfer.h:55
BEFileTransfer::m_requestBuffer
std::vector< char > m_requestBuffer
Definition: programs/mythbackend/filetransfer.h:60
MythSocket
Class for communcating between myth backends and frontends.
Definition: mythsocket.h:25
BEFileTransfer::m_lock
QMutex m_lock
Definition: programs/mythbackend/filetransfer.h:62
BEFileTransfer::SetTimeout
void SetTimeout(bool fast)
Definition: programs/mythbackend/filetransfer.cpp:277
BEFileTransfer::~BEFileTransfer
~BEFileTransfer() override
Definition: programs/mythbackend/filetransfer.cpp:45
referencecounter.h
BEFileTransfer::m_readsLocked
bool m_readsLocked
Definition: programs/mythbackend/filetransfer.h:52
BEFileTransfer::Unpause
void Unpause(void)
Definition: programs/mythbackend/filetransfer.cpp:113
ProgramInfo
Holds information on recordings and videos.
Definition: programinfo.h:67
BEFileTransfer::QObject
friend class QObject
Definition: programs/mythbackend/filetransfer.h:22
BEFileTransfer::m_readsUnlockedCond
QWaitCondition m_readsUnlockedCond
Definition: programs/mythbackend/filetransfer.h:53
BEFileTransfer::Seek
long long Seek(long long curpos, long long pos, int whence)
Definition: programs/mythbackend/filetransfer.cpp:229
BEFileTransfer::RequestBlock
int RequestBlock(int size)
Definition: programs/mythbackend/filetransfer.cpp:128
BEFileTransfer::Pause
void Pause(void)
Definition: programs/mythbackend/filetransfer.cpp:101
BEFileTransfer::GetFileSize
uint64_t GetFileSize(void)
Definition: programs/mythbackend/filetransfer.cpp:261
BEFileTransfer::BEFileTransfer
BEFileTransfer(QString &filename, MythSocket *remote, bool usereadahead, std::chrono::milliseconds timeout)
Definition: programs/mythbackend/filetransfer.cpp:19
BEFileTransfer::m_sock
MythSocket * m_sock
Definition: programs/mythbackend/filetransfer.h:57
BEFileTransfer::WriteBlock
int WriteBlock(int size)
Definition: programs/mythbackend/filetransfer.cpp:168
BEFileTransfer::m_readthreadlive
volatile bool m_readthreadlive
Definition: programs/mythbackend/filetransfer.h:51
BEFileTransfer
Definition: programs/mythbackend/filetransfer.h:20
BEFileTransfer::m_writemode
bool m_writemode
Definition: programs/mythbackend/filetransfer.h:64
build_compdb.filename
filename
Definition: build_compdb.py:21
BEFileTransfer::Stop
void Stop(void)
Definition: programs/mythbackend/filetransfer.cpp:81
ReferenceCounter
General purpose reference counter.
Definition: referencecounter.h:26
BEFileTransfer::m_ateof
bool m_ateof
Definition: programs/mythbackend/filetransfer.h:58