Author: duncan
Date: Sat Mar 15 10:41:56 2008
New Revision: 10530
Log:
Updated after suggestion from Jason, is this cleaner :)
Still more work to do one this module:
- same treatment for the coroutine calls,
- fix the broken calls
Modified:
branches/rel-1/freevo/src/tv/record_client.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 Sat Mar 15 10:41:56 2008
@@ -46,7 +46,7 @@
global _singleton
# One-time init
- if _singleton == None:
+ if _singleton is None:
_singleton = RecordClientActions()
return _singleton
@@ -80,16 +80,16 @@
#--------------------------------------------------------------------------------
- # record server calls using a coroutine and the wait method
+ # record server calls using a coroutine
#--------------------------------------------------------------------------------
- def recordserver_rpc(self, cmd, *args, **kwargs):
+ def _recordserver_rpc(self, cmd, *args, **kwargs):
""" call the record server command using kaa rpc """
def closed_handler():
_debug_('%r has closed' % (self.socket,), DINFO)
self.server = None
- _debug_('recordserver_rpc(cmd=%r, args=%r, kwargs=%r)' % (cmd, args,
kwargs), 1)
+ _debug_('_recordserver_rpc(cmd=%r, args=%r, kwargs=%r)' % (cmd, args,
kwargs), 1)
try:
if self.server is None:
try:
@@ -115,7 +115,7 @@
def pingCo(self):
now = time.time()
print self.timeit(now)+': pingCo started'
- inprogress = self.recordserver_rpc('ping')
+ inprogress = self._recordserver_rpc('ping')
if not inprogress:
print self.timeit(now)+': pingCo.inprogress=%r' % inprogress
return
@@ -131,7 +131,7 @@
""" """
now = time.time()
print self.timeit(now)+': findNextProgramCo(isrecording=%r) started' %
(isrecording,)
- inprogress = self.recordserver_rpc('findNextProgram', isrecording)
+ inprogress = self._recordserver_rpc('findNextProgram', isrecording)
if not inprogress:
print self.timeit(now)+': findNextProgramCo.inprogress=%r' %
inprogress
return
@@ -147,7 +147,7 @@
""" """
now = time.time()
print self.timeit(now)+': getScheduledRecordingsCo() started'
- inprogress = self.recordserver_rpc('getScheduledRecordings')
+ inprogress = self._recordserver_rpc('getScheduledRecordings')
if not inprogress:
print self.timeit(now)+': getScheduledRecordingsCo.inprogress=%r'
% inprogress
return
@@ -163,7 +163,7 @@
""" """
now = time.time()
print self.timeit(now)+': updateFavoritesScheduleCo started'
- inprogress = self.recordserver_rpc('updateFavoritesSchedule')
+ inprogress = self._recordserver_rpc('updateFavoritesSchedule')
if not inprogress:
print self.timeit(now)+': updateFavoritesScheduleCo.inprogress=%r'
% inprogress
return
@@ -179,7 +179,7 @@
""" """
now = time.time()
print self.timeit(now)+': getNextProgramStart begin'
- inprogress = self.recordserver_rpc('updateFavoritesSchedule')
+ inprogress = self._recordserver_rpc('updateFavoritesSchedule')
if not inprogress:
print self.timeit(now)+': getNextProgramStart.inprogress=%r' %
inprogress
return
@@ -190,7 +190,7 @@
print self.timeit(now)+': getNextProgramStart.NotFinished'
yield inprogress.get_result()
print self.timeit(now)+': getNextProgramStart.findNextProgram'
- inprogress = self.recordserver_rpc('findNextProgram')
+ inprogress = self._recordserver_rpc('findNextProgram')
if not inprogress:
print self.timeit(now)+': getNextProgramStart.inprogress=%r' %
inprogress
return
@@ -201,148 +201,94 @@
print self.timeit(now)+': getNextProgramStart.nextstart=%r' % nextstart
+
#--------------------------------------------------------------------------------
+ # record server calls using the wait method
+
#--------------------------------------------------------------------------------
+
+ def _rpc_wait(self, rpc_name, *args):
+ inprogress = self._recordserver_rpc(rpc_name, *args)
+ if inprogress is None:
+ return None
+ # wait() already does get_result() for you. Note that it can
+ # raise an exception if the remote end raised an exception.
+ result = inprogress.wait()
+ _debug_('%s.result=%r' % (rpc_name, result), 1)
+ return result
+
+
def pingNow(self):
""" Ping the recordserver to see if it is running """
_debug_('pingNow', 1)
- inprogress = self.recordserver_rpc('ping')
- if inprogress is None:
+ result = self._rpc_wait('ping')
+ if result is None:
return False
- inprogress.wait()
- result = inprogress.get_result()
- _debug_('pingNow.result=%r' % (result,), 1)
return result
def findNextProgramNow(self, isrecording=False):
""" Find the next programme to record """
_debug_('findNextProgramNow(isrecording=%r)' % (isrecording,), 1)
- inprogress = self.recordserver_rpc('findNextProgram', isrecording)
- if inprogress is None:
- return None
- inprogress.wait()
- result = inprogress.get_result()
- _debug_('findNextProgramNow.result=%r' % (result,), 1)
- return result
+ return self._rpc_wait('findNextProgram', isrecording)
def getScheduledRecordingsNow(self):
""" get the scheduled recordings, returning the scheduled recordings
object """
_debug_('getScheduledRecordingsNow()', 1)
- inprogress = self.recordserver_rpc('getScheduledRecordings')
- if inprogress is None:
- return (None, self.recordserverdown)
- inprogress.wait()
- result = inprogress.get_result()
- _debug_('getScheduledRecordingsNow.result=%r' % (result,), 1)
- return (True, result)
+ return self._rpc_wait('getScheduledRecordings')
def updateFavoritesScheduleNow(self):
""" Update the favorites scbedule, returning the object """
_debug_('updateFavoritesScheduleNow()', 1)
- inprogress = self.recordserver_rpc('updateFavoritesSchedule')
- if inprogress is None:
- return (None, self.recordserverdown)
- inprogress.wait()
- result = inprogress.get_result()
- _debug_('updateFavoritesScheduleNow.result=%r' % (result,), 1)
- return result
+ return self._rpc_wait('updateFavoritesSchedule')
def findProgNow(self, chan=None, start=None):
""" See if a programme is a favourite """
_debug_('findProgNow(chan=%r, start=%r)' % (chan, start), 1)
- inprogress = self.recordserver_rpc('findProg', chan, start)
- if inprogress is None:
- return (None, self.recordserverdown)
- inprogress.wait()
- result = inprogress.get_result()
- _debug_('findProgNow.result=%r' % (result,), 1)
- return result
+ return self._rpc_wait('findProg', chan, start)
def findMatchesNow(self, title=None, movies_only=None):
""" See if a programme is a favourite """
_debug_('findMatchesNow(title=%r, movies_only=%r)' % (title,
movies_only), 1)
- inprogress = self.recordserver_rpc('findMatches', title, movies_only)
- if inprogress is None:
- return (None, self.recordserverdown)
- inprogress.wait()
- result = inprogress.get_result()
- _debug_('findMatchesNow.result=%r' % (result,), 1)
- return result
+ return self._rpc_wait('findMatches', title, movies_only)
def isProgScheduledNow(self, prog, schedule=None):
""" See if a programme is a schedule """
_debug_('isProgScheduledNow(prog=%r, schedule=%r)' % (prog, schedule),
1)
- inprogress = self.recordserver_rpc('isProgScheduled', prog, schedule)
- if inprogress is None:
- return (None, self.recordserverdown)
- inprogress.wait()
- result = inprogress.get_result()
- _debug_('isProgScheduledNow.result=%r' % (result,), 1)
- return result
+ return self._rpc_wait('isProgScheduled', prog, schedule)
def isProgAFavoriteNow(self, prog, favs=None):
""" See if a programme is a favourite """
_debug_('isProgAFavoriteNow(prog=%r, favs=%r)' % (prog, favs), 1)
- inprogress = self.recordserver_rpc('isProgAFavorite', prog, favs)
- if inprogress is None:
- return (None, self.recordserverdown)
- inprogress.wait()
- result = inprogress.get_result()
- _debug_('isProgAFavoriteNow.result=%r' % (result,), 1)
- return result
+ return self._rpc_wait('isProgAFavorite', prog, favs)
def clearFavoritesNow(self):
""" See if a programme is a favourite """
_debug_('clearFavoritesNow()', 1)
- inprogress = self.recordserver_rpc('clearFavorites')
- if inprogress is None:
- return (None, self.recordserverdown)
- inprogress.wait()
- result = inprogress.get_result()
- _debug_('clearFavoritesNow.result=%r' % (result,), 1)
- return result
+ return self._rpc_wait('clearFavorites')
def getFavoritesNow(self):
""" See if a programme is a favourite """
_debug_('getFavoritesNow()', 1)
- inprogress = self.recordserver_rpc('getFavorites')
- if inprogress is None:
- return (None, self.recordserverdown)
- inprogress.wait()
- result = inprogress.get_result()
- _debug_('getFavoritesNow.result=%r' % (result,), 1)
- return (True, result)
+ return self._rpc_wait('getFavorites')
def getFavoriteNow(self, name):
""" See if a programme is a favourite """
_debug_('getFavoriteNow(name=%r)' % (name), 1)
- inprogress = self.recordserver_rpc('getFavorite', name)
- if inprogress is None:
- return (None, self.recordserverdown)
- inprogress.wait()
- result = inprogress.get_result()
- _debug_('getFavoriteNow.result=%r' % (result,), 1)
- return result
+ return self._rpc_wait('getFavorite', name)
def removeFavoriteNow(self, name):
""" See if a programme is a favourite """
_debug_('removeFavoriteNow(name=%r)' % (name), 1)
- inprogress = self.recordserver_rpc('removeFavorite', name)
- if inprogress is None:
- return (None, self.recordserverdown)
- inprogress.wait()
- result = inprogress.get_result()
- _debug_('removeFavoriteNow.result=%r' % (result,), 1)
- return result
+ return self._rpc_wait('removeFavorite', name)
def addEditedFavoriteNow(self, name, title, chan, dow, mod, priority,
allowDuplicates, onlyNew):
@@ -350,69 +296,38 @@
_debug_('addEditedFavoriteNow('+ \
'name=%r, title=%r, chan=%r, dow=%r, mod=%r, priority=%r,
allowDuplicates=%r, onlyNew=%r)' % \
(name, title, chan, dow, mod, priority, allowDuplicates, onlyNew),
1)
- inprogress = self.recordserver_rpc('addEditedFavorite', \
- name, title, chan, dow, mod, priority, allowDuplicates, onlyNew)
- if inprogress is None:
- return (None, self.recordserverdown)
- inprogress.wait()
- result = inprogress.get_result()
- _debug_('addEditedFavoriteNow.result=%r' % (result,), 1)
- return result
+ return self._rpc_wait('addEditedFavorite', name, title, chan, dow,
mod, priority, allowDuplicates, onlyNew)
def adjustPriorityNow(self, name, mod=0):
""" See if a programme is a favourite """
_debug_('adjustPriorityNow(name=%r, mod=%r)' % (name, mod), 1)
- inprogress = self.recordserver_rpc('adjustPriority', name, mod)
- if inprogress is None:
- return (None, self.recordserverdown)
- inprogress.wait()
- result = inprogress.get_result()
- _debug_('adjustPriorityNow.result=%r' % (result,), 1)
- return result
+ return self._rpc_wait('adjustPriority', name, mod)
def getFavoriteObjectNow(self, prog):
""" See if a programme is a favourite """
_debug_('getFavoriteObjectNow(prog=%r)' % (prog), 1)
- inprogress = self.recordserver_rpc('getFavoriteObject', prog)
- if inprogress is None:
- return (None, self.recordserverdown)
- inprogress.wait()
- result = inprogress.get_result()
- _debug_('getFavoriteObjectNow.result=%r' % (result,), 1)
- return result
+ return self._rpc_wait('getFavoriteObject', prog)
def scheduleRecordingNow(self, prog):
""" See if a programme is a favourite """
_debug_('scheduleRecordingNow(prog=%r)' % (prog,), 1)
- inprogress = self.recordserver_rpc('scheduleRecording', prog)
- if inprogress is None:
- return (None, self.recordserverdown)
- inprogress.wait()
- result = inprogress.get_result()
- _debug_('scheduleRecordingNow.result=%r' % (result,), 1)
- return result
+ return self._rpc_wait('scheduleRecording', prog)
def removeScheduledRecordingNow(self, prog):
""" See if a programme is a favourite """
_debug_('removeScheduledRecordingNow(prog=%r)' % (prog,), 1)
- inprogress = self.recordserver_rpc('removeScheduledRecording', prog)
- if inprogress is None:
- return (None, self.recordserverdown)
- inprogress.wait()
- result = inprogress.get_result()
- _debug_('removeScheduledRecordingNow.result=%r' % (result,), 1)
- return result
+ return self._rpc_wait('removeScheduledRecording', prog)
#--------------------------------------------------------------------------------
# record server calls using a callback
#--------------------------------------------------------------------------------
- def server_rpc(self, cmd, callback, *args, **kwargs):
+ def _server_rpc(self, cmd, callback, *args, **kwargs):
"""
Call the server with the command the results will be put in the
callback
Try to reconnect if the connection is down
@@ -421,7 +336,7 @@
_debug_('%r has closed' % (self.socket,), DINFO)
self.server = None
- _debug_('server_rpc(cmd=%r, callback=%r, args=%r, kwargs=%r)' % (cmd,
callback, args, kwargs), 1)
+ _debug_('_server_rpc(cmd=%r, callback=%r, args=%r, kwargs=%r)' % (cmd,
callback, args, kwargs), 1)
try:
if self.server is None:
try:
@@ -447,49 +362,49 @@
def ping(self, callback):
""" See if the server is alive """
_debug_('ping(callback=%r)' % (callback), 1)
- return self.server_rpc('ping', callback)
+ return self._server_rpc('ping', callback)
def findNextProgram(self, callback, isrecording=False):
""" Find the next program using a callback function """
_debug_('findNextProgram(callback=%r, isrecording=%r)' % (callback,
isrecording), 1)
- return self.server_rpc('findNextProgram', callback, isrecording)
+ return self._server_rpc('findNextProgram', callback, isrecording)
def getScheduledRecordings(self, callback):
""" Get the scheduled recordings, using a callback function """
_debug_('getScheduledRecordings(callback=%r)' % (callback), 1)
- return self.server_rpc('getScheduledRecordings', callback)
+ return self._server_rpc('getScheduledRecordings', callback)
def scheduleRecording(self, callback, prog):
""" schedule a programme for recording, using a callback function """
_debug_('scheduleRecording(callback=%r, prog=%r)' % (callback, prog),
1)
- return self.server_rpc('scheduleRecording', callback, prog)
+ return self._server_rpc('scheduleRecording', callback, prog)
def updateFavoritesSchedule(self, callback):
""" Update the favourites using a callback function """
_debug_('updateFavoritesSchedule(callback=%r)' % (callback), 1)
- return self.server_rpc('updateFavoritesSchedule', callback)
+ return self._server_rpc('updateFavoritesSchedule', callback)
def isPlayerRunning(self, callback):
""" Find out if a player is running, using a callback function """
_debug_('isPlayerRunning(callback=%r)' % (callback), 1)
- return self.server_rpc('isPlayerRunning', callback)
+ return self._server_rpc('isPlayerRunning', callback)
def getFavorites(self, callback):
""" Get favourites """
_debug_('getFavorites(callback=%r)' % (callback), 1)
- return self.server_rpc('getFavorites', callback)
+ return self._server_rpc('getFavorites', callback)
def isProgAFavorite(self, callback, prog, favs=None):
""" See if a programme is a favourite """
_debug_('isProgAFavorite(callback=%r, prog=%r, favs=%r)' % (callback,
prog, favs), 1)
- return self.server_rpc('isProgAFavorite', callback, prog, favs)
+ return self._server_rpc('isProgAFavorite', callback, prog, favs)
if __name__ == '__main__':
@@ -549,40 +464,46 @@
# kaa.rpc callback tests
#--------------------------------------------------------------------------------
- if function == "pingnow":
- result = rc.pingNow()
- print '%s: result=%r' % (rc.timeit(start), result)
- raise SystemExit
-
- elif function == "ping":
+ if function == "ping":
result = rc.ping(handler)
if not result:
print '%s: result=%r' % (rc.timeit(start), result)
raise SystemExit
- elif function == "findnextprogramnow":
- result = rc.findNextProgramNow(True)
- print '%s: result=%r' % (rc.timeit(start), result)
- #print 'recording: "%s"' % (result,)
- result = rc.findNextProgramNow(False)
- print '%s: result=%r' % (rc.timeit(start), result)
- #print 'next : "%s"' % (result,)
- raise SystemExit
-
elif function == "findnextprogram":
result = rc.findNextProgram(handler)
if not result:
print '%s: result=%r' % (rc.timeit(start), result)
raise SystemExit
- elif function == "findnextprogramrecording":
- result = rc.findNextProgram(handler, True)
+ elif function == "getscheduledrecordings":
+ result = rc.getScheduledRecordings(handler)
if not result:
print '%s: result=%r' % (rc.timeit(start), result)
raise SystemExit
+ elif function == "getfavorites":
+ result = rc.getFavorites(handler)
+ if not result:
+ print '%s: result=%r' % (rc.timeit(start), result)
+ raise SystemExit
+
+
#--------------------------------------------------------------------------------
+ # kaa.rpc wait on in-progress tests
+
#--------------------------------------------------------------------------------
+
+ if function == "pingnow":
+ result = rc.pingNow(*args)
+ print '%s: result=%r' % (rc.timeit(start), result)
+ raise SystemExit
+
+ elif function == "findnextprogramnow":
+ result = rc.findNextProgramNow(*args)
+ print '%s: result=%r' % (rc.timeit(start), result)
+ raise SystemExit
+
elif function == "getscheduledrecordingsnow":
- result = rc.getScheduledRecordingsNow()
+ result = rc.getScheduledRecordingsNow(*args)
print '%s: result=%r' % (rc.timeit(start), result)
if config.DEBUG > 2:
status, schedule = result
@@ -592,34 +513,23 @@
print 'result=%r' % (result,)
raise SystemExit
- elif function == "getscheduledrecordings":
- result = rc.getScheduledRecordings(handler)
- if not result:
- print '%s: result=%r' % (rc.timeit(start), result)
- raise SystemExit
-
elif function == "updatefavoritesschedulenow":
- result = rc.updateFavoritesScheduleNow()
+ result = rc.updateFavoritesScheduleNow(*args)
print '%s: result=%r' % (rc.timeit(start), result)
raise SystemExit
elif function == "findprognow":
- result = rc.findProgNow(args[0], args[1])
+ result = rc.findProgNow(*args)
print '%s: result=%r' % (rc.timeit(start), result)
raise SystemExit
elif function == "findmatchesnow":
- if len(args) == 1:
- result = rc.findMatchesNow(args[0])
- elif len(args) == 2:
- result = rc.findMatchesNow(args[0], args[1])
- else:
- result = rc.findMatchesNow()
+ result = rc.findMatchesNow(*args)
print '%s: result=%r' % (rc.timeit(start), result)
raise SystemExit
elif function == "getfavoritesnow":
- result = rc.getFavoritesNow()
+ result = rc.getFavoritesNow(*args)
print '%s: result=%r' % (rc.timeit(start), result)
raise SystemExit
@@ -629,7 +539,7 @@
raise SystemExit
elif function == "removefavoritenow":
- result = rc.removeFavoriteNow()
+ result = rc.removeFavoriteNow(*args)
print '%s: result=%r' % (rc.timeit(start), result)
raise SystemExit
@@ -644,12 +554,6 @@
print '%s: result=%r' % (rc.timeit(start), result)
raise SystemExit
- elif function == "getfavorites":
- result = rc.getFavorites(handler)
- if not result:
- print '%s: result=%r' % (rc.timeit(start), result)
- raise SystemExit
-
#FIXME the following two calls need fixing
elif function == "moviesearch":
if len(sys.argv) >= 3:
-------------------------------------------------------------------------
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