66 */
77
88#include " RuntimeSchedulerBinding.h"
9+ #include < React/Debug.h>
910#include < ReactCommon/SchedulerPriority.h>
1011#include < react/timing/primitives.h>
1112#include " RuntimeScheduler.h"
1213#include " SchedulerPriorityUtils.h"
1314#include " primitives.h"
1415
16+ #include < cstdlib>
1517#include < memory>
1618#include < utility>
1719
@@ -20,16 +22,17 @@ namespace facebook::react {
2022std::shared_ptr<RuntimeSchedulerBinding>
2123RuntimeSchedulerBinding::createAndInstallIfNeeded (
2224 jsi::Runtime& runtime,
23- const std::shared_ptr<RuntimeScheduler>& runtimeScheduler) {
25+ const std::shared_ptr<RuntimeScheduler>& runtimeScheduler,
26+ std::shared_ptr<CallInvoker> callInvoker) {
2427 auto runtimeSchedulerModuleName = " nativeRuntimeScheduler" ;
2528
2629 auto runtimeSchedulerValue =
2730 runtime.global ().getProperty (runtime, runtimeSchedulerModuleName);
2831 if (runtimeSchedulerValue.isUndefined ()) {
2932 // The global namespace does not have an instance of the binding;
3033 // we need to create, install and return it.
31- auto runtimeSchedulerBinding =
32- std::make_shared<RuntimeSchedulerBinding>(runtimeScheduler );
34+ auto runtimeSchedulerBinding = std::make_shared<RuntimeSchedulerBinding>(
35+ runtimeScheduler, std::move (callInvoker) );
3336 auto object =
3437 jsi::Object::createFromHostObject (runtime, runtimeSchedulerBinding);
3538 runtime.global ().setProperty (
@@ -40,7 +43,12 @@ RuntimeSchedulerBinding::createAndInstallIfNeeded(
4043 // The global namespace already has an instance of the binding;
4144 // we need to return that.
4245 auto runtimeSchedulerObject = runtimeSchedulerValue.asObject (runtime);
43- return runtimeSchedulerObject.getHostObject <RuntimeSchedulerBinding>(runtime);
46+ auto runtimeSchedulerBinding =
47+ runtimeSchedulerObject.getHostObject <RuntimeSchedulerBinding>(runtime);
48+ if (callInvoker) {
49+ runtimeSchedulerBinding->callInvoker_ = std::move (callInvoker);
50+ }
51+ return runtimeSchedulerBinding;
4452}
4553
4654std::shared_ptr<RuntimeSchedulerBinding> RuntimeSchedulerBinding::getBinding (
@@ -58,14 +66,25 @@ std::shared_ptr<RuntimeSchedulerBinding> RuntimeSchedulerBinding::getBinding(
5866}
5967
6068RuntimeSchedulerBinding::RuntimeSchedulerBinding (
61- std::shared_ptr<RuntimeScheduler> runtimeScheduler)
62- : runtimeScheduler_(std::move(runtimeScheduler)) {}
69+ std::shared_ptr<RuntimeScheduler> runtimeScheduler,
70+ std::shared_ptr<CallInvoker> callInvoker)
71+ : runtimeScheduler_(std::move(runtimeScheduler)),
72+ callInvoker_ (std::move(callInvoker)) {}
6373
6474std::shared_ptr<RuntimeScheduler>
6575RuntimeSchedulerBinding::getRuntimeScheduler () noexcept {
6676 return runtimeScheduler_;
6777}
6878
79+ std::shared_ptr<CallInvoker>
80+ RuntimeSchedulerBinding::getCallInvoker () noexcept {
81+ if (!callInvoker_) {
82+ react_native_assert (false && " CallInvoker is unavailable" );
83+ std::abort ();
84+ }
85+ return callInvoker_;
86+ }
87+
6988jsi::Value RuntimeSchedulerBinding::get (
7089 jsi::Runtime& runtime,
7190 const jsi::PropNameID& name) {
0 commit comments