Author: dmeyer
Date: Sat Mar 18 18:59:01 2006
New Revision: 8099

Modified:
   trunk/tvserver/src/server.py

Log:
lock server while changing recordings

Modified: trunk/tvserver/src/server.py
==============================================================================
--- trunk/tvserver/src/server.py        (original)
+++ trunk/tvserver/src/server.py        Sat Mar 18 18:59:01 2006
@@ -84,6 +84,8 @@
 
         self.last_listing = []
         self.live_tv_map = {}
+        self.locked = False
+        
         # add port for channels and check if they are in live-tv mode
         port = 6000
         for index, channel in enumerate(self.epg.channels()):
@@ -117,6 +119,12 @@
         """
         Print current schedule (for debug only)
         """
+        if self.locked:
+            # system busy, call again later
+            print_schedule()
+            return True
+        
+        log.info('%s %s',id(self.recordings), len(self.recordings))
         if hasattr(self, 'only_print_current'):
             # print only latest recordings
             all = False
@@ -144,12 +152,20 @@
         """
         Reschedule all recordings.
         """
+        if self.locked:
+            # system busy, call again later
+            OneShotTimer(self.reschedule).start(0.1)
+            return True
+        self.locked = True
         self.scheduler.schedule(self.recordings)
 
 
     def scheduler_callback(self):
         log.info('answer from scheduler')
 
+        # unlock system
+        self.locked = False
+
         # send update
         sending = []
         listing = []
@@ -178,6 +194,11 @@
         """
         Schedule recordings on recorder for the next SCHEDULE_TIMER seconds.
         """
+        if self.locked:
+            # system busy, call again later
+            OneShotTimer(self.schedule).start(0.1)
+            return True
+        
         log.info('calling self.schedule')
         # sort by start time
         self.recordings.sort(lambda l, o: cmp(l.start,o.start))
@@ -204,9 +225,22 @@
         """
         Update recordings based on favorites and epg.
         """
-        self.epg.check_all(self.favorites, self.recordings, self.reschedule)
+        if self.locked:
+            # system busy, call again later
+            OneShotTimer(self.epg_update).start(0.1)
+            return True
+        log.info('%s %s',id(self.recordings), len(self.recordings))
+        self.locked = True
+        self.epg.check_all(self.favorites, self.recordings, 
self.epg_update_callback)
+
 
+    def epg_update_callback(self):
+        """
+        """
+        self.locked = False
+        self.reschedule()
 
+        
     #
     # load / save fxd file with recordings and favorites
     #


-------------------------------------------------------
This SF.Net email is sponsored by xPML, a groundbreaking scripting language
that extends applications into web and mobile media. Attend the live webcast
and join the prime developer group breaking into this new coding territory!
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=110944&bid=241720&dat=121642
_______________________________________________
Freevo-cvslog mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/freevo-cvslog

Reply via email to