spacepaste

  1.  
  2. def dataReceived(self, data):
  3. reactor.callInThread(self.deserializeWorldMessage, data)
  4. def deserializeWorldMessage(self, data):
  5. world_message = messages_pb2.WorldMessage()
  6. world_message.ParseFromString(str(data[4:])) # cut first 4 bytes since they only indicate the message length
  7. self.HandleData(world_message)
  8. def HandleData(self, worldMessage):
  9. print "======= CmsgSendData ========"
  10. # some logic here
  11. self.sendWorldMessage(worldMessage.SerializeToString())
  12. def sendWorldMessage(self, worldMessage):
  13. # cpu heavy operation like compression
  14. # dont forget to add the size of the message as !I prefix
  15. reactor.callFromThread(self.sendData, worldMessage)
  16. def sendData(self, data):
  17. self.transport.write(data)
  18.