Author: dmeyer
Date: Sun Mar 18 11:34:54 2007
New Revision: 9340

Modified:
   trunk/WIP/webserver/src/listen/__init__.py
   trunk/WIP/webserver/src/watch/__init__.py
   trunk/tvserver/src/recorder.py

Log:
adjust to new mbus.rpc

Modified: trunk/WIP/webserver/src/listen/__init__.py
==============================================================================
--- trunk/WIP/webserver/src/listen/__init__.py  (original)
+++ trunk/WIP/webserver/src/listen/__init__.py  Sun Mar 18 11:34:54 2007
@@ -116,9 +116,9 @@
         if event == 'play':
             f = unicode_to_str(unicode(file, 'utf-8'))
             f = self.base + '/' + f[len('/audio/'):]
-            entity.rpc('home-theatre.play', None).call(f, 'audio')
+            entity.rpc('home-theatre.play', f, 'audio')
         if event == 'stop':
-            entity.rpc('home-theatre.stop', None).call()
+            entity.rpc('home-theatre.stop')
         return self.get_metadata(file)
     
 

Modified: trunk/WIP/webserver/src/watch/__init__.py
==============================================================================
--- trunk/WIP/webserver/src/watch/__init__.py   (original)
+++ trunk/WIP/webserver/src/watch/__init__.py   Sun Mar 18 11:34:54 2007
@@ -105,9 +105,9 @@
         if event == 'play':
             f = unicode_to_str(unicode(file, 'utf-8'))
             f = self.base + '/' + file[len('/audio/'):]
-            entity.rpc('home-theatre.play', None).call(f, 'video')
+            entity.rpc('home-theatre.play', f, 'video')
         if event == 'stop':
-            entity.rpc('home-theatre.stop', None).call()
+            entity.rpc('home-theatre.stop')
         return self.get_metadata(file)
     
 

Modified: trunk/tvserver/src/recorder.py
==============================================================================
--- trunk/tvserver/src/recorder.py      (original)
+++ trunk/tvserver/src/recorder.py      Sun Mar 18 11:34:54 2007
@@ -9,7 +9,7 @@
 #
 # -----------------------------------------------------------------------------
 # Freevo - A Home Theater PC framework
-# Copyright (C) 2002-2005 Krister Lagerstrom, Dirk Meyer, et al.
+# Copyright (C) 2002-2007 Krister Lagerstrom, Dirk Meyer, et al.
 #
 # First Edition: Dirk Meyer <[EMAIL PROTECTED]>
 # Maintainer:    Dirk Meyer <[EMAIL PROTECTED]>
@@ -45,6 +45,7 @@
 # kaa imports
 from kaa.notifier import OneShotTimer, Signal
 from kaa.strutils import unicode_to_str
+import kaa.notifier
 import kaa.epg
 
 # freevo core imports
@@ -94,7 +95,6 @@
 
 # internal 'unique' ids
 UNKNOWN_ID  = -1
-IN_PROGRESS = -2
 
 class RecorderList(object):
     def __init__(self):
@@ -146,22 +146,18 @@
         return self.recorder.__iter__()
 
 
+    @kaa.notifier.yield_execution()
     def new_entity(self, entity):
         """
         Update recorders on entity changes.
         """
         if not entity.matches({'type': 'home-theatre', 'module': 'tvdev'}):
             # no recorder
-            return True
-
-        entity.rpc('home-theatre.device.list', self.mbus_list_cb, 
entity).call()
-        return True
+            yield True
 
-
-    def mbus_list_cb(self, result, entity):
-        """
-        RPC return for device.list()
-        """
+        wait = entity.rpc2('home-theatre.device.list')
+        yield wait
+        result = wait()
         if not result:
             log.error(result)
             return
@@ -221,13 +217,12 @@
         self.check_timer = OneShotTimer(self.check_recordings)
         self.livetv = {}
         self.entity.signals['lost-entity'].connect(self.lost_entity)
-        self.rpc = self.entity.rpc
-        self.rpc('home-theatre.device.describe', self.describe_cb).call(device)
         self.rating = 0
         self.known_channels   = {}
+        self._describe()
+        
 
-
-    def __str__(self):
+    def __repr__(self):
         return '<Recorder for %s>' % (self.name)
 
 
