コード例 #1
0
ファイル: rpcserver.py プロジェクト: ptsurko/coursera_cloud
 def process_request(self, address, data):
     request = _RpcRequestSerializer.deserialize(data)
     self.logger.debug('Processing \'%s\' rpc method.' % request.method)
     
     for h in self._service_handlers:
         if h.can_handle(request.method):
             response = h.handle(request.method, request.data)
             if response:
                 return Serializer.serialize(response)
             else:
                 return None
     else:
         raise ServerException('Method %s is not supported.' % request.method)
コード例 #2
0
 def call_method(self, method_descriptor, message):
     try:
         message_data = Serializer.serialize(message)
         request = _RpcRequest('', method_descriptor.name, message_data)
         
         serialized = _RpcRequestSerializer.serialize(request)
         
         self.connect()
         self.send(serialized)
         if method_descriptor.response_class:
             response = self.receive()
             
             if Serializer.can_deserialize(response, ErrorMessage):
                 deserialized = Serializer.deserialize(response, ErrorMessage)
                 raise ServerException(deserialized.message)
             else:
                 return Serializer.deserialize(response, method_descriptor.response_class)
     finally:
         self.close()
コード例 #3
0
ファイル: rpcserver.py プロジェクト: ptsurko/coursera_cloud
 def handle_error(self, address, exception, exc_info):
     self.logger.error('Unhandled error: %s' % exception.message, exc_info=exc_info)
     return Serializer.serialize(ErrorMessage(exception.message))