refactored input names and created facade

This commit is contained in:
Jonas Zeunert
2018-05-31 17:01:07 +02:00
parent 2bef8b6f2d
commit 2321f2997f
10 changed files with 36 additions and 17 deletions

View File

@@ -0,0 +1,59 @@
/*
* InputEventNotifier.cpp
*
* Created on: May 17, 2018
* Author: Andreas Schneider, Johannes Wendel, Jonas Zeunert, Rafael Vinci, Dr. Franca Rupprecht
*/
#include "EventNotifier.h"
namespace Input
{
InputEventNotifier::InputEventNotifier()
: is_running(true)
{
notify_thread = std::thread(&InputEventNotifier::notify, this);
}
InputEventNotifier::~InputEventNotifier()
{
is_running = false;
notify_thread.join();
}
void InputEventNotifier::register_input_event_handler(InputEventHandler* handler)
{
std::lock_guard<std::mutex> event_handler_guard(event_handler_mutex);
event_handler.insert(handler);
}
void InputEventNotifier::unregister_input_event_handler(InputEventHandler* handler)
{
std::lock_guard<std::mutex> event_handler_guard(event_handler_mutex);
event_handler.erase(handler);
}
void InputEventNotifier::distribute_event(InputEvent& event)
{
event_queue.push(event);
}
void InputEventNotifier::notify()
{
while(is_running)
{
InputEvent event = event_queue.pop();
// getting a guard and calling all registered handlers
std::lock_guard<std::mutex> event_handler_guard(event_handler_mutex);
for(auto handler : event_handler)
{
// todo timeout!
handler->handle(event);
}
}
}
}