From 3be9e64f7e94acf79812503eab9959a5966da5f8 Mon Sep 17 00:00:00 2001 From: Suraxius Date: Thu, 11 Mar 2021 23:19:07 +0100 Subject: [PATCH] WIP: Work done on EventBus --- src/core/ConfigManager.cpp | 4 +++- src/core/EventBus.cpp | 30 +++++++++++++++++++++++++---- src/core/Logger.cpp | 6 +++--- src/core/include/EventBus.hpp | 36 ++++++++++++++++++++++++++++------- src/core/main.cpp | 12 +++++------- src/resolver/Server.cpp | 1 + 6 files changed, 67 insertions(+), 22 deletions(-) diff --git a/src/core/ConfigManager.cpp b/src/core/ConfigManager.cpp index a279d08..1e5f266 100644 --- a/src/core/ConfigManager.cpp +++ b/src/core/ConfigManager.cpp @@ -13,7 +13,7 @@ ConfigManager::ConfigManager(Logger& logger, vector& parameters) : { // move this to a function that can return an error code? if ( parameters.size() == 0 ) return; - _logger.debug.ln("Interpreting Paremters..."); + _logger.debug.ln ("Loading Configuration..."); /* for (unsigned i = 0; i < (numParameters-1); ++i) { @@ -26,6 +26,8 @@ ConfigManager::ConfigManager(Logger& logger, vector& parameters) : } } */ + + _logger.debug.ln ("Configuration successfully parsed"); } diff --git a/src/core/EventBus.cpp b/src/core/EventBus.cpp index a95db97..61b7aa9 100644 --- a/src/core/EventBus.cpp +++ b/src/core/EventBus.cpp @@ -4,22 +4,44 @@ namespace Plains { namespace Core { -EventBus::EventBus(Logger& logger) : _logger(logger), _thread(&EventBus::run, this) { - _logger.debug.ln("Hi from EventBus Constructor. Not Theaded"); +// EventBus Class + +EventBus::EventBus(Logger& logger) : _logger(logger) { + _logger.debug.ln ("Starting Event Bus..."); + _thread = thread(&EventBus::run, this); } EventBus::~EventBus() { _thread.join(); + // destroy all events in _events vector + _logger.debug.ln ("EventBus has been shut down."); } -void EventBus::test() { - _logger.debug << "Testing from within EventBus!" << Logger::commit; +Event* EventBus::registerEvent(const string eventID) { + _logger.debug << "Registering new Event " << eventID << Logger::commit; + //If event with that id does not exist, create it: + Event* event = new Event(eventID); + _events.push_back(event); + return event; +} + +Event* EventBus::getEvent(const string& eventID) { + _logger.debug.ln("Registering new Event..."); + //Temporarily return nothing: + return NULL; } void EventBus::run() { _logger.debug.ln("Hi from EventBus run method! From within Event Thread!"); } +// Event Class + +Event::Event(const string id) : _id(id) {} + +void Event::subscribe(EventSubscriber* es) { _subscribers.push_back(es); } + + }} diff --git a/src/core/Logger.cpp b/src/core/Logger.cpp index 409a065..1229f05 100644 --- a/src/core/Logger.cpp +++ b/src/core/Logger.cpp @@ -81,11 +81,11 @@ void Logger::Sink::prefixLine(bool resetToFalse) { switch ( _level) { case DEBUG: lvlString = "DEBUG"; break; - case INFO: lvlString = "INFO"; break; - case WARN: lvlString = "WARN"; break; + case INFO: lvlString = "INFO "; break; + case WARN: lvlString = "WARN "; break; case FATAL: lvlString = "FATAL"; break; } - *_parent._output << Logger::genTimeStamp() << " [" << lvlString << "] "; + *_parent._output << Logger::genTimeStamp() << " " << lvlString << " "; _lineIsPrefixed = resetToFalse ? false : true; } } diff --git a/src/core/include/EventBus.hpp b/src/core/include/EventBus.hpp index 2140056..3984267 100644 --- a/src/core/include/EventBus.hpp +++ b/src/core/include/EventBus.hpp @@ -2,23 +2,45 @@ #define EVENT_BUS_HPP #include "Logger.hpp" #include - +#include +#include namespace Plains { namespace Core { using std::thread; +using std::string; +using std::vector; + +class EventSubscriber { + public: + virtual void callback() = 0; +}; + +class Event { + public: + Event(const string _id); + string& getID() const; + void fire(); + void subscribe(EventSubscriber* es); + + private: + const string _id; + vector _subscribers; +}; class EventBus { - private: - Logger& _logger; - //thread* _thread - thread _thread; - public: EventBus(Logger& logger); ~EventBus(); - void test(); + Event* registerEvent(string eventID); + Event* getEvent(const string& eventID); + + private: + Logger& _logger; + thread _thread; + vector _events; + void run(); }; diff --git a/src/core/main.cpp b/src/core/main.cpp index a9430e3..69458d4 100644 --- a/src/core/main.cpp +++ b/src/core/main.cpp @@ -21,15 +21,13 @@ int main(int args, char **argv) { arguments.push_back (argv[index]); } - logger.debug.ln ("Loading Configuration..."); - ConfigManager cfg(logger, arguments); - - logger.debug.ln ("Start Event Bus..."); - EventBus eventBus(logger); - - logger.debug.ln ("Start DNS resolver..."); + ConfigManager cfg(logger, arguments); + EventBus eventBus(logger); Resolver::Server resolver(logger, eventBus); + Event* e = eventBus.registerEvent("Test Event"); + //e->subscribe() + //Record testrec = ARecord(); //logger.debug.ln ("Running DNS resolver..."); //resolver.run(); diff --git a/src/resolver/Server.cpp b/src/resolver/Server.cpp index 3093b85..c1de42e 100644 --- a/src/resolver/Server.cpp +++ b/src/resolver/Server.cpp @@ -53,6 +53,7 @@ Server::Server(Logger& logger, EventBus& eventBus) : _logger(logger), _eventBus(eventBus) { + _logger.debug.ln ("Starting Resolver..."); /* _logger.debug << "Testing some stuff..." << Logger::commit; _logger.debug << "Message header overall size: " << sizeof(Message::Header) << Logger::commit;