def start(self):
        manager_address = ("127.0.0.1", 27500)
        manager_password = ""

        self.server_manager = GameSpyServerDatabase(address = manager_address, authkey= manager_password)
        self.server_manager.connect()

        # Start QR server
        address = ('0.0.0.0', 27900)  # accessible to outside connections (use this if you don't know what you're doing)

        self.socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
        self.socket.bind(address)

        logger.log(logging.INFO, "Server is now listening on %s:%s..." % (address[0], address[1]))

        # Dependencies! I don't really like this solution but it's easier than trying to manage it another way.
        server_browser_server = GameSpyServerBrowserServer(self)
        server_browser_server_thread = threading.Thread(target=server_browser_server.start())
        server_browser_server_thread.start()

        threading.Timer(1, self.keepalive_check).start()

        while 1:
            recv_data, address = self.socket.recvfrom(2048)

            packet_thread = threading.Thread(target=self.handle_packet, args=(self.socket, recv_data, address))
            packet_thread.start()
    def start(self):
        manager_address = ("127.0.0.1", 27500)
        manager_password = ""

        self.server_manager = GameSpyServerDatabase(address = manager_address, authkey= manager_password)
        self.server_manager.connect()

        # Start QR server
        address = ('0.0.0.0', 27900)  # accessible to outside connections (use this if you don't know what you're doing)

        self.socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
        self.socket.bind(address)

        logger.log(logging.INFO, "Server is now listening on %s:%s..." % (address[0], address[1]))

        # Dependencies! I don't really like this solution but it's easier than trying to manage it another way.
        server_browser_server = GameSpyServerBrowserServer(self)
        server_browser_server_thread = threading.Thread(target=server_browser_server.start)
        server_browser_server_thread.start()

        threading.Timer(1, self.keepalive_check).start()

        while 1:
            recv_data, address = self.socket.recvfrom(2048)

            packet_thread = threading.Thread(target=self.handle_packet, args=(self.socket, recv_data, address))
            packet_thread.start()
    def start(self):
        try:
            manager_address = dwc_config.get_ip_port('GameSpyManager')
            manager_password = ""

            self.server_manager = GameSpyServerDatabase(
                address=manager_address, authkey=manager_password)
            self.server_manager.connect()

            # Start QR server
            # Accessible to outside connections (use this if you don't know
            # what you're doing)
            address = dwc_config.get_ip_port('GameSpyQRServer')

            self.socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
            self.socket.bind(address)
            self.socket.setblocking(0)

            logger.log(logging.INFO, "Server is now listening on %s:%s...",
                       address[0], address[1])

            # Dependencies! I don't really like this solution but it's easier
            # than trying to manage it another way.
            server_browser_server = GameSpyServerBrowserServer(self)
            server_browser_server_thread = threading.Thread(
                target=server_browser_server.start)
            server_browser_server_thread.start()

            self.write_queue = Queue.Queue()
            self.db = gs_database.GamespyDatabase()
            threading.Thread(target=self.write_queue_worker).start()

            while True:
                ready = select.select([self.socket], [], [], 15)

                if ready[0]:
                    try:
                        recv_data, address = self.socket.recvfrom(2048)
                        self.handle_packet(self.socket, recv_data, address)
                    except:
                        logger.log(logging.ERROR,
                                   "Failed to handle client: %s",
                                   traceback.format_exc())

                self.keepalive_check()
        except:
            logger.log(logging.ERROR, "Unknown exception: %s",
                       traceback.format_exc())
def start_server_browser_server():
    server_browser_server = GameSpyServerBrowserServer()
    server_browser_server.start()