Author: dmeyer
Date: Sun Mar 18 11:35:28 2007
New Revision: 9341

Modified:
   trunk/core/src/ipc/tvserver.py

Log:
adjust to new mbus.rpc

Modified: trunk/core/src/ipc/tvserver.py
==============================================================================
--- trunk/core/src/ipc/tvserver.py      (original)
+++ trunk/core/src/ipc/tvserver.py      Sun Mar 18 11:35:28 2007
@@ -117,7 +117,7 @@
     """
     def __init__(self, instance):
         self.last_update = time.time()
-        self.__recordings = {}
+        self._recordings = {}
         self.server = None
 
         instance.signals['new-entity'].connect(self.new_entity)
@@ -129,24 +129,18 @@
         self.updating = 0
 
 
+    @kaa.notifier.yield_execution()
     def new_entity(self, entity):
         if not entity.matches(SERVER):
-            return True
+            yield True
         log.info('recordserver found')
         self.server = entity
-        self.rpc = self.server.rpc
-        self.rpc('home-theatre.recording.list', self.list_cb).call()
         self.server.register('home-theatre.record.list.update')
-        return True
-
-
-    def lost_entity(self, entity):
-        if entity == self.server:
-            self.server = None
-        return True
-
+        self.rpc = self.server.rpc2
+        wait = self.rpc('home-theatre.recording.list')
+        yield wait
+        result = wait()
 
-    def list_cb(self, result):
         if not self.server:
             return
         if not result:
@@ -154,12 +148,18 @@
             return
             
         self.last_update = time.time()
-        self.__recordings = {}
+        self._recordings = {}
         self.updating = 1
         for l in result:
-            self.__recordings['%s-%s-%s' % (l[1], l[3], l[4])] = Recording(*l)
+            self._recordings['%s-%s-%s' % (l[1], l[3], l[4])] = Recording(*l)
         log.info('got recording list')
-        self.__request_description()
+        self._request_description()
+
+
+    def lost_entity(self, entity):
+        if entity == self.server:
+            self.server = None
+        return True
 
 
     def list_update_cb(self, result):
@@ -169,71 +169,68 @@
             if not type(l) is ListType:
                 continue
             key = '%s-%s-%s' % (l[1], l[3], l[4])
-            if key in self.__recordings:
+            if key in self._recordings:
                 log.debug('update: %s: %s', l[0], l[5])
-                self.__recordings[key].update(*l)
+                self._recordings[key].update(*l)
             else:
                 log.debug('new: %s', l[0])
-                self.__recordings[key] = Recording(*l)
-        self.__request_description()
+                self._recordings[key] = Recording(*l)
+        self._request_description()
         return True
 
 
-    def describe_cb(self, rec):
-        if not rec:
-            log.error(rec)
-            return
-        self.last_update = time.time()
-        description = {}
-        description['title'] = rec[1]
-        description['start_padding'] = rec[7]
-        description['stop_padding'] = rec[8]
-        for key, value in dict(rec[9]).items():
-            description[key] = value
-        key = '%s-%s-%s' % (rec[2], rec[4], rec[5])
-        self.__recordings[key].description = description
-        self.__request_description()
-
-
-    def __request_description(self):
+    @kaa.notifier.yield_execution(lock=True)
+    def _request_description(self):
         if not self.server:
             self.updating = 0
             return
 
         self.updating = 2
 
-        for key in self.__recordings:
-            if not self.__recordings[key].description:
-                r = self.rpc('home-theatre.recording.describe', 
self.describe_cb)
-                r.call(self.__recordings[key].id)
+        for key in self._recordings:
+            if self._recordings[key].description:
+                continue
+            id = self._recordings[key].id
+            wait = self.rpc('home-theatre.recording.describe', id)
+            yield wait
+            rec = wait()
+            if not rec:
+                log.error(rec)
                 return
+            self.last_update = time.time()
+            description = {}
+            description['title'] = rec[1]
+            description['start_padding'] = rec[7]
+            description['stop_padding'] = rec[8]
+            for key, value in dict(rec[9]).items():
+                description[key] = value
+            key = '%s-%s-%s' % (rec[2], rec[4], rec[5])
+            self._recordings[key].description = description
 
         log.info('got all recording descriptions')
 
         # create coming up text list
-        reclist = copy.copy(self.__recordings.values())
+        reclist = copy.copy(self._recordings.values())
         reclist.sort(lambda x,y: cmp(x.start, y.start))
         self.comingup = ''
         self.running = ''
-
         for rec in reclist:
             if rec.status == SCHEDULED:
                 self.comingup += u'%s\n' % unicode(rec)
             if rec.status == RECORDING:
                 self.running += u'%s\n' % unicode(rec)
-
         self.updating = 0
 
 
     def get(self, channel, start, stop):
         key = '%s-%s-%s' % (channel, start, stop)
-        if key in self.__recordings:
-            return self.__recordings[key]
+        if key in self._recordings:
+            return self._recordings[key]
         return None
 
 
     def list(self):
-        return self.__recordings.values()
+        return self._recordings.values()
 
 
     def wait_on_list(self, timeout=5):
@@ -249,14 +246,9 @@
             time.sleep(0.01)
             kaa.notifier.step()
 
-        return self.__recordings.values()
-
+        return self._recordings.values()
 
-    def schedule_cb(self, result):
-        if not result:
-            log.error(result)
 
-            
     def schedule(self, prog):
         if not self.server:
             return False, 'Recordserver unavailable'
@@ -266,8 +258,8 @@
         if prog.subtitle:
             info['subtitle'] = prog.subtitle
 
-        r = self.rpc('home-theatre.recording.add', self.schedule_cb)
-        r.call(prog.title, prog.channel.id, 1000, prog.start, prog.stop, info)
+        self.rpc('home-theatre.recording.add', prog.title, prog.channel.id,
+                 1000, prog.start, prog.stop, info)
 
         # FIXME: make it possible to return a failure
         return True, 'Scheduled'
@@ -276,7 +268,7 @@
     def remove(self, id):
         if not self.server:
             return False, 'Recordserver unavailable'
-        self.rpc('home-theatre.recording.remove', self.schedule_cb).call(id)
+        self.rpc('home-theatre.recording.remove', id)
 
         # FIXME: make it possible to return a failure
         return True, 'Removed'
@@ -312,45 +304,39 @@
     """
     def __init__(self, instance):
         self.last_update = time.time()
