MythTV  master
mainserver.h
Go to the documentation of this file.
1 #ifndef MAINSERVER_H_
2 #define MAINSERVER_H_
3 
4 #include <utility>
5 #include <vector>
6 
7 // Qt headers
8 #include <QReadWriteLock>
9 #include <QStringList>
10 #include <QRunnable>
11 #include <QEvent>
12 #include <QMutex>
13 #include <QHash>
14 #include <QMap>
15 
16 // MythTV headers
17 #include "libmythbase/exitcodes.h"
19 #include "libmythbase/mythdeque.h"
21 #include "libmythbase/mythsocket.h"
22 #include "libmythtv/livetvchain.h"
23 #include "libmythtv/tv.h"
24 
25 // mythbackend headers
26 #include "autoexpire.h"
27 #include "encoderlink.h"
28 #include "filetransfer.h"
29 #include "playbacksock.h"
30 #include "scheduler.h"
31 
32 #ifdef DeleteFile
33 #undef DeleteFile
34 #endif
35 
36 class QUrl;
37 class MythServer;
38 class QTimer;
39 class FileSystemInfo;
40 class MetadataFactory;
41 class FreeSpaceUpdater;
42 
44 {
45  friend class MainServer;
46  public:
47  DeleteStruct(MainServer *ms, QString filename, QString title,
48  uint chanid, QDateTime recstartts, QDateTime recendts,
49  uint recordedId,
50  bool forceMetadataDelete) :
51  m_ms(ms), m_filename(std::move(filename)), m_title(std::move(title)),
52  m_chanid(chanid), m_recstartts(std::move(recstartts)),
53  m_recendts(std::move(recendts)), m_recordedid(recordedId),
54  m_forceMetadataDelete(forceMetadataDelete)
55  {
56  }
57 
58  DeleteStruct(MainServer *ms, QString filename, int fd, off_t size) :
59  m_ms(ms), m_filename(std::move(filename)), m_fd(fd), m_size(size)
60  {
61  }
62 
63  protected:
64  MainServer *m_ms {nullptr};
65  QString m_filename;
66  QString m_title;
68  QDateTime m_recstartts;
69  QDateTime m_recendts;
71  bool m_forceMetadataDelete {false};
72  int m_fd {-1};
74 };
75 
76 class DeleteThread : public QRunnable, public DeleteStruct
77 {
78  public:
79  DeleteThread(MainServer *ms, const QString& filename, const QString& title, uint chanid,
80  QDateTime recstartts, QDateTime recendts, uint recordingId,
81  bool forceMetadataDelete) :
82  DeleteStruct(ms, filename, title, chanid, std::move(recstartts),
83  std::move(recendts), recordingId, forceMetadataDelete) {}
84  void start(void)
85  { MThreadPool::globalInstance()->startReserved(this, "DeleteThread"); }
86  void run(void) override; // QRunnable
87 };
88 
89 class TruncateThread : public QRunnable, public DeleteStruct
90 {
91  public:
92  TruncateThread(MainServer *ms, const QString& filename, int fd, off_t size) :
93  DeleteStruct(ms, filename, fd, size) {}
94  void start(void)
95  { MThreadPool::globalInstance()->start(this, "Truncate"); }
96  void run(void) override; // QRunnable
97 };
98 
99 class RenameThread : public QRunnable
100 {
101 public:
103  QString src, QString dst)
104  : m_ms(ms), m_pbs(pbs), m_src(std::move(src)), m_dst(std::move(dst)) {}
105  void run(void) override; // QRunnable
106 
107 private:
108  static QMutex s_renamelock;
109 
112  QString m_src, m_dst;
113 };
114 
115 class MainServer : public QObject, public MythSocketCBs
116 {
117  Q_OBJECT
118 
119  friend class DeleteThread;
120  friend class TruncateThread;
121  friend class FreeSpaceUpdater;
122  friend class RenameThread;
123  public:
124  MainServer(bool master, int port,
125  QMap<int, EncoderLink *> *tvList,
127 
128  ~MainServer() override;
129 
130  void Stop(void);
131 
132  void customEvent(QEvent *e) override; // QObject
133 
134  bool isClientConnected(bool onlyBlockingClients = false);
135  void ShutSlaveBackendsDown(const QString &haltcmd);
136 
137  void ProcessRequest(MythSocket *sock);
138 
139  void readyRead(MythSocket *socket) override; // MythSocketCBs
140  void connectionClosed(MythSocket *socket) override; // MythSocketCBs
141  void connectionFailed([[maybe_unused]] MythSocket *socket) override {}; // MythSocketCBs
142  void connected([[maybe_unused]] MythSocket *socket) override {}; // MythSocketCBs
143 
144  void DeletePBS(PlaybackSock *sock);
145 
146  size_t GetCurrentMaxBitrate(void);
147  void BackendQueryDiskSpace(QStringList &strlist, bool consolidated,
148  bool allHosts);
149  void GetFilesystemInfos(QList<FileSystemInfo> &fsInfos,
150  bool useCache=true);
151 
152  int GetExitCode() const { return m_exitCode; }
153 
154  void UpdateSystemdStatus(void);
155  void GetActiveBackends(QStringList &hosts);
157 
158  protected slots:
159  void reconnectTimeout(void);
160  void deferredDeleteSlot(void);
161  static void autoexpireUpdate(void);
162 
163  private slots:
164  void NewConnection(qintptr socketDescriptor);
165 
166  private:
167 
168  void ProcessRequestWork(MythSocket *sock);
169  void HandleAnnounce(QStringList &slist, QStringList commands,
170  MythSocket *socket);
171  void HandleDone(MythSocket *socket);
173  void HandleIsActiveBackendQuery(const QStringList &slist, PlaybackSock *pbs);
174  void HandleMoveFile(PlaybackSock *pbs, const QString &storagegroup,
175  const QString &src, const QString &dst);
176  bool HandleDeleteFile(const QStringList &slist, PlaybackSock *pbs);
177  bool HandleDeleteFile(const QString& filename, const QString& storagegroup,
178  PlaybackSock *pbs = nullptr);
179  void HandleQueryRecordings(const QString& type, PlaybackSock *pbs);
180  void HandleQueryRecording(QStringList &slist, PlaybackSock *pbs);
181  void HandleStopRecording(QStringList &slist, PlaybackSock *pbs);
183  void HandleDeleteRecording(QString &chanid, QString &starttime,
184  PlaybackSock *pbs, bool forceMetadataDelete,
185  bool forgetHistory);
186  void HandleDeleteRecording(QStringList &slist, PlaybackSock *pbs,
187  bool forceMetadataDelete);
189  bool forceMetadataDelete, bool lexpirer=false,
190  bool forgetHistory=false);
191  void HandleUndeleteRecording(QStringList &slist, PlaybackSock *pbs);
193  void HandleForgetRecording(QStringList &slist, PlaybackSock *pbs);
194  void HandleRescheduleRecordings(const QStringList &request,
195  PlaybackSock *pbs);
196  bool HandleAddChildInput(uint inputid);
198  void HandleQueryFreeSpace(PlaybackSock *pbs, bool allHosts);
200  void HandleQueryCheckFile(QStringList &slist, PlaybackSock *pbs);
201  void HandleQueryFileExists(QStringList &slist, PlaybackSock *pbs);
202  void HandleQueryFindFile(QStringList &slist, PlaybackSock *pbs);
203  void HandleQueryFileHash(QStringList &slist, PlaybackSock *pbs);
205  void HandleGetPendingRecordings(PlaybackSock *pbs, const QString& table = "", int recordid=-1);
207  void HandleGetConflictingRecordings(QStringList &slist, PlaybackSock *pbs);
209  void HandleSGGetFileList(QStringList &sList, PlaybackSock *pbs);
210  void HandleSGFileQuery(QStringList &sList, PlaybackSock *pbs);
211  void HandleGetFreeInputInfo(PlaybackSock *pbs, uint excluded_input);
212  void HandleGetNextFreeRecorder(QStringList &slist, PlaybackSock *pbs);
217  void HandleRecorderQuery(QStringList &slist, QStringList &commands,
218  PlaybackSock *pbs);
219  void HandleSetNextLiveTVDir(QStringList &commands, PlaybackSock *pbs);
220  void HandleFileTransferQuery(QStringList &slist, QStringList &commands,
221  PlaybackSock *pbs);
222  void HandleGetRecorderNum(QStringList &slist, PlaybackSock *pbs);
223  void HandleGetRecorderFromNum(QStringList &slist, PlaybackSock *pbs);
224  void HandleMessage(QStringList &slist, PlaybackSock *pbs);
225  void HandleSetVerbose(const QStringList &slist, PlaybackSock *pbs);
226  void HandleSetLogLevel(const QStringList &slist, PlaybackSock *pbs);
227  void HandleGenPreviewPixmap(QStringList &slist, PlaybackSock *pbs);
228  void HandlePixmapLastModified(QStringList &slist, PlaybackSock *pbs);
229  void HandlePixmapGetIfModified(const QStringList &slist, PlaybackSock *pbs);
230  void HandleIsRecording(const QStringList &slist, PlaybackSock *pbs);
231  void HandleCheckRecordingActive(QStringList &slist, PlaybackSock *pbs);
232  void HandleFillProgramInfo(QStringList &slist, PlaybackSock *pbs);
233  void HandleSetChannelInfo(QStringList &slist, PlaybackSock *pbs);
234  void HandleRemoteEncoder(QStringList &slist, QStringList &commands,
235  PlaybackSock *pbs);
236  void HandleLockTuner(PlaybackSock *pbs, int cardid = -1);
237  void HandleFreeTuner(int cardid, PlaybackSock *pbs);
238  void HandleCutMapQuery(const QString &chanid, const QString &starttime,
239  PlaybackSock *pbs, bool commbreak);
240  void HandleCommBreakQuery(const QString &chanid, const QString &starttime,
241  PlaybackSock *pbs);
242  void HandleCutlistQuery(const QString &chanid, const QString &starttime,
243  PlaybackSock *pbs);
244  void HandleBookmarkQuery(const QString &chanid, const QString &starttime,
245  PlaybackSock *pbs);
246  void HandleSetBookmark(QStringList &tokens, PlaybackSock *pbs);
247  void HandleSettingQuery(const QStringList &tokens, PlaybackSock *pbs);
248  void HandleSetSetting(const QStringList &tokens, PlaybackSock *pbs);
250  void HandleScanMusic(const QStringList &slist, PlaybackSock *pbs);
251  void HandleMusicTagUpdateVolatile(const QStringList &slist, PlaybackSock *pbs);
252  void HandleMusicTagUpdateMetadata(const QStringList &slist, PlaybackSock *pbs);
253  void HandleMusicFindAlbumArt(const QStringList &slist, PlaybackSock *pbs);
254  void HandleMusicTagGetImage(const QStringList &slist, PlaybackSock *pbs);
255  void HandleMusicTagAddImage(const QStringList &slist, PlaybackSock *pbs);
256  void HandleMusicTagRemoveImage(const QStringList &slist, PlaybackSock *pbs);
257  void HandleMusicTagChangeImage(const QStringList &slist, PlaybackSock *pbs);
258  void HandleMusicCalcTrackLen(const QStringList &slist, PlaybackSock *pbs);
259  void HandleMusicFindLyrics(const QStringList &slist, PlaybackSock *pbs);
260  void HandleMusicGetLyricGrabbers(const QStringList &slist, PlaybackSock *pbs);
261  void HandleMusicSaveLyrics(const QStringList &slist, PlaybackSock *pbs);
262  void HandleVersion(MythSocket *socket, const QStringList &slist);
263  void HandleBackendRefresh(MythSocket *socket);
269  void HandleBlockShutdown(bool blockShutdown, PlaybackSock *pbs);
270  void HandleDownloadFile(const QStringList &command, PlaybackSock *pbs);
271  void HandleSlaveDisconnectedEvent(const MythEvent &event);
272 
273  void SendResponse(MythSocket *sock, QStringList &commands);
274  void SendErrorResponse(MythSocket *sock, const QString &error);
275  void SendErrorResponse(PlaybackSock *pbs, const QString &error);
276  static void SendSlaveDisconnectedEvent(const QList<uint> &offlineEncoderIDs,
277  bool needsReschedule);
278 
279  static void getGuideDataThrough(QDateTime &GuideDataThrough);
280 
281  PlaybackSock *GetSlaveByHostname(const QString &hostname);
285 
286  static QString LocalFilePath(const QString &path, const QString &wantgroup);
287 
288  int GetfsID(const QList<FileSystemInfo>::iterator& fsInfo);
289 
290  void DoTruncateThread(DeleteStruct *ds);
291  void DoDeleteThread(DeleteStruct *ds);
292  static void DeleteRecordedFiles(DeleteStruct *ds);
293  static void DoDeleteInDB(DeleteStruct *ds);
294 
295  LiveTVChain *GetExistingChain(const QString &id);
298  void AddToChains(LiveTVChain *chain);
299  void DeleteChain(LiveTVChain *chain);
300 
301  void SetExitCode(int exitCode, bool closeApplication);
302 
303  static int DeleteFile(const QString &filename, bool followLinks,
304  bool deleteBrokenSymlinks = false);
305  static int OpenAndUnlink(const QString &filename);
306  static bool TruncateAndClose(ProgramInfo *pginfo,
307  int fd, const QString &filename,
308  off_t fsize);
309 
310  std::vector<LiveTVChain*> m_liveTVChains;
312 
313  QMap<int, EncoderLink *> *m_encoderList {nullptr};
314 
317 
318  QReadWriteLock m_sockListLock;
319  std::vector<PlaybackSock *> m_playbackList;
320  std::vector<BEFileTransfer *> m_fileTransferList;
321  QSet<MythSocket*> m_controlSocketList;
322  std::vector<MythSocket*> m_decrRefSocketList;
323 
328 
329  QTimer *m_masterServerReconnect {nullptr}; // audited ref #5318
331 
333 
334  QMutex m_deletelock;
336 
338 
339  Scheduler *m_sched {nullptr};
340  AutoExpire *m_expirer {nullptr};
342 
344  {
346  QDateTime ts;
347  };
348 
350  QTimer *m_deferredDeleteTimer {nullptr}; // audited ref #5318
352 
353  QTimer *m_autoexpireUpdateTimer {nullptr}; // audited ref #5318
355 
356  QMap<QString, int> m_fsIDcache;
358  QList<FileSystemInfo> m_fsInfosCache;
360 
362  QMap<QString, QString> m_downloadURLs;
363 
365 
366  using RequestedBy = QHash<QString,QString>;
368 
369  bool m_stopped {false};
370 
371  static const std::chrono::milliseconds kMasterServerReconnectTimeout;
372 };
373 
374 #endif
375 
376 /* vim: set expandtab tabstop=4 shiftwidth=4: */
MainServer::m_controlSocketList
QSet< MythSocket * > m_controlSocketList
Definition: mainserver.h:321
MainServer::SendErrorResponse
void SendErrorResponse(MythSocket *sock, const QString &error)
Definition: mainserver.cpp:2084
Scheduler
Definition: scheduler.h:45
RenameThread::s_renamelock
static QMutex s_renamelock
Definition: mainserver.h:108
MainServer::AddToChains
void AddToChains(LiveTVChain *chain)
Definition: mainserver.cpp:8028
MainServer::kMasterServerReconnectTimeout
static const std::chrono::milliseconds kMasterServerReconnectTimeout
Definition: mainserver.h:371
TruncateThread::start
void start(void)
Definition: mainserver.h:94
MainServer::HandleMusicTagChangeImage
void HandleMusicTagChangeImage(const QStringList &slist, PlaybackSock *pbs)
Definition: mainserver.cpp:6353
MainServer::m_mythserver
MythServer * m_mythserver
Definition: mainserver.h:315
tv.h
DeleteStruct::m_filename
QString m_filename
Definition: mainserver.h:65
MainServer::GetFileTransferBySock
BEFileTransfer * GetFileTransferBySock(MythSocket *socket)
Warning you must hold a sockListLock lock before calling this.
Definition: mainserver.cpp:7990
MainServer::DeleteRecordedFiles
static void DeleteRecordedFiles(DeleteStruct *ds)
Definition: mainserver.cpp:2490
MainServer::LocalFilePath
static QString LocalFilePath(const QString &path, const QString &wantgroup)
Definition: mainserver.cpp:8062
TruncateThread
Definition: mainserver.h:89
RenameThread::run
void run(void) override
Definition: mainserver.cpp:5481
MainServer::m_fsIDcacheLock
QMutex m_fsIDcacheLock
Definition: mainserver.h:357
MainServer::HandleQueryTimeZone
void HandleQueryTimeZone(PlaybackSock *pbs)
Definition: mainserver.cpp:3566
DeleteStruct::DeleteStruct
DeleteStruct(MainServer *ms, QString filename, int fd, off_t size)
Definition: mainserver.h:58
MainServer::ProcessRequestWork
void ProcessRequestWork(MythSocket *sock)
Definition: mainserver.cpp:469
MainServer::HandleMusicTagRemoveImage
void HandleMusicTagRemoveImage(const QStringList &slist, PlaybackSock *pbs)
Definition: mainserver.cpp:6675
MainServer::GetFilesystemInfos
void GetFilesystemInfos(QList< FileSystemInfo > &fsInfos, bool useCache=true)
Definition: mainserver.cpp:5345
MainServer::m_encoderList
QMap< int, EncoderLink * > * m_encoderList
Definition: mainserver.h:313
MainServer::m_fileTransferList
std::vector< BEFileTransfer * > m_fileTransferList
Definition: mainserver.h:320
MainServer::HandleGetNextFreeRecorder
void HandleGetNextFreeRecorder(QStringList &slist, PlaybackSock *pbs)
DeleteStruct::m_title
QString m_title
Definition: mainserver.h:66
MainServer::HandleMusicCalcTrackLen
void HandleMusicCalcTrackLen(const QStringList &slist, PlaybackSock *pbs)
Definition: mainserver.cpp:6003
MainServer::HandleBackendRefresh
void HandleBackendRefresh(MythSocket *socket)
Definition: mainserver.cpp:7713
MainServer::GetExistingChain
LiveTVChain * GetExistingChain(const QString &id)
Definition: mainserver.cpp:7998
MainServer::HandleQueryMemStats
void HandleQueryMemStats(PlaybackSock *pbs)
Definition: mainserver.cpp:3538
MainServer::m_previewRequestedBy
RequestedBy m_previewRequestedBy
Definition: mainserver.h:367
MainServer::m_addChildInputLock
QMutex m_addChildInputLock
Definition: mainserver.h:341
MainServer::HandleSGFileQuery
void HandleSGFileQuery(QStringList &sList, PlaybackSock *pbs)
Definition: mainserver.cpp:4171
MainServer::m_deferredDeleteLock
QMutex m_deferredDeleteLock
Definition: mainserver.h:349
MainServer::m_autoexpireUpdateTimer
QTimer * m_autoexpireUpdateTimer
Definition: mainserver.h:353
RecordingInfo
Holds information on a TV Program one might wish to record.
Definition: recordinginfo.h:35
MainServer::HandleSetBookmark
void HandleSetBookmark(QStringList &tokens, PlaybackSock *pbs)
Definition: mainserver.cpp:5703
MainServer::DeferredDeleteStruct
Definition: mainserver.h:343
MainServer::m_masterServer
PlaybackSock * m_masterServer
Definition: mainserver.h:330
MainServer::BackendQueryDiskSpace
void BackendQueryDiskSpace(QStringList &strlist, bool consolidated, bool allHosts)
Definition: mainserver.cpp:5126
MainServer::HandleGetExpiringRecordings
void HandleGetExpiringRecordings(PlaybackSock *pbs)
Definition: mainserver.cpp:3872
MainServer::m_liveTVChainsLock
QMutex m_liveTVChainsLock
Definition: mainserver.h:311
MythEvent
This class is used as a container for messages.
Definition: mythevent.h:16
sched
Scheduler * sched
MainServer::HandleMessage
void HandleMessage(QStringList &slist, PlaybackSock *pbs)
Definition: mainserver.cpp:7229
MainServer::DeleteFile
static int DeleteFile(const QString &filename, bool followLinks, bool deleteBrokenSymlinks=false)
Deletes links and unlinks the main file and returns the descriptor.
Definition: mainserver.cpp:2628
DeleteThread::DeleteThread
DeleteThread(MainServer *ms, const QString &filename, const QString &title, uint chanid, QDateTime recstartts, QDateTime recendts, uint recordingId, bool forceMetadataDelete)
Definition: mainserver.h:79
MainServer::NewConnection
void NewConnection(qintptr socketDescriptor)
Definition: mainserver.cpp:441
MainServer::HandleCommBreakQuery
void HandleCommBreakQuery(const QString &chanid, const QString &starttime, PlaybackSock *pbs)
Definition: mainserver.cpp:5646
MainServer::GetPlaybackBySock
PlaybackSock * GetPlaybackBySock(MythSocket *socket)
Warning you must hold a sockListLock lock before calling this.
Definition: mainserver.cpp:7972
DeleteThread
Definition: deletethread.h:19
MainServer
Definition: mainserver.h:115
AutoExpire
Used to expire recordings to make space for new recordings.
Definition: autoexpire.h:60
playbacksock.h
MainServer::HandleIsRecording
void HandleIsRecording(const QStringList &slist, PlaybackSock *pbs)
Definition: mainserver.cpp:7317
MainServer::m_masterFreeSpaceListLock
QMutex m_masterFreeSpaceListLock
Definition: mainserver.h:324
MainServer::OpenAndUnlink
static int OpenAndUnlink(const QString &filename)
Opens a file, unlinks it and returns the file descriptor.
Definition: mainserver.cpp:2685
MainServer::HandleSetVerbose
void HandleSetVerbose(const QStringList &slist, PlaybackSock *pbs)
Definition: mainserver.cpp:7257
MainServer::customEvent
void customEvent(QEvent *e) override
Definition: mainserver.cpp:1116
MainServer::HandleGetRecorderNum
void HandleGetRecorderNum(QStringList &slist, PlaybackSock *pbs)
Definition: mainserver.cpp:7144
MainServer::HandleQueryFileHash
void HandleQueryFileHash(QStringList &slist, PlaybackSock *pbs)
Definition: mainserver.cpp:3632
RenameThread::m_src
QString m_src
Definition: mainserver.h:112
DeleteStruct::DeleteStruct
DeleteStruct(MainServer *ms, QString filename, QString title, uint chanid, QDateTime recstartts, QDateTime recendts, uint recordedId, bool forceMetadataDelete)
Definition: mainserver.h:47
MainServer::autoexpireUpdate
static void autoexpireUpdate(void)
Definition: mainserver.cpp:436
DeleteStruct::m_chanid
uint m_chanid
Definition: mainserver.h:67
MainServer::HandleMusicFindAlbumArt
void HandleMusicFindAlbumArt(const QStringList &slist, PlaybackSock *pbs)
Definition: mainserver.cpp:6147
MainServer::m_exitCode
int m_exitCode
Definition: mainserver.h:364
TruncateThread::run
void run(void) override
Definition: mainserver.cpp:5503
GENERIC_EXIT_OK
@ GENERIC_EXIT_OK
Exited with no error.
Definition: exitcodes.h:11
MainServer::RequestedBy
QHash< QString, QString > RequestedBy
Definition: mainserver.h:366
MainServer::TruncateAndClose
static bool TruncateAndClose(ProgramInfo *pginfo, int fd, const QString &filename, off_t fsize)
Repeatedly truncate an open file in small increments.
Definition: mainserver.cpp:2726
MainServer::HandleQueryFreeSpace
void HandleQueryFreeSpace(PlaybackSock *pbs, bool allHosts)
Definition: mainserver.cpp:3395
MThreadPool::startReserved
void startReserved(QRunnable *runnable, const QString &debugName, std::chrono::milliseconds waitForAvailMS=0ms)
Definition: mthreadpool.cpp:361
DeleteStruct::m_fd
int m_fd
Definition: mainserver.h:72
mythdeque.h
scheduler.h
MainServer::GetFileTransferByID
BEFileTransfer * GetFileTransferByID(int id)
Warning you must hold a sockListLock lock before calling this.
Definition: mainserver.cpp:7981
MainServer::m_masterFreeSpaceList
QStringList m_masterFreeSpaceList
Definition: mainserver.h:327
MainServer::readyRead
void readyRead(MythSocket *socket) override
Definition: mainserver.cpp:451
MainServer::connectionClosed
void connectionClosed(MythSocket *socket) override
Definition: mainserver.cpp:7758
MainServer::m_playbackList
std::vector< PlaybackSock * > m_playbackList
Definition: mainserver.h:319
MainServer::m_fsIDcache
QMap< QString, int > m_fsIDcache
Definition: mainserver.h:356
MainServer::GetMediaServerByHostname
PlaybackSock * GetMediaServerByHostname(const QString &hostname)
Definition: mainserver.cpp:7951
MainServer::HandleMusicTagUpdateMetadata
void HandleMusicTagUpdateMetadata(const QStringList &slist, PlaybackSock *pbs)
Definition: mainserver.cpp:6060
MythSocket
Class for communcating between myth backends and frontends.
Definition: mythsocket.h:25
MainServer::UpdateSystemdStatus
void UpdateSystemdStatus(void)
Definition: mainserver.cpp:8315
MainServer::HandleGetPendingRecordings
void HandleGetPendingRecordings(PlaybackSock *pbs, const QString &table="", int recordid=-1)
Definition: mainserver.cpp:3788
MainServer::DeleteChain
void DeleteChain(LiveTVChain *chain)
Definition: mainserver.cpp:8036
MainServer::SendSlaveDisconnectedEvent
static void SendSlaveDisconnectedEvent(const QList< uint > &offlineEncoderIDs, bool needsReschedule)
Definition: mainserver.cpp:8300
MainServer::HandleSetNextLiveTVDir
void HandleSetNextLiveTVDir(QStringList &commands, PlaybackSock *pbs)
Definition: mainserver.cpp:4862
MainServer::HandleSetLogLevel
void HandleSetLogLevel(const QStringList &slist, PlaybackSock *pbs)
Definition: mainserver.cpp:7284
MainServer::HandleAnnounce
void HandleAnnounce(QStringList &slist, QStringList commands, MythSocket *socket)
Definition: mainserver.cpp:1709
MainServer::GetChainWithRecording
LiveTVChain * GetChainWithRecording(const ProgramInfo &pginfo)
Definition: mainserver.cpp:8018
autoexpire.h
MainServer::HandleGetFreeInputInfo
void HandleGetFreeInputInfo(PlaybackSock *pbs, uint excluded_input)
Definition: mainserver.cpp:4365
MainServer::HandleQueryRecording
void HandleQueryRecording(QStringList &slist, PlaybackSock *pbs)
Definition: mainserver.cpp:2259
MainServer::DoHandleUndeleteRecording
void DoHandleUndeleteRecording(RecordingInfo &recinfo, PlaybackSock *pbs)
Definition: mainserver.cpp:3163
MainServer::m_liveTVChains
std::vector< LiveTVChain * > m_liveTVChains
Definition: mainserver.h:310
MainServer::HandleStopRecording
void HandleStopRecording(QStringList &slist, PlaybackSock *pbs)
Definition: mainserver.cpp:2838
MainServer::HandleGetConflictingRecordings
void HandleGetConflictingRecordings(QStringList &slist, PlaybackSock *pbs)
Definition: mainserver.cpp:3854
pbs
Definition: pbs.py:1
MainServer::DeletePBS
void DeletePBS(PlaybackSock *sock)
Definition: mainserver.cpp:7746
MainServer::HandleMusicTagGetImage
void HandleMusicTagGetImage(const QStringList &slist, PlaybackSock *pbs)
Definition: mainserver.cpp:6299
MainServer::HandleSlaveDisconnectedEvent
void HandleSlaveDisconnectedEvent(const MythEvent &event)
Definition: mainserver.cpp:8287
MainServer::DoHandleStopRecording
void DoHandleStopRecording(RecordingInfo &recinfo, PlaybackSock *pbs)
Definition: mainserver.cpp:2867
MainServer::ShutSlaveBackendsDown
void ShutSlaveBackendsDown(const QString &haltcmd)
Sends the Slavebackends the request to shut down using haltcmd.
Definition: mainserver.cpp:8268
MainServer::HandleDeleteRecording
void HandleDeleteRecording(QString &chanid, QString &starttime, PlaybackSock *pbs, bool forceMetadataDelete, bool forgetHistory)
Definition: mainserver.cpp:2956
MainServer::isClientConnected
bool isClientConnected(bool onlyBlockingClients=false)
Definition: mainserver.cpp:8239
MainServer::HandleSettingQuery
void HandleSettingQuery(const QStringList &tokens, PlaybackSock *pbs)
Definition: mainserver.cpp:5738
MainServer::s_truncate_and_close_lock
static QMutex s_truncate_and_close_lock
Definition: mainserver.h:354
MythServer
Definition: serverpool.h:131
MainServer::HandleMusicTagUpdateVolatile
void HandleMusicTagUpdateVolatile(const QStringList &slist, PlaybackSock *pbs)
Definition: mainserver.cpp:5943
MainServer::HandleScanMusic
void HandleScanMusic(const QStringList &slist, PlaybackSock *pbs)
Definition: mainserver.cpp:5874
MainServer::HandleGoToSleep
void HandleGoToSleep(PlaybackSock *pbs)
Definition: mainserver.cpp:3364
MainServer::HandleMusicFindLyrics
void HandleMusicFindLyrics(const QStringList &slist, PlaybackSock *pbs)
Definition: mainserver.cpp:6801
MainServer::HandleDeleteFile
bool HandleDeleteFile(const QStringList &slist, PlaybackSock *pbs)
Definition: mainserver.cpp:5522
MainServer::HandleQueryLoad
void HandleQueryLoad(PlaybackSock *pbs)
Definition: mainserver.cpp:3470
filetransfer.h
MainServer::m_ismaster
bool m_ismaster
Definition: mainserver.h:332
DeleteStruct
Definition: mainserver.h:43
MainServer::HandleQueryFindFile
void HandleQueryFindFile(QStringList &slist, PlaybackSock *pbs)
Definition: mainserver.cpp:3962
MainServer::HandleBlockShutdown
void HandleBlockShutdown(bool blockShutdown, PlaybackSock *pbs)
Definition: mainserver.cpp:7719
MainServer::HandleRemoteEncoder
void HandleRemoteEncoder(QStringList &slist, QStringList &commands, PlaybackSock *pbs)
Definition: mainserver.cpp:4924
DeleteThread::run
void run() override
Runs the Qt event loop unless we have a QRunnable, in which case we run the runnable run instead.
Definition: deletethread.cpp:35
MainServer::reconnectTimeout
void reconnectTimeout(void)
Definition: mainserver.cpp:8155
MainServer::HandleCheckRecordingActive
void HandleCheckRecordingActive(QStringList &slist, PlaybackSock *pbs)
Definition: mainserver.cpp:2799
MainServer::HandleCutlistQuery
void HandleCutlistQuery(const QString &chanid, const QString &starttime, PlaybackSock *pbs)
Definition: mainserver.cpp:5661
MainServer::GetfsID
int GetfsID(const QList< FileSystemInfo >::iterator &fsInfo)
Definition: mainserver.cpp:5089
DeleteStruct::m_recstartts
QDateTime m_recstartts
Definition: mainserver.h:68
MainServer::HandleGetFreeRecorder
void HandleGetFreeRecorder(PlaybackSock *pbs)
MythSocketCBs
Definition: mythsocket_cb.h:13
MainServer::DeferredDeleteStruct::ts
QDateTime ts
Definition: mainserver.h:346
MainServer::HandleCutMapQuery
void HandleCutMapQuery(const QString &chanid, const QString &starttime, PlaybackSock *pbs, bool commbreak)
Definition: mainserver.cpp:5605
MainServer::MainServer
MainServer(bool master, int port, QMap< int, EncoderLink * > *tvList, Scheduler *sched, AutoExpire *expirer)
Definition: mainserver.cpp:246
MainServer::m_deferredDeleteTimer
QTimer * m_deferredDeleteTimer
Definition: mainserver.h:350
MainServer::m_expirer
AutoExpire * m_expirer
Definition: mainserver.h:340
uint
unsigned int uint
Definition: compat.h:81
MainServer::m_masterServerReconnect
QTimer * m_masterServerReconnect
Definition: mainserver.h:329
MainServer::DeferredDeleteStruct::sock
PlaybackSock * sock
Definition: mainserver.h:345
MainServer::HandlePixmapGetIfModified
void HandlePixmapGetIfModified(const QStringList &slist, PlaybackSock *pbs)
Definition: mainserver.cpp:7574
MainServer::HandleMusicSaveLyrics
void HandleMusicSaveLyrics(const QStringList &slist, PlaybackSock *pbs)
Definition: mainserver.cpp:6975
MainServer::HandleDone
void HandleDone(MythSocket *socket)
Definition: mainserver.cpp:2073
PlaybackSock
Definition: playbacksock.h:27
RenameThread::m_dst
QString m_dst
Definition: mainserver.h:112
MetadataFactory
Definition: metadatafactory.h:85
MainServer::m_masterFreeSpaceListUpdater
FreeSpaceUpdater *volatile m_masterFreeSpaceListUpdater
Definition: mainserver.h:325
MainServer::HandleGetScheduledRecordings
void HandleGetScheduledRecordings(PlaybackSock *pbs)
Definition: mainserver.cpp:3840
MainServer::m_downloadURLs
QMap< QString, QString > m_downloadURLs
Definition: mainserver.h:362
MainServer::getGuideDataThrough
static void getGuideDataThrough(QDateTime &GuideDataThrough)
Definition: mainserver.cpp:3761
off_t
#define off_t
Definition: mythiowrapper.cpp:241
MainServer::GetSlaveByHostname
PlaybackSock * GetSlaveByHostname(const QString &hostname)
Definition: mainserver.cpp:7928
RenameThread
Definition: mainserver.h:99
MainServer::GetExitCode
int GetExitCode() const
Definition: mainserver.h:152
MainServer::HandleQueryRecordings
void HandleQueryRecordings(const QString &type, PlaybackSock *pbs)
Definition: mainserver.cpp:2132
DeleteStruct::m_recendts
QDateTime m_recendts
Definition: mainserver.h:69
MainServer::HandleQueryGuideDataThrough
void HandleQueryGuideDataThrough(PlaybackSock *pbs)
Definition: mainserver.cpp:3772
MainServer::HandleLockTuner
void HandleLockTuner(PlaybackSock *pbs, int cardid=-1)
Definition: mainserver.cpp:4244
mthreadpool.h
MainServer::connected
void connected([[maybe_unused]] MythSocket *socket) override
Definition: mainserver.h:142
MThreadPool
Definition: mthreadpool.h:18
livetvchain.h
MainServer::HandleSetSetting
void HandleSetSetting(const QStringList &tokens, PlaybackSock *pbs)
Definition: mainserver.cpp:5832
MainServer::HandleVersion
void HandleVersion(MythSocket *socket, const QStringList &slist)
Definition: mainserver.cpp:1644
DeleteStruct::m_forceMetadataDelete
bool m_forceMetadataDelete
Definition: mainserver.h:71
ProgramInfo
Holds information on recordings and videos.
Definition: programinfo.h:67
MainServer::HandleQueryCheckFile
void HandleQueryCheckFile(QStringList &slist, PlaybackSock *pbs)
Definition: mainserver.cpp:3581
MainServer::HandleQueryFileExists
void HandleQueryFileExists(QStringList &slist, PlaybackSock *pbs)
Definition: mainserver.cpp:3699
MainServer::HandleUndeleteRecording
void HandleUndeleteRecording(QStringList &slist, PlaybackSock *pbs)
Definition: mainserver.cpp:3145
MainServer::m_stopped
bool m_stopped
Definition: mainserver.h:369
MainServer::HandlePixmapLastModified
void HandlePixmapLastModified(QStringList &slist, PlaybackSock *pbs)
Definition: mainserver.cpp:7510
MainServer::m_masterBackendOverride
bool m_masterBackendOverride
Definition: mainserver.h:337
MainServer::ProcessRequest
void ProcessRequest(MythSocket *sock)
Definition: mainserver.cpp:460
MainServer::m_threadPool
MThreadPool m_threadPool
Definition: mainserver.h:335
MainServer::HandleFileTransferQuery
void HandleFileTransferQuery(QStringList &slist, QStringList &commands, PlaybackSock *pbs)
Definition: mainserver.cpp:7047
MainServer::HandleIsActiveBackendQuery
void HandleIsActiveBackendQuery(const QStringList &slist, PlaybackSock *pbs)
Definition: mainserver.cpp:5066
MainServer::~MainServer
~MainServer() override
Definition: mainserver.cpp:360
RenameThread::m_pbs
PlaybackSock & m_pbs
Definition: mainserver.h:111
MainServer::HandleActiveBackendsQuery
void HandleActiveBackendsQuery(PlaybackSock *pbs)
Definition: mainserver.cpp:5058
MainServer::HandleQueryHostname
void HandleQueryHostname(PlaybackSock *pbs)
Definition: mainserver.cpp:3523
MythDeque
MythDeque is similar to QPtrQueue, while being based off deque, this allows that items that are not a...
Definition: mythdeque.h:27
MainServer::HandleScanVideos
void HandleScanVideos(PlaybackSock *pbs)
Definition: mainserver.cpp:5854
MainServer::HandleFreeTuner
void HandleFreeTuner(int cardid, PlaybackSock *pbs)
Definition: mainserver.cpp:4325
FileSystemInfo
Definition: filesysteminfo.h:15
std
Definition: mythchrono.h:23
MythSocketCBs::error
virtual void error(MythSocket *, int)
Definition: mythsocket_cb.h:18
MainServer::deferredDeleteSlot
void deferredDeleteSlot(void)
Definition: mainserver.cpp:7728
MainServer::HandleGetFreeRecorderCount
void HandleGetFreeRecorderCount(PlaybackSock *pbs)
MainServer::m_fsInfosCache
QList< FileSystemInfo > m_fsInfosCache
Definition: mainserver.h:358
MainServer::HandleRescheduleRecordings
void HandleRescheduleRecordings(const QStringList &request, PlaybackSock *pbs)
Definition: mainserver.cpp:3214
MainServer::m_fsInfosCacheLock
QMutex m_fsInfosCacheLock
Definition: mainserver.h:359
MainServer::HandleMusicGetLyricGrabbers
void HandleMusicGetLyricGrabbers(const QStringList &slist, PlaybackSock *pbs)
Definition: mainserver.cpp:6893
MainServer::m_metadatafactory
MetadataFactory * m_metadatafactory
Definition: mainserver.h:316
MainServer::SendResponse
void SendResponse(MythSocket *sock, QStringList &commands)
Definition: mainserver.cpp:2094
MainServer::m_masterFreeSpaceListWait
QWaitCondition m_masterFreeSpaceListWait
Definition: mainserver.h:326
MainServer::HandleGetRecorderFromNum
void HandleGetRecorderFromNum(QStringList &slist, PlaybackSock *pbs)
Definition: mainserver.cpp:7192
MainServer::HandleGetConnectedRecorderList
void HandleGetConnectedRecorderList(PlaybackSock *pbs)
MainServer::m_downloadURLsLock
QMutex m_downloadURLsLock
Definition: mainserver.h:361
MainServer::HandleForgetRecording
void HandleForgetRecording(QStringList &slist, PlaybackSock *pbs)
Definition: mainserver.cpp:3342
MainServer::m_sockListLock
QReadWriteLock m_sockListLock
Definition: mainserver.h:318
MainServer::GetCurrentMaxBitrate
size_t GetCurrentMaxBitrate(void)
Definition: mainserver.cpp:5099
BEFileTransfer
Definition: programs/mythbackend/filetransfer.h:20
MainServer::HandleSGGetFileList
void HandleSGGetFileList(QStringList &sList, PlaybackSock *pbs)
Definition: mainserver.cpp:3886
RenameThread::RenameThread
RenameThread(MainServer &ms, PlaybackSock &pbs, QString src, QString dst)
Definition: mainserver.h:102
expirer
AutoExpire * expirer
DeleteStruct::m_size
off_t m_size
Definition: mainserver.h:73
musicbrainzngs.caa.hostname
string hostname
Definition: caa.py:17
MainServer::HandleDownloadFile
void HandleDownloadFile(const QStringList &command, PlaybackSock *pbs)
Definition: mainserver.cpp:5758
RenameThread::m_ms
MainServer & m_ms
Definition: mainserver.h:110
MainServer::SetExitCode
void SetExitCode(int exitCode, bool closeApplication)
Definition: mainserver.cpp:8055
MainServer::HandleRecorderQuery
void HandleRecorderQuery(QStringList &slist, QStringList &commands, PlaybackSock *pbs)
Definition: mainserver.cpp:4485
MainServer::connectionFailed
void connectionFailed([[maybe_unused]] MythSocket *socket) override
Definition: mainserver.h:141
MainServer::m_deferredDeleteList
MythDeque< DeferredDeleteStruct > m_deferredDeleteList
Definition: mainserver.h:351
MainServer::HandleQueryUptime
void HandleQueryUptime(PlaybackSock *pbs)
Definition: mainserver.cpp:3501
MainServer::HandleGetFreeRecorderList
void HandleGetFreeRecorderList(PlaybackSock *pbs)
DeleteThread::start
void start(void)
Definition: mainserver.h:84
exitcodes.h
mythdownloadmanager.h
MainServer::HandleMoveFile
void HandleMoveFile(PlaybackSock *pbs, const QString &storagegroup, const QString &src, const QString &dst)
Definition: mainserver.cpp:5429
MainServer::m_decrRefSocketList
std::vector< MythSocket * > m_decrRefSocketList
Definition: mainserver.h:322
MainServer::HandleGenPreviewPixmap
void HandleGenPreviewPixmap(QStringList &slist, PlaybackSock *pbs)
Definition: mainserver.cpp:7346
MainServer::HandleMusicTagAddImage
void HandleMusicTagAddImage(const QStringList &slist, PlaybackSock *pbs)
Definition: mainserver.cpp:6520
MainServer::DoTruncateThread
void DoTruncateThread(DeleteStruct *ds)
Definition: mainserver.cpp:5509
MainServer::m_deletelock
QMutex m_deletelock
Definition: mainserver.h:334
build_compdb.filename
filename
Definition: build_compdb.py:21
MThreadPool::globalInstance
static MThreadPool * globalInstance(void)
Definition: mthreadpool.cpp:307
MainServer::Stop
void Stop(void)
Definition: mainserver.cpp:366
MainServer::GetActiveBackends
void GetActiveBackends(QStringList &hosts)
Definition: mainserver.cpp:5040
MainServer::HandleQueryFreeSpaceSummary
void HandleQueryFreeSpaceSummary(PlaybackSock *pbs)
Definition: mainserver.cpp:3427
mythsocket.h
TruncateThread::TruncateThread
TruncateThread(MainServer *ms, const QString &filename, int fd, off_t size)
Definition: mainserver.h:92
DeleteStruct::m_recordedid
uint m_recordedid
Definition: mainserver.h:70
FreeSpaceUpdater
Definition: mainserver.cpp:179
MainServer::m_sched
Scheduler * m_sched
Definition: mainserver.h:339
MainServer::DoDeleteInDB
static void DoDeleteInDB(DeleteStruct *ds)
Definition: mainserver.cpp:2562
MThreadPool::start
void start(QRunnable *runnable, const QString &debugName, int priority=0)
Definition: mthreadpool.cpp:342
MainServer::DoDeleteThread
void DoDeleteThread(DeleteStruct *ds)
Definition: mainserver.cpp:2343
MainServer::HandleFillProgramInfo
void HandleFillProgramInfo(QStringList &slist, PlaybackSock *pbs)
Definition: mainserver.cpp:2304
MainServer::HandleAddChildInput
bool HandleAddChildInput(uint inputid)
Definition: mainserver.cpp:3234
MainServer::HandleSetChannelInfo
void HandleSetChannelInfo(QStringList &slist, PlaybackSock *pbs)
Definition: mainserver.cpp:4889
DeleteStruct::m_ms
MainServer * m_ms
Definition: mainserver.h:64
MainServer::DoHandleDeleteRecording
void DoHandleDeleteRecording(RecordingInfo &recinfo, PlaybackSock *pbs, bool forceMetadataDelete, bool lexpirer=false, bool forgetHistory=false)
Definition: mainserver.cpp:2999
MainServer::HandleBookmarkQuery
void HandleBookmarkQuery(const QString &chanid, const QString &starttime, PlaybackSock *pbs)
Definition: mainserver.cpp:5677
LiveTVChain
Keeps track of recordings in a current LiveTV instance.
Definition: livetvchain.h:32