Code:
[12/10/2023 16:02:51] Execution time: 1634 ms - std::bind(mainLoader, argc, argv, &serviceManager) - main
[12/10/2023 16:11:13] Execution time: 1585 ms - std::bind(mainLoader, argc, argv, &serviceManager) - main
[12/10/2023 16:14:52] Execution time: 1561 ms - std::bind(mainLoader, argc, argv, &serviceManager) - main
[12/10/2023 16:16:06] Execution time: 1553 ms - std::bind(mainLoader, argc, argv, &serviceManager) - main
[12/10/2023 16:22:22] Execution time: 1628 ms - std::bind(mainLoader, argc, argv, &serviceManager) - main
[12/10/2023 16:40:32] Execution time: 1579 ms - std::bind(mainLoader, argc, argv, &serviceManager) - main
[12/10/2023 16:48:13] Execution time: 1553 ms - std::bind(mainLoader, argc, argv, &serviceManager) - main
[12/10/2023 16:49:45] Execution time: 1588 ms - std::bind(mainLoader, argc, argv, &serviceManager) - main
[12/10/2023 16:51:40] Execution time: 1576 ms - std::bind(mainLoader, argc, argv, &serviceManager) - main
[12/10/2023 16:52:42] Execution time: 1587 ms - std::bind(mainLoader, argc, argv, &serviceManager) - main
[12/10/2023 16:53:24] Execution time: 1581 ms - std::bind(mainLoader, argc, argv, &serviceManager) - main
[12/10/2023 16:55:53] Execution time: 1576 ms - std::bind(mainLoader, argc, argv, &serviceManager) - main
[12/10/2023 17:09:23] Execution time: 1561 ms - std::bind(mainLoader, argc, argv, &serviceManager) - main
[12/10/2023 17:12:40] Execution time: 1572 ms - std::bind(mainLoader, argc, argv, &serviceManager) - main
[12/10/2023 17:15:47] Execution time: 1559 ms - std::bind(mainLoader, argc, argv, &serviceManager) - main
[12/10/2023 17:29:40] Execution time: 1592 ms - std::bind(mainLoader, argc, argv, &serviceManager) - main
[12/10/2023 17:34:54] Execution time: 1668 ms - std::bind(mainLoader, argc, argv, &serviceManager) - main
[12/10/2023 17:51:20] Execution time: 1634 ms - std::bind(mainLoader, argc, argv, &serviceManager) - main
[12/10/2023 17:59:33] Execution time: 1605 ms - std::bind(mainLoader, argc, argv, &serviceManager) - main
[12/10/2023 18:05:11] Execution time: 1602 ms - std::bind(mainLoader, argc, argv, &serviceManager) - main
[12/10/2023 18:06:55] Execution time: 1596 ms - std::bind(mainLoader, argc, argv, &serviceManager) - main
[12/10/2023 19:44:25] Execution time: 2033 ms - std::bind(mainLoader, argc, argv, &serviceManager) - main
[12/10/2023 19:45:28] Execution time: 1744 ms - std::bind(mainLoader, argc, argv, &serviceManager) - main
[12/10/2023 20:25:43] Execution time: 1745 ms - std::bind(mainLoader, argc, argv, &serviceManager) - main
[12/10/2023 20:28:31] Execution time: 1595 ms - std::bind(mainLoader, argc, argv, &serviceManager) - main
[12/10/2023 20:29:52] Execution time: 1710 ms - std::bind(mainLoader, argc, argv, &serviceManager) - main
[12/10/2023 21:53:23] Execution time: 1645 ms - std::bind(mainLoader, argc, argv, &serviceManager) - main
C++:
int main(int argc, char* argv[])
{
// Setup bad allocation handler
std::set_new_handler(badAllocationHandler);
#ifndef _WIN32
// ignore sigpipe...
struct sigaction sigh;
sigh.sa_handler = SIG_IGN;
sigh.sa_flags = 0;
sigemptyset(&sigh.sa_mask);
sigaction(SIGPIPE, &sigh, nullptr);
#endif
ServiceManager serviceManager;
g_dispatcher.start();
g_scheduler.start();
#ifdef STATS_ENABLED
g_stats.start();
#endif
g_dispatcher.addTask(createTask(std::bind(mainLoader, argc, argv, &serviceManager)));
g_loaderSignal.wait(g_loaderUniqueLock);
if (serviceManager.is_running()) {
std::cout << ">> " << g_config.getString(ConfigManager::SERVER_NAME) << " Server Online!" << std::endl << std::endl;
#ifdef _WIN32
SetConsoleCtrlHandler([](DWORD) -> BOOL {
g_dispatcher.addTask(createTask([]() {
g_dispatcher.addTask(createTask(
std::bind(&Game::shutdown, &g_game)
));
g_scheduler.stop();
g_databaseTasks.stop();
g_dispatcher.stop();
}));
ExitThread(0);
}, 1);
#endif
serviceManager.run();
} else {
std::cout << ">> No services running. The server is NOT online." << std::endl;
g_scheduler.shutdown();
g_databaseTasks.shutdown();
g_dispatcher.shutdown();
#ifdef STATS_ENABLED
g_stats.shutdown();
#endif
}
g_scheduler.join();
g_databaseTasks.join();
g_dispatcher.join();
#ifdef STATS_ENABLED
g_stats.join();
#endif
return 0;
}