summaryrefslogtreecommitdiff
path: root/timers.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'timers.cpp')
-rw-r--r--timers.cpp42
1 files changed, 42 insertions, 0 deletions
diff --git a/timers.cpp b/timers.cpp
index ea3d6d1..e1689ce 100644
--- a/timers.cpp
+++ b/timers.cpp
@@ -1,9 +1,51 @@
+#include <sstream>
#include "timers.h"
+static bool operator<( cTimer const& left, cTimer const& right )
+{
+ return left.Compare( right ) < 0;
+}
+
namespace vdrlive {
+using namespace std;
+
+SortedTimers::SortedTimers():
+ m_state( 0 )
+{
+ ReloadTimers( true );
+}
+
+string SortedTimers::GetTimerId( cTimer const& timer )
+{
+ ostringstream builder;
+ builder << *timer.Channel()->GetChannelID().ToString() << ":" << timer.WeekDays() << ":"
+ << timer.Day() << ":" << timer.Start() << ":" << timer.Stop();
+ return builder.str();
+}
+
+void SortedTimers::ReloadTimers( bool initial )
+{
+ if ( !Timers.Modified( m_state ) && !initial )
+ return;
+
+ dsyslog("reloading timers");
+
+ clear();
+ for ( cTimer* timer = Timers.First(); timer != 0; timer = Timers.Next( timer ) ) {
+ push_back( *timer );
+ }
+ sort();
+}
+
TimerManager::TimerManager()
{
}
+void TimerManager::DoPendingWork()
+{
+ cMutexLock lock( this );
+ m_timers.ReloadTimers();
+}
+
} // namespace vdrlive