class Server(object): ''' Main thread Load all threads Register players Configure and start all Pyro stuff ''' players = {} _gameThread = None def __init__(self): ''' Constructor Nothing to do yet ''' Pyro4.config.reset() Pyro4.config.SERIALIZER = 'json' Pyro4.util.SerializerBase.register_dict_to_class(Player, Player.unserialize) Thread(target=Pyro4.naming.startNSloop).start() def start(self): ''' Start the server Start Chat thread Start an admin command line thread Register the server in the Pyro NameServer Start Pyro daemon ''' logging.info("Starting Chat thread") ChatThread() logging.info("Starting admin command line") adminThread = Thread(target=AdminCmd(self).cmdloop) adminThread.start() logging.info("Registering the ServerAdapter in the pyro NameServer") with Pyro4.Daemon() as daemon: with Pyro4.locateNS() as nameServer: uri=daemon.register(ServerAdapter(self)) nameServer.register("pycards.server", uri) logging.info("Starting Pyro daemon") daemon.requestLoop() def register(self, name): """ Register a player in the server""" logging.info("Creating player " + name) self.players[name] = Player(name) return self.players[name] def start_game(self): ''' Start the game ''' self._gameThread = GameThread(self.players.items()) self._gameThread.start() def stop_game(self): self._gameThread.stop()
def testEndOfTurn(self): game = GameThread(self.players, self.decks) game.setDaemon(True) game.start() for _ in xrange(5): time.sleep(2) game.endOfTurn()
def start_game(self): ''' Start the game ''' self._gameThread = GameThread(self.players.items()) self._gameThread.start()