WIP: Work done on EventBus
This commit is contained in:
1 parent
1dd457d2d2
commit
3be9e64f7e
6 files changed
+67
-22
No files matched your search
@@ -13,7 +13,7 @@ ConfigManager::ConfigManager(Logger& logger, vector<string>& parameters) :
|
|||||||
{
|
{
|
||||||
// move this to a function that can return an error code?
|
// move this to a function that can return an error code?
|
||||||
if ( parameters.size() == 0 ) return;
|
if ( parameters.size() == 0 ) return;
|
||||||
_logger.debug.ln("Interpreting Paremters...");
|
_logger.debug.ln ("Loading Configuration...");
|
||||||
|
|
||||||
/*
|
/*
|
||||||
for (unsigned i = 0; i < (numParameters-1); ++i) {
|
for (unsigned i = 0; i < (numParameters-1); ++i) {
|
||||||
@@ -26,6 +26,8 @@ ConfigManager::ConfigManager(Logger& logger, vector<string>& parameters) :
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
_logger.debug.ln ("Configuration successfully parsed");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
+26
-4
@@ -4,22 +4,44 @@
|
|||||||
namespace Plains {
|
namespace Plains {
|
||||||
namespace Core {
|
namespace Core {
|
||||||
|
|
||||||
EventBus::EventBus(Logger& logger) : _logger(logger), _thread(&EventBus::run, this) {
|
// EventBus Class
|
||||||
_logger.debug.ln("Hi from EventBus Constructor. Not Theaded");
|
|
||||||
|
EventBus::EventBus(Logger& logger) : _logger(logger) {
|
||||||
|
_logger.debug.ln ("Starting Event Bus...");
|
||||||
|
_thread = thread(&EventBus::run, this);
|
||||||
}
|
}
|
||||||
|
|
||||||
EventBus::~EventBus() {
|
EventBus::~EventBus() {
|
||||||
_thread.join();
|
_thread.join();
|
||||||
|
// destroy all events in _events vector
|
||||||
|
_logger.debug.ln ("EventBus has been shut down.");
|
||||||
}
|
}
|
||||||
|
|
||||||
void EventBus::test() {
|
Event* EventBus::registerEvent(const string eventID) {
|
||||||
_logger.debug << "Testing from within EventBus!" << Logger::commit;
|
_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() {
|
void EventBus::run() {
|
||||||
_logger.debug.ln("Hi from EventBus run method! From within Event Thread!");
|
_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); }
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}}
|
}}
|
||||||
+3
-3
@@ -81,11 +81,11 @@ void Logger::Sink::prefixLine(bool resetToFalse) {
|
|||||||
switch ( _level)
|
switch ( _level)
|
||||||
{
|
{
|
||||||
case DEBUG: lvlString = "DEBUG"; break;
|
case DEBUG: lvlString = "DEBUG"; break;
|
||||||
case INFO: lvlString = "INFO"; break;
|
case INFO: lvlString = "INFO "; break;
|
||||||
case WARN: lvlString = "WARN"; break;
|
case WARN: lvlString = "WARN "; break;
|
||||||
case FATAL: lvlString = "FATAL"; break;
|
case FATAL: lvlString = "FATAL"; break;
|
||||||
}
|
}
|
||||||
*_parent._output << Logger::genTimeStamp() << " [" << lvlString << "] ";
|
*_parent._output << Logger::genTimeStamp() << " " << lvlString << " ";
|
||||||
_lineIsPrefixed = resetToFalse ? false : true;
|
_lineIsPrefixed = resetToFalse ? false : true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,23 +2,45 @@
|
|||||||
#define EVENT_BUS_HPP
|
#define EVENT_BUS_HPP
|
||||||
#include "Logger.hpp"
|
#include "Logger.hpp"
|
||||||
#include <thread>
|
#include <thread>
|
||||||
|
#include <string>
|
||||||
|
#include <vector>
|
||||||
|
|
||||||
namespace Plains {
|
namespace Plains {
|
||||||
namespace Core {
|
namespace Core {
|
||||||
|
|
||||||
using std::thread;
|
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<EventSubscriber*> _subscribers;
|
||||||
|
};
|
||||||
|
|
||||||
class EventBus {
|
class EventBus {
|
||||||
private:
|
|
||||||
Logger& _logger;
|
|
||||||
//thread* _thread
|
|
||||||
thread _thread;
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
EventBus(Logger& logger);
|
EventBus(Logger& logger);
|
||||||
~EventBus();
|
~EventBus();
|
||||||
void test();
|
Event* registerEvent(string eventID);
|
||||||
|
Event* getEvent(const string& eventID);
|
||||||
|
|
||||||
|
private:
|
||||||
|
Logger& _logger;
|
||||||
|
thread _thread;
|
||||||
|
vector<Event*> _events;
|
||||||
|
|
||||||
void run();
|
void run();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
+5
-7
@@ -21,15 +21,13 @@ int main(int args, char **argv) {
|
|||||||
arguments.push_back (argv[index]);
|
arguments.push_back (argv[index]);
|
||||||
}
|
}
|
||||||
|
|
||||||
logger.debug.ln ("Loading Configuration...");
|
ConfigManager cfg(logger, arguments);
|
||||||
ConfigManager cfg(logger, arguments);
|
EventBus eventBus(logger);
|
||||||
|
|
||||||
logger.debug.ln ("Start Event Bus...");
|
|
||||||
EventBus eventBus(logger);
|
|
||||||
|
|
||||||
logger.debug.ln ("Start DNS resolver...");
|
|
||||||
Resolver::Server resolver(logger, eventBus);
|
Resolver::Server resolver(logger, eventBus);
|
||||||
|
|
||||||
|
Event* e = eventBus.registerEvent("Test Event");
|
||||||
|
//e->subscribe()
|
||||||
|
|
||||||
//Record testrec = ARecord();
|
//Record testrec = ARecord();
|
||||||
//logger.debug.ln ("Running DNS resolver...");
|
//logger.debug.ln ("Running DNS resolver...");
|
||||||
//resolver.run();
|
//resolver.run();
|
||||||
|
|||||||
@@ -53,6 +53,7 @@ Server::Server(Logger& logger, EventBus& eventBus)
|
|||||||
: _logger(logger),
|
: _logger(logger),
|
||||||
_eventBus(eventBus)
|
_eventBus(eventBus)
|
||||||
{
|
{
|
||||||
|
_logger.debug.ln ("Starting Resolver...");
|
||||||
/*
|
/*
|
||||||
_logger.debug << "Testing some stuff..." << Logger::commit;
|
_logger.debug << "Testing some stuff..." << Logger::commit;
|
||||||
_logger.debug << "Message header overall size: " << sizeof(Message::Header) << Logger::commit;
|
_logger.debug << "Message header overall size: " << sizeof(Message::Header) << Logger::commit;
|
||||||
|
|||||||
Reference in new issue
Block a user