/* * Copyright (c) Facebook, Inc. and its affiliates. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. */ #pragma once #include #include #include #include namespace facebook { namespace react { class HermesExecutorFactory : public JSExecutorFactory { public: explicit HermesExecutorFactory( JSIExecutor::RuntimeInstaller runtimeInstaller, const JSIScopedTimeoutInvoker &timeoutInvoker = JSIExecutor::defaultTimeoutInvoker, ::hermes::vm::RuntimeConfig runtimeConfig = ::hermes::vm::RuntimeConfig()) : runtimeInstaller_(runtimeInstaller), timeoutInvoker_(timeoutInvoker), runtimeConfig_(std::move(runtimeConfig)) { assert(timeoutInvoker_ && "Should not have empty timeoutInvoker"); } std::unique_ptr createJSExecutor( std::shared_ptr delegate, std::shared_ptr jsQueue) override; private: JSIExecutor::RuntimeInstaller runtimeInstaller_; JSIScopedTimeoutInvoker timeoutInvoker_; ::hermes::vm::RuntimeConfig runtimeConfig_; }; class HermesExecutor : public JSIExecutor { public: HermesExecutor( std::shared_ptr runtime, std::shared_ptr delegate, std::shared_ptr jsQueue, const JSIScopedTimeoutInvoker &timeoutInvoker, RuntimeInstaller runtimeInstaller); private: JSIScopedTimeoutInvoker timeoutInvoker_; }; } // namespace react } // namespace facebook