// // REDBatchNodeManager.cpp // redream_runtime_ios // // Created by xiao鱼哥 on 2023/8/16. // #include "REDBatchNodeManager.h" #include "REDBatchNodeHeader.h" namespace redream { REDBatchNodeManager* REDBatchNodeManager::_instance = nullptr; REDBatchNodeManager* REDBatchNodeManager::getInstance(){ if (_instance == nullptr) { _instance = new REDBatchNodeManager(); } return _instance; } REDBatchNodeManager::REDBatchNodeManager(){ } REDBatchNodeManager::~REDBatchNodeManager(){ } void REDBatchNodeManager::addListener(const std::string& eventName,REDBatchNodeListener* listener){ _listeners[eventName].insert(listener); } void REDBatchNodeManager::removeListener(const std::string& eventName,REDBatchNodeListener* listener){ _listeners[eventName].erase(listener); } void REDBatchNodeManager::removeListener(REDBatchNodeListener* listener){ for (auto it : _listeners) { it.second.erase(listener); } } void REDBatchNodeManager::dispatchEvent(const std::string& eventName){ auto fit = _listeners.find(eventName); if (fit != _listeners.end()) { for (REDBatchNodeListener* l : fit->second) { l->onListener(); } } } }