Adds better signal handling for quitting

This commit is contained in:
Sven Luethi committed 2021-04-09 17:15:34 +02:00
1 parent f90347b753
commit 4959429aee
1 file changed
+15 -7
+15 -7
View File
@@ -13,6 +13,7 @@ using std::vector;
using std::string; using std::string;
void signalHandler( int ); void signalHandler( int );
void shutdown();
// Provide global hooks for signal handler // Provide global hooks for signal handler
Logger* globalLogger; Logger* globalLogger;
@@ -78,14 +79,17 @@ int main(int args, char **argv) {
} }
catch (Exception& e) { catch (Exception& e) {
logger.fatal << "Uncaught Exception: " << e.what() << Logger::commit; logger.fatal << "Uncaught Exception: " << e.what() << Logger::commit;
shutdown();
return 1; return 1;
} }
catch (std::system_error& e) { catch (std::system_error& e) {
logger.fatal << "Uncaught system_error exception: " << e.what() << Logger::commit; logger.fatal << "Uncaught system_error exception: " << e.what() << Logger::commit;
shutdown();
return 1; return 1;
} }
catch (int e) { catch (int e) {
logger.fatal << "Uncaught Exception with error code " << e << Logger::commit; logger.fatal << "Uncaught Exception with error code " << e << Logger::commit;
shutdown();
return 1; return 1;
} }
return 0; return 0;
@@ -97,16 +101,20 @@ void signalHandler( int signalNumber ) {
static auto firstCall = true; static auto firstCall = true;
if(firstCall) { if(firstCall) {
firstCall = false; firstCall = false;
globalLogger->warn << "Shutting down Plains..." << Logger::commit; shutdown();
globalResolver->~Server();
//globalUIServer->~Server();
globalEventBus->~EventBus();
globalConfigManager->~ConfigManager();
globalLogger->info.ln ("PLAINS shut down.");
globalLogger->~Logger();
exit(0); exit(0);
} }
else exit(1);
break; 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();
}