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

Reply via email to