Example #1
0
def parse(line):
    try:
        d = json.loads(line)
    except ValueError as e:
        raise error.InvalidMessage(str(e))
    if 'action' not in d:
        raise error.InvalidMessage("action required")
    return Message(d['action'], d.get('payload'))
Example #2
0
 def drive_player(self, name, info):
     log.info('drive_player: %r %r', name, info)
     if name not in self.players:
         raise error.NoSuchPlayer(name)
     if 'action' not in info:
         raise error.InvalidMessage("action required")
     action = info['action']
     if action not in actions.ALL:
         raise error.InvalidMessage("invalid drive action %s" % action)
     self.players[name].action = action
     self.players[name].response_time = info.get('response_time', 1.0)
Example #3
0
 def dispatch(self, msg):
     if self.name is None:
         # New player
         if msg.action != 'join':
             raise error.ActionForbidden(msg.action)
         if 'name' not in msg.payload:
             raise error.InvalidMessage("name required")
         self.name = msg.payload['name']
         self.hub.add_player(self)
     else:
         # Registered player
         if msg.action == 'drive':
             self.hub.drive_player(self, msg.payload)
         else:
             raise error.ActionForbidden(msg.action)