1 #pragma once 2 3 #include <jsi/jsi.h> 4 #include <map> 5 #include <memory> 6 #include <mutex> 7 #include <set> 8 #include <string> 9 #include <unordered_map> 10 #include <vector> 11 12 using namespace facebook; 13 14 namespace reanimated { 15 16 class WorkletEventHandler; 17 18 class EventHandlerRegistry { 19 std::map< 20 std::string, 21 std::unordered_map<unsigned long, std::shared_ptr<WorkletEventHandler>>> 22 eventMappings; 23 std::map<unsigned long, std::shared_ptr<WorkletEventHandler>> eventHandlers; 24 std::mutex instanceMutex; 25 26 public: 27 void registerEventHandler(std::shared_ptr<WorkletEventHandler> eventHandler); 28 void unregisterEventHandler(unsigned long id); 29 30 void processEvent( 31 jsi::Runtime &rt, 32 std::string eventName, 33 std::string eventPayload); 34 bool isAnyHandlerWaitingForEvent(std::string eventName); 35 }; 36 37 } // namespace reanimated 38