summaryrefslogtreecommitdiff
path: root/timers.h
diff options
context:
space:
mode:
Diffstat (limited to 'timers.h')
-rw-r--r--timers.h37
1 files changed, 35 insertions, 2 deletions
diff --git a/timers.h b/timers.h
index b6c53b8..339ead4 100644
--- a/timers.h
+++ b/timers.h
@@ -2,22 +2,55 @@
#define VDR_LIVE_TIMERS_H
#include <list>
+#include <string>
#include <vdr/timers.h>
+#include <vdr/thread.h>
#include "live.h"
namespace vdrlive {
class Plugin;
-class TimerManager
+class SortedTimersInterface: public std::list< cTimer >
+{
+public:
+ virtual ~SortedTimersInterface() {}
+
+ virtual std::string GetTimerId( cTimer const& timer ) = 0;
+};
+
+class SortedTimers: public SortedTimersInterface
+{
+ friend class TimerManager;
+
+public:
+ virtual std::string GetTimerId( cTimer const& timer );
+
+private:
+ SortedTimers();
+ SortedTimers( SortedTimers const& );
+
+ int m_state;
+ int m_refs;
+
+ void ReloadTimers( bool initial = false );
+};
+
+class TimerManager: public cMutex
{
friend TimerManager& Plugin::GetLiveTimerManager();
+public:
+ SortedTimersInterface& GetTimers() { return m_timers; }
+
+ // may only be called from Plugin::MainThreadHook
+ void DoPendingWork();
+
private:
TimerManager();
TimerManager( TimerManager const& );
-
+ SortedTimers m_timers;
};
inline TimerManager& LiveTimerManager()