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;
|
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;
|
||||||
@@ -38,7 +39,7 @@ int main(int args, char **argv) {
|
|||||||
{
|
{
|
||||||
ConfigManager configManager(logger, arguments);
|
ConfigManager configManager(logger, arguments);
|
||||||
EventBus eventBus(logger);
|
EventBus eventBus(logger);
|
||||||
UI::Server uIServer(logger, eventBus);
|
UI::Server uIServer(logger, eventBus);
|
||||||
Resolver::Server resolver(logger, eventBus);
|
Resolver::Server resolver(logger, eventBus);
|
||||||
|
|
||||||
// Pass objects to global scope for signal handler
|
// Pass objects to global scope for signal handler
|
||||||
@@ -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();
|
||||||
|
}
|
||||||
Reference in new issue
Block a user