Author: duncan
Date: Tue Feb 12 15:52:45 2008
New Revision: 10362

Log:
Converted tv.tvguide and util.misc.upsoon to use the kaa.rpc calls
Updated record_client with sync call to get the scheduled recordings
The changes are a bit "noisy" with print statements


Modified:
   branches/rel-1/freevo/src/tv/record_client.py
   branches/rel-1/freevo/src/tv/tvguide.py
   branches/rel-1/freevo/src/util/misc.py

Modified: branches/rel-1/freevo/src/tv/record_client.py
==============================================================================
--- branches/rel-1/freevo/src/tv/record_client.py       (original)
+++ branches/rel-1/freevo/src/tv/record_client.py       Tue Feb 12 15:52:45 2008
@@ -71,15 +71,41 @@
 
     def recordserver_rpc(self, cmd, *args, **kwargs):
         """ call the record server command using kaa rpc """
+        def closed_handler():
+            self.server = None
+
         _debug_('recordserver_rpc(cmd=%r, args=%r, kwargs=%r)' % (cmd, args, 
kwargs), 2)
-        return self.server.rpc(cmd, *args, **kwargs)
+        try:
+            if self.server is None:
+                try:
+                    self.server = kaa.rpc.Client(self.socket, self.secret)
+                    self.server.signals['closed'].connect(closed_handler)
+                    _debug_('%r is up' % (self.socket,), DINFO)
+                except kaa.rpc.ConnectError, e:
+                    _debug_('%r is down' % (self.socket,), DINFO)
+                    self.server = None
+                    return None
+            return self.server.rpc(cmd, *args, **kwargs)
+        except kaa.rpc.ConnectError, e:
+            _debug_('%r is down' % (self.socket,), DINFO)
+            self.server = None
+            return None
+        except IOError, e:
+            _debug_('%r is down' % (self.socket,), DINFO)
+            self.server = None
+            return None
 
-    def getScheduledRecordings(self):
-        """ get the scheduled recordings, returning an in process object """
-        _debug_('getScheduledRecordings()', 2)
-        inprogress = self.recordserver_rpc('getScheduledRecordings')
-        print 'RecordClient.getScheduledRecordings.inprogress = %r' % 
(inprogress)
-        return inprogress
+
+    def getScheduledRecordingsNow(self):
+        """ get the scheduled recordings, returning the scheduled recordings 
object """
+        _debug_('getScheduledRecordingsNow()', 2)
+        progress = self.recordserver_rpc('getScheduledRecordings')
+        if progress is None:
+            return None
+        progress.wait()
+        result = progress.get_result()
+        _debug_('getScheduledRecordingsNow.result=%r' % (result), 2)
+        return result
 
 
     def server_rpc(self, cmd, callback, *args, **kwargs):
@@ -405,16 +431,19 @@
 
 
 if __name__ == '__main__':
+    config.DEBUG = 2
+
+    def shutdown(result):
+        print "shutdown.result=%r" % (result)
+        raise SystemExit
 
     def handler(result):
         """ A callback handler for test functions """
         _debug_('handler(result)=%r' % (result), 2)
-        print 'result = %r' % (result)
+        print 'handler.result=%r' % (result)
         raise SystemExit
 
     rc = RecordClient()
-    rc.getScheduledRecordings(handler)
-    kaa.main.run()
 
     if len(sys.argv) >= 2:
         function = sys.argv[1].lower()
@@ -428,6 +457,14 @@
         print 'result: %s, response: %s ' % (result, response)
 
 
+    if function == "getscheduledrecordingsnow":
+        result = rc.getScheduledRecordingsNow()
+        print 'result: %r' % (result)
+
+
+    if function == "getscheduledrecordings":
+        rc.getScheduledRecordings(handler)
+
     if function == "updatefavoritesschedule":
         (result, response) = updateFavoritesSchedule()
         print '%r' % response
@@ -475,3 +512,6 @@
                 _debug_('%r' % response)
         else:
             print 'no data'
+
+    kaa.notifier.OneShotTimer(shutdown, 'bye').start(3)
+    kaa.main.run()

Modified: branches/rel-1/freevo/src/tv/tvguide.py
==============================================================================
--- branches/rel-1/freevo/src/tv/tvguide.py     (original)
+++ branches/rel-1/freevo/src/tv/tvguide.py     Tue Feb 12 15:52:45 2008
@@ -42,7 +42,7 @@
 from event import *
 
 import epg_xmltv, epg_types