@@ -245,6 +240,7 @@
     def normalize_name(self, name):
         return unicode_to_str(name.replace('.', '').replace(' ', 
'')).upper().strip()
 
+
     def add_channel(self, chan_obj, chan_id):
         if chan_obj.name in self.known_channels:
             # duplicate, skip it
@@ -254,14 +250,18 @@
         self.known_channels[chan_obj.name] = chan_obj
         self.possible_bouquets[-1].append(chan_obj.name)
 
-    def describe_cb(self, result):
+
+    @kaa.notifier.yield_execution()
+    def _describe(self):
         """
-        RPC return for device.describe()
         """
+        wait = self.entity.rpc2('home-theatre.device.describe', self.device)
+        yield wait
+        result = wait()
         if not result:
             log.error(result)
             self.handler.remove(self)
-            return
+            yield False
 
         self.possible_bouquets = []
 
@@ -405,20 +405,19 @@
         self.check_timer.start(0.1)
 
 
+    @kaa.notifier.yield_execution(lock=True)
     def check_recordings(self):
         """
         Check the internal list of recordings and add or remove them from
         the recorder.
         """
         for remote in copy.copy(self.recordings):
-            if remote.id == IN_PROGRESS:
-                # already checking
-                break
             if remote.id == UNKNOWN_ID and not remote.valid:
                 # remove it from the list, looks like the recording
                 # was already removed and not yet scheduled
                 self.recordings.remove(remote)
                 continue
+
             if remote.id == UNKNOWN_ID:
                 # add the recording
                 rec      = remote.recording
@@ -426,56 +425,29 @@
                 filename = self.get_url(rec)
                 rec.url  = filename
                 log.info('%s: schedule %s', self.name, rec.name)
-                rpc = self.rpc('home-theatre.vdr.record', 
self.start_recording_cb)
-                rpc.call(self.device, channel, remote.start,
-                         rec.stop + rec.stop_padding, filename, ())
-                remote.id = IN_PROGRESS
-                break
+                wait = self.entity.rpc2(
+                    'home-theatre.vdr.record', self.device, channel, 
remote.start,
+                    rec.stop + rec.stop_padding, filename, ())
+                yield wait
+                result = wait()
+                if not result:
+                    log.error(result)
+                    self.handler.remove(self)
+                    yield False
+                remote.id = result[0]
+                continue
+
             if not remote.valid:
                 # remove the recording
                 log.info('%s: remove %s', self.name, remote.recording.name)
-                try:
-                    rpc = self.rpc('home-theatre.vdr.remove', 
self.start_recording_cb)
-                    rpc.call(remote_id)
-                except:
-                    pass
                 self.recordings.remove(remote)
-                break
-        # the function will be rescheduled by mbus return
-        return False
-
-
-    def start_recording_cb(self, result):
-        """
-        Callback for vdr.record
-        """
-        if not result:
-            log.error(result)
-            self.handler.remove(self)
-            return
-
-        # result is an unique id
-        for remote in self.recordings:
-            if remote.id == IN_PROGRESS:
-                remote.id = result[0]
-                break
-        else:
-            log.info('id not found')
-
-        # check more recordings
-        self.check_recordings()
-
-
-    def remove_recording_cb(self, result):
-        """
-        Callback for vdr.remove
-        """
-        if not result:
-            log.error(result)
-            self.handler.remove(self)
-            return
-        # check more recordings
-        self.check_recordings()
+                wait = self.entity.rpc2('home-theatre.vdr.remove', remote_id)
+                yield wait
+                result = wait()
+                if not result:
+                    log.error(result)
+                    self.handler.remove(self)
+                    yield False
 
 
     # 
****************************************************************************
@@ -484,6 +456,7 @@
 
 
     def start_livetv(self, channel, url):
+        raise RuntimeError('livetv not working')
         log.info('start live tv')
 
         rpc = self.rpc('home-theatre.vdr.record', self.start_livetv_cb)
@@ -513,6 +486,7 @@
 
     def stop_livetv(self, id):
         log.info('stop live tv')
+        raise RuntimeError('livetv not working')
         if not id in self.livetv:
             # FIXME: handle error
             log.error('id not in list')

-------------------------------------------------------------------------
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