Exemple #1
0
 def _send(self, response):
     txtResponse = None
     try:
         txtResponse = json.dumps(response, self)
     except Exception, e:
         _log.error("An unexpected error ocurred when trying to create the message: %r", e)
         response = {
             'result': None,
             'error': "InternalServerError: " + repr(e),
             'id': item['id']
             }
         txtResponse = json.dumps(response, self)
Exemple #2
0
 def _send(self, response):
     txtResponse = None
     try:
         txtResponse = json.dumps(response, self)
     except Exception as e:
         _log.error("An unexpected error ocurred when trying to create the message: %r", e)
         response = {"result": None, "error": "InternalServerError: " + repr(e), "id": item["id"]}
         txtResponse = json.dumps(response, self)
     try:
         self.write(txtResponse)
     except TypeError:
         _log.debug("response was: %r", response)
         raise
 def _send(self, response):
     txtResponse = None
     try:
         txtResponse = json.dumps(response, self)
     except Exception as e:
         _log.error("An unexpected error ocurred when trying to create the message: %r", e)
         response = {
             'result': None,
             'error': "InternalServerError: " + repr(e)
         }
         txtResponse = json.dumps(response, self)
     try:
         self.write(txtResponse)
     except TypeError:
         _log.debug("response was: %r", response)
         raise
 def dispatch_item_single(self, item):
     """
         Given a JSON item received from socket, determine its type and 
         process the message.
     """
     assert(type(item) is dict)
     response = None
     if 'id' not in item: 
         item['id'] = None
     
     if 'method' in item: 
         response = self._dispatch_method(item)
     elif 'result' in item: 
         assert(item['id'] in self._requests)
         request = self._requests[item['id']]
         del self._requests[item['id']]
         request.setresponse(item)
     else:
         response = {
             'result': None, 
             'error': "Unknown format", 
             'id': item['id']
             }
         
     if response is not None:
         txtResponse = None
         try:
             txtResponse = json.dumps(response, self)
         except Exception, e:
             _log.error("An unexpected error ocurred when trying to create the message: %r", e)
             response = {
                 'result': None, 
                 'error': "InternalServerError: " + repr(e), 
                 'id': item['id']
                 }
             txtResponse = json.dumps(response, self)
             
         try:
             self.write(txtResponse)
         except TypeError:
             _log.debug("response was: %r", response)
             raise
Exemple #5
0
    def __init__(self, conn, request_data):
        self.conn = conn
        self.data = request_data
        self.response = None
        self.event_response = Event()
        self.callbacks = []
        self.thread_wait = self.event_response.wait
        self.request_id = None
        if 'id' in self.data: 
            self.request_id = self.data['id']
            
        if self.request_id:
            self.conn.addrequest(self)
            
        data = json.dumps(self.data, self.conn)

        self.conn.write(data)
    def __init__(self, conn, request_data):
        self.conn = conn
        self.data = request_data
        self.responses = Queue()
        # TODO: Now that we have a Queue, do we need an Event (and a cv)?
        self.event_response = Event()
        self.callbacks = []
        self.thread_wait = self.event_response.wait
        self.request_id = None
        self.auto_close = False
        if 'id' in self.data:
            self.request_id = self.data['id']

        if self.request_id:
            self.auto_close = True
            self.conn.addrequest(self)

        data = json.dumps(self.data, self.conn)

        self.conn.write(data)
    def __init__(self, conn, request_data):
        self.conn = conn
        self.data = request_data
        self.responses = Queue()
        # TODO: Now that we have a Queue, do we need an Event (and a cv)?
        self.event_response = Event()
        self.callbacks = []
        self.thread_wait = self.event_response.wait
        self.request_id = None
        self.auto_close = False
        if 'id' in self.data: 
            self.request_id = self.data['id']
            
        if self.request_id:
            self.auto_close = True
            self.conn.addrequest(self)
            
        data = json.dumps(self.data, self.conn)

        self.conn.write(data)
    def proxy(self, sync_type, name, args, kwargs):
        """
        Call method on server.

        sync_type :: 
          = 0 .. call method, wait, get response.
          = 1 .. call method, inmediate return of object.
          = 2 .. call notification and exit.
          
        """
       
        data = {}
        data['method'] = name

        if sync_type in [0, 1]: 
            data['id'] = self.get_id()
            
        if len(args) > 0: 
            data['params'] = args
            
        if len(kwargs) > 0: 
            if len(args) == 0: 
                data['params'] = kwargs
            else: 
                data['kwparams'] = kwargs
            
        if sync_type == 2: # short-circuit for speed!
            self.write(json.dumps(data, self))
            return None
                    
        req = Request(self, data)
        if sync_type == 2: 
            return None
            
        if sync_type == 1: 
            return req
        
        return req.value
Exemple #9
0
    def proxy(self, sync_type, name, args, kwargs):
        """
        Call method on server.

        sync_type :: 
          = 0 .. call method, wait, get response.
          = 1 .. call method, inmediate return of object.
          = 2 .. call notification and exit.
          = 3 .. call method, inmediate return of non-auto-close object.
          
        """

        data = {}
        data["method"] = name

        if sync_type in [0, 1, 3]:
            data["id"] = self.get_id()

        if len(args) > 0:
            data["params"] = args

        if len(kwargs) > 0:
            if len(args) == 0:
                data["params"] = kwargs
            else:
                data["kwparams"] = kwargs

        if sync_type == 2:  # short-circuit for speed!
            self.write(json.dumps(data, self))
            return None

        req = Request(self, data)
        if sync_type == 0:
            return req.value
        if sync_type == 3:
            req.auto_close = False
        return req
Exemple #10
0
    def proxy(self, sync_type, name, args, kwargs):
        """
        Call method on server.

        sync_type ::
          = 0 .. call method, wait, get response.
          = 1 .. call method, inmediate return of object.
          = 2 .. call notification and exit.
          = 3 .. call method, inmediate return of non-auto-close object.

        """

        data = {}
        data['method'] = name

        if sync_type in [0, 1, 3]:
            data['id'] = self.get_id()

        if len(args) > 0:
            data['params'] = args

        if len(kwargs) > 0:
            if len(args) == 0:
                data['params'] = kwargs
            else:
                data['kwparams'] = kwargs

        if sync_type == 2: # short-circuit for speed!
            self.write(json.dumps(data, self))
            return None

        req = Request(self, data)
        if sync_type == 0:
            return req.value
        if sync_type == 3:
            req.auto_close = False
        return req