Bladeren bron

Harden security within event module

Patrick-Christopher Mattulat 1 dag geleden
bovenliggende
commit
241be914a0
2 gewijzigde bestanden met toevoegingen van 12 en 12 verwijderingen
  1. 5 5
      source/ls-std/event/EventListener.cpp
  2. 7 7
      source/ls-std/event/EventManager.cpp

+ 5 - 5
source/ls-std/event/EventListener.cpp

@@ -3,7 +3,7 @@
 * Company:         Lynar Studios
 * E-Mail:          webmaster@lynarstudios.com
 * Created:         2024-05-16
-* Changed:         2024-05-30
+* Changed:         2025-12-21
 *
 * */
 
@@ -32,7 +32,7 @@ listener_id EventListener::getId() const
   return this->id;
 }
 
-void EventListener::setId(listener_id _id)
+void EventListener::setId(const listener_id _id)
 {
   this->id = _id;
 }
@@ -58,7 +58,7 @@ bool EventListener::unsubscribe(const Event &_event)
 
 void EventListener::_requestListenerId(const shared_ptr<Class> &_manager)
 {
-  shared_ptr<EventManager> manager = dynamic_pointer_cast<EventManager>(_manager);
+  const shared_ptr<EventManager> manager = dynamic_pointer_cast<EventManager>(_manager);
 
   if (this->id == 0)
   {
@@ -70,7 +70,7 @@ bool EventListener::_subscribe(const Event &_event, const event_action &_action)
 {
   bool subscribed{};
 
-  if (shared_ptr<EventManager> manager = dynamic_pointer_cast<EventManager>(_event.getManager()); !manager->holdsListenerForEvent(this->id, _event))
+  if (const shared_ptr<EventManager> manager = dynamic_pointer_cast<EventManager>(_event.getManager()); !manager->holdsListenerForEvent(this->id, _event))
   {
     manager->subscribeListenerForEvent(shared_from_this(), _event, _action);
     subscribed = manager->holdsListenerForEvent(this->id, _event);
@@ -83,7 +83,7 @@ bool EventListener::_unsubscribe(const Event &_event)
 {
   bool unsubscribed{};
 
-  if (shared_ptr<EventManager> manager = dynamic_pointer_cast<EventManager>(_event.getManager()); manager->holdsListenerForEvent(this->id, _event))
+  if (const shared_ptr<EventManager> manager = dynamic_pointer_cast<EventManager>(_event.getManager()); manager->holdsListenerForEvent(this->id, _event))
   {
     manager->unsubscribeListenerForEvent(shared_from_this(), _event);
     unsubscribed = !manager->holdsListenerForEvent(this->id, _event);

+ 7 - 7
source/ls-std/event/EventManager.cpp

@@ -3,7 +3,7 @@
 * Company:         Lynar Studios
 * E-Mail:          webmaster@lynarstudios.com
 * Created:         2024-05-16
-* Changed:         2024-05-30
+* Changed:         2025-12-21
 *
 * */
 
@@ -34,7 +34,7 @@ listener_id EventManager::getNextProvisionId() const
   return this->provisionId;
 }
 
-bool EventManager::holdsListenerForEvent(listener_id _id, const Event &_event)
+bool EventManager::holdsListenerForEvent(const listener_id _id, const Event &_event)
 {
   bool holdsListener{};
 
@@ -73,13 +73,13 @@ void EventManager::invoke(const Event &_event, const EventParameter &_parameter)
   }
 
   const auto &listeners = this->inventory[_event.getClassName()];
-  EventManager::_giveListenersParameter(listeners, _parameter);
-  EventManager::_notifyListeners(listeners);
+  _giveListenersParameter(listeners, _parameter);
+  _notifyListeners(listeners);
 }
 
 listener_id EventManager::requestListenerId()
 {
-  listener_id providedId = this->provisionId;
+  const listener_id providedId = this->provisionId;
   ++this->provisionId;
 
   return providedId;
@@ -92,7 +92,7 @@ void EventManager::subscribeListenerForEvent(shared_ptr<EventListener> _listener
     this->inventory[_event.getClassName()] = {};
   }
 
-  auto inventoryEntry = make_pair<shared_ptr<EventListener>, event_action>(::move(_listener), ::move(_action));
+  const auto inventoryEntry = make_pair<shared_ptr<EventListener>, event_action>(::move(_listener), ::move(_action));
   this->inventory[_event.getClassName()].push_back(inventoryEntry);
 }
 
@@ -100,7 +100,7 @@ void EventManager::unsubscribeListenerForEvent(const shared_ptr<EventListener> &
 {
   if (this->_observesEvent(_event))
   {
-    for (auto iterator = this->inventory[_event.getClassName()].begin(); iterator != this->inventory[_event.getClassName()].end(); iterator++)
+    for (auto iterator = this->inventory[_event.getClassName()].begin(); iterator != this->inventory[_event.getClassName()].end(); ++iterator)
     {
       if (iterator->first->getId() == _listener->getId())
       {