MythTV master
playbacksock.h
Go to the documentation of this file.
1#ifndef PLAYBACKSOCK_H_
2#define PLAYBACKSOCK_H_
3
4#include <vector>
5
6#include <QStringList>
7#include <QDateTime>
8#include <QMutex>
9#include <QSize>
10
12#include "libmythbase/programinfo.h" // ProgramInfo
13#include "libmythbase/programtypes.h" // RecStatus::Type
15#include "libmythtv/inputinfo.h"
16
17class MythSocket;
18class MainServer;
19class ProgramInfo;
20
21enum PlaybackSockEventsMode : std::uint8_t {
26};
27
29{
30 public:
32 QString lhostname, PlaybackSockEventsMode eventsMode);
33
34 void SetDisconnected(void) { m_disconnected = true; }
35 bool IsDisconnected(void) const { return m_disconnected; }
36
37 MythSocket *getSocket(void) const { return m_sock; }
38 QString getHostname(void) const { return m_hostname; }
39
40 bool isLocal(void) const { return m_local; }
41 bool wantsEvents(void) const;
42 bool wantsNonSystemEvents(void) const;
43 bool wantsSystemEvents(void) const;
44 bool wantsOnlySystemEvents(void) const;
46
47 bool getBlockShutdown(void) const { return m_blockshutdown; }
48 void setBlockShutdown(bool value) { m_blockshutdown = value; }
49
50 bool IsFrontend(void) const { return m_frontend; }
51 void SetAsFrontend(void) { m_frontend = true; }
52
53 // all backend<->backend stuff below here
54 bool isSlaveBackend(void) const { return m_backend; }
55 void setAsSlaveBackend(void) { m_backend = true; m_mediaserver = true; }
56
57 bool isMediaServer(void) const { return m_mediaserver; }
58 void setAsMediaServer(void) { m_mediaserver = true; }
59
60 void setIP(const QString &lip) { m_ip = lip; }
61 QString getIP(void) const { return m_ip; }
62
63 bool GoToSleep(void);
65 int DeleteFile(const QString &filename, const QString &sgroup);
66 int StopRecording(const ProgramInfo *pginfo);
67 int CheckRecordingActive(const ProgramInfo *pginfo);
68 int DeleteRecording(const ProgramInfo *pginfo, bool forceMetadataDelete = false);
69 bool FillProgramInfo(ProgramInfo &pginfo, const QString &playbackhost);
70 QStringList GetSGFileList(const QString &host, const QString &groupname,
71 const QString &directory, bool fileNamesOnly);
72 QStringList GetSGFileQuery(const QString &host, const QString &groupname,
73 const QString &filename);
74 QString GetFileHash(const QString& filename, const QString& storageGroup);
75 QStringList GetFindFile(const QString &host, const QString &filename,
76 const QString &storageGroup, bool useRegex);
77
78 QStringList GenPreviewPixmap(const QString &token,
79 const ProgramInfo *pginfo);
80 QStringList GenPreviewPixmap(const QString &token,
81 const ProgramInfo *pginfo,
82 std::chrono::seconds time,
83 long long frame,
84 const QString &outputFile,
85 QSize outputSize);
86 QDateTime PixmapLastModified(const ProgramInfo *pginfo);
87 bool CheckFile(ProgramInfo *pginfo);
88
89 bool IsBusy(int capturecardnum,
90 InputInfo *busy_input = nullptr,
91 std::chrono::seconds time_buffer = 5s);
92 int GetEncoderState(int capturecardnum);
93 long long GetMaxBitrate(int capturecardnum);
95 bool EncoderIsRecording(int capturecardnum, const ProgramInfo *pginfo);
96 RecStatus::Type StartRecording(int capturecardnum,
97 ProgramInfo *pginfo);
98 RecStatus::Type GetRecordingStatus(int capturecardnum);
99 void RecordPending(int capturecardnum, const ProgramInfo *pginfo,
100 std::chrono::seconds secsleft, bool hasLater);
101 std::chrono::milliseconds SetSignalMonitoringRate(int capturecardnum, std::chrono::milliseconds rate, int notifyFrontend);
102 void SetNextLiveTVDir(int capturecardnum, const QString& dir);
103 void CancelNextRecording(int capturecardnum, bool cancel);
104
105 QStringList ForwardRequest(const QStringList &slist);
106
107 bool ReadStringList(QStringList &list);
108
109 bool AddChildInput(uint childid);
110
111 // Enforce reference counting
112 protected:
113 ~PlaybackSock() override;
114
115 private:
116 bool SendReceiveStringList(QStringList &strlist, uint min_reply_length = 0);
117
118 MythSocket *m_sock {nullptr};
119 QString m_hostname;
120 QString m_ip;
121
122 bool m_local {true};
124 bool m_blockshutdown {true};
125 bool m_backend {false};
126 bool m_mediaserver {false};
127 bool m_frontend {false};
128
130
131 bool m_disconnected {false};
132};
133
134#endif
135
136/* vim: set expandtab tabstop=4 shiftwidth=4: */
Class for communcating between myth backends and frontends.
Definition: mythsocket.h:26
QString getHostname(void) const
Definition: playbacksock.h:38
MythSocket * m_sock
Definition: playbacksock.h:118
void SetDisconnected(void)
Definition: playbacksock.h:34
QDateTime PixmapLastModified(const ProgramInfo *pginfo)
bool isSlaveBackend(void) const
Definition: playbacksock.h:54
int DeleteRecording(const ProgramInfo *pginfo, bool forceMetadataDelete=false)
~PlaybackSock() override
bool m_mediaserver
Definition: playbacksock.h:126
bool IsBusy(int capturecardnum, InputInfo *busy_input=nullptr, std::chrono::seconds time_buffer=5s)
bool isLocal(void) const
Definition: playbacksock.h:40
void CancelNextRecording(int capturecardnum, bool cancel)
RecStatus::Type GetRecordingStatus(int capturecardnum)
bool FillProgramInfo(ProgramInfo &pginfo, const QString &playbackhost)
bool GoToSleep(void)
Tells a slave to go to sleep.
void setAsMediaServer(void)
Definition: playbacksock.h:58
long long GetMaxBitrate(int capturecardnum)
bool getBlockShutdown(void) const
Definition: playbacksock.h:47
QStringList GenPreviewPixmap(const QString &token, const ProgramInfo *pginfo)
bool wantsNonSystemEvents(void) const
QMutex m_sockLock
Definition: playbacksock.h:129
QString m_hostname
Definition: playbacksock.h:119
bool wantsEvents(void) const
void setBlockShutdown(bool value)
Definition: playbacksock.h:48
void setAsSlaveBackend(void)
Definition: playbacksock.h:55
void setIP(const QString &lip)
Definition: playbacksock.h:60
FileSystemInfoList GetDiskSpace()
Gets the total and used space in kilobytes for the host's directories.
int DeleteFile(const QString &filename, const QString &sgroup)
bool wantsOnlySystemEvents(void) const
QString GetFileHash(const QString &filename, const QString &storageGroup)
bool CheckFile(ProgramInfo *pginfo)
bool IsDisconnected(void) const
Definition: playbacksock.h:35
QStringList GetSGFileQuery(const QString &host, const QString &groupname, const QString &filename)
PlaybackSockEventsMode m_eventsMode
Definition: playbacksock.h:123
QStringList GetFindFile(const QString &host, const QString &filename, const QString &storageGroup, bool useRegex)
bool SendReceiveStringList(QStringList &strlist, uint min_reply_length=0)
ProgramInfo * GetRecording(uint cardid)
Returns the ProgramInfo being used by any current recording.
PlaybackSockEventsMode eventsMode(void) const
int CheckRecordingActive(const ProgramInfo *pginfo)
bool IsFrontend(void) const
Definition: playbacksock.h:50
std::chrono::milliseconds SetSignalMonitoringRate(int capturecardnum, std::chrono::milliseconds rate, int notifyFrontend)
bool isMediaServer(void) const
Definition: playbacksock.h:57
QStringList GetSGFileList(const QString &host, const QString &groupname, const QString &directory, bool fileNamesOnly)
bool EncoderIsRecording(int capturecardnum, const ProgramInfo *pginfo)
void RecordPending(int capturecardnum, const ProgramInfo *pginfo, std::chrono::seconds secsleft, bool hasLater)
QString m_ip
Definition: playbacksock.h:120
int GetEncoderState(int capturecardnum)
Returns the maximum bits per second the recorder can produce.
bool ReadStringList(QStringList &list)
RecStatus::Type StartRecording(int capturecardnum, ProgramInfo *pginfo)
QStringList ForwardRequest(const QStringList &slist)
void SetAsFrontend(void)
Definition: playbacksock.h:51
bool m_blockshutdown
Definition: playbacksock.h:124
QString getIP(void) const
Definition: playbacksock.h:61
bool wantsSystemEvents(void) const
PlaybackSock(MythSocket *lsock, QString lhostname, PlaybackSockEventsMode eventsMode)
void SetNextLiveTVDir(int capturecardnum, const QString &dir)
bool m_disconnected
Definition: playbacksock.h:131
bool AddChildInput(uint childid)
Tells a slave to add a child input.
MythSocket * getSocket(void) const
Definition: playbacksock.h:37
int StopRecording(const ProgramInfo *pginfo)
Holds information on recordings and videos.
Definition: programinfo.h:68
General purpose reference counter.
QVector< FileSystemInfo > FileSystemInfoList
unsigned int uint
Definition: freesurround.h:24
PlaybackSockEventsMode
Definition: playbacksock.h:21
@ kPBSEvents_None
Definition: playbacksock.h:22
@ kPBSEvents_SystemOnly
Definition: playbacksock.h:25
@ kPBSEvents_Normal
Definition: playbacksock.h:23
@ kPBSEvents_NonSystem
Definition: playbacksock.h:24