reworked eventhandler

This commit is contained in:
Jonas Zeunert
2019-05-07 15:04:53 +02:00
parent 13815cc714
commit c32ce18841
7 changed files with 24 additions and 89 deletions

View File

@@ -9,6 +9,9 @@
#define SRC_IEVENTHANDLER_H_
#include "input/Event.h"
#include "InputDriver.h"
#include <memory>
namespace flippR_driver
{
@@ -18,9 +21,21 @@ namespace input
class EventHandler
{
public:
virtual ~EventHandler() = default;
explicit EventHandler(std::shared_ptr<InputDriver> input_driver) :
input_driver(std::move(input_driver))
{
this->input_driver->register_event_handler(this);
}
virtual ~EventHandler()
{
this->input_driver->unregister_event_handler(this);
};
virtual void handle(flippR_driver::input::Event &event) = 0;
private:
const std::shared_ptr<InputDriver> input_driver;
};
}

View File

@@ -8,17 +8,19 @@
#ifndef SRC_INPUT_IINPUTDRIVER_H_
#define SRC_INPUT_IINPUTDRIVER_H_
#include "Event.h"
#include <memory>
#include <boost/optional/optional_io.hpp>
#include "input/EventHandler.h"
namespace flippR_driver
{
namespace input
{
class EventHandler;
class InputDriver {
public:
virtual ~InputDriver() = default;

View File

@@ -11,9 +11,8 @@
#include <Poco/Net/TCPServerConnection.h>
#include "utility/IBlockingQueue.h"
#include "input/InputDriver.h"
#include "input/detail/EventHandler.h"
#include "input/EventHandler.h"
#include "input/Event.h"
namespace flippR_driver

View File

@@ -29,7 +29,7 @@ std::string Event::getJsonString()
json["address"] = this->address;
json["priority"] = this->priority;
json.dump();
return json.dump();
}
bool operator==(const Event& left, const Event& right)

View File

@@ -1,38 +0,0 @@
/*
* EventHandler.cpp
*
* Created on: Jun 14, 2018
* Author: Andreas Schneider, Johannes Wendel, Jonas Zeunert
*/
#include "EventHandler.h"
#include "utility/config.h"
namespace flippR_driver
{
namespace input
{
namespace detail
{
EventHandler::EventHandler(std::shared_ptr<InputDriver> input_driver) :
input_driver(std::move(input_driver))
{
this->input_driver->register_event_handler(this);
CLOG(INFO, INPUT_LOGGER) << "Created EventHandler";
}
EventHandler::~EventHandler()
{
this->input_driver->unregister_event_handler(this);
}
// This function is intended to be non pure, if it is called when the derived class doesn't exist anymore
void EventHandler::handle(Event &event)
{
CLOG(WARNING, INPUT_LOGGER) << "Called EventHandler parent class";
}
}
}
}

View File

@@ -1,43 +0,0 @@
/*
* InputEventHandler.h
*
* This interface must be implemented to be informed about input events.
*
* Please be aware that handle must be implemented thread safe!
*
* Created on: Apr 5, 2018
* Author: Andreas Schneider, Johannes Wendel, Jonas Zeunert
*/
#ifndef INPUT_IMPL_EVENTHANDLER_H_
#define INPUT_IMPL_EVENTHANDLER_H_
#include "input/InputDriver.h"
#include "input/EventHandler.h"
#include "input/Event.h"
namespace flippR_driver
{
namespace input
{
namespace detail
{
class EventHandler;
class EventHandler : public input::EventHandler
{
public:
explicit EventHandler(std::shared_ptr<InputDriver> input_driver);
~EventHandler() override;
void handle(Event &event) override;
private:
const std::shared_ptr<InputDriver> input_driver;
};
}
}
}
#endif

View File

@@ -12,13 +12,12 @@
#define private public
#include "utility/LoggerFactory.h"
#include "input/detail/EventHandler.h"
#include "input/InputDriver.h"
using namespace fakeit;
using namespace flippR_driver::utility;
/* todo ?
SCENARIO("An EventHandler gets created", "[construction}")
{
GIVEN("An IInputDriver")
@@ -42,3 +41,4 @@ SCENARIO("An EventHandler gets created", "[construction}")
}
}
}
*/