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