Пример #1
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()
Пример #2
0
    def handle(self, method, data):
        method_descriptor = getattr(self._service, method)._descriptor
        
        message = Serializer.deserialize(data, method_descriptor.request_class)

        return method_descriptor.method(self._service, message)