Go to the documentation of this file.
8 #include <QReadWriteLock>
48 uint chanid, QDateTime recstartts, QDateTime recendts,
50 bool forceMetadataDelete) :
80 QDateTime recstartts, QDateTime recendts,
uint recordingId,
81 bool forceMetadataDelete) :
83 std::move(recendts), recordingId, forceMetadataDelete) {}
86 void run(
void)
override;
96 void run(
void)
override;
103 QString src, QString dst)
105 void run(
void)
override;
125 QMap<int, EncoderLink *> *tvList,
175 const QString &src,
const QString &dst);
187 bool forceMetadataDelete);
189 bool forceMetadataDelete,
bool lexpirer=
false,
190 bool forgetHistory=
false);
277 bool needsReschedule);
286 static QString
LocalFilePath(
const QString &path,
const QString &wantgroup);
288 int GetfsID(
const QList<FileSystemInfo>::iterator& fsInfo);
301 void SetExitCode(
int exitCode,
bool closeApplication);
304 bool deleteBrokenSymlinks =
false);
QSet< MythSocket * > m_controlSocketList
void SendErrorResponse(MythSocket *sock, const QString &error)
static QMutex s_renamelock
void AddToChains(LiveTVChain *chain)
static const std::chrono::milliseconds kMasterServerReconnectTimeout
void HandleMusicTagChangeImage(const QStringList &slist, PlaybackSock *pbs)
MythServer * m_mythserver
BEFileTransfer * GetFileTransferBySock(MythSocket *socket)
Warning you must hold a sockListLock lock before calling this.
static void DeleteRecordedFiles(DeleteStruct *ds)
static QString LocalFilePath(const QString &path, const QString &wantgroup)
void HandleQueryTimeZone(PlaybackSock *pbs)
DeleteStruct(MainServer *ms, QString filename, int fd, off_t size)
void ProcessRequestWork(MythSocket *sock)
void HandleMusicTagRemoveImage(const QStringList &slist, PlaybackSock *pbs)
void GetFilesystemInfos(QList< FileSystemInfo > &fsInfos, bool useCache=true)
QMap< int, EncoderLink * > * m_encoderList
std::vector< BEFileTransfer * > m_fileTransferList
void HandleGetNextFreeRecorder(QStringList &slist, PlaybackSock *pbs)
void HandleMusicCalcTrackLen(const QStringList &slist, PlaybackSock *pbs)
void HandleBackendRefresh(MythSocket *socket)
LiveTVChain * GetExistingChain(const QString &id)
void HandleQueryMemStats(PlaybackSock *pbs)
RequestedBy m_previewRequestedBy
QMutex m_addChildInputLock
void HandleSGFileQuery(QStringList &sList, PlaybackSock *pbs)
QMutex m_deferredDeleteLock
QTimer * m_autoexpireUpdateTimer
Holds information on a TV Program one might wish to record.
void HandleSetBookmark(QStringList &tokens, PlaybackSock *pbs)
PlaybackSock * m_masterServer
void BackendQueryDiskSpace(QStringList &strlist, bool consolidated, bool allHosts)
void HandleGetExpiringRecordings(PlaybackSock *pbs)
QMutex m_liveTVChainsLock
This class is used as a container for messages.
void HandleMessage(QStringList &slist, PlaybackSock *pbs)
static int DeleteFile(const QString &filename, bool followLinks, bool deleteBrokenSymlinks=false)
Deletes links and unlinks the main file and returns the descriptor.
DeleteThread(MainServer *ms, const QString &filename, const QString &title, uint chanid, QDateTime recstartts, QDateTime recendts, uint recordingId, bool forceMetadataDelete)
void NewConnection(qintptr socketDescriptor)
void HandleCommBreakQuery(const QString &chanid, const QString &starttime, PlaybackSock *pbs)
PlaybackSock * GetPlaybackBySock(MythSocket *socket)
Warning you must hold a sockListLock lock before calling this.
Used to expire recordings to make space for new recordings.
void HandleIsRecording(const QStringList &slist, PlaybackSock *pbs)
QMutex m_masterFreeSpaceListLock
static int OpenAndUnlink(const QString &filename)
Opens a file, unlinks it and returns the file descriptor.
void HandleSetVerbose(const QStringList &slist, PlaybackSock *pbs)
void customEvent(QEvent *e) override
void HandleGetRecorderNum(QStringList &slist, PlaybackSock *pbs)
void HandleQueryFileHash(QStringList &slist, PlaybackSock *pbs)
DeleteStruct(MainServer *ms, QString filename, QString title, uint chanid, QDateTime recstartts, QDateTime recendts, uint recordedId, bool forceMetadataDelete)
static void autoexpireUpdate(void)
void HandleMusicFindAlbumArt(const QStringList &slist, PlaybackSock *pbs)
QHash< QString, QString > RequestedBy
static bool TruncateAndClose(ProgramInfo *pginfo, int fd, const QString &filename, off_t fsize)
Repeatedly truncate an open file in small increments.
void HandleQueryFreeSpace(PlaybackSock *pbs, bool allHosts)
void startReserved(QRunnable *runnable, const QString &debugName, std::chrono::milliseconds waitForAvailMS=0ms)
BEFileTransfer * GetFileTransferByID(int id)
Warning you must hold a sockListLock lock before calling this.
QStringList m_masterFreeSpaceList
void readyRead(MythSocket *socket) override
void connectionClosed(MythSocket *socket) override
std::vector< PlaybackSock * > m_playbackList
QMap< QString, int > m_fsIDcache
PlaybackSock * GetMediaServerByHostname(const QString &hostname)
void HandleMusicTagUpdateMetadata(const QStringList &slist, PlaybackSock *pbs)
Class for communcating between myth backends and frontends.
void UpdateSystemdStatus(void)
void HandleGetPendingRecordings(PlaybackSock *pbs, const QString &table="", int recordid=-1)
void DeleteChain(LiveTVChain *chain)
static void SendSlaveDisconnectedEvent(const QList< uint > &offlineEncoderIDs, bool needsReschedule)
void HandleSetNextLiveTVDir(QStringList &commands, PlaybackSock *pbs)
void HandleSetLogLevel(const QStringList &slist, PlaybackSock *pbs)
void HandleAnnounce(QStringList &slist, QStringList commands, MythSocket *socket)
LiveTVChain * GetChainWithRecording(const ProgramInfo &pginfo)
void HandleGetFreeInputInfo(PlaybackSock *pbs, uint excluded_input)
void HandleQueryRecording(QStringList &slist, PlaybackSock *pbs)
void DoHandleUndeleteRecording(RecordingInfo &recinfo, PlaybackSock *pbs)
std::vector< LiveTVChain * > m_liveTVChains
void HandleStopRecording(QStringList &slist, PlaybackSock *pbs)
void HandleGetConflictingRecordings(QStringList &slist, PlaybackSock *pbs)
void DeletePBS(PlaybackSock *sock)
void HandleMusicTagGetImage(const QStringList &slist, PlaybackSock *pbs)
void HandleSlaveDisconnectedEvent(const MythEvent &event)
void DoHandleStopRecording(RecordingInfo &recinfo, PlaybackSock *pbs)
void ShutSlaveBackendsDown(const QString &haltcmd)
Sends the Slavebackends the request to shut down using haltcmd.
void HandleDeleteRecording(QString &chanid, QString &starttime, PlaybackSock *pbs, bool forceMetadataDelete, bool forgetHistory)
bool isClientConnected(bool onlyBlockingClients=false)
void HandleSettingQuery(const QStringList &tokens, PlaybackSock *pbs)
@ GENERIC_EXIT_OK
Exited with no error.
static QMutex s_truncate_and_close_lock
void HandleMusicTagUpdateVolatile(const QStringList &slist, PlaybackSock *pbs)
void HandleScanMusic(const QStringList &slist, PlaybackSock *pbs)
void HandleGoToSleep(PlaybackSock *pbs)
void HandleMusicFindLyrics(const QStringList &slist, PlaybackSock *pbs)
bool HandleDeleteFile(const QStringList &slist, PlaybackSock *pbs)
void HandleQueryLoad(PlaybackSock *pbs)
void HandleQueryFindFile(QStringList &slist, PlaybackSock *pbs)
void HandleBlockShutdown(bool blockShutdown, PlaybackSock *pbs)
void HandleRemoteEncoder(QStringList &slist, QStringList &commands, PlaybackSock *pbs)
void run() override
Runs the Qt event loop unless we have a QRunnable, in which case we run the runnable run instead.
void reconnectTimeout(void)
void HandleCheckRecordingActive(QStringList &slist, PlaybackSock *pbs)
void HandleCutlistQuery(const QString &chanid, const QString &starttime, PlaybackSock *pbs)
int GetfsID(const QList< FileSystemInfo >::iterator &fsInfo)
void HandleGetFreeRecorder(PlaybackSock *pbs)
void HandleCutMapQuery(const QString &chanid, const QString &starttime, PlaybackSock *pbs, bool commbreak)
MainServer(bool master, int port, QMap< int, EncoderLink * > *tvList, Scheduler *sched, AutoExpire *expirer)
QTimer * m_deferredDeleteTimer
QTimer * m_masterServerReconnect
void HandlePixmapGetIfModified(const QStringList &slist, PlaybackSock *pbs)
void HandleMusicSaveLyrics(const QStringList &slist, PlaybackSock *pbs)
void HandleDone(MythSocket *socket)
FreeSpaceUpdater *volatile m_masterFreeSpaceListUpdater
void HandleGetScheduledRecordings(PlaybackSock *pbs)
QMap< QString, QString > m_downloadURLs
static void getGuideDataThrough(QDateTime &GuideDataThrough)
PlaybackSock * GetSlaveByHostname(const QString &hostname)
void HandleQueryRecordings(const QString &type, PlaybackSock *pbs)
void HandleQueryGuideDataThrough(PlaybackSock *pbs)
void HandleLockTuner(PlaybackSock *pbs, int cardid=-1)
void connected([[maybe_unused]] MythSocket *socket) override
void HandleSetSetting(const QStringList &tokens, PlaybackSock *pbs)
void HandleVersion(MythSocket *socket, const QStringList &slist)
bool m_forceMetadataDelete
Holds information on recordings and videos.
void HandleQueryCheckFile(QStringList &slist, PlaybackSock *pbs)
void HandleQueryFileExists(QStringList &slist, PlaybackSock *pbs)
void HandleUndeleteRecording(QStringList &slist, PlaybackSock *pbs)
void HandlePixmapLastModified(QStringList &slist, PlaybackSock *pbs)
bool m_masterBackendOverride
void ProcessRequest(MythSocket *sock)
void HandleFileTransferQuery(QStringList &slist, QStringList &commands, PlaybackSock *pbs)
void HandleIsActiveBackendQuery(const QStringList &slist, PlaybackSock *pbs)
void HandleActiveBackendsQuery(PlaybackSock *pbs)
void HandleQueryHostname(PlaybackSock *pbs)
MythDeque is similar to QPtrQueue, while being based off deque, this allows that items that are not a...
void HandleScanVideos(PlaybackSock *pbs)
void HandleFreeTuner(int cardid, PlaybackSock *pbs)
virtual void error(MythSocket *, int)
void deferredDeleteSlot(void)
void HandleGetFreeRecorderCount(PlaybackSock *pbs)
QList< FileSystemInfo > m_fsInfosCache
void HandleRescheduleRecordings(const QStringList &request, PlaybackSock *pbs)
QMutex m_fsInfosCacheLock
void HandleMusicGetLyricGrabbers(const QStringList &slist, PlaybackSock *pbs)
MetadataFactory * m_metadatafactory
void SendResponse(MythSocket *sock, QStringList &commands)
QWaitCondition m_masterFreeSpaceListWait
void HandleGetRecorderFromNum(QStringList &slist, PlaybackSock *pbs)
void HandleGetConnectedRecorderList(PlaybackSock *pbs)
QMutex m_downloadURLsLock
void HandleForgetRecording(QStringList &slist, PlaybackSock *pbs)
QReadWriteLock m_sockListLock
size_t GetCurrentMaxBitrate(void)
void HandleSGGetFileList(QStringList &sList, PlaybackSock *pbs)
RenameThread(MainServer &ms, PlaybackSock &pbs, QString src, QString dst)
void HandleDownloadFile(const QStringList &command, PlaybackSock *pbs)
void SetExitCode(int exitCode, bool closeApplication)
void HandleRecorderQuery(QStringList &slist, QStringList &commands, PlaybackSock *pbs)
void connectionFailed([[maybe_unused]] MythSocket *socket) override
MythDeque< DeferredDeleteStruct > m_deferredDeleteList
void HandleQueryUptime(PlaybackSock *pbs)
void HandleGetFreeRecorderList(PlaybackSock *pbs)
void HandleMoveFile(PlaybackSock *pbs, const QString &storagegroup, const QString &src, const QString &dst)
std::vector< MythSocket * > m_decrRefSocketList
void HandleGenPreviewPixmap(QStringList &slist, PlaybackSock *pbs)
void HandleMusicTagAddImage(const QStringList &slist, PlaybackSock *pbs)
void DoTruncateThread(DeleteStruct *ds)
static MThreadPool * globalInstance(void)
void GetActiveBackends(QStringList &hosts)
void HandleQueryFreeSpaceSummary(PlaybackSock *pbs)
TruncateThread(MainServer *ms, const QString &filename, int fd, off_t size)
static void DoDeleteInDB(DeleteStruct *ds)
void start(QRunnable *runnable, const QString &debugName, int priority=0)
void DoDeleteThread(DeleteStruct *ds)
void HandleFillProgramInfo(QStringList &slist, PlaybackSock *pbs)
bool HandleAddChildInput(uint inputid)
void HandleSetChannelInfo(QStringList &slist, PlaybackSock *pbs)
void DoHandleDeleteRecording(RecordingInfo &recinfo, PlaybackSock *pbs, bool forceMetadataDelete, bool lexpirer=false, bool forgetHistory=false)
void HandleBookmarkQuery(const QString &chanid, const QString &starttime, PlaybackSock *pbs)
Keeps track of recordings in a current LiveTV instance.