/* * 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 #import namespace facebook::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 facebook::react