/* * Copyright (c) Meta Platforms, Inc. and affiliates. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. */ #import #import #import #import #import namespace facebook { namespace react { class RCTMessageThread : public MessageQueueThread, public std::enable_shared_from_this { public: RCTMessageThread(NSRunLoop *runLoop, RCTJavaScriptCompleteBlock errorBlock); ~RCTMessageThread() override; void runOnQueue(std::function &&) override; void runOnQueueSync(std::function &&) override; void quitSynchronous() override; void setRunLoop(NSRunLoop *runLoop); private: void tryFunc(const std::function &func); void runAsync(std::function func); void runSync(std::function func); CFRunLoopRef m_cfRunLoop; RCTJavaScriptCompleteBlock m_errorBlock; std::atomic_bool m_shutdown; }; } // namespace react } // namespace facebook