def build(self): server = LogServer() cfg = Configuration(config_file='server-config.txt') cfg.purgelines() cfg.initialize() try: reactor.listenTCP( LogServerApp.port, LogProtocolFactory( self, server_shoe_file='data/' + cfg.getParam('shoe_file'), users_shoe_file='data/' + cfg.getParam('users_shoe_file'))) LogServerApp.service_p = TTTMulticastDiscoveryCI( TTTMulticastDiscoveryCI.MODES['server'], LogServerApp.port) reactor.listenMulticast(TTTMulticastDiscoveryCI.PORT, LogServerApp.service_p, listenMultiple=True) except Exception as e: print e pass LogServerApp.s = server return server
def build(self): global g self.nr = 0 self.config = Configuration() self.config.purgelines() self.config.initialize() game = TTTGame() self.g = game self.mp = TTTMulticastDiscoveryCI( TTTMulticastDiscoveryCI.MODES['client']) reactor.listenMulticast(TTTMulticastDiscoveryCI.PORT, self.mp, listenMultiple=True) Clock.schedule_once(lambda dt: game.post_init()) Clock.schedule_once(lambda dt: self.discover_server(), 1) return game
def build(self): global g self.nr = 0 self.config = Configuration() self.config.purgelines() self.config.initialize() game = TTTGame() self.g = game self.mp = TTTMulticastDiscoveryCI(TTTMulticastDiscoveryCI.MODES['client']) reactor.listenMulticast(TTTMulticastDiscoveryCI.PORT, self.mp, listenMultiple=True) Clock.schedule_once(lambda dt: game.post_init()) Clock.schedule_once(lambda dt: self.discover_server(), 1) return game
class TTTGameApp(App): connection = None g = None def build(self): global g self.nr = 0 self.config = Configuration() self.config.purgelines() self.config.initialize() game = TTTGame() self.g = game self.mp = TTTMulticastDiscoveryCI( TTTMulticastDiscoveryCI.MODES['client']) reactor.listenMulticast(TTTMulticastDiscoveryCI.PORT, self.mp, listenMultiple=True) Clock.schedule_once(lambda dt: game.post_init()) Clock.schedule_once(lambda dt: self.discover_server(), 1) return game def connect_to_server(self, host, port): reactor.connectTCP(host, port, LogClientFactory(self)) # reactor.connectTCP(host, port, EchoClientFactory(self)) def on_connection(self, connection): self.connection = connection print 'Connected to server!' self.g.console.text += 'Connected to server %s\n' % connection.transport.getPeer( ) self.g.connection_popup.quit() self.login() def login(self): self.g.show_login_popup() def on_connection_failed(self, reason): self.g.connection_popup.update_label(' Connection FAILED') def send_message(self, data): """Send the whole data content to the connection handle. """ if data and self.connection: self.connection.sendLine(str(data)) def discover_server(self): if self.nr < 3: if len(self.mp.servers) == 0: print "No servers yet" self.mp.query() Clock.schedule_once(lambda dt: self.discover_server(), 5) self.nr += 1 else: ips = self.mp.servers.keys() # print 'Discovered server: %s at port %d\n' % (ips[0], self.mp.servers[ips[0]]) self.g.console.text += 'Discovered server: %s @ port %d\n' % ( ips[0], self.mp.servers[ips[0]]) self.connect_to_server(ips[0], self.mp.servers[ips[0]]) else: print "Multicast failed, trying direct connection..." self.connect_to_server(self.config.getParam('server'), int(self.config.getParam('server_port'))) def receive(self, msg): if msg.startswith('ask_reply'): lines = msg.split('\n') lines = [ x for x in lines if x != '' and not x.startswith('#') and not x.startswith('//') ] print lines[1:] self.g.shoe_config.content = lines[1:] self.g.total_runs = len( self.g.shoe_config.content) # updates counter in GUI # g.console.text += msg + '\n' def log( self, msg, log='MOVES', ): self.send_message('log:' + log) self.send_message(msg)
class TTTGameApp(App): connection = None g = None def build(self): global g self.nr = 0 self.config = Configuration() self.config.purgelines() self.config.initialize() game = TTTGame() self.g = game self.mp = TTTMulticastDiscoveryCI(TTTMulticastDiscoveryCI.MODES['client']) reactor.listenMulticast(TTTMulticastDiscoveryCI.PORT, self.mp, listenMultiple=True) Clock.schedule_once(lambda dt: game.post_init()) Clock.schedule_once(lambda dt: self.discover_server(), 1) return game def connect_to_server(self, host, port): reactor.connectTCP(host, port, LogClientFactory(self)) # reactor.connectTCP(host, port, EchoClientFactory(self)) def on_connection(self, connection): self.connection = connection print 'Connected to server!' self.g.console.text += 'Connected to server %s\n' % connection.transport.getPeer() self.g.connection_popup.quit() self.login() def login(self): self.g.show_login_popup() def on_connection_failed(self, reason): self.g.connection_popup.update_label(' Connection FAILED') def send_message(self, data): """Send the whole data content to the connection handle. """ if data and self.connection: self.connection.sendLine(str(data)) def discover_server(self): if self.nr < 3: if len(self.mp.servers) == 0: print "No servers yet" self.mp.query() Clock.schedule_once(lambda dt: self.discover_server(), 5) self.nr += 1 else: ips = self.mp.servers.keys() # print 'Discovered server: %s at port %d\n' % (ips[0], self.mp.servers[ips[0]]) self.g.console.text += 'Discovered server: %s @ port %d\n' % (ips[0], self.mp.servers[ips[0]]) self.connect_to_server(ips[0], self.mp.servers[ips[0]]) else: print "Multicast failed, trying direct connection..." self.connect_to_server(self.config.getParam('server'), int(self.config.getParam('server_port'))) def receive(self, msg): if msg.startswith('ask_reply'): lines = msg.split('\n') lines = [x for x in lines if x != '' and not x.startswith('#') and not x.startswith('//') ] print lines[1:] self.g.shoe_config.content = lines[1:] self.g.total_runs = len(self.g.shoe_config.content) # updates counter in GUI # g.console.text += msg + '\n' def log(self, msg, log='MOVES',): self.send_message('log:' + log) self.send_message(msg)