-        self.__favorites = []
+        self._favorites = []
         self.server = None
 
         instance.signals['new-entity'].connect(self.new_entity)
         instance.signals['lost-entity'].connect(self.lost_entity)
 
 
+    @kaa.notifier.yield_execution()
     def new_entity(self, entity):
         if not entity.matches(SERVER):
-            return True
+            return
         self.server = entity
-        self.rpc = self.server.rpc
-        self.rpc('home-theatre.favorite.list', self.list_cb).call()
-        return True
-
-
-    def lost_entity(self, entity):
-        if entity == self.server:
-            self.server = None
-        return True
-
-
-    def list_cb(self, result):
+        self.rpc = self.server.rpc2
+        wait = self.rpc('home-theatre.favorite.list')
+        yield wait
+        result = wait()
         if not self.server:
             return
         if not result:
             log.error(result)
             return
-
         self.last_update = time.time()
-        self.__favorites = []
+        self._favorites = []
         for l in result:
-            self.__favorites.append(Favorite(*l))
+            self._favorites.append(Favorite(*l))
         log.info('got favorite list')
 
 
-    def add_cb(self, result):
-        if not result:
-            log.error(result)
+    def lost_entity(self, entity):
+        if entity == self.server:
+            self.server = None
+        return True
+
 
     def add(self, prog):
         if not self.server:
@@ -370,8 +356,8 @@
         else:
             days = [ 0, 1, 2, 3, 4, 5, 6 ]
 
-        r = self.rpc('home-theatre.favorite.add', None)
-        r.call(prog.title, channel, 50, days, [ '00:00-23:59' ], False)
+        self.rpc('home-theatre.favorite.add', prog.title, channel, 50, days,
+                 [ '00:00-23:59' ], False)
 
         # FIXME: make it possible to return a failure
         return True, 'Scheduled'
@@ -380,13 +366,11 @@
     def list(self):
         """
         """
-        return self.__favorites
+        return self._favorites
 
 
     def update(self):
-        r = self.rpc('home-theatre.favorite.update', None)
-        r.call()
-
+        self.rpc('home-theatre.favorite.update')
 
 
 class EPG(object):

-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys-and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
Freevo-cvslog mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/freevo-cvslog

Reply via email to