-import record_client as ri
+import record_client
 
 skin = skin.get_singleton()
 skin.register('tv', ('screen', 'title', 'subtitle', 'view',
@@ -79,6 +79,7 @@
                 break
 
 
+        self.recordclient = record_client.RecordClient()
         self.col_time = 30      # each col represents 30 minutes
         self.n_cols  = (stop_time - start_time) / 60 / self.col_time
         self.player = player
@@ -99,12 +100,32 @@
         menuw.pushmenu(self)
 
 
+    def update_schedules_cb(self, scheduledRecordings):
+        """ """
+        print 'update_schedules_cb(scheduledRecordings=%r)' % 
(scheduledRecordings)
+        #upsoon = '%s/upsoon' % (config.FREEVO_CACHEDIR)
+        #if os.path.isfile(upsoon):
+        #    os.unlink(upsoon)
+
+        util.misc.comingup(None, (True, scheduledRecordings))
+        progs = scheduledRecordings.getProgramList()
+
+        for k in progs:
+            prog = progs[k]
+            self.scheduled_programs.append(prog.str2utf())
+            if prog.overlap:
+                self.overlap_programs.append(prog.str2utf())
+            if hasattr(prog, 'isFavorite') and prog.isFavorite:
+                self.favorite_programs.append(prog.str2utf())
+
+
     def update_schedules(self, force=False):
         """
         update schedule
 
         reload the list of scheduled programs and check for overlapping
         """
+        print 'update_schedules(force=%r)' % (force)
         if not force and self.last_update + 60 > time.time():
             return
 
@@ -112,31 +133,13 @@
         #if self.last_update + 1 > time.time():
         #    return
 
-        upsoon = '%s/upsoon' % (config.FREEVO_CACHEDIR)
-        if os.path.isfile(upsoon):
-            os.unlink(upsoon)
-
-        _debug_('update schedule',2)
+        _debug_('update schedule', 2)
         self.last_update = time.time()
         self.scheduled_programs = []
         self.overlap_programs = []
         self.favorite_programs = []
-        (got_schedule, schedule) = ri.getScheduledRecordings()
-
-        util.misc.comingup(None, (got_schedule, schedule))
-
-        if got_schedule:
-            progs = schedule.getProgramList()
-
-            for k in progs:
-                prog = progs[k]
-                self.scheduled_programs.append(prog.str2utf())
-                if prog.overlap:
-                    self.overlap_programs.append(prog.str2utf())
-                if hasattr(prog, 'isFavorite' ) and prog.isFavorite:
-                    self.favorite_programs.append(prog.str2utf())
+        self.recordclient.getScheduledRecordings(self.update_schedules_cb)
 
-### event handler
 
     def eventhandler(self, event, menuw=None):
         """
@@ -290,7 +293,7 @@
 
     def show(self):
         """ show the guide"""
-        _debug_('show',2)
+        _debug_('show', 2)
         if not self.visible:
             self.visible = 1
             self.refresh()
@@ -298,7 +301,7 @@
 
     def hide(self):
         """ hide the guide"""
-        _debug_('hide',2)
+        _debug_('hide', 2)
         if self.visible:
             self.visible = 0
             skin.clear()
@@ -310,7 +313,7 @@
         This function is called automatically by freevo whenever this menu is
         opened or reopened.
         """
-        _debug_('refresh',2)
+        _debug_('refresh', 2)
         if self.menuw.children:
             return
         _debug_('tvguide: setting context to %s' % self.event_context, 2)
@@ -325,7 +328,7 @@
         This function updates the scheduled and overlap flags for
         all currently displayed programs.
         """
-        _debug_('update',2)
+        _debug_('update', 2)
         self.update_schedules(force)
         if self.table:
             for t in self.table:
@@ -395,7 +398,7 @@
         else:
             selected = None
 
-        self.rebuild(new_start_time,new_end_time, start_channel, selected)
+        self.rebuild(new_start_time, new_end_time, start_channel, selected)
 
 
     def rebuild(self, start_time, stop_time, start_channel, selected):
@@ -404,7 +407,7 @@
         This is neccessary we change the set of programs that have to be
         displayed, this is the case when the user moves around in the menu.
         """
-        _debug_('reload',2)
+        _debug_('reload', 2)
         self.guide = epg_xmltv.get_guide()
         channels = self.guide.GetPrograms(start=start_time+1, stop=stop_time-1)
 

Modified: branches/rel-1/freevo/src/util/misc.py
==============================================================================
--- branches/rel-1/freevo/src/util/misc.py      (original)
+++ branches/rel-1/freevo/src/util/misc.py      Tue Feb 12 15:52:45 2008
@@ -393,30 +393,30 @@
     return string
 
 
-#
-# Coming Up for TV schedule
-#
-
-def comingup(items=None, ScheduledRecordings=None):
-    import tv.record_client as ri
+def comingup(items=None, scheduledRecordings=None):
+    """ Coming Up for TV schedule """
+    print 'comingup(items=%r, scheduledRecordings=%r)' % (items, 
scheduledRecordings)
+    from tv.record_client import RecordClient
     import time
     import codecs
 
     result = u''
 
     cachefile = '%s/upsoon' % (config.FREEVO_CACHEDIR)
-    if not ScheduledRecordings:
-        if (os.path.exists(cachefile) and \
-            (abs(time.time() - os.path.getmtime(cachefile)) < 600)):
+
+    if not scheduledRecordings:
+        if os.path.exists(cachefile) and abs(time.time() - 
os.path.getmtime(cachefile)) < 600:
             cache = codecs.open(cachefile,'r', config.encoding)
             for a in cache.readlines():
                 result = result + a
             cache.close()
             return result
 
-        (status, recordings) = ri.getScheduledRecordings()
+        (status, recordings) = (True, 
RecordClient().getScheduledRecordingsNow())
+        if recordings is None:
+            return _('The recordserver is down')
     else:
-        (status, recordings) = ScheduledRecordings
+        (status, recordings) = scheduledRecordings
 
     if not status:
         result = _('The recordserver is down')

-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
Freevo-cvslog mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/freevo-cvslog

Reply via email to