Update of /cvsroot/freevo/freevo/src
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv14156
Modified Files:
mcomm.py
Log Message:
add mbus parameter parsing
Index: mcomm.py
===================================================================
RCS file: /cvsroot/freevo/freevo/src/mcomm.py,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -d -r1.2 -r1.3
*** mcomm.py 4 Nov 2004 17:36:23 -0000 1.2
--- mcomm.py 4 Nov 2004 19:14:08 -0000 1.3
***************
*** 149,153 ****
if attr in ('has_key', ) or attr.startswith('__'):
return getattr(self.addr, attr)
! self.cmd = attr.replace('_', '-')
return self.__call
--- 149,153 ----
if attr in ('has_key', ) or attr.startswith('__'):
return getattr(self.addr, attr)
! self.cmd = attr.replace('_', '.')
return self.__call
***************
*** 160,163 ****
--- 160,187 ----
+ def __build_args(self, args):
+ """
+ Internal function to build argument list
+ """
+ ret = []
+ is_dict = False
+ if args.__class__ == dict:
+ is_dict = True
+ for a in args:
+ if is_dict:
+ var = args[a]
+ else:
+ var = a
+ if var.__class__ == unicode:
+ var = String(var)
+ if var.__class__ in (list, tuple, dict):
+ var = self.__build_args(var)
+ if is_dict:
+ ret.append((String(a), var))
+ else:
+ ret.append(var)
+ return ret
+
+
def __call(self, *args, **kargs):
"""
***************
*** 178,182 ****
self.result = None
self.mbus_instance.sendRPC(self.addr, 'home-theatre.' + self.cmd,
! cmdargs, callback)
if self.result == True:
--- 202,206 ----
self.result = None
self.mbus_instance.sendRPC(self.addr, 'home-theatre.' + self.cmd,
! self.__build_args(cmdargs), callback)
if self.result == True:
***************
*** 189,198 ****
# check for errors / exceptions and raise them
if isinstance(self.result, mbus.types.MError):
! raise MException(self.result.descr)
status, args = self.result[0][1:]
r = self.result[0][1:]
if status[0] == 'FAILED':
- print status
if status[1] in ('TypeError', ):
raise eval(status[1])(status[2])
--- 213,221 ----
# check for errors / exceptions and raise them
if isinstance(self.result, mbus.types.MError):
! raise MException(str(self.result))
status, args = self.result[0][1:]
r = self.result[0][1:]
if status[0] == 'FAILED':
if status[1] in ('TypeError', ):
raise eval(status[1])(status[2])
***************
*** 228,235 ****
for f in dir(self):
if f.startswith('__rpc_'):
! cmdname = 'home-theatre.' + f[6:-2].replace('_', '-')
add_callback(cmdname, getattr(self, f))
def parse_parameter(self, val, pattern):
"""
--- 251,275 ----
for f in dir(self):
if f.startswith('__rpc_'):
! cmdname = 'home-theatre.' + f[6:-2].replace('_', '.')
add_callback(cmdname, getattr(self, f))
+ def __check_list(self, val, pattern):
+ """
+ check parameter against pattern
+ """
+ ret = []
+ for i in range(len(val)):
+ if pattern[i] == str:
+ ret.append(String(val[i]))
+ elif pattern[i] == unicode:
+ ret.append(Unicode(val[i]))
+ elif pattern[i].__class__ in (list, tuple):
+ ret.append(self.__check_list(val[i], pattern[i]))
+ else:
+ ret.append(pattern[i](val[i]))
+ return ret
+
+
def parse_parameter(self, val, pattern):
"""
***************
*** 238,244 ****
"""
if len(pattern) == len(val):
! if len(val) == 1:
! return val[0]
! return val
if len(pattern) == 1:
arg = '1 argument'
--- 278,289 ----
"""
if len(pattern) == len(val):
! try:
! if len(val) == 1:
! return self.__check_list(val, pattern)[0]
! return self.__check_list(val, pattern)
! except Exception, e:
! function = traceback.extract_stack(limit = 2)[0][2][6:-2]
! msg = 'Argument parsing error in %s(): %s' % (function, e)
! raise mbus.RPCException('TypeError', msg)
if len(pattern) == 1:
arg = '1 argument'
-------------------------------------------------------
This SF.Net email is sponsored by:
Sybase ASE Linux Express Edition - download now for FREE
LinuxWorld Reader's Choice Award Winner for best database on Linux.
http://ads.osdn.com/?ad_id=5588&alloc_id=12065&op=click
_______________________________________________
Freevo-cvslog mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/freevo-cvslog