Adds better signal handling for quitting
This commit is contained in:
1 parent
f90347b753
commit
4959429aee
1 file changed
+16
-8
+16
-8
@@ -13,6 +13,7 @@ using std::vector;
|
||||
using std::string;
|
||||
|
||||
void signalHandler( int );
|
||||
void shutdown();
|
||||
|
||||
// Provide global hooks for signal handler
|
||||
Logger* globalLogger;
|
||||
@@ -38,7 +39,7 @@ int main(int args, char **argv) {
|
||||
{
|
||||
ConfigManager configManager(logger, arguments);
|
||||
EventBus eventBus(logger);
|
||||
UI::Server uIServer(logger, eventBus);
|
||||
UI::Server uIServer(logger, eventBus);
|
||||
Resolver::Server resolver(logger, eventBus);
|
||||
|
||||
// Pass objects to global scope for signal handler
|
||||
@@ -78,14 +79,17 @@ int main(int args, char **argv) {
|
||||
}
|
||||
catch (Exception& e) {
|
||||
logger.fatal << "Uncaught Exception: " << e.what() << Logger::commit;
|
||||
shutdown();
|
||||
return 1;
|
||||
}
|
||||
catch (std::system_error& e) {
|
||||
logger.fatal << "Uncaught system_error exception: " << e.what() << Logger::commit;
|
||||
shutdown();
|
||||
return 1;
|
||||
}
|
||||
catch (int e) {
|
||||
logger.fatal << "Uncaught Exception with error code " << e << Logger::commit;
|
||||
shutdown();
|
||||
return 1;
|
||||
}
|
||||
return 0;
|
||||
@@ -97,16 +101,20 @@ void signalHandler( int signalNumber ) {
|
||||
static auto firstCall = true;
|
||||
if(firstCall) {
|
||||
firstCall = false;
|
||||
globalLogger->warn << "Shutting down Plains..." << Logger::commit;
|
||||
globalResolver->~Server();
|
||||
//globalUIServer->~Server();
|
||||
globalEventBus->~EventBus();
|
||||
globalConfigManager->~ConfigManager();
|
||||
globalLogger->info.ln ("PLAINS shut down.");
|
||||
globalLogger->~Logger();
|
||||
shutdown();
|
||||
exit(0);
|
||||
}
|
||||
else exit(1);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void shutdown() {
|
||||
globalLogger->warn << "Shutting down Plains..." << Logger::commit;
|
||||
globalResolver->~Server();
|
||||
globalUIServer->~Server();
|
||||
globalEventBus->~EventBus();
|
||||
globalConfigManager->~ConfigManager();
|
||||
globalLogger->info.ln ("PLAINS shut down.");
|
||||
globalLogger->~Logger();
|
||||
}
|
||||
Reference in new issue
Block a user