From 35c2e972076b1f039ab17ddd35f2d08c125ce383 Mon Sep 17 00:00:00 2001 From: leak Date: Tue, 13 May 2014 22:41:59 +0200 Subject: Replace ACE signal handling with Boost --- src/server/authserver/Main.cpp | 44 ++++++++++++++++++++---------------------- 1 file changed, 21 insertions(+), 23 deletions(-) (limited to 'src/server/authserver/Main.cpp') diff --git a/src/server/authserver/Main.cpp b/src/server/authserver/Main.cpp index d1b2b614037..0ccad3d1d8a 100644 --- a/src/server/authserver/Main.cpp +++ b/src/server/authserver/Main.cpp @@ -26,10 +26,9 @@ #include #include -#include -#include #include #include +#include #include "Common.h" #include "Database/DatabaseEnv.h" @@ -58,21 +57,20 @@ bool stopEvent = false; // Setting it to tru LoginDatabaseWorkerPool LoginDatabase; // Accessor to the authserver database -/// Handle authserver's termination signals -class AuthServerSignalHandler : public Trinity::SignalHandler -{ -public: - virtual void HandleSignal(int sigNum) - { - switch (sigNum) - { - case SIGINT: - case SIGTERM: - stopEvent = true; - break; - } - } -}; +void SignalHandler(const boost::system::error_code& error, int signalNumber) +{ + TC_LOG_ERROR("server.authserver", "SIGNAL HANDLER WORKING"); + if (!error) + { + switch (signalNumber) + { + case SIGINT: + case SIGTERM: + stopEvent = true; + break; + } + } +} /// Print out the usage string for this program on the console. void usage(const char* prog) @@ -170,13 +168,11 @@ extern int main(int argc, char** argv) return 1; } - // Initialize the signal handlers - AuthServerSignalHandler SignalINT, SignalTERM; + boost::asio::io_service io_service; - // Register authservers's signal handlers - ACE_Sig_Handler Handler; - Handler.register_handler(SIGINT, &SignalINT); - Handler.register_handler(SIGTERM, &SignalTERM); + boost::asio::signal_set signals(io_service, SIGINT, SIGTERM); + + signals.async_wait(SignalHandler); #if defined(_WIN32) || defined(__linux__) @@ -259,6 +255,8 @@ extern int main(int argc, char** argv) if (ACE_Reactor::instance()->run_reactor_event_loop(interval) == -1) break; + io_service.run(); + if ((++loopCounter) == numLoops) { loopCounter = 0; -- cgit v1.2.3