示例#1
0
 def stringReceived(self, data):
     box = Box()
     box.ParseFromString(data)
     if box.call != "":
         call = Call()
         call.ParseFromString(box.call)
         method = self.service.GetDescriptor().FindMethodByName(call.method)
         if method:
             request = self.service.GetRequestClass(method)()
             request.ParseFromString(call.request)
             controller = Controller()
             d = Deferred()
             d.addCallback(self.buildResult, call)
             d.addCallback(self.boxResult)
             d.addCallback(
                 lambda box: self.sendString(box.SerializeToString()))
             self.service.CallMethod(method, controller, request,
                                     d.callback)
     elif box.result != "":
         result = Result()
         result.ParseFromString(box.result)
         token = result.token
         if self.pending.has_key(token):
             self.pending[token].callback(result)