int main() { RegisterExecutablePlatform(ExePlatformQueryServ); set_exception_handler(); Timer LFGuildExpireTimer(60000); Timer InterserverTimer(INTERSERVER_TIMER); // does auto-reconnect _log(QUERYSERV__INIT, "Starting EQEmu QueryServ."); if (!queryservconfig::LoadConfig()) { _log(QUERYSERV__INIT, "Loading server configuration failed."); return 1; } Config = queryservconfig::get(); if(!load_log_settings(Config->LogSettingsFile.c_str())) _log(QUERYSERV__INIT, "Warning: Unable to read %s", Config->LogSettingsFile.c_str()); else _log(QUERYSERV__INIT, "Log settings loaded from %s", Config->LogSettingsFile.c_str()); WorldShortName = Config->ShortName; _log(QUERYSERV__INIT, "Connecting to MySQL..."); if (!database.Connect( Config->QSDatabaseHost.c_str(), Config->QSDatabaseUsername.c_str(), Config->QSDatabasePassword.c_str(), Config->QSDatabaseDB.c_str(), Config->QSDatabasePort)) { _log(WORLD__INIT_ERR, "Cannot continue without a database connection."); return 1; } if (signal(SIGINT, CatchSignal) == SIG_ERR) { _log(QUERYSERV__ERROR, "Could not set signal handler"); return 1; } if (signal(SIGTERM, CatchSignal) == SIG_ERR) { _log(QUERYSERV__ERROR, "Could not set signal handler"); return 1; } worldserver = new WorldServer; worldserver->Connect(); lfguildmanager.LoadDatabase(); while(RunLoops) { Timer::SetCurrentTime(); if(LFGuildExpireTimer.Check()) lfguildmanager.ExpireEntries(); if (InterserverTimer.Check()) { if (worldserver->TryReconnect() && (!worldserver->Connected())) worldserver->AsyncConnect(); } worldserver->Process(); timeout_manager.CheckTimeouts(); Sleep(100); } }