Browse Source

Make Narrator a base class of EventHandler class

Patrick-Christopher Mattulat 3 years ago
parent
commit
bc671825e0

+ 2 - 9
include/ls_std/event/EventHandler.hpp

@@ -15,27 +15,20 @@
 #include <memory>
 #include <ls_std/logic/IListener.hpp>
 #include "Event.hpp"
+#include <ls_std/logic/Narrator.hpp>
 
 namespace ls_std {
-  class EventHandler : public ls_std::Class {
+  class EventHandler : public ls_std::Narrator {
     public:
 
       explicit EventHandler(ls_std::event_id  _id);
       ~EventHandler() override = default;
 
-      void addListener(const std::shared_ptr<ls_std::IListener>& _listener);
       ls_std::event_id getId();
-      void notify(const ls_std::Event& _event);
-      void removeListener(const std::shared_ptr<ls_std::IListener>& _listener);
 
     private:
 
       ls_std::event_id id {};
-      std::list<std::shared_ptr<ls_std::IListener>> listeners {};
-
-      void _addListener(const std::shared_ptr<ls_std::IListener>& _listener);
-      bool _hasListener(const std::shared_ptr<ls_std::IListener>& _listener);
-      void _removeListener(const std::shared_ptr<ls_std::IListener>& _listener);
   };
 }
 

+ 1 - 45
source/ls_std/event/EventHandler.cpp

@@ -9,55 +9,11 @@
 
 #include <ls_std/event/EventHandler.hpp>
 
-ls_std::EventHandler::EventHandler(ls_std::event_id  _id) : ls_std::Class("EventHandler"),
+ls_std::EventHandler::EventHandler(ls_std::event_id  _id) : ls_std::Narrator(),
 id(std::move(_id))
 {}
 
-void ls_std::EventHandler::addListener(const std::shared_ptr<ls_std::IListener> &_listener)
-{
-  if(!this->_hasListener(_listener)) {
-    this->_addListener(_listener);
-  }
-}
-
 ls_std::event_id ls_std::EventHandler::getId()
 {
   return this->id;
 }
-
-void ls_std::EventHandler::notify(const ls_std::Event &_event)
-{
-  for(const auto& listener : this->listeners) {
-    listener->listen(_event);
-  }
-}
-
-void ls_std::EventHandler::removeListener(const std::shared_ptr<ls_std::IListener> &_listener)
-{
-  this->_removeListener(_listener);
-}
-
-void ls_std::EventHandler::_addListener(const std::shared_ptr<ls_std::IListener> &_listener)
-{
-  this->listeners.push_back(_listener);
-}
-
-bool ls_std::EventHandler::_hasListener(const std::shared_ptr<ls_std::IListener>& _listener)
-{
-  bool exists {};
-
-  for(const auto& listener : this->listeners) {
-    if(listener == _listener) {
-      exists = true;
-      break;
-    }
-  }
-
-  return exists;
-}
-
-void ls_std::EventHandler::_removeListener(const std::shared_ptr<ls_std::IListener> &_listener)
-{
-  this->listeners.remove(_listener);
-  this->listeners.size();
-}

+ 2 - 2
source/ls_std/event/EventManager.cpp

@@ -3,7 +3,7 @@
  * Company:         Lynar Studios
  * E-Mail:          webmaster@lynarstudios.com
  * Created:         2020-11-27
- * Changed:         2020-11-27
+ * Changed:         2020-11-28
  *
  * */
 
@@ -23,7 +23,7 @@ void ls_std::EventManager::addEventHandler(const std::shared_ptr<ls_std::EventHa
 void ls_std::EventManager::fire(ls_std::Event _event)
 {
   if(this->_hasEventHandler(_event.getId())) {
-    this->eventHandlers.at(_event.getId())->notify(_event);
+    this->eventHandlers.at(_event.getId())->tell(_event);
   }
 }
 

+ 6 - 12
test/cases/event/EventHandlerTest.cpp

@@ -3,7 +3,7 @@
  * Company:         Lynar Studios
  * E-Mail:          webmaster@lynarstudios.com
  * Created:         2020-11-27
- * Changed:         2020-11-27
+ * Changed:         2020-11-28
  *
  * */
 
@@ -25,12 +25,6 @@ namespace {
       {}
   };
 
-  TEST_F(EventHandlerTest, getClassName)
-  {
-    ls_std::EventHandler eventHandler {"EventId"};
-    ASSERT_STREQ("EventHandler", eventHandler.getClassName().c_str());
-  }
-
   TEST_F(EventHandlerTest, getId)
   {
     ls_std::EventHandler eventHandler {"EventId"};
@@ -63,7 +57,7 @@ namespace {
 
     // fire SeriousNewsEvent event with no effect
 
-    seriousNewsEventHandler->notify(ls_std_test::SeriousNewsEvent(news)); // event call
+    seriousNewsEventHandler->tell(ls_std_test::SeriousNewsEvent(news)); // event call
     ASSERT_TRUE(dailyNews->getNews().empty());
     ASSERT_TRUE(gossipNews->getNews().empty());
 
@@ -72,7 +66,7 @@ namespace {
     dailyNews->subscribe(seriousNewsEventId);
     gossipNews->subscribe(seriousNewsEventId);
     news = "COVID-19 is still going on!";
-    seriousNewsEventHandler->notify(ls_std_test::SeriousNewsEvent(news)); // event call
+    seriousNewsEventHandler->tell(ls_std_test::SeriousNewsEvent(news)); // event call
 
     expectedNews = "DailyNewsAgency: " + news;
     ASSERT_STREQ(expectedNews.c_str(), dailyNews->getNews().c_str());
@@ -85,7 +79,7 @@ namespace {
     // unsubscribe SeriousNewsEvent from GossipNewsAgency
 
     gossipNews->unsubscribe(seriousNewsEventId);
-    seriousNewsEventHandler->notify(ls_std_test::SeriousNewsEvent(news)); // event call
+    seriousNewsEventHandler->tell(ls_std_test::SeriousNewsEvent(news)); // event call
 
     expectedNews = "DailyNewsAgency: " + news;
     ASSERT_STREQ(expectedNews.c_str(), dailyNews->getNews().c_str());
@@ -100,12 +94,12 @@ namespace {
     gossipNews->subscribe(seriousNewsEventId);
 
     news = "COVID-19 is still going on!";
-    seriousNewsEventHandler->notify(ls_std_test::SeriousNewsEvent(news));
+    seriousNewsEventHandler->tell(ls_std_test::SeriousNewsEvent(news));
     expectedNews = "GossipNewsAgency: " + news;
     ASSERT_STREQ(expectedNews.c_str(), gossipNews->getNews().c_str());
 
     news = "ape likes banana!";
-    seriousNewsEventHandler->notify(ls_std_test::GossipNewsEvent(news));
+    seriousNewsEventHandler->tell(ls_std_test::GossipNewsEvent(news));
     expectedNews = "GossipNewsAgency: " + news;
     ASSERT_STREQ(expectedNews.c_str(), gossipNews->getNews().c_str());
   }