diff options
author | WBoerenkamps <wrj.boerenkamps@student.avans.nl> | 2024-10-25 21:14:09 +0200 |
---|---|---|
committer | WBoerenkamps <wrj.boerenkamps@student.avans.nl> | 2024-10-25 21:14:09 +0200 |
commit | 26bb39991aaebe3b7ef8869f217db490143bc0e6 (patch) | |
tree | e3ec5530e298257ef347f996f0a2c5a150d099f7 /mwe/events/src/eventManager.cpp | |
parent | 15a4c4a1cf67e13be53ef423c51c56488f332ea9 (diff) |
merge conflicts fixed
Diffstat (limited to 'mwe/events/src/eventManager.cpp')
-rw-r--r-- | mwe/events/src/eventManager.cpp | 152 |
1 files changed, 0 insertions, 152 deletions
diff --git a/mwe/events/src/eventManager.cpp b/mwe/events/src/eventManager.cpp index e022849..c37dcb0 100644 --- a/mwe/events/src/eventManager.cpp +++ b/mwe/events/src/eventManager.cpp @@ -1,6 +1,5 @@ #include "eventManager.h" -<<<<<<< HEAD void EventManager::shutdown() { subscribers.clear(); @@ -96,155 +95,4 @@ void EventManager::dispatchEvents() ++eventIt; } } -======= -void EventManager::shutdown() { m_subscribers.clear(); } - -void EventManager::subscribe(int eventType, - std::unique_ptr<IEventHandlerWrapper> && handler, - int eventId) { - if (eventId) { - std::unordered_map< - int, std::unordered_map< - int, std::vector<std::unique_ptr<IEventHandlerWrapper>>>>:: - iterator subscribers - = m_subscribersByEventId.find(eventType); - - if (subscribers != m_subscribersByEventId.end()) { - std::unordered_map< - int, std::vector<std::unique_ptr<IEventHandlerWrapper>>> & - handlersMap - = subscribers->second; - std::unordered_map< - int, - std::vector<std::unique_ptr<IEventHandlerWrapper>>>::iterator - handlers - = handlersMap.find(eventId); - if (handlers != handlersMap.end()) { - handlers->second.emplace_back(std::move(handler)); - return; - } - } - m_subscribersByEventId[eventType][eventId].emplace_back( - std::move(handler)); - - } else { - std::unordered_map< - int, std::vector<std::unique_ptr<IEventHandlerWrapper>>>::iterator - subscribers - = m_subscribers.find(eventType); - if (subscribers != m_subscribers.end()) { - std::vector<std::unique_ptr<IEventHandlerWrapper>> & handlers - = subscribers->second; - for (std::unique_ptr<IEventHandlerWrapper> & it : handlers) { - if (it->getType() == handler->getType()) { - // log for double register - return; - } - } - handlers.emplace_back(std::move(handler)); - } else { - m_subscribers[eventType].emplace_back(std::move(handler)); - } - } -} - -void EventManager::unsubscribe(int eventType, const std::string & handlerName, - int eventId) { - if (eventId) { - std::unordered_map< - int, std::unordered_map< - int, std::vector<std::unique_ptr<IEventHandlerWrapper>>>>:: - iterator subscribers - = m_subscribersByEventId.find(eventType); - if (subscribers != m_subscribersByEventId.end()) { - std::unordered_map< - int, std::vector<std::unique_ptr<IEventHandlerWrapper>>> & - handlersMap - = subscribers->second; - std::unordered_map< - int, - std::vector<std::unique_ptr<IEventHandlerWrapper>>>::iterator - handlers - = handlersMap.find(eventId); - if (handlers != handlersMap.end()) { - std::vector<std::unique_ptr<IEventHandlerWrapper>> & callbacks - = handlers->second; - for (std::vector< - std::unique_ptr<IEventHandlerWrapper>>::iterator it - = callbacks.begin(); - it != callbacks.end(); ++it) { - if (it->get()->getType() == handlerName) { - it = callbacks.erase(it); - return; - } - } - } - } - } else { - std::unordered_map< - int, std::vector<std::unique_ptr<IEventHandlerWrapper>>>::iterator - handlersIt - = m_subscribers.find(eventType); - if (handlersIt != m_subscribers.end()) { - std::vector<std::unique_ptr<IEventHandlerWrapper>> & handlers - = handlersIt->second; - for (std::vector<std::unique_ptr<IEventHandlerWrapper>>::iterator it - = handlers.begin(); - it != handlers.end(); ++it) { - if (it->get()->getType() == handlerName) { - it = handlers.erase(it); - return; - } - } - } - } -} - -void EventManager::triggerEvent(const Event & event_, int eventId) { - std::vector<std::unique_ptr<IEventHandlerWrapper>> & handlers - = m_subscribers[event_.getEventType()]; - for (std::unique_ptr<IEventHandlerWrapper> & handler : handlers) { - handler->exec(event_); - } - - std::unordered_map< - int, std::vector<std::unique_ptr<IEventHandlerWrapper>>> & handlersMap - = m_subscribersByEventId[event_.getEventType()]; - std::unordered_map< - int, std::vector<std::unique_ptr<IEventHandlerWrapper>>>::iterator - handlersIt - = handlersMap.find(eventId); - if (handlersIt != handlersMap.end()) { - std::vector<std::unique_ptr<IEventHandlerWrapper>> & callbacks - = handlersIt->second; - for (std::vector<std::unique_ptr<IEventHandlerWrapper>>::iterator it - = callbacks.begin(); - it != callbacks.end();) { - std::unique_ptr<IEventHandlerWrapper> & handler = *it; - handler->exec(event_); - if (handler->isDestroyOnSuccess()) { - it = callbacks.erase(it); - } else { - ++it; - } - } - } -} - -void EventManager::queueEvent(std::unique_ptr<Event> && event_, int eventId) { - m_eventsQueue.emplace_back(std::move(event_), eventId); -} - -void EventManager::dispatchEvents() { - for (std::vector<std::pair<std::unique_ptr<Event>, int>>::iterator eventIt - = m_eventsQueue.begin(); - eventIt != m_eventsQueue.end();) { - if (!eventIt->first.get()->getHandled()) { - triggerEvent(*eventIt->first.get(), eventIt->second); - eventIt = m_eventsQueue.erase(eventIt); - } else { - ++eventIt; - } - } ->>>>>>> b3b762a34e7ccb4a0dcd041a693ac7180af16002 } |