mirror of
https://github.com/EQEmu/Server.git
synced 2025-12-11 16:51:29 +00:00
[Process Management] Change all executables to use the default event loop run (#2471)
* Loginserver change to event loop run. * eqlaunch, loginserver, queryserv, world
This commit is contained in:
parent
832bffa811
commit
77c3841a49
@ -105,11 +105,17 @@ int main(int argc, char *argv[]) {
|
||||
Log(Logs::Detail, Logs::Launcher, "Starting main loop...");
|
||||
|
||||
ProcLauncher *launch = ProcLauncher::get();
|
||||
|
||||
RunLoops = true;
|
||||
while(RunLoops) {
|
||||
auto loop_fn = [&](EQ::Timer* t) {
|
||||
//Advance the timer to our current point in time
|
||||
Timer::SetCurrentTime();
|
||||
|
||||
if (!RunLoops) {
|
||||
EQ::EventLoop::Get().Shutdown();
|
||||
return;
|
||||
}
|
||||
|
||||
/*
|
||||
* Let the process manager look for dead children
|
||||
*/
|
||||
@ -120,29 +126,31 @@ int main(int argc, char *argv[]) {
|
||||
*/
|
||||
zone = zones.begin();
|
||||
zend = zones.end();
|
||||
for(; zone != zend; ++zone) {
|
||||
if(!zone->second->Process())
|
||||
for (; zone != zend; ++zone) {
|
||||
if (!zone->second->Process())
|
||||
to_remove.insert(zone->first);
|
||||
}
|
||||
|
||||
/*
|
||||
* Kill off any zones which have stopped
|
||||
*/
|
||||
while(!to_remove.empty()) {
|
||||
while (!to_remove.empty()) {
|
||||
std::string rem = *to_remove.begin();
|
||||
to_remove.erase(rem);
|
||||
zone = zones.find(rem);
|
||||
if(zone == zones.end()) {
|
||||
if (zone == zones.end()) {
|
||||
//wtf...
|
||||
continue;
|
||||
}
|
||||
delete zone->second;
|
||||
zones.erase(rem);
|
||||
}
|
||||
};
|
||||
|
||||
EQ::EventLoop::Get().Process();
|
||||
Sleep(5);
|
||||
}
|
||||
EQ::Timer process_timer(loop_fn);
|
||||
process_timer.Start(32, true);
|
||||
|
||||
EQ::EventLoop::Get().Run();
|
||||
|
||||
//try to be semi-nice about this... without waiting too long
|
||||
zone = zones.begin();
|
||||
|
||||
@ -289,13 +289,21 @@ int main(int argc, char **argv)
|
||||
LogInfo("[Config] [Security] IsPasswordLoginAllowed [{0}]", server.options.IsPasswordLoginAllowed());
|
||||
LogInfo("[Config] [Security] IsUpdatingInsecurePasswords [{0}]", server.options.IsUpdatingInsecurePasswords());
|
||||
|
||||
while (run_server) {
|
||||
auto loop_fn = [&](EQ::Timer* t) {
|
||||
Timer::SetCurrentTime();
|
||||
server.client_manager->Process();
|
||||
EQ::EventLoop::Get().Process();
|
||||
|
||||
Sleep(5);
|
||||
}
|
||||
if (!run_server) {
|
||||
EQ::EventLoop::Get().Shutdown();
|
||||
return;
|
||||
}
|
||||
|
||||
server.client_manager->Process();
|
||||
};
|
||||
|
||||
EQ::Timer process_timer(loop_fn);
|
||||
process_timer.Start(32, true);
|
||||
|
||||
EQ::EventLoop::Get().Run();
|
||||
|
||||
LogInfo("Server Shutdown");
|
||||
|
||||
|
||||
@ -104,15 +104,24 @@ int main()
|
||||
/* Load Looking For Guild Manager */
|
||||
lfguildmanager.LoadDatabase();
|
||||
|
||||
while (RunLoops) {
|
||||
auto loop_fn = [&](EQ::Timer* t) {
|
||||
Timer::SetCurrentTime();
|
||||
|
||||
if (!RunLoops) {
|
||||
EQ::EventLoop::Get().Shutdown();
|
||||
return;
|
||||
}
|
||||
|
||||
if (LFGuildExpireTimer.Check()) {
|
||||
lfguildmanager.ExpireEntries();
|
||||
}
|
||||
};
|
||||
|
||||
EQ::Timer process_timer(loop_fn);
|
||||
process_timer.Start(32, true);
|
||||
|
||||
EQ::EventLoop::Get().Run();
|
||||
|
||||
EQ::EventLoop::Get().Process();
|
||||
Sleep(5);
|
||||
}
|
||||
LogSys.CloseFileLogs();
|
||||
}
|
||||
|
||||
|
||||
@ -371,8 +371,14 @@ int main(int argc, char **argv)
|
||||
}
|
||||
);
|
||||
|
||||
while (RunLoops) {
|
||||
auto loop_fn = [&](EQ::Timer* t) {
|
||||
Timer::SetCurrentTime();
|
||||
|
||||
if (!RunLoops) {
|
||||
EQ::EventLoop::Get().Shutdown();
|
||||
return;
|
||||
}
|
||||
|
||||
eqs = nullptr;
|
||||
|
||||
//give the stream identifier a chance to do its work....
|
||||
@ -381,7 +387,7 @@ int main(int argc, char **argv)
|
||||
//check the stream identifier for any now-identified streams
|
||||
while ((eqsi = stream_identifier.PopIdentified())) {
|
||||
//now that we know what patch they are running, start up their client object
|
||||
struct in_addr in{};
|
||||
struct in_addr in {};
|
||||
in.s_addr = eqsi->GetRemoteIP();
|
||||
if (RuleB(World, UseBannedIPsTable)) { //Lieka: Check to see if we have the responsibility for blocking IPs.
|
||||
LogInfo("Checking inbound connection [{}] against BannedIPs table", inet_ntoa(in));
|
||||
@ -447,10 +453,13 @@ int main(int argc, char **argv)
|
||||
);
|
||||
UpdateWindowTitle(window_title);
|
||||
}
|
||||
};
|
||||
|
||||
EQ::Timer process_timer(loop_fn);
|
||||
process_timer.Start(32, true);
|
||||
|
||||
EQ::EventLoop::Get().Run();
|
||||
|
||||
EQ::EventLoop::Get().Process();
|
||||
Sleep(5);
|
||||
}
|
||||
LogInfo("World main loop completed");
|
||||
LogInfo("Shutting down zone connections (if any)");
|
||||
zoneserver_list.KillAll();
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user