This commit is contained in:
Sven Luethi committed 2021-04-07 15:12:47 +02:00
1 parent 0856548414
commit 5c297f5877
2 files changed
+39 -7

No files matched your search

+4 -1
View File
@@ -39,7 +39,10 @@ Event& EventBus::registerEvent(const string& eventID) {
} }
void EventBus::run() { void EventBus::run() {
_logger.warn.ln("Hi from EventBus run method, from within Event Thread!"); while (true) {
std::this_thread::sleep_for(std::chrono::seconds(5));
_logger.warn.ln("EventBus: Looping...");
}
} }
// =============================== Event Class ================================ // =============================== Event Class ================================
+35 -6
View File
@@ -5,12 +5,20 @@
#include <vector> #include <vector>
#include <string> #include <string>
#include <exception> #include <exception>
#include <csignal>
using namespace Plains; using namespace Plains;
using namespace Core; using namespace Core;
using std::vector; using std::vector;
using std::string; using std::string;
void signalHandler( int );
Logger* globalLogger;
ConfigManager* globalConfigManager;
EventBus* globalEventBus;
UI::Server* globalUIServer;
Resolver::Server* globalResolver;
int main(int args, char **argv) { int main(int args, char **argv) {
Logger logger(Logger::DEBUG); Logger logger(Logger::DEBUG);
@@ -22,13 +30,23 @@ int main(int args, char **argv) {
arguments.push_back (argv[index]); arguments.push_back (argv[index]);
} }
// Handle signals
signal(SIGINT, signalHandler);
try try
{ {
ConfigManager cfg(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
globalLogger = &logger;
globalConfigManager = &configManager;
globalEventBus = &eventBus;
globalUIServer = &uIServer;
globalResolver = &resolver;
/* /*
// Some test code below: // Some test code below:
class Testi : public EventSubscriber { class Testi : public EventSubscriber {
@@ -56,10 +74,6 @@ int main(int args, char **argv) {
eventBus.run(); eventBus.run();
logger.info.ln ("PLAINS successfully started."); logger.info.ln ("PLAINS successfully started.");
// Run something on main thread...
//std::this_thread::sleep_for(std::chrono::seconds(15));
//std::cin.get();
logger.info.ln ("Shutting down PLAINS. Good Bye!");
} }
catch (Exception& e) { catch (Exception& e) {
logger.fatal << "Uncaught Exception: " << e.what() << Logger::commit; logger.fatal << "Uncaught Exception: " << e.what() << Logger::commit;
@@ -76,3 +90,18 @@ int main(int args, char **argv) {
return 0; return 0;
} }
void signalHandler( int signalNumber ) {
switch(signalNumber) {
case SIGINT:
globalLogger->warn << "Shutting down Plains..." << Logger::commit;
globalResolver->~Server();
globalUIServer->~Server();
globalEventBus->~EventBus();
globalConfigManager->~ConfigManager();
globalLogger->info.ln ("PLAINS shut down.");
globalLogger->~Logger();
exit(0);
break;
}
}