svgui/pyjs/jsonrpc/jsonrpc.py
changeset 1742 92932cd370a4
parent 1740 b789b695b5c6
child 1751 c28db6f7616b
equal deleted inserted replaced
1741:dd94b9a68c61 1742:92932cd370a4
     4 
     4 
     5 
     5 
     6 class JSONRPCServiceBase:
     6 class JSONRPCServiceBase:
     7 
     7 
     8     def __init__(self):
     8     def __init__(self):
     9         self.methods={}
     9         self.methods = {}
    10 
    10 
    11     def response(self, id, result):
    11     def response(self, id, result):
    12         return simplejson.dumps({'version': '1.1', 'id': id,
    12         return simplejson.dumps({'version': '1.1', 'id': id,
    13                                  'result': result, 'error': None})
    13                                  'result': result, 'error': None})
    14     def error(self, id, code, message):
    14     def error(self, id, code, message):
    26     def process(self, data):
    26     def process(self, data):
    27         data = simplejson.loads(data)
    27         data = simplejson.loads(data)
    28         id, method, params = data["id"], data["method"], data["params"]
    28         id, method, params = data["id"], data["method"], data["params"]
    29         if method in self.methods:
    29         if method in self.methods:
    30             try:
    30             try:
    31                 result =self.methods[method](*params)
    31                 result = self.methods[method](*params)
    32                 return self.response(id, result)
    32                 return self.response(id, result)
    33             except BaseException:
    33             except BaseException:
    34                 etype, eval, etb = sys.exc_info()
    34                 etype, eval, etb = sys.exc_info()
    35                 return self.error(id, 100, '%s: %s' %(etype.__name__, eval))
    35                 return self.error(id, 100, '%s: %s' % (etype.__name__, eval))
    36             except:
    36             except:
    37                 etype, eval, etb = sys.exc_info()
    37                 etype, eval, etb = sys.exc_info()
    38                 return self.error(id, 100, 'Exception %s: %s' %(etype, eval))
    38                 return self.error(id, 100, 'Exception %s: %s' % (etype, eval))
    39         else:
    39         else:
    40             return self.error(id, 100, 'method "%s" does not exist' % method)
    40             return self.error(id, 100, 'method "%s" does not exist' % method)
    41 
    41 
    42     def listmethods(self):
    42     def listmethods(self):
    43         return self.methods.keys()
    43         return self.methods.keys()