diff options
Diffstat (limited to 'zenserver/zenserver.cpp')
| -rw-r--r-- | zenserver/zenserver.cpp | 23 |
1 files changed, 11 insertions, 12 deletions
diff --git a/zenserver/zenserver.cpp b/zenserver/zenserver.cpp index 56b6c793f..eb8df2b23 100644 --- a/zenserver/zenserver.cpp +++ b/zenserver/zenserver.cpp @@ -308,6 +308,15 @@ main(int argc, char* argv[]) Server.SetTestMode(GlobalOptions.IsTest); Server.Initialize(ServiceConfig, GlobalOptions.BasePort, GlobalOptions.OwnerPid); + // Monitor shutdown signals + + ShutdownThread.reset(new std::thread{[&] { + spdlog::info("shutdown monitor thread waiting for shutdown signal '{}'", ShutdownEventName); + ShutdownEvent->Wait(); + spdlog::info("shutdown signal received"); + Server.RequestExit(0); + }}); + // If we have a parent process, establish the mechanisms we need // to be able to communicate with the parent @@ -315,23 +324,13 @@ main(int argc, char* argv[]) { zen::NamedEvent ParentEvent{GlobalOptions.ChildId}; ParentEvent.Set(); - - ShutdownThread.reset(new std::thread{[&] { - spdlog::info("shutdown monitor thread waiting for shutdown signal '{}'", ShutdownEventName); - ShutdownEvent->Wait(); - spdlog::info("shutdown signal received"); - Server.RequestExit(0); - }}); } Server.Run(); Server.Cleanup(); - if (ShutdownEvent) - { - ShutdownEvent->Set(); - ShutdownThread->join(); - } + ShutdownEvent->Set(); + ShutdownThread->join(); } catch (std::exception& e) { |