1 #pragma once 2 3 #include <jsi/jsi.h> 4 #include <stdio.h> 5 #include <memory> 6 #include <mutex> 7 #include <unordered_map> 8 #include <vector> 9 #include "Scheduler.h" 10 11 using namespace facebook; 12 13 namespace reanimated { 14 15 class RuntimeManager; 16 17 struct StaticStoreUser { 18 std::atomic<int> ctr; 19 std::unordered_map<int, std::vector<std::shared_ptr<jsi::Value>>> store; 20 std::recursive_mutex storeMutex; 21 }; 22 23 class StoreUser { 24 int identifier = 0; 25 std::weak_ptr<Scheduler> scheduler; 26 std::shared_ptr<StaticStoreUser> storeUserData; 27 28 public: 29 StoreUser(std::shared_ptr<Scheduler> s, const RuntimeManager &runtimeManager); 30 31 std::weak_ptr<jsi::Value> getWeakRef(jsi::Runtime &rt); 32 void removeRefs(); 33 34 virtual ~StoreUser(); 35 }; 36 37 } // namespace reanimated 38