Ejemplo n.º 1
0
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()
Ejemplo n.º 2
0
 def testEndOfTurn(self):
     game = GameThread(self.players, self.decks)
     game.setDaemon(True)
     game.start()
     for _ in xrange(5):
         time.sleep(2)
         game.endOfTurn()
Ejemplo n.º 3
0
 def start_game(self):
     '''
      Start the game
     '''
     self._gameThread = GameThread(self.players.items())
     self._gameThread.start()