#!/usr/bin/python # -*- coding: GBK -*- """ EventServer - ʼþ·þÎñÆ÷ ÓÃÓÚ½ÓÊÕÓÎÏ·¿Í»§¶Ëʼþ²¢¼Ç¼µ½±¾µØÎļþ """ import os import sys import datetime import time import threading import ctypes from config import ConfigReader from server import EventServer from packet_logger import packet_logger from clients_manager import ClientsMgr def disable_close_button(): """½ûÓÿØÖÆÌ¨´°¿ÚµÄ¹Ø±Õ°´Å¥""" try: # »ñÈ¡µ±Ç°¿ØÖÆÌ¨´°¿Ú¾ä±ú kernel32 = ctypes.windll.kernel32 hwnd = kernel32.GetConsoleWindow() if hwnd: # »ñÈ¡µ±Ç°´°¿ÚÑùʽ user32 = ctypes.windll.user32 style = user32.GetWindowLongW(hwnd, -16) # GWL_STYLE = -16 # ÒÆ³ý¹Ø±Õ°´Å¥ (WS_SYSMENU) user32.SetWindowLongW(hwnd, -16, style & ~0x80000) except: pass def main(): """Ö÷º¯Êý""" os.system("title EventServer-%s" % datetime.datetime.today()) # ½ûÓùرհ´Å¥ disable_close_button() # ³õʼ»¯·â°üÈÕ־ϵͳ if packet_logger.enable: print('[Main] Packet logger initialized: %s' % packet_logger.log_dir) else: print('[Main] Packet logger disabled') # ³õʼ»¯µ¥Àý£¨È·±£Ḭ̈߳²È«ºÍʵÀýÒ»Ö£© ConfigReader.instance() ClientsMgr.instance() print('=' * 60) print(' EventServer - ÓÎϷʼþ·þÎñÆ÷') print(' Version: 1.0.0') print(' Python: 2.7') print('=' * 60) print('') # ´´½¨²¢³õʼ»¯·þÎñÆ÷ server = EventServer() # Æô¶¯·þÎñÆ÷ if not server.start(): print('[Main] Failed to start server!') raw_input('Press Enter to exit...') return print('[Main] Server is running...') print('[Main] Press Ctrl+C to stop') print('') # Æô¶¯×´Ì¬ÏÔʾÏß³Ì stop_event = threading.Event() status_thread = threading.Thread(target=show_status, args=(server, stop_event)) status_thread.daemon = True status_thread.start() try: # Ö÷Ñ­»·,µÈ´ýÖжÏÐźŠwhile True: time.sleep(1) except KeyboardInterrupt: print('') print('[Main] Received interrupt signal, stopping...') except Exception as e: print('[Main] Error: %s' % str(e)) # ÉèÖÃֹͣʼþ stop_event.set() # Í£Ö¹·þÎñÆ÷ server.stop() print('[Main] Goodbye!') def show_status(server, stop_event): """ÏÔʾ·þÎñÆ÷״̬""" last_success = 0 last_fail = 0 while not stop_event.is_set(): time.sleep(5) # ÇåÆÁ os.system('cls' if os.name == 'nt' else 'clear') # ÖØÐÂÏÔʾ±êÌâ print('=' * 60) print(' EventServer - ÓÎϷʼþ·þÎñÆ÷') print(' Version: 1.0.0') print(' Python: ' + sys.version) print('=' * 60) print('[Main] Server is running...') print('[Main] Press Ctrl+C to stop') print('') # »ñȡͳ¼ÆÊý¾Ý conn_count = server.get_connection_count() queue_size = server.get_queue_size() success_count = server.get_success_count() fail_count = server.get_fail_count() # ¼ÆËãÔöÁ¿ success_delta = success_count - last_success fail_delta = fail_count - last_fail print('[Status] Connections: %d | Queue: %d | Success: +%d (Total: %d) | Fail: +%d (Total: %d)' % ( conn_count, queue_size, success_delta, success_count, fail_delta, fail_count )) last_success = success_count last_fail = fail_count if __name__ == '__main__': main()