Core/Mains: Handle SIGBREAK to achieve clean shutdown when users click X button on windows

This commit is contained in:
Shauren
2014-07-23 19:04:07 +02:00
parent a7476a7898
commit 42eeec12bf
2 changed files with 10 additions and 20 deletions

View File

@@ -120,6 +120,9 @@ int main(int argc, char** argv)
// Set signal handlers
boost::asio::signal_set signals(_ioService, SIGINT, SIGTERM);
#if PLATFORM == PLATFORM_WINDOWS
signals.add(SIGBREAK);
#endif
signals.async_wait(SignalHandler);
// Set process priority according to configuration settings
@@ -186,18 +189,10 @@ void StopDB()
MySQL::Library_End();
}
void SignalHandler(const boost::system::error_code& error, int signalNumber)
void SignalHandler(const boost::system::error_code& error, int /*signalNumber*/)
{
if (!error)
{
switch (signalNumber)
{
case SIGINT:
case SIGTERM:
_ioService.stop();
break;
}
}
_ioService.stop();
}
void KeepDatabaseAliveHandler(const boost::system::error_code& error)