diff options
author | leak <leak@bitmx.net> | 2014-05-13 22:41:59 +0200 |
---|---|---|
committer | leak <leak@bitmx.net> | 2014-05-13 22:41:59 +0200 |
commit | 35c2e972076b1f039ab17ddd35f2d08c125ce383 (patch) | |
tree | 237bbca6934a0487a5a3af977268619cff9b15ae /src/server/authserver/Main.cpp | |
parent | af675195df9f8d6e891181d4f48c81b0a65c986f (diff) |
Replace ACE signal handling with Boost
Diffstat (limited to 'src/server/authserver/Main.cpp')
-rw-r--r-- | src/server/authserver/Main.cpp | 44 |
1 files changed, 21 insertions, 23 deletions
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 <ace/Dev_Poll_Reactor.h> #include <ace/TP_Reactor.h> -#include <ace/ACE.h> -#include <ace/Sig_Handler.h> #include <openssl/opensslv.h> #include <openssl/crypto.h> +#include <boost/asio/signal_set.hpp> #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; |