1256b5942SŁukasz Kosmaty #include "WeakRuntimeHolder.h"
2256b5942SŁukasz Kosmaty #include "JavaScriptRuntime.h"
3*879827bbSŁukasz Kosmaty #include "JSIInteropModuleRegistry.h"
4256b5942SŁukasz Kosmaty 
5256b5942SŁukasz Kosmaty namespace expo {
WeakRuntimeHolder(std::weak_ptr<JavaScriptRuntime> runtime)6256b5942SŁukasz Kosmaty WeakRuntimeHolder::WeakRuntimeHolder(std::weak_ptr<JavaScriptRuntime> runtime)
7256b5942SŁukasz Kosmaty   : std::weak_ptr<JavaScriptRuntime>(std::move(runtime)) {}
8256b5942SŁukasz Kosmaty 
getJSRuntime()9256b5942SŁukasz Kosmaty jsi::Runtime &WeakRuntimeHolder::getJSRuntime() {
10256b5942SŁukasz Kosmaty   auto runtime = lock();
11256b5942SŁukasz Kosmaty   assert((runtime != nullptr) && "JS Runtime was used after deallocation");
12256b5942SŁukasz Kosmaty   return runtime->get();
13256b5942SŁukasz Kosmaty }
14256b5942SŁukasz Kosmaty 
ensureRuntimeIsValid()15256b5942SŁukasz Kosmaty void WeakRuntimeHolder::ensureRuntimeIsValid() {
16256b5942SŁukasz Kosmaty   assert((!expired()) && "JS Runtime was used after deallocation");
17256b5942SŁukasz Kosmaty }
18*879827bbSŁukasz Kosmaty 
getModuleRegistry()19*879827bbSŁukasz Kosmaty JSIInteropModuleRegistry *WeakRuntimeHolder::getModuleRegistry() {
20*879827bbSŁukasz Kosmaty   auto runtime = lock();
21*879827bbSŁukasz Kosmaty   assert((runtime != nullptr) && "JS Runtime was used after deallocation");
22*879827bbSŁukasz Kosmaty   return runtime->getModuleRegistry();
23*879827bbSŁukasz Kosmaty }
24256b5942SŁukasz Kosmaty } // namespace expo
25