REDBatchNodeManager.cpp 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. //
  2. // REDBatchNodeManager.cpp
  3. // redream_runtime_ios
  4. //
  5. // Created by xiao鱼哥 on 2023/8/16.
  6. //
  7. #include "REDBatchNodeManager.h"
  8. #include "REDBatchNodeHeader.h"
  9. namespace redream {
  10. REDBatchNodeManager* REDBatchNodeManager::_instance = nullptr;
  11. REDBatchNodeManager* REDBatchNodeManager::getInstance(){
  12. if (_instance == nullptr) {
  13. _instance = new REDBatchNodeManager();
  14. }
  15. return _instance;
  16. }
  17. REDBatchNodeManager::REDBatchNodeManager(){
  18. }
  19. REDBatchNodeManager::~REDBatchNodeManager(){
  20. }
  21. void REDBatchNodeManager::addListener(const std::string& eventName,REDBatchNodeListener* listener){
  22. _listeners[eventName].insert(listener);
  23. }
  24. void REDBatchNodeManager::removeListener(const std::string& eventName,REDBatchNodeListener* listener){
  25. _listeners[eventName].erase(listener);
  26. }
  27. void REDBatchNodeManager::removeListener(REDBatchNodeListener* listener){
  28. for (auto it : _listeners) {
  29. it.second.erase(listener);
  30. }
  31. }
  32. void REDBatchNodeManager::dispatchEvent(const std::string& eventName){
  33. auto fit = _listeners.find(eventName);
  34. if (fit != _listeners.end()) {
  35. for (REDBatchNodeListener* l : fit->second) {
  36. l->onListener();
  37. }
  38. }
  39. }
  40. }