MythTV  master
scheduler.h
Go to the documentation of this file.
1 #ifndef SCHEDULER_H_
2 #define SCHEDULER_H_
3 
4 // C++ headers
5 #include <deque>
6 #include <vector>
7 
8 // Qt headers
9 #include <QWaitCondition>
10 #include <QObject>
11 #include <QString>
12 #include <QMutex>
13 #include <QMap>
14 #include <QSet>
15 
16 // MythTV headers
18 #include "libmythbase/mthread.h"
19 #include "libmythbase/mythdeque.h"
21 #include "libmythbase/remoteutil.h"
24 
25 class EncoderLink;
26 class MainServer;
27 class AutoExpire;
28 
29 class Scheduler;
30 
32 {
33  public:
34  SchedInputInfo(void) = default;;
35  ~SchedInputInfo(void) = default;
36 
39  bool m_schedGroup {false};
40  std::vector<unsigned int> m_groupInputs;
41  std::vector<unsigned int> m_conflictingInputs;
42  RecList *m_conflictList {nullptr};
43 };
44 
45 class Scheduler : public MThread, public MythScheduler
46 {
47  public:
48  Scheduler(bool runthread, QMap<int, EncoderLink *> *_tvList,
49  const QString& tmptable = "record", Scheduler *master_sched = nullptr);
50  ~Scheduler() override;
51 
52  void Stop(void);
53  void Wait(void) { MThread::wait(); }
54 
55  void SetExpirer(AutoExpire *autoExpirer) { m_expirer = autoExpirer; }
57 
58  void Reschedule(const QStringList &request);
59  void RescheduleMatch(uint recordid, uint sourceid, uint mplexid,
60  const QDateTime &maxstarttime, const QString &why)
62  mplexid, maxstarttime, why)); };
63  void RescheduleCheck(const RecordingInfo &recinfo, const QString &why)
65  void ReschedulePlace(const QString &why)
67 
68  void AddRecording(const RecordingInfo &pi);
69  void AddRecording(const ProgramInfo& prog)
70  { AddRecording(RecordingInfo(prog)); };
71  void FillRecordListFromDB(uint recordid = 0);
72  void FillRecordListFromMaster(void);
73 
74  void UpdateRecStatus(RecordingInfo *pginfo);
75  void UpdateRecStatus(uint cardid, uint chanid,
76  const QDateTime &startts, RecStatus::Type recstatus,
77  const QDateTime &recendts);
78  // Returns a list of all pending recordings and returns
79  // true iff there are conflicts
80  bool GetAllPending(RecList &retList, int recRuleId = 0) const;
81  bool GetAllPending(ProgramList &retList, int recRuleId = 0) const;
82  void GetAllPending(QStringList &strList) const override; // MythScheduler
83  QMap<QString,ProgramInfo*> GetRecording(void) const override; // MythScheduler
84  virtual RecordingInfo* GetRecording(uint recordedid) const;
85 
86  enum SchedSortColumn : std::uint8_t
89  static void GetAllScheduled(QStringList &strList,
90  SchedSortColumn sortBy = kSortTitle,
91  bool ascending = true);
92  static void GetAllScheduled(RecList &proglist,
93  SchedSortColumn sortBy = kSortTitle,
94  bool ascending = true);
95 
96  void getConflicting(RecordingInfo *pginfo, QStringList &strlist);
97  void getConflicting(RecordingInfo *pginfo, RecList *retlist);
98 
99  void PrintList(bool onlyFutureRecordings = false)
100  { PrintList(m_recList, onlyFutureRecordings); };
101  static void PrintList(const RecList &list, bool onlyFutureRecordings = false);
102  static void PrintRec(const RecordingInfo *p, const QString &prefix = "");
103 
104  void SetMainServer(MainServer *ms);
106 
107  void SlaveConnected(const RecordingList &slavelist);
108  void SlaveDisconnected(uint cardid);
109 
110  void DisableScheduling(void) { m_schedulingEnabled = false; }
111  void EnableScheduling(void) { m_schedulingEnabled = true; }
112  bool QueryScheduling(void) const { return m_schedulingEnabled; }
113  void GetNextLiveTVDir(uint cardid);
114  void ResetIdleTime(void);
115 
116  static bool WasStartedAutomatically();
117 
119 
120  int GetError(void) const { return m_error; }
121 
122  void AddChildInput(uint parentid, uint childid);
123  void DelayShutdown();
124 
125  protected:
126  void run(void) override; // MThread
127 
128  private:
129  enum OpenEndType : std::uint8_t {
133  };
134 
135  QString m_recordTable;
137 
138  static bool VerifyCards(void);
139 
140  bool InitInputInfoMap(void);
141  void CreateTempTables(void);
142  void DeleteTempTables(void);
143  void UpdateDuplicates(void);
144  bool FillRecordList(void);
145  void UpdateMatches(uint recordid, uint sourceid, uint mplexid,
146  const QDateTime &maxstarttime);
147  void UpdateManuals(uint recordid);
148  void BuildWorkList(void);
149  bool ClearWorkList(void);
150  void AddNewRecords(void);
151  void AddNotListed(void);
152  void BuildNewRecordsQueries(uint recordid, QStringList &from,
153  QStringList &where, MSqlBindings &bindings);
154  void PruneOverlaps(void);
155  void BuildListMaps(void);
156  void ClearListMaps(void);
157 
158  bool IsBusyRecording(const RecordingInfo *rcinfo);
159 
160  bool IsSameProgram(const RecordingInfo *a, const RecordingInfo *b) const;
161 
162  bool FindNextConflict(const RecList &cardlist,
163  const RecordingInfo *p, RecConstIter &iter,
164  OpenEndType openEnd = openEndNever,
165  uint *paffinity = nullptr,
166  bool ignoreinput = false) const;
168  OpenEndType openEnd = openEndNever,
169  uint *affinity = nullptr,
170  bool checkAll = false)
171  const;
173  void MarkShowingsList(const RecList &showinglist, RecordingInfo *p);
174  void BackupRecStatus(void);
175  void RestoreRecStatus(void);
176  bool TryAnotherShowing(RecordingInfo *p, bool samePriority,
177  bool livetv = false);
178  void SchedNewRecords(void);
179  void SchedNewFirstPass(RecIter &start, const RecIter& end,
180  int recpriority, int recpriority2);
181  void SchedNewRetryPass(const RecIter& start, const RecIter& end,
182  bool samePriority, bool livetv = false);
183  void SchedLiveTV(void);
184  void PruneRedundants(void);
185  void UpdateNextRecord(void);
186 
188 
189  static bool CheckShutdownServer(std::chrono::seconds prerollseconds, QDateTime &idleSince,
190  bool &blockShutdown, uint logmask);
191  void ShutdownServer(std::chrono::seconds prerollseconds, QDateTime &idleSince);
192  void PutInactiveSlavesToSleep(void);
193  bool WakeUpSlave(const QString& slaveHostname, bool setWakingStatus = true);
194  void WakeUpSlaves(void);
195 
196  int FillRecordingDir(const QString &title,
197  const QString &hostname,
198  const QString &storagegroup,
199  const QDateTime &recstartts,
200  const QDateTime &recendts,
201  uint cardid,
202  QString &recording_dir,
203  const RecList &reclist);
204  void FillDirectoryInfoCache(void);
205 
206  void OldRecordedFixups(void);
207  void ResetDuplicates(uint recordid, uint findid, const QString &title,
208  const QString &subtitle, const QString &descrip,
209  const QString &programid);
210  bool HandleReschedule(void);
212  std::chrono::seconds prerollseconds, std::chrono::minutes idleWaitForRecordingTime);
213  void HandleWakeSlave(RecordingInfo &ri, std::chrono::seconds prerollseconds);
214  bool HandleRecording(RecordingInfo &ri, bool &statuschanged,
215  QDateTime &nextStartTime, QDateTime &nextWakeTime,
216  std::chrono::seconds prerollseconds);
218  RecordingInfo &ri, RecStatus::Type recStatus, const QString &details);
219  bool AssignGroupInput(RecordingInfo &ri, std::chrono::seconds prerollseconds);
220  void HandleIdleShutdown(
221  bool &blockShutdown, QDateTime &idleSince, std::chrono::seconds prerollseconds,
222  std::chrono::seconds idleTimeoutSecs, std::chrono::minutes idleWaitForRecordingTime,
223  bool statuschanged);
224 
225  void EnqueueMatch(uint recordid, uint sourceid, uint mplexid,
226  const QDateTime &maxstarttime, const QString &why)
228  sourceid, mplexid, maxstarttime, why)); };
229  void EnqueueCheck(const RecordingInfo &recinfo, const QString &why)
231  why)); };
232  void EnqueuePlace(const QString &why)
234 
236  { return !m_reschedQueue.empty(); };
237  void ClearRequestQueue(void)
238  { m_reschedQueue.clear(); };
239 
240  bool CreateConflictLists(void);
241 
243  mutable QMutex m_schedLock;
245  QWaitCondition m_reschedWait;
249  QMap<uint, SchedInputInfo> m_sinputInfoMap;
250  std::vector<RecList *> m_conflictLists;
251  QMap<uint, RecList> m_recordIdListMap;
252  QMap<QString, RecList> m_titleListMap;
253 
254  QDateTime m_schedTime;
255  bool m_recListChanged {false};
256 
257  bool m_specSched {false};
258  bool m_schedulingEnabled {true};
259  QMap<int, bool> m_schedAfterStartMap;
260 
261  QMap<int, EncoderLink *> *m_tvList {nullptr};
262  AutoExpire *m_expirer {nullptr};
263 
264  QSet<uint> m_schedOrderWarned;
265 
266  bool m_doRun {false};
267 
269 
271  bool m_resetIdleTime {false};
272 
273  bool m_isShuttingDown {false};
275 
276  QMap<QString, FileSystemInfo> m_fsInfoCache;
277 
278  int m_error {0};
279 
280  std::array<QSet<QString>,4> m_sysEvents;
281 
282  // Try to avoid LiveTV sessions until this time
283  QDateTime m_livetvTime;
284 
285  QDateTime m_lastPrepareTime;
286  // Delay shutdown util this time (ms since epoch);
287  std::chrono::milliseconds m_delayShutdownTime {0ms};
288 
290 
291  // cache IsSameProgram()
292  using IsSameKey = std::pair<const RecordingInfo*,const RecordingInfo*>;
293  using IsSameCacheType = QMap<IsSameKey,bool>;
295  int m_tmLastLog {0};
296 };
297 
298 #endif
filesysteminfo.h
MSqlBindings
QMap< QString, QVariant > MSqlBindings
typedef for a map of string -> string bindings for generic queries.
Definition: mythdbcon.h:100
Scheduler
Definition: scheduler.h:45
Scheduler::ClearWorkList
bool ClearWorkList(void)
Definition: scheduler.cpp:948
RecStatus::Type
Type
Definition: recordingstatus.h:16
Scheduler::FindConflict
const RecordingInfo * FindConflict(const RecordingInfo *p, OpenEndType openEnd=openEndNever, uint *affinity=nullptr, bool checkAll=false) const
Definition: scheduler.cpp:1182
Scheduler::GetMainServer
MainServer * GetMainServer()
Definition: scheduler.h:105
Scheduler::AddRecording
void AddRecording(const RecordingInfo &pi)
Definition: scheduler.cpp:1872
SchedInputInfo::SchedInputInfo
SchedInputInfo(void)=default
MThread::start
void start(QThread::Priority p=QThread::InheritPriority)
Tell MThread to start running the thread in the near future.
Definition: mthread.cpp:283
Scheduler::GetNextLiveTVDir
void GetNextLiveTVDir(uint cardid)
Definition: scheduler.cpp:5165
Scheduler::GetError
int GetError(void) const
Definition: scheduler.h:120
RecConstIter
RecList::const_iterator RecConstIter
Definition: mythscheduler.h:13
Scheduler::MarkShowingsList
void MarkShowingsList(const RecList &showinglist, RecordingInfo *p)
Definition: scheduler.cpp:1221
Scheduler::m_recordMatchLock
QMutex m_recordMatchLock
Definition: scheduler.h:244
MythScheduler
This is an generic interface to a program scheduler.
Definition: mythscheduler.h:17
Scheduler::RestoreRecStatus
void RestoreRecStatus(void)
Definition: scheduler.cpp:1254
Scheduler::PrintRec
static void PrintRec(const RecordingInfo *p, const QString &prefix="")
Definition: scheduler.cpp:611
Scheduler::CheckShutdownServer
static bool CheckShutdownServer(std::chrono::seconds prerollseconds, QDateTime &idleSince, bool &blockShutdown, uint logmask)
Definition: scheduler.cpp:3320
Scheduler::m_schedTime
QDateTime m_schedTime
Definition: scheduler.h:254
Scheduler::SlaveConnected
void SlaveConnected(const RecordingList &slavelist)
Definition: scheduler.cpp:831
Scheduler::ReschedulePlace
void ReschedulePlace(const QString &why)
Definition: scheduler.h:65
Scheduler::PruneRedundants
void PruneRedundants(void)
Definition: scheduler.cpp:1567
MThread::wait
bool wait(std::chrono::milliseconds time=std::chrono::milliseconds::max())
Wait for the MThread to exit, with a maximum timeout.
Definition: mthread.cpp:300
Scheduler::GetAllScheduled
static void GetAllScheduled(QStringList &strList, SchedSortColumn sortBy=kSortTitle, bool ascending=true)
Returns all scheduled programs serialized into a QStringList.
Definition: scheduler.cpp:1847
RecordingInfo
Holds information on a TV Program one might wish to record.
Definition: recordinginfo.h:35
Scheduler::m_reschedWait
QWaitCondition m_reschedWait
Definition: scheduler.h:245
Scheduler::m_recList
RecList m_recList
Definition: scheduler.h:246
Scheduler::CreateConflictLists
bool CreateConflictLists(void)
Definition: scheduler.cpp:5815
SchedInputInfo::m_groupInputs
std::vector< unsigned int > m_groupInputs
Definition: scheduler.h:40
Scheduler::IsSameProgram
bool IsSameProgram(const RecordingInfo *a, const RecordingInfo *b) const
Definition: scheduler.cpp:1061
Scheduler::DelayShutdown
void DelayShutdown()
Definition: scheduler.cpp:3090
Scheduler::WakeUpSlaves
void WakeUpSlaves(void)
Definition: scheduler.cpp:3686
Scheduler::FillRecordListFromDB
void FillRecordListFromDB(uint recordid=0)
Definition: scheduler.cpp:491
Scheduler::TryAnotherShowing
bool TryAnotherShowing(RecordingInfo *p, bool samePriority, bool livetv=false)
Definition: scheduler.cpp:1262
Scheduler::m_delayShutdownTime
std::chrono::milliseconds m_delayShutdownTime
Definition: scheduler.h:287
SchedInputInfo::m_conflictList
RecList * m_conflictList
Definition: scheduler.h:42
Scheduler::m_recListChanged
bool m_recListChanged
Definition: scheduler.h:255
Scheduler::ResetDuplicates
void ResetDuplicates(uint recordid, uint findid, const QString &title, const QString &subtitle, const QString &descrip, const QString &programid)
Definition: scheduler.cpp:2255
Scheduler::kSortType
@ kSortType
Definition: scheduler.h:88
MainServer
Definition: mainserver.h:115
Scheduler::HandleRecording
bool HandleRecording(RecordingInfo &ri, bool &statuschanged, QDateTime &nextStartTime, QDateTime &nextWakeTime, std::chrono::seconds prerollseconds)
Definition: scheduler.cpp:2657
AutoExpire
Used to expire recordings to make space for new recordings.
Definition: autoexpire.h:60
Scheduler::DisableScheduling
void DisableScheduling(void)
Definition: scheduler.h:110
Scheduler::FillDirectoryInfoCache
void FillDirectoryInfoCache(void)
Definition: scheduler.cpp:5693
Scheduler::openEndDiffChannel
@ openEndDiffChannel
Definition: scheduler.h:131
Scheduler::SchedLiveTV
void SchedLiveTV(void)
Definition: scheduler.cpp:5715
Scheduler::PutInactiveSlavesToSleep
void PutInactiveSlavesToSleep(void)
Definition: scheduler.cpp:3495
Scheduler::SlaveDisconnected
void SlaveDisconnected(uint cardid)
Definition: scheduler.cpp:906
Scheduler::OldRecordedFixups
void OldRecordedFixups(void)
Definition: scheduler.cpp:1990
Scheduler::m_conflictLists
std::vector< RecList * > m_conflictLists
Definition: scheduler.h:250
Scheduler::kSortTitle
@ kSortTitle
Definition: scheduler.h:87
Scheduler::IsBusyRecording
bool IsBusyRecording(const RecordingInfo *rcinfo)
Definition: scheduler.cpp:1913
Scheduler::m_schedLock
QMutex m_schedLock
Definition: scheduler.h:243
Scheduler::m_resetIdleTimeLock
QMutex m_resetIdleTimeLock
Definition: scheduler.h:270
Scheduler::m_dbConn
MSqlQueryInfo m_dbConn
Definition: scheduler.h:274
remoteutil.h
mythdeque.h
hardwareprofile.distros.mythtv_data.data_mythtv.prefix
string prefix
Definition: data_mythtv.py:37
Scheduler::m_sinputInfoMap
QMap< uint, SchedInputInfo > m_sinputInfoMap
Definition: scheduler.h:249
Scheduler::ResetIdleTime
void ResetIdleTime(void)
Definition: scheduler.cpp:150
Scheduler::Scheduler
Scheduler(bool runthread, QMap< int, EncoderLink * > *_tvList, const QString &tmptable="record", Scheduler *master_sched=nullptr)
Definition: scheduler.cpp:62
Scheduler::m_resetIdleTime
bool m_resetIdleTime
Definition: scheduler.h:271
Scheduler::m_schedOrderWarned
QSet< uint > m_schedOrderWarned
Definition: scheduler.h:264
Scheduler::m_expirer
AutoExpire * m_expirer
Definition: scheduler.h:262
RecIter
RecList::iterator RecIter
Definition: mythscheduler.h:14
Scheduler::kSortLastRecorded
@ kSortLastRecorded
Definition: scheduler.h:87
Scheduler::QueryScheduling
bool QueryScheduling(void) const
Definition: scheduler.h:112
Scheduler::m_isShuttingDown
bool m_isShuttingDown
Definition: scheduler.h:273
idleTimeoutSecs
static GlobalSpinBoxSetting * idleTimeoutSecs()
Definition: backendsettings.cpp:523
Scheduler::AddNotListed
void AddNotListed(void)
Definition: scheduler.cpp:4823
Scheduler::DeleteTempTables
void DeleteTempTables(void)
Definition: scheduler.cpp:4258
Scheduler::m_livetvList
RecList m_livetvList
Definition: scheduler.h:248
Scheduler::SchedNewFirstPass
void SchedNewFirstPass(RecIter &start, const RecIter &end, int recpriority, int recpriority2)
Definition: scheduler.cpp:1439
Scheduler::m_mainServer
MainServer * m_mainServer
Definition: scheduler.h:268
Scheduler::AddChildInput
void AddChildInput(uint parentid, uint childid)
Definition: scheduler.cpp:5949
SchedInputInfo::m_sgroupId
uint m_sgroupId
Definition: scheduler.h:38
Scheduler::VerifyCards
static bool VerifyCards(void)
Definition: scheduler.cpp:157
MSqlQueryInfo
MSqlDatabase Info, used by MSqlQuery. Do not use directly.
Definition: mythdbcon.h:92
Scheduler::AddRecording
void AddRecording(const ProgramInfo &prog)
Definition: scheduler.h:69
hardwareprofile.config.p
p
Definition: config.py:33
Scheduler::ClearListMaps
void ClearListMaps(void)
Definition: scheduler.cpp:1052
Scheduler::kSortPriority
@ kSortPriority
Definition: scheduler.h:88
Scheduler::~Scheduler
~Scheduler() override
Definition: scheduler.cpp:102
Scheduler::ChangeRecordingEnd
bool ChangeRecordingEnd(RecordingInfo *oldp, RecordingInfo *newp)
Definition: scheduler.cpp:754
Scheduler::m_specSched
bool m_specSched
Definition: scheduler.h:257
SchedInputInfo::m_inputId
uint m_inputId
Definition: scheduler.h:37
SchedInputInfo::m_schedGroup
bool m_schedGroup
Definition: scheduler.h:39
Scheduler::Stop
void Stop(void)
Definition: scheduler.cpp:138
Scheduler::EnableScheduling
void EnableScheduling(void)
Definition: scheduler.h:111
Scheduler::m_recordIdListMap
QMap< uint, RecList > m_recordIdListMap
Definition: scheduler.h:251
Scheduler::SetExpirer
void SetExpirer(AutoExpire *autoExpirer)
Definition: scheduler.h:55
Scheduler::m_reschedQueue
MythDeque< QStringList > m_reschedQueue
Definition: scheduler.h:242
Scheduler::OpenEndType
OpenEndType
Definition: scheduler.h:129
Scheduler::HandleIdleShutdown
void HandleIdleShutdown(bool &blockShutdown, QDateTime &idleSince, std::chrono::seconds prerollseconds, std::chrono::seconds idleTimeoutSecs, std::chrono::minutes idleWaitForRecordingTime, bool statuschanged)
Definition: scheduler.cpp:3095
Scheduler::kSortNextRecording
@ kSortNextRecording
Definition: scheduler.h:87
scheduledrecording.h
Scheduler::m_tmLastLog
int m_tmLastLog
Definition: scheduler.h:295
Scheduler::RescheduleMatch
void RescheduleMatch(uint recordid, uint sourceid, uint mplexid, const QDateTime &maxstarttime, const QString &why)
Definition: scheduler.h:59
Scheduler::FillRecordingDir
int FillRecordingDir(const QString &title, const QString &hostname, const QString &storagegroup, const QDateTime &recstartts, const QDateTime &recendts, uint cardid, QString &recording_dir, const RecList &reclist)
Definition: scheduler.cpp:5192
Scheduler::WasStartedAutomatically
static bool WasStartedAutomatically()
Definition: scheduler.cpp:5767
Scheduler::GetRecording
QMap< QString, ProgramInfo * > GetRecording(void) const override
Definition: scheduler.cpp:1784
Scheduler::IsSameKey
std::pair< const RecordingInfo *, const RecordingInfo * > IsSameKey
Definition: scheduler.h:292
Scheduler::Reschedule
void Reschedule(const QStringList &request)
Definition: scheduler.cpp:1865
Scheduler::m_titleListMap
QMap< QString, RecList > m_titleListMap
Definition: scheduler.h:252
Scheduler::m_priorityTable
QString m_priorityTable
Definition: scheduler.h:136
Scheduler::IsSameCacheType
QMap< IsSameKey, bool > IsSameCacheType
Definition: scheduler.h:293
Scheduler::HandleReschedule
bool HandleReschedule(void)
Definition: scheduler.cpp:2332
Scheduler::SetMainServer
void SetMainServer(MainServer *ms)
Definition: scheduler.cpp:145
Scheduler::PrintList
void PrintList(bool onlyFutureRecordings=false)
Definition: scheduler.h:99
Scheduler::getConflicting
void getConflicting(RecordingInfo *pginfo, QStringList &strlist)
Definition: scheduler.cpp:1715
Scheduler::m_sysEvents
std::array< QSet< QString >, 4 > m_sysEvents
Definition: scheduler.h:280
Scheduler::UpdateNextRecord
void UpdateNextRecord(void)
Definition: scheduler.cpp:1648
Scheduler::AssignGroupInput
bool AssignGroupInput(RecordingInfo &ri, std::chrono::seconds prerollseconds)
Definition: scheduler.cpp:2951
Scheduler::AddNewRecords
void AddNewRecords(void)
Definition: scheduler.cpp:4382
Scheduler::m_lastPrepareTime
QDateTime m_lastPrepareTime
Definition: scheduler.h:285
Scheduler::SchedSortColumn
SchedSortColumn
Definition: scheduler.h:86
Scheduler::EnqueueCheck
void EnqueueCheck(const RecordingInfo &recinfo, const QString &why)
Definition: scheduler.h:229
Scheduler::FindNextConflict
bool FindNextConflict(const RecList &cardlist, const RecordingInfo *p, RecConstIter &iter, OpenEndType openEnd=openEndNever, uint *paffinity=nullptr, bool ignoreinput=false) const
Definition: scheduler.cpp:1077
AutoDeleteDeque< ProgramInfo * >
Scheduler::openEndAlways
@ openEndAlways
Definition: scheduler.h:132
Scheduler::GetExpirer
AutoExpire * GetExpirer()
Definition: scheduler.h:56
SchedInputInfo::m_conflictingInputs
std::vector< unsigned int > m_conflictingInputs
Definition: scheduler.h:41
Scheduler::RescheduleCheck
void RescheduleCheck(const RecordingInfo &recinfo, const QString &why)
Definition: scheduler.h:63
recordinginfo.h
Scheduler::UpdateDuplicates
void UpdateDuplicates(void)
Definition: scheduler.cpp:4274
Scheduler::m_recordTable
QString m_recordTable
Definition: scheduler.h:135
Scheduler::BackupRecStatus
void BackupRecStatus(void)
Definition: scheduler.cpp:1246
SchedInputInfo
Definition: scheduler.h:31
ProgramInfo
Holds information on recordings and videos.
Definition: programinfo.h:67
Scheduler::m_fsInfoCache
QMap< QString, FileSystemInfo > m_fsInfoCache
Definition: scheduler.h:276
Scheduler::EnqueuePlace
void EnqueuePlace(const QString &why)
Definition: scheduler.h:232
ScheduledRecording::BuildMatchRequest
static QStringList BuildMatchRequest(uint recordid, uint sourceid, uint mplexid, const QDateTime &maxstarttime, const QString &why)
Definition: scheduledrecording.cpp:26
Scheduler::BuildListMaps
void BuildListMaps(void)
Definition: scheduler.cpp:1017
ScheduledRecording::BuildPlaceRequest
static QStringList BuildPlaceRequest(const QString &why)
Definition: scheduledrecording.cpp:54
mythscheduler.h
Scheduler::ClearRequestQueue
void ClearRequestQueue(void)
Definition: scheduler.h:237
Scheduler::CreateTempTables
void CreateTempTables(void)
Definition: scheduler.cpp:4210
Scheduler::m_workList
RecList m_workList
Definition: scheduler.h:247
Scheduler::EnqueueMatch
void EnqueueMatch(uint recordid, uint sourceid, uint mplexid, const QDateTime &maxstarttime, const QString &why)
Definition: scheduler.h:225
MythDeque< QStringList >
Scheduler::MarkOtherShowings
void MarkOtherShowings(RecordingInfo *p)
Definition: scheduler.cpp:1202
Scheduler::openEndNever
@ openEndNever
Definition: scheduler.h:130
Scheduler::UpdateRecStatus
void UpdateRecStatus(RecordingInfo *pginfo)
Definition: scheduler.cpp:649
Scheduler::BuildWorkList
void BuildWorkList(void)
Definition: scheduler.cpp:936
Scheduler::m_schedAfterStartMap
QMap< int, bool > m_schedAfterStartMap
Definition: scheduler.h:259
Scheduler::m_cacheIsSameProgram
IsSameCacheType m_cacheIsSameProgram
Definition: scheduler.h:294
Scheduler::m_error
int m_error
Definition: scheduler.h:278
RecList
std::deque< RecordingInfo * > RecList
Definition: mythscheduler.h:12
MThread
This is a wrapper around QThread that does several additional things.
Definition: mthread.h:48
Scheduler::HandleWakeSlave
void HandleWakeSlave(RecordingInfo &ri, std::chrono::seconds prerollseconds)
Definition: scheduler.cpp:2554
mthread.h
Scheduler::m_livetvTime
QDateTime m_livetvTime
Definition: scheduler.h:283
Scheduler::PruneOverlaps
void PruneOverlaps(void)
Definition: scheduler.cpp:993
Scheduler::GetRecStatus
RecStatus::Type GetRecStatus(const ProgramInfo &pginfo)
Definition: scheduler.cpp:1810
Scheduler::WakeUpSlave
bool WakeUpSlave(const QString &slaveHostname, bool setWakingStatus=true)
Definition: scheduler.cpp:3639
Scheduler::SchedNewRetryPass
void SchedNewRetryPass(const RecIter &start, const RecIter &end, bool samePriority, bool livetv=false)
Definition: scheduler.cpp:1517
Scheduler::GetAllPending
bool GetAllPending(RecList &retList, int recRuleId=0) const
Definition: scheduler.cpp:1745
Scheduler::UpdateManuals
void UpdateManuals(uint recordid)
Definition: scheduler.cpp:3716
Scheduler::m_tvList
QMap< int, EncoderLink * > * m_tvList
Definition: scheduler.h:261
Scheduler::HaveQueuedRequests
bool HaveQueuedRequests(void)
Definition: scheduler.h:235
musicbrainzngs.caa.hostname
string hostname
Definition: caa.py:17
Scheduler::SchedNewRecords
void SchedNewRecords(void)
Definition: scheduler.cpp:1370
Scheduler::HandleRunSchedulerStartup
bool HandleRunSchedulerStartup(std::chrono::seconds prerollseconds, std::chrono::minutes idleWaitForRecordingTime)
Definition: scheduler.cpp:2502
Scheduler::BuildNewRecordsQueries
void BuildNewRecordsQueries(uint recordid, QStringList &from, QStringList &where, MSqlBindings &bindings)
Definition: scheduler.cpp:3878
Scheduler::m_doRun
bool m_doRun
Definition: scheduler.h:266
Scheduler::FillRecordList
bool FillRecordList(void)
Definition: scheduler.cpp:440
Scheduler::HandleRecordingStatusChange
void HandleRecordingStatusChange(RecordingInfo &ri, RecStatus::Type recStatus, const QString &details)
Definition: scheduler.cpp:2912
SchedInputInfo::~SchedInputInfo
~SchedInputInfo(void)=default
Scheduler::m_schedulingEnabled
bool m_schedulingEnabled
Definition: scheduler.h:258
ScheduledRecording::BuildCheckRequest
static QStringList BuildCheckRequest(const RecordingInfo &recinfo, const QString &why)
Definition: scheduledrecording.cpp:38
Scheduler::FillRecordListFromMaster
void FillRecordListFromMaster(void)
Definition: scheduler.cpp:574
Scheduler::Wait
void Wait(void)
Definition: scheduler.h:53
Scheduler::m_openEnd
OpenEndType m_openEnd
Definition: scheduler.h:289
idleWaitForRecordingTime
static GlobalSpinBoxSetting * idleWaitForRecordingTime()
Definition: backendsettings.cpp:534
Scheduler::ShutdownServer
void ShutdownServer(std::chrono::seconds prerollseconds, QDateTime &idleSince)
Definition: scheduler.cpp:3380
Scheduler::UpdateMatches
void UpdateMatches(uint recordid, uint sourceid, uint mplexid, const QDateTime &maxstarttime)
Definition: scheduler.cpp:4040
uint
unsigned int uint
Definition: freesurround.h:24
MythDeque::enqueue
void enqueue(const T &d)
Adds item to the back of the list. O(1).
Definition: mythdeque.h:41
Scheduler::run
void run(void) override
Runs the Qt event loop unless we have a QRunnable, in which case we run the runnable run instead.
Definition: scheduler.cpp:2035
Scheduler::InitInputInfoMap
bool InitInputInfoMap(void)
Definition: scheduler.cpp:5905