#include #include #include "server.h" #include "version.h" #ifdef _WIN32 #include #include #include #ifndef ENABLE_VIRTUAL_TERMINAL_PROCESSING #define ENABLE_VIRTUAL_TERMINAL_PROCESSING 0x0004 #endif #endif void signal_handler(int signal) { if (signal == SIGINT) { fc_recovery_color(); exit(signal); } } int main(int argc, char* argv[]) { std::signal(SIGINT, signal_handler); #ifdef _WIN32 HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE); DWORD mode; GetConsoleMode(hConsole, &mode); mode |= ENABLE_VIRTUAL_TERMINAL_PROCESSING; SetConsoleMode(hConsole, mode); #endif std::shared_ptr deleter(new int(), [](int* p) { fc_recovery_color(); delete p; }); TLOGI("Build At {} {} under {} on {}", __DATE__, __TIME__, VERSION_GIT_COMMIT, VERSION_GIT_BRANCH); int port = 9898; if (argc < 2) { TLOGI("Use Default Port:{}", port); } else { std::string str_port(argv[1]); port = std::stoi(str_port); TLOGI("Use Port:{}", port); } asio::io_context io_context; CTcpServer server(io_context); if (!server.start(port)) { return -1; } io_context.run(); return 0